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
@@ -1,142 +0,0 @@
1
- # Elements Module
2
-
3
- `src/elements/` — All document element classes (40 TypeScript files).
4
-
5
- ## Element Hierarchy
6
-
7
- ```
8
- Body Elements (added to document body)
9
- ├── Paragraph
10
- ├── Table
11
- ├── TableOfContents / TableOfContentsElement
12
- ├── StructuredDocumentTag
13
- ├── AlternateContent # mc:AlternateContent raw XML passthrough
14
- ├── MathParagraph # m:oMathPara raw XML passthrough
15
- ├── CustomXmlBlock # w:customXml raw XML passthrough
16
- └── PreservedElement # Generic XML passthrough (block context)
17
-
18
- Inline Elements (within paragraphs)
19
- ├── Run (formatted text span)
20
- ├── ImageRun (inline image)
21
- ├── Hyperlink
22
- ├── Bookmark / RangeMarker
23
- ├── Field
24
- ├── Comment (anchor)
25
- ├── Footnote/Endnote (reference)
26
- ├── StructuredDocumentTag (inline)
27
- ├── MathExpression # m:oMath inline raw XML passthrough
28
- └── PreservedElement (inline)
29
-
30
- Header/Footer Elements
31
- ├── Header / Footer
32
- └── Section (page setup, header/footer references)
33
- ```
34
-
35
- ## Core Elements
36
-
37
- ### Paragraph (`Paragraph.ts`)
38
-
39
- Container for text and inline content. Key formatting: `alignment`, `spacing`, `indentation`, `pPrChange` (revision tracking), `keepNext`/`keepLines`/`pageBreakBefore` (pagination).
40
-
41
- **CT_OnOff properties:** `keepNext`, `keepLines`, `pageBreakBefore`, `suppressLineNumbers`, `suppressAutoHyphens`, `contextualSpacing`, `mirrorIndents`, `suppressOverlap` all use `!== undefined` semantics with `w:val` attribute, supporting explicit `false` to override style inheritance.
42
-
43
- **Rule:** `setKeepNext(true)` / `setKeepLines(true)` auto-clears `pageBreakBefore` to `undefined` (absent, not explicit false).
44
-
45
- **Alignment:** `ParagraphAlignment` includes bidi-aware values (`start`, `end`), CJK (`distribute`), Arabic kashida (`mediumKashida`, `highKashida`, `lowKashida`), and Thai (`thaiDistribute`).
46
-
47
- **w14 attributes:** `paraId` and `textId` (Word 2010+) are auto-generated for new paragraphs during `prepareSave()`. Values are 8-char hex, must be < `0x80000000`.
48
-
49
- CJK methods: `setKinsoku()`, `setWordWrap()`, `setOverflowPunct()`, `setTopLinePunct()`, `setAutoSpaceDE()`, `setAutoSpaceDN()`.
50
-
51
- ### Run (`Run.ts`)
52
-
53
- Formatted text span. Character formatting (bold, italic, underline, strikethrough), font properties, color (hex or `'auto'`), highlight, special chars (tabs, breaks, symbols), complex script support.
54
-
55
- **CT_OnOff properties:** Boolean properties use `!== undefined` semantics: `undefined` = inherit from style, `true` = on, `false` = explicitly off (`w:val="0"`). This applies to: bold, bCs, italic, iCs, caps, smallCaps, strike, dstrike, snapToGrid.
56
-
57
- **Vertical alignment:** `setSubscript()`, `setSuperscript()`, and `vertAlignBaseline` field for explicit baseline reset per ST_VerticalAlignRun.
58
-
59
- Theme fonts: `setFontAsciiTheme()`, `setFontHAnsiTheme()`, `setFontEastAsiaTheme()`, `setFontCsTheme()`.
60
- Underline: `setUnderlineColor()`, `setUnderlineThemeColor()`.
61
- w14 effects: `addRawW14Property(xml)` for Word 2010+ ligatures, numForm, textOutline.
62
- Form fields: `FormFieldData`, `FormFieldTextInput`, `FormFieldCheckBox`, `FormFieldDropDownList` interfaces.
63
-
64
- **Static helper:** `Run.generateRunPropertiesXML(formatting)` — generates `w:rPr` with all 38+ CT_RPr elements in strict ECMA-376 order. Used by both Run and Style serialization.
65
-
66
- ### Table (`Table.ts`, `TableRow.ts`, `TableCell.ts`)
67
-
68
- Row/column management, cell merging (horizontal + vertical), border styling, property change tracking (`w:tblPrChange`), inter-row content preservation (bookmarks, comments between rows).
69
-
70
- Navigation: `getFirstParagraph()`, `getLastParagraph()`.
71
- Layout: `getLayout()` returns `'fixed'` or `'auto'`.
72
- Legacy merge: `setHorizontalMerge()` / `getHorizontalMerge()` (hMerge).
73
-
74
- **Constraints:** `removeRow()` prevents removing the last row (ECMA-376 requires >= 1 row). `insertRow()`/`insertRows()` use grid span count for correct column count with merged cells. `tblPrEx` is serialized before `trPr` in `w:tr` per CT_Row.
75
-
76
- **TableRow:** `setHeightRule(rule)` sets height rule independently. When `w:hRule` is absent, the spec default is `"auto"` (not `"atLeast"`).
77
-
78
- **Nested Tables:** Raw XML passthrough via `TableCell.rawNestedContent[]`.
79
- ```typescript
80
- cell.addRawNestedContent(position, xml, "table")
81
- cell.getRawNestedContent()
82
- cell.hasNestedTables()
83
- ```
84
-
85
- **Inter-Row Content:** Per ECMA-376, elements like bookmarkEnd can appear between rows.
86
- ```typescript
87
- table.addInterRowContent(afterRowIndex, xml, type)
88
- table.getInterRowContent()
89
- ```
90
-
91
- ### Image (`Image.ts`, `ImageRun.ts`)
92
-
93
- PNG/JPEG/GIF/SVG/EMF/WMF with buffer-based format detection. Inline and floating positioning. Full ECMA-376 attribute coverage: presetGeometry, compressionState, bwMode, picLocks, inline dist, transparency (`a:alphaModFix`), enhanced border model (`ImageBorder`), 9 raw XML passthrough slots, linked images (`r:link`), SVG dual-relationship (`asvg:svgBlip`).
94
-
95
- ## Revision System
96
-
97
- ### Revision (`Revision.ts`)
98
-
99
- Types: `insert`, `delete`, `moveFrom`, `moveTo`, `runPropertiesChange`, `paragraphPropertiesChange`, `tablePropertiesChange`, `tableCellInsert`, `tableCellDelete`, `tableCellMerge`, `numberingChange`, `sectionPropertiesChange`.
100
-
101
- ### RevisionManager (`RevisionManager.ts`)
102
-
103
- Registration, retrieval, category/author/date filtering, location-aware queries, statistics, validation (duplicate IDs, orphaned moves).
104
-
105
- ### MoveOperationHelper (`../utils/MoveOperationHelper.ts`)
106
-
107
- Creates complete move operations with all required ECMA-376 range markers (`moveFromRangeStart/End`, `moveToRangeStart/End`). Without range markers, Word displays moves as separate delete+insert pairs.
108
-
109
- ```typescript
110
- MoveOperationHelper.addMoveOperation(sourcePara, destPara, {
111
- author: 'John Doe',
112
- content: new Run('moved text'),
113
- });
114
- ```
115
-
116
- ## Other Elements
117
-
118
- - **Hyperlink**: Internal/external URLs, tooltip, relationship management
119
- - **Bookmark / BookmarkManager**: Named locations, cross-references, unique ID assignment
120
- - **Field / FieldHelpers**: MERGEFIELD, DATE, TIME, PAGE, NUMPAGES, TOC, REF
121
- - **Comment / CommentManager**: Author/date, reply threading, anchor positioning
122
- - **Header / Footer / HeaderFooterManager**: Default, first page, even pages
123
- - **Section**: Page size, margins, orientation, columns, page numbering
124
- - **Footnote / Endnote / FootnoteManager / EndnoteManager**: Note content, numbering, separators
125
- - **StructuredDocumentTag**: Rich/plain text, date pickers, dropdowns, checkboxes
126
- - **Shape / TextBox**: Basic shapes, text boxes with content
127
- - **FontManager**: Font table and declarations
128
- - **ImageManager**: Image collection with relationship handling
129
-
130
- ## Preserved Element Classes
131
-
132
- Store elements as raw XML for round-trip fidelity (internal structure not modified by framework):
133
- - **AlternateContent**: `mc:AlternateContent` — Word 2010+ drawing with VML fallback
134
- - **MathParagraph / MathExpression**: `m:oMathPara` / `m:oMath` — math content
135
- - **CustomXmlBlock**: `w:customXml` — embedded custom XML
136
- - **PreservedElement**: Generic wrapper for `w:proofErr`, `w:permStart`, `w:permEnd`, `w:altChunk`, `w:ruby`
137
-
138
- All share the same API pattern: `constructor(rawXml)`, `toXML()`, `getRawXml()`, `getType()`.
139
-
140
- ## Serialization
141
-
142
- Every element has `toXML()` returning `XMLElement { name, attributes, children }`. Elements don't hold references to their parent document.
@@ -1,78 +0,0 @@
1
- # Formatting Module
2
-
3
- `src/formatting/` — Styles and numbering systems.
4
-
5
- ## Style System
6
-
7
- ### Style (`Style.ts`)
8
-
9
- Types: `paragraph`, `character`, `table`, `numbering`.
10
-
11
- Properties: `styleId`, `type`, `name`, `basedOn` (inheritance), `next`, `link`, `runFormatting`, `paragraphFormatting`, `tableFormatting`, `isDefault`.
12
-
13
- **Inheritance:** Styles inherit via `basedOn`. Resolution: default → basedOn chain → own formatting.
14
-
15
- **Run properties:** Style.ts delegates rPr generation to `Run.generateRunPropertiesXML()` for full ECMA-376 CT_RPr coverage (38+ elements in correct order).
16
-
17
- **Conditional formatting:** `tblStylePr` elements follow CT_Style order: pPr → rPr → tblPr → trPr → tcPr.
18
-
19
- Built-in styles: `Normal`, `Heading1`-`Heading6`, `Title`, `Subtitle`, `DefaultParagraphFont`, `TableGrid`.
20
-
21
- ### StylesManager (`StylesManager.ts`)
22
-
23
- Stores, validates, generates `word/styles.xml`, parses from existing documents. Validates unique IDs, basedOn existence, no circular inheritance.
24
-
25
- ## Numbering System
26
-
27
- ### Concepts
28
-
29
- - **AbstractNumbering**: Reusable template defining structure (up to 9 levels) with format/indentation per level
30
- - **NumberingInstance**: Links abstract numbering to usage (referenced by paragraphs via numId). Can override levels.
31
- - **NumberingLevel**: Format for one level — format type, text pattern, alignment, indentation, font
32
-
33
- ### NumberingLevel (`NumberingLevel.ts`)
34
-
35
- **Formats:** `decimal`, `upperRoman`, `lowerRoman`, `upperLetter`, `lowerLetter`, `bullet`.
36
-
37
- **Level text:** `%1.` (level 1 number), `%1.%2.` (two levels), `•` (bullet).
38
-
39
- **Standard indentation:** `leftIndent = 720 + (level * 360)` twips, `hangingIndent = 360` twips.
40
-
41
- **Factory methods:**
42
- ```typescript
43
- NumberingLevel.createBulletLevel(level, symbol)
44
- NumberingLevel.createNumberedLevel(level, format, text)
45
- NumberingLevel.calculateStandardIndentation(level)
46
- NumberingLevel.getBulletSymbolWithFont(level, style)
47
- ```
48
-
49
- **Text formatting:** `setItalic()`, `setUnderline(style)`, `setBold()`, `setColor()`.
50
-
51
- ### AbstractNumbering (`AbstractNumbering.ts`)
52
-
53
- ```typescript
54
- AbstractNumbering.createNumberedList(id, maxLevels) // 1., 2., 3.
55
- AbstractNumbering.createBulletedList(id, maxLevels) // bullet symbols
56
- ```
57
-
58
- ### NumberingInstance (`NumberingInstance.ts`)
59
-
60
- Links to abstract numbering. Level overrides:
61
- ```typescript
62
- const instance = new NumberingInstance(numId, abstractNumId);
63
- instance.addLevelOverride(0, customLevel);
64
- ```
65
-
66
- ### NumberingManager (`NumberingManager.ts`)
67
-
68
- Manages abstract numberings + instances. Generates `word/numbering.xml`. Assigns unique IDs.
69
-
70
- ```typescript
71
- manager.addAbstractNumbering(abstractNum);
72
- manager.addNumberingInstance(instance);
73
- paragraph.setNumbering(numId, level);
74
- ```
75
-
76
- ## Key Behavior: Indentation vs Numbering
77
-
78
- Per ECMA-376 §17.3.1.12, paragraph-level indentation overrides numbering-level indentation. The framework auto-clears conflicting paragraph indentation when numbering is applied (left, firstLine, hanging cleared; right preserved). To change list indentation, change the numbering **level** instead of setting indent directly.
@@ -1,47 +0,0 @@
1
- # Managers Module
2
-
3
- `src/managers/` — Specialized manager classes for document features.
4
-
5
- ## Manager Pattern
6
-
7
- Managers encapsulate complex operations for specific features. Common interface: `add`, `get`, `getAll`, `remove`, `dispose`. All managers are created by Document and accessed via getters (e.g., `doc.getImageManager()`). Always access through Document — never instantiate directly.
8
-
9
- ## DrawingManager (`DrawingManager.ts`)
10
-
11
- Manages shapes, text boxes, and preserved drawings. Drawing types: `shape`, `picture`, `textBox`, `diagram`, `chart`, `preserved`.
12
-
13
- **PreservedDrawing:** Unknown drawing elements stored as raw XML during parsing for round-trip fidelity.
14
-
15
- ```typescript
16
- const drawingManager = doc.getDrawingManager();
17
- drawingManager.addDrawing(shape);
18
- drawingManager.getAllDrawings();
19
- ```
20
-
21
- ## Related Managers (in other modules)
22
-
23
- | Manager | Location | Purpose |
24
- |---------|----------|---------|
25
- | ImageManager | `src/elements/` | Image buffering, relationship management, format detection |
26
- | HeaderFooterManager | `src/elements/` | Default/first/even page headers and footers |
27
- | BookmarkManager | `src/elements/` | Bookmark registration, unique IDs, start/end pairing |
28
- | CommentManager | `src/elements/` | Comment storage, author tracking, reply threading |
29
- | RevisionManager | `src/elements/` | Track changes, RSID management |
30
- | FootnoteManager | `src/elements/` | Footnote numbering, separators |
31
- | EndnoteManager | `src/elements/` | Endnote numbering, separators |
32
- | FontManager | `src/elements/` | Font table declarations |
33
- | StylesManager | `src/formatting/` | Style definitions, validation, inheritance |
34
- | NumberingManager | `src/formatting/` | List numbering definitions |
35
- | RelationshipManager | `src/core/` | Document part relationships |
36
-
37
- ## Lifecycle
38
-
39
- 1. **Init:** Created when Document is instantiated
40
- 2. **Use:** Accessed via `doc.get*Manager()` getters
41
- 3. **Cleanup:** All disposed when `doc.dispose()` is called
42
-
43
- ## Best Practices
44
-
45
- - Check existence before adding: `if (!manager.hasBookmark('name')) { ... }`
46
- - Use manager methods over manual calculation (e.g., `imageManager.getTotalImageSize()`)
47
- - Always call `doc.dispose()` — cleans up all managers
@@ -1,30 +0,0 @@
1
- # Tracking Module
2
-
3
- `src/tracking/` — Change tracking context for revision-aware document editing.
4
-
5
- ## Interfaces & Classes
6
-
7
- ### TrackingContext (interface)
8
-
9
- Contract for tracking changes on document elements. Methods:
10
-
11
- - `trackRunPropertyChange(run, previousProps)` — creates `w:rPrChange`
12
- - `trackParagraphPropertyChange(para, previousProps)` — creates `w:pPrChange`
13
- - `trackTableChange(table, previousProps)` — creates `w:tblPrChange`
14
- - `trackInsertion(element)` / `trackDeletion(element)` — wraps in `w:ins`/`w:del`
15
- - `flushPendingChanges()` — converts queued changes to Revision objects
16
- - `isEnabled()` — check if tracking is active
17
-
18
- ### DocumentTrackingContext (`DocumentTrackingContext.ts`)
19
-
20
- Implementation of `TrackingContext`. Key behaviors:
21
-
22
- - **State:** enabled flag, author name, `trackFormatting` toggle, pending changes map
23
- - **Consolidation:** Groups changes by element with time-window keys to batch similar edits (prevents one revision per keystroke)
24
- - **PrChange application:** Creates/merges `*PrChange` markers (`rPrChange`, `pPrChange`, `tblPrChange`, `tcPrChange`, `sectPrChange`) per ECMA-376
25
- - **Full snapshot tracking:** Stores complete previous properties (not deltas) for table/cell/section changes
26
- - **WeakMap for element IDs:** Prevents GC issues with stable element references
27
-
28
- ## Key Pattern
29
-
30
- Call `doc.flushPendingChanges()` before inspecting `pPrChange` or `rPrChange` in tests — pending changes are batched and only materialized on flush or save.
@@ -1,39 +0,0 @@
1
- # Types Module
2
-
3
- `src/types/` — TypeScript type definitions shared across modules.
4
-
5
- ## Files
6
-
7
- ### `formatting.ts`
8
- Formatting-related types used by Document search/replace and paragraph formatting:
9
- - `BorderStyleType`, `BorderStyle`, `ParagraphBorder` — border definitions
10
- - `ShadingPattern`, `ParagraphShading` — re-exported from CommonTypes
11
- - `TabAlignment`, `TabLeader`, `TabStop` — tab stop configuration
12
- - `FindOptions`, `ReplaceOptions`, `SearchResult` — text search/replace options
13
- - `EmphasisType`, `ListPrefix`, `FormatOptions`, `StyleApplyOptions` — style application
14
-
15
- ### `styleConfig.ts`
16
- Style configuration interfaces for Document's style application methods:
17
- - `StyleRunFormatting` — character-level formatting (font, size, bold, etc.)
18
- - `StyleParagraphFormatting` — paragraph-level formatting (alignment, spacing, indentation)
19
- - `StyleConfig`, `Heading2Config`, `NormalConfig` — predefined style configurations
20
- - `ApplyStylesOptions` — options for `doc.applyStyles()` / `doc.applyStylesFromObjects()`
21
- - `ApplyCustomFormattingOptions` — deprecated alias for `ApplyStylesOptions`
22
-
23
- ### `settings-types.ts`
24
- Document settings interfaces:
25
- - `DocumentProtection` — password protection settings
26
- - `RevisionViewSettings` — revision display mode
27
- - `TrackChangesSettings` — track changes configuration
28
- - `WebSettingsInfo` — web settings (div cleanup, encoding)
29
-
30
- ### `list-types.ts`
31
- List detection and normalization:
32
- - `ListCategory`, `NumberFormat`, `BulletFormat` — list type classification
33
- - `ListDetectionResult`, `ListAnalysis` — detection output
34
- - `ListNormalizationOptions`, `ListNormalizationReport` — normalization config/results
35
-
36
- ### `compatibility-types.ts`
37
- Word compatibility mode types:
38
- - `CompatSetting` — individual compatibility setting (name, uri, val)
39
- - `CompatibilityInfo` — full compatibility state (mode value, legacy flags, modern settings)
@@ -1,168 +0,0 @@
1
- # Utils Module
2
-
3
- `src/utils/` — Standalone utilities (22 TypeScript files) for unit conversions, revision processing, validation, logging, and helpers.
4
-
5
- ## Architecture Classification
6
-
7
- **Pure utilities** (no element/core imports — safe to use anywhere):
8
- - `units.ts`, `validation.ts`, `deepClone.ts`, `dateFormatting.ts`, `errorHandling.ts`
9
- - `xmlSanitization.ts`, `formatting.ts`, `parsingHelpers.ts`, `logger.ts`, `diagnostics.ts`
10
- - `textDiff.ts`, `list-detection.ts`, `corruptionDetection.ts`
11
-
12
- **Domain-specific processors** (import from elements/core — should arguably be in `src/processors/`):
13
- - `acceptRevisions.ts`, `RevisionWalker.ts`, `InMemoryRevisionAcceptor.ts`
14
- - `SelectiveRevisionAcceptor.ts`, `RevisionAwareProcessor.ts`, `MoveOperationHelper.ts`
15
- - `ChangelogGenerator.ts`, `ShadingResolver.ts`, `stripTrackedChanges.ts`
16
- - `CompatibilityUpgrader.ts`, `cnfStyleDecoder.ts`
17
-
18
- This split explains the 36+ dependency-cruiser warnings about utils importing elements — the domain-specific files are processors, not pure utilities.
19
-
20
- ## Unit Conversions (`units.ts`)
21
-
22
- 40+ conversion functions between twips, EMUs, points, half-points, pixels, inches, centimeters.
23
-
24
- Key constants: 1 inch = 1440 twips = 914400 EMUs = 72 points. 1 point = 20 twips. Font sizes use half-points.
25
-
26
- ## Validation (`validation.ts`)
27
-
28
- - `validateRunText(text)` — Detects XML patterns accidentally passed as text
29
- - `cleanXmlFromText(text)` — Removes XML patterns from text
30
- - `isValidDocxStructure(files)` — Validates DOCX file structure
31
-
32
- ## Corruption Detection (`corruptionDetection.ts`)
33
-
34
- ```typescript
35
- const report = detectCorruptionInDocument(doc);
36
- // report: { isCorrupted, summary, locations: [{ suggestedFix }] }
37
- ```
38
-
39
- Detects XML markup in text, invalid characters, malformed structures.
40
-
41
- ## XML Sanitization (`xmlSanitization.ts`)
42
-
43
- XML 1.0 control character validation. Auto-applied by `XMLBuilder.escapeXmlText()`.
44
-
45
- - `removeInvalidXmlChars(text)` — Strips 0x00-0x08, 0x0B-0x0C, 0x0E-0x1F, 0x7F
46
- - `hasInvalidXmlChars(text)` / `findInvalidXmlChars(text)`
47
- - Tab (0x09), newline (0x0A), CR (0x0D) are preserved
48
-
49
- ## Parsing Helpers (`parsingHelpers.ts`)
50
-
51
- Safe OOXML attribute parsing with zero-value edge case handling:
52
-
53
- - `safeParseInt(value, default?)` — NaN-safe integer parsing
54
- - `parseOoxmlBoolean(prop)` — Handles self-closing tags, `val="1"`, `val="true"`, `val="on"`
55
- - `isExplicitlySet(value)` — Handles 0 correctly (common bug: treating 0 as falsy)
56
- - `parseNumericAttribute(value, default?)` — Zero-safe numeric parsing
57
-
58
- ## Formatting Utilities (`formatting.ts`)
59
-
60
- - `normalizeColor(color)` — Uppercase 6-char hex
61
-
62
- ## Deep Clone (`deepClone.ts`)
63
-
64
- - `deepClone<T>(obj)` — Safe deep cloning
65
-
66
- ## Date Formatting (`dateFormatting.ts`)
67
-
68
- - `formatDateForXml(date)` — ISO 8601 without milliseconds (Word rejects dates with ms in `w:date`)
69
-
70
- ## Revision Processing
71
-
72
- ### acceptRevisions (`acceptRevisions.ts`)
73
-
74
- Main entry point for accepting tracked changes via raw XML:
75
- ```typescript
76
- await acceptAllRevisions(zipHandler, options?)
77
- // Options: acceptInsertions, acceptDeletions, acceptMoves, acceptPropertyChanges, useDomParser
78
- ```
79
- Processes document.xml + all headers/footers, remaps image relationship IDs, cleans metadata.
80
-
81
- ### RevisionWalker (`RevisionWalker.ts`)
82
-
83
- DOM-based tree walker for revision acceptance. Handles nested revisions, preserves element order via `_orderedChildren`. ReDoS-safe.
84
-
85
- ### ChangelogGenerator (`ChangelogGenerator.ts`)
86
-
87
- Converts revisions to structured changelog data:
88
- ```typescript
89
- const entries = ChangelogGenerator.fromDocument(doc, options?);
90
- ChangelogGenerator.toMarkdown(entries) // Also: toJSON, toHTML, toCSV
91
- ChangelogGenerator.getSummary(entries)
92
- ChangelogGenerator.consolidate(entries)
93
- ```
94
- Options: `includeFormattingChanges`, `consolidate`, `filterAuthors`, `filterCategories`, `sortBy`, `sortOrder`.
95
-
96
- ### SelectiveRevisionAcceptor (`SelectiveRevisionAcceptor.ts`)
97
-
98
- Accept/reject revisions by criteria (authors, types, date range, categories).
99
-
100
- ### MoveOperationHelper (`MoveOperationHelper.ts`)
101
-
102
- Creates complete move operations with ECMA-376 range markers. See `src/elements/CLAUDE.md` for usage.
103
-
104
- ### stripTrackedChanges (`stripTrackedChanges.ts`)
105
-
106
- Removes all revision markup: `await stripTrackedChanges(zipHandler)`.
107
-
108
- ## Text Diff (`textDiff.ts`)
109
-
110
- Character-level diff for granular tracking in `Run.setText()`:
111
- ```typescript
112
- const segments = diffText('Hello World', 'Hello Earth');
113
- // [{ type: 'equal', text: 'Hello ' }, { type: 'delete', text: 'World' }, { type: 'insert', text: 'Earth' }]
114
- if (diffHasUnchangedParts(segments)) { /* granular tracking */ }
115
- ```
116
-
117
- ## Compatibility Utilities
118
-
119
- ### CompatibilityUpgrader (`CompatibilityUpgrader.ts`)
120
-
121
- Upgrades `w:compat` blocks to modern Word 2013+ format. Used by `Document.upgradeToModernFormat()`.
122
-
123
- Related constants in `src/constants/legacyCompatFlags.ts`:
124
- - `LEGACY_COMPAT_ELEMENTS` — 65 legacy boolean flags
125
- - `MODERN_COMPAT_SETTINGS` — 5 default modern settings
126
- - `MS_WORD_COMPAT_URI` — Microsoft namespace URI
127
-
128
- ## Logging (`logger.ts`)
129
-
130
- **Levels:** `DEBUG`, `INFO`, `WARN`, `ERROR`
131
-
132
- **Implementations:** `ConsoleLogger` (timestamps), `SilentLogger` (no output), `CollectingLogger` (in-memory).
133
-
134
- **Environment:**
135
- ```bash
136
- DOCXMLATER_LOG_LEVEL=info npm test # info/debug/silent
137
- DEBUG=docxmlater npm test
138
- ```
139
-
140
- **Programmatic:**
141
- ```typescript
142
- import { setGlobalLogger, ConsoleLogger, LogLevel } from 'docxmlater';
143
- setGlobalLogger(new ConsoleLogger(LogLevel.INFO));
144
- ```
145
-
146
- **Scoped:**
147
- ```typescript
148
- const logger = createScopedLogger(getGlobalLogger(), 'MyComponent');
149
- logger.info('Done', { count: 10 });
150
- // Output: 12:34:56.789 [INFO ] [MyComponent] Done count=10
151
- ```
152
-
153
- | Component | INFO | DEBUG |
154
- |-----------|------|-------|
155
- | Document | Load/save ops | + details |
156
- | ZipHandler | File ops, validation | + counts, sizes |
157
- | DocumentParser | Completion, warnings | + element counts |
158
- | DocumentGenerator | Generation steps | + XML sizes |
159
- | RevisionManager | Clear, summary | + each registration |
160
-
161
- ## Error Handling (`errorHandling.ts`)
162
-
163
- `DocXMLaterError` → `InvalidDocxError`, `ParseError`, `ValidationError`.
164
-
165
- ## Diagnostics (`diagnostics.ts`)
166
-
167
- - `debugXmlStructure(xml)` — Debug XML structure
168
- - `inspectElement(element)` — Element inspection
@@ -1,40 +0,0 @@
1
- # Validation Module
2
-
3
- `src/validation/` — Revision validation, rule definitions, and auto-fix.
4
-
5
- ## Classes
6
-
7
- ### RevisionValidator (`RevisionValidator.ts`)
8
-
9
- Static validation class. Entry point: `validate(doc, options?)`.
10
-
11
- Runs all rules with configurable strictness (`strict` / `normal` / `lenient`). Returns `ValidationResult` with categorized issues (errors, warnings, infos) and summary stats.
12
-
13
- Individual validators: `validateRevisionIds()`, `validateMovePairs()`, `validateAuthors()`, `validateDates()`, `validateContent()`, `validateSequentialIds()`.
14
-
15
- ### ValidationRules (`ValidationRules.ts`)
16
-
17
- 10 rules organized by severity:
18
-
19
- | Rule | Severity | Description | Auto-fixable |
20
- |--------|----------|----------------------------|-------------|
21
- | REV001 | Error | Duplicate revision IDs | Yes |
22
- | REV002 | Error | Missing authors | Yes |
23
- | REV003 | Error | Orphaned moveFrom | Yes |
24
- | REV004 | Error | Orphaned moveTo | Yes |
25
- | REV101 | Warning | Missing dates | Yes |
26
- | REV102 | Warning | Invalid date format | Yes |
27
- | REV103 | Warning | Empty revisions | Yes |
28
- | REV104 | Warning | Non-sequential IDs | Yes |
29
- | REV201 | Info | Large revision count | No |
30
- | REV202 | Info | Old revision dates | No |
31
-
32
- **Auto-fix dependency order:** REV001 -> REV002 -> REV003/004 -> REV103 -> REV104
33
-
34
- ### RevisionAutoFixer (`RevisionAutoFixer.ts`)
35
-
36
- Applies fixes in correct dependency order. Supports dry-run mode via `preview()`.
37
-
38
- Entry point: `fix(doc, options?)`. Returns `AutoFixResult` with detailed actions taken.
39
-
40
- Individual fixers: `fixDuplicateIds()`, `fixMissingAuthors()`, `fixOrphanedMoveMarkers()`, `fixEmptyRevisions()`, `fixNonSequentialIds()`.
package/src/xml/CLAUDE.md DELETED
@@ -1,65 +0,0 @@
1
- # XML Module
2
-
3
- `src/xml/` — XML generation and parsing (2 files).
4
-
5
- ## XMLBuilder (`XMLBuilder.ts`)
6
-
7
- Generates well-formed XML using DOM-like approach (not string concatenation) to prevent injection.
8
-
9
- **Key methods:**
10
- - `createDocument(rootTag, namespaces, children)` — Root element with namespaces. Auto-generates `mc:Ignorable` when extended namespaces (w14, w15, wp14, w16se, etc.) are present.
11
- - `wElement(name, attributes, children)` — Element with `w:` namespace
12
- - `wSelf(name, attributes)` — Self-closing `w:` element
13
- - `escapeXmlText(text)` / `escapeXmlAttribute(value)` — Includes XML 1.0 character sanitization
14
-
15
- ## XMLParser (`XMLParser.ts`)
16
-
17
- Position-based parser (ReDoS-safe). Maximum nesting depth: 256.
18
-
19
- **`parseToObject(xml, options?)`** — Returns fast-xml-parser compatible format:
20
-
21
- | Feature | Format |
22
- |---------|--------|
23
- | Attributes | `@_` prefix (`@_Id`, `@_Type`) |
24
- | Text content | `#text` property |
25
- | Multiple same-name children | Array `[]` |
26
- | Single child | Object `{}` |
27
- | Self-closing tags | Empty object `{}` |
28
- | Namespaces | Preserved in keys (`w:p`, `w:r`) |
29
- | Element order | `_orderedChildren` array |
30
-
31
- **Options:**
32
- ```typescript
33
- interface ParseToObjectOptions {
34
- ignoreAttributes?: boolean; // default: false
35
- attributeNamePrefix?: string; // default: '@_'
36
- textNodeName?: string; // default: '#text'
37
- parseAttributeValue?: boolean; // default: true (numbers/booleans)
38
- trimValues?: boolean; // default: true
39
- alwaysArray?: boolean; // default: false
40
- maxNestingDepth?: number; // default: 256
41
- ignoreNamespace?: boolean; // default: false
42
- }
43
- ```
44
-
45
- **Element Order (`_orderedChildren`):**
46
-
47
- Critical for parsing mixed content like runs with interleaved tabs and breaks:
48
-
49
- ```typescript
50
- const xml = `<w:r><w:t>Hello</w:t><w:tab/><w:t>World</w:t></w:r>`;
51
- const result = XMLParser.parseToObject(xml);
52
- // result["w:r"]._orderedChildren = [
53
- // { type: "w:t", index: 0 },
54
- // { type: "w:tab", index: 0 },
55
- // { type: "w:t", index: 1 }
56
- // ]
57
- ```
58
-
59
- `type` = element tag name, `index` = position within elements of that type.
60
-
61
- ## Testing
62
-
63
- - `tests/xml/XMLBuilder.test.ts` — Builder tests
64
- - `tests/xml/XMLBuilder-sanitization.test.ts` — 41 sanitization tests
65
- - `tests/xml/XMLParser.test.ts` — 39 parser tests
package/src/zip/CLAUDE.md DELETED
@@ -1,55 +0,0 @@
1
- # ZIP Module
2
-
3
- `src/zip/` — DOCX/ZIP archive handling (5 files). Dependency: JSZip.
4
-
5
- ## Classes
6
-
7
- ### ZipHandler (`ZipHandler.ts`)
8
-
9
- High-level facade combining ZipReader/ZipWriter. Used by Document for all file I/O.
10
-
11
- ```typescript
12
- await zipHandler.loadFromFile(filepath) / loadFromBuffer(buffer)
13
- await zipHandler.saveToFile(filepath) / toBuffer()
14
- zipHandler.addFile(path, content) // string or Buffer
15
- zipHandler.getFile(path) // returns string | undefined
16
- zipHandler.hasFile(path) / getFileNames()
17
- ```
18
-
19
- ### ZipReader (`ZipReader.ts`)
20
-
21
- Reads/extracts from DOCX/ZIP. UTF-8 text extraction, binary file extraction, size validation.
22
-
23
- ### ZipWriter (`ZipWriter.ts`)
24
-
25
- Creates DOCX/ZIP archives. UTF-8 string → Buffer conversion, compression control.
26
-
27
- ## Types and Constants (`types.ts`)
28
-
29
- `DOCX_PATHS` — Standard file paths (`CONTENT_TYPES`, `RELS`, `DOCUMENT`, `STYLES`, `NUMBERING`, `SETTINGS`, `FONT_TABLE`, `THEME`, `CORE_PROPS`, `APP_PROPS`, `FOOTNOTES`, `ENDNOTES`, etc.).
30
-
31
- `REQUIRED_DOCX_FILES` — Files required for valid DOCX.
32
-
33
- `SizeLimitOptions` — Warning (50MB) and max (150MB) size limits.
34
-
35
- ## Error Types (`errors.ts`)
36
-
37
- `DocxError` (base) → `DocxNotFoundError`, `InvalidDocxError`, `CorruptedArchiveError`, `MissingRequiredFileError`, `FileOperationError`.
38
-
39
- ## UTF-8 Encoding
40
-
41
- All text is UTF-8 per ECMA-376:
42
- - `ZipWriter.addFile()` converts strings to UTF-8 Buffers
43
- - `ZipReader` extracts text as UTF-8 strings
44
- - Binary files (images) preserved as-is
45
- - XML declarations include `encoding="UTF-8"`
46
-
47
- Supports: ASCII, Latin diacritics, Greek, Cyrillic, Arabic, Hebrew, Devanagari, CJK, emoji, RTL.
48
-
49
- ## Security
50
-
51
- File paths validated against path traversal (`../`, absolute paths, URL-encoded sequences).
52
-
53
- ## Testing
54
-
55
- `tests/zip/ZipHandler.test.ts` — 62 tests including 11 UTF-8 encoding tests.
File without changes