docxmlater 10.4.0 → 11.0.4

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 (699) hide show
  1. package/README.md +3 -3
  2. package/dist/constants/legacyCompatFlags.d.ts +1 -1
  3. package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
  4. package/dist/constants/legacyCompatFlags.js.map +1 -1
  5. package/dist/core/Document.d.ts +75 -67
  6. package/dist/core/Document.d.ts.map +1 -1
  7. package/dist/core/Document.js +618 -414
  8. package/dist/core/Document.js.map +1 -1
  9. package/dist/core/DocumentContent.d.ts +11 -10
  10. package/dist/core/DocumentContent.d.ts.map +1 -1
  11. package/dist/core/DocumentContent.js +19 -19
  12. package/dist/core/DocumentContent.js.map +1 -1
  13. package/dist/core/DocumentEvents.d.ts +39 -0
  14. package/dist/core/DocumentEvents.d.ts.map +1 -0
  15. package/dist/core/DocumentEvents.js +51 -0
  16. package/dist/core/DocumentEvents.js.map +1 -0
  17. package/dist/core/DocumentGenerator.d.ts +11 -11
  18. package/dist/core/DocumentGenerator.d.ts.map +1 -1
  19. package/dist/core/DocumentGenerator.js +72 -52
  20. package/dist/core/DocumentGenerator.js.map +1 -1
  21. package/dist/core/DocumentParser.d.ts +15 -15
  22. package/dist/core/DocumentParser.d.ts.map +1 -1
  23. package/dist/core/DocumentParser.js +2100 -1076
  24. package/dist/core/DocumentParser.js.map +1 -1
  25. package/dist/core/DocumentValidator.d.ts +3 -3
  26. package/dist/core/DocumentValidator.d.ts.map +1 -1
  27. package/dist/core/DocumentValidator.js +31 -31
  28. package/dist/core/DocumentValidator.js.map +1 -1
  29. package/dist/core/ElementRegistry.d.ts +22 -0
  30. package/dist/core/ElementRegistry.d.ts.map +1 -0
  31. package/dist/core/ElementRegistry.js +27 -0
  32. package/dist/core/ElementRegistry.js.map +1 -0
  33. package/dist/core/Relationship.js +4 -4
  34. package/dist/core/Relationship.js.map +1 -1
  35. package/dist/core/RelationshipManager.d.ts +1 -1
  36. package/dist/core/RelationshipManager.d.ts.map +1 -1
  37. package/dist/core/RelationshipManager.js +32 -32
  38. package/dist/core/RelationshipManager.js.map +1 -1
  39. package/dist/elements/AlternateContent.d.ts +1 -1
  40. package/dist/elements/AlternateContent.d.ts.map +1 -1
  41. package/dist/elements/AlternateContent.js.map +1 -1
  42. package/dist/elements/Bookmark.d.ts +6 -1
  43. package/dist/elements/Bookmark.d.ts.map +1 -1
  44. package/dist/elements/Bookmark.js +19 -3
  45. package/dist/elements/Bookmark.js.map +1 -1
  46. package/dist/elements/BookmarkManager.d.ts +1 -1
  47. package/dist/elements/BookmarkManager.d.ts.map +1 -1
  48. package/dist/elements/BookmarkManager.js +7 -7
  49. package/dist/elements/BookmarkManager.js.map +1 -1
  50. package/dist/elements/Comment.d.ts +2 -2
  51. package/dist/elements/Comment.d.ts.map +1 -1
  52. package/dist/elements/Comment.js +4 -4
  53. package/dist/elements/Comment.js.map +1 -1
  54. package/dist/elements/CommentManager.d.ts +2 -2
  55. package/dist/elements/CommentManager.d.ts.map +1 -1
  56. package/dist/elements/CommentManager.js +9 -9
  57. package/dist/elements/CommentManager.js.map +1 -1
  58. package/dist/elements/CommonTypes.d.ts +9 -4
  59. package/dist/elements/CommonTypes.d.ts.map +1 -1
  60. package/dist/elements/CommonTypes.js +1 -0
  61. package/dist/elements/CommonTypes.js.map +1 -1
  62. package/dist/elements/CustomXml.d.ts +1 -1
  63. package/dist/elements/CustomXml.d.ts.map +1 -1
  64. package/dist/elements/CustomXml.js.map +1 -1
  65. package/dist/elements/Endnote.d.ts +2 -2
  66. package/dist/elements/Endnote.d.ts.map +1 -1
  67. package/dist/elements/Endnote.js +9 -9
  68. package/dist/elements/Endnote.js.map +1 -1
  69. package/dist/elements/EndnoteManager.d.ts +1 -1
  70. package/dist/elements/EndnoteManager.d.ts.map +1 -1
  71. package/dist/elements/EndnoteManager.js +11 -11
  72. package/dist/elements/EndnoteManager.js.map +1 -1
  73. package/dist/elements/Field.d.ts +9 -5
  74. package/dist/elements/Field.d.ts.map +1 -1
  75. package/dist/elements/Field.js +21 -9
  76. package/dist/elements/Field.js.map +1 -1
  77. package/dist/elements/FieldHelpers.d.ts +1 -1
  78. package/dist/elements/FieldHelpers.d.ts.map +1 -1
  79. package/dist/elements/FieldHelpers.js +10 -10
  80. package/dist/elements/FieldHelpers.js.map +1 -1
  81. package/dist/elements/Footer.d.ts +3 -3
  82. package/dist/elements/Footer.d.ts.map +1 -1
  83. package/dist/elements/Footer.js +5 -5
  84. package/dist/elements/Footer.js.map +1 -1
  85. package/dist/elements/Footnote.d.ts +2 -2
  86. package/dist/elements/Footnote.d.ts.map +1 -1
  87. package/dist/elements/Footnote.js +9 -9
  88. package/dist/elements/Footnote.js.map +1 -1
  89. package/dist/elements/FootnoteManager.d.ts +1 -1
  90. package/dist/elements/FootnoteManager.d.ts.map +1 -1
  91. package/dist/elements/FootnoteManager.js +11 -11
  92. package/dist/elements/FootnoteManager.js.map +1 -1
  93. package/dist/elements/Header.d.ts +3 -3
  94. package/dist/elements/Header.d.ts.map +1 -1
  95. package/dist/elements/Header.js +5 -5
  96. package/dist/elements/Header.js.map +1 -1
  97. package/dist/elements/HeaderFooterManager.d.ts +2 -2
  98. package/dist/elements/HeaderFooterManager.d.ts.map +1 -1
  99. package/dist/elements/HeaderFooterManager.js.map +1 -1
  100. package/dist/elements/Hyperlink.d.ts +5 -5
  101. package/dist/elements/Hyperlink.d.ts.map +1 -1
  102. package/dist/elements/Hyperlink.js +29 -29
  103. package/dist/elements/Hyperlink.js.map +1 -1
  104. package/dist/elements/Image.d.ts +1 -1
  105. package/dist/elements/Image.d.ts.map +1 -1
  106. package/dist/elements/Image.js +67 -67
  107. package/dist/elements/Image.js.map +1 -1
  108. package/dist/elements/ImageManager.d.ts +1 -1
  109. package/dist/elements/ImageManager.d.ts.map +1 -1
  110. package/dist/elements/ImageManager.js +4 -4
  111. package/dist/elements/ImageManager.js.map +1 -1
  112. package/dist/elements/ImageRun.d.ts +3 -3
  113. package/dist/elements/ImageRun.d.ts.map +1 -1
  114. package/dist/elements/ImageRun.js +2 -2
  115. package/dist/elements/ImageRun.js.map +1 -1
  116. package/dist/elements/MathElement.d.ts +1 -1
  117. package/dist/elements/MathElement.d.ts.map +1 -1
  118. package/dist/elements/MathElement.js.map +1 -1
  119. package/dist/elements/Paragraph.d.ts +34 -19
  120. package/dist/elements/Paragraph.d.ts.map +1 -1
  121. package/dist/elements/Paragraph.js +286 -231
  122. package/dist/elements/Paragraph.js.map +1 -1
  123. package/dist/elements/PreservedElement.d.ts +1 -1
  124. package/dist/elements/PreservedElement.d.ts.map +1 -1
  125. package/dist/elements/PreservedElement.js.map +1 -1
  126. package/dist/elements/PropertyChangeTypes.d.ts +2 -2
  127. package/dist/elements/PropertyChangeTypes.d.ts.map +1 -1
  128. package/dist/elements/PropertyChangeTypes.js.map +1 -1
  129. package/dist/elements/RangeMarker.d.ts +14 -1
  130. package/dist/elements/RangeMarker.d.ts.map +1 -1
  131. package/dist/elements/RangeMarker.js +46 -8
  132. package/dist/elements/RangeMarker.js.map +1 -1
  133. package/dist/elements/RegisteredBodyElement.d.ts +15 -0
  134. package/dist/elements/RegisteredBodyElement.d.ts.map +1 -0
  135. package/dist/elements/RegisteredBodyElement.js +44 -0
  136. package/dist/elements/RegisteredBodyElement.js.map +1 -0
  137. package/dist/elements/Revision.d.ts +8 -8
  138. package/dist/elements/Revision.d.ts.map +1 -1
  139. package/dist/elements/Revision.js +12 -12
  140. package/dist/elements/Revision.js.map +1 -1
  141. package/dist/elements/RevisionContent.d.ts +3 -3
  142. package/dist/elements/RevisionContent.d.ts.map +1 -1
  143. package/dist/elements/RevisionContent.js.map +1 -1
  144. package/dist/elements/RevisionManager.d.ts +2 -2
  145. package/dist/elements/RevisionManager.d.ts.map +1 -1
  146. package/dist/elements/RevisionManager.js +2 -2
  147. package/dist/elements/RevisionManager.js.map +1 -1
  148. package/dist/elements/Run.d.ts +16 -10
  149. package/dist/elements/Run.d.ts.map +1 -1
  150. package/dist/elements/Run.js +199 -173
  151. package/dist/elements/Run.js.map +1 -1
  152. package/dist/elements/Section.d.ts +4 -2
  153. package/dist/elements/Section.d.ts.map +1 -1
  154. package/dist/elements/Section.js +152 -145
  155. package/dist/elements/Section.js.map +1 -1
  156. package/dist/elements/Shape.d.ts +3 -3
  157. package/dist/elements/Shape.d.ts.map +1 -1
  158. package/dist/elements/Shape.js +12 -12
  159. package/dist/elements/Shape.js.map +1 -1
  160. package/dist/elements/StructuredDocumentTag.d.ts +3 -3
  161. package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
  162. package/dist/elements/StructuredDocumentTag.js +39 -39
  163. package/dist/elements/StructuredDocumentTag.js.map +1 -1
  164. package/dist/elements/Table.d.ts +16 -10
  165. package/dist/elements/Table.d.ts.map +1 -1
  166. package/dist/elements/Table.js +118 -89
  167. package/dist/elements/Table.js.map +1 -1
  168. package/dist/elements/TableCell.d.ts +11 -11
  169. package/dist/elements/TableCell.d.ts.map +1 -1
  170. package/dist/elements/TableCell.js +108 -78
  171. package/dist/elements/TableCell.js.map +1 -1
  172. package/dist/elements/TableGridChange.d.ts +1 -1
  173. package/dist/elements/TableGridChange.d.ts.map +1 -1
  174. package/dist/elements/TableGridChange.js +3 -3
  175. package/dist/elements/TableGridChange.js.map +1 -1
  176. package/dist/elements/TableOfContents.d.ts +1 -1
  177. package/dist/elements/TableOfContents.d.ts.map +1 -1
  178. package/dist/elements/TableOfContents.js +2 -2
  179. package/dist/elements/TableOfContents.js.map +1 -1
  180. package/dist/elements/TableOfContentsElement.d.ts +2 -2
  181. package/dist/elements/TableOfContentsElement.d.ts.map +1 -1
  182. package/dist/elements/TableOfContentsElement.js +5 -5
  183. package/dist/elements/TableOfContentsElement.js.map +1 -1
  184. package/dist/elements/TableRow.d.ts +18 -7
  185. package/dist/elements/TableRow.d.ts.map +1 -1
  186. package/dist/elements/TableRow.js +127 -74
  187. package/dist/elements/TableRow.js.map +1 -1
  188. package/dist/elements/TextBox.d.ts +4 -4
  189. package/dist/elements/TextBox.d.ts.map +1 -1
  190. package/dist/elements/TextBox.js +6 -6
  191. package/dist/elements/TextBox.js.map +1 -1
  192. package/dist/esm/constants/legacyCompatFlags.js +97 -0
  193. package/dist/esm/constants/legacyCompatFlags.js.map +1 -0
  194. package/dist/esm/constants/limits.js +36 -0
  195. package/dist/esm/constants/limits.js.map +1 -0
  196. package/dist/esm/core/Document.js +8498 -0
  197. package/dist/esm/core/Document.js.map +1 -0
  198. package/dist/esm/core/DocumentContent.js +190 -0
  199. package/dist/esm/core/DocumentContent.js.map +1 -0
  200. package/dist/esm/core/DocumentEvents.js +47 -0
  201. package/dist/esm/core/DocumentEvents.js.map +1 -0
  202. package/dist/esm/core/DocumentGenerator.js +764 -0
  203. package/dist/esm/core/DocumentGenerator.js.map +1 -0
  204. package/dist/esm/core/DocumentIdManager.js +67 -0
  205. package/dist/esm/core/DocumentIdManager.js.map +1 -0
  206. package/dist/esm/core/DocumentParser.js +8760 -0
  207. package/dist/esm/core/DocumentParser.js.map +1 -0
  208. package/dist/esm/core/DocumentValidator.js +222 -0
  209. package/dist/esm/core/DocumentValidator.js.map +1 -0
  210. package/dist/esm/core/ElementRegistry.js +24 -0
  211. package/dist/esm/core/ElementRegistry.js.map +1 -0
  212. package/dist/esm/core/Relationship.js +177 -0
  213. package/dist/esm/core/Relationship.js.map +1 -0
  214. package/dist/esm/core/RelationshipManager.js +202 -0
  215. package/dist/esm/core/RelationshipManager.js.map +1 -0
  216. package/dist/esm/elements/AlternateContent.js +19 -0
  217. package/dist/esm/elements/AlternateContent.js.map +1 -0
  218. package/dist/esm/elements/Bookmark.js +115 -0
  219. package/dist/esm/elements/Bookmark.js.map +1 -0
  220. package/dist/esm/elements/BookmarkManager.js +99 -0
  221. package/dist/esm/elements/BookmarkManager.js.map +1 -0
  222. package/dist/esm/elements/Comment.js +181 -0
  223. package/dist/esm/elements/Comment.js.map +1 -0
  224. package/dist/esm/elements/CommentManager.js +233 -0
  225. package/dist/esm/elements/CommentManager.js.map +1 -0
  226. package/dist/esm/elements/CommonTypes.js +106 -0
  227. package/dist/esm/elements/CommonTypes.js.map +1 -0
  228. package/dist/esm/elements/CustomXml.js +19 -0
  229. package/dist/esm/elements/CustomXml.js.map +1 -0
  230. package/dist/esm/elements/Endnote.js +107 -0
  231. package/dist/esm/elements/Endnote.js.map +1 -0
  232. package/dist/esm/elements/EndnoteManager.js +119 -0
  233. package/dist/esm/elements/EndnoteManager.js.map +1 -0
  234. package/dist/esm/elements/Field.js +856 -0
  235. package/dist/esm/elements/Field.js.map +1 -0
  236. package/dist/esm/elements/FieldHelpers.js +134 -0
  237. package/dist/esm/elements/FieldHelpers.js.map +1 -0
  238. package/dist/esm/elements/FontManager.js +158 -0
  239. package/dist/esm/elements/FontManager.js.map +1 -0
  240. package/dist/esm/elements/Footer.js +141 -0
  241. package/dist/esm/elements/Footer.js.map +1 -0
  242. package/dist/esm/elements/Footnote.js +107 -0
  243. package/dist/esm/elements/Footnote.js.map +1 -0
  244. package/dist/esm/elements/FootnoteManager.js +119 -0
  245. package/dist/esm/elements/FootnoteManager.js.map +1 -0
  246. package/dist/esm/elements/Header.js +141 -0
  247. package/dist/esm/elements/Header.js.map +1 -0
  248. package/dist/esm/elements/HeaderFooterManager.js +87 -0
  249. package/dist/esm/elements/HeaderFooterManager.js.map +1 -0
  250. package/dist/esm/elements/Hyperlink.js +586 -0
  251. package/dist/esm/elements/Hyperlink.js.map +1 -0
  252. package/dist/esm/elements/Image.js +1288 -0
  253. package/dist/esm/elements/Image.js.map +1 -0
  254. package/dist/esm/elements/ImageManager.js +223 -0
  255. package/dist/esm/elements/ImageManager.js.map +1 -0
  256. package/dist/esm/elements/ImageRun.js +29 -0
  257. package/dist/esm/elements/ImageRun.js.map +1 -0
  258. package/dist/esm/elements/MathElement.js +37 -0
  259. package/dist/esm/elements/MathElement.js.map +1 -0
  260. package/dist/esm/elements/Paragraph.js +2308 -0
  261. package/dist/esm/elements/Paragraph.js.map +1 -0
  262. package/dist/esm/elements/PreservedElement.js +29 -0
  263. package/dist/esm/elements/PreservedElement.js.map +1 -0
  264. package/dist/esm/elements/PropertyChangeTypes.js +53 -0
  265. package/dist/esm/elements/PropertyChangeTypes.js.map +1 -0
  266. package/dist/esm/elements/RangeMarker.js +219 -0
  267. package/dist/esm/elements/RangeMarker.js.map +1 -0
  268. package/dist/esm/elements/RegisteredBodyElement.js +40 -0
  269. package/dist/esm/elements/RegisteredBodyElement.js.map +1 -0
  270. package/dist/esm/elements/Revision.js +498 -0
  271. package/dist/esm/elements/Revision.js.map +1 -0
  272. package/dist/esm/elements/RevisionContent.js +18 -0
  273. package/dist/esm/elements/RevisionContent.js.map +1 -0
  274. package/dist/esm/elements/RevisionManager.js +486 -0
  275. package/dist/esm/elements/RevisionManager.js.map +1 -0
  276. package/dist/esm/elements/Run.js +1465 -0
  277. package/dist/esm/elements/Run.js.map +1 -0
  278. package/dist/esm/elements/Section.js +978 -0
  279. package/dist/esm/elements/Section.js.map +1 -0
  280. package/dist/esm/elements/Shape.js +493 -0
  281. package/dist/esm/elements/Shape.js.map +1 -0
  282. package/dist/esm/elements/StructuredDocumentTag.js +471 -0
  283. package/dist/esm/elements/StructuredDocumentTag.js.map +1 -0
  284. package/dist/esm/elements/Table.js +1456 -0
  285. package/dist/esm/elements/Table.js.map +1 -0
  286. package/dist/esm/elements/TableCell.js +835 -0
  287. package/dist/esm/elements/TableCell.js.map +1 -0
  288. package/dist/esm/elements/TableGridChange.js +52 -0
  289. package/dist/esm/elements/TableGridChange.js.map +1 -0
  290. package/dist/esm/elements/TableOfContents.js +389 -0
  291. package/dist/esm/elements/TableOfContents.js.map +1 -0
  292. package/dist/esm/elements/TableOfContentsElement.js +29 -0
  293. package/dist/esm/elements/TableOfContentsElement.js.map +1 -0
  294. package/dist/esm/elements/TableRow.js +555 -0
  295. package/dist/esm/elements/TableRow.js.map +1 -0
  296. package/dist/esm/elements/TextBox.js +459 -0
  297. package/dist/esm/elements/TextBox.js.map +1 -0
  298. package/dist/esm/formatting/AbstractNumbering.js +325 -0
  299. package/dist/esm/formatting/AbstractNumbering.js.map +1 -0
  300. package/dist/esm/formatting/NumberingInstance.js +150 -0
  301. package/dist/esm/formatting/NumberingInstance.js.map +1 -0
  302. package/dist/esm/formatting/NumberingLevel.js +608 -0
  303. package/dist/esm/formatting/NumberingLevel.js.map +1 -0
  304. package/dist/esm/formatting/NumberingManager.js +423 -0
  305. package/dist/esm/formatting/NumberingManager.js.map +1 -0
  306. package/dist/esm/formatting/Style.js +1151 -0
  307. package/dist/esm/formatting/Style.js.map +1 -0
  308. package/dist/esm/formatting/StylesManager.js +557 -0
  309. package/dist/esm/formatting/StylesManager.js.map +1 -0
  310. package/dist/esm/helpers/CleanupHelper.js +350 -0
  311. package/dist/esm/helpers/CleanupHelper.js.map +1 -0
  312. package/dist/esm/images/ImageOptimizer.js +161 -0
  313. package/dist/esm/images/ImageOptimizer.js.map +1 -0
  314. package/dist/esm/index.js +75 -0
  315. package/dist/esm/index.js.map +1 -0
  316. package/dist/esm/internal.js +16 -0
  317. package/dist/esm/internal.js.map +1 -0
  318. package/dist/esm/managers/DrawingManager.js +163 -0
  319. package/dist/esm/managers/DrawingManager.js.map +1 -0
  320. package/dist/esm/package.json +3 -0
  321. package/dist/esm/processors/ChangelogGenerator.js +970 -0
  322. package/dist/esm/processors/ChangelogGenerator.js.map +1 -0
  323. package/dist/esm/processors/CompatibilityUpgrader.js +130 -0
  324. package/dist/esm/processors/CompatibilityUpgrader.js.map +1 -0
  325. package/dist/esm/processors/InMemoryRevisionAcceptor.js +530 -0
  326. package/dist/esm/processors/InMemoryRevisionAcceptor.js.map +1 -0
  327. package/dist/esm/processors/MoveOperationHelper.js +57 -0
  328. package/dist/esm/processors/MoveOperationHelper.js.map +1 -0
  329. package/dist/esm/processors/RevisionAwareProcessor.js +232 -0
  330. package/dist/esm/processors/RevisionAwareProcessor.js.map +1 -0
  331. package/dist/esm/processors/RevisionWalker.js +278 -0
  332. package/dist/esm/processors/RevisionWalker.js.map +1 -0
  333. package/dist/{utils → esm/processors}/SelectiveRevisionAcceptor.js +81 -42
  334. package/dist/esm/processors/SelectiveRevisionAcceptor.js.map +1 -0
  335. package/dist/esm/processors/ShadingResolver.js +66 -0
  336. package/dist/esm/processors/ShadingResolver.js.map +1 -0
  337. package/dist/esm/processors/acceptRevisions.js +416 -0
  338. package/dist/esm/processors/acceptRevisions.js.map +1 -0
  339. package/dist/esm/processors/cnfStyleDecoder.js +89 -0
  340. package/dist/esm/processors/cnfStyleDecoder.js.map +1 -0
  341. package/dist/esm/processors/stripTrackedChanges.js +201 -0
  342. package/dist/esm/processors/stripTrackedChanges.js.map +1 -0
  343. package/dist/esm/tracking/DocumentTrackingContext.js +531 -0
  344. package/dist/esm/tracking/DocumentTrackingContext.js.map +1 -0
  345. package/dist/esm/tracking/TrackingContext.js +2 -0
  346. package/dist/esm/tracking/TrackingContext.js.map +1 -0
  347. package/dist/esm/types/compatibility-types.js +8 -0
  348. package/dist/esm/types/compatibility-types.js.map +1 -0
  349. package/dist/esm/types/document-types.js +2 -0
  350. package/dist/esm/types/document-types.js.map +1 -0
  351. package/dist/esm/types/formatting.js +2 -0
  352. package/dist/esm/types/formatting.js.map +1 -0
  353. package/dist/esm/types/list-types.js +2 -0
  354. package/dist/esm/types/list-types.js.map +1 -0
  355. package/dist/esm/types/settings-types.js +2 -0
  356. package/dist/esm/types/settings-types.js.map +1 -0
  357. package/dist/esm/types/styleConfig.js +2 -0
  358. package/dist/esm/types/styleConfig.js.map +1 -0
  359. package/dist/esm/utils/KeyedRegistry.js +32 -0
  360. package/dist/esm/utils/KeyedRegistry.js.map +1 -0
  361. package/dist/esm/utils/corruptionDetection.js +155 -0
  362. package/dist/esm/utils/corruptionDetection.js.map +1 -0
  363. package/dist/esm/utils/dateFormatting.js +4 -0
  364. package/dist/esm/utils/dateFormatting.js.map +1 -0
  365. package/dist/esm/utils/deepClone.js +40 -0
  366. package/dist/esm/utils/deepClone.js.map +1 -0
  367. package/dist/esm/utils/deepEqual.js +47 -0
  368. package/dist/esm/utils/deepEqual.js.map +1 -0
  369. package/dist/esm/utils/diagnostics.js +69 -0
  370. package/dist/esm/utils/diagnostics.js.map +1 -0
  371. package/dist/esm/utils/errorHandling.js +36 -0
  372. package/dist/esm/utils/errorHandling.js.map +1 -0
  373. package/dist/esm/utils/formatting.js +93 -0
  374. package/dist/esm/utils/formatting.js.map +1 -0
  375. package/dist/esm/utils/list-detection.js +148 -0
  376. package/dist/esm/utils/list-detection.js.map +1 -0
  377. package/dist/esm/utils/logger.js +205 -0
  378. package/dist/esm/utils/logger.js.map +1 -0
  379. package/dist/esm/utils/parsingHelpers.js +56 -0
  380. package/dist/esm/utils/parsingHelpers.js.map +1 -0
  381. package/dist/esm/utils/textDiff.js +42 -0
  382. package/dist/esm/utils/textDiff.js.map +1 -0
  383. package/dist/esm/utils/units.js +152 -0
  384. package/dist/esm/utils/units.js.map +1 -0
  385. package/dist/esm/utils/validation.js +285 -0
  386. package/dist/esm/utils/validation.js.map +1 -0
  387. package/dist/esm/utils/xmlSanitization.js +54 -0
  388. package/dist/esm/utils/xmlSanitization.js.map +1 -0
  389. package/dist/esm/validation/RevisionAutoFixer.js +340 -0
  390. package/dist/esm/validation/RevisionAutoFixer.js.map +1 -0
  391. package/dist/esm/validation/RevisionValidator.js +240 -0
  392. package/dist/esm/validation/RevisionValidator.js.map +1 -0
  393. package/dist/esm/validation/ValidationRuleRegistry.js +40 -0
  394. package/dist/esm/validation/ValidationRuleRegistry.js.map +1 -0
  395. package/dist/esm/validation/ValidationRules.js +92 -0
  396. package/dist/esm/validation/ValidationRules.js.map +1 -0
  397. package/dist/esm/validation/index.js +4 -0
  398. package/dist/esm/validation/index.js.map +1 -0
  399. package/dist/esm/xml/XMLBuilder.js +434 -0
  400. package/dist/esm/xml/XMLBuilder.js.map +1 -0
  401. package/dist/esm/xml/XMLParser.js +486 -0
  402. package/dist/esm/xml/XMLParser.js.map +1 -0
  403. package/dist/esm/zip/ZipHandler.js +298 -0
  404. package/dist/esm/zip/ZipHandler.js.map +1 -0
  405. package/dist/esm/zip/ZipReader.js +147 -0
  406. package/dist/esm/zip/ZipReader.js.map +1 -0
  407. package/dist/esm/zip/ZipWriter.js +199 -0
  408. package/dist/esm/zip/ZipWriter.js.map +1 -0
  409. package/dist/esm/zip/errors.js +43 -0
  410. package/dist/esm/zip/errors.js.map +1 -0
  411. package/dist/esm/zip/types.js +31 -0
  412. package/dist/esm/zip/types.js.map +1 -0
  413. package/dist/formatting/AbstractNumbering.d.ts +2 -2
  414. package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
  415. package/dist/formatting/AbstractNumbering.js +33 -33
  416. package/dist/formatting/AbstractNumbering.js.map +1 -1
  417. package/dist/formatting/NumberingInstance.d.ts +2 -2
  418. package/dist/formatting/NumberingInstance.d.ts.map +1 -1
  419. package/dist/formatting/NumberingInstance.js +7 -7
  420. package/dist/formatting/NumberingInstance.js.map +1 -1
  421. package/dist/formatting/NumberingLevel.d.ts +11 -2
  422. package/dist/formatting/NumberingLevel.d.ts.map +1 -1
  423. package/dist/formatting/NumberingLevel.js +111 -25
  424. package/dist/formatting/NumberingLevel.js.map +1 -1
  425. package/dist/formatting/NumberingManager.d.ts +4 -4
  426. package/dist/formatting/NumberingManager.d.ts.map +1 -1
  427. package/dist/formatting/NumberingManager.js +28 -28
  428. package/dist/formatting/NumberingManager.js.map +1 -1
  429. package/dist/formatting/Style.d.ts +14 -7
  430. package/dist/formatting/Style.d.ts.map +1 -1
  431. package/dist/formatting/Style.js +309 -112
  432. package/dist/formatting/Style.js.map +1 -1
  433. package/dist/formatting/StylesManager.d.ts +2 -2
  434. package/dist/formatting/StylesManager.d.ts.map +1 -1
  435. package/dist/formatting/StylesManager.js +52 -52
  436. package/dist/formatting/StylesManager.js.map +1 -1
  437. package/dist/helpers/CleanupHelper.d.ts +1 -1
  438. package/dist/helpers/CleanupHelper.d.ts.map +1 -1
  439. package/dist/helpers/CleanupHelper.js +15 -15
  440. package/dist/helpers/CleanupHelper.js.map +1 -1
  441. package/dist/index.d.ts +81 -90
  442. package/dist/index.d.ts.map +1 -1
  443. package/dist/index.js +286 -317
  444. package/dist/index.js.map +1 -1
  445. package/dist/internal.d.ts +16 -0
  446. package/dist/internal.d.ts.map +1 -0
  447. package/dist/internal.js +42 -0
  448. package/dist/internal.js.map +1 -0
  449. package/dist/managers/DrawingManager.d.ts +3 -3
  450. package/dist/managers/DrawingManager.d.ts.map +1 -1
  451. package/dist/managers/DrawingManager.js +12 -12
  452. package/dist/managers/DrawingManager.js.map +1 -1
  453. package/dist/{utils → processors}/ChangelogGenerator.d.ts +2 -2
  454. package/dist/processors/ChangelogGenerator.d.ts.map +1 -0
  455. package/dist/{utils → processors}/ChangelogGenerator.js +2 -2
  456. package/dist/processors/ChangelogGenerator.js.map +1 -0
  457. package/dist/processors/CompatibilityUpgrader.d.ts.map +1 -0
  458. package/dist/{utils → processors}/CompatibilityUpgrader.js +10 -10
  459. package/dist/processors/CompatibilityUpgrader.js.map +1 -0
  460. package/dist/{utils → processors}/InMemoryRevisionAcceptor.d.ts +3 -3
  461. package/dist/processors/InMemoryRevisionAcceptor.d.ts.map +1 -0
  462. package/dist/{utils → processors}/InMemoryRevisionAcceptor.js +84 -27
  463. package/dist/processors/InMemoryRevisionAcceptor.js.map +1 -0
  464. package/dist/{utils → processors}/MoveOperationHelper.d.ts +4 -4
  465. package/dist/processors/MoveOperationHelper.d.ts.map +1 -0
  466. package/dist/{utils → processors}/MoveOperationHelper.js +10 -10
  467. package/dist/processors/MoveOperationHelper.js.map +1 -0
  468. package/dist/{utils → processors}/RevisionAwareProcessor.d.ts +3 -3
  469. package/dist/processors/RevisionAwareProcessor.d.ts.map +1 -0
  470. package/dist/{utils → processors}/RevisionAwareProcessor.js +2 -2
  471. package/dist/processors/RevisionAwareProcessor.js.map +1 -0
  472. package/dist/{utils → processors}/RevisionWalker.d.ts +2 -1
  473. package/dist/processors/RevisionWalker.d.ts.map +1 -0
  474. package/dist/{utils → processors}/RevisionWalker.js +28 -0
  475. package/dist/processors/RevisionWalker.js.map +1 -0
  476. package/dist/{utils → processors}/SelectiveRevisionAcceptor.d.ts +4 -3
  477. package/dist/processors/SelectiveRevisionAcceptor.d.ts.map +1 -0
  478. package/dist/processors/SelectiveRevisionAcceptor.js +402 -0
  479. package/dist/processors/SelectiveRevisionAcceptor.js.map +1 -0
  480. package/dist/processors/ShadingResolver.d.ts +6 -0
  481. package/dist/processors/ShadingResolver.d.ts.map +1 -0
  482. package/dist/{utils → processors}/ShadingResolver.js +2 -2
  483. package/dist/processors/ShadingResolver.js.map +1 -0
  484. package/dist/{utils → processors}/acceptRevisions.d.ts +1 -1
  485. package/dist/processors/acceptRevisions.d.ts.map +1 -0
  486. package/dist/{utils → processors}/acceptRevisions.js +24 -4
  487. package/dist/processors/acceptRevisions.js.map +1 -0
  488. package/dist/{utils → processors}/cnfStyleDecoder.d.ts +1 -1
  489. package/dist/processors/cnfStyleDecoder.d.ts.map +1 -0
  490. package/dist/processors/cnfStyleDecoder.js.map +1 -0
  491. package/dist/processors/stripTrackedChanges.d.ts +3 -0
  492. package/dist/processors/stripTrackedChanges.d.ts.map +1 -0
  493. package/dist/{utils → processors}/stripTrackedChanges.js +16 -6
  494. package/dist/processors/stripTrackedChanges.js.map +1 -0
  495. package/dist/tracking/DocumentTrackingContext.d.ts +4 -4
  496. package/dist/tracking/DocumentTrackingContext.d.ts.map +1 -1
  497. package/dist/tracking/DocumentTrackingContext.js +38 -43
  498. package/dist/tracking/DocumentTrackingContext.js.map +1 -1
  499. package/dist/tracking/TrackingContext.d.ts +8 -8
  500. package/dist/tracking/TrackingContext.d.ts.map +1 -1
  501. package/dist/tracking/TrackingContext.js.map +1 -1
  502. package/dist/types/document-types.d.ts +28 -0
  503. package/dist/types/document-types.d.ts.map +1 -0
  504. package/dist/types/document-types.js +3 -0
  505. package/dist/types/document-types.js.map +1 -0
  506. package/dist/types/formatting.d.ts +4 -4
  507. package/dist/types/formatting.d.ts.map +1 -1
  508. package/dist/types/formatting.js.map +1 -1
  509. package/dist/types/settings-types.d.ts +6 -0
  510. package/dist/types/settings-types.d.ts.map +1 -1
  511. package/dist/types/settings-types.js.map +1 -1
  512. package/dist/utils/KeyedRegistry.d.ts +13 -0
  513. package/dist/utils/KeyedRegistry.d.ts.map +1 -0
  514. package/dist/utils/KeyedRegistry.js +36 -0
  515. package/dist/utils/KeyedRegistry.js.map +1 -0
  516. package/dist/utils/corruptionDetection.d.ts +1 -1
  517. package/dist/utils/corruptionDetection.d.ts.map +1 -1
  518. package/dist/utils/corruptionDetection.js +4 -4
  519. package/dist/utils/corruptionDetection.js.map +1 -1
  520. package/dist/utils/deepEqual.d.ts +2 -0
  521. package/dist/utils/deepEqual.d.ts.map +1 -0
  522. package/dist/utils/deepEqual.js +50 -0
  523. package/dist/utils/deepEqual.js.map +1 -0
  524. package/dist/utils/list-detection.d.ts +2 -2
  525. package/dist/utils/list-detection.d.ts.map +1 -1
  526. package/dist/utils/list-detection.js.map +1 -1
  527. package/dist/utils/parsingHelpers.d.ts +1 -1
  528. package/dist/utils/parsingHelpers.d.ts.map +1 -1
  529. package/dist/utils/parsingHelpers.js +2 -2
  530. package/dist/utils/parsingHelpers.js.map +1 -1
  531. package/dist/utils/validation.js +7 -7
  532. package/dist/utils/validation.js.map +1 -1
  533. package/dist/utils/xmlSanitization.js +2 -2
  534. package/dist/utils/xmlSanitization.js.map +1 -1
  535. package/dist/validation/RevisionAutoFixer.d.ts +4 -4
  536. package/dist/validation/RevisionAutoFixer.d.ts.map +1 -1
  537. package/dist/validation/RevisionAutoFixer.js +11 -11
  538. package/dist/validation/RevisionAutoFixer.js.map +1 -1
  539. package/dist/validation/RevisionValidator.d.ts +5 -4
  540. package/dist/validation/RevisionValidator.d.ts.map +1 -1
  541. package/dist/validation/RevisionValidator.js +29 -30
  542. package/dist/validation/RevisionValidator.js.map +1 -1
  543. package/dist/validation/ValidationRuleRegistry.d.ts +27 -0
  544. package/dist/validation/ValidationRuleRegistry.d.ts.map +1 -0
  545. package/dist/validation/ValidationRuleRegistry.js +43 -0
  546. package/dist/validation/ValidationRuleRegistry.js.map +1 -0
  547. package/dist/validation/index.d.ts +3 -3
  548. package/dist/validation/index.d.ts.map +1 -1
  549. package/dist/validation/index.js +10 -10
  550. package/dist/validation/index.js.map +1 -1
  551. package/dist/xml/XMLBuilder.d.ts +6 -1
  552. package/dist/xml/XMLBuilder.d.ts.map +1 -1
  553. package/dist/xml/XMLBuilder.js +11 -6
  554. package/dist/xml/XMLBuilder.js.map +1 -1
  555. package/dist/xml/XMLParser.js +6 -6
  556. package/dist/xml/XMLParser.js.map +1 -1
  557. package/dist/zip/ZipHandler.d.ts +1 -1
  558. package/dist/zip/ZipHandler.d.ts.map +1 -1
  559. package/dist/zip/ZipHandler.js +8 -8
  560. package/dist/zip/ZipHandler.js.map +1 -1
  561. package/dist/zip/ZipReader.d.ts +1 -1
  562. package/dist/zip/ZipReader.d.ts.map +1 -1
  563. package/dist/zip/ZipReader.js +14 -14
  564. package/dist/zip/ZipReader.js.map +1 -1
  565. package/dist/zip/ZipWriter.d.ts +1 -1
  566. package/dist/zip/ZipWriter.d.ts.map +1 -1
  567. package/dist/zip/ZipWriter.js +10 -10
  568. package/dist/zip/ZipWriter.js.map +1 -1
  569. package/package.json +20 -4
  570. package/src/constants/legacyCompatFlags.ts +1 -1
  571. package/src/core/Document.ts +478 -167
  572. package/src/core/DocumentContent.ts +14 -11
  573. package/src/core/DocumentEvents.ts +90 -0
  574. package/src/core/DocumentGenerator.ts +49 -22
  575. package/src/core/DocumentParser.ts +2235 -620
  576. package/src/core/DocumentValidator.ts +7 -7
  577. package/src/core/ElementRegistry.ts +69 -0
  578. package/src/core/Relationship.ts +1 -1
  579. package/src/core/RelationshipManager.ts +4 -4
  580. package/src/elements/AlternateContent.ts +1 -1
  581. package/src/elements/Bookmark.ts +52 -4
  582. package/src/elements/BookmarkManager.ts +2 -2
  583. package/src/elements/Comment.ts +3 -3
  584. package/src/elements/CommentManager.ts +4 -4
  585. package/src/elements/CommonTypes.ts +45 -7
  586. package/src/elements/CustomXml.ts +1 -1
  587. package/src/elements/Endnote.ts +2 -2
  588. package/src/elements/EndnoteManager.ts +3 -3
  589. package/src/elements/Field.ts +44 -10
  590. package/src/elements/FieldHelpers.ts +2 -2
  591. package/src/elements/Footer.ts +4 -4
  592. package/src/elements/Footnote.ts +2 -2
  593. package/src/elements/FootnoteManager.ts +3 -3
  594. package/src/elements/Header.ts +4 -4
  595. package/src/elements/HeaderFooterManager.ts +2 -2
  596. package/src/elements/Hyperlink.ts +16 -12
  597. package/src/elements/Image.ts +3 -3
  598. package/src/elements/ImageManager.ts +2 -2
  599. package/src/elements/ImageRun.ts +3 -3
  600. package/src/elements/MathElement.ts +1 -1
  601. package/src/elements/Paragraph.ts +221 -88
  602. package/src/elements/PreservedElement.ts +1 -1
  603. package/src/elements/PropertyChangeTypes.ts +2 -2
  604. package/src/elements/RangeMarker.ts +153 -12
  605. package/src/elements/RegisteredBodyElement.ts +52 -0
  606. package/src/elements/Revision.ts +14 -14
  607. package/src/elements/RevisionContent.ts +3 -3
  608. package/src/elements/RevisionManager.ts +3 -3
  609. package/src/elements/Run.ts +221 -94
  610. package/src/elements/Section.ts +136 -69
  611. package/src/elements/Shape.ts +4 -4
  612. package/src/elements/StructuredDocumentTag.ts +3 -3
  613. package/src/elements/Table.ts +91 -27
  614. package/src/elements/TableCell.ts +62 -34
  615. package/src/elements/TableGridChange.ts +1 -1
  616. package/src/elements/TableOfContents.ts +1 -1
  617. package/src/elements/TableOfContentsElement.ts +2 -2
  618. package/src/elements/TableRow.ts +192 -48
  619. package/src/elements/TextBox.ts +5 -5
  620. package/src/formatting/AbstractNumbering.ts +3 -3
  621. package/src/formatting/NumberingInstance.ts +2 -2
  622. package/src/formatting/NumberingLevel.ts +201 -10
  623. package/src/formatting/NumberingManager.ts +5 -5
  624. package/src/formatting/Style.ts +382 -86
  625. package/src/formatting/StylesManager.ts +4 -4
  626. package/src/helpers/CleanupHelper.ts +6 -6
  627. package/src/index.ts +118 -127
  628. package/src/internal.ts +79 -0
  629. package/src/managers/DrawingManager.ts +3 -3
  630. package/src/{utils → processors}/ChangelogGenerator.ts +3 -3
  631. package/src/{utils → processors}/CompatibilityUpgrader.ts +2 -2
  632. package/src/{utils → processors}/InMemoryRevisionAcceptor.ts +100 -12
  633. package/src/{utils → processors}/MoveOperationHelper.ts +5 -5
  634. package/src/{utils → processors}/RevisionAwareProcessor.ts +3 -3
  635. package/src/{utils → processors}/RevisionWalker.ts +42 -1
  636. package/src/{utils → processors}/SelectiveRevisionAcceptor.ts +98 -39
  637. package/src/{utils → processors}/ShadingResolver.ts +5 -5
  638. package/src/{utils → processors}/acceptRevisions.ts +77 -9
  639. package/src/{utils → processors}/cnfStyleDecoder.ts +1 -1
  640. package/src/{utils → processors}/stripTrackedChanges.ts +35 -10
  641. package/src/tracking/DocumentTrackingContext.ts +12 -14
  642. package/src/tracking/TrackingContext.ts +8 -8
  643. package/src/types/document-types.ts +53 -0
  644. package/src/types/formatting.ts +4 -4
  645. package/src/types/settings-types.ts +32 -0
  646. package/src/utils/KeyedRegistry.ts +41 -0
  647. package/src/utils/corruptionDetection.ts +2 -2
  648. package/src/utils/deepEqual.ts +58 -0
  649. package/src/utils/list-detection.ts +2 -2
  650. package/src/utils/parsingHelpers.ts +11 -3
  651. package/src/utils/validation.ts +3 -3
  652. package/src/utils/xmlSanitization.ts +1 -1
  653. package/src/validation/RevisionAutoFixer.ts +5 -5
  654. package/src/validation/RevisionValidator.ts +39 -28
  655. package/src/validation/ValidationRuleRegistry.ts +86 -0
  656. package/src/validation/index.ts +3 -3
  657. package/src/xml/XMLBuilder.ts +13 -3
  658. package/src/xml/XMLParser.ts +2 -2
  659. package/src/zip/ZipHandler.ts +4 -4
  660. package/src/zip/ZipReader.ts +3 -3
  661. package/src/zip/ZipWriter.ts +3 -3
  662. package/dist/utils/ChangelogGenerator.d.ts.map +0 -1
  663. package/dist/utils/ChangelogGenerator.js.map +0 -1
  664. package/dist/utils/CompatibilityUpgrader.d.ts.map +0 -1
  665. package/dist/utils/CompatibilityUpgrader.js.map +0 -1
  666. package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +0 -1
  667. package/dist/utils/InMemoryRevisionAcceptor.js.map +0 -1
  668. package/dist/utils/MoveOperationHelper.d.ts.map +0 -1
  669. package/dist/utils/MoveOperationHelper.js.map +0 -1
  670. package/dist/utils/RevisionAwareProcessor.d.ts.map +0 -1
  671. package/dist/utils/RevisionAwareProcessor.js.map +0 -1
  672. package/dist/utils/RevisionWalker.d.ts.map +0 -1
  673. package/dist/utils/RevisionWalker.js.map +0 -1
  674. package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +0 -1
  675. package/dist/utils/SelectiveRevisionAcceptor.js.map +0 -1
  676. package/dist/utils/ShadingResolver.d.ts +0 -6
  677. package/dist/utils/ShadingResolver.d.ts.map +0 -1
  678. package/dist/utils/ShadingResolver.js.map +0 -1
  679. package/dist/utils/acceptRevisions.d.ts.map +0 -1
  680. package/dist/utils/acceptRevisions.js.map +0 -1
  681. package/dist/utils/cnfStyleDecoder.d.ts.map +0 -1
  682. package/dist/utils/cnfStyleDecoder.js.map +0 -1
  683. package/dist/utils/stripTrackedChanges.d.ts +0 -3
  684. package/dist/utils/stripTrackedChanges.d.ts.map +0 -1
  685. package/dist/utils/stripTrackedChanges.js.map +0 -1
  686. package/src/__tests__/helper-methods.test.ts +0 -512
  687. package/src/constants/CLAUDE.md +0 -28
  688. package/src/core/CLAUDE.md +0 -113
  689. package/src/elements/CLAUDE.md +0 -142
  690. package/src/formatting/CLAUDE.md +0 -78
  691. package/src/managers/CLAUDE.md +0 -47
  692. package/src/tracking/CLAUDE.md +0 -30
  693. package/src/types/CLAUDE.md +0 -39
  694. package/src/utils/CLAUDE.md +0 -168
  695. package/src/validation/CLAUDE.md +0 -40
  696. package/src/xml/CLAUDE.md +0 -65
  697. package/src/zip/CLAUDE.md +0 -55
  698. /package/dist/{utils → processors}/CompatibilityUpgrader.d.ts +0 -0
  699. /package/dist/{utils → processors}/cnfStyleDecoder.js +0 -0
@@ -3,13 +3,13 @@
3
3
  * Prevents security issues and data corruption
4
4
  */
5
5
 
6
- import { Paragraph } from '../elements/Paragraph';
7
- import { Table } from '../elements/Table';
8
- import { ImageManager } from '../elements/ImageManager';
9
- import { DocumentProperties } from './Document';
10
- import { BodyElement } from './DocumentContent';
11
- import { LIMITS } from '../constants/limits';
12
- import { defaultLogger } from '../utils/logger';
6
+ import { Paragraph } from '../elements/Paragraph.js';
7
+ import { Table } from '../elements/Table.js';
8
+ import { ImageManager } from '../elements/ImageManager.js';
9
+ import type { DocumentProperties } from '../types/document-types.js';
10
+ import { BodyElement } from './DocumentContent.js';
11
+ import { LIMITS } from '../constants/limits.js';
12
+ import { defaultLogger } from '../utils/logger.js';
13
13
  import * as v8 from 'v8';
14
14
 
15
15
  /**
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Plugin extension point for custom OOXML element handlers. When the
3
+ * parser encounters an unknown qualified-name child of the body and a
4
+ * handler is registered for that tag, the handler's `parse()` is invoked
5
+ * and the result becomes a `PreservedElement` carrying the original raw
6
+ * XML (so save round-trips byte-for-byte). Handlers that return objects
7
+ * with a `toXml()` method allow consumers to roundtrip through their
8
+ * own model — see DocumentParser.processBodyElement for the contract.
9
+ *
10
+ * Registration is process-global; clear via `clear()` between tests.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * ElementRegistry.register('myco:specialBlock', {
15
+ * parse: (xml) => new MySpecialBlock(xml),
16
+ * serialize: (element) => (element as MySpecialBlock).toXML(),
17
+ * });
18
+ * ```
19
+ */
20
+ import { KeyedRegistry } from '../utils/KeyedRegistry.js';
21
+
22
+ export interface ElementHandler<E = unknown> {
23
+ /** Parse the raw XML fragment for this element into a model object. */
24
+ parse(rawXml: string, context?: ElementParseContext): E;
25
+ /** Serialize the model object back to raw XML. */
26
+ serialize(element: E, context?: ElementSerializeContext): string;
27
+ }
28
+
29
+ export interface ElementParseContext {
30
+ /** Path of the OOXML part being parsed (e.g., 'word/document.xml'). */
31
+ partPath?: string;
32
+ }
33
+
34
+ export interface ElementSerializeContext {
35
+ partPath?: string;
36
+ }
37
+
38
+ class ElementRegistryImpl {
39
+ private readonly inner = new KeyedRegistry<ElementHandler<unknown>>('ElementRegistry');
40
+
41
+ register<E>(tag: string, handler: ElementHandler<E>): void {
42
+ this.inner.register(tag, handler as ElementHandler<unknown>);
43
+ }
44
+
45
+ unregister(tag: string): boolean {
46
+ return this.inner.unregister(tag);
47
+ }
48
+
49
+ has(tag: string): boolean {
50
+ return this.inner.has(tag);
51
+ }
52
+
53
+ get<E = unknown>(tag: string): ElementHandler<E> | undefined {
54
+ return this.inner.get(tag) as ElementHandler<E> | undefined;
55
+ }
56
+
57
+ /** Returns the list of currently-registered tags (snapshot). */
58
+ registeredTags(): string[] {
59
+ return this.inner.keys();
60
+ }
61
+
62
+ /** Remove all handlers — primarily for test isolation. */
63
+ clear(): void {
64
+ this.inner.clear();
65
+ }
66
+ }
67
+
68
+ /** Process-global element registry instance. */
69
+ export const ElementRegistry = new ElementRegistryImpl();
@@ -5,7 +5,7 @@
5
5
  * They are stored in _rels/*.xml.rels files throughout the document structure.
6
6
  */
7
7
 
8
- import { XMLBuilder } from '../xml/XMLBuilder';
8
+ import { XMLBuilder } from '../xml/XMLBuilder.js';
9
9
 
10
10
  /**
11
11
  * Relationship types used in Word documents
@@ -5,10 +5,10 @@
5
5
  * document parts (document.xml, header.xml, footer.xml, etc.)
6
6
  */
7
7
 
8
- import { Relationship, RelationshipType } from './Relationship';
9
- import { XMLParser } from '../xml/XMLParser';
10
- import { sanitizeHyperlinkUrl } from '../utils/validation';
11
- import { InvalidDocxError, CorruptedArchiveError } from '../zip/errors';
8
+ import { Relationship, RelationshipType } from './Relationship.js';
9
+ import { XMLParser } from '../xml/XMLParser.js';
10
+ import { sanitizeHyperlinkUrl } from '../utils/validation.js';
11
+ import { InvalidDocxError, CorruptedArchiveError } from '../zip/errors.js';
12
12
 
13
13
  /**
14
14
  * Manages relationships for a document or document part
@@ -7,7 +7,7 @@
7
7
  * Stored as raw XML for round-trip fidelity since the internal structure varies widely.
8
8
  */
9
9
 
10
- import { XMLElement } from '../xml/XMLBuilder';
10
+ import { XMLElement } from '../xml/XMLBuilder.js';
11
11
 
12
12
  export class AlternateContent {
13
13
  private rawXml: string;
@@ -5,7 +5,16 @@
5
5
  * They consist of a start marker and an end marker with matching IDs.
6
6
  */
7
7
 
8
- import { XMLElement } from '../xml/XMLBuilder';
8
+ import { XMLElement } from '../xml/XMLBuilder.js';
9
+
10
+ /**
11
+ * `w:displacedByCustomXml` attribute value per ECMA-376 CT_MarkupRange —
12
+ * ST_DisplacedByCustomXml enum: "next" | "prev". Indicates which side of
13
+ * a custom-XML boundary the marker semantically belongs to when the
14
+ * marker had to be displaced because a custom-XML node boundary fell at
15
+ * the same position.
16
+ */
17
+ export type DisplacedByCustomXml = 'next' | 'prev';
9
18
 
10
19
  /**
11
20
  * Bookmark properties
@@ -21,6 +30,13 @@ export interface BookmarkProperties {
21
30
  colFirst?: number;
22
31
  /** Last column in table bookmark range (ECMA-376 §17.16.5) */
23
32
  colLast?: number;
33
+ /**
34
+ * `w:displacedByCustomXml` per ECMA-376 CT_MarkupRange / CT_Bookmark.
35
+ * Valid on both `<w:bookmarkStart>` (CT_Bookmark) and `<w:bookmarkEnd>`
36
+ * (CT_MarkupRange). Preserves the custom-XML boundary disambiguator
37
+ * that Word emits when a bookmark was displaced by a custom-XML node.
38
+ */
39
+ displacedByCustomXml?: DisplacedByCustomXml;
24
40
  }
25
41
 
26
42
  /**
@@ -31,6 +47,7 @@ export class Bookmark {
31
47
  private name: string;
32
48
  private colFirst?: number;
33
49
  private colLast?: number;
50
+ private displacedByCustomXml?: DisplacedByCustomXml;
34
51
 
35
52
  /**
36
53
  * Creates a new Bookmark
@@ -45,6 +62,7 @@ export class Bookmark {
45
62
  : this.normalizeName(properties.name);
46
63
  this.colFirst = properties.colFirst;
47
64
  this.colLast = properties.colLast;
65
+ this.displacedByCustomXml = properties.displacedByCustomXml;
48
66
  }
49
67
 
50
68
  /**
@@ -167,6 +185,24 @@ export class Bookmark {
167
185
  return this;
168
186
  }
169
187
 
188
+ /**
189
+ * Gets the `w:displacedByCustomXml` attribute value.
190
+ * Preserved on both bookmarkStart and bookmarkEnd per ECMA-376
191
+ * CT_MarkupRange (§17.13.5) / CT_Bookmark (§17.16.5).
192
+ */
193
+ getDisplacedByCustomXml(): DisplacedByCustomXml | undefined {
194
+ return this.displacedByCustomXml;
195
+ }
196
+
197
+ /**
198
+ * Sets the `w:displacedByCustomXml` attribute value.
199
+ * @param value "next" | "prev" | undefined
200
+ */
201
+ setDisplacedByCustomXml(value: DisplacedByCustomXml | undefined): this {
202
+ this.displacedByCustomXml = value;
203
+ return this;
204
+ }
205
+
170
206
  /**
171
207
  * Generates XML for the bookmark start marker
172
208
  * @returns XMLElement for bookmarkStart
@@ -179,6 +215,11 @@ export class Bookmark {
179
215
  // Table bookmark column range per ECMA-376 §17.16.5
180
216
  if (this.colFirst !== undefined) attrs['w:colFirst'] = this.colFirst.toString();
181
217
  if (this.colLast !== undefined) attrs['w:colLast'] = this.colLast.toString();
218
+ // Custom-XML displacement marker per CT_MarkupRange (§17.13.5) —
219
+ // the same attribute also carried by the RangeMarker sibling class.
220
+ if (this.displacedByCustomXml) {
221
+ attrs['w:displacedByCustomXml'] = this.displacedByCustomXml;
222
+ }
182
223
  return {
183
224
  name: 'w:bookmarkStart',
184
225
  attributes: attrs,
@@ -191,11 +232,18 @@ export class Bookmark {
191
232
  * @returns XMLElement for bookmarkEnd
192
233
  */
193
234
  toEndXML(): XMLElement {
235
+ const attrs: Record<string, string | number> = {
236
+ 'w:id': this.id.toString(),
237
+ };
238
+ // bookmarkEnd is CT_MarkupRange per ECMA-376 §17.13.6.1 — w:displacedByCustomXml
239
+ // is valid here too (the BookmarkRange column attributes are NOT, so those
240
+ // stay scoped to toStartXML above).
241
+ if (this.displacedByCustomXml) {
242
+ attrs['w:displacedByCustomXml'] = this.displacedByCustomXml;
243
+ }
194
244
  return {
195
245
  name: 'w:bookmarkEnd',
196
- attributes: {
197
- 'w:id': this.id.toString(),
198
- },
246
+ attributes: attrs,
199
247
  selfClosing: true,
200
248
  };
201
249
  }
@@ -7,8 +7,8 @@
7
7
  * in a document. Use setIdProvider() to connect to a centralized ID allocator.
8
8
  */
9
9
 
10
- import { Bookmark } from './Bookmark';
11
- import { InvalidDocxError } from '../zip/errors';
10
+ import { Bookmark } from './Bookmark.js';
11
+ import { InvalidDocxError } from '../zip/errors.js';
12
12
 
13
13
  /**
14
14
  * Type for the centralized ID provider callback.
@@ -5,9 +5,9 @@
5
5
  * They include author, date, content, and can have replies.
6
6
  */
7
7
 
8
- import { Run } from './Run';
9
- import { XMLElement } from '../xml/XMLBuilder';
10
- import { formatDateForXml } from '../utils/dateFormatting';
8
+ import { Run } from './Run.js';
9
+ import { XMLElement } from '../xml/XMLBuilder.js';
10
+ import { formatDateForXml } from '../utils/dateFormatting.js';
11
11
 
12
12
  /**
13
13
  * Comment properties
@@ -8,10 +8,10 @@
8
8
  * in a document. Use setIdProvider() to connect to a centralized ID allocator.
9
9
  */
10
10
 
11
- import { Comment } from './Comment';
12
- import { Run } from './Run';
13
- import { XMLBuilder } from '../xml/XMLBuilder';
14
- import { formatDateForXml } from '../utils/dateFormatting';
11
+ import { Comment } from './Comment.js';
12
+ import { Run } from './Run.js';
13
+ import { XMLBuilder } from '../xml/XMLBuilder.js';
14
+ import { formatDateForXml } from '../utils/dateFormatting.js';
15
15
 
16
16
  /**
17
17
  * Type for the centralized ID provider callback.
@@ -150,14 +150,37 @@ export type FullBorderStyle =
150
150
  * TableCell.ts (CellBorder), Table.ts (TableBorder)
151
151
  */
152
152
  export interface BorderDefinition {
153
- /** Border style */
154
- style?: BorderStyle | ExtendedBorderStyle;
153
+ /**
154
+ * Border style per ECMA-376 Part 1 §17.18.2 ST_Border. Uses the full
155
+ * 25+ value set (triple / dotDash / multi-line gap variants / inset /
156
+ * outset / etc.) rather than the narrower ExtendedBorderStyle subset
157
+ * — the generator passes the raw string through unfiltered, so any
158
+ * ST_Border value is spec-valid here.
159
+ */
160
+ style?: FullBorderStyle;
155
161
  /** Border width in eighths of a point (1-96) */
156
162
  size?: number;
157
163
  /** Border color in hex format (without #) */
158
164
  color?: string;
159
165
  /** Space between border and content in points (0-31) */
160
166
  space?: number;
167
+ /**
168
+ * Theme color reference (ST_ThemeColor per §17.18.97) — e.g. "accent1",
169
+ * "text2". When both `color` and `themeColor` are set, Word uses the
170
+ * themeColor lookup and treats `color` as a fallback.
171
+ */
172
+ themeColor?: string;
173
+ /** Theme tint (0-255, hex string) applied to themeColor lookup */
174
+ themeTint?: string;
175
+ /** Theme shade (0-255, hex string) applied to themeColor lookup */
176
+ themeShade?: string;
177
+ /** Whether the border casts a shadow (CT_OnOff attribute on CT_Border) */
178
+ shadow?: boolean;
179
+ /**
180
+ * Whether the border is part of a frame around the content (CT_OnOff).
181
+ * Primarily used on page borders but valid per CT_Border for all sides.
182
+ */
183
+ frame?: boolean;
161
184
  }
162
185
 
163
186
  /**
@@ -216,11 +239,13 @@ export type VerticalAlignment =
216
239
  export type PageVerticalAlignment = 'top' | 'center' | 'bottom' | 'both';
217
240
 
218
241
  /**
219
- * Vertical alignment for table cells
242
+ * Vertical alignment for table cells per ECMA-376 Part 1 §17.18.101
243
+ * ST_VerticalJc. `both` distributes the cell content vertically with
244
+ * equal top/bottom gaps — the vertical-axis analogue of justified text.
220
245
  *
221
246
  * From: TableCell.ts (CellVerticalAlignment)
222
247
  */
223
- export type CellVerticalAlignment = 'top' | 'center' | 'bottom';
248
+ export type CellVerticalAlignment = 'top' | 'center' | 'both' | 'bottom';
224
249
 
225
250
  /**
226
251
  * Paragraph text alignment per ECMA-376 §17.18.44 (ST_Jc)
@@ -241,7 +266,13 @@ export type ParagraphAlignment =
241
266
  | 'mediumKashida'
242
267
  | 'highKashida'
243
268
  | 'lowKashida'
244
- | 'thaiDistribute';
269
+ | 'thaiDistribute'
270
+ /**
271
+ * `numTab` per ST_Jc — numbering tab alignment mode used when the paragraph
272
+ * is the anchor of a numbered list and the alignment should follow the
273
+ * numbering tab stop. Rare in practice but spec-valid per §17.18.44.
274
+ */
275
+ | 'numTab';
245
276
 
246
277
  /**
247
278
  * Table alignment (horizontal positioning) per ECMA-376 §17.18.45 (ST_JcTable)
@@ -270,11 +301,17 @@ export type TextVerticalAlignment = 'top' | 'center' | 'baseline' | 'bottom' | '
270
301
  *
271
302
  * From: Paragraph.ts (TabAlignment)
272
303
  */
304
+ /**
305
+ * Tab stop alignment per ECMA-376 Part 1 §17.18.94 ST_TabJc.
306
+ * `start` / `end` are the bidi-aware alternatives to `left` / `right`.
307
+ */
273
308
  export type TabAlignment =
274
309
  | 'clear' // Remove tab stop
275
- | 'left' // Left-aligned
310
+ | 'left' // Left-aligned (LTR-biased)
311
+ | 'start' // Start-aligned (bidi-aware)
276
312
  | 'center' // Center-aligned
277
- | 'right' // Right-aligned
313
+ | 'right' // Right-aligned (LTR-biased)
314
+ | 'end' // End-aligned (bidi-aware)
278
315
  | 'decimal' // Decimal-aligned (for numbers)
279
316
  | 'bar' // Bar tab (vertical line)
280
317
  | 'num'; // List number alignment
@@ -493,6 +530,7 @@ export function isParagraphAlignment(value: string): value is ParagraphAlignment
493
530
  'highKashida',
494
531
  'lowKashida',
495
532
  'thaiDistribute',
533
+ 'numTab',
496
534
  ].includes(value);
497
535
  }
498
536
 
@@ -7,7 +7,7 @@
7
7
  * Stored as raw XML for round-trip fidelity.
8
8
  */
9
9
 
10
- import { XMLElement } from '../xml/XMLBuilder';
10
+ import { XMLElement } from '../xml/XMLBuilder.js';
11
11
 
12
12
  /**
13
13
  * Block-level custom XML (w:customXml wrapping block content)
@@ -5,8 +5,8 @@
5
5
  * within the document text via endnote references.
6
6
  */
7
7
 
8
- import { Paragraph } from './Paragraph';
9
- import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
8
+ import { Paragraph } from './Paragraph.js';
9
+ import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
10
10
 
11
11
  /**
12
12
  * Endnote type
@@ -5,9 +5,9 @@
5
5
  * Maintains unique IDs and proper ordering.
6
6
  */
7
7
 
8
- import { Endnote, EndnoteType } from './Endnote';
9
- import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
10
- import { XMLParser } from '../xml/XMLParser';
8
+ import { Endnote, EndnoteType } from './Endnote.js';
9
+ import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
10
+ import { XMLParser } from '../xml/XMLParser.js';
11
11
 
12
12
  /**
13
13
  * Manages endnotes in a document
@@ -5,15 +5,15 @@
5
5
  * They are represented using the <w:fldSimple> element with field codes.
6
6
  */
7
7
 
8
- import { XMLElement } from '../xml/XMLBuilder';
9
- import { RunFormatting, FormFieldData } from './Run';
8
+ import { XMLElement } from '../xml/XMLBuilder.js';
9
+ import { RunFormatting, FormFieldData } from './Run.js';
10
10
  import {
11
11
  ParsedHyperlinkInstruction,
12
12
  parseHyperlinkInstruction,
13
13
  isHyperlinkInstruction,
14
- } from './FieldHelpers';
15
- import type { Revision } from './Revision';
16
- import { pointsToHalfPoints } from '../utils/units';
14
+ } from './FieldHelpers.js';
15
+ import type { Revision } from './Revision.js';
16
+ import { pointsToHalfPoints } from '../utils/units.js';
17
17
 
18
18
  /**
19
19
  * Common field types
@@ -61,6 +61,17 @@ export interface FieldProperties {
61
61
  preserveFormatting?: boolean;
62
62
  /** Run formatting for field result */
63
63
  formatting?: RunFormatting;
64
+ /**
65
+ * `<w:fldSimple w:fldLock="…">` — CT_OnOff per ECMA-376 §17.16.16.
66
+ * When true, the field is locked against automatic updates.
67
+ */
68
+ fldLock?: boolean;
69
+ /**
70
+ * `<w:fldSimple w:dirty="…">` — CT_OnOff per ECMA-376 §17.16.16.
71
+ * When true, the field's cached result is out of date and Word should
72
+ * refresh it at open-time.
73
+ */
74
+ dirty?: boolean;
64
75
  }
65
76
 
66
77
  /**
@@ -70,6 +81,8 @@ export class Field {
70
81
  private type: FieldType;
71
82
  private instruction: string;
72
83
  private formatting?: RunFormatting;
84
+ private fldLock?: boolean;
85
+ private dirty?: boolean;
73
86
 
74
87
  /**
75
88
  * Creates a new field
@@ -78,6 +91,8 @@ export class Field {
78
91
  constructor(properties: FieldProperties) {
79
92
  this.type = properties.type;
80
93
  this.formatting = properties.formatting;
94
+ this.fldLock = properties.fldLock;
95
+ this.dirty = properties.dirty;
81
96
 
82
97
  // Build field instruction
83
98
  if (properties.instruction) {
@@ -180,16 +195,35 @@ export class Field {
180
195
  if (this.formatting) {
181
196
  runChildren.push(this.createRunProperties());
182
197
  }
198
+ // Per ECMA-376 §22.1.2.33 CT_Text, `xml:space="preserve"` is the
199
+ // standard sentinel that stops XML processors from collapsing leading /
200
+ // trailing whitespace in the text content. Run.ts always emits it;
201
+ // emit it here too so field placeholders with spaces (e.g. localized
202
+ // date formats like "1 Jan 2026") survive XML round-trip intact.
183
203
  runChildren.push({
184
204
  name: 'w:t',
205
+ attributes: { 'xml:space': 'preserve' },
185
206
  children: [this.getPlaceholderText()],
186
207
  });
187
208
 
209
+ // CT_SimpleField (§17.16.16) carries two ST_OnOff attributes beyond
210
+ // the required w:instr: w:fldLock (locked against updates) and
211
+ // w:dirty (cached result out of date). Emit when the caller set
212
+ // them so Word-authored fldSimple documents round-trip their
213
+ // lock/dirty state instead of silently clearing it.
214
+ const fldSimpleAttrs: Record<string, string> = {
215
+ 'w:instr': this.instruction,
216
+ };
217
+ if (this.fldLock !== undefined) {
218
+ fldSimpleAttrs['w:fldLock'] = this.fldLock ? '1' : '0';
219
+ }
220
+ if (this.dirty !== undefined) {
221
+ fldSimpleAttrs['w:dirty'] = this.dirty ? '1' : '0';
222
+ }
223
+
188
224
  return {
189
225
  name: 'w:fldSimple',
190
- attributes: {
191
- 'w:instr': this.instruction,
192
- },
226
+ attributes: fldSimpleAttrs,
193
227
  children: [
194
228
  {
195
229
  name: 'w:r',
@@ -627,7 +661,7 @@ export class ComplexField {
627
661
  */
628
662
  private _hasResultSection = false;
629
663
  private _formFieldData?: FormFieldData;
630
- private trackingContext?: import('../tracking/TrackingContext').TrackingContext;
664
+ private trackingContext?: import('../tracking/TrackingContext.js').TrackingContext;
631
665
 
632
666
  /**
633
667
  * Creates a new complex field
@@ -848,7 +882,7 @@ export class ComplexField {
848
882
  * Sets the tracking context for automatic change tracking
849
883
  * @internal
850
884
  */
851
- _setTrackingContext(context: import('../tracking/TrackingContext').TrackingContext): void {
885
+ _setTrackingContext(context: import('../tracking/TrackingContext.js').TrackingContext): void {
852
886
  this.trackingContext = context;
853
887
  }
854
888
 
@@ -2,8 +2,8 @@
2
2
  * Helper functions for creating complex and nested fields
3
3
  */
4
4
 
5
- import { ComplexField } from './Field';
6
- import { defaultLogger } from '../utils/logger';
5
+ import { ComplexField } from './Field.js';
6
+ import { defaultLogger } from '../utils/logger.js';
7
7
 
8
8
  /**
9
9
  * Parsed components of a HYPERLINK field instruction
@@ -5,10 +5,10 @@
5
5
  * Different footers can be defined for first page, odd pages, and even pages.
6
6
  */
7
7
 
8
- import { XMLElement } from '../xml/XMLBuilder';
9
- import { Paragraph } from './Paragraph';
10
- import { RunFormatting } from './Run';
11
- import { Table } from './Table';
8
+ import { XMLElement } from '../xml/XMLBuilder.js';
9
+ import { Paragraph } from './Paragraph.js';
10
+ import { RunFormatting } from './Run.js';
11
+ import { Table } from './Table.js';
12
12
 
13
13
  /**
14
14
  * Footer type
@@ -5,8 +5,8 @@
5
5
  * within the document text via footnote references.
6
6
  */
7
7
 
8
- import { Paragraph } from './Paragraph';
9
- import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
8
+ import { Paragraph } from './Paragraph.js';
9
+ import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
10
10
 
11
11
  /**
12
12
  * Footnote type
@@ -5,9 +5,9 @@
5
5
  * Maintains unique IDs and proper ordering.
6
6
  */
7
7
 
8
- import { Footnote, FootnoteType } from './Footnote';
9
- import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
10
- import { XMLParser } from '../xml/XMLParser';
8
+ import { Footnote, FootnoteType } from './Footnote.js';
9
+ import { XMLBuilder, XMLElement } from '../xml/XMLBuilder.js';
10
+ import { XMLParser } from '../xml/XMLParser.js';
11
11
 
12
12
  /**
13
13
  * Manages footnotes in a document
@@ -5,10 +5,10 @@
5
5
  * Different headers can be defined for first page, odd pages, and even pages.
6
6
  */
7
7
 
8
- import { XMLElement } from '../xml/XMLBuilder';
9
- import { Paragraph } from './Paragraph';
10
- import { RunFormatting } from './Run';
11
- import { Table } from './Table';
8
+ import { XMLElement } from '../xml/XMLBuilder.js';
9
+ import { Paragraph } from './Paragraph.js';
10
+ import { RunFormatting } from './Run.js';
11
+ import { Table } from './Table.js';
12
12
 
13
13
  /**
14
14
  * Header type
@@ -5,8 +5,8 @@
5
5
  * and manages relationships.
6
6
  */
7
7
 
8
- import { Header } from './Header';
9
- import { Footer } from './Footer';
8
+ import { Header } from './Header.js';
9
+ import { Footer } from './Footer.js';
10
10
 
11
11
  /**
12
12
  * Header entry with metadata