@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.
Files changed (767) hide show
  1. package/dist/browser/modules/archive/compression/streaming-compress.browser.js +29 -0
  2. package/dist/browser/modules/archive/compression/streaming-compress.js +9 -0
  3. package/dist/browser/modules/archive/compression/worker-pool/pool.browser.js +26 -1
  4. package/dist/browser/modules/archive/fs/archive-file.d.ts +8 -5
  5. package/dist/browser/modules/archive/fs/archive-file.js +78 -16
  6. package/dist/browser/modules/archive/unzip/stream.browser.js +43 -2
  7. package/dist/browser/modules/excel/chart/chart-ex-builder.js +7 -2
  8. package/dist/browser/modules/excel/chart/chart-ex-renderer.js +4 -9
  9. package/dist/browser/modules/excel/chart/chart-ex-types.d.ts +0 -12
  10. package/dist/browser/modules/excel/chart/chart.d.ts +1 -5
  11. package/dist/browser/modules/excel/chart/chart.js +1 -7
  12. package/dist/browser/modules/excel/chart/types.d.ts +0 -6
  13. package/dist/browser/modules/excel/stream/workbook-reader.browser.js +25 -1
  14. package/dist/browser/modules/excel/stream/workbook-reader.js +9 -0
  15. package/dist/browser/modules/excel/stream/workbook-writer.browser.d.ts +40 -0
  16. package/dist/browser/modules/excel/stream/workbook-writer.browser.js +228 -13
  17. package/dist/browser/modules/excel/utils/string-buf.d.ts +5 -26
  18. package/dist/browser/modules/excel/utils/string-buf.js +4 -81
  19. package/dist/browser/modules/excel/workbook.browser.js +135 -25
  20. package/dist/browser/modules/excel/xlsx/xform/chart/chart-space-xform.js +6 -20
  21. package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +19 -9
  22. package/dist/browser/modules/excel/xlsx/xlsx.browser.js +32 -8
  23. package/dist/browser/modules/excel/xlsx/xlsx.d.ts +10 -2
  24. package/dist/browser/modules/excel/xlsx/xlsx.js +9 -1
  25. package/dist/browser/modules/pdf/excel-bridge.d.ts +30 -1
  26. package/dist/browser/modules/pdf/excel-bridge.js +32 -0
  27. package/dist/browser/modules/pdf/font/metrics.d.ts +3 -52
  28. package/dist/browser/modules/pdf/font/metrics.js +3 -237
  29. package/dist/browser/modules/pdf/index.d.ts +1 -1
  30. package/dist/browser/modules/pdf/index.js +1 -1
  31. package/dist/browser/modules/pdf/render-layout-to-pdf.d.ts +66 -0
  32. package/dist/browser/modules/pdf/render-layout-to-pdf.js +647 -0
  33. package/dist/browser/modules/pdf/word-bridge.d.ts +80 -12
  34. package/dist/browser/modules/pdf/word-bridge.js +122 -274
  35. package/dist/browser/modules/stream/index.base.d.ts +2 -0
  36. package/dist/browser/modules/stream/index.base.js +2 -1
  37. package/dist/browser/modules/stream/internal/sink-adapter.d.ts +65 -0
  38. package/dist/browser/modules/stream/internal/sink-adapter.js +198 -0
  39. package/dist/browser/modules/stream/pull-stream.d.ts +19 -2
  40. package/dist/browser/modules/stream/pull-stream.js +51 -5
  41. package/dist/browser/modules/stream/types.d.ts +13 -1
  42. package/dist/browser/modules/word/advanced/diff.d.ts +61 -0
  43. package/dist/browser/modules/word/advanced/diff.js +167 -0
  44. package/dist/browser/modules/word/advanced/drawing-shapes.d.ts +269 -0
  45. package/dist/browser/modules/word/advanced/drawing-shapes.js +268 -0
  46. package/dist/browser/modules/word/advanced/field-engine.d.ts +43 -0
  47. package/dist/browser/modules/word/advanced/field-engine.js +1225 -0
  48. package/dist/browser/modules/word/advanced/glossary.d.ts +86 -0
  49. package/dist/browser/modules/word/advanced/glossary.js +79 -0
  50. package/dist/browser/modules/word/advanced/math-convert.d.ts +30 -0
  51. package/dist/browser/modules/word/advanced/math-convert.js +595 -0
  52. package/dist/browser/modules/word/advanced/ole-objects.d.ts +115 -0
  53. package/dist/browser/modules/word/advanced/ole-objects.js +271 -0
  54. package/dist/browser/modules/word/advanced/style-map.d.ts +105 -0
  55. package/dist/browser/modules/word/advanced/style-map.js +322 -0
  56. package/dist/browser/modules/word/advanced/validation.d.ts +56 -0
  57. package/dist/browser/modules/word/advanced/validation.js +1065 -0
  58. package/dist/browser/modules/word/advanced/vba-project.d.ts +91 -0
  59. package/dist/browser/modules/word/advanced/vba-project.js +265 -0
  60. package/dist/browser/modules/word/bridge/excel-bridge.d.ts +127 -0
  61. package/dist/browser/modules/word/bridge/excel-bridge.js +980 -0
  62. package/dist/browser/modules/word/builder/document-handle.d.ts +151 -0
  63. package/dist/browser/modules/word/builder/document-handle.js +664 -0
  64. package/dist/browser/modules/word/builder/paragraph-builders.d.ts +61 -0
  65. package/dist/browser/modules/word/builder/paragraph-builders.js +90 -0
  66. package/dist/browser/modules/word/builder/run-builders.d.ts +374 -0
  67. package/dist/browser/modules/word/builder/run-builders.js +600 -0
  68. package/dist/browser/modules/word/builder/table-builders.d.ts +23 -0
  69. package/dist/browser/modules/word/builder/table-builders.js +45 -0
  70. package/dist/browser/modules/word/constants.d.ts +39 -1
  71. package/dist/browser/modules/word/constants.js +109 -1
  72. package/dist/browser/modules/word/convert/conversion-ir.d.ts +210 -0
  73. package/dist/browser/modules/word/convert/conversion-ir.js +31 -0
  74. package/dist/browser/modules/word/convert/docx-to-semantic.d.ts +39 -0
  75. package/dist/browser/modules/word/convert/docx-to-semantic.js +499 -0
  76. package/dist/browser/modules/word/convert/flat-opc.d.ts +44 -0
  77. package/dist/browser/modules/word/convert/flat-opc.js +385 -0
  78. package/dist/browser/modules/word/convert/html/html-import.d.ts +50 -0
  79. package/dist/browser/modules/word/convert/html/html-import.js +1907 -0
  80. package/dist/{types/modules/word → browser/modules/word/convert/html}/html-renderer.d.ts +14 -1
  81. package/dist/{esm/modules/word → browser/modules/word/convert/html}/html-renderer.js +420 -69
  82. package/dist/browser/modules/word/convert/html/html.d.ts +15 -0
  83. package/dist/browser/modules/word/convert/html/html.js +15 -0
  84. package/dist/browser/modules/word/convert/markdown/markdown-import.d.ts +68 -0
  85. package/dist/browser/modules/word/convert/markdown/markdown-import.js +1325 -0
  86. package/dist/browser/modules/word/convert/markdown/markdown-renderer.d.ts +25 -0
  87. package/dist/browser/modules/word/convert/markdown/markdown-renderer.js +634 -0
  88. package/dist/browser/modules/word/convert/markdown/markdown.d.ts +15 -0
  89. package/dist/browser/modules/word/convert/markdown/markdown.js +15 -0
  90. package/dist/browser/modules/word/convert/odt/odt.d.ts +41 -0
  91. package/dist/browser/modules/word/convert/odt/odt.js +1932 -0
  92. package/dist/browser/modules/word/{color-utils.d.ts → core/color-utils.d.ts} +8 -1
  93. package/dist/browser/modules/word/core/color-utils.js +43 -0
  94. package/dist/browser/modules/word/core/internal-utils.d.ts +90 -0
  95. package/dist/browser/modules/word/core/internal-utils.js +209 -0
  96. package/dist/browser/modules/word/core/mapper.d.ts +44 -0
  97. package/dist/browser/modules/word/core/mapper.js +427 -0
  98. package/dist/browser/modules/word/core/opc-paths.d.ts +33 -0
  99. package/dist/browser/modules/word/core/opc-paths.js +48 -0
  100. package/dist/browser/modules/word/core/text-utils.d.ts +38 -0
  101. package/dist/browser/modules/word/core/text-utils.js +202 -0
  102. package/dist/browser/modules/word/core/walker.d.ts +119 -0
  103. package/dist/browser/modules/word/core/walker.js +570 -0
  104. package/dist/browser/modules/word/crypto.d.ts +14 -9
  105. package/dist/browser/modules/word/crypto.js +13 -7
  106. package/dist/browser/modules/word/document-io.d.ts +59 -27
  107. package/dist/browser/modules/word/document-io.js +80 -197
  108. package/dist/browser/modules/word/errors.d.ts +44 -1
  109. package/dist/browser/modules/word/errors.js +54 -2
  110. package/dist/browser/modules/word/excel.d.ts +14 -0
  111. package/dist/browser/modules/word/excel.js +13 -0
  112. package/dist/browser/modules/word/font/font-embed.d.ts +112 -0
  113. package/dist/browser/modules/word/font/font-embed.js +646 -0
  114. package/dist/{esm/modules/word → browser/modules/word/font}/font-obfuscation.js +4 -9
  115. package/dist/browser/modules/word/font/hyphenation.d.ts +65 -0
  116. package/dist/browser/modules/word/font/hyphenation.js +4210 -0
  117. package/dist/browser/modules/word/font/text-shaping.d.ts +58 -0
  118. package/dist/browser/modules/word/font/text-shaping.js +635 -0
  119. package/dist/browser/modules/word/html.d.ts +7 -6
  120. package/dist/browser/modules/word/html.js +6 -5
  121. package/dist/browser/modules/word/incremental-edit.d.ts +123 -0
  122. package/dist/browser/modules/word/incremental-edit.js +361 -0
  123. package/dist/browser/modules/word/index.base.d.ts +194 -10
  124. package/dist/browser/modules/word/index.base.js +138 -29
  125. package/dist/browser/modules/word/layout/layout-constants.d.ts +17 -0
  126. package/dist/browser/modules/word/layout/layout-constants.js +17 -0
  127. package/dist/browser/modules/word/layout/layout-full.d.ts +53 -0
  128. package/dist/browser/modules/word/layout/layout-full.js +1696 -0
  129. package/dist/browser/modules/word/layout/layout-model.d.ts +344 -0
  130. package/dist/browser/modules/word/layout/layout-model.js +16 -0
  131. package/dist/browser/modules/word/layout/layout.d.ts +63 -0
  132. package/dist/browser/modules/word/layout/layout.js +1167 -0
  133. package/dist/browser/modules/word/layout/render-page.d.ts +57 -0
  134. package/dist/browser/modules/word/layout/render-page.js +1238 -0
  135. package/dist/browser/modules/word/markdown.d.ts +14 -0
  136. package/dist/browser/modules/word/markdown.js +13 -0
  137. package/dist/browser/modules/word/patcher.d.ts +62 -0
  138. package/dist/browser/modules/word/patcher.js +537 -0
  139. package/dist/browser/modules/word/query/compat.d.ts +25 -0
  140. package/dist/browser/modules/word/query/compat.js +58 -0
  141. package/dist/browser/modules/word/query/data-binding.d.ts +22 -0
  142. package/dist/browser/modules/word/query/data-binding.js +392 -0
  143. package/dist/browser/modules/word/query/form-fields.d.ts +41 -0
  144. package/dist/browser/modules/word/query/form-fields.js +268 -0
  145. package/dist/browser/modules/word/query/format-search.d.ts +99 -0
  146. package/dist/browser/modules/word/query/format-search.js +329 -0
  147. package/dist/browser/modules/word/query/mail-merge.d.ts +25 -0
  148. package/dist/browser/modules/word/query/mail-merge.js +111 -0
  149. package/dist/browser/modules/word/query/merge.d.ts +50 -0
  150. package/dist/browser/modules/word/query/merge.js +617 -0
  151. package/dist/browser/modules/word/query/replace.d.ts +47 -0
  152. package/dist/browser/modules/word/query/replace.js +301 -0
  153. package/dist/browser/modules/word/query/revisions.d.ts +67 -0
  154. package/dist/browser/modules/word/query/revisions.js +879 -0
  155. package/dist/browser/modules/word/query/search.d.ts +129 -0
  156. package/dist/browser/modules/word/query/search.js +346 -0
  157. package/dist/browser/modules/word/query/split.d.ts +44 -0
  158. package/dist/browser/modules/word/query/split.js +135 -0
  159. package/dist/browser/modules/word/query/style-resolve.d.ts +104 -0
  160. package/dist/browser/modules/word/query/style-resolve.js +368 -0
  161. package/dist/browser/modules/word/reader/chart-parser.d.ts +20 -0
  162. package/dist/browser/modules/word/reader/chart-parser.js +810 -0
  163. package/dist/browser/modules/word/reader/comments-parser.d.ts +26 -0
  164. package/dist/browser/modules/word/reader/comments-parser.js +92 -0
  165. package/dist/browser/modules/word/reader/doc-props-parsers.d.ts +15 -0
  166. package/dist/browser/modules/word/reader/doc-props-parsers.js +190 -0
  167. package/dist/browser/modules/word/reader/docx-reader.d.ts +27 -0
  168. package/dist/browser/modules/word/reader/docx-reader.js +2557 -0
  169. package/dist/browser/modules/word/reader/drawing-helpers.d.ts +27 -0
  170. package/dist/browser/modules/word/reader/drawing-helpers.js +84 -0
  171. package/dist/browser/modules/word/reader/form-field-parser.d.ts +21 -0
  172. package/dist/browser/modules/word/reader/form-field-parser.js +82 -0
  173. package/dist/browser/modules/word/reader/image-parsers.d.ts +11 -0
  174. package/dist/browser/modules/word/reader/image-parsers.js +291 -0
  175. package/dist/browser/modules/word/reader/math-parser.d.ts +12 -0
  176. package/dist/browser/modules/word/reader/math-parser.js +422 -0
  177. package/dist/browser/modules/word/reader/metadata-parsers.d.ts +17 -0
  178. package/dist/browser/modules/word/reader/metadata-parsers.js +87 -0
  179. package/dist/browser/modules/word/reader/numbering-parser.d.ts +13 -0
  180. package/dist/browser/modules/word/reader/numbering-parser.js +166 -0
  181. package/dist/browser/modules/word/reader/paragraph-section-parsers.d.ts +12 -0
  182. package/dist/browser/modules/word/reader/paragraph-section-parsers.js +503 -0
  183. package/dist/browser/modules/word/reader/parse-utils.d.ts +91 -0
  184. package/dist/browser/modules/word/reader/parse-utils.js +249 -0
  185. package/dist/browser/modules/word/reader/properties-parsers.d.ts +21 -0
  186. package/dist/browser/modules/word/reader/properties-parsers.js +332 -0
  187. package/dist/browser/modules/word/reader/reader-context.d.ts +69 -0
  188. package/dist/browser/modules/word/reader/reader-context.js +61 -0
  189. package/dist/browser/modules/word/reader/sdt-helpers.d.ts +29 -0
  190. package/dist/browser/modules/word/reader/sdt-helpers.js +111 -0
  191. package/dist/browser/modules/word/reader/settings-parser.d.ts +8 -0
  192. package/dist/browser/modules/word/reader/settings-parser.js +263 -0
  193. package/dist/browser/modules/word/reader/styles-parser.d.ts +12 -0
  194. package/dist/browser/modules/word/reader/styles-parser.js +147 -0
  195. package/dist/browser/modules/word/reader/table-properties-parsers.d.ts +12 -0
  196. package/dist/browser/modules/word/reader/table-properties-parsers.js +234 -0
  197. package/dist/browser/modules/word/reader/theme-parser.d.ts +8 -0
  198. package/dist/browser/modules/word/reader/theme-parser.js +167 -0
  199. package/dist/browser/modules/word/reader/watermark-parser.d.ts +15 -0
  200. package/dist/browser/modules/word/reader/watermark-parser.js +110 -0
  201. package/dist/browser/modules/word/security/cfb-reader.d.ts +37 -0
  202. package/dist/browser/modules/word/security/cfb-reader.js +410 -0
  203. package/dist/browser/modules/word/{digital-signatures.d.ts → security/digital-signatures.d.ts} +19 -11
  204. package/dist/browser/modules/word/{digital-signatures.js → security/digital-signatures.js} +34 -34
  205. package/dist/browser/modules/word/security/document-protection.d.ts +93 -0
  206. package/dist/browser/modules/word/security/document-protection.js +201 -0
  207. package/dist/{types/modules/word → browser/modules/word/security}/encryption.d.ts +51 -4
  208. package/dist/browser/modules/word/security/encryption.js +602 -0
  209. package/dist/browser/modules/word/security/policy.d.ts +80 -0
  210. package/dist/browser/modules/word/security/policy.js +102 -0
  211. package/dist/browser/modules/word/template/template-chart.d.ts +56 -0
  212. package/dist/browser/modules/word/template/template-chart.js +167 -0
  213. package/dist/browser/modules/word/template/template-datasource.d.ts +154 -0
  214. package/dist/browser/modules/word/template/template-datasource.js +541 -0
  215. package/dist/browser/modules/word/template/template-engine.d.ts +121 -0
  216. package/dist/browser/modules/word/template/template-engine.js +1435 -0
  217. package/dist/browser/modules/word/types.d.ts +224 -25
  218. package/dist/browser/modules/word/units.d.ts +26 -0
  219. package/dist/browser/modules/word/units.js +43 -14
  220. package/dist/browser/modules/word/{writers → writer}/chart-writer.js +164 -23
  221. package/dist/browser/modules/word/writer/checkbox-writer.d.ts +17 -0
  222. package/dist/browser/modules/word/writer/checkbox-writer.js +79 -0
  223. package/dist/{types/modules/word/writers → browser/modules/word/writer}/comment-writer.d.ts +2 -1
  224. package/dist/browser/modules/word/{writers → writer}/comment-writer.js +8 -6
  225. package/dist/browser/modules/word/writer/common-parts.d.ts +57 -0
  226. package/dist/browser/modules/word/writer/common-parts.js +101 -0
  227. package/dist/{types/modules/word → browser/modules/word/writer}/content-types.d.ts +2 -2
  228. package/dist/{esm/modules/word → browser/modules/word/writer}/content-types.js +14 -6
  229. package/dist/browser/modules/word/writer/document-writer.d.ts +24 -0
  230. package/dist/browser/modules/word/writer/document-writer.js +473 -0
  231. package/dist/browser/modules/word/writer/docx-packager.d.ts +35 -0
  232. package/dist/browser/modules/word/writer/docx-packager.js +1515 -0
  233. package/dist/{types/modules/word/writers → browser/modules/word/writer}/footnote-writer.d.ts +3 -2
  234. package/dist/{esm/modules/word/writers → browser/modules/word/writer}/footnote-writer.js +13 -10
  235. package/dist/{types/modules/word/writers → browser/modules/word/writer}/header-footer-writer.d.ts +3 -2
  236. package/dist/{esm/modules/word/writers → browser/modules/word/writer}/header-footer-writer.js +39 -21
  237. package/dist/{types/modules/word/writers → browser/modules/word/writer}/image-writer.d.ts +1 -1
  238. package/dist/browser/modules/word/{writers → writer}/image-writer.js +11 -7
  239. package/dist/browser/modules/word/writer/math-writer.d.ts +20 -0
  240. package/dist/{esm/modules/word/writers → browser/modules/word/writer}/math-writer.js +21 -1
  241. package/dist/browser/modules/word/{writers → writer}/numbering-writer.d.ts +1 -1
  242. package/dist/{esm/modules/word/writers → browser/modules/word/writer}/numbering-writer.js +11 -4
  243. package/dist/browser/modules/word/{writers → writer}/paragraph-writer.d.ts +2 -1
  244. package/dist/browser/modules/word/{writers → writer}/paragraph-writer.js +73 -38
  245. package/dist/browser/modules/word/{writers → writer}/parts-writer.d.ts +3 -3
  246. package/dist/{esm/modules/word/writers → browser/modules/word/writer}/parts-writer.js +91 -12
  247. package/dist/browser/modules/word/writer/reference-scanners.d.ts +42 -0
  248. package/dist/browser/modules/word/writer/reference-scanners.js +111 -0
  249. package/dist/browser/modules/word/writer/relationships.d.ts +52 -0
  250. package/dist/browser/modules/word/writer/relationships.js +117 -0
  251. package/dist/browser/modules/word/writer/render-context.d.ts +124 -0
  252. package/dist/browser/modules/word/writer/render-context.js +46 -0
  253. package/dist/browser/modules/word/{writers → writer}/run-writer.d.ts +10 -1
  254. package/dist/{esm/modules/word/writers → browser/modules/word/writer}/run-writer.js +126 -24
  255. package/dist/browser/modules/word/writer/sdt-writer.d.ts +25 -0
  256. package/dist/browser/modules/word/writer/sdt-writer.js +189 -0
  257. package/dist/browser/modules/word/writer/stream-buf.d.ts +37 -0
  258. package/dist/browser/modules/word/writer/stream-buf.js +73 -0
  259. package/dist/browser/modules/word/writer/streaming-writer.d.ts +344 -0
  260. package/dist/browser/modules/word/writer/streaming-writer.js +1382 -0
  261. package/dist/browser/modules/word/writer/string-buf.d.ts +8 -0
  262. package/dist/browser/modules/word/writer/string-buf.js +7 -0
  263. package/dist/browser/modules/word/{writers → writer}/styles-writer.js +32 -1
  264. package/dist/browser/modules/word/{writers → writer}/table-writer.d.ts +2 -1
  265. package/dist/browser/modules/word/{writers → writer}/table-writer.js +94 -11
  266. package/dist/browser/modules/xml/types.d.ts +22 -0
  267. package/dist/browser/utils/crypto.browser.d.ts +3 -1
  268. package/dist/browser/utils/crypto.browser.js +3 -1
  269. package/dist/browser/utils/crypto.d.ts +4 -1
  270. package/dist/browser/utils/crypto.js +4 -1
  271. package/dist/browser/utils/font-metrics.d.ts +63 -0
  272. package/dist/browser/utils/font-metrics.js +293 -0
  273. package/dist/browser/utils/string-buf.d.ts +42 -0
  274. package/dist/browser/utils/string-buf.js +89 -0
  275. package/dist/browser/utils/theme-colors.d.ts +55 -0
  276. package/dist/browser/utils/theme-colors.js +120 -0
  277. package/dist/cjs/modules/archive/compression/streaming-compress.browser.js +29 -0
  278. package/dist/cjs/modules/archive/compression/streaming-compress.js +9 -0
  279. package/dist/cjs/modules/archive/compression/worker-pool/pool.browser.js +26 -1
  280. package/dist/cjs/modules/archive/fs/archive-file.js +78 -16
  281. package/dist/cjs/modules/archive/unzip/stream.browser.js +43 -2
  282. package/dist/cjs/modules/excel/chart/chart-ex-builder.js +7 -2
  283. package/dist/cjs/modules/excel/chart/chart-ex-renderer.js +4 -9
  284. package/dist/cjs/modules/excel/chart/chart.js +1 -7
  285. package/dist/cjs/modules/excel/stream/workbook-reader.browser.js +25 -1
  286. package/dist/cjs/modules/excel/stream/workbook-reader.js +9 -0
  287. package/dist/cjs/modules/excel/stream/workbook-writer.browser.js +228 -13
  288. package/dist/cjs/modules/excel/utils/string-buf.js +5 -81
  289. package/dist/cjs/modules/excel/workbook.browser.js +135 -25
  290. package/dist/cjs/modules/excel/xlsx/xform/chart/chart-space-xform.js +6 -20
  291. package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +32 -8
  292. package/dist/cjs/modules/excel/xlsx/xlsx.js +9 -1
  293. package/dist/cjs/modules/pdf/excel-bridge.js +33 -0
  294. package/dist/cjs/modules/pdf/font/metrics.js +11 -244
  295. package/dist/cjs/modules/pdf/index.js +2 -1
  296. package/dist/cjs/modules/pdf/render-layout-to-pdf.js +651 -0
  297. package/dist/cjs/modules/pdf/word-bridge.js +155 -274
  298. package/dist/cjs/modules/stream/index.base.js +4 -2
  299. package/dist/cjs/modules/stream/internal/sink-adapter.js +202 -0
  300. package/dist/cjs/modules/stream/pull-stream.js +51 -5
  301. package/dist/cjs/modules/word/advanced/diff.js +170 -0
  302. package/dist/cjs/modules/word/advanced/drawing-shapes.js +279 -0
  303. package/dist/cjs/modules/word/advanced/field-engine.js +1229 -0
  304. package/dist/cjs/modules/word/advanced/glossary.js +87 -0
  305. package/dist/cjs/modules/word/advanced/math-convert.js +599 -0
  306. package/dist/cjs/modules/word/advanced/ole-objects.js +277 -0
  307. package/dist/cjs/modules/word/advanced/style-map.js +329 -0
  308. package/dist/cjs/modules/word/advanced/validation.js +1068 -0
  309. package/dist/cjs/modules/word/advanced/vba-project.js +274 -0
  310. package/dist/cjs/modules/word/bridge/excel-bridge.js +1020 -0
  311. package/dist/cjs/modules/word/builder/document-handle.js +667 -0
  312. package/dist/cjs/modules/word/builder/paragraph-builders.js +109 -0
  313. package/dist/cjs/modules/word/builder/run-builders.js +676 -0
  314. package/dist/cjs/modules/word/builder/table-builders.js +53 -0
  315. package/dist/cjs/modules/word/constants.js +111 -2
  316. package/dist/cjs/modules/word/convert/conversion-ir.js +34 -0
  317. package/dist/cjs/modules/word/convert/docx-to-semantic.js +502 -0
  318. package/dist/cjs/modules/word/convert/flat-opc.js +390 -0
  319. package/dist/cjs/modules/word/convert/html/html-import.js +1910 -0
  320. package/dist/cjs/modules/word/{html-renderer.js → convert/html/html-renderer.js} +420 -69
  321. package/dist/cjs/modules/word/convert/html/html.js +20 -0
  322. package/dist/cjs/modules/word/convert/markdown/markdown-import.js +1329 -0
  323. package/dist/cjs/modules/word/convert/markdown/markdown-renderer.js +637 -0
  324. package/dist/cjs/modules/word/convert/markdown/markdown.js +21 -0
  325. package/dist/cjs/modules/word/convert/odt/odt.js +1936 -0
  326. package/dist/cjs/modules/word/core/color-utils.js +47 -0
  327. package/dist/cjs/modules/word/core/internal-utils.js +219 -0
  328. package/dist/cjs/modules/word/core/mapper.js +430 -0
  329. package/dist/cjs/modules/word/core/opc-paths.js +53 -0
  330. package/dist/cjs/modules/word/core/text-utils.js +210 -0
  331. package/dist/cjs/modules/word/core/walker.js +577 -0
  332. package/dist/cjs/modules/word/crypto.js +19 -8
  333. package/dist/cjs/modules/word/document-io.js +117 -197
  334. package/dist/cjs/modules/word/errors.js +59 -13
  335. package/dist/cjs/modules/word/excel.js +22 -0
  336. package/dist/cjs/modules/word/font/font-embed.js +652 -0
  337. package/dist/cjs/modules/word/{font-obfuscation.js → font/font-obfuscation.js} +4 -9
  338. package/dist/cjs/modules/word/font/hyphenation.js +4216 -0
  339. package/dist/cjs/modules/word/font/text-shaping.js +640 -0
  340. package/dist/cjs/modules/word/html.js +9 -7
  341. package/dist/cjs/modules/word/incremental-edit.js +366 -0
  342. package/dist/cjs/modules/word/index.base.js +370 -137
  343. package/dist/cjs/modules/word/layout/layout-constants.js +20 -0
  344. package/dist/cjs/modules/word/layout/layout-full.js +1699 -0
  345. package/dist/cjs/modules/word/layout/layout-model.js +17 -0
  346. package/dist/cjs/modules/word/layout/layout.js +1170 -0
  347. package/dist/cjs/modules/word/layout/render-page.js +1243 -0
  348. package/dist/cjs/modules/word/markdown.js +19 -0
  349. package/dist/cjs/modules/word/patcher.js +539 -0
  350. package/dist/cjs/modules/word/query/compat.js +61 -0
  351. package/dist/cjs/modules/word/query/data-binding.js +395 -0
  352. package/dist/cjs/modules/word/query/form-fields.js +272 -0
  353. package/dist/cjs/modules/word/query/format-search.js +334 -0
  354. package/dist/cjs/modules/word/query/mail-merge.js +114 -0
  355. package/dist/cjs/modules/word/query/merge.js +620 -0
  356. package/dist/cjs/modules/word/query/replace.js +304 -0
  357. package/dist/cjs/modules/word/query/revisions.js +885 -0
  358. package/dist/cjs/modules/word/query/search.js +361 -0
  359. package/dist/cjs/modules/word/query/split.js +138 -0
  360. package/dist/cjs/modules/word/query/style-resolve.js +374 -0
  361. package/dist/cjs/modules/word/reader/chart-parser.js +814 -0
  362. package/dist/cjs/modules/word/reader/comments-parser.js +96 -0
  363. package/dist/cjs/modules/word/reader/doc-props-parsers.js +194 -0
  364. package/dist/cjs/modules/word/reader/docx-reader.js +2560 -0
  365. package/dist/cjs/modules/word/reader/drawing-helpers.js +90 -0
  366. package/dist/cjs/modules/word/reader/form-field-parser.js +85 -0
  367. package/dist/cjs/modules/word/reader/image-parsers.js +293 -0
  368. package/dist/cjs/modules/word/reader/math-parser.js +424 -0
  369. package/dist/cjs/modules/word/reader/metadata-parsers.js +93 -0
  370. package/dist/cjs/modules/word/reader/numbering-parser.js +168 -0
  371. package/dist/cjs/modules/word/reader/paragraph-section-parsers.js +505 -0
  372. package/dist/cjs/modules/word/reader/parse-utils.js +271 -0
  373. package/dist/cjs/modules/word/reader/properties-parsers.js +338 -0
  374. package/dist/cjs/modules/word/reader/reader-context.js +66 -0
  375. package/dist/cjs/modules/word/reader/sdt-helpers.js +114 -0
  376. package/dist/cjs/modules/word/reader/settings-parser.js +265 -0
  377. package/dist/cjs/modules/word/reader/styles-parser.js +149 -0
  378. package/dist/cjs/modules/word/reader/table-properties-parsers.js +237 -0
  379. package/dist/cjs/modules/word/reader/theme-parser.js +169 -0
  380. package/dist/cjs/modules/word/reader/watermark-parser.js +113 -0
  381. package/dist/cjs/modules/word/security/cfb-reader.js +414 -0
  382. package/dist/cjs/modules/word/{digital-signatures.js → security/digital-signatures.js} +34 -34
  383. package/dist/cjs/modules/word/security/document-protection.js +208 -0
  384. package/dist/cjs/modules/word/security/encryption.js +612 -0
  385. package/dist/cjs/modules/word/security/policy.js +106 -0
  386. package/dist/cjs/modules/word/template/template-chart.js +170 -0
  387. package/dist/cjs/modules/word/template/template-datasource.js +549 -0
  388. package/dist/cjs/modules/word/template/template-engine.js +1430 -0
  389. package/dist/cjs/modules/word/units.js +44 -14
  390. package/dist/cjs/modules/word/{writers → writer}/chart-writer.js +163 -22
  391. package/dist/cjs/modules/word/writer/checkbox-writer.js +82 -0
  392. package/dist/cjs/modules/word/{writers → writer}/comment-writer.js +8 -6
  393. package/dist/cjs/modules/word/writer/common-parts.js +104 -0
  394. package/dist/cjs/modules/word/{content-types.js → writer/content-types.js} +14 -6
  395. package/dist/cjs/modules/word/writer/document-writer.js +478 -0
  396. package/dist/cjs/modules/word/writer/docx-packager.js +1551 -0
  397. package/dist/cjs/modules/word/{writers → writer}/footnote-writer.js +13 -10
  398. package/dist/cjs/modules/word/{writers → writer}/header-footer-writer.js +38 -20
  399. package/dist/cjs/modules/word/{writers → writer}/image-writer.js +11 -7
  400. package/dist/cjs/modules/word/{writers → writer}/math-writer.js +21 -1
  401. package/dist/cjs/modules/word/{writers → writer}/numbering-writer.js +11 -4
  402. package/dist/cjs/modules/word/{writers → writer}/paragraph-writer.js +72 -37
  403. package/dist/cjs/modules/word/{writers → writer}/parts-writer.js +91 -12
  404. package/dist/cjs/modules/word/writer/reference-scanners.js +120 -0
  405. package/dist/cjs/modules/word/writer/relationships.js +124 -0
  406. package/dist/cjs/modules/word/writer/render-context.js +51 -0
  407. package/dist/cjs/modules/word/{writers → writer}/run-writer.js +127 -24
  408. package/dist/cjs/modules/word/writer/sdt-writer.js +192 -0
  409. package/dist/cjs/modules/word/writer/stream-buf.js +76 -0
  410. package/dist/cjs/modules/word/writer/streaming-writer.js +1387 -0
  411. package/dist/cjs/modules/word/writer/string-buf.js +11 -0
  412. package/dist/cjs/modules/word/{writers → writer}/styles-writer.js +32 -1
  413. package/dist/cjs/modules/word/{writers → writer}/table-writer.js +94 -11
  414. package/dist/cjs/utils/crypto.browser.js +3 -1
  415. package/dist/cjs/utils/crypto.js +4 -1
  416. package/dist/cjs/utils/font-metrics.js +303 -0
  417. package/dist/cjs/utils/string-buf.js +92 -0
  418. package/dist/cjs/utils/theme-colors.js +126 -0
  419. package/dist/esm/modules/archive/compression/streaming-compress.browser.js +29 -0
  420. package/dist/esm/modules/archive/compression/streaming-compress.js +9 -0
  421. package/dist/esm/modules/archive/compression/worker-pool/pool.browser.js +26 -1
  422. package/dist/esm/modules/archive/fs/archive-file.js +78 -16
  423. package/dist/esm/modules/archive/unzip/stream.browser.js +43 -2
  424. package/dist/esm/modules/excel/chart/chart-ex-builder.js +7 -2
  425. package/dist/esm/modules/excel/chart/chart-ex-renderer.js +4 -9
  426. package/dist/esm/modules/excel/chart/chart.js +1 -7
  427. package/dist/esm/modules/excel/stream/workbook-reader.browser.js +25 -1
  428. package/dist/esm/modules/excel/stream/workbook-reader.js +9 -0
  429. package/dist/esm/modules/excel/stream/workbook-writer.browser.js +228 -13
  430. package/dist/esm/modules/excel/utils/string-buf.js +4 -81
  431. package/dist/esm/modules/excel/workbook.browser.js +135 -25
  432. package/dist/esm/modules/excel/xlsx/xform/chart/chart-space-xform.js +6 -20
  433. package/dist/esm/modules/excel/xlsx/xlsx.browser.js +32 -8
  434. package/dist/esm/modules/excel/xlsx/xlsx.js +9 -1
  435. package/dist/esm/modules/pdf/excel-bridge.js +32 -0
  436. package/dist/esm/modules/pdf/font/metrics.js +3 -237
  437. package/dist/esm/modules/pdf/index.js +1 -1
  438. package/dist/esm/modules/pdf/render-layout-to-pdf.js +647 -0
  439. package/dist/esm/modules/pdf/word-bridge.js +122 -274
  440. package/dist/esm/modules/stream/index.base.js +2 -1
  441. package/dist/esm/modules/stream/internal/sink-adapter.js +198 -0
  442. package/dist/esm/modules/stream/pull-stream.js +51 -5
  443. package/dist/esm/modules/word/advanced/diff.js +167 -0
  444. package/dist/esm/modules/word/advanced/drawing-shapes.js +268 -0
  445. package/dist/esm/modules/word/advanced/field-engine.js +1225 -0
  446. package/dist/esm/modules/word/advanced/glossary.js +79 -0
  447. package/dist/esm/modules/word/advanced/math-convert.js +595 -0
  448. package/dist/esm/modules/word/advanced/ole-objects.js +271 -0
  449. package/dist/esm/modules/word/advanced/style-map.js +322 -0
  450. package/dist/esm/modules/word/advanced/validation.js +1065 -0
  451. package/dist/esm/modules/word/advanced/vba-project.js +265 -0
  452. package/dist/esm/modules/word/bridge/excel-bridge.js +980 -0
  453. package/dist/esm/modules/word/builder/document-handle.js +664 -0
  454. package/dist/esm/modules/word/builder/paragraph-builders.js +90 -0
  455. package/dist/esm/modules/word/builder/run-builders.js +600 -0
  456. package/dist/esm/modules/word/builder/table-builders.js +45 -0
  457. package/dist/esm/modules/word/constants.js +109 -1
  458. package/dist/esm/modules/word/convert/conversion-ir.js +31 -0
  459. package/dist/esm/modules/word/convert/docx-to-semantic.js +499 -0
  460. package/dist/esm/modules/word/convert/flat-opc.js +385 -0
  461. package/dist/esm/modules/word/convert/html/html-import.js +1907 -0
  462. package/dist/{browser/modules/word → esm/modules/word/convert/html}/html-renderer.js +420 -69
  463. package/dist/esm/modules/word/convert/html/html.js +15 -0
  464. package/dist/esm/modules/word/convert/markdown/markdown-import.js +1325 -0
  465. package/dist/esm/modules/word/convert/markdown/markdown-renderer.js +634 -0
  466. package/dist/esm/modules/word/convert/markdown/markdown.js +15 -0
  467. package/dist/esm/modules/word/convert/odt/odt.js +1932 -0
  468. package/dist/esm/modules/word/core/color-utils.js +43 -0
  469. package/dist/esm/modules/word/core/internal-utils.js +209 -0
  470. package/dist/esm/modules/word/core/mapper.js +427 -0
  471. package/dist/esm/modules/word/core/opc-paths.js +48 -0
  472. package/dist/esm/modules/word/core/text-utils.js +202 -0
  473. package/dist/esm/modules/word/core/walker.js +570 -0
  474. package/dist/esm/modules/word/crypto.js +13 -7
  475. package/dist/esm/modules/word/document-io.js +80 -197
  476. package/dist/esm/modules/word/errors.js +54 -2
  477. package/dist/esm/modules/word/excel.js +13 -0
  478. package/dist/esm/modules/word/font/font-embed.js +646 -0
  479. package/dist/{browser/modules/word → esm/modules/word/font}/font-obfuscation.js +4 -9
  480. package/dist/esm/modules/word/font/hyphenation.js +4210 -0
  481. package/dist/esm/modules/word/font/text-shaping.js +635 -0
  482. package/dist/esm/modules/word/html.js +6 -5
  483. package/dist/esm/modules/word/incremental-edit.js +361 -0
  484. package/dist/esm/modules/word/index.base.js +138 -29
  485. package/dist/esm/modules/word/layout/layout-constants.js +17 -0
  486. package/dist/esm/modules/word/layout/layout-full.js +1696 -0
  487. package/dist/esm/modules/word/layout/layout-model.js +16 -0
  488. package/dist/esm/modules/word/layout/layout.js +1167 -0
  489. package/dist/esm/modules/word/layout/render-page.js +1238 -0
  490. package/dist/esm/modules/word/markdown.js +13 -0
  491. package/dist/esm/modules/word/patcher.js +537 -0
  492. package/dist/esm/modules/word/query/compat.js +58 -0
  493. package/dist/esm/modules/word/query/data-binding.js +392 -0
  494. package/dist/esm/modules/word/query/form-fields.js +268 -0
  495. package/dist/esm/modules/word/query/format-search.js +329 -0
  496. package/dist/esm/modules/word/query/mail-merge.js +111 -0
  497. package/dist/esm/modules/word/query/merge.js +617 -0
  498. package/dist/esm/modules/word/query/replace.js +301 -0
  499. package/dist/esm/modules/word/query/revisions.js +879 -0
  500. package/dist/esm/modules/word/query/search.js +346 -0
  501. package/dist/esm/modules/word/query/split.js +135 -0
  502. package/dist/esm/modules/word/query/style-resolve.js +368 -0
  503. package/dist/esm/modules/word/reader/chart-parser.js +810 -0
  504. package/dist/esm/modules/word/reader/comments-parser.js +92 -0
  505. package/dist/esm/modules/word/reader/doc-props-parsers.js +190 -0
  506. package/dist/esm/modules/word/reader/docx-reader.js +2557 -0
  507. package/dist/esm/modules/word/reader/drawing-helpers.js +84 -0
  508. package/dist/esm/modules/word/reader/form-field-parser.js +82 -0
  509. package/dist/esm/modules/word/reader/image-parsers.js +291 -0
  510. package/dist/esm/modules/word/reader/math-parser.js +422 -0
  511. package/dist/esm/modules/word/reader/metadata-parsers.js +87 -0
  512. package/dist/esm/modules/word/reader/numbering-parser.js +166 -0
  513. package/dist/esm/modules/word/reader/paragraph-section-parsers.js +503 -0
  514. package/dist/esm/modules/word/reader/parse-utils.js +249 -0
  515. package/dist/esm/modules/word/reader/properties-parsers.js +332 -0
  516. package/dist/esm/modules/word/reader/reader-context.js +61 -0
  517. package/dist/esm/modules/word/reader/sdt-helpers.js +111 -0
  518. package/dist/esm/modules/word/reader/settings-parser.js +263 -0
  519. package/dist/esm/modules/word/reader/styles-parser.js +147 -0
  520. package/dist/esm/modules/word/reader/table-properties-parsers.js +234 -0
  521. package/dist/esm/modules/word/reader/theme-parser.js +167 -0
  522. package/dist/esm/modules/word/reader/watermark-parser.js +110 -0
  523. package/dist/esm/modules/word/security/cfb-reader.js +410 -0
  524. package/dist/esm/modules/word/{digital-signatures.js → security/digital-signatures.js} +34 -34
  525. package/dist/esm/modules/word/security/document-protection.js +201 -0
  526. package/dist/esm/modules/word/security/encryption.js +602 -0
  527. package/dist/esm/modules/word/security/policy.js +102 -0
  528. package/dist/esm/modules/word/template/template-chart.js +167 -0
  529. package/dist/esm/modules/word/template/template-datasource.js +541 -0
  530. package/dist/esm/modules/word/template/template-engine.js +1435 -0
  531. package/dist/esm/modules/word/units.js +43 -14
  532. package/dist/esm/modules/word/{writers → writer}/chart-writer.js +164 -23
  533. package/dist/esm/modules/word/writer/checkbox-writer.js +79 -0
  534. package/dist/esm/modules/word/{writers → writer}/comment-writer.js +8 -6
  535. package/dist/esm/modules/word/writer/common-parts.js +101 -0
  536. package/dist/{browser/modules/word → esm/modules/word/writer}/content-types.js +14 -6
  537. package/dist/esm/modules/word/writer/document-writer.js +473 -0
  538. package/dist/esm/modules/word/writer/docx-packager.js +1515 -0
  539. package/dist/{browser/modules/word/writers → esm/modules/word/writer}/footnote-writer.js +13 -10
  540. package/dist/{browser/modules/word/writers → esm/modules/word/writer}/header-footer-writer.js +39 -21
  541. package/dist/esm/modules/word/{writers → writer}/image-writer.js +11 -7
  542. package/dist/{browser/modules/word/writers → esm/modules/word/writer}/math-writer.js +21 -1
  543. package/dist/{browser/modules/word/writers → esm/modules/word/writer}/numbering-writer.js +11 -4
  544. package/dist/esm/modules/word/{writers → writer}/paragraph-writer.js +73 -38
  545. package/dist/{browser/modules/word/writers → esm/modules/word/writer}/parts-writer.js +91 -12
  546. package/dist/esm/modules/word/writer/reference-scanners.js +111 -0
  547. package/dist/esm/modules/word/writer/relationships.js +117 -0
  548. package/dist/esm/modules/word/writer/render-context.js +46 -0
  549. package/dist/{browser/modules/word/writers → esm/modules/word/writer}/run-writer.js +126 -24
  550. package/dist/esm/modules/word/writer/sdt-writer.js +189 -0
  551. package/dist/esm/modules/word/writer/stream-buf.js +73 -0
  552. package/dist/esm/modules/word/writer/streaming-writer.js +1382 -0
  553. package/dist/esm/modules/word/writer/string-buf.js +7 -0
  554. package/dist/esm/modules/word/{writers → writer}/styles-writer.js +32 -1
  555. package/dist/esm/modules/word/{writers → writer}/table-writer.js +94 -11
  556. package/dist/esm/utils/crypto.browser.js +3 -1
  557. package/dist/esm/utils/crypto.js +4 -1
  558. package/dist/esm/utils/font-metrics.js +293 -0
  559. package/dist/esm/utils/string-buf.js +89 -0
  560. package/dist/esm/utils/theme-colors.js +120 -0
  561. package/dist/iife/excelts.iife.js +70692 -70337
  562. package/dist/iife/excelts.iife.js.map +1 -1
  563. package/dist/iife/excelts.iife.min.js +57 -57
  564. package/dist/types/modules/archive/fs/archive-file.d.ts +8 -5
  565. package/dist/types/modules/excel/chart/chart-ex-types.d.ts +0 -12
  566. package/dist/types/modules/excel/chart/chart.d.ts +1 -5
  567. package/dist/types/modules/excel/chart/types.d.ts +0 -6
  568. package/dist/types/modules/excel/stream/workbook-writer.browser.d.ts +40 -0
  569. package/dist/types/modules/excel/utils/string-buf.d.ts +5 -26
  570. package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +19 -9
  571. package/dist/types/modules/excel/xlsx/xlsx.d.ts +10 -2
  572. package/dist/types/modules/pdf/excel-bridge.d.ts +30 -1
  573. package/dist/types/modules/pdf/font/metrics.d.ts +3 -52
  574. package/dist/types/modules/pdf/index.d.ts +1 -1
  575. package/dist/types/modules/pdf/render-layout-to-pdf.d.ts +66 -0
  576. package/dist/types/modules/pdf/word-bridge.d.ts +80 -12
  577. package/dist/types/modules/stream/index.base.d.ts +2 -0
  578. package/dist/types/modules/stream/internal/sink-adapter.d.ts +65 -0
  579. package/dist/types/modules/stream/pull-stream.d.ts +19 -2
  580. package/dist/types/modules/stream/types.d.ts +13 -1
  581. package/dist/types/modules/word/advanced/diff.d.ts +61 -0
  582. package/dist/types/modules/word/advanced/drawing-shapes.d.ts +269 -0
  583. package/dist/types/modules/word/advanced/field-engine.d.ts +43 -0
  584. package/dist/types/modules/word/advanced/glossary.d.ts +86 -0
  585. package/dist/types/modules/word/advanced/math-convert.d.ts +30 -0
  586. package/dist/types/modules/word/advanced/ole-objects.d.ts +115 -0
  587. package/dist/types/modules/word/advanced/style-map.d.ts +105 -0
  588. package/dist/types/modules/word/advanced/validation.d.ts +56 -0
  589. package/dist/types/modules/word/advanced/vba-project.d.ts +91 -0
  590. package/dist/types/modules/word/bridge/excel-bridge.d.ts +127 -0
  591. package/dist/types/modules/word/builder/document-handle.d.ts +151 -0
  592. package/dist/types/modules/word/builder/paragraph-builders.d.ts +61 -0
  593. package/dist/types/modules/word/builder/run-builders.d.ts +374 -0
  594. package/dist/types/modules/word/builder/table-builders.d.ts +23 -0
  595. package/dist/types/modules/word/constants.d.ts +39 -1
  596. package/dist/types/modules/word/convert/conversion-ir.d.ts +210 -0
  597. package/dist/types/modules/word/convert/docx-to-semantic.d.ts +39 -0
  598. package/dist/types/modules/word/convert/flat-opc.d.ts +44 -0
  599. package/dist/types/modules/word/convert/html/html-import.d.ts +50 -0
  600. package/dist/{browser/modules/word → types/modules/word/convert/html}/html-renderer.d.ts +14 -1
  601. package/dist/types/modules/word/convert/html/html.d.ts +15 -0
  602. package/dist/types/modules/word/convert/markdown/markdown-import.d.ts +68 -0
  603. package/dist/types/modules/word/convert/markdown/markdown-renderer.d.ts +25 -0
  604. package/dist/types/modules/word/convert/markdown/markdown.d.ts +15 -0
  605. package/dist/types/modules/word/convert/odt/odt.d.ts +41 -0
  606. package/dist/types/modules/word/{color-utils.d.ts → core/color-utils.d.ts} +8 -1
  607. package/dist/types/modules/word/core/internal-utils.d.ts +90 -0
  608. package/dist/types/modules/word/core/mapper.d.ts +44 -0
  609. package/dist/types/modules/word/core/opc-paths.d.ts +33 -0
  610. package/dist/types/modules/word/core/text-utils.d.ts +38 -0
  611. package/dist/types/modules/word/core/walker.d.ts +119 -0
  612. package/dist/types/modules/word/crypto.d.ts +14 -9
  613. package/dist/types/modules/word/document-io.d.ts +59 -27
  614. package/dist/types/modules/word/errors.d.ts +44 -1
  615. package/dist/types/modules/word/excel.d.ts +14 -0
  616. package/dist/types/modules/word/font/font-embed.d.ts +112 -0
  617. package/dist/types/modules/word/font/hyphenation.d.ts +65 -0
  618. package/dist/types/modules/word/font/text-shaping.d.ts +58 -0
  619. package/dist/types/modules/word/html.d.ts +7 -6
  620. package/dist/types/modules/word/incremental-edit.d.ts +123 -0
  621. package/dist/types/modules/word/index.base.d.ts +194 -10
  622. package/dist/types/modules/word/layout/layout-constants.d.ts +17 -0
  623. package/dist/types/modules/word/layout/layout-full.d.ts +53 -0
  624. package/dist/types/modules/word/layout/layout-model.d.ts +344 -0
  625. package/dist/types/modules/word/layout/layout.d.ts +63 -0
  626. package/dist/types/modules/word/layout/render-page.d.ts +57 -0
  627. package/dist/types/modules/word/markdown.d.ts +14 -0
  628. package/dist/types/modules/word/patcher.d.ts +62 -0
  629. package/dist/types/modules/word/query/compat.d.ts +25 -0
  630. package/dist/types/modules/word/query/data-binding.d.ts +22 -0
  631. package/dist/types/modules/word/query/form-fields.d.ts +41 -0
  632. package/dist/types/modules/word/query/format-search.d.ts +99 -0
  633. package/dist/types/modules/word/query/mail-merge.d.ts +25 -0
  634. package/dist/types/modules/word/query/merge.d.ts +50 -0
  635. package/dist/types/modules/word/query/replace.d.ts +47 -0
  636. package/dist/types/modules/word/query/revisions.d.ts +67 -0
  637. package/dist/types/modules/word/query/search.d.ts +129 -0
  638. package/dist/types/modules/word/query/split.d.ts +44 -0
  639. package/dist/types/modules/word/query/style-resolve.d.ts +104 -0
  640. package/dist/types/modules/word/reader/chart-parser.d.ts +20 -0
  641. package/dist/types/modules/word/reader/comments-parser.d.ts +26 -0
  642. package/dist/types/modules/word/reader/doc-props-parsers.d.ts +15 -0
  643. package/dist/types/modules/word/reader/docx-reader.d.ts +27 -0
  644. package/dist/types/modules/word/reader/drawing-helpers.d.ts +27 -0
  645. package/dist/types/modules/word/reader/form-field-parser.d.ts +21 -0
  646. package/dist/types/modules/word/reader/image-parsers.d.ts +11 -0
  647. package/dist/types/modules/word/reader/math-parser.d.ts +12 -0
  648. package/dist/types/modules/word/reader/metadata-parsers.d.ts +17 -0
  649. package/dist/types/modules/word/reader/numbering-parser.d.ts +13 -0
  650. package/dist/types/modules/word/reader/paragraph-section-parsers.d.ts +12 -0
  651. package/dist/types/modules/word/reader/parse-utils.d.ts +91 -0
  652. package/dist/types/modules/word/reader/properties-parsers.d.ts +21 -0
  653. package/dist/types/modules/word/reader/reader-context.d.ts +69 -0
  654. package/dist/types/modules/word/reader/sdt-helpers.d.ts +29 -0
  655. package/dist/types/modules/word/reader/settings-parser.d.ts +8 -0
  656. package/dist/types/modules/word/reader/styles-parser.d.ts +12 -0
  657. package/dist/types/modules/word/reader/table-properties-parsers.d.ts +12 -0
  658. package/dist/types/modules/word/reader/theme-parser.d.ts +8 -0
  659. package/dist/types/modules/word/reader/watermark-parser.d.ts +15 -0
  660. package/dist/types/modules/word/security/cfb-reader.d.ts +37 -0
  661. package/dist/types/modules/word/{digital-signatures.d.ts → security/digital-signatures.d.ts} +19 -11
  662. package/dist/types/modules/word/security/document-protection.d.ts +93 -0
  663. package/dist/{browser/modules/word → types/modules/word/security}/encryption.d.ts +51 -4
  664. package/dist/types/modules/word/security/policy.d.ts +80 -0
  665. package/dist/types/modules/word/template/template-chart.d.ts +56 -0
  666. package/dist/types/modules/word/template/template-datasource.d.ts +154 -0
  667. package/dist/types/modules/word/template/template-engine.d.ts +121 -0
  668. package/dist/types/modules/word/types.d.ts +224 -25
  669. package/dist/types/modules/word/units.d.ts +26 -0
  670. package/dist/types/modules/word/writer/checkbox-writer.d.ts +17 -0
  671. package/dist/{browser/modules/word/writers → types/modules/word/writer}/comment-writer.d.ts +2 -1
  672. package/dist/types/modules/word/writer/common-parts.d.ts +57 -0
  673. package/dist/{browser/modules/word → types/modules/word/writer}/content-types.d.ts +2 -2
  674. package/dist/types/modules/word/writer/document-writer.d.ts +24 -0
  675. package/dist/types/modules/word/writer/docx-packager.d.ts +35 -0
  676. package/dist/{browser/modules/word/writers → types/modules/word/writer}/footnote-writer.d.ts +3 -2
  677. package/dist/{browser/modules/word/writers → types/modules/word/writer}/header-footer-writer.d.ts +3 -2
  678. package/dist/{browser/modules/word/writers → types/modules/word/writer}/image-writer.d.ts +1 -1
  679. package/dist/types/modules/word/writer/math-writer.d.ts +20 -0
  680. package/dist/types/modules/word/{writers → writer}/numbering-writer.d.ts +1 -1
  681. package/dist/types/modules/word/{writers → writer}/paragraph-writer.d.ts +2 -1
  682. package/dist/types/modules/word/{writers → writer}/parts-writer.d.ts +3 -3
  683. package/dist/types/modules/word/writer/reference-scanners.d.ts +42 -0
  684. package/dist/types/modules/word/writer/relationships.d.ts +52 -0
  685. package/dist/types/modules/word/writer/render-context.d.ts +124 -0
  686. package/dist/types/modules/word/{writers → writer}/run-writer.d.ts +10 -1
  687. package/dist/types/modules/word/writer/sdt-writer.d.ts +25 -0
  688. package/dist/types/modules/word/writer/stream-buf.d.ts +37 -0
  689. package/dist/types/modules/word/writer/streaming-writer.d.ts +344 -0
  690. package/dist/types/modules/word/writer/string-buf.d.ts +8 -0
  691. package/dist/types/modules/word/{writers → writer}/table-writer.d.ts +2 -1
  692. package/dist/types/modules/xml/types.d.ts +22 -0
  693. package/dist/types/utils/crypto.browser.d.ts +3 -1
  694. package/dist/types/utils/crypto.d.ts +4 -1
  695. package/dist/types/utils/font-metrics.d.ts +63 -0
  696. package/dist/types/utils/string-buf.d.ts +42 -0
  697. package/dist/types/utils/theme-colors.d.ts +55 -0
  698. package/package.json +121 -39
  699. package/dist/browser/modules/word/color-utils.js +0 -94
  700. package/dist/browser/modules/word/document.d.ts +0 -657
  701. package/dist/browser/modules/word/document.js +0 -1533
  702. package/dist/browser/modules/word/docx-packager.d.ts +0 -14
  703. package/dist/browser/modules/word/docx-packager.js +0 -822
  704. package/dist/browser/modules/word/docx-reader.d.ts +0 -11
  705. package/dist/browser/modules/word/docx-reader.js +0 -4929
  706. package/dist/browser/modules/word/encryption.js +0 -274
  707. package/dist/browser/modules/word/internal-utils.d.ts +0 -23
  708. package/dist/browser/modules/word/internal-utils.js +0 -54
  709. package/dist/browser/modules/word/namespaces.d.ts +0 -159
  710. package/dist/browser/modules/word/namespaces.js +0 -189
  711. package/dist/browser/modules/word/relationships.d.ts +0 -30
  712. package/dist/browser/modules/word/relationships.js +0 -48
  713. package/dist/browser/modules/word/writers/checkbox-writer.d.ts +0 -9
  714. package/dist/browser/modules/word/writers/checkbox-writer.js +0 -42
  715. package/dist/browser/modules/word/writers/document-writer.d.ts +0 -16
  716. package/dist/browser/modules/word/writers/document-writer.js +0 -461
  717. package/dist/browser/modules/word/writers/math-writer.d.ts +0 -9
  718. package/dist/cjs/modules/word/color-utils.js +0 -97
  719. package/dist/cjs/modules/word/document.js +0 -1645
  720. package/dist/cjs/modules/word/docx-packager.js +0 -825
  721. package/dist/cjs/modules/word/docx-reader.js +0 -4932
  722. package/dist/cjs/modules/word/encryption.js +0 -282
  723. package/dist/cjs/modules/word/internal-utils.js +0 -59
  724. package/dist/cjs/modules/word/namespaces.js +0 -192
  725. package/dist/cjs/modules/word/relationships.js +0 -55
  726. package/dist/cjs/modules/word/writers/checkbox-writer.js +0 -45
  727. package/dist/cjs/modules/word/writers/document-writer.js +0 -465
  728. package/dist/esm/modules/word/color-utils.js +0 -94
  729. package/dist/esm/modules/word/document.js +0 -1533
  730. package/dist/esm/modules/word/docx-packager.js +0 -822
  731. package/dist/esm/modules/word/docx-reader.js +0 -4929
  732. package/dist/esm/modules/word/encryption.js +0 -274
  733. package/dist/esm/modules/word/internal-utils.js +0 -54
  734. package/dist/esm/modules/word/namespaces.js +0 -189
  735. package/dist/esm/modules/word/relationships.js +0 -48
  736. package/dist/esm/modules/word/writers/checkbox-writer.js +0 -42
  737. package/dist/esm/modules/word/writers/document-writer.js +0 -461
  738. package/dist/types/modules/word/document.d.ts +0 -657
  739. package/dist/types/modules/word/docx-packager.d.ts +0 -14
  740. package/dist/types/modules/word/docx-reader.d.ts +0 -11
  741. package/dist/types/modules/word/internal-utils.d.ts +0 -23
  742. package/dist/types/modules/word/namespaces.d.ts +0 -159
  743. package/dist/types/modules/word/relationships.d.ts +0 -30
  744. package/dist/types/modules/word/writers/checkbox-writer.d.ts +0 -9
  745. package/dist/types/modules/word/writers/document-writer.d.ts +0 -16
  746. package/dist/types/modules/word/writers/math-writer.d.ts +0 -9
  747. /package/dist/browser/modules/word/{font-obfuscation.d.ts → font/font-obfuscation.d.ts} +0 -0
  748. /package/dist/browser/modules/word/{writers → writer}/chart-writer.d.ts +0 -0
  749. /package/dist/browser/modules/word/{writers → writer}/section-writer.d.ts +0 -0
  750. /package/dist/browser/modules/word/{writers → writer}/section-writer.js +0 -0
  751. /package/dist/browser/modules/word/{writers → writer}/styles-writer.d.ts +0 -0
  752. /package/dist/browser/modules/word/{writers → writer}/textbox-writer.d.ts +0 -0
  753. /package/dist/browser/modules/word/{writers → writer}/textbox-writer.js +0 -0
  754. /package/dist/browser/modules/word/{writers → writer}/toc-writer.d.ts +0 -0
  755. /package/dist/browser/modules/word/{writers → writer}/toc-writer.js +0 -0
  756. /package/dist/cjs/modules/word/{writers → writer}/section-writer.js +0 -0
  757. /package/dist/cjs/modules/word/{writers → writer}/textbox-writer.js +0 -0
  758. /package/dist/cjs/modules/word/{writers → writer}/toc-writer.js +0 -0
  759. /package/dist/esm/modules/word/{writers → writer}/section-writer.js +0 -0
  760. /package/dist/esm/modules/word/{writers → writer}/textbox-writer.js +0 -0
  761. /package/dist/esm/modules/word/{writers → writer}/toc-writer.js +0 -0
  762. /package/dist/types/modules/word/{font-obfuscation.d.ts → font/font-obfuscation.d.ts} +0 -0
  763. /package/dist/types/modules/word/{writers → writer}/chart-writer.d.ts +0 -0
  764. /package/dist/types/modules/word/{writers → writer}/section-writer.d.ts +0 -0
  765. /package/dist/types/modules/word/{writers → writer}/styles-writer.d.ts +0 -0
  766. /package/dist/types/modules/word/{writers → writer}/textbox-writer.d.ts +0 -0
  767. /package/dist/types/modules/word/{writers → writer}/toc-writer.d.ts +0 -0
@@ -0,0 +1,414 @@
1
+ "use strict";
2
+ /**
3
+ * DOCX Module - CFB (Compound File Binary) Reader
4
+ *
5
+ * Minimal reader for OLE2/CFB format used by encrypted Office documents.
6
+ * Implements enough of MS-CFB to extract named streams (EncryptionInfo, EncryptedPackage).
7
+ *
8
+ * References:
9
+ * - MS-CFB: Compound File Binary File Format
10
+ * - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-cfb
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.readCfb = readCfb;
14
+ exports.writeCfb = writeCfb;
15
+ const errors_1 = require("../errors");
16
+ /** CFB file signature: D0CF11E0A1B11AE1. */
17
+ const CFB_SIGNATURE = [0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1];
18
+ /** Special sector values. */
19
+ const ENDOFCHAIN = 0xfffffffe;
20
+ const FREESECT = 0xffffffff;
21
+ const _FATSECT = 0xfffffffd;
22
+ /**
23
+ * Read a CFB (OLE2 Compound File) and extract all stream entries.
24
+ *
25
+ * Only reads v3 and v4 CFB files (sector sizes 512 and 4096).
26
+ *
27
+ * @param buffer - The CFB file data.
28
+ * @returns Array of named stream entries.
29
+ */
30
+ function readCfb(buffer) {
31
+ if (buffer.length < 512) {
32
+ throw new errors_1.DocxParseError("CFB: file too small");
33
+ }
34
+ // Verify signature
35
+ for (let i = 0; i < 8; i++) {
36
+ if (buffer[i] !== CFB_SIGNATURE[i]) {
37
+ throw new errors_1.DocxParseError("CFB: invalid signature");
38
+ }
39
+ }
40
+ const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
41
+ // Header fields
42
+ const majorVersion = view.getUint16(26, true);
43
+ const sectorSize = majorVersion === 4 ? 4096 : 512;
44
+ const miniSectorSize = 64;
45
+ const miniStreamCutoff = view.getUint32(56, true); // usually 4096
46
+ const fatSectorCount = view.getUint32(44, true);
47
+ const firstDirectorySector = view.getUint32(48, true);
48
+ const firstMiniFatSector = view.getUint32(60, true);
49
+ const miniFatSectorCount = view.getUint32(64, true);
50
+ const firstDifatSector = view.getUint32(68, true);
51
+ const difatSectorCount = view.getUint32(72, true);
52
+ // Helper: sector offset in file
53
+ const sectorOffset = (sector) => (sector + 1) * sectorSize;
54
+ // Read DIFAT: first 109 entries in header, then chained
55
+ const difat = [];
56
+ for (let i = 0; i < 109 && difat.length < fatSectorCount; i++) {
57
+ const val = view.getUint32(76 + i * 4, true);
58
+ if (val !== FREESECT && val !== ENDOFCHAIN) {
59
+ difat.push(val);
60
+ }
61
+ }
62
+ // Follow DIFAT chain
63
+ let difatSector = firstDifatSector;
64
+ for (let i = 0; i < difatSectorCount && difatSector !== ENDOFCHAIN; i++) {
65
+ const off = sectorOffset(difatSector);
66
+ const entriesPerSector = sectorSize / 4 - 1; // last 4 bytes = next DIFAT sector
67
+ for (let j = 0; j < entriesPerSector && difat.length < fatSectorCount; j++) {
68
+ const val = view.getUint32(off + j * 4, true);
69
+ if (val !== FREESECT && val !== ENDOFCHAIN) {
70
+ difat.push(val);
71
+ }
72
+ }
73
+ difatSector = view.getUint32(off + entriesPerSector * 4, true);
74
+ }
75
+ // Build FAT (sector allocation table).
76
+ //
77
+ // `fatSectorCount` comes from the file header and is attacker-controlled.
78
+ // A hostile CFB advertising `fatSectorCount = 100_000` would push us to
79
+ // build a FAT array with ~12.8M Uint32 entries (~100 MB at JS object
80
+ // overhead). Cap it conservatively — real DOCX-encryption packages have
81
+ // at most a few dozen FAT sectors.
82
+ const MAX_FAT_ENTRIES = 1000000;
83
+ const fat = [];
84
+ for (const fatSec of difat) {
85
+ const off = sectorOffset(fatSec);
86
+ for (let i = 0; i < sectorSize / 4; i++) {
87
+ if (fat.length >= MAX_FAT_ENTRIES) {
88
+ throw new Error(`CFB FAT exceeds maximum entry count (${MAX_FAT_ENTRIES}). ` +
89
+ `Aborting to avoid runaway memory consumption.`);
90
+ }
91
+ fat.push(view.getUint32(off + i * 4, true));
92
+ }
93
+ }
94
+ // Read sector chain.
95
+ //
96
+ // Resource limits:
97
+ // - `visited` already protects against infinite cycles.
98
+ // - We additionally cap the total bytes assembled per chain at 256 MB
99
+ // to bound memory consumption when a malicious CFB advertises a
100
+ // legitimately-shaped but enormous chain. Real DOCX-encryption
101
+ // packages are well under this; the cap exists to fail fast on
102
+ // hostile input rather than burn memory.
103
+ const MAX_CHAIN_BYTES = 256 * 1024 * 1024;
104
+ const readChain = (startSector) => {
105
+ const sectors = [];
106
+ let sector = startSector;
107
+ let totalBytes = 0;
108
+ const visited = new Set();
109
+ while (sector !== ENDOFCHAIN && sector < fat.length && !visited.has(sector)) {
110
+ visited.add(sector);
111
+ const off = sectorOffset(sector);
112
+ if (off + sectorSize <= buffer.length) {
113
+ sectors.push(buffer.slice(off, off + sectorSize));
114
+ totalBytes += sectorSize;
115
+ if (totalBytes > MAX_CHAIN_BYTES) {
116
+ throw new Error(`CFB sector chain exceeds maximum size (${MAX_CHAIN_BYTES} bytes). ` +
117
+ `Aborting to avoid runaway memory consumption.`);
118
+ }
119
+ }
120
+ sector = fat[sector];
121
+ }
122
+ // Concatenate
123
+ const total = sectors.reduce((sum, s) => sum + s.length, 0);
124
+ const result = new Uint8Array(total);
125
+ let pos = 0;
126
+ for (const s of sectors) {
127
+ result.set(s, pos);
128
+ pos += s.length;
129
+ }
130
+ return result;
131
+ };
132
+ // Read directory entries
133
+ const dirData = readChain(firstDirectorySector);
134
+ const dirView = new DataView(dirData.buffer, dirData.byteOffset, dirData.byteLength);
135
+ const dirEntrySize = 128;
136
+ const numDirEntries = Math.floor(dirData.length / dirEntrySize);
137
+ const dirEntries = [];
138
+ for (let i = 0; i < numDirEntries; i++) {
139
+ const off = i * dirEntrySize;
140
+ const nameSize = dirView.getUint16(off + 64, true); // bytes (including null terminator)
141
+ const type = dirView.getUint8(off + 66);
142
+ const startSector = dirView.getUint32(off + 116, true);
143
+ const size = majorVersion === 4
144
+ ? Number(dirView.getBigUint64(off + 120, true))
145
+ : dirView.getUint32(off + 120, true);
146
+ // Decode UTF-16LE name (nameSize includes null terminator)
147
+ let name = "";
148
+ const nameLen = Math.max(0, nameSize - 2); // exclude null terminator
149
+ for (let j = 0; j < nameLen; j += 2) {
150
+ name += String.fromCharCode(dirView.getUint16(off + j, true));
151
+ }
152
+ dirEntries.push({ name, type, startSector, size });
153
+ }
154
+ // Build mini-FAT if needed
155
+ const miniFat = [];
156
+ if (miniFatSectorCount > 0 && firstMiniFatSector !== ENDOFCHAIN) {
157
+ const miniFatData = readChain(firstMiniFatSector);
158
+ const mfView = new DataView(miniFatData.buffer, miniFatData.byteOffset, miniFatData.byteLength);
159
+ for (let i = 0; i < miniFatData.length / 4; i++) {
160
+ miniFat.push(mfView.getUint32(i * 4, true));
161
+ }
162
+ }
163
+ // Read mini-stream (from root entry's chain)
164
+ let miniStream;
165
+ const rootEntry = dirEntries[0];
166
+ if (rootEntry && rootEntry.type === 5 && rootEntry.startSector !== ENDOFCHAIN) {
167
+ miniStream = readChain(rootEntry.startSector);
168
+ }
169
+ // Read a stream from mini-sectors. The declared `size` originates from a
170
+ // directory entry inside the file and must therefore be treated as
171
+ // untrusted; cap it at the actual mini-stream length to prevent malformed
172
+ // CFB containers from triggering oversized buffer allocations.
173
+ const readMiniChain = (startSector, size) => {
174
+ if (!miniStream) {
175
+ return new Uint8Array(0);
176
+ }
177
+ const safeSize = Math.max(0, Math.min(size, miniStream.length));
178
+ const result = new Uint8Array(safeSize);
179
+ let sector = startSector;
180
+ let pos = 0;
181
+ const visited = new Set();
182
+ while (sector !== ENDOFCHAIN && pos < safeSize && !visited.has(sector)) {
183
+ visited.add(sector);
184
+ const off = sector * miniSectorSize;
185
+ const copyLen = Math.min(miniSectorSize, safeSize - pos);
186
+ if (off + copyLen <= miniStream.length) {
187
+ result.set(miniStream.slice(off, off + copyLen), pos);
188
+ }
189
+ pos += copyLen;
190
+ sector = sector < miniFat.length ? miniFat[sector] : ENDOFCHAIN;
191
+ }
192
+ return result;
193
+ };
194
+ // Extract stream entries
195
+ const entries = [];
196
+ for (let i = 1; i < dirEntries.length; i++) {
197
+ const entry = dirEntries[i];
198
+ if (entry.type !== 2 || entry.name === "") {
199
+ continue;
200
+ } // only stream entries
201
+ // The directory's declared stream size cannot exceed the size of the
202
+ // backing storage. Without this clamp a malformed `size` field could
203
+ // request a multi-GiB allocation in `slice(0, entry.size)`.
204
+ const safeSize = Math.max(0, Math.min(entry.size, buffer.length));
205
+ let data;
206
+ if (safeSize < miniStreamCutoff) {
207
+ // Read from mini-stream
208
+ data = readMiniChain(entry.startSector, safeSize);
209
+ }
210
+ else {
211
+ // Read from regular sectors
212
+ const raw = readChain(entry.startSector);
213
+ data = raw.slice(0, safeSize);
214
+ }
215
+ entries.push({ name: entry.name, data });
216
+ }
217
+ return entries;
218
+ }
219
+ // =============================================================================
220
+ // CFB Writer (v3, sector size 512)
221
+ // =============================================================================
222
+ /**
223
+ * Write a set of named stream entries into a CFB (OLE2 Compound File) container.
224
+ *
225
+ * Produces a minimal v3 CFB with 512-byte sectors. Does not use mini-streams
226
+ * (all data is stored in regular sectors). This is suitable for encrypted Office
227
+ * documents where every stream exceeds 4096 bytes.
228
+ *
229
+ * @param entries - Named stream entries to include.
230
+ * @returns The CFB file as a Uint8Array.
231
+ */
232
+ function writeCfb(entries) {
233
+ const SECTOR_SIZE = 512;
234
+ const DIR_ENTRY_SIZE = 128;
235
+ // Compute sector count for each entry
236
+ const entrySectors = entries.map(e => Math.ceil(e.data.length / SECTOR_SIZE));
237
+ // Directory entries: Root Entry + one per stream entry
238
+ const dirEntryCount = 1 + entries.length;
239
+ const dirSectors = Math.ceil((dirEntryCount * DIR_ENTRY_SIZE) / SECTOR_SIZE);
240
+ // Total data sectors
241
+ const totalDataSectors = entrySectors.reduce((a, b) => a + b, 0);
242
+ // FAT entries needed: directory sectors + data sectors + FAT sectors themselves
243
+ // We solve iteratively since FAT sectors count depends on total sector count
244
+ let fatSectors = 1;
245
+ while (true) {
246
+ const totalSectors = dirSectors + totalDataSectors + fatSectors;
247
+ const fatCapacity = fatSectors * (SECTOR_SIZE / 4);
248
+ if (fatCapacity >= totalSectors) {
249
+ break;
250
+ }
251
+ fatSectors++;
252
+ }
253
+ const totalSectors = dirSectors + totalDataSectors + fatSectors;
254
+ const fileSize = (1 + totalSectors) * SECTOR_SIZE; // +1 for header sector
255
+ const output = new Uint8Array(fileSize);
256
+ const view = new DataView(output.buffer);
257
+ // --- Header (sector 0 area, 512 bytes) ---
258
+ // Signature
259
+ const sig = [0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1];
260
+ for (let i = 0; i < 8; i++) {
261
+ output[i] = sig[i];
262
+ }
263
+ // Minor version = 0x003E, Major version = 0x0003 (v3)
264
+ view.setUint16(24, 0x003e, true);
265
+ view.setUint16(26, 0x0003, true);
266
+ // Byte order = 0xFFFE (little-endian)
267
+ view.setUint16(28, 0xfffe, true);
268
+ // Sector size power = 9 (2^9 = 512)
269
+ view.setUint16(30, 9, true);
270
+ // Mini sector size power = 6 (2^6 = 64)
271
+ view.setUint16(32, 6, true);
272
+ // Total sectors in directory (v3: must be 0)
273
+ view.setUint32(40, 0, true);
274
+ // Total FAT sectors
275
+ view.setUint32(44, fatSectors, true);
276
+ // First directory sector SECT
277
+ // Layout: [FAT sectors] [Directory sectors] [Data sectors]
278
+ const firstDirSector = fatSectors;
279
+ view.setUint32(48, firstDirSector, true);
280
+ // Transaction signature number
281
+ view.setUint32(52, 0, true);
282
+ // Mini stream cutoff = 0 (all streams stored in regular sectors)
283
+ view.setUint32(56, 0, true);
284
+ // First mini FAT sector = ENDOFCHAIN (none)
285
+ view.setUint32(60, ENDOFCHAIN, true);
286
+ // Mini FAT sector count = 0
287
+ view.setUint32(64, 0, true);
288
+ // First DIFAT sector = ENDOFCHAIN (none needed, <=109 FAT sectors)
289
+ view.setUint32(68, ENDOFCHAIN, true);
290
+ // DIFAT sector count = 0
291
+ view.setUint32(72, 0, true);
292
+ // DIFAT array in header (109 entries starting at offset 76)
293
+ for (let i = 0; i < 109; i++) {
294
+ view.setUint32(76 + i * 4, i < fatSectors ? i : FREESECT, true);
295
+ }
296
+ // --- Build FAT ---
297
+ const fatOffset = SECTOR_SIZE; // FAT starts at sector 0 in file
298
+ const fatView = new DataView(output.buffer, fatOffset, fatSectors * SECTOR_SIZE);
299
+ // Initialize all FAT entries to FREESECT
300
+ for (let i = 0; i < fatSectors * (SECTOR_SIZE / 4); i++) {
301
+ fatView.setUint32(i * 4, FREESECT, true);
302
+ }
303
+ let sectorIdx = 0;
304
+ // FAT sectors themselves are marked as 0xFFFFFFFD (FATSECT)
305
+ for (let i = 0; i < fatSectors; i++) {
306
+ fatView.setUint32(sectorIdx * 4, 0xfffffffd, true);
307
+ sectorIdx++;
308
+ }
309
+ // Directory sectors chain
310
+ for (let i = 0; i < dirSectors; i++) {
311
+ const next = i < dirSectors - 1 ? sectorIdx + 1 : ENDOFCHAIN;
312
+ fatView.setUint32(sectorIdx * 4, next, true);
313
+ sectorIdx++;
314
+ }
315
+ // Data sectors for each entry
316
+ const entryStartSectors = [];
317
+ for (let e = 0; e < entries.length; e++) {
318
+ entryStartSectors.push(sectorIdx);
319
+ for (let i = 0; i < entrySectors[e]; i++) {
320
+ const next = i < entrySectors[e] - 1 ? sectorIdx + 1 : ENDOFCHAIN;
321
+ fatView.setUint32(sectorIdx * 4, next, true);
322
+ sectorIdx++;
323
+ }
324
+ }
325
+ // --- Write Directory ---
326
+ const dirFileOffset = (1 + firstDirSector) * SECTOR_SIZE;
327
+ // Helper: write UTF-16LE name into directory entry
328
+ const writeDirName = (off, name) => {
329
+ for (let i = 0; i < name.length && i < 31; i++) {
330
+ view.setUint16(off + i * 2, name.charCodeAt(i), true);
331
+ }
332
+ // Null terminator
333
+ view.setUint16(off + name.length * 2, 0, true);
334
+ // Name size in bytes (including null terminator)
335
+ view.setUint16(off + 64, (name.length + 1) * 2, true);
336
+ };
337
+ // Root Entry (index 0)
338
+ const rootOff = dirFileOffset;
339
+ writeDirName(rootOff, "Root Entry");
340
+ output[rootOff + 66] = 5; // type = root storage
341
+ output[rootOff + 67] = 1; // color = black
342
+ // Child (left/right/child SIDs) - set up a simple tree
343
+ view.setUint32(rootOff + 68, 0xffffffff, true); // left sibling
344
+ view.setUint32(rootOff + 72, 0xffffffff, true); // right sibling
345
+ // Root entry child points to first entry (or 0xFFFFFFFF if none)
346
+ if (entries.length > 0) {
347
+ // Build a balanced-ish tree: use the middle entry as child
348
+ const rootChild = entries.length === 1 ? 1 : Math.ceil(entries.length / 2);
349
+ view.setUint32(rootOff + 76, rootChild, true);
350
+ }
351
+ else {
352
+ view.setUint32(rootOff + 76, 0xffffffff, true);
353
+ }
354
+ // Start sector = ENDOFCHAIN (no mini-stream)
355
+ view.setUint32(rootOff + 116, ENDOFCHAIN, true);
356
+ // Size = 0
357
+ view.setUint32(rootOff + 120, 0, true);
358
+ // Stream entries (index 1..N)
359
+ // Build as a red-black tree: simple approach — balanced binary tree
360
+ // For small entry counts (2-3), just arrange siblings
361
+ const buildTree = (indices) => {
362
+ // Map each entry to its left/right sibling
363
+ const nodes = indices.map(idx => ({
364
+ leftSib: 0xffffffff,
365
+ rightSib: 0xffffffff,
366
+ root: idx
367
+ }));
368
+ if (indices.length <= 1) {
369
+ return nodes;
370
+ }
371
+ // Simple sorted insertion: entry at mid is root, left half is left subtree, right half is right subtree
372
+ const assignTree = (arr) => {
373
+ if (arr.length === 0) {
374
+ return 0xffffffff;
375
+ }
376
+ const mid = Math.floor(arr.length / 2);
377
+ const midIdx = arr[mid];
378
+ const nodeEntry = nodes.find(n => n.root === midIdx);
379
+ nodeEntry.leftSib = assignTree(arr.slice(0, mid));
380
+ nodeEntry.rightSib = assignTree(arr.slice(mid + 1));
381
+ return midIdx;
382
+ };
383
+ assignTree(indices);
384
+ return nodes;
385
+ };
386
+ const dirIndices = entries.map((_, i) => i + 1); // 1-based directory indices
387
+ const treeNodes = buildTree(dirIndices);
388
+ for (let e = 0; e < entries.length; e++) {
389
+ const entryOff = dirFileOffset + (e + 1) * DIR_ENTRY_SIZE;
390
+ writeDirName(entryOff, entries[e].name);
391
+ output[entryOff + 66] = 2; // type = stream
392
+ output[entryOff + 67] = 1; // color = black
393
+ const node = treeNodes.find(n => n.root === e + 1);
394
+ view.setUint32(entryOff + 68, node.leftSib, true); // left sibling
395
+ view.setUint32(entryOff + 72, node.rightSib, true); // right sibling
396
+ view.setUint32(entryOff + 76, 0xffffffff, true); // child (streams have none)
397
+ // Start sector
398
+ view.setUint32(entryOff + 116, entryStartSectors[e], true);
399
+ // Size (32-bit for v3)
400
+ view.setUint32(entryOff + 120, entries[e].data.length, true);
401
+ }
402
+ // Update root entry child to the tree root
403
+ if (entries.length > 0) {
404
+ const sortedIndices = dirIndices.slice();
405
+ const mid = Math.floor(sortedIndices.length / 2);
406
+ view.setUint32(rootOff + 76, sortedIndices[mid], true);
407
+ }
408
+ // --- Write Data Sectors ---
409
+ for (let e = 0; e < entries.length; e++) {
410
+ const dataFileOffset = (1 + entryStartSectors[e]) * SECTOR_SIZE;
411
+ output.set(entries[e].data, dataFileOffset);
412
+ }
413
+ return output;
414
+ }
@@ -14,12 +14,12 @@
14
14
  * - Detection and extraction of signature metadata
15
15
  * - Preservation of signatures through round-trip (via opaqueParts)
16
16
  *
17
- * Note: Creating new signatures requires X.509 certificate handling and
18
- * is outside the scope of this module. Consider using a dedicated signing
19
- * tool for the actual signing step.
17
+ * Note: This module does NOT validate signature integrity (would require
18
+ * full XMLDSig + Canonical XML implementation). Signatures are preserved
19
+ * verbatim but become invalid if the package contents change.
20
20
  *
21
21
  * References:
22
- * - OPC: Open Packaging Conventions (ECMA-376 Part 2)
22
+ * - MS-OFFCRYPTO §3.2.6 Digital Signatures
23
23
  * - XMLDSig: https://www.w3.org/TR/xmldsig-core/
24
24
  */
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -27,6 +27,9 @@ exports.hasDigitalSignatures = hasDigitalSignatures;
27
27
  exports.parseSignatureXml = parseSignatureXml;
28
28
  exports.extractSignatures = extractSignatures;
29
29
  exports.isWellFormedSignature = isWellFormedSignature;
30
+ const encode_1 = require("../../xml/encode.js");
31
+ const internal_utils_1 = require("../core/internal-utils");
32
+ const opc_paths_1 = require("../core/opc-paths");
30
33
  /**
31
34
  * Check if a document has digital signatures.
32
35
  *
@@ -46,33 +49,34 @@ function hasDigitalSignatures(opaquePaths) {
46
49
  function parseSignatureXml(xmlStr, fileName) {
47
50
  const info = {
48
51
  rawXml: xmlStr,
49
- fileName
52
+ fileName,
53
+ cryptographicStatus: "not-verified"
50
54
  };
51
55
  // Extract Office-specific metadata from <SignatureInfoV1>
52
56
  const sigTextMatch = /<SignatureText[^>]*>([^<]*)<\/SignatureText>/.exec(xmlStr);
53
57
  if (sigTextMatch) {
54
- info.signer = decodeEntities(sigTextMatch[1]);
58
+ info.signer = (0, encode_1.xmlDecode)(sigTextMatch[1]);
55
59
  }
56
60
  const sigCommentsMatch = /<SignatureComments[^>]*>([^<]*)<\/SignatureComments>/.exec(xmlStr);
57
61
  if (sigCommentsMatch) {
58
- info.signatureComments = decodeEntities(sigCommentsMatch[1]);
62
+ info.signatureComments = (0, encode_1.xmlDecode)(sigCommentsMatch[1]);
59
63
  }
60
64
  const purposeMatch = /<SignaturePurpose[^>]*>([^<]*)<\/SignaturePurpose>/.exec(xmlStr);
61
65
  if (purposeMatch) {
62
- info.purpose = decodeEntities(purposeMatch[1]);
66
+ info.purpose = (0, encode_1.xmlDecode)(purposeMatch[1]);
63
67
  }
64
68
  const dateMatch = /<SignatureDate[^>]*>([^<]*)<\/SignatureDate>/.exec(xmlStr);
65
69
  if (dateMatch) {
66
- info.signDate = dateMatch[1];
70
+ info.signDate = (0, encode_1.xmlDecode)(dateMatch[1]);
67
71
  }
68
72
  const providerMatch = /<SignatureProviderUrl[^>]*>([^<]*)<\/SignatureProviderUrl>/.exec(xmlStr);
69
73
  if (providerMatch) {
70
- info.providerUrl = decodeEntities(providerMatch[1]);
74
+ info.providerUrl = (0, encode_1.xmlDecode)(providerMatch[1]);
71
75
  }
72
76
  // Commitment type
73
77
  const commitMatch = /<CommitmentType[^>]*>\s*<CommitmentTypeIndication[^>]*>\s*<CommitmentTypeId>([^<]*)<\/CommitmentTypeId>/.exec(xmlStr);
74
78
  if (commitMatch) {
75
- info.commitmentType = commitMatch[1];
79
+ info.commitmentType = (0, encode_1.xmlDecode)(commitMatch[1]);
76
80
  }
77
81
  // Extract signature value (base64)
78
82
  const sigValMatch = /<SignatureValue[^>]*>([^]*?)<\/SignatureValue>/.exec(xmlStr);
@@ -82,15 +86,15 @@ function parseSignatureXml(xmlStr, fileName) {
82
86
  // Certificate details from <X509Data>
83
87
  const certSubjectMatch = /<X509SubjectName[^>]*>([^<]*)<\/X509SubjectName>/.exec(xmlStr);
84
88
  if (certSubjectMatch) {
85
- info.certificateSubject = decodeEntities(certSubjectMatch[1]);
89
+ info.certificateSubject = (0, encode_1.xmlDecode)(certSubjectMatch[1]);
86
90
  }
87
91
  const certIssuerMatch = /<X509IssuerName[^>]*>([^<]*)<\/X509IssuerName>/.exec(xmlStr);
88
92
  if (certIssuerMatch) {
89
- info.certificateIssuer = decodeEntities(certIssuerMatch[1]);
93
+ info.certificateIssuer = (0, encode_1.xmlDecode)(certIssuerMatch[1]);
90
94
  }
91
95
  const certSerialMatch = /<X509SerialNumber[^>]*>([^<]*)<\/X509SerialNumber>/.exec(xmlStr);
92
96
  if (certSerialMatch) {
93
- info.certificateSerialNumber = certSerialMatch[1];
97
+ info.certificateSerialNumber = (0, encode_1.xmlDecode)(certSerialMatch[1]);
94
98
  }
95
99
  return info;
96
100
  }
@@ -105,36 +109,32 @@ function extractSignatures(opaqueParts) {
105
109
  return [];
106
110
  }
107
111
  const signatures = [];
108
- const decoder = new TextDecoder("utf-8");
109
112
  for (const part of opaqueParts) {
110
113
  if (part.path.startsWith("_xmlsignatures/sig") && part.path.endsWith(".xml")) {
111
- const xmlStr = decoder.decode(part.data);
112
- const fileName = part.path.split("/").pop() ?? "";
114
+ const xmlStr = internal_utils_1.utf8Decoder.decode(part.data);
115
+ const fileName = (0, opc_paths_1.getFileName)(part.path);
113
116
  signatures.push(parseSignatureXml(xmlStr, fileName));
114
117
  }
115
118
  }
116
119
  return signatures;
117
120
  }
118
121
  /**
119
- * Verify that a digital signature's structural integrity is intact.
122
+ * Check that a parsed signature has the structural elements XMLDSig
123
+ * requires (`Signature`, `SignedInfo`, `SignatureValue`, `KeyInfo`).
120
124
  *
121
- * Note: This does NOT verify the cryptographic signaturethat requires
122
- * access to the signer's public key and a full XMLDSig implementation.
123
- * Use a dedicated XMLDSig library for cryptographic verification.
125
+ * This is **not** a cryptographic checksee `cryptographicStatus`. It is
126
+ * also tolerant of namespace prefixes (`<ds:Signature>` etc.) which the
127
+ * previous implementation missed.
124
128
  *
125
- * @returns True if the signature structure is well-formed.
129
+ * @returns True if the signature XML carries the required elements.
126
130
  */
127
131
  function isWellFormedSignature(info) {
128
- return (info.rawXml.includes("<Signature ") &&
129
- info.rawXml.includes("<SignedInfo") &&
130
- info.rawXml.includes("<SignatureValue") &&
131
- info.rawXml.includes("<KeyInfo"));
132
- }
133
- function decodeEntities(s) {
134
- return s
135
- .replace(/&lt;/g, "<")
136
- .replace(/&gt;/g, ">")
137
- .replace(/&quot;/g, '"')
138
- .replace(/&apos;/g, "'")
139
- .replace(/&amp;/g, "&");
132
+ // Allow optional namespace prefix and either an attribute-bearing or
133
+ // self-closing form — XMLDSig signatures in real DOCX files commonly
134
+ // use `<ds:Signature ...>` rather than the default-namespace form.
135
+ const hasElement = (local) => new RegExp(`<(?:[\\w-]+:)?${local}(?:\\s|>|/>)`).test(info.rawXml);
136
+ return (hasElement("Signature") &&
137
+ hasElement("SignedInfo") &&
138
+ hasElement("SignatureValue") &&
139
+ hasElement("KeyInfo"));
140
140
  }