docxmlater 10.4.1 → 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 +74 -67
  6. package/dist/core/Document.d.ts.map +1 -1
  7. package/dist/core/Document.js +605 -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 +2056 -1073
  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 +461 -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 +2180 -617
  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
@@ -7,16 +7,17 @@
7
7
  * @module DocumentTrackingContext
8
8
  */
9
9
 
10
- import { Revision, RevisionType } from '../elements/Revision';
11
- import { RevisionManager } from '../elements/RevisionManager';
12
- import { Run, type RunFormatting } from '../elements/Run';
13
- import { Paragraph } from '../elements/Paragraph';
14
- import { Table } from '../elements/Table';
15
- import { TableRow } from '../elements/TableRow';
16
- import { TableCell } from '../elements/TableCell';
17
- import { Section } from '../elements/Section';
18
- import type { TrackingContext, PendingChange, TrackableElement } from './TrackingContext';
19
- import { formatDateForXml } from '../utils/dateFormatting';
10
+ import { Revision, RevisionType } from '../elements/Revision.js';
11
+ import { RevisionManager } from '../elements/RevisionManager.js';
12
+ import { Run, type RunFormatting } from '../elements/Run.js';
13
+ import { Paragraph } from '../elements/Paragraph.js';
14
+ import { Table } from '../elements/Table.js';
15
+ import { TableRow } from '../elements/TableRow.js';
16
+ import { TableCell } from '../elements/TableCell.js';
17
+ import { Section } from '../elements/Section.js';
18
+ import type { TrackingContext, PendingChange, TrackableElement } from './TrackingContext.js';
19
+ import { formatDateForXml } from '../utils/dateFormatting.js';
20
+ import { deepEqual } from '../utils/deepEqual.js';
20
21
 
21
22
  /**
22
23
  * Enable options for tracking context
@@ -684,10 +685,7 @@ export class DocumentTrackingContext implements TrackingContext {
684
685
  * Deep equality check for tracking values (handles objects, primitives, null/undefined)
685
686
  */
686
687
  private valuesEqual(a: unknown, b: unknown): boolean {
687
- if (a === b) return true;
688
- if (a == null || b == null) return false;
689
- if (typeof a !== 'object' || typeof b !== 'object') return false;
690
- return JSON.stringify(a) === JSON.stringify(b);
688
+ return deepEqual(a, b);
691
689
  }
692
690
 
693
691
  /**
@@ -7,14 +7,14 @@
7
7
  * @module TrackingContext
8
8
  */
9
9
 
10
- import type { Revision, RevisionType } from '../elements/Revision';
11
- import type { RevisionManager } from '../elements/RevisionManager';
12
- import type { Run } from '../elements/Run';
13
- import type { Paragraph } from '../elements/Paragraph';
14
- import type { Table } from '../elements/Table';
15
- import type { TableRow } from '../elements/TableRow';
16
- import type { TableCell } from '../elements/TableCell';
17
- import type { Section } from '../elements/Section';
10
+ import type { Revision, RevisionType } from '../elements/Revision.js';
11
+ import type { RevisionManager } from '../elements/RevisionManager.js';
12
+ import type { Run } from '../elements/Run.js';
13
+ import type { Paragraph } from '../elements/Paragraph.js';
14
+ import type { Table } from '../elements/Table.js';
15
+ import type { TableRow } from '../elements/TableRow.js';
16
+ import type { TableCell } from '../elements/TableCell.js';
17
+ import type { Section } from '../elements/Section.js';
18
18
 
19
19
  /** Union of element types that can be tracked */
20
20
  export type TrackableElement =
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Document-shaped types extracted out of `src/core/Document.ts` so that
3
+ * `DocumentParser`, `DocumentGenerator`, and `DocumentValidator` can
4
+ * import them without re-introducing a circular dependency back to the
5
+ * Document class.
6
+ *
7
+ * `Document.ts` re-exports these for backward compatibility — existing
8
+ * `import { DocumentProperties } from 'docxmlater'` continues to work.
9
+ */
10
+
11
+ /** Document properties (core and extended). */
12
+ export interface DocumentProperties {
13
+ // Core Properties (docProps/core.xml)
14
+ title?: string;
15
+ subject?: string;
16
+ creator?: string;
17
+ keywords?: string;
18
+ description?: string;
19
+ lastModifiedBy?: string;
20
+ revision?: number;
21
+ created?: Date;
22
+ modified?: Date;
23
+ language?: string;
24
+ category?: string;
25
+ contentStatus?: string;
26
+
27
+ // Extended Properties (docProps/app.xml)
28
+ application?: string;
29
+ appVersion?: string;
30
+ company?: string;
31
+ manager?: string;
32
+ version?: string;
33
+
34
+ // Custom Properties (docProps/custom.xml)
35
+ customProperties?: Record<string, string | number | boolean | Date>;
36
+ }
37
+
38
+ /**
39
+ * Document part representation. Any part inside the DOCX package
40
+ * (XML, binary).
41
+ */
42
+ export interface DocumentPart {
43
+ /** Part name/path within the package */
44
+ name: string;
45
+ /** Part content (string for XML/text, Buffer for binary) */
46
+ content: string | Buffer;
47
+ /** MIME content type */
48
+ contentType?: string;
49
+ /** Whether the part is binary */
50
+ isBinary?: boolean;
51
+ /** Part size in bytes */
52
+ size?: number;
53
+ }
@@ -3,8 +3,8 @@
3
3
  */
4
4
 
5
5
  // Forward references to avoid circular dependencies
6
- import type { Paragraph } from '../elements/Paragraph';
7
- import type { Run } from '../elements/Run';
6
+ import type { Paragraph } from '../elements/Paragraph.js';
7
+ import type { Run } from '../elements/Run.js';
8
8
 
9
9
  /**
10
10
  * Border style options
@@ -45,13 +45,13 @@ export interface ParagraphBorder {
45
45
  * Shading patterns — re-exported from CommonTypes for backward compatibility.
46
46
  * @see CommonTypes.ShadingPattern for the canonical definition
47
47
  */
48
- export type { ShadingPattern } from '../elements/CommonTypes';
48
+ export type { ShadingPattern } from '../elements/CommonTypes.js';
49
49
 
50
50
  /**
51
51
  * Paragraph shading configuration — re-exported from CommonTypes for backward compatibility.
52
52
  * @see CommonTypes.ShadingConfig for the canonical definition (includes theme attributes)
53
53
  */
54
- export type { ShadingConfig as ParagraphShading } from '../elements/CommonTypes';
54
+ export type { ShadingConfig as ParagraphShading } from '../elements/CommonTypes.js';
55
55
 
56
56
  /**
57
57
  * Tab stop alignment
@@ -11,6 +11,14 @@
11
11
  export interface DocumentProtection {
12
12
  edit: 'readOnly' | 'comments' | 'trackedChanges' | 'forms';
13
13
  enforcement: boolean;
14
+ /**
15
+ * `w:formatting` per CT_DocProtect §17.15.1.29 — when true, formatting
16
+ * changes are still allowed even when edit protection is enforced.
17
+ * Directly relevant to the tracked-changes workflow: combined with
18
+ * `edit: 'trackedChanges'`, this forces all content edits to be tracked
19
+ * while still permitting formatting adjustments.
20
+ */
21
+ formatting?: boolean;
14
22
  cryptProviderType?: string;
15
23
  cryptAlgorithmClass?: string;
16
24
  cryptAlgorithmType?: string;
@@ -18,6 +26,19 @@ export interface DocumentProtection {
18
26
  cryptSpinCount?: number;
19
27
  hash?: string;
20
28
  salt?: string;
29
+ /**
30
+ * Modern crypto attributes per ISO/IEC 29500-4 §13 (Word 2013+):
31
+ * - `algorithmName` names the strong hash algorithm (e.g. "SHA-512"),
32
+ * replacing the legacy `cryptAlgorithmSid` lookup-table reference.
33
+ * - `hashValue` is the base64-encoded password hash.
34
+ * - `saltValue` is the base64-encoded salt.
35
+ *
36
+ * These are emitted alongside / instead of the legacy `hash` / `salt`
37
+ * / `cryptAlgorithmSid` attributes. Previously dropped on round-trip.
38
+ */
39
+ algorithmName?: string;
40
+ hashValue?: string;
41
+ saltValue?: string;
21
42
  }
22
43
 
23
44
  /**
@@ -27,6 +48,17 @@ export interface RevisionViewSettings {
27
48
  showInsertionsAndDeletions: boolean;
28
49
  showFormatting: boolean;
29
50
  showInkAnnotations: boolean;
51
+ /**
52
+ * `w:markup` per CT_TrackChangesView §17.15.1.77 — when false, all
53
+ * revision markup is hidden in the reviewer pane (no balloons, no
54
+ * strikethrough/inserted styling). Defaults to true when absent.
55
+ */
56
+ showMarkup?: boolean;
57
+ /**
58
+ * `w:comments` per CT_TrackChangesView §17.15.1.77 — when false,
59
+ * comment balloons are hidden. Defaults to true when absent.
60
+ */
61
+ showComments?: boolean;
30
62
  }
31
63
 
32
64
  /**
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Map-backed keyed registry shared by ElementRegistry and ValidationRuleRegistry.
3
+ * Throws on duplicate `register()` so callers cannot silently overwrite a
4
+ * pre-existing entry.
5
+ */
6
+ export class KeyedRegistry<V> {
7
+ private readonly entries = new Map<string, V>();
8
+
9
+ constructor(private readonly label: string) {}
10
+
11
+ register(key: string, value: V): void {
12
+ if (this.entries.has(key)) {
13
+ throw new Error(`${this.label}: "${key}" is already registered`);
14
+ }
15
+ this.entries.set(key, value);
16
+ }
17
+
18
+ unregister(key: string): boolean {
19
+ return this.entries.delete(key);
20
+ }
21
+
22
+ has(key: string): boolean {
23
+ return this.entries.has(key);
24
+ }
25
+
26
+ get(key: string): V | undefined {
27
+ return this.entries.get(key);
28
+ }
29
+
30
+ keys(): string[] {
31
+ return [...this.entries.keys()];
32
+ }
33
+
34
+ values(): V[] {
35
+ return [...this.entries.values()];
36
+ }
37
+
38
+ clear(): void {
39
+ this.entries.clear();
40
+ }
41
+ }
@@ -6,8 +6,8 @@
6
6
  * results in escaped XML tags being displayed as literal text in Word.
7
7
  */
8
8
 
9
- import { Paragraph } from '../elements/Paragraph';
10
- import { Run } from '../elements/Run';
9
+ import { Paragraph } from '../elements/Paragraph.js';
10
+ import { Run } from '../elements/Run.js';
11
11
 
12
12
  /** Minimal interface for document corruption scanning (avoids circular import) */
13
13
  interface DocumentLike {
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Structural equality check for OOXML formatting objects.
3
+ *
4
+ * Replaces `JSON.stringify(a) === JSON.stringify(b)` in hot equality paths
5
+ * (paragraph property merging, tracking-context consolidation). Avoids
6
+ * allocating two large strings per comparison and short-circuits on the
7
+ * first inequality.
8
+ *
9
+ * Handles the value shapes seen in formatting objects: primitives, plain
10
+ * objects, arrays, Date, null/undefined. Symbols and class instances are
11
+ * not part of the formatting model and are compared by reference.
12
+ */
13
+ export function deepEqual(a: unknown, b: unknown): boolean {
14
+ if (a === b) return true;
15
+ // NaN === NaN is false in JS; treat structurally as equal so a parse
16
+ // failure that produced two NaNs in equivalent slots doesn't dirty the
17
+ // tracking-context consolidation pass.
18
+ if (typeof a === 'number' && typeof b === 'number' && Number.isNaN(a) && Number.isNaN(b)) {
19
+ return true;
20
+ }
21
+ if (a == null || b == null) return a === b;
22
+
23
+ const typeA = typeof a;
24
+ const typeB = typeof b;
25
+ if (typeA !== typeB) return false;
26
+ if (typeA !== 'object') return false;
27
+
28
+ // Date values
29
+ if (a instanceof Date || b instanceof Date) {
30
+ return a instanceof Date && b instanceof Date && a.getTime() === b.getTime();
31
+ }
32
+
33
+ // Arrays: same length, element-wise equality.
34
+ const aIsArr = Array.isArray(a);
35
+ const bIsArr = Array.isArray(b);
36
+ if (aIsArr !== bIsArr) return false;
37
+ if (aIsArr && bIsArr) {
38
+ const arrA = a;
39
+ const arrB = b;
40
+ if (arrA.length !== arrB.length) return false;
41
+ for (let i = 0; i < arrA.length; i++) {
42
+ if (!deepEqual(arrA[i], arrB[i])) return false;
43
+ }
44
+ return true;
45
+ }
46
+
47
+ // Plain objects: same key set, deep-equal values.
48
+ const objA = a as Record<string, unknown>;
49
+ const objB = b as Record<string, unknown>;
50
+ const keysA = Object.keys(objA);
51
+ const keysB = Object.keys(objB);
52
+ if (keysA.length !== keysB.length) return false;
53
+ for (const k of keysA) {
54
+ if (!Object.prototype.hasOwnProperty.call(objB, k)) return false;
55
+ if (!deepEqual(objA[k], objB[k])) return false;
56
+ }
57
+ return true;
58
+ }
@@ -5,13 +5,13 @@
5
5
  * paragraph list properties.
6
6
  */
7
7
 
8
- import type { Paragraph } from '../elements/Paragraph';
8
+ import type { Paragraph } from '../elements/Paragraph.js';
9
9
  import type {
10
10
  ListCategory,
11
11
  ListDetectionResult,
12
12
  NumberFormat,
13
13
  BulletFormat,
14
- } from '../types/list-types';
14
+ } from '../types/list-types.js';
15
15
 
16
16
  // =============================================================================
17
17
  // CONSTANTS
@@ -54,6 +54,10 @@ export function safeParseInt(value: unknown, defaultValue = 0): number {
54
54
  * - Absent element = false (handled by caller checking for property existence)
55
55
  *
56
56
  * @param prop - The parsed XML property object (e.g., pPrObj["w:bold"])
57
+ * @param valAttr - The attribute key that carries the ST_OnOff literal.
58
+ * Defaults to `"@_w:val"` for the main WordprocessingML namespace.
59
+ * Pass `"@_w14:val"` for w14 extension elements such as
60
+ * `<w14:checked w14:val="1"/>` (CT_OnOff in the Word 2010+ namespace).
57
61
  * @returns Boolean value
58
62
  *
59
63
  * @example
@@ -66,17 +70,21 @@ export function safeParseInt(value: unknown, defaultValue = 0): number {
66
70
  * // For XML: <w:bold w:val="0"/>
67
71
  * parseOoxmlBoolean({ "@_w:val": "0" }) // false
68
72
  *
73
+ * // For XML: <w14:checked w14:val="on"/>
74
+ * parseOoxmlBoolean({ "@_w14:val": "on" }, "@_w14:val") // true
75
+ *
69
76
  * // For absent element
70
77
  * parseOoxmlBoolean(undefined) // false
71
78
  */
72
- export function parseOoxmlBoolean(prop: unknown): boolean {
79
+ export function parseOoxmlBoolean(prop: unknown, valAttr = '@_w:val'): boolean {
73
80
  // Absent element = false
74
81
  if (!prop) {
75
82
  return false;
76
83
  }
77
84
 
78
- // Get the w:val attribute value
79
- const val = (prop as Record<string, unknown>)['@_w:val'];
85
+ // Get the val attribute value (w:val by default, w14:val or similar for
86
+ // extension namespaces).
87
+ const val = (prop as Record<string, unknown>)[valAttr];
80
88
 
81
89
  // Self-closing tag without w:val attribute = true
82
90
  // Per ECMA-376, presence of element without val means "on"
@@ -2,9 +2,9 @@
2
2
  * Validation utilities for DOCX files
3
3
  */
4
4
 
5
- import { REQUIRED_DOCX_FILES } from '../zip/types';
6
- import { MissingRequiredFileError } from '../zip/errors';
7
- import { defaultLogger } from './logger';
5
+ import { REQUIRED_DOCX_FILES } from '../zip/types.js';
6
+ import { MissingRequiredFileError } from '../zip/errors.js';
7
+ import { defaultLogger } from './logger.js';
8
8
 
9
9
  /**
10
10
  * Validates that all required DOCX files are present
@@ -18,7 +18,7 @@
18
18
  * @module xmlSanitization
19
19
  */
20
20
 
21
- import { getGlobalLogger } from './logger';
21
+ import { getGlobalLogger } from './logger.js';
22
22
 
23
23
  /**
24
24
  * Regular expression matching invalid XML 1.0 control characters.
@@ -7,17 +7,17 @@
7
7
  * @module RevisionAutoFixer
8
8
  */
9
9
 
10
- import type { Document } from '../core/Document';
11
- import type { Revision } from '../elements/Revision';
12
- import type { RevisionManager } from '../elements/RevisionManager';
10
+ import type { Document } from '../core/Document.js';
11
+ import type { Revision } from '../elements/Revision.js';
12
+ import type { RevisionManager } from '../elements/RevisionManager.js';
13
13
  import {
14
14
  REVISION_RULES,
15
15
  AutoFixOptions,
16
16
  AutoFixResult,
17
17
  FixAction,
18
18
  ValidationIssue,
19
- } from './ValidationRules';
20
- import { RevisionValidator } from './RevisionValidator';
19
+ } from './ValidationRules.js';
20
+ import { RevisionValidator } from './RevisionValidator.js';
21
21
 
22
22
  /**
23
23
  * Automatically fixes revision validation issues.
@@ -7,15 +7,16 @@
7
7
  * @module RevisionValidator
8
8
  */
9
9
 
10
- import type { Document } from '../core/Document';
11
- import type { Revision } from '../elements/Revision';
10
+ import type { Document } from '../core/Document.js';
11
+ import type { Revision } from '../elements/Revision.js';
12
12
  import {
13
13
  REVISION_RULES,
14
14
  ValidationIssue,
15
15
  ValidationOptions,
16
16
  ValidationResult,
17
17
  createIssueFromRule,
18
- } from './ValidationRules';
18
+ } from './ValidationRules.js';
19
+ import { ValidationRuleRegistry } from './ValidationRuleRegistry.js';
19
20
 
20
21
  /**
21
22
  * Validates document revisions for ECMA-376 compliance.
@@ -41,12 +42,18 @@ export class RevisionValidator {
41
42
  */
42
43
  static validate(doc: Document, options?: ValidationOptions): ValidationResult {
43
44
  const revisionManager = doc.getRevisionManager();
45
+ const allIssues: ValidationIssue[] = [];
46
+
47
+ // Custom rules from ValidationRuleRegistry run regardless of whether
48
+ // the document has a revision manager — they validate document-level
49
+ // properties, not just revisions.
50
+ allIssues.push(...this.runCustomRules(doc));
51
+
44
52
  if (!revisionManager) {
45
- return this.createEmptyResult();
53
+ return this.finalize(allIssues, options);
46
54
  }
47
55
 
48
56
  const revisions = revisionManager.getAllRevisions();
49
- const allIssues: ValidationIssue[] = [];
50
57
 
51
58
  // Skip certain rules if lenient mode
52
59
  const skipRules = new Set(options?.skipRules || []);
@@ -82,16 +89,40 @@ export class RevisionValidator {
82
89
  allIssues.push(...this.validateRevisionDates(revisions));
83
90
  }
84
91
 
85
- // Apply max issues limit
92
+ return this.finalize(allIssues, options);
93
+ }
94
+
95
+ /**
96
+ * Run every rule in `ValidationRuleRegistry` against `doc` and convert
97
+ * the produced `CustomValidationIssue`s into the built-in
98
+ * `ValidationIssue` shape so they can be merged into the final result.
99
+ */
100
+ private static runCustomRules(doc: Document): ValidationIssue[] {
101
+ const customIssues = ValidationRuleRegistry.runAll(doc);
102
+ return customIssues.map((c) => ({
103
+ code: c.ruleCode,
104
+ severity: c.severity,
105
+ message: c.message,
106
+ location: c.location ? { element: c.location } : undefined,
107
+ autoFixable: false,
108
+ }));
109
+ }
110
+
111
+ /**
112
+ * Apply maxIssues / warningsAsErrors options and bucket the issues
113
+ * into the standard `ValidationResult` shape.
114
+ */
115
+ private static finalize(
116
+ allIssues: ValidationIssue[],
117
+ options?: ValidationOptions
118
+ ): ValidationResult {
86
119
  const limitedIssues = options?.maxIssues ? allIssues.slice(0, options.maxIssues) : allIssues;
87
120
 
88
- // Separate by severity
89
121
  let errors = limitedIssues.filter((i) => i.severity === 'error');
90
122
  let warnings = limitedIssues.filter((i) => i.severity === 'warning');
91
123
  const infos = limitedIssues.filter((i) => i.severity === 'info');
92
124
  const autoFixable = limitedIssues.filter((i) => i.autoFixable);
93
125
 
94
- // Handle warningsAsErrors option
95
126
  if (options?.warningsAsErrors) {
96
127
  errors = [...errors, ...warnings];
97
128
  warnings = [];
@@ -113,26 +144,6 @@ export class RevisionValidator {
113
144
  };
114
145
  }
115
146
 
116
- /**
117
- * Creates an empty validation result (for documents with no revisions).
118
- */
119
- private static createEmptyResult(): ValidationResult {
120
- return {
121
- valid: true,
122
- errors: [],
123
- warnings: [],
124
- infos: [],
125
- autoFixable: [],
126
- summary: {
127
- totalIssues: 0,
128
- errorCount: 0,
129
- warningCount: 0,
130
- infoCount: 0,
131
- autoFixableCount: 0,
132
- },
133
- };
134
- }
135
-
136
147
  /**
137
148
  * Validates revision ID uniqueness.
138
149
  *
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Plugin extension point for custom validation rules. Built-in rules
3
+ * live in `ValidationRules.ts`; this registry lets consumers add their
4
+ * own without modifying framework code. Custom rules run alongside the
5
+ * built-ins when `RevisionValidator.validate()` executes — the validator
6
+ * appends `runAll()` issues to its `infos`/`warnings`/`errors` buckets
7
+ * based on each rule's declared severity.
8
+ */
9
+ import type { Document } from '../core/Document.js';
10
+ import { KeyedRegistry } from '../utils/KeyedRegistry.js';
11
+
12
+ /**
13
+ * Severity for custom validation rules. Distinct from the built-in
14
+ * `ValidationSeverity` enum so the public API surface has no name
15
+ * collision.
16
+ */
17
+ export type CustomValidationSeverity = 'error' | 'warning' | 'info';
18
+
19
+ export interface CustomValidationIssue {
20
+ ruleCode: string;
21
+ severity: CustomValidationSeverity;
22
+ message: string;
23
+ /** Optional element identifier or path for navigation in tooling. */
24
+ location?: string;
25
+ }
26
+
27
+ export interface CustomValidationRule {
28
+ /** Unique rule identifier — must not collide with built-in rule codes. */
29
+ code: string;
30
+ /** Human-readable description of what the rule checks. */
31
+ description: string;
32
+ severity: CustomValidationSeverity;
33
+ /**
34
+ * Run the rule against a document and return any issues found.
35
+ * Synchronous — async rules should be wrapped externally.
36
+ */
37
+ validate(doc: Document): CustomValidationIssue[];
38
+ }
39
+
40
+ class ValidationRuleRegistryImpl {
41
+ private readonly inner = new KeyedRegistry<CustomValidationRule>('ValidationRuleRegistry');
42
+
43
+ register(rule: CustomValidationRule): void {
44
+ this.inner.register(rule.code, rule);
45
+ }
46
+
47
+ unregister(code: string): boolean {
48
+ return this.inner.unregister(code);
49
+ }
50
+
51
+ has(code: string): boolean {
52
+ return this.inner.has(code);
53
+ }
54
+
55
+ get(code: string): CustomValidationRule | undefined {
56
+ return this.inner.get(code);
57
+ }
58
+
59
+ getAll(): CustomValidationRule[] {
60
+ return this.inner.values();
61
+ }
62
+
63
+ /** Run every registered rule and concatenate the issues. A throwing
64
+ * rule is captured as a synthetic 'error' issue so consumers see it. */
65
+ runAll(doc: Document): CustomValidationIssue[] {
66
+ const out: CustomValidationIssue[] = [];
67
+ for (const rule of this.inner.values()) {
68
+ try {
69
+ out.push(...rule.validate(doc));
70
+ } catch {
71
+ out.push({
72
+ ruleCode: rule.code,
73
+ severity: 'error',
74
+ message: `Rule "${rule.code}" threw during validation`,
75
+ });
76
+ }
77
+ }
78
+ return out;
79
+ }
80
+
81
+ clear(): void {
82
+ this.inner.clear();
83
+ }
84
+ }
85
+
86
+ export const ValidationRuleRegistry = new ValidationRuleRegistryImpl();
@@ -21,10 +21,10 @@ export {
21
21
  getRuleByCode,
22
22
  getRulesBySeverity,
23
23
  getAutoFixableRules,
24
- } from './ValidationRules';
24
+ } from './ValidationRules.js';
25
25
 
26
26
  // Validator class
27
- export { RevisionValidator } from './RevisionValidator';
27
+ export { RevisionValidator } from './RevisionValidator.js';
28
28
 
29
29
  // Auto-fixer class
30
- export { RevisionAutoFixer } from './RevisionAutoFixer';
30
+ export { RevisionAutoFixer } from './RevisionAutoFixer.js';
@@ -3,9 +3,9 @@
3
3
  * Provides a simple fluent API for generating WordprocessingML XML
4
4
  */
5
5
 
6
- import { removeInvalidXmlChars } from '../utils/xmlSanitization';
7
- import type { ShadingConfig } from '../elements/CommonTypes';
8
- import { buildShadingAttributes } from '../elements/CommonTypes';
6
+ import { removeInvalidXmlChars } from '../utils/xmlSanitization.js';
7
+ import type { ShadingConfig } from '../elements/CommonTypes.js';
8
+ import { buildShadingAttributes } from '../elements/CommonTypes.js';
9
9
 
10
10
  /** Represents a parsed XML object from XMLParser.parseToObject() */
11
11
  // eslint-disable-next-line @typescript-eslint/no-explicit-any -- parsed XML has dynamic keys and recursive structure
@@ -759,6 +759,11 @@ export class XMLBuilder {
759
759
  size?: number;
760
760
  color?: string;
761
761
  space?: number;
762
+ themeColor?: string;
763
+ themeTint?: string;
764
+ themeShade?: string;
765
+ shadow?: boolean;
766
+ frame?: boolean;
762
767
  }
763
768
  ): XMLElement {
764
769
  const attrs = XMLBuilder.buildAttributes({
@@ -766,6 +771,11 @@ export class XMLBuilder {
766
771
  'w:sz': border.size,
767
772
  'w:color': border.color,
768
773
  'w:space': border.space,
774
+ 'w:themeColor': border.themeColor,
775
+ 'w:themeTint': border.themeTint,
776
+ 'w:themeShade': border.themeShade,
777
+ 'w:shadow': border.shadow === undefined ? undefined : border.shadow ? '1' : '0',
778
+ 'w:frame': border.frame === undefined ? undefined : border.frame ? '1' : '0',
769
779
  });
770
780
 
771
781
  return XMLBuilder.wSelf(side, attrs);
@@ -4,8 +4,8 @@
4
4
  * Completes the DocXML framework (XMLBuilder + XMLParser)
5
5
  */
6
6
 
7
- import { getGlobalLogger, createScopedLogger, ILogger } from '../utils/logger';
8
- import { XMLBuilder } from './XMLBuilder';
7
+ import { getGlobalLogger, createScopedLogger, ILogger } from '../utils/logger.js';
8
+ import { XMLBuilder } from './XMLBuilder.js';
9
9
 
10
10
  // Create scoped logger for XMLParser operations
11
11
  function getLogger(): ILogger {