docxmlater 10.0.2 → 10.0.3

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 (393) hide show
  1. package/README.md +2 -2
  2. package/dist/constants/legacyCompatFlags.d.ts.map +1 -1
  3. package/dist/constants/legacyCompatFlags.js.map +1 -1
  4. package/dist/constants/limits.d.ts +0 -27
  5. package/dist/constants/limits.d.ts.map +1 -1
  6. package/dist/constants/limits.js +13 -13
  7. package/dist/constants/limits.js.map +1 -1
  8. package/dist/core/Document.d.ts +23 -19
  9. package/dist/core/Document.d.ts.map +1 -1
  10. package/dist/core/Document.js +197 -63
  11. package/dist/core/Document.js.map +1 -1
  12. package/dist/core/DocumentContent.d.ts.map +1 -1
  13. package/dist/core/DocumentContent.js.map +1 -1
  14. package/dist/core/DocumentGenerator.d.ts.map +1 -1
  15. package/dist/core/DocumentGenerator.js +59 -24
  16. package/dist/core/DocumentGenerator.js.map +1 -1
  17. package/dist/core/DocumentIdManager.d.ts.map +1 -1
  18. package/dist/core/DocumentIdManager.js.map +1 -1
  19. package/dist/core/DocumentParser.d.ts +6 -6
  20. package/dist/core/DocumentParser.d.ts.map +1 -1
  21. package/dist/core/DocumentParser.js +60 -54
  22. package/dist/core/DocumentParser.js.map +1 -1
  23. package/dist/core/DocumentValidator.d.ts.map +1 -1
  24. package/dist/core/DocumentValidator.js.map +1 -1
  25. package/dist/core/Relationship.d.ts.map +1 -1
  26. package/dist/core/Relationship.js +1 -1
  27. package/dist/core/Relationship.js.map +1 -1
  28. package/dist/core/RelationshipManager.js +3 -3
  29. package/dist/core/RelationshipManager.js.map +1 -1
  30. package/dist/elements/AlternateContent.js.map +1 -1
  31. package/dist/elements/Bookmark.d.ts.map +1 -1
  32. package/dist/elements/Bookmark.js.map +1 -1
  33. package/dist/elements/BookmarkManager.d.ts.map +1 -1
  34. package/dist/elements/BookmarkManager.js.map +1 -1
  35. package/dist/elements/Comment.js +1 -1
  36. package/dist/elements/Comment.js.map +1 -1
  37. package/dist/elements/CommentManager.d.ts.map +1 -1
  38. package/dist/elements/CommentManager.js +8 -2
  39. package/dist/elements/CommentManager.js.map +1 -1
  40. package/dist/elements/CommonTypes.d.ts.map +1 -1
  41. package/dist/elements/CommonTypes.js +1 -2
  42. package/dist/elements/CommonTypes.js.map +1 -1
  43. package/dist/elements/CustomXml.js.map +1 -1
  44. package/dist/elements/Endnote.d.ts.map +1 -1
  45. package/dist/elements/Endnote.js.map +1 -1
  46. package/dist/elements/EndnoteManager.d.ts.map +1 -1
  47. package/dist/elements/EndnoteManager.js.map +1 -1
  48. package/dist/elements/Field.d.ts.map +1 -1
  49. package/dist/elements/Field.js +31 -28
  50. package/dist/elements/Field.js.map +1 -1
  51. package/dist/elements/FieldHelpers.d.ts.map +1 -1
  52. package/dist/elements/FieldHelpers.js +6 -6
  53. package/dist/elements/FieldHelpers.js.map +1 -1
  54. package/dist/elements/FontManager.d.ts.map +1 -1
  55. package/dist/elements/FontManager.js.map +1 -1
  56. package/dist/elements/Footer.js.map +1 -1
  57. package/dist/elements/Footnote.d.ts.map +1 -1
  58. package/dist/elements/Footnote.js.map +1 -1
  59. package/dist/elements/FootnoteManager.d.ts.map +1 -1
  60. package/dist/elements/FootnoteManager.js.map +1 -1
  61. package/dist/elements/Header.js.map +1 -1
  62. package/dist/elements/HeaderFooterManager.js.map +1 -1
  63. package/dist/elements/Hyperlink.d.ts.map +1 -1
  64. package/dist/elements/Hyperlink.js +5 -5
  65. package/dist/elements/Hyperlink.js.map +1 -1
  66. package/dist/elements/Image.d.ts +2 -2
  67. package/dist/elements/Image.d.ts.map +1 -1
  68. package/dist/elements/Image.js +21 -5
  69. package/dist/elements/Image.js.map +1 -1
  70. package/dist/elements/ImageManager.d.ts.map +1 -1
  71. package/dist/elements/ImageManager.js +2 -2
  72. package/dist/elements/ImageManager.js.map +1 -1
  73. package/dist/elements/ImageRun.js.map +1 -1
  74. package/dist/elements/MathElement.js.map +1 -1
  75. package/dist/elements/Paragraph.d.ts.map +1 -1
  76. package/dist/elements/Paragraph.js +128 -117
  77. package/dist/elements/Paragraph.js.map +1 -1
  78. package/dist/elements/PreservedElement.js.map +1 -1
  79. package/dist/elements/PropertyChangeTypes.js.map +1 -1
  80. package/dist/elements/RangeMarker.js.map +1 -1
  81. package/dist/elements/Revision.d.ts +1 -0
  82. package/dist/elements/Revision.d.ts.map +1 -1
  83. package/dist/elements/Revision.js +44 -5
  84. package/dist/elements/Revision.js.map +1 -1
  85. package/dist/elements/RevisionContent.js.map +1 -1
  86. package/dist/elements/RevisionManager.d.ts.map +1 -1
  87. package/dist/elements/RevisionManager.js.map +1 -1
  88. package/dist/elements/Run.d.ts.map +1 -1
  89. package/dist/elements/Run.js +1 -3
  90. package/dist/elements/Run.js.map +1 -1
  91. package/dist/elements/Section.d.ts.map +1 -1
  92. package/dist/elements/Section.js +127 -118
  93. package/dist/elements/Section.js.map +1 -1
  94. package/dist/elements/Shape.d.ts.map +1 -1
  95. package/dist/elements/Shape.js +21 -0
  96. package/dist/elements/Shape.js.map +1 -1
  97. package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
  98. package/dist/elements/StructuredDocumentTag.js +20 -8
  99. package/dist/elements/StructuredDocumentTag.js.map +1 -1
  100. package/dist/elements/Table.d.ts +2 -2
  101. package/dist/elements/Table.d.ts.map +1 -1
  102. package/dist/elements/Table.js +29 -35
  103. package/dist/elements/Table.js.map +1 -1
  104. package/dist/elements/TableCell.d.ts +2 -2
  105. package/dist/elements/TableCell.d.ts.map +1 -1
  106. package/dist/elements/TableCell.js +63 -67
  107. package/dist/elements/TableCell.js.map +1 -1
  108. package/dist/elements/TableGridChange.js.map +1 -1
  109. package/dist/elements/TableOfContents.d.ts +6 -6
  110. package/dist/elements/TableOfContents.d.ts.map +1 -1
  111. package/dist/elements/TableOfContents.js.map +1 -1
  112. package/dist/elements/TableOfContentsElement.js.map +1 -1
  113. package/dist/elements/TableRow.d.ts.map +1 -1
  114. package/dist/elements/TableRow.js +65 -47
  115. package/dist/elements/TableRow.js.map +1 -1
  116. package/dist/elements/TextBox.d.ts.map +1 -1
  117. package/dist/elements/TextBox.js +1 -1
  118. package/dist/elements/TextBox.js.map +1 -1
  119. package/dist/formatting/AbstractNumbering.d.ts +1 -1
  120. package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
  121. package/dist/formatting/AbstractNumbering.js +11 -11
  122. package/dist/formatting/AbstractNumbering.js.map +1 -1
  123. package/dist/formatting/NumberingInstance.d.ts.map +1 -1
  124. package/dist/formatting/NumberingInstance.js +4 -4
  125. package/dist/formatting/NumberingInstance.js.map +1 -1
  126. package/dist/formatting/NumberingLevel.d.ts.map +1 -1
  127. package/dist/formatting/NumberingLevel.js +26 -26
  128. package/dist/formatting/NumberingLevel.js.map +1 -1
  129. package/dist/formatting/NumberingManager.d.ts +1 -1
  130. package/dist/formatting/NumberingManager.d.ts.map +1 -1
  131. package/dist/formatting/NumberingManager.js.map +1 -1
  132. package/dist/formatting/Style.d.ts.map +1 -1
  133. package/dist/formatting/Style.js +87 -95
  134. package/dist/formatting/Style.js.map +1 -1
  135. package/dist/formatting/StylesManager.d.ts +3 -3
  136. package/dist/formatting/StylesManager.d.ts.map +1 -1
  137. package/dist/formatting/StylesManager.js.map +1 -1
  138. package/dist/helpers/CleanupHelper.js.map +1 -1
  139. package/dist/images/ImageOptimizer.js.map +1 -1
  140. package/dist/index.js.map +1 -1
  141. package/dist/managers/DrawingManager.d.ts.map +1 -1
  142. package/dist/managers/DrawingManager.js.map +1 -1
  143. package/dist/tracking/DocumentTrackingContext.js.map +1 -1
  144. package/dist/tracking/TrackingContext.js.map +1 -1
  145. package/dist/types/compatibility-types.js.map +1 -1
  146. package/dist/types/formatting.js.map +1 -1
  147. package/dist/types/list-types.d.ts +4 -4
  148. package/dist/types/list-types.d.ts.map +1 -1
  149. package/dist/types/list-types.js.map +1 -1
  150. package/dist/types/settings-types.js.map +1 -1
  151. package/dist/types/styleConfig.js.map +1 -1
  152. package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
  153. package/dist/utils/ChangelogGenerator.js.map +1 -1
  154. package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
  155. package/dist/utils/CompatibilityUpgrader.js +7 -7
  156. package/dist/utils/CompatibilityUpgrader.js.map +1 -1
  157. package/dist/utils/InMemoryRevisionAcceptor.js +1 -1
  158. package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
  159. package/dist/utils/MoveOperationHelper.js.map +1 -1
  160. package/dist/utils/RevisionAwareProcessor.js.map +1 -1
  161. package/dist/utils/RevisionWalker.js.map +1 -1
  162. package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
  163. package/dist/utils/ShadingResolver.js +1 -1
  164. package/dist/utils/ShadingResolver.js.map +1 -1
  165. package/dist/utils/acceptRevisions.d.ts +0 -28
  166. package/dist/utils/acceptRevisions.d.ts.map +1 -1
  167. package/dist/utils/acceptRevisions.js +5 -7
  168. package/dist/utils/acceptRevisions.js.map +1 -1
  169. package/dist/utils/cnfStyleDecoder.js +1 -1
  170. package/dist/utils/cnfStyleDecoder.js.map +1 -1
  171. package/dist/utils/corruptionDetection.js.map +1 -1
  172. package/dist/utils/dateFormatting.js.map +1 -1
  173. package/dist/utils/deepClone.d.ts +0 -1
  174. package/dist/utils/deepClone.d.ts.map +1 -1
  175. package/dist/utils/deepClone.js +0 -7
  176. package/dist/utils/deepClone.js.map +1 -1
  177. package/dist/utils/diagnostics.d.ts +2 -2
  178. package/dist/utils/diagnostics.d.ts.map +1 -1
  179. package/dist/utils/diagnostics.js.map +1 -1
  180. package/dist/utils/errorHandling.js.map +1 -1
  181. package/dist/utils/formatting.js.map +1 -1
  182. package/dist/utils/list-detection.d.ts +2 -2
  183. package/dist/utils/list-detection.d.ts.map +1 -1
  184. package/dist/utils/list-detection.js +3 -3
  185. package/dist/utils/list-detection.js.map +1 -1
  186. package/dist/utils/logger.d.ts +2 -4
  187. package/dist/utils/logger.d.ts.map +1 -1
  188. package/dist/utils/logger.js +0 -2
  189. package/dist/utils/logger.js.map +1 -1
  190. package/dist/utils/parsingHelpers.js.map +1 -1
  191. package/dist/utils/stripTrackedChanges.d.ts +0 -19
  192. package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
  193. package/dist/utils/stripTrackedChanges.js +0 -2
  194. package/dist/utils/stripTrackedChanges.js.map +1 -1
  195. package/dist/utils/textDiff.js.map +1 -1
  196. package/dist/utils/units.js.map +1 -1
  197. package/dist/utils/validation.d.ts.map +1 -1
  198. package/dist/utils/validation.js.map +1 -1
  199. package/dist/utils/xmlSanitization.js.map +1 -1
  200. package/dist/validation/RevisionAutoFixer.js.map +1 -1
  201. package/dist/validation/RevisionValidator.js.map +1 -1
  202. package/dist/validation/ValidationRules.js.map +1 -1
  203. package/dist/validation/index.js.map +1 -1
  204. package/dist/xml/XMLBuilder.d.ts.map +1 -1
  205. package/dist/xml/XMLBuilder.js +10 -0
  206. package/dist/xml/XMLBuilder.js.map +1 -1
  207. package/dist/xml/XMLParser.d.ts.map +1 -1
  208. package/dist/xml/XMLParser.js +4 -5
  209. package/dist/xml/XMLParser.js.map +1 -1
  210. package/dist/zip/ZipHandler.js.map +1 -1
  211. package/dist/zip/ZipReader.js.map +1 -1
  212. package/dist/zip/ZipWriter.js.map +1 -1
  213. package/dist/zip/errors.js.map +1 -1
  214. package/dist/zip/types.js.map +1 -1
  215. package/package.json +34 -4
  216. package/src/__tests__/helper-methods.test.ts +512 -0
  217. package/src/constants/legacyCompatFlags.ts +138 -0
  218. package/src/constants/limits.ts +50 -0
  219. package/src/core/CLAUDE.md +109 -0
  220. package/src/core/Document.ts +15569 -0
  221. package/src/core/DocumentContent.ts +467 -0
  222. package/src/core/DocumentGenerator.ts +1104 -0
  223. package/src/core/DocumentIdManager.ts +158 -0
  224. package/src/core/DocumentParser.ts +10107 -0
  225. package/src/core/DocumentValidator.ts +372 -0
  226. package/src/core/Relationship.ts +367 -0
  227. package/src/core/RelationshipManager.ts +428 -0
  228. package/src/elements/AlternateContent.ts +42 -0
  229. package/src/elements/Bookmark.ts +210 -0
  230. package/src/elements/BookmarkManager.ts +250 -0
  231. package/src/elements/CLAUDE.md +126 -0
  232. package/src/elements/Comment.ts +359 -0
  233. package/src/elements/CommentManager.ts +502 -0
  234. package/src/elements/CommonTypes.ts +549 -0
  235. package/src/elements/CustomXml.ts +36 -0
  236. package/src/elements/Endnote.ts +217 -0
  237. package/src/elements/EndnoteManager.ts +249 -0
  238. package/src/elements/Field.ts +1233 -0
  239. package/src/elements/FieldHelpers.ts +333 -0
  240. package/src/elements/FontManager.ts +339 -0
  241. package/src/elements/Footer.ts +269 -0
  242. package/src/elements/Footnote.ts +217 -0
  243. package/src/elements/FootnoteManager.ts +249 -0
  244. package/src/elements/Header.ts +269 -0
  245. package/src/elements/HeaderFooterManager.ts +219 -0
  246. package/src/elements/Hyperlink.ts +1146 -0
  247. package/src/elements/Image.ts +1756 -0
  248. package/src/elements/ImageManager.ts +432 -0
  249. package/src/elements/ImageRun.ts +59 -0
  250. package/src/elements/MathElement.ts +65 -0
  251. package/src/elements/Paragraph.ts +4227 -0
  252. package/src/elements/PreservedElement.ts +53 -0
  253. package/src/elements/PropertyChangeTypes.ts +442 -0
  254. package/src/elements/RangeMarker.ts +400 -0
  255. package/src/elements/Revision.ts +1217 -0
  256. package/src/elements/RevisionContent.ts +73 -0
  257. package/src/elements/RevisionManager.ts +1070 -0
  258. package/src/elements/Run.ts +3068 -0
  259. package/src/elements/Section.ts +1421 -0
  260. package/src/elements/Shape.ts +873 -0
  261. package/src/elements/StructuredDocumentTag.ts +978 -0
  262. package/src/elements/Table.ts +2524 -0
  263. package/src/elements/TableCell.ts +1586 -0
  264. package/src/elements/TableGridChange.ts +151 -0
  265. package/src/elements/TableOfContents.ts +691 -0
  266. package/src/elements/TableOfContentsElement.ts +89 -0
  267. package/src/elements/TableRow.ts +906 -0
  268. package/src/elements/TextBox.ts +768 -0
  269. package/src/formatting/AbstractNumbering.ts +548 -0
  270. package/src/formatting/CLAUDE.md +74 -0
  271. package/src/formatting/NumberingInstance.ts +212 -0
  272. package/src/formatting/NumberingLevel.ts +1006 -0
  273. package/src/formatting/NumberingManager.ts +827 -0
  274. package/src/formatting/Style.ts +1833 -0
  275. package/src/formatting/StylesManager.ts +1005 -0
  276. package/src/helpers/CleanupHelper.ts +524 -0
  277. package/src/images/ImageOptimizer.ts +274 -0
  278. package/src/index.ts +554 -0
  279. package/src/managers/CLAUDE.md +47 -0
  280. package/src/managers/DrawingManager.ts +319 -0
  281. package/src/tracking/DocumentTrackingContext.ts +643 -0
  282. package/src/tracking/TrackingContext.ts +173 -0
  283. package/src/types/compatibility-types.ts +49 -0
  284. package/src/types/formatting.ts +210 -0
  285. package/src/types/list-types.ts +152 -0
  286. package/src/types/settings-types.ts +59 -0
  287. package/src/types/styleConfig.ts +189 -0
  288. package/src/utils/CLAUDE.md +153 -0
  289. package/src/utils/ChangelogGenerator.ts +1581 -0
  290. package/src/utils/CompatibilityUpgrader.ts +237 -0
  291. package/src/utils/InMemoryRevisionAcceptor.ts +668 -0
  292. package/src/utils/MoveOperationHelper.ts +238 -0
  293. package/src/utils/RevisionAwareProcessor.ts +526 -0
  294. package/src/utils/RevisionWalker.ts +457 -0
  295. package/src/utils/SelectiveRevisionAcceptor.ts +613 -0
  296. package/src/utils/ShadingResolver.ts +107 -0
  297. package/src/utils/acceptRevisions.ts +714 -0
  298. package/src/utils/cnfStyleDecoder.ts +217 -0
  299. package/src/utils/corruptionDetection.ts +345 -0
  300. package/src/utils/dateFormatting.ts +20 -0
  301. package/src/utils/deepClone.ts +78 -0
  302. package/src/utils/diagnostics.ts +129 -0
  303. package/src/utils/errorHandling.ts +80 -0
  304. package/src/utils/formatting.ts +213 -0
  305. package/src/utils/list-detection.ts +274 -0
  306. package/src/utils/logger.ts +404 -0
  307. package/src/utils/parsingHelpers.ts +190 -0
  308. package/src/utils/stripTrackedChanges.ts +353 -0
  309. package/src/utils/textDiff.ts +100 -0
  310. package/src/utils/units.ts +421 -0
  311. package/src/utils/validation.ts +542 -0
  312. package/src/utils/xmlSanitization.ts +182 -0
  313. package/src/validation/RevisionAutoFixer.ts +542 -0
  314. package/src/validation/RevisionValidator.ts +460 -0
  315. package/src/validation/ValidationRules.ts +338 -0
  316. package/src/validation/index.ts +30 -0
  317. package/src/xml/CLAUDE.md +65 -0
  318. package/src/xml/XMLBuilder.ts +871 -0
  319. package/src/xml/XMLParser.ts +919 -0
  320. package/src/zip/CLAUDE.md +55 -0
  321. package/src/zip/ZipHandler.ts +637 -0
  322. package/src/zip/ZipReader.ts +299 -0
  323. package/src/zip/ZipWriter.ts +390 -0
  324. package/src/zip/errors.ts +69 -0
  325. package/src/zip/types.ts +116 -0
  326. package/dist/core/ListNormalizer.d.ts +0 -23
  327. package/dist/core/ListNormalizer.d.ts.map +0 -1
  328. package/dist/core/ListNormalizer.js +0 -624
  329. package/dist/core/ListNormalizer.js.map +0 -1
  330. package/dist/images/index.d.ts +0 -2
  331. package/dist/images/index.d.ts.map +0 -1
  332. package/dist/images/index.js +0 -8
  333. package/dist/images/index.js.map +0 -1
  334. package/dist/ms-doc/cfb/CFBReader.d.ts +0 -35
  335. package/dist/ms-doc/cfb/CFBReader.d.ts.map +0 -1
  336. package/dist/ms-doc/cfb/CFBReader.js +0 -360
  337. package/dist/ms-doc/cfb/CFBReader.js.map +0 -1
  338. package/dist/ms-doc/converter/DocToDocxConverter.d.ts +0 -55
  339. package/dist/ms-doc/converter/DocToDocxConverter.d.ts.map +0 -1
  340. package/dist/ms-doc/converter/DocToDocxConverter.js +0 -324
  341. package/dist/ms-doc/converter/DocToDocxConverter.js.map +0 -1
  342. package/dist/ms-doc/fib/FIB.d.ts +0 -18
  343. package/dist/ms-doc/fib/FIB.d.ts.map +0 -1
  344. package/dist/ms-doc/fib/FIB.js +0 -342
  345. package/dist/ms-doc/fib/FIB.js.map +0 -1
  346. package/dist/ms-doc/fields/FieldParser.d.ts +0 -31
  347. package/dist/ms-doc/fields/FieldParser.d.ts.map +0 -1
  348. package/dist/ms-doc/fields/FieldParser.js +0 -266
  349. package/dist/ms-doc/fields/FieldParser.js.map +0 -1
  350. package/dist/ms-doc/images/PictureExtractor.d.ts +0 -22
  351. package/dist/ms-doc/images/PictureExtractor.d.ts.map +0 -1
  352. package/dist/ms-doc/images/PictureExtractor.js +0 -233
  353. package/dist/ms-doc/images/PictureExtractor.js.map +0 -1
  354. package/dist/ms-doc/index.d.ts +0 -20
  355. package/dist/ms-doc/index.d.ts.map +0 -1
  356. package/dist/ms-doc/index.js +0 -59
  357. package/dist/ms-doc/index.js.map +0 -1
  358. package/dist/ms-doc/properties/SPRM.d.ts +0 -210
  359. package/dist/ms-doc/properties/SPRM.d.ts.map +0 -1
  360. package/dist/ms-doc/properties/SPRM.js +0 -633
  361. package/dist/ms-doc/properties/SPRM.js.map +0 -1
  362. package/dist/ms-doc/sections/SectionParser.d.ts +0 -25
  363. package/dist/ms-doc/sections/SectionParser.d.ts.map +0 -1
  364. package/dist/ms-doc/sections/SectionParser.js +0 -214
  365. package/dist/ms-doc/sections/SectionParser.js.map +0 -1
  366. package/dist/ms-doc/styles/StyleSheet.d.ts +0 -23
  367. package/dist/ms-doc/styles/StyleSheet.d.ts.map +0 -1
  368. package/dist/ms-doc/styles/StyleSheet.js +0 -268
  369. package/dist/ms-doc/styles/StyleSheet.js.map +0 -1
  370. package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts +0 -61
  371. package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts.map +0 -1
  372. package/dist/ms-doc/subdocuments/SubdocumentParser.js +0 -208
  373. package/dist/ms-doc/subdocuments/SubdocumentParser.js.map +0 -1
  374. package/dist/ms-doc/tables/TableParser.d.ts +0 -29
  375. package/dist/ms-doc/tables/TableParser.d.ts.map +0 -1
  376. package/dist/ms-doc/tables/TableParser.js +0 -176
  377. package/dist/ms-doc/tables/TableParser.js.map +0 -1
  378. package/dist/ms-doc/text/PieceTable.d.ts +0 -21
  379. package/dist/ms-doc/text/PieceTable.d.ts.map +0 -1
  380. package/dist/ms-doc/text/PieceTable.js +0 -171
  381. package/dist/ms-doc/text/PieceTable.js.map +0 -1
  382. package/dist/ms-doc/types/Constants.d.ts +0 -99
  383. package/dist/ms-doc/types/Constants.d.ts.map +0 -1
  384. package/dist/ms-doc/types/Constants.js +0 -102
  385. package/dist/ms-doc/types/Constants.js.map +0 -1
  386. package/dist/ms-doc/types/DocTypes.d.ts +0 -368
  387. package/dist/ms-doc/types/DocTypes.d.ts.map +0 -1
  388. package/dist/ms-doc/types/DocTypes.js +0 -3
  389. package/dist/ms-doc/types/DocTypes.js.map +0 -1
  390. package/dist/tracking/index.d.ts +0 -3
  391. package/dist/tracking/index.d.ts.map +0 -1
  392. package/dist/tracking/index.js +0 -6
  393. package/dist/tracking/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ChangelogGenerator.js","sourceRoot":"","sources":["../../src/utils/ChangelogGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChangelogGenerator.js","sourceRoot":"","sources":["../../src/utils/ChangelogGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * ChangelogGenerator - Generates structured changelog from Word tracked changes\r\n *\r\n * Converts Word revisions (w:ins, w:del, property changes) into structured\r\n * changelog data with support for consolidation, categorization, and\r\n * multiple output formats.\r\n *\r\n * Follows ECMA-376 revision semantics.\r\n *\r\n * @module ChangelogGenerator\r\n */\r\n\r\nimport type { Document } from '../core/Document';\r\nimport { Revision, RevisionType } from '../elements/Revision';\r\nimport { getGlobalLogger, createScopedLogger, ILogger } from './logger';\r\n\r\n// Scoped logger for ChangelogGenerator\r\nfunction getLogger(): ILogger {\r\n return createScopedLogger(getGlobalLogger(), 'ChangelogGenerator');\r\n}\r\n\r\n/**\r\n * Semantic category for grouping changes.\r\n */\r\nexport type ChangeCategory =\r\n | 'content' // Text insertions, deletions\r\n | 'formatting' // Run/paragraph property changes\r\n | 'structural' // Moves, section changes\r\n | 'table' // Table structure changes\r\n | 'hyperlink' // Hyperlink URL, text, or formatting changes\r\n | 'image' // Image insertion, deletion, or property changes\r\n | 'field' // Field insertion, deletion, or value changes\r\n | 'comment' // Comment changes\r\n | 'bookmark' // Bookmark changes\r\n | 'contentControl'; // Content control (SDT) changes\r\n\r\n/**\r\n * Location of a change within the document.\r\n */\r\nexport interface ChangeLocation {\r\n /** Section index (0-based) */\r\n sectionIndex?: number;\r\n /** Paragraph index within body (0-based) */\r\n paragraphIndex: number;\r\n /** Run index within paragraph (0-based) */\r\n runIndex?: number;\r\n /** Nearest heading for context */\r\n nearestHeading?: string;\r\n /** Character offset within paragraph */\r\n characterOffset?: number;\r\n}\r\n\r\n/**\r\n * Represents a single change entry in the changelog.\r\n * Follows ECMA-376 revision semantics.\r\n */\r\nexport interface ChangeEntry {\r\n /** Unique identifier (matches revision ID) */\r\n id: string;\r\n\r\n /** ECMA-376 revision type */\r\n revisionType: RevisionType;\r\n\r\n /** Semantic category for grouping */\r\n category: ChangeCategory;\r\n\r\n /** Human-readable description */\r\n description: string;\r\n\r\n /** Author who made the change */\r\n author: string;\r\n\r\n /** ISO 8601 timestamp */\r\n date: Date;\r\n\r\n /** Location in document */\r\n location: ChangeLocation;\r\n\r\n /** Content details */\r\n content: {\r\n /** Text before change (for deletions/modifications) */\r\n before?: string;\r\n /** Text after change (for insertions/modifications) */\r\n after?: string;\r\n /** Affected text (for property changes) */\r\n affectedText?: string;\r\n };\r\n\r\n /** Property change details (for formatting changes) */\r\n propertyChange?: {\r\n property: string;\r\n oldValue?: string;\r\n newValue?: string;\r\n };\r\n}\r\n\r\n/**\r\n * Output format for changelog generation.\r\n */\r\nexport type ChangelogFormat = 'json' | 'markdown' | 'text' | 'html' | 'csv';\r\n\r\n/**\r\n * Options for changelog generation.\r\n */\r\nexport interface ChangelogOptions {\r\n /** Include formatting/property changes (default: true) */\r\n includeFormattingChanges?: boolean;\r\n /** Consolidate similar changes (default: false) */\r\n consolidate?: boolean;\r\n /** Maximum context length for descriptions (default: 50) */\r\n maxContextLength?: number;\r\n /** Filter by authors */\r\n filterAuthors?: string[];\r\n /** Filter by date range */\r\n filterDateRange?: { start: Date; end: Date };\r\n /** Filter by categories */\r\n filterCategories?: ChangeCategory[];\r\n /** Output format (default: 'markdown') */\r\n format?: ChangelogFormat;\r\n /** Sort changes by field */\r\n sortBy?: 'date' | 'author' | 'type' | 'category';\r\n /** Sort order (default: 'asc') */\r\n sortOrder?: 'asc' | 'desc';\r\n /** Group changes by element type */\r\n groupByElement?: boolean;\r\n /** Include document context (nearest heading, section) */\r\n includeDocumentContext?: boolean;\r\n}\r\n\r\n/**\r\n * Consolidated change grouping similar changes together.\r\n */\r\nexport interface ConsolidatedChange {\r\n /** Description of the consolidated change */\r\n description: string;\r\n /** Number of individual changes */\r\n count: number;\r\n /** Category of changes */\r\n category: ChangeCategory;\r\n /** Common attributes shared by all changes */\r\n commonAttributes: {\r\n author?: string;\r\n revisionType?: RevisionType;\r\n propertyChanged?: string;\r\n newValue?: string;\r\n };\r\n /** Individual change IDs */\r\n changeIds: string[];\r\n}\r\n\r\n/**\r\n * Summary statistics for changelog entries.\r\n */\r\nexport interface ChangelogSummary {\r\n /** Total number of changes */\r\n total: number;\r\n /** Breakdown by category */\r\n byCategory: Record<ChangeCategory, number>;\r\n /** Breakdown by revision type */\r\n byType: Record<string, number>;\r\n /** Breakdown by author */\r\n byAuthor: Record<string, number>;\r\n /** Date range of changes */\r\n dateRange: { earliest: Date; latest: Date } | null;\r\n}\r\n\r\n/**\r\n * Generates changelog from Word tracked changes.\r\n * Follows ECMA-376 revision semantics.\r\n */\r\nexport class ChangelogGenerator {\r\n /**\r\n * Generate changelog entries from a document.\r\n * Document must be loaded with { revisionHandling: 'preserve' }.\r\n *\r\n * @param doc - Document to extract revisions from\r\n * @param options - Changelog generation options\r\n * @returns Array of changelog entries\r\n */\r\n static fromDocument(doc: Document, options?: ChangelogOptions): ChangeEntry[] {\r\n const revisionManager = doc.getRevisionManager();\r\n if (!revisionManager) {\r\n return [];\r\n }\r\n\r\n const revisions = revisionManager.getAllRevisions();\r\n return this.fromRevisions(revisions, options, doc);\r\n }\r\n\r\n /**\r\n * Generate changelog entries from specific revisions.\r\n *\r\n * @param revisions - Array of revisions to convert\r\n * @param options - Changelog generation options\r\n * @param doc - Optional document for context (paragraph indices, headings)\r\n * @returns Array of changelog entries\r\n */\r\n static fromRevisions(\r\n revisions: Revision[],\r\n options?: ChangelogOptions,\r\n doc?: Document\r\n ): ChangeEntry[] {\r\n const logger = getLogger();\r\n const opts = {\r\n includeFormattingChanges: true,\r\n consolidate: false,\r\n maxContextLength: 50,\r\n ...options,\r\n };\r\n\r\n logger.debug('Processing revisions', {\r\n total: revisions.length,\r\n filters: {\r\n categories: opts.filterCategories?.length ?? 0,\r\n authors: opts.filterAuthors?.length ?? 0,\r\n dateRange: !!opts.filterDateRange\r\n }\r\n });\r\n\r\n const entries: ChangeEntry[] = [];\r\n let filtered = 0;\r\n\r\n for (let i = 0; i < revisions.length; i++) {\r\n const revision = revisions[i];\r\n if (!revision) continue;\r\n\r\n const category = this.categorize(revision);\r\n\r\n // Filter by category\r\n if (opts.filterCategories && !opts.filterCategories.includes(category)) {\r\n filtered++;\r\n continue;\r\n }\r\n\r\n // Filter out formatting changes if requested\r\n if (!opts.includeFormattingChanges && category === 'formatting') {\r\n filtered++;\r\n continue;\r\n }\r\n\r\n // Filter by author\r\n if (opts.filterAuthors && !opts.filterAuthors.includes(revision.getAuthor())) {\r\n filtered++;\r\n continue;\r\n }\r\n\r\n // Filter by date range\r\n if (opts.filterDateRange) {\r\n const revDate = revision.getDate();\r\n if (revDate < opts.filterDateRange.start || revDate > opts.filterDateRange.end) {\r\n filtered++;\r\n continue;\r\n }\r\n }\r\n\r\n const entry = this.revisionToEntry(revision, i, opts.maxContextLength);\r\n entries.push(entry);\r\n }\r\n\r\n if (filtered > 0) {\r\n logger.debug('Revisions filtered', { included: entries.length, filtered });\r\n }\r\n\r\n return entries;\r\n }\r\n\r\n /**\r\n * Convert a single revision to a changelog entry.\r\n *\r\n * @param revision - Revision to convert\r\n * @param index - Index for paragraph location (default location)\r\n * @param maxContextLength - Maximum length for text context\r\n * @returns Changelog entry\r\n */\r\n private static revisionToEntry(\r\n revision: Revision,\r\n index: number,\r\n maxContextLength: number\r\n ): ChangeEntry {\r\n const type = revision.getType();\r\n const category = this.categorize(revision);\r\n const runs = revision.getRuns();\r\n\r\n // Extract text content from runs\r\n const text = runs.map(r => r.getText()).join('');\r\n const truncatedText = text.length > maxContextLength\r\n ? text.substring(0, maxContextLength) + '...'\r\n : text;\r\n\r\n // Build content object based on revision type\r\n const content: ChangeEntry['content'] = {};\r\n if (type === 'insert' || type === 'moveTo') {\r\n content.after = truncatedText;\r\n } else if (type === 'delete' || type === 'moveFrom') {\r\n content.before = truncatedText;\r\n } else if (this.isPropertyChangeType(type)) {\r\n content.affectedText = truncatedText;\r\n }\r\n\r\n // Handle hyperlink changes specially\r\n const prevProps = revision.getPreviousProperties();\r\n const newProps = revision.getNewProperties();\r\n if (type === 'hyperlinkChange' && (prevProps || newProps)) {\r\n (content as any).hyperlinkChange = {\r\n urlBefore: prevProps?.url,\r\n urlAfter: newProps?.url,\r\n textBefore: prevProps?.text,\r\n textAfter: newProps?.text,\r\n };\r\n // Set before/after for standard diff view\r\n if (prevProps?.url !== newProps?.url) {\r\n content.before = prevProps?.url;\r\n content.after = newProps?.url;\r\n } else if (prevProps?.text !== newProps?.text) {\r\n content.before = prevProps?.text;\r\n content.after = newProps?.text;\r\n }\r\n }\r\n\r\n // Build property change details if applicable\r\n let propertyChange: ChangeEntry['propertyChange'] | undefined;\r\n if (prevProps || newProps) {\r\n // Get the first property that changed\r\n const allKeys = new Set([\r\n ...Object.keys(prevProps || {}),\r\n ...Object.keys(newProps || {}),\r\n ]);\r\n const firstKey = Array.from(allKeys)[0];\r\n if (firstKey) {\r\n propertyChange = {\r\n property: firstKey,\r\n oldValue: this.formatPropertyValue(prevProps?.[firstKey]),\r\n newValue: this.formatPropertyValue(newProps?.[firstKey]),\r\n };\r\n }\r\n }\r\n\r\n // Use revision's location if available, otherwise fall back to index\r\n const revisionLocation = revision.getLocation();\r\n const location: ChangeLocation = {\r\n paragraphIndex: revisionLocation?.paragraphIndex ?? index, // Use actual or fallback\r\n sectionIndex: revisionLocation?.sectionIndex,\r\n runIndex: revisionLocation?.runIndex,\r\n };\r\n\r\n return {\r\n id: revision.getId().toString(),\r\n revisionType: type,\r\n category,\r\n description: this.describeRevision(revision, maxContextLength),\r\n author: revision.getAuthor(),\r\n date: revision.getDate(),\r\n location,\r\n content,\r\n propertyChange,\r\n };\r\n }\r\n\r\n /**\r\n * Get summary statistics for changelog entries.\r\n *\r\n * @param entries - Array of changelog entries\r\n * @returns Summary statistics\r\n */\r\n static getSummary(entries: ChangeEntry[]): ChangelogSummary {\r\n const byCategory: Record<ChangeCategory, number> = {\r\n content: 0,\r\n formatting: 0,\r\n structural: 0,\r\n table: 0,\r\n hyperlink: 0,\r\n image: 0,\r\n field: 0,\r\n comment: 0,\r\n bookmark: 0,\r\n contentControl: 0,\r\n };\r\n const byType: Record<string, number> = {};\r\n const byAuthor: Record<string, number> = {};\r\n let earliest: Date | null = null;\r\n let latest: Date | null = null;\r\n\r\n for (const entry of entries) {\r\n // Count by category\r\n byCategory[entry.category]++;\r\n\r\n // Count by type\r\n byType[entry.revisionType] = (byType[entry.revisionType] || 0) + 1;\r\n\r\n // Count by author\r\n byAuthor[entry.author] = (byAuthor[entry.author] || 0) + 1;\r\n\r\n // Track date range\r\n if (!earliest || entry.date < earliest) {\r\n earliest = entry.date;\r\n }\r\n if (!latest || entry.date > latest) {\r\n latest = entry.date;\r\n }\r\n }\r\n\r\n return {\r\n total: entries.length,\r\n byCategory,\r\n byType,\r\n byAuthor,\r\n dateRange: earliest && latest ? { earliest, latest } : null,\r\n };\r\n }\r\n\r\n /**\r\n * Consolidate similar changes into groups.\r\n * Groups changes that share: same type, same property, same new value.\r\n *\r\n * @param entries - Array of changelog entries\r\n * @returns Array of consolidated changes\r\n */\r\n static consolidate(entries: ChangeEntry[]): ConsolidatedChange[] {\r\n const groups = new Map<string, ChangeEntry[]>();\r\n\r\n for (const entry of entries) {\r\n // Create grouping key\r\n let key = `${entry.revisionType}_${entry.category}`;\r\n\r\n // For property changes, include the property name and new value\r\n if (entry.propertyChange) {\r\n key += `_${entry.propertyChange.property}_${entry.propertyChange.newValue || ''}`;\r\n }\r\n\r\n // For content changes by same author, group them\r\n key += `_${entry.author}`;\r\n\r\n if (!groups.has(key)) {\r\n groups.set(key, []);\r\n }\r\n groups.get(key)!.push(entry);\r\n }\r\n\r\n const consolidated: ConsolidatedChange[] = [];\r\n\r\n for (const [_, groupEntries] of groups) {\r\n const first = groupEntries[0];\r\n if (!first) continue;\r\n\r\n let description: string;\r\n\r\n if (groupEntries.length === 1) {\r\n description = first.description;\r\n } else {\r\n // Generate consolidated description\r\n description = this.generateConsolidatedDescription(groupEntries);\r\n }\r\n\r\n consolidated.push({\r\n description,\r\n count: groupEntries.length,\r\n category: first.category,\r\n commonAttributes: {\r\n author: this.allSame(groupEntries.map(e => e.author)) ? first.author : undefined,\r\n revisionType: first.revisionType,\r\n propertyChanged: first.propertyChange?.property,\r\n newValue: first.propertyChange?.newValue,\r\n },\r\n changeIds: groupEntries.map(e => e.id),\r\n });\r\n }\r\n\r\n // Sort by count descending\r\n consolidated.sort((a, b) => b.count - a.count);\r\n\r\n if (entries.length > 0) {\r\n getLogger().info('Entries consolidated', {\r\n input: entries.length,\r\n groups: consolidated.length,\r\n reduction: `${Math.round((1 - consolidated.length / entries.length) * 100)}%`\r\n });\r\n }\r\n\r\n return consolidated;\r\n }\r\n\r\n /**\r\n * Generate a consolidated description for a group of similar changes.\r\n */\r\n private static generateConsolidatedDescription(entries: ChangeEntry[]): string {\r\n const first = entries[0];\r\n if (!first) {\r\n return `${entries.length} changes`;\r\n }\r\n\r\n const count = entries.length;\r\n\r\n switch (first.revisionType) {\r\n case 'insert':\r\n return `Inserted text in ${count} locations`;\r\n case 'delete':\r\n return `Deleted text from ${count} locations`;\r\n case 'moveFrom':\r\n case 'moveTo':\r\n return `Moved content (${count} operations)`;\r\n case 'runPropertiesChange':\r\n if (first.propertyChange) {\r\n return `Changed ${first.propertyChange.property} to \"${first.propertyChange.newValue}\" (${count} times)`;\r\n }\r\n return `Changed run formatting (${count} times)`;\r\n case 'paragraphPropertiesChange':\r\n if (first.propertyChange) {\r\n return `Changed paragraph ${first.propertyChange.property} (${count} times)`;\r\n }\r\n return `Changed paragraph formatting (${count} times)`;\r\n case 'tablePropertiesChange':\r\n case 'tableRowPropertiesChange':\r\n case 'tableCellPropertiesChange':\r\n return `Changed table formatting (${count} times)`;\r\n case 'tableCellInsert':\r\n return `Inserted ${count} table cells`;\r\n case 'tableCellDelete':\r\n return `Deleted ${count} table cells`;\r\n case 'tableCellMerge':\r\n return `Merged table cells (${count} operations)`;\r\n case 'numberingChange':\r\n return `Changed list numbering (${count} times)`;\r\n case 'sectionPropertiesChange':\r\n return `Changed section properties (${count} times)`;\r\n default:\r\n return `${count} changes of type ${first.revisionType}`;\r\n }\r\n }\r\n\r\n /**\r\n * Check if all values in an array are the same.\r\n */\r\n private static allSame<T>(arr: T[]): boolean {\r\n if (arr.length === 0) return true;\r\n const first = arr[0];\r\n return arr.every(v => v === first);\r\n }\r\n\r\n /**\r\n * Categorize a revision into a semantic category.\r\n *\r\n * @param revision - Revision to categorize\r\n * @returns Semantic category\r\n */\r\n static categorize(revision: Revision): ChangeCategory {\r\n const type = revision.getType();\r\n\r\n switch (type) {\r\n // Content changes\r\n case 'insert':\r\n case 'delete':\r\n return 'content';\r\n\r\n // Structural changes\r\n case 'moveFrom':\r\n case 'moveTo':\r\n case 'sectionPropertiesChange':\r\n return 'structural';\r\n\r\n // Formatting changes\r\n case 'runPropertiesChange':\r\n case 'paragraphPropertiesChange':\r\n case 'numberingChange':\r\n return 'formatting';\r\n\r\n // Table changes\r\n case 'tablePropertiesChange':\r\n case 'tableExceptionPropertiesChange':\r\n case 'tableRowPropertiesChange':\r\n case 'tableCellPropertiesChange':\r\n case 'tableCellInsert':\r\n case 'tableCellDelete':\r\n case 'tableCellMerge':\r\n return 'table';\r\n\r\n // Hyperlink changes\r\n case 'hyperlinkChange':\r\n return 'hyperlink';\r\n\r\n // Rich content changes\r\n case 'imageChange':\r\n return 'image';\r\n\r\n case 'fieldChange':\r\n return 'field';\r\n\r\n case 'commentChange':\r\n return 'comment';\r\n\r\n case 'bookmarkChange':\r\n return 'bookmark';\r\n\r\n case 'contentControlChange':\r\n return 'contentControl';\r\n\r\n default:\r\n return 'content';\r\n }\r\n }\r\n\r\n /**\r\n * Check if a revision type is a property change type.\r\n */\r\n private static isPropertyChangeType(type: RevisionType): boolean {\r\n return [\r\n 'runPropertiesChange',\r\n 'paragraphPropertiesChange',\r\n 'tablePropertiesChange',\r\n 'tableExceptionPropertiesChange',\r\n 'tableRowPropertiesChange',\r\n 'tableCellPropertiesChange',\r\n 'sectionPropertiesChange',\r\n 'numberingChange',\r\n ].includes(type);\r\n }\r\n\r\n /**\r\n * Generate human-readable description for a revision.\r\n *\r\n * @param revision - Revision to describe\r\n * @param maxLength - Maximum length for text excerpts\r\n * @returns Human-readable description\r\n */\r\n static describeRevision(revision: Revision, maxLength = 50): string {\r\n const type = revision.getType();\r\n const author = revision.getAuthor();\r\n const runs = revision.getRuns();\r\n const text = runs.map(r => r.getText()).join('');\r\n const excerpt = text.length > maxLength\r\n ? `\"${text.substring(0, maxLength)}...\"`\r\n : text ? `\"${text}\"` : '';\r\n\r\n switch (type) {\r\n case 'insert':\r\n return excerpt ? `Inserted ${excerpt}` : 'Inserted content';\r\n case 'delete':\r\n return excerpt ? `Deleted ${excerpt}` : 'Deleted content';\r\n case 'moveFrom':\r\n return excerpt ? `Moved ${excerpt} from here` : 'Moved content from here';\r\n case 'moveTo':\r\n return excerpt ? `Moved ${excerpt} to here` : 'Moved content to here';\r\n case 'runPropertiesChange':\r\n return this.describePropertyChange(revision, 'run formatting');\r\n case 'paragraphPropertiesChange':\r\n return this.describePropertyChange(revision, 'paragraph formatting');\r\n case 'tablePropertiesChange':\r\n return 'Changed table properties';\r\n case 'tableExceptionPropertiesChange':\r\n return 'Changed table exception properties';\r\n case 'tableRowPropertiesChange':\r\n return 'Changed table row properties';\r\n case 'tableCellPropertiesChange':\r\n return 'Changed table cell properties';\r\n case 'sectionPropertiesChange':\r\n return 'Changed section properties';\r\n case 'tableCellInsert':\r\n return 'Inserted table cell';\r\n case 'tableCellDelete':\r\n return 'Deleted table cell';\r\n case 'tableCellMerge':\r\n return 'Merged table cells';\r\n case 'numberingChange':\r\n return 'Changed list numbering';\r\n case 'hyperlinkChange':\r\n return this.describeHyperlinkChange(revision, maxLength);\r\n case 'imageChange':\r\n return this.describeImageChange(revision);\r\n case 'fieldChange':\r\n return this.describeFieldChange(revision);\r\n case 'commentChange':\r\n return this.describeCommentChange(revision);\r\n case 'bookmarkChange':\r\n return this.describeBookmarkChange(revision);\r\n case 'contentControlChange':\r\n return this.describeContentControlChange(revision);\r\n default:\r\n return `Changed (${type})`;\r\n }\r\n }\r\n\r\n /**\r\n * Generate description for a hyperlink change revision.\r\n */\r\n private static describeHyperlinkChange(revision: Revision, maxLength: number): string {\r\n const prevProps = revision.getPreviousProperties() || {};\r\n const newProps = revision.getNewProperties() || {};\r\n const changes: string[] = [];\r\n\r\n if (prevProps.url !== newProps.url) {\r\n changes.push('URL');\r\n }\r\n if (prevProps.text !== newProps.text) {\r\n changes.push('display text');\r\n }\r\n if (prevProps.formatting !== newProps.formatting) {\r\n changes.push('formatting');\r\n }\r\n\r\n if (changes.length === 0) {\r\n return 'Updated hyperlink';\r\n }\r\n\r\n return `Changed hyperlink ${changes.join(' and ')}`;\r\n }\r\n\r\n /**\r\n * Generate description for an image change revision.\r\n */\r\n private static describeImageChange(revision: Revision): string {\r\n const prevProps = revision.getPreviousProperties() || {};\r\n const newProps = revision.getNewProperties() || {};\r\n const changes: string[] = [];\r\n\r\n // Detect type of change\r\n if (!prevProps.imageId && newProps.imageId) {\r\n return `Inserted image${newProps.filename ? ` \"${newProps.filename}\"` : ''}`;\r\n }\r\n if (prevProps.imageId && !newProps.imageId) {\r\n return `Deleted image${prevProps.filename ? ` \"${prevProps.filename}\"` : ''}`;\r\n }\r\n\r\n // Property changes\r\n if (prevProps.width !== newProps.width || prevProps.height !== newProps.height) {\r\n changes.push('size');\r\n }\r\n if (prevProps.position !== newProps.position) {\r\n changes.push('position');\r\n }\r\n if (prevProps.wrapping !== newProps.wrapping) {\r\n changes.push('wrapping');\r\n }\r\n if (prevProps.altText !== newProps.altText) {\r\n changes.push('alt text');\r\n }\r\n\r\n if (changes.length === 0) {\r\n return 'Updated image';\r\n }\r\n\r\n return `Changed image ${changes.join(' and ')}`;\r\n }\r\n\r\n /**\r\n * Generate description for a field change revision.\r\n */\r\n private static describeFieldChange(revision: Revision): string {\r\n const prevProps = revision.getPreviousProperties() || {};\r\n const newProps = revision.getNewProperties() || {};\r\n\r\n // Detect type of change\r\n if (!prevProps.fieldType && newProps.fieldType) {\r\n return `Inserted ${newProps.fieldType || 'field'}`;\r\n }\r\n if (prevProps.fieldType && !newProps.fieldType) {\r\n return `Deleted ${prevProps.fieldType || 'field'}`;\r\n }\r\n\r\n // Value/formula changes\r\n if (prevProps.value !== newProps.value) {\r\n return `Updated ${newProps.fieldType || 'field'} value`;\r\n }\r\n if (prevProps.formula !== newProps.formula) {\r\n return `Changed ${newProps.fieldType || 'field'} formula`;\r\n }\r\n\r\n return `Updated ${newProps.fieldType || 'field'}`;\r\n }\r\n\r\n /**\r\n * Generate description for a comment change revision.\r\n */\r\n private static describeCommentChange(revision: Revision): string {\r\n const prevProps = revision.getPreviousProperties() || {};\r\n const newProps = revision.getNewProperties() || {};\r\n\r\n // Detect type of change\r\n if (!prevProps.commentId && newProps.commentId) {\r\n return `Added comment${newProps.author ? ` by ${newProps.author}` : ''}`;\r\n }\r\n if (prevProps.commentId && !newProps.commentId) {\r\n return `Deleted comment${prevProps.author ? ` by ${prevProps.author}` : ''}`;\r\n }\r\n if (prevProps.text !== newProps.text) {\r\n return `Edited comment${newProps.author ? ` by ${newProps.author}` : ''}`;\r\n }\r\n\r\n return 'Updated comment';\r\n }\r\n\r\n /**\r\n * Generate description for a bookmark change revision.\r\n */\r\n private static describeBookmarkChange(revision: Revision): string {\r\n const prevProps = revision.getPreviousProperties() || {};\r\n const newProps = revision.getNewProperties() || {};\r\n\r\n // Detect type of change\r\n if (!prevProps.bookmarkId && newProps.bookmarkId) {\r\n return `Created bookmark \"${newProps.name || 'unnamed'}\"`;\r\n }\r\n if (prevProps.bookmarkId && !newProps.bookmarkId) {\r\n return `Deleted bookmark \"${prevProps.name || 'unnamed'}\"`;\r\n }\r\n if (prevProps.name !== newProps.name) {\r\n return `Renamed bookmark from \"${prevProps.name}\" to \"${newProps.name}\"`;\r\n }\r\n if (prevProps.rangeStart !== newProps.rangeStart || prevProps.rangeEnd !== newProps.rangeEnd) {\r\n return `Changed bookmark \"${newProps.name || 'unnamed'}\" range`;\r\n }\r\n\r\n return `Updated bookmark \"${newProps.name || prevProps.name || 'unnamed'}\"`;\r\n }\r\n\r\n /**\r\n * Generate description for a content control change revision.\r\n */\r\n private static describeContentControlChange(revision: Revision): string {\r\n const prevProps = revision.getPreviousProperties() || {};\r\n const newProps = revision.getNewProperties() || {};\r\n\r\n // Detect type of change\r\n if (!prevProps.sdtId && newProps.sdtId) {\r\n return `Inserted content control${newProps.title ? ` \"${newProps.title}\"` : ''}`;\r\n }\r\n if (prevProps.sdtId && !newProps.sdtId) {\r\n return `Deleted content control${prevProps.title ? ` \"${prevProps.title}\"` : ''}`;\r\n }\r\n if (prevProps.title !== newProps.title) {\r\n return `Renamed content control to \"${newProps.title}\"`;\r\n }\r\n if (prevProps.content !== newProps.content) {\r\n return `Changed content control${newProps.title ? ` \"${newProps.title}\"` : ''} content`;\r\n }\r\n\r\n return `Updated content control${newProps.title || prevProps.title ? ` \"${newProps.title || prevProps.title}\"` : ''}`;\r\n }\r\n\r\n /**\r\n * Generate description for a property change revision.\r\n */\r\n private static describePropertyChange(revision: Revision, context: string): string {\r\n const prevProps = revision.getPreviousProperties();\r\n const newProps = revision.getNewProperties();\r\n\r\n if (!prevProps && !newProps) {\r\n return `Changed ${context}`;\r\n }\r\n\r\n // Get meaningful property names\r\n const propNames: string[] = [];\r\n const allKeys = new Set([\r\n ...Object.keys(prevProps || {}),\r\n ...Object.keys(newProps || {}),\r\n ]);\r\n\r\n for (const key of allKeys) {\r\n const oldVal = prevProps?.[key];\r\n const newVal = newProps?.[key];\r\n if (oldVal !== newVal) {\r\n propNames.push(this.friendlyPropertyName(key));\r\n }\r\n }\r\n\r\n if (propNames.length === 0) {\r\n return `Changed ${context}`;\r\n }\r\n\r\n if (propNames.length === 1) {\r\n return `Changed ${propNames[0]}`;\r\n }\r\n\r\n if (propNames.length <= 3) {\r\n return `Changed ${propNames.join(', ')}`;\r\n }\r\n\r\n return `Changed ${propNames.slice(0, 2).join(', ')} and ${propNames.length - 2} more`;\r\n }\r\n\r\n /**\r\n * Format a property value for display.\r\n * Handles objects, arrays, and primitives properly.\r\n */\r\n private static formatPropertyValue(value: unknown): string | undefined {\r\n if (value === null || value === undefined) {\r\n return undefined;\r\n }\r\n if (typeof value === 'object') {\r\n try {\r\n // For objects, use JSON.stringify for proper representation\r\n const json = JSON.stringify(value);\r\n // Truncate if too long\r\n return json.length > 100 ? json.substring(0, 97) + '...' : json;\r\n } catch (e) {\r\n getLogger().debug('Failed to stringify value', { error: String(e) });\r\n return '[complex value]';\r\n }\r\n }\r\n // For primitives, use String() for safe conversion\r\n return String(value);\r\n }\r\n\r\n /**\r\n * Convert property key to friendly name.\r\n */\r\n private static friendlyPropertyName(key: string): string {\r\n const friendlyNames: Record<string, string> = {\r\n // Run (character) properties\r\n b: 'bold',\r\n i: 'italic',\r\n u: 'underline',\r\n strike: 'strikethrough',\r\n dstrike: 'double strikethrough',\r\n sz: 'font size',\r\n szCs: 'complex script font size',\r\n color: 'text color',\r\n highlight: 'highlight',\r\n rFonts: 'font',\r\n rStyle: 'character style',\r\n vertAlign: 'vertical alignment',\r\n vanish: 'hidden text',\r\n caps: 'all capitals',\r\n smallCaps: 'small capitals',\r\n outline: 'outline effect',\r\n shadow: 'shadow effect',\r\n emboss: 'emboss effect',\r\n imprint: 'imprint effect',\r\n kern: 'kerning',\r\n w: 'character width',\r\n spacing: 'character spacing',\r\n position: 'text position',\r\n shd: 'shading',\r\n bdr: 'border',\r\n lang: 'language',\r\n eastAsianLayout: 'East Asian layout',\r\n specVanish: 'special vanish',\r\n oMath: 'math mode',\r\n\r\n // Paragraph properties\r\n jc: 'alignment',\r\n ind: 'indentation',\r\n pStyle: 'paragraph style',\r\n numPr: 'list numbering',\r\n pBdr: 'paragraph border',\r\n tabs: 'tab stops',\r\n suppressAutoHyphens: 'hyphenation',\r\n kinsoku: 'kinsoku rules',\r\n wordWrap: 'word wrap',\r\n overflowPunct: 'overflow punctuation',\r\n topLinePunct: 'top line punctuation',\r\n autoSpaceDE: 'auto space (DE)',\r\n autoSpaceDN: 'auto space (DN)',\r\n bidi: 'bidirectional',\r\n adjustRightInd: 'right indent adjustment',\r\n snapToGrid: 'snap to grid',\r\n contextualSpacing: 'contextual spacing',\r\n mirrorIndents: 'mirror indents',\r\n suppressOverlap: 'suppress overlap',\r\n outlineLvl: 'outline level',\r\n divId: 'HTML division',\r\n keepNext: 'keep with next',\r\n keepLines: 'keep lines together',\r\n pageBreakBefore: 'page break before',\r\n widowControl: 'widow/orphan control',\r\n suppressLineNumbers: 'suppress line numbers',\r\n textboxTightWrap: 'textbox tight wrap',\r\n\r\n // Table properties\r\n tblStyle: 'table style',\r\n tblW: 'table width',\r\n tblInd: 'table indent',\r\n tblBorders: 'table borders',\r\n tblCellMar: 'table cell margins',\r\n tblLook: 'table look',\r\n tblLayout: 'table layout',\r\n gridSpan: 'column span',\r\n vMerge: 'vertical merge',\r\n tcW: 'cell width',\r\n tcBorders: 'cell borders',\r\n vAlign: 'vertical alignment',\r\n textDirection: 'text direction',\r\n noWrap: 'no wrap',\r\n tcMar: 'cell margins',\r\n tcFitText: 'fit text',\r\n hideMark: 'hide mark',\r\n\r\n // Section properties\r\n sectPr: 'section properties',\r\n pgSz: 'page size',\r\n pgMar: 'page margins',\r\n cols: 'columns',\r\n docGrid: 'document grid',\r\n headerReference: 'header',\r\n footerReference: 'footer',\r\n pgNumType: 'page numbering',\r\n formProt: 'form protection',\r\n titlePg: 'different first page',\r\n type: 'section type',\r\n };\r\n\r\n return friendlyNames[key] || key;\r\n }\r\n\r\n /**\r\n * Export changelog to Markdown format.\r\n *\r\n * @param entries - Array of changelog entries\r\n * @param options - Export options\r\n * @returns Markdown string\r\n */\r\n static toMarkdown(\r\n entries: ChangeEntry[],\r\n options?: { includeMetadata?: boolean }\r\n ): string {\r\n const opts = { includeMetadata: true, ...options };\r\n const lines: string[] = [];\r\n\r\n lines.push('# Document Changes');\r\n lines.push('');\r\n\r\n if (opts.includeMetadata) {\r\n const summary = this.getSummary(entries);\r\n lines.push(`**Total Changes:** ${summary.total}`);\r\n lines.push('');\r\n\r\n if (summary.dateRange) {\r\n lines.push(`**Date Range:** ${summary.dateRange.earliest.toLocaleDateString()} - ${summary.dateRange.latest.toLocaleDateString()}`);\r\n lines.push('');\r\n }\r\n\r\n const authors = Object.keys(summary.byAuthor);\r\n if (authors.length > 0) {\r\n lines.push(`**Authors:** ${authors.join(', ')}`);\r\n lines.push('');\r\n }\r\n\r\n lines.push('---');\r\n lines.push('');\r\n }\r\n\r\n // Group by category\r\n const byCategory = new Map<ChangeCategory, ChangeEntry[]>();\r\n for (const entry of entries) {\r\n if (!byCategory.has(entry.category)) {\r\n byCategory.set(entry.category, []);\r\n }\r\n byCategory.get(entry.category)!.push(entry);\r\n }\r\n\r\n const categoryTitles: Record<ChangeCategory, string> = {\r\n content: 'Content Changes',\r\n formatting: 'Formatting Changes',\r\n structural: 'Structural Changes',\r\n table: 'Table Changes',\r\n hyperlink: 'Hyperlink Changes',\r\n image: 'Image Changes',\r\n field: 'Field Changes',\r\n comment: 'Comment Changes',\r\n bookmark: 'Bookmark Changes',\r\n contentControl: 'Content Control Changes',\r\n };\r\n\r\n for (const [category, categoryEntries] of byCategory) {\r\n if (categoryEntries.length === 0) continue;\r\n\r\n lines.push(`## ${categoryTitles[category]}`);\r\n lines.push('');\r\n\r\n for (const entry of categoryEntries) {\r\n const date = entry.date.toLocaleDateString();\r\n lines.push(`- ${entry.description} *(${entry.author}, ${date})*`);\r\n\r\n if (entry.content.before) {\r\n lines.push(` - Removed: \"${entry.content.before}\"`);\r\n }\r\n if (entry.content.after) {\r\n lines.push(` - Added: \"${entry.content.after}\"`);\r\n }\r\n }\r\n\r\n lines.push('');\r\n }\r\n\r\n return lines.join('\\n');\r\n }\r\n\r\n /**\r\n * Export changelog to plain text format.\r\n *\r\n * @param entries - Array of changelog entries\r\n * @returns Plain text string\r\n */\r\n static toPlainText(entries: ChangeEntry[]): string {\r\n const lines: string[] = [];\r\n\r\n lines.push('DOCUMENT CHANGES');\r\n lines.push('================');\r\n lines.push('');\r\n\r\n for (const entry of entries) {\r\n const date = entry.date.toLocaleDateString();\r\n lines.push(`[${date}] ${entry.author}: ${entry.description}`);\r\n\r\n if (entry.content.before) {\r\n lines.push(` - ${entry.content.before}`);\r\n }\r\n if (entry.content.after) {\r\n lines.push(` + ${entry.content.after}`);\r\n }\r\n }\r\n\r\n return lines.join('\\n');\r\n }\r\n\r\n /**\r\n * Export changelog to JSON (for programmatic consumption).\r\n *\r\n * @param entries - Array of changelog entries\r\n * @returns JSON string\r\n */\r\n static toJSON(entries: ChangeEntry[]): string {\r\n return JSON.stringify({\r\n generated: new Date().toISOString(),\r\n summary: this.getSummary(entries),\r\n entries,\r\n }, null, 2);\r\n }\r\n\r\n // ============================================================\r\n // Unified API (Phase 2 Enhancement)\r\n // ============================================================\r\n\r\n /**\r\n * Unified changelog generation - single entry point for all formats.\r\n *\r\n * Generates changelog from a document in the specified format.\r\n * This is the recommended method for most use cases.\r\n *\r\n * @param doc - Document to extract revisions from\r\n * @param options - Generation options including format\r\n * @returns Formatted changelog string\r\n *\r\n * @example\r\n * ```typescript\r\n * // Generate Markdown changelog\r\n * const md = ChangelogGenerator.generate(doc, { format: 'markdown' });\r\n *\r\n * // Generate HTML changelog\r\n * const html = ChangelogGenerator.generate(doc, { format: 'html' });\r\n *\r\n * // Generate CSV with filtering\r\n * const csv = ChangelogGenerator.generate(doc, {\r\n * format: 'csv',\r\n * filterAuthors: ['John Doe'],\r\n * sortBy: 'date',\r\n * sortOrder: 'desc'\r\n * });\r\n * ```\r\n */\r\n static generate(doc: Document, options?: ChangelogOptions): string {\r\n const logger = getLogger();\r\n const format = options?.format || 'markdown';\r\n\r\n logger.info('Generating changelog', { format });\r\n\r\n // Get entries with filtering\r\n let entries = this.fromDocument(doc, options);\r\n\r\n // Apply sorting if specified\r\n if (options?.sortBy) {\r\n entries = this.sortEntries(entries, options.sortBy, options.sortOrder || 'asc');\r\n }\r\n\r\n logger.info('Changelog entries processed', {\r\n entries: entries.length,\r\n format,\r\n sorted: !!options?.sortBy\r\n });\r\n\r\n // Generate output in specified format\r\n switch (format) {\r\n case 'json':\r\n return this.toJSON(entries);\r\n case 'markdown':\r\n return this.toMarkdown(entries, { includeMetadata: true });\r\n case 'text':\r\n return this.toPlainText(entries);\r\n case 'html':\r\n return this.toHTML(entries, options);\r\n case 'csv':\r\n return this.toCSV(entries);\r\n default:\r\n return this.toMarkdown(entries);\r\n }\r\n }\r\n\r\n /**\r\n * Export changelog to HTML format.\r\n *\r\n * Generates a complete HTML document with styling and structure.\r\n *\r\n * @param entries - Array of changelog entries\r\n * @param options - HTML generation options\r\n * @returns Complete HTML document string\r\n *\r\n * @example\r\n * ```typescript\r\n * const html = ChangelogGenerator.toHTML(entries);\r\n * fs.writeFileSync('changelog.html', html);\r\n * ```\r\n */\r\n static toHTML(entries: ChangeEntry[], options?: ChangelogOptions): string {\r\n const summary = this.getSummary(entries);\r\n\r\n // Group entries by category\r\n const byCategory = new Map<ChangeCategory, ChangeEntry[]>();\r\n for (const entry of entries) {\r\n if (!byCategory.has(entry.category)) {\r\n byCategory.set(entry.category, []);\r\n }\r\n byCategory.get(entry.category)!.push(entry);\r\n }\r\n\r\n const categoryTitles: Record<ChangeCategory, string> = {\r\n content: 'Content Changes',\r\n formatting: 'Formatting Changes',\r\n structural: 'Structural Changes',\r\n table: 'Table Changes',\r\n hyperlink: 'Hyperlink Changes',\r\n image: 'Image Changes',\r\n field: 'Field Changes',\r\n comment: 'Comment Changes',\r\n bookmark: 'Bookmark Changes',\r\n contentControl: 'Content Control Changes',\r\n };\r\n\r\n // Build HTML\r\n let html = `<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n <meta charset=\"UTF-8\">\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n <title>Document Changes</title>\r\n <style>\r\n body {\r\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\r\n max-width: 900px;\r\n margin: 0 auto;\r\n padding: 20px;\r\n line-height: 1.6;\r\n color: #333;\r\n }\r\n h1 { color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }\r\n h2 { color: #34495e; margin-top: 30px; }\r\n .summary { background: #f8f9fa; padding: 15px; border-radius: 8px; margin-bottom: 20px; }\r\n .summary p { margin: 5px 0; }\r\n .category { margin-bottom: 30px; }\r\n .change-list { list-style: none; padding: 0; }\r\n .change-item {\r\n background: #fff;\r\n border: 1px solid #e9ecef;\r\n border-radius: 6px;\r\n padding: 12px 15px;\r\n margin-bottom: 10px;\r\n }\r\n .change-item:hover { box-shadow: 0 2px 5px rgba(0,0,0,0.1); }\r\n .change-description { font-weight: 500; color: #2c3e50; }\r\n .change-meta { font-size: 0.85em; color: #7f8c8d; margin-top: 5px; }\r\n .change-content { margin-top: 8px; font-size: 0.9em; }\r\n .removed { color: #c0392b; text-decoration: line-through; }\r\n .added { color: #27ae60; }\r\n .badge {\r\n display: inline-block;\r\n padding: 2px 8px;\r\n border-radius: 4px;\r\n font-size: 0.75em;\r\n font-weight: 600;\r\n text-transform: uppercase;\r\n }\r\n .badge-insert { background: #d4edda; color: #155724; }\r\n .badge-delete { background: #f8d7da; color: #721c24; }\r\n .badge-formatting { background: #cce5ff; color: #004085; }\r\n .badge-structural { background: #fff3cd; color: #856404; }\r\n .badge-table { background: #e2e3e5; color: #383d41; }\r\n </style>\r\n</head>\r\n<body>\r\n <h1>Document Changes</h1>\r\n\r\n <div class=\"summary\">\r\n <p><strong>Total Changes:</strong> ${summary.total}</p>`;\r\n\r\n if (summary.dateRange) {\r\n html += `\r\n <p><strong>Date Range:</strong> ${summary.dateRange.earliest.toLocaleDateString()} - ${summary.dateRange.latest.toLocaleDateString()}</p>`;\r\n }\r\n\r\n const authors = Object.keys(summary.byAuthor);\r\n if (authors.length > 0) {\r\n html += `\r\n <p><strong>Authors:</strong> ${authors.join(', ')}</p>`;\r\n }\r\n\r\n html += `\r\n </div>\r\n`;\r\n\r\n // Add sections by category\r\n for (const [category, categoryEntries] of byCategory) {\r\n if (categoryEntries.length === 0) continue;\r\n\r\n html += `\r\n <section class=\"category\">\r\n <h2>${categoryTitles[category]}</h2>\r\n <ul class=\"change-list\">`;\r\n\r\n for (const entry of categoryEntries) {\r\n const badgeClass = this.getBadgeClass(entry.revisionType);\r\n const date = entry.date.toLocaleDateString();\r\n\r\n html += `\r\n <li class=\"change-item\">\r\n <span class=\"badge ${badgeClass}\">${entry.revisionType}</span>\r\n <div class=\"change-description\">${this.escapeHTML(entry.description)}</div>\r\n <div class=\"change-meta\">${this.escapeHTML(entry.author)} - ${date}</div>`;\r\n\r\n if (entry.content.before || entry.content.after) {\r\n html += `\r\n <div class=\"change-content\">`;\r\n if (entry.content.before) {\r\n html += `<span class=\"removed\">${this.escapeHTML(entry.content.before || '')}</span> `;\r\n }\r\n if (entry.content.after) {\r\n html += `<span class=\"added\">${this.escapeHTML(entry.content.after || '')}</span>`;\r\n }\r\n html += `</div>`;\r\n }\r\n\r\n html += `\r\n </li>`;\r\n }\r\n\r\n html += `\r\n </ul>\r\n </section>`;\r\n }\r\n\r\n html += `\r\n</body>\r\n</html>`;\r\n\r\n return html;\r\n }\r\n\r\n /**\r\n * Export changelog to CSV format.\r\n *\r\n * Generates CSV data suitable for spreadsheet applications.\r\n *\r\n * @param entries - Array of changelog entries\r\n * @param options - CSV generation options\r\n * @returns CSV string\r\n *\r\n * @example\r\n * ```typescript\r\n * const csv = ChangelogGenerator.toCSV(entries);\r\n * fs.writeFileSync('changelog.csv', csv);\r\n * ```\r\n */\r\n static toCSV(entries: ChangeEntry[], options?: {\r\n delimiter?: string;\r\n includeHeaders?: boolean;\r\n }): string {\r\n const delimiter = options?.delimiter || ',';\r\n const includeHeaders = options?.includeHeaders !== false;\r\n\r\n const headers = [\r\n 'ID',\r\n 'Type',\r\n 'Category',\r\n 'Author',\r\n 'Date',\r\n 'Description',\r\n 'Before',\r\n 'After',\r\n 'Paragraph',\r\n 'Run'\r\n ];\r\n\r\n const lines: string[] = [];\r\n\r\n if (includeHeaders) {\r\n lines.push(headers.join(delimiter));\r\n }\r\n\r\n for (const entry of entries) {\r\n const row = [\r\n entry.id,\r\n entry.revisionType,\r\n entry.category,\r\n this.escapeCSV(entry.author),\r\n entry.date.toISOString(),\r\n this.escapeCSV(entry.description),\r\n this.escapeCSV(entry.content.before || ''),\r\n this.escapeCSV(entry.content.after || ''),\r\n entry.location.paragraphIndex?.toString() || '',\r\n entry.location.runIndex?.toString() || '',\r\n ];\r\n lines.push(row.join(delimiter));\r\n }\r\n\r\n return lines.join('\\n');\r\n }\r\n\r\n /**\r\n * Get timeline view - changes organized by date.\r\n *\r\n * Groups changelog entries by date (YYYY-MM-DD) for timeline visualization.\r\n *\r\n * @param entries - Array of changelog entries\r\n * @returns Map of date strings to entries for that date\r\n *\r\n * @example\r\n * ```typescript\r\n * const timeline = ChangelogGenerator.getTimeline(entries);\r\n * for (const [date, dayEntries] of timeline) {\r\n * console.log(`${date}: ${dayEntries.length} changes`);\r\n * }\r\n * ```\r\n */\r\n static getTimeline(entries: ChangeEntry[]): Map<string, ChangeEntry[]> {\r\n const timeline = new Map<string, ChangeEntry[]>();\r\n\r\n for (const entry of entries) {\r\n const dateKey = entry.date.toISOString().split('T')[0]!; // YYYY-MM-DD\r\n if (!timeline.has(dateKey)) {\r\n timeline.set(dateKey, []);\r\n }\r\n timeline.get(dateKey)!.push(entry);\r\n }\r\n\r\n // Sort the map by date\r\n const sortedTimeline = new Map<string, ChangeEntry[]>(\r\n [...timeline.entries()].sort((a, b) => a[0].localeCompare(b[0]))\r\n );\r\n\r\n return sortedTimeline;\r\n }\r\n\r\n /**\r\n * Get summary by element type.\r\n *\r\n * Groups entries by the type of document element they affect.\r\n *\r\n * @param entries - Array of changelog entries\r\n * @returns Object with entries grouped by element type\r\n */\r\n static getSummaryByElement(entries: ChangeEntry[]): {\r\n paragraphs: ChangeEntry[];\r\n tables: ChangeEntry[];\r\n sections: ChangeEntry[];\r\n runs: ChangeEntry[];\r\n hyperlinks: ChangeEntry[];\r\n } {\r\n return {\r\n paragraphs: entries.filter(e =>\r\n e.revisionType === 'paragraphPropertiesChange' ||\r\n e.revisionType === 'numberingChange' ||\r\n (e.revisionType === 'insert' && !e.location.runIndex) ||\r\n (e.revisionType === 'delete' && !e.location.runIndex)\r\n ),\r\n tables: entries.filter(e =>\r\n ['tablePropertiesChange', 'tableRowPropertiesChange',\r\n 'tableCellPropertiesChange', 'tableExceptionPropertiesChange',\r\n 'tableCellInsert', 'tableCellDelete', 'tableCellMerge'].includes(e.revisionType)\r\n ),\r\n sections: entries.filter(e =>\r\n e.revisionType === 'sectionPropertiesChange'\r\n ),\r\n runs: entries.filter(e =>\r\n e.revisionType === 'runPropertiesChange' ||\r\n (e.revisionType === 'insert' && e.location.runIndex !== undefined) ||\r\n (e.revisionType === 'delete' && e.location.runIndex !== undefined)\r\n ),\r\n hyperlinks: entries.filter(e =>\r\n e.revisionType === 'hyperlinkChange'\r\n ),\r\n };\r\n }\r\n\r\n // ============================================================\r\n // Helper Methods\r\n // ============================================================\r\n\r\n /**\r\n * Sort entries by specified field.\r\n * @internal\r\n */\r\n private static sortEntries(\r\n entries: ChangeEntry[],\r\n sortBy: 'date' | 'author' | 'type' | 'category',\r\n order: 'asc' | 'desc'\r\n ): ChangeEntry[] {\r\n const sorted = [...entries].sort((a, b) => {\r\n let comparison = 0;\r\n\r\n switch (sortBy) {\r\n case 'date':\r\n comparison = a.date.getTime() - b.date.getTime();\r\n break;\r\n case 'author':\r\n comparison = a.author.localeCompare(b.author);\r\n break;\r\n case 'type':\r\n comparison = a.revisionType.localeCompare(b.revisionType);\r\n break;\r\n case 'category':\r\n comparison = a.category.localeCompare(b.category);\r\n break;\r\n }\r\n\r\n return order === 'desc' ? -comparison : comparison;\r\n });\r\n\r\n return sorted;\r\n }\r\n\r\n /**\r\n * Get CSS badge class for revision type.\r\n * @internal\r\n */\r\n private static getBadgeClass(type: RevisionType): string {\r\n switch (type) {\r\n case 'insert':\r\n case 'moveTo':\r\n case 'tableCellInsert':\r\n return 'badge-insert';\r\n case 'delete':\r\n case 'moveFrom':\r\n case 'tableCellDelete':\r\n return 'badge-delete';\r\n case 'runPropertiesChange':\r\n case 'paragraphPropertiesChange':\r\n case 'numberingChange':\r\n return 'badge-formatting';\r\n case 'sectionPropertiesChange':\r\n return 'badge-structural';\r\n case 'tablePropertiesChange':\r\n case 'tableRowPropertiesChange':\r\n case 'tableCellPropertiesChange':\r\n case 'tableCellMerge':\r\n return 'badge-table';\r\n default:\r\n return 'badge-formatting';\r\n }\r\n }\r\n\r\n /**\r\n * Escape HTML special characters.\r\n * @internal\r\n */\r\n private static escapeHTML(str: string): string {\r\n return str\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&#039;');\r\n }\r\n\r\n /**\r\n * Escape CSV special characters.\r\n * @internal\r\n */\r\n private static escapeCSV(str: string): string {\r\n // If string contains delimiter, newline, or quotes, wrap in quotes\r\n if (str.includes(',') || str.includes('\\n') || str.includes('\"')) {\r\n return `\"${str.replace(/\"/g, '\"\"')}\"`;\r\n }\r\n return str;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CompatibilityUpgrader.d.ts","sourceRoot":"","sources":["../../src/utils/CompatibilityUpgrader.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,aAAa;IAE5B,YAAY,EAAE,MAAM,CAAC;IAGrB,OAAO,EAAE,MAAM,CAAC;IAGhB,YAAY,EAAE,MAAM,EAAE,CAAC;IAGvB,aAAa,EAAE,MAAM,EAAE,CAAC;IAGxB,kBAAkB,EAAE,OAAO,CAAC;IAG5B,OAAO,EAAE,OAAO,CAAC;CAClB;AAKD,qBAAa,qBAAqB;IAchC,MAAM,CAAC,kBAAkB,CACvB,WAAW,EAAE,MAAM,EACnB,YAAY,GAAE,MAAW,GACxB;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE;IA+IzC,MAAM,CAAC,sBAAsB,CAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC;QAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE;IAyB5D,OAAO,CAAC,MAAM,CAAC,sBAAsB;CAMtC"}
1
+ {"version":3,"file":"CompatibilityUpgrader.d.ts","sourceRoot":"","sources":["../../src/utils/CompatibilityUpgrader.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,aAAa;IAE5B,YAAY,EAAE,MAAM,CAAC;IAGrB,OAAO,EAAE,MAAM,CAAC;IAGhB,YAAY,EAAE,MAAM,EAAE,CAAC;IAGvB,aAAa,EAAE,MAAM,EAAE,CAAC;IAGxB,kBAAkB,EAAE,OAAO,CAAC;IAG5B,OAAO,EAAE,OAAO,CAAC;CAClB;AAKD,qBAAa,qBAAqB;IAchC,MAAM,CAAC,kBAAkB,CACvB,WAAW,EAAE,MAAM,EACnB,YAAY,SAAK,GAChB;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE;IA+IzC,MAAM,CAAC,sBAAsB,CAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC;QAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE;IAyB5D,OAAO,CAAC,MAAM,CAAC,sBAAsB;CAMtC"}
@@ -6,8 +6,8 @@ class CompatibilityUpgrader {
6
6
  static upgradeCompatBlock(settingsXml, previousMode = 12) {
7
7
  const removedFlags = [];
8
8
  const addedSettings = [];
9
- const compatBlockMatch = settingsXml.match(/<w:compat>([\s\S]*?)<\/w:compat>/);
10
- const selfClosingCompat = settingsXml.match(/<w:compat\s*\/>/);
9
+ const compatBlockMatch = /<w:compat>([\s\S]*?)<\/w:compat>/.exec(settingsXml);
10
+ const selfClosingCompat = /<w:compat\s*\/>/.exec(settingsXml);
11
11
  if (!compatBlockMatch && !selfClosingCompat) {
12
12
  const modernBlock = CompatibilityUpgrader.buildModernCompatBlock(legacyCompatFlags_1.MODERN_COMPAT_SETTINGS);
13
13
  const xml = settingsXml.replace(/<\/w:settings>/, modernBlock + '\n</w:settings>');
@@ -58,9 +58,9 @@ class CompatibilityUpgrader {
58
58
  let settingMatch;
59
59
  while ((settingMatch = settingRegex.exec(compatBlock)) !== null) {
60
60
  const attrs = settingMatch[1] ?? '';
61
- const nameMatch = attrs.match(/w:name\s*=\s*"([^"]*)"/);
62
- const uriMatch = attrs.match(/w:uri\s*=\s*"([^"]*)"/);
63
- const valMatch = attrs.match(/w:val\s*=\s*"([^"]*)"/);
61
+ const nameMatch = /w:name\s*=\s*"([^"]*)"/.exec(attrs);
62
+ const uriMatch = /w:uri\s*=\s*"([^"]*)"/.exec(attrs);
63
+ const valMatch = /w:val\s*=\s*"([^"]*)"/.exec(attrs);
64
64
  if (nameMatch?.[1] && uriMatch?.[1] && valMatch?.[1]) {
65
65
  if (uriMatch[1] !== legacyCompatFlags_1.MS_WORD_COMPAT_URI) {
66
66
  preservedSettings.push({
@@ -76,8 +76,8 @@ class CompatibilityUpgrader {
76
76
  let existingMatch;
77
77
  while ((existingMatch = existingSettingRegex.exec(compatBlock)) !== null) {
78
78
  const attrs = existingMatch[1] ?? '';
79
- const nameMatch = attrs.match(/w:name\s*=\s*"([^"]*)"/);
80
- const uriMatch = attrs.match(/w:uri\s*=\s*"([^"]*)"/);
79
+ const nameMatch = /w:name\s*=\s*"([^"]*)"/.exec(attrs);
80
+ const uriMatch = /w:uri\s*=\s*"([^"]*)"/.exec(attrs);
81
81
  if (nameMatch?.[1] && uriMatch?.[1] && uriMatch[1] === legacyCompatFlags_1.MS_WORD_COMPAT_URI) {
82
82
  existingMsSettings.add(nameMatch[1]);
83
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CompatibilityUpgrader.js","sourceRoot":"","sources":["../../src/utils/CompatibilityUpgrader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CompatibilityUpgrader.js","sourceRoot":"","sources":["../../src/utils/CompatibilityUpgrader.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * CompatibilityUpgrader — Upgrades w:compat block in settings.xml to modern format.\r\n *\r\n * Equivalent to Word's File > Info > Convert operation for the compatibility\r\n * settings portion. Removes legacy boolean compat flags, updates compatSetting\r\n * entries, and manages modern namespaces.\r\n *\r\n * @module\r\n */\r\n\r\nimport {\r\n LEGACY_COMPAT_ELEMENT_NAMES,\r\n MODERN_COMPAT_SETTINGS,\r\n MS_WORD_COMPAT_URI,\r\n} from '../constants/legacyCompatFlags';\r\nimport type { CompatSetting } from '../types/compatibility-types';\r\n\r\n/**\r\n * Report of what changed during an upgrade operation.\r\n */\r\nexport interface UpgradeReport {\r\n /** Previous compatibility mode value (11, 12, 14, or 15) */\r\n previousMode: number;\r\n\r\n /** New compatibility mode (always 15 after upgrade) */\r\n newMode: number;\r\n\r\n /** Legacy compat flags that were removed (without w: prefix) */\r\n removedFlags: string[];\r\n\r\n /** Modern settings that were added (setting names) */\r\n addedSettings: string[];\r\n\r\n /** Whether namespaces were expanded */\r\n namespacesExpanded: boolean;\r\n\r\n /** Whether any changes were actually made (false if already mode 15 with no legacy flags) */\r\n changed: boolean;\r\n}\r\n\r\n/**\r\n * Upgrades w:compat blocks in settings.xml to modern Word 2013+ format.\r\n */\r\nexport class CompatibilityUpgrader {\r\n /**\r\n * Upgrades the w:compat block in settings.xml to mode 15.\r\n *\r\n * Operations performed:\r\n * 1. Remove all legacy boolean compat elements\r\n * 2. Remove existing Microsoft-URI w:compatSetting entries\r\n * 3. Insert modern w:compatSetting entries\r\n * 4. Preserve non-Microsoft w:compatSetting entries (custom URIs)\r\n *\r\n * @param settingsXml - The raw settings.xml content\r\n * @param previousMode - The current compatibility mode value (for the report)\r\n * @returns Object with upgraded XML and an UpgradeReport\r\n */\r\n static upgradeCompatBlock(\r\n settingsXml: string,\r\n previousMode = 12\r\n ): { xml: string; report: UpgradeReport } {\r\n const removedFlags: string[] = [];\r\n const addedSettings: string[] = [];\r\n\r\n // Check if already mode 15 with no legacy flags\r\n const compatBlockMatch = /<w:compat>([\\s\\S]*?)<\\/w:compat>/.exec(settingsXml);\r\n const selfClosingCompat = /<w:compat\\s*\\/>/.exec(settingsXml);\r\n\r\n if (!compatBlockMatch && !selfClosingCompat) {\r\n // No w:compat block — insert a full modern block before </w:settings>\r\n const modernBlock = CompatibilityUpgrader.buildModernCompatBlock(MODERN_COMPAT_SETTINGS);\r\n const xml = settingsXml.replace(\r\n /<\\/w:settings>/,\r\n modernBlock + '\\n</w:settings>'\r\n );\r\n\r\n for (const s of MODERN_COMPAT_SETTINGS) {\r\n addedSettings.push(s.name);\r\n }\r\n\r\n return {\r\n xml,\r\n report: {\r\n previousMode,\r\n newMode: 15,\r\n removedFlags,\r\n addedSettings,\r\n namespacesExpanded: false,\r\n changed: true,\r\n },\r\n };\r\n }\r\n\r\n // Handle self-closing <w:compat/>\r\n if (selfClosingCompat) {\r\n const modernBlock = CompatibilityUpgrader.buildModernCompatBlock(MODERN_COMPAT_SETTINGS);\r\n const xml = settingsXml.replace(/<w:compat\\s*\\/>/, modernBlock);\r\n\r\n for (const s of MODERN_COMPAT_SETTINGS) {\r\n addedSettings.push(s.name);\r\n }\r\n\r\n return {\r\n xml,\r\n report: {\r\n previousMode,\r\n newMode: 15,\r\n removedFlags,\r\n addedSettings,\r\n namespacesExpanded: false,\r\n changed: true,\r\n },\r\n };\r\n }\r\n\r\n // Process existing w:compat block\r\n const compatBlock = compatBlockMatch![1] ?? '';\r\n\r\n // 1. Find and record legacy flags that will be removed\r\n const legacyFlagRegex = /<w:(\\w+)(?:\\s[^>]*)?\\/?>/g;\r\n let flagMatch;\r\n while ((flagMatch = legacyFlagRegex.exec(compatBlock)) !== null) {\r\n const tagName = flagMatch[1];\r\n if (tagName && tagName !== 'compatSetting' && LEGACY_COMPAT_ELEMENT_NAMES.has(tagName)) {\r\n removedFlags.push(tagName);\r\n }\r\n }\r\n\r\n // 2. Collect non-Microsoft compatSetting entries to preserve\r\n const preservedSettings: CompatSetting[] = [];\r\n const settingRegex = /<w:compatSetting\\s+([^>]*)\\/?\\s*>/g;\r\n let settingMatch;\r\n while ((settingMatch = settingRegex.exec(compatBlock)) !== null) {\r\n const attrs = settingMatch[1] ?? '';\r\n const nameMatch = /w:name\\s*=\\s*\"([^\"]*)\"/.exec(attrs);\r\n const uriMatch = /w:uri\\s*=\\s*\"([^\"]*)\"/.exec(attrs);\r\n const valMatch = /w:val\\s*=\\s*\"([^\"]*)\"/.exec(attrs);\r\n\r\n if (nameMatch?.[1] && uriMatch?.[1] && valMatch?.[1]) {\r\n // Preserve settings with non-Microsoft URIs\r\n if (uriMatch[1] !== MS_WORD_COMPAT_URI) {\r\n preservedSettings.push({\r\n name: nameMatch[1],\r\n uri: uriMatch[1],\r\n val: valMatch[1],\r\n });\r\n }\r\n }\r\n }\r\n\r\n // 3. Determine which modern settings are actually new\r\n const existingMsSettings = new Set<string>();\r\n const existingSettingRegex = /<w:compatSetting\\s+([^>]*)\\/?\\s*>/g;\r\n let existingMatch;\r\n while ((existingMatch = existingSettingRegex.exec(compatBlock)) !== null) {\r\n const attrs = existingMatch[1] ?? '';\r\n const nameMatch = /w:name\\s*=\\s*\"([^\"]*)\"/.exec(attrs);\r\n const uriMatch = /w:uri\\s*=\\s*\"([^\"]*)\"/.exec(attrs);\r\n if (nameMatch?.[1] && uriMatch?.[1] && uriMatch[1] === MS_WORD_COMPAT_URI) {\r\n existingMsSettings.add(nameMatch[1]);\r\n }\r\n }\r\n\r\n for (const s of MODERN_COMPAT_SETTINGS) {\r\n if (!existingMsSettings.has(s.name)) {\r\n addedSettings.push(s.name);\r\n }\r\n }\r\n // compatibilityMode value change counts as \"added\" if it existed but with different val\r\n if (existingMsSettings.has('compatibilityMode') && previousMode !== 15) {\r\n if (!addedSettings.includes('compatibilityMode')) {\r\n addedSettings.push('compatibilityMode');\r\n }\r\n }\r\n\r\n // 4. Build the new compat block\r\n const allSettings = [...MODERN_COMPAT_SETTINGS, ...preservedSettings];\r\n const modernBlock = CompatibilityUpgrader.buildModernCompatBlock(allSettings);\r\n\r\n // 5. Replace the old block\r\n const changed = removedFlags.length > 0 || addedSettings.length > 0 || previousMode !== 15;\r\n const xml = settingsXml.replace(/<w:compat>[\\s\\S]*?<\\/w:compat>/, modernBlock);\r\n\r\n return {\r\n xml,\r\n report: {\r\n previousMode,\r\n newMode: 15,\r\n removedFlags,\r\n addedSettings,\r\n namespacesExpanded: false,\r\n changed,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Ensures namespace declarations include all modern extended namespaces\r\n * (w14, w15, w16se, w16cid, etc.) and returns the expanded set.\r\n *\r\n * @param namespaces - Current namespace record from document\r\n * @returns Updated namespace record with modern namespaces added\r\n */\r\n static ensureModernNamespaces(\r\n namespaces: Record<string, string>\r\n ): { namespaces: Record<string, string>; expanded: boolean } {\r\n const result = { ...namespaces };\r\n let expanded = false;\r\n\r\n const modernNamespaces: Record<string, string> = {\r\n 'xmlns:w14': 'http://schemas.microsoft.com/office/word/2010/wordml',\r\n 'xmlns:w15': 'http://schemas.microsoft.com/office/word/2012/wordml',\r\n 'xmlns:w16se': 'http://schemas.microsoft.com/office/word/2015/wordml/symex',\r\n 'xmlns:w16cid': 'http://schemas.microsoft.com/office/word/2016/wordml/cid',\r\n };\r\n\r\n for (const [key, value] of Object.entries(modernNamespaces)) {\r\n if (!result[key]) {\r\n result[key] = value;\r\n expanded = true;\r\n }\r\n }\r\n\r\n return { namespaces: result, expanded };\r\n }\r\n\r\n /**\r\n * Builds a <w:compat> block XML string from an array of compat settings.\r\n * Does not include legacy boolean flags (they are stripped during upgrade).\r\n */\r\n private static buildModernCompatBlock(settings: CompatSetting[]): string {\r\n const entries = settings.map(\r\n s => ` <w:compatSetting w:name=\"${s.name}\" w:uri=\"${s.uri}\" w:val=\"${s.val}\"/>`\r\n );\r\n return `<w:compat>\\n${entries.join('\\n')}\\n </w:compat>`;\r\n }\r\n}\r\n"]}
@@ -254,7 +254,7 @@ function acceptRevisionsInMemory(doc, options = {}) {
254
254
  }
255
255
  if (opts.acceptPropertyChanges) {
256
256
  const section = doc.getSection();
257
- if (section && section.getSectPrChange()) {
257
+ if (section?.getSectPrChange()) {
258
258
  section.clearSectPrChange();
259
259
  result.propertyChangesAccepted++;
260
260
  }
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryRevisionAcceptor.js","sourceRoot":"","sources":["../../src/utils/InMemoryRevisionAcceptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InMemoryRevisionAcceptor.js","sourceRoot":"","sources":["../../src/utils/InMemoryRevisionAcceptor.ts"],"names":[],"mappings":";;AA4GA,sDAkEC;AAaD,0DA8PC;AAuID,sDAGC;AAKD,8DAGC;AAKD,oDAaC;AA5kBD,qDAAkD;AAElD,mDAA8D;AAG9D,iEAAkG;AAElG,6CAA0C;AAE1C,qCAAwE;AAKxE,SAAS,SAAS;IAChB,OAAO,IAAA,2BAAkB,EAAC,IAAA,wBAAe,GAAE,EAAE,0BAA0B,CAAC,CAAC;AAC3E,CAAC;AAuCD,MAAM,sBAAsB,GAAmB;IAC7C,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,QAAQ;CACT,CAAC;AAKF,MAAM,uBAAuB,GAAmB;IAC9C,qBAAqB;IACrB,2BAA2B;IAC3B,uBAAuB;IACvB,gCAAgC;IAChC,0BAA0B;IAC1B,2BAA2B;IAC3B,yBAAyB;IACzB,iBAAiB;CAClB,CAAC;AAiBF,SAAgB,qBAAqB,CAAC,GAAW;IAC/C,IAAI,MAAM,GAAG,GAAG,CAAC;IAGjB,MAAM,aAAa,GAAG;QACpB,kEAAkE;QAClE,8DAA8D;QAC9D,8DAA8D;QAC9D,0DAA0D;QAC1D,0EAA0E;QAC1E,sEAAsE;QACtE,0EAA0E;QAC1E,sEAAsE;KACvE,CAAC;IACF,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACpC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvC,CAAC;IAGD,MAAM,kBAAkB,GAAG;QACzB,4CAA4C;QAC5C,4CAA4C;QAC5C,gDAAgD;QAChD,oDAAoD;QACpD,8CAA8C;QAC9C,8CAA8C;QAC9C,kDAAkD;QAClD,oDAAoD;QACpD,wDAAwD;KACzD,CAAC;IACF,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;QACzC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvC,CAAC;IAID,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,OAAO,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QACxB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAGjD,OAAO,GAAG,CAAC,CAAC;IACZ,OAAO,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QACxB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,4CAA4C,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IAGtD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAGlD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC1C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAG/C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;IAEpD,OAAO,MAAM,CAAC;AAChB,CAAC;AAaD,SAAgB,uBAAuB,CACrC,GAAa,EACb,UAAkC,EAAE;IAEpC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAqC;QAC7C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAI;QAClD,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,IAAI;QAChD,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;QACxC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,IAAI,IAAI;QAC5D,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,IAAI;KACvD,CAAC;IAEF,MAAM,MAAM,GAA0B;QACpC,kBAAkB,EAAE,CAAC;QACrB,iBAAiB,EAAE,CAAC;QACpB,aAAa,EAAE,CAAC;QAChB,uBAAuB,EAAE,CAAC;QAC1B,aAAa,EAAE,CAAC;QAChB,kBAAkB,EAAE,CAAC;KACtB,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAIhE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,eAAe,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACjD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,kBAAkB,GAAG,eAAe,CAAC,iBAAiB,EAAE,CAAC;YAC/D,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnD,MAAM,CAAC,IAAI,CACT,yFAAyF;wBACzF,gEAAgE,EAChE,EAAE,eAAe,EAAE,kBAAkB,CAAC,gBAAgB,EAAE,CACzD,CAAC;gBACJ,CAAC;gBACD,IAAI,kBAAkB,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjD,MAAM,CAAC,IAAI,CACT,iEAAiE;wBACjE,uDAAuD,EACvD,EAAE,eAAe,EAAE,kBAAkB,CAAC,cAAc,EAAE,CACvD,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAGD,MAAM,UAAU,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC1C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,eAAe,GAAG,0BAA0B,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACpE,MAAM,CAAC,kBAAkB,IAAI,eAAe,CAAC,kBAAkB,CAAC;QAChE,MAAM,CAAC,iBAAiB,IAAI,eAAe,CAAC,iBAAiB,CAAC;QAC9D,MAAM,CAAC,aAAa,IAAI,eAAe,CAAC,aAAa,CAAC;QACtD,MAAM,CAAC,uBAAuB,IAAI,eAAe,CAAC,uBAAuB,CAAC;IAC5E,CAAC;IAGD,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,qBAAqB,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YACzD,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACzB,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACnC,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAElC,IAAI,IAAI,CAAC,qBAAqB,IAAI,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC;gBACtD,GAAG,CAAC,eAAe,EAAE,CAAC;gBACtB,MAAM,CAAC,uBAAuB,EAAE,CAAC;YACnC,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAElC,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;oBACvD,IAAI,CAAC,eAAe,EAAE,CAAC;oBACvB,MAAM,CAAC,uBAAuB,EAAE,CAAC;gBACnC,CAAC;gBAGD,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;oBACzD,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,MAAM,CAAC,uBAAuB,EAAE,CAAC;gBACnC,CAAC;gBAGD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;oBAC7C,MAAM,eAAe,GAAG,0BAA0B,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACpE,MAAM,CAAC,kBAAkB,IAAI,eAAe,CAAC,kBAAkB,CAAC;oBAChE,MAAM,CAAC,iBAAiB,IAAI,eAAe,CAAC,iBAAiB,CAAC;oBAC9D,MAAM,CAAC,aAAa,IAAI,eAAe,CAAC,aAAa,CAAC;oBACtD,MAAM,CAAC,uBAAuB,IAAI,eAAe,CAAC,uBAAuB,CAAC;gBAC5E,CAAC;gBAID,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;oBAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wBAC3B,IAAI,IAAI,EAAE,CAAC;4BACT,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BACnD,IAAI,UAAU,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;gCAC5B,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gCAG3C,MAAM,CAAC,uBAAuB,EAAE,CAAC;gCACjC,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE;oCACrD,IAAI,EAAE,IAAI,CAAC,IAAI;oCACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;oCACvB,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;oCAC/B,aAAa,EAAE,UAAU,CAAC,MAAM;iCACjC,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAGD,MAAM,mBAAmB,GAAG,GAAG,CAAC,sBAAsB,EAAE,CAAC;IACzD,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,mBAAmB,CAAC,aAAa,EAAE,CAAC;QACpD,KAAK,MAAM,WAAW,IAAI,OAAO,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAClD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAE/B,IAAI,OAAO,YAAY,qBAAS,EAAE,CAAC;oBACjC,MAAM,eAAe,GAAG,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAClE,MAAM,CAAC,kBAAkB,IAAI,eAAe,CAAC,kBAAkB,CAAC;oBAChE,MAAM,CAAC,iBAAiB,IAAI,eAAe,CAAC,iBAAiB,CAAC;oBAC9D,MAAM,CAAC,aAAa,IAAI,eAAe,CAAC,aAAa,CAAC;oBACtD,MAAM,CAAC,uBAAuB,IAAI,eAAe,CAAC,uBAAuB,CAAC;gBAC5E,CAAC;qBAAM,IAAI,OAAO,YAAY,aAAK,EAAE,CAAC;oBAEpC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;wBACpC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;4BAClC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;gCAC7C,MAAM,eAAe,GAAG,0BAA0B,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gCACpE,MAAM,CAAC,kBAAkB,IAAI,eAAe,CAAC,kBAAkB,CAAC;gCAChE,MAAM,CAAC,iBAAiB,IAAI,eAAe,CAAC,iBAAiB,CAAC;gCAC9D,MAAM,CAAC,aAAa,IAAI,eAAe,CAAC,aAAa,CAAC;gCACtD,MAAM,CAAC,uBAAuB,IAAI,eAAe,CAAC,uBAAuB,CAAC;4BAC5E,CAAC;4BAED,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;gCAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gCAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oCAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;oCAC3B,IAAI,IAAI,EAAE,CAAC;wCACT,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wCACnD,IAAI,UAAU,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;4CAC5B,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;4CAC3C,MAAM,CAAC,uBAAuB,EAAE,CAAC;wCACnC,CAAC;oCACH,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAGD,MAAM,OAAO,GAAG,mBAAmB,CAAC,aAAa,EAAE,CAAC;QACpD,KAAK,MAAM,WAAW,IAAI,OAAO,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAClD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAE/B,IAAI,OAAO,YAAY,qBAAS,EAAE,CAAC;oBACjC,MAAM,eAAe,GAAG,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBAClE,MAAM,CAAC,kBAAkB,IAAI,eAAe,CAAC,kBAAkB,CAAC;oBAChE,MAAM,CAAC,iBAAiB,IAAI,eAAe,CAAC,iBAAiB,CAAC;oBAC9D,MAAM,CAAC,aAAa,IAAI,eAAe,CAAC,aAAa,CAAC;oBACtD,MAAM,CAAC,uBAAuB,IAAI,eAAe,CAAC,uBAAuB,CAAC;gBAC5E,CAAC;qBAAM,IAAI,OAAO,YAAY,aAAK,EAAE,CAAC;oBAEpC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;wBACpC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;4BAClC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;gCAC7C,MAAM,eAAe,GAAG,0BAA0B,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gCACpE,MAAM,CAAC,kBAAkB,IAAI,eAAe,CAAC,kBAAkB,CAAC;gCAChE,MAAM,CAAC,iBAAiB,IAAI,eAAe,CAAC,iBAAiB,CAAC;gCAC9D,MAAM,CAAC,aAAa,IAAI,eAAe,CAAC,aAAa,CAAC;gCACtD,MAAM,CAAC,uBAAuB,IAAI,eAAe,CAAC,uBAAuB,CAAC;4BAC5E,CAAC;4BAED,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;gCAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gCAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oCAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;oCAC3B,IAAI,IAAI,EAAE,CAAC;wCACT,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wCACnD,IAAI,UAAU,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;4CAC5B,IAAI,CAAC,sBAAsB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;4CAC3C,MAAM,CAAC,uBAAuB,EAAE,CAAC;wCACnC,CAAC;oCACH,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAGD,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,OAAO,EAAE,eAAe,EAAE,EAAE,CAAC;YAC/B,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC5B,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAGD,MAAM,eAAe,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAC;IACjD,IAAI,eAAe,EAAE,CAAC;QACpB,eAAe,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAGD,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAK1B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,MAAM,CAAC,kBAAkB,GAAG,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,aAAa;QAClB,MAAM,CAAC,kBAAkB;YACzB,MAAM,CAAC,iBAAiB;YACxB,MAAM,CAAC,aAAa;YACpB,MAAM,CAAC,uBAAuB,CAAC;IAEjC,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;QAC1C,UAAU,EAAE,MAAM,CAAC,kBAAkB;QACrC,SAAS,EAAE,MAAM,CAAC,iBAAiB;QACnC,KAAK,EAAE,MAAM,CAAC,aAAa;QAC3B,eAAe,EAAE,MAAM,CAAC,uBAAuB;QAC/C,KAAK,EAAE,MAAM,CAAC,aAAa;QAC3B,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;KAC9C,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAgBD,SAAS,0BAA0B,CACjC,SAAoB,EACpB,OAAyC;IAEzC,MAAM,MAAM,GAA0B;QACpC,kBAAkB,EAAE,CAAC;QACrB,iBAAiB,EAAE,CAAC;QACpB,aAAa,EAAE,CAAC;QAChB,uBAAuB,EAAE,CAAC;QAC1B,aAAa,EAAE,CAAC;QAChB,kBAAkB,EAAE,CAAC;KACtB,CAAC;IAEF,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;IACvC,MAAM,UAAU,GAAuB,EAAE,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,IAAI,YAAY,mBAAQ,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAGpC,IAAI,YAAY,KAAK,QAAQ,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAE1D,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBACvC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;oBAEjC,IAAI,IAAA,mCAAiB,EAAC,KAAK,CAAC,EAAE,CAAC;wBAC7B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,CAAC;yBAAM,IAAI,IAAA,8BAAY,EAAC,KAAK,CAAC,EAAE,CAAC;wBAC/B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,CAAC;yBAAM,IAAI,IAAA,oCAAkB,EAAC,KAAK,CAAC,EAAE,CAAC;wBACrC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;gBACD,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC5B,SAAS;YACX,CAAC;YAGD,IAAI,YAAY,KAAK,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;gBAEzD,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;YAGD,IAAI,YAAY,KAAK,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBAEvD,MAAM,CAAC,aAAa,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YAGD,IAAI,YAAY,KAAK,QAAQ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBAErD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBACvC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;oBAEjC,IAAI,IAAA,mCAAiB,EAAC,KAAK,CAAC,EAAE,CAAC;wBAC7B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,CAAC;yBAAM,IAAI,IAAA,8BAAY,EAAC,KAAK,CAAC,EAAE,CAAC;wBAC/B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,CAAC;yBAAM,IAAI,IAAA,oCAAkB,EAAC,KAAK,CAAC,EAAE,CAAC;wBACrC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;gBACD,MAAM,CAAC,aAAa,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YAGD,IAAI,uBAAuB,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;gBAKpF,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBACvC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;oBAEjC,IAAI,IAAA,mCAAiB,EAAC,KAAK,CAAC,EAAE,CAAC;wBAC7B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,CAAC;yBAAM,IAAI,IAAA,8BAAY,EAAC,KAAK,CAAC,EAAE,CAAC;wBAC/B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,CAAC;yBAAM,IAAI,IAAA,oCAAkB,EAAC,KAAK,CAAC,EAAE,CAAC;wBACrC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;gBACD,MAAM,CAAC,uBAAuB,EAAE,CAAC;gBACjC,SAAS;YACX,CAAC;YAID,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YAEN,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAGD,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAIjC,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QAC7C,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YACzB,SAAS,CAAC,8BAA8B,EAAE,CAAC;YAC3C,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAKD,SAAgB,qBAAqB,CAAC,SAAoB;IACxD,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;IACvC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,YAAY,mBAAQ,CAAC,CAAC;AAC1D,CAAC;AAKD,SAAgB,yBAAyB,CAAC,SAAoB;IAC5D,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;IACvC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAoB,EAAE,CAAC,IAAI,YAAY,mBAAQ,CAAC,CAAC;AAC9E,CAAC;AAKD,SAAgB,oBAAoB,CAAC,GAAa;IAChD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE/C,MAAM,UAAU,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC1C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;QACvD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAaD,SAAS,kBAAkB,CAAC,GAAa,EAAE,MAAe;IACxD,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;IAC/B,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;QAClE,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAE7B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;oBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;oBACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpB,UAAU,GAAG,IAAI,CAAC;wBAClB,MAAM;oBACR,CAAC;gBACH,CAAC;gBACD,IAAI,UAAU;oBAAE,MAAM;YACxB,CAAC;YACD,IAAI,UAAU;gBAAE,MAAM;QACxB,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAEhB,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAGD,KAAK,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,UAAU,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5D,YAAY,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["/**\r\n * InMemoryRevisionAcceptor - Accept revisions by transforming the in-memory object model\r\n *\r\n * This approach follows the industry standard (OpenXML PowerTools, Aspose.Words):\r\n * - Transforms Revision objects in paragraph.content[] to their \"accepted\" state\r\n * - For insertions: Unwrap - extract child Runs/Hyperlinks into parent paragraph\r\n * - For deletions: Remove - delete the revision and its content from the model\r\n * - For property changes: Remove the change metadata, keep the current formatting\r\n *\r\n * Unlike the raw XML approach (acceptRevisions.ts), this allows subsequent modifications\r\n * to the in-memory model to be correctly serialized on save().\r\n *\r\n * @see https://github.com/OfficeDev/Open-Xml-PowerTools - RevisionAccepter.cs\r\n * @see https://learn.microsoft.com/en-us/previous-versions/office/developer/office-2007/ee836138(v=office.12)\r\n */\r\n\r\nimport type { Document } from '../core/Document';\r\nimport { Paragraph } from '../elements/Paragraph';\r\nimport type { ParagraphContent } from '../elements/Paragraph';\r\nimport { Revision, RevisionType } from '../elements/Revision';\r\nimport type { Run } from '../elements/Run';\r\nimport type { Hyperlink } from '../elements/Hyperlink';\r\nimport { isRunContent, isHyperlinkContent, isImageRunContent } from '../elements/RevisionContent';\r\nimport type { ImageRun } from '../elements/ImageRun';\r\nimport { Table } from '../elements/Table';\r\nimport { Section } from '../elements/Section';\r\nimport { getGlobalLogger, createScopedLogger, ILogger } from './logger';\r\n\r\n/**\r\n * Get scoped logger for this module\r\n */\r\nfunction getLogger(): ILogger {\r\n return createScopedLogger(getGlobalLogger(), 'InMemoryRevisionAcceptor');\r\n}\r\n\r\n/**\r\n * Options for accepting revisions\r\n */\r\nexport interface AcceptRevisionsOptions {\r\n /** Accept insertion revisions (w:ins) - default: true */\r\n acceptInsertions?: boolean;\r\n /** Accept deletion revisions (w:del) - default: true */\r\n acceptDeletions?: boolean;\r\n /** Accept move operations (w:moveFrom, w:moveTo) - default: true */\r\n acceptMoves?: boolean;\r\n /** Accept property change revisions (rPrChange, pPrChange, etc.) - default: true */\r\n acceptPropertyChanges?: boolean;\r\n /** Remove empty tables after revision acceptance - default: true */\r\n cleanupEmptyTables?: boolean;\r\n}\r\n\r\n/**\r\n * Result of accepting revisions\r\n */\r\nexport interface AcceptRevisionsResult {\r\n /** Number of insertions accepted */\r\n insertionsAccepted: number;\r\n /** Number of deletions accepted */\r\n deletionsAccepted: number;\r\n /** Number of move operations accepted */\r\n movesAccepted: number;\r\n /** Number of property changes accepted */\r\n propertyChangesAccepted: number;\r\n /** Total revisions processed */\r\n totalAccepted: number;\r\n /** Number of empty tables removed during cleanup */\r\n emptyTablesRemoved: number;\r\n}\r\n\r\n/**\r\n * Revision types that represent content changes (contain actual text/runs)\r\n */\r\nconst CONTENT_REVISION_TYPES: RevisionType[] = [\r\n 'insert',\r\n 'delete',\r\n 'moveFrom',\r\n 'moveTo',\r\n];\r\n\r\n/**\r\n * Revision types that represent property/formatting changes\r\n */\r\nconst PROPERTY_REVISION_TYPES: RevisionType[] = [\r\n 'runPropertiesChange',\r\n 'paragraphPropertiesChange',\r\n 'tablePropertiesChange',\r\n 'tableExceptionPropertiesChange',\r\n 'tableRowPropertiesChange',\r\n 'tableCellPropertiesChange',\r\n 'sectionPropertiesChange',\r\n 'numberingChange',\r\n];\r\n\r\n/**\r\n * Strip revision markup from raw XML string.\r\n * Used for nested tables stored as raw XML that cannot be processed via the in-memory model.\r\n *\r\n * Follows the same rules as the main revision acceptor:\r\n * - Insertions: Keep content, remove wrapper tags\r\n * - Deletions: Remove entirely (content and tags)\r\n * - MoveFrom: Remove entirely (source of move)\r\n * - MoveTo: Keep content, remove wrapper\r\n * - Property changes: Remove change tracking elements\r\n * - Range markers: Remove boundary markers\r\n *\r\n * @param xml - Raw XML string containing revision markup\r\n * @returns Cleaned XML with revisions accepted\r\n */\r\nexport function stripRevisionsFromXml(xml: string): string {\r\n let result = xml;\r\n\r\n // Step 1: Remove range markers (must be done first)\r\n const rangePatterns = [\r\n /<w:moveFromRangeStart[^>]*(?:\\/>|>.*?<\\/w:moveFromRangeStart>)/gs,\r\n /<w:moveFromRangeEnd[^>]*(?:\\/>|>.*?<\\/w:moveFromRangeEnd>)/gs,\r\n /<w:moveToRangeStart[^>]*(?:\\/>|>.*?<\\/w:moveToRangeStart>)/gs,\r\n /<w:moveToRangeEnd[^>]*(?:\\/>|>.*?<\\/w:moveToRangeEnd>)/gs,\r\n /<w:customXmlInsRangeStart[^>]*(?:\\/>|>.*?<\\/w:customXmlInsRangeStart>)/gs,\r\n /<w:customXmlInsRangeEnd[^>]*(?:\\/>|>.*?<\\/w:customXmlInsRangeEnd>)/gs,\r\n /<w:customXmlDelRangeStart[^>]*(?:\\/>|>.*?<\\/w:customXmlDelRangeStart>)/gs,\r\n /<w:customXmlDelRangeEnd[^>]*(?:\\/>|>.*?<\\/w:customXmlDelRangeEnd>)/gs,\r\n ];\r\n for (const pattern of rangePatterns) {\r\n result = result.replace(pattern, '');\r\n }\r\n\r\n // Step 2: Remove property change elements\r\n const propChangePatterns = [\r\n /<w:rPrChange[^>]*>[\\s\\S]*?<\\/w:rPrChange>/g,\r\n /<w:pPrChange[^>]*>[\\s\\S]*?<\\/w:pPrChange>/g,\r\n /<w:tblPrChange[^>]*>[\\s\\S]*?<\\/w:tblPrChange>/g,\r\n /<w:tblPrExChange[^>]*>[\\s\\S]*?<\\/w:tblPrExChange>/g,\r\n /<w:tcPrChange[^>]*>[\\s\\S]*?<\\/w:tcPrChange>/g,\r\n /<w:trPrChange[^>]*>[\\s\\S]*?<\\/w:trPrChange>/g,\r\n /<w:sectPrChange[^>]*>[\\s\\S]*?<\\/w:sectPrChange>/g,\r\n /<w:tblGridChange[^>]*>[\\s\\S]*?<\\/w:tblGridChange>/g,\r\n /<w:numberingChange[^>]*>[\\s\\S]*?<\\/w:numberingChange>/g,\r\n ];\r\n for (const pattern of propChangePatterns) {\r\n result = result.replace(pattern, '');\r\n }\r\n\r\n // Step 3: Remove deletions entirely (including content)\r\n // Iterate until no more deletions (handles nested cases)\r\n let prevLen = 0;\r\n while (result.length !== prevLen) {\r\n prevLen = result.length;\r\n result = result.replace(/<w:del\\b[^>]*>[\\s\\S]*?<\\/w:del>/g, '');\r\n }\r\n result = result.replace(/<w:del\\b[^>]*\\/>/g, '');\r\n\r\n // Step 4: Remove moveFrom entirely (source of moved content)\r\n prevLen = 0;\r\n while (result.length !== prevLen) {\r\n prevLen = result.length;\r\n result = result.replace(/<w:moveFrom\\b[^>]*>[\\s\\S]*?<\\/w:moveFrom>/g, '');\r\n }\r\n result = result.replace(/<w:moveFrom\\b[^>]*\\/>/g, '');\r\n\r\n // Step 5: Unwrap moveTo (keep content, remove wrapper)\r\n result = result.replace(/<\\/w:moveTo>/g, '');\r\n result = result.replace(/<w:moveTo\\b[^>]*>/g, '');\r\n\r\n // Step 6: Unwrap insertions (keep content, remove wrapper)\r\n result = result.replace(/<\\/w:ins>/g, '');\r\n result = result.replace(/<w:ins\\b[^>]*>/g, '');\r\n\r\n // Step 7: Clean up orphaned tags\r\n result = result.replace(/<w:ins\\b[^>]*\\/>/g, '');\r\n result = result.replace(/<w:del\\b[^>]*\\/>/g, '');\r\n result = result.replace(/<w:moveFrom\\b[^>]*\\/>/g, '');\r\n result = result.replace(/<w:moveTo\\b[^>]*\\/>/g, '');\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Accept all revisions in the document by transforming the in-memory model.\r\n *\r\n * This is the industry-standard approach used by OpenXML PowerTools, Aspose.Words,\r\n * and other production DOCX libraries. It allows subsequent modifications to the\r\n * document to work correctly.\r\n *\r\n * @param doc - Document to process\r\n * @param options - Options for which revision types to accept\r\n * @returns Result with counts of accepted revisions\r\n */\r\nexport function acceptRevisionsInMemory(\r\n doc: Document,\r\n options: AcceptRevisionsOptions = {}\r\n): AcceptRevisionsResult {\r\n const logger = getLogger();\r\n const opts: Required<AcceptRevisionsOptions> = {\r\n acceptInsertions: options.acceptInsertions ?? true,\r\n acceptDeletions: options.acceptDeletions ?? true,\r\n acceptMoves: options.acceptMoves ?? true,\r\n acceptPropertyChanges: options.acceptPropertyChanges ?? true,\r\n cleanupEmptyTables: options.cleanupEmptyTables ?? true,\r\n };\r\n\r\n const result: AcceptRevisionsResult = {\r\n insertionsAccepted: 0,\r\n deletionsAccepted: 0,\r\n movesAccepted: 0,\r\n propertyChangesAccepted: 0,\r\n totalAccepted: 0,\r\n emptyTablesRemoved: 0,\r\n };\r\n\r\n logger.info('Accepting revisions in-memory', { options: opts });\r\n\r\n // Validate move pairs before accepting if moves are being accepted\r\n // Orphaned moves could result in content loss (moveFrom without moveTo = content deleted)\r\n if (opts.acceptMoves) {\r\n const revisionManager = doc.getRevisionManager();\r\n if (revisionManager) {\r\n const movePairValidation = revisionManager.validateMovePairs();\r\n if (!movePairValidation.valid) {\r\n if (movePairValidation.orphanedMoveFrom.length > 0) {\r\n logger.warn(\r\n 'Orphaned moveFrom revisions detected - accepting these will DELETE content permanently ' +\r\n '(content was moved from here but no moveTo destination exists)',\r\n { orphanedMoveIds: movePairValidation.orphanedMoveFrom }\r\n );\r\n }\r\n if (movePairValidation.orphanedMoveTo.length > 0) {\r\n logger.warn(\r\n 'Orphaned moveTo revisions detected - content may be duplicated ' +\r\n '(content moved to here but no moveFrom source exists)',\r\n { orphanedMoveIds: movePairValidation.orphanedMoveTo }\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Process all paragraphs in the document body\r\n const paragraphs = doc.getAllParagraphs();\r\n for (const paragraph of paragraphs) {\r\n const paragraphResult = acceptRevisionsInParagraph(paragraph, opts);\r\n result.insertionsAccepted += paragraphResult.insertionsAccepted;\r\n result.deletionsAccepted += paragraphResult.deletionsAccepted;\r\n result.movesAccepted += paragraphResult.movesAccepted;\r\n result.propertyChangesAccepted += paragraphResult.propertyChangesAccepted;\r\n }\r\n\r\n // Process paragraphs in tables and clear table/row/cell property changes\r\n const tables = doc.getTables();\r\n for (const table of tables) {\r\n // Clear tblPrChange on table\r\n if (opts.acceptPropertyChanges && table.getTblPrChange()) {\r\n table.clearTblPrChange();\r\n result.propertyChangesAccepted++;\r\n }\r\n\r\n for (const row of table.getRows()) {\r\n // Clear trPrChange on row\r\n if (opts.acceptPropertyChanges && row.getTrPrChange()) {\r\n row.clearTrPrChange();\r\n result.propertyChangesAccepted++;\r\n }\r\n\r\n for (const cell of row.getCells()) {\r\n // Clear tcPrChange on cell\r\n if (opts.acceptPropertyChanges && cell.getTcPrChange()) {\r\n cell.clearTcPrChange();\r\n result.propertyChangesAccepted++;\r\n }\r\n\r\n // Clear cell structural revision markers (cellIns/cellDel/cellMerge)\r\n if (opts.acceptPropertyChanges && cell.getCellRevision()) {\r\n cell.clearCellRevision();\r\n result.propertyChangesAccepted++;\r\n }\r\n\r\n // Process paragraphs in the cell\r\n for (const paragraph of cell.getParagraphs()) {\r\n const paragraphResult = acceptRevisionsInParagraph(paragraph, opts);\r\n result.insertionsAccepted += paragraphResult.insertionsAccepted;\r\n result.deletionsAccepted += paragraphResult.deletionsAccepted;\r\n result.movesAccepted += paragraphResult.movesAccepted;\r\n result.propertyChangesAccepted += paragraphResult.propertyChangesAccepted;\r\n }\r\n\r\n // Process raw nested content (nested tables stored as XML)\r\n // These cannot be processed via the in-memory model, so we use XML-based stripping\r\n if (cell.hasRawNestedContent()) {\r\n const rawContent = cell.getRawNestedContent();\r\n for (let i = 0; i < rawContent.length; i++) {\r\n const item = rawContent[i];\r\n if (item) {\r\n const cleanedXml = stripRevisionsFromXml(item.xml);\r\n if (cleanedXml !== item.xml) {\r\n cell.updateRawNestedContent(i, cleanedXml);\r\n // Count revisions stripped from nested content\r\n // We can't distinguish types in raw XML, so count as property changes\r\n result.propertyChangesAccepted++;\r\n logger.debug('Stripped revisions from nested content', {\r\n type: item.type,\r\n position: item.position,\r\n originalLength: item.xml.length,\r\n cleanedLength: cleanedXml.length,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Process paragraphs in headers\r\n const headerFooterManager = doc.getHeaderFooterManager();\r\n if (headerFooterManager) {\r\n const headers = headerFooterManager.getAllHeaders();\r\n for (const headerEntry of headers) {\r\n const elements = headerEntry.header.getElements();\r\n for (const element of elements) {\r\n // Element can be Paragraph or Table - use instanceof for type safety\r\n if (element instanceof Paragraph) {\r\n const paragraphResult = acceptRevisionsInParagraph(element, opts);\r\n result.insertionsAccepted += paragraphResult.insertionsAccepted;\r\n result.deletionsAccepted += paragraphResult.deletionsAccepted;\r\n result.movesAccepted += paragraphResult.movesAccepted;\r\n result.propertyChangesAccepted += paragraphResult.propertyChangesAccepted;\r\n } else if (element instanceof Table) {\r\n // It's a Table - process its cells\r\n for (const row of element.getRows()) {\r\n for (const cell of row.getCells()) {\r\n for (const paragraph of cell.getParagraphs()) {\r\n const paragraphResult = acceptRevisionsInParagraph(paragraph, opts);\r\n result.insertionsAccepted += paragraphResult.insertionsAccepted;\r\n result.deletionsAccepted += paragraphResult.deletionsAccepted;\r\n result.movesAccepted += paragraphResult.movesAccepted;\r\n result.propertyChangesAccepted += paragraphResult.propertyChangesAccepted;\r\n }\r\n // Process raw nested content in header tables\r\n if (cell.hasRawNestedContent()) {\r\n const rawContent = cell.getRawNestedContent();\r\n for (let i = 0; i < rawContent.length; i++) {\r\n const item = rawContent[i];\r\n if (item) {\r\n const cleanedXml = stripRevisionsFromXml(item.xml);\r\n if (cleanedXml !== item.xml) {\r\n cell.updateRawNestedContent(i, cleanedXml);\r\n result.propertyChangesAccepted++;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Process paragraphs in footers\r\n const footers = headerFooterManager.getAllFooters();\r\n for (const footerEntry of footers) {\r\n const elements = footerEntry.footer.getElements();\r\n for (const element of elements) {\r\n // Element can be Paragraph or Table - use instanceof for type safety\r\n if (element instanceof Paragraph) {\r\n const paragraphResult = acceptRevisionsInParagraph(element, opts);\r\n result.insertionsAccepted += paragraphResult.insertionsAccepted;\r\n result.deletionsAccepted += paragraphResult.deletionsAccepted;\r\n result.movesAccepted += paragraphResult.movesAccepted;\r\n result.propertyChangesAccepted += paragraphResult.propertyChangesAccepted;\r\n } else if (element instanceof Table) {\r\n // It's a Table - process its cells\r\n for (const row of element.getRows()) {\r\n for (const cell of row.getCells()) {\r\n for (const paragraph of cell.getParagraphs()) {\r\n const paragraphResult = acceptRevisionsInParagraph(paragraph, opts);\r\n result.insertionsAccepted += paragraphResult.insertionsAccepted;\r\n result.deletionsAccepted += paragraphResult.deletionsAccepted;\r\n result.movesAccepted += paragraphResult.movesAccepted;\r\n result.propertyChangesAccepted += paragraphResult.propertyChangesAccepted;\r\n }\r\n // Process raw nested content in footer tables\r\n if (cell.hasRawNestedContent()) {\r\n const rawContent = cell.getRawNestedContent();\r\n for (let i = 0; i < rawContent.length; i++) {\r\n const item = rawContent[i];\r\n if (item) {\r\n const cleanedXml = stripRevisionsFromXml(item.xml);\r\n if (cleanedXml !== item.xml) {\r\n cell.updateRawNestedContent(i, cleanedXml);\r\n result.propertyChangesAccepted++;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Clear sectPrChange on document section\r\n if (opts.acceptPropertyChanges) {\r\n const section = doc.getSection();\r\n if (section?.getSectPrChange()) {\r\n section.clearSectPrChange();\r\n result.propertyChangesAccepted++;\r\n }\r\n }\r\n\r\n // Clear revision manager\r\n const revisionManager = doc.getRevisionManager();\r\n if (revisionManager) {\r\n revisionManager.clear();\r\n }\r\n\r\n // Disable track changes setting\r\n doc.disableTrackChanges();\r\n\r\n // Cleanup empty tables if enabled\r\n // This removes tables that have no visible content after revision acceptance\r\n // (e.g., tables where all content was deleted via tracked changes)\r\n if (opts.cleanupEmptyTables) {\r\n result.emptyTablesRemoved = cleanupEmptyTables(doc, logger);\r\n }\r\n\r\n result.totalAccepted =\r\n result.insertionsAccepted +\r\n result.deletionsAccepted +\r\n result.movesAccepted +\r\n result.propertyChangesAccepted;\r\n\r\n logger.info('Revisions accepted in-memory', {\r\n insertions: result.insertionsAccepted,\r\n deletions: result.deletionsAccepted,\r\n moves: result.movesAccepted,\r\n propertyChanges: result.propertyChangesAccepted,\r\n total: result.totalAccepted,\r\n emptyTablesRemoved: result.emptyTablesRemoved,\r\n });\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Accept revisions in a single paragraph by transforming its content array.\r\n *\r\n * The transformation follows these rules:\r\n * - Insertions (w:ins): Unwrap - extract child content into parent position\r\n * - Deletions (w:del): Remove - delete revision and its content\r\n * - MoveFrom (w:moveFrom): Remove - content exists at moveTo destination\r\n * - MoveTo (w:moveTo): Unwrap - keep content, remove wrapper\r\n * - Property changes: Remove from model (current formatting is kept)\r\n *\r\n * @param paragraph - Paragraph to process\r\n * @param options - Options for which revision types to accept\r\n * @returns Result with counts of accepted revisions\r\n */\r\nfunction acceptRevisionsInParagraph(\r\n paragraph: Paragraph,\r\n options: Required<AcceptRevisionsOptions>\r\n): AcceptRevisionsResult {\r\n const result: AcceptRevisionsResult = {\r\n insertionsAccepted: 0,\r\n deletionsAccepted: 0,\r\n movesAccepted: 0,\r\n propertyChangesAccepted: 0,\r\n totalAccepted: 0,\r\n emptyTablesRemoved: 0,\r\n };\r\n\r\n const content = paragraph.getContent();\r\n const newContent: ParagraphContent[] = [];\r\n\r\n for (const item of content) {\r\n if (item instanceof Revision) {\r\n const revisionType = item.getType();\r\n\r\n // Handle insertion revisions (w:ins)\r\n if (revisionType === 'insert' && options.acceptInsertions) {\r\n // Unwrap: Extract child content into parent position\r\n const childContent = item.getContent();\r\n for (const child of childContent) {\r\n // Check ImageRun FIRST since ImageRun extends Run\r\n if (isImageRunContent(child)) {\r\n newContent.push(child);\r\n } else if (isRunContent(child)) {\r\n newContent.push(child);\r\n } else if (isHyperlinkContent(child)) {\r\n newContent.push(child);\r\n }\r\n }\r\n result.insertionsAccepted++;\r\n continue;\r\n }\r\n\r\n // Handle deletion revisions (w:del)\r\n if (revisionType === 'delete' && options.acceptDeletions) {\r\n // Remove: Don't add to newContent - content is deleted\r\n result.deletionsAccepted++;\r\n continue;\r\n }\r\n\r\n // Handle moveFrom revisions (source of moved content)\r\n if (revisionType === 'moveFrom' && options.acceptMoves) {\r\n // Remove: Content exists at moveTo destination\r\n result.movesAccepted++;\r\n continue;\r\n }\r\n\r\n // Handle moveTo revisions (destination of moved content)\r\n if (revisionType === 'moveTo' && options.acceptMoves) {\r\n // Unwrap: Keep content, remove wrapper\r\n const childContent = item.getContent();\r\n for (const child of childContent) {\r\n // Check ImageRun FIRST since ImageRun extends Run\r\n if (isImageRunContent(child)) {\r\n newContent.push(child);\r\n } else if (isRunContent(child)) {\r\n newContent.push(child);\r\n } else if (isHyperlinkContent(child)) {\r\n newContent.push(child);\r\n }\r\n }\r\n result.movesAccepted++;\r\n continue;\r\n }\r\n\r\n // Handle property change revisions\r\n if (PROPERTY_REVISION_TYPES.includes(revisionType) && options.acceptPropertyChanges) {\r\n // For property changes, the revision is metadata attached to runs\r\n // The current formatting (newProperties) is already applied to the run\r\n // We just need to remove the change tracking metadata\r\n // The content inside should be preserved\r\n const childContent = item.getContent();\r\n for (const child of childContent) {\r\n // Check ImageRun FIRST since ImageRun extends Run\r\n if (isImageRunContent(child)) {\r\n newContent.push(child);\r\n } else if (isRunContent(child)) {\r\n newContent.push(child);\r\n } else if (isHyperlinkContent(child)) {\r\n newContent.push(child);\r\n }\r\n }\r\n result.propertyChangesAccepted++;\r\n continue;\r\n }\r\n\r\n // If we reach here, this revision type is not being accepted\r\n // Keep it in the content\r\n newContent.push(item);\r\n } else {\r\n // Non-revision content - keep as-is\r\n newContent.push(item);\r\n }\r\n }\r\n\r\n // Replace paragraph content with the transformed content\r\n paragraph.setContent(newContent);\r\n\r\n // Clear paragraph property change tracking (pPrChange) if accepting property changes\r\n // This removes the w:pPrChange element from the paragraph's formatting\r\n if (options.acceptPropertyChanges) {\r\n const formatting = paragraph.getFormatting();\r\n if (formatting.pPrChange) {\r\n paragraph.clearParagraphPropertiesChange();\r\n result.propertyChangesAccepted++;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Check if a paragraph has any revisions\r\n */\r\nexport function paragraphHasRevisions(paragraph: Paragraph): boolean {\r\n const content = paragraph.getContent();\r\n return content.some((item) => item instanceof Revision);\r\n}\r\n\r\n/**\r\n * Get all revisions from a paragraph\r\n */\r\nexport function getRevisionsFromParagraph(paragraph: Paragraph): Revision[] {\r\n const content = paragraph.getContent();\r\n return content.filter((item): item is Revision => item instanceof Revision);\r\n}\r\n\r\n/**\r\n * Count revisions by type in a document\r\n */\r\nexport function countRevisionsByType(doc: Document): Map<RevisionType, number> {\r\n const counts = new Map<RevisionType, number>();\r\n\r\n const paragraphs = doc.getAllParagraphs();\r\n for (const paragraph of paragraphs) {\r\n const revisions = getRevisionsFromParagraph(paragraph);\r\n for (const revision of revisions) {\r\n const type = revision.getType();\r\n counts.set(type, (counts.get(type) || 0) + 1);\r\n }\r\n }\r\n\r\n return counts;\r\n}\r\n\r\n/**\r\n * Remove tables that have no visible content after revision acceptance.\r\n *\r\n * A table is considered empty if ALL cells in ALL rows have no text content.\r\n * This handles cases where all table content was deleted via tracked changes -\r\n * the deletion markers are stripped but the empty table structure remains.\r\n *\r\n * @param doc - Document to clean up\r\n * @param logger - Logger instance for debug output\r\n * @returns Number of empty tables removed\r\n */\r\nfunction cleanupEmptyTables(doc: Document, logger: ILogger): number {\r\n const tables = doc.getTables();\r\n let removedCount = 0;\r\n const tablesToRemove: number[] = [];\r\n\r\n for (let tableIndex = 0; tableIndex < tables.length; tableIndex++) {\r\n const table = tables[tableIndex];\r\n if (!table) continue;\r\n\r\n let hasContent = false;\r\n const rows = table.getRows();\r\n\r\n for (const row of rows) {\r\n const cells = row.getCells();\r\n for (const cell of cells) {\r\n const paragraphs = cell.getParagraphs();\r\n for (const para of paragraphs) {\r\n const text = para.getText().trim();\r\n if (text.length > 0) {\r\n hasContent = true;\r\n break;\r\n }\r\n }\r\n if (hasContent) break;\r\n }\r\n if (hasContent) break;\r\n }\r\n\r\n if (!hasContent) {\r\n // Mark this table for removal (store index)\r\n tablesToRemove.push(tableIndex);\r\n logger.debug('Found empty table for removal', { tableIndex });\r\n }\r\n }\r\n\r\n // Remove tables in reverse order to preserve indices\r\n for (let i = tablesToRemove.length - 1; i >= 0; i--) {\r\n const tableIndex = tablesToRemove[i];\r\n if (tableIndex !== undefined && doc.removeTable(tableIndex)) {\r\n removedCount++;\r\n logger.debug('Removed empty table', { tableIndex });\r\n }\r\n }\r\n\r\n if (removedCount > 0) {\r\n logger.info('Empty table cleanup complete', { tablesRemoved: removedCount });\r\n }\r\n\r\n return removedCount;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MoveOperationHelper.js","sourceRoot":"","sources":["../../src/utils/MoveOperationHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MoveOperationHelper.js","sourceRoot":"","sources":["../../src/utils/MoveOperationHelper.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * MoveOperationHelper - Creates complete move operations with range markers\r\n *\r\n * Per ECMA-376, move operations in tracked changes require:\r\n * 1. w:moveFromRangeStart (marks start of source region)\r\n * 2. w:moveFrom (contains the moved content)\r\n * 3. w:moveFromRangeEnd (marks end of source region)\r\n * 4. w:moveToRangeStart (marks start of destination region)\r\n * 5. w:moveTo (contains the moved content copy)\r\n * 6. w:moveToRangeEnd (marks end of destination region)\r\n *\r\n * The range markers and move elements share a common 'name' (for range markers)\r\n * and 'moveId' (for move elements) that links them together.\r\n *\r\n * @example\r\n * ```typescript\r\n * // Create a complete move operation\r\n * const moveOp = MoveOperationHelper.createMoveOperation({\r\n * author: 'John Doe',\r\n * content: [new Run('moved text')],\r\n * idProvider: () => document.getIdManager().getNextId(),\r\n * });\r\n *\r\n * // Add to source paragraph\r\n * sourceParagraph.addRangeMarker(moveOp.source.rangeStart);\r\n * sourceParagraph.addRevision(moveOp.source.moveFrom);\r\n * sourceParagraph.addRangeMarker(moveOp.source.rangeEnd);\r\n *\r\n * // Add to destination paragraph\r\n * destParagraph.addRangeMarker(moveOp.destination.rangeStart);\r\n * destParagraph.addRevision(moveOp.destination.moveTo);\r\n * destParagraph.addRangeMarker(moveOp.destination.rangeEnd);\r\n * ```\r\n */\r\n\r\nimport { Revision } from '../elements/Revision';\r\nimport { RangeMarker } from '../elements/RangeMarker';\r\nimport { Run } from '../elements/Run';\r\n\r\n/**\r\n * Options for creating a move operation\r\n */\r\nexport interface MoveOperationOptions {\r\n /** Author who made the move */\r\n author: string;\r\n /** Content being moved (Run or array of Runs) */\r\n content: Run | Run[];\r\n /** Date of the move (defaults to now) */\r\n date?: Date;\r\n /** ID provider function - returns the next available annotation ID */\r\n idProvider?: () => number;\r\n /** Optional move ID (auto-generated if not provided) */\r\n moveId?: string;\r\n}\r\n\r\n/**\r\n * Result of creating a move operation\r\n */\r\nexport interface MoveOperationResult {\r\n /** Elements to add to the source paragraph (where content was moved FROM) */\r\n source: {\r\n /** Range start marker (w:moveFromRangeStart) */\r\n rangeStart: RangeMarker;\r\n /** Move revision (w:moveFrom) */\r\n moveFrom: Revision;\r\n /** Range end marker (w:moveFromRangeEnd) */\r\n rangeEnd: RangeMarker;\r\n };\r\n /** Elements to add to the destination paragraph (where content was moved TO) */\r\n destination: {\r\n /** Range start marker (w:moveToRangeStart) */\r\n rangeStart: RangeMarker;\r\n /** Move revision (w:moveTo) */\r\n moveTo: Revision;\r\n /** Range end marker (w:moveToRangeEnd) */\r\n rangeEnd: RangeMarker;\r\n };\r\n /** The move ID linking all elements together */\r\n moveId: string;\r\n}\r\n\r\n/**\r\n * Simple ID counter for when no provider is specified\r\n */\r\nlet globalMoveIdCounter = 0;\r\nlet globalAnnotationIdCounter = 1000; // Start high to avoid conflicts\r\n\r\n/**\r\n * Helper class for creating complete move operations\r\n */\r\nexport class MoveOperationHelper {\r\n /**\r\n * Creates a complete move operation with all required elements.\r\n *\r\n * This generates:\r\n * - Source: w:moveFromRangeStart, w:moveFrom, w:moveFromRangeEnd\r\n * - Destination: w:moveToRangeStart, w:moveTo, w:moveToRangeEnd\r\n *\r\n * All elements are linked by the moveId (for revisions) and name (for range markers).\r\n *\r\n * @param options - Move operation options\r\n * @returns Complete move operation with all elements\r\n *\r\n * @example\r\n * ```typescript\r\n * const moveOp = MoveOperationHelper.createMoveOperation({\r\n * author: 'John Doe',\r\n * content: new Run('text to move'),\r\n * });\r\n *\r\n * // Add to source paragraph (where text was)\r\n * sourcePara.addRangeMarker(moveOp.source.rangeStart);\r\n * sourcePara.addRevision(moveOp.source.moveFrom);\r\n * sourcePara.addRangeMarker(moveOp.source.rangeEnd);\r\n *\r\n * // Add to destination paragraph (where text moved to)\r\n * destPara.addRangeMarker(moveOp.destination.rangeStart);\r\n * destPara.addRevision(moveOp.destination.moveTo);\r\n * destPara.addRangeMarker(moveOp.destination.rangeEnd);\r\n * ```\r\n */\r\n static createMoveOperation(options: MoveOperationOptions): MoveOperationResult {\r\n const { author, content, date = new Date() } = options;\r\n\r\n // Generate move ID if not provided\r\n const moveId = options.moveId || `move-${++globalMoveIdCounter}`;\r\n\r\n // Get IDs from provider or use simple counter\r\n const getNextId = options.idProvider || (() => ++globalAnnotationIdCounter);\r\n\r\n // Allocate IDs for all elements\r\n // Range markers use same ID for start/end pairs\r\n const moveFromRangeId = getNextId();\r\n const moveFromId = getNextId();\r\n const moveToRangeId = getNextId();\r\n const moveToId = getNextId();\r\n\r\n // Create source elements\r\n const moveFromRangeStart = RangeMarker.createMoveFromStart(\r\n moveFromRangeId,\r\n moveId,\r\n author,\r\n date\r\n );\r\n\r\n const moveFrom = Revision.createMoveFrom(author, content, moveId, date);\r\n moveFrom.setId(moveFromId);\r\n\r\n const moveFromRangeEnd = RangeMarker.createMoveFromEnd(moveFromRangeId);\r\n\r\n // Create destination elements (clone content for moveTo)\r\n const contentArray = Array.isArray(content) ? content : [content];\r\n const clonedContent = contentArray.map(run => {\r\n // Clone the run to have independent content at destination\r\n const cloned = new Run(run.getText(), { ...run.getFormatting() });\r\n return cloned;\r\n });\r\n\r\n const moveToRangeStart = RangeMarker.createMoveToStart(\r\n moveToRangeId,\r\n moveId,\r\n author,\r\n date\r\n );\r\n\r\n const moveTo = Revision.createMoveTo(author, clonedContent, moveId, date);\r\n moveTo.setId(moveToId);\r\n\r\n const moveToRangeEnd = RangeMarker.createMoveToEnd(moveToRangeId);\r\n\r\n return {\r\n source: {\r\n rangeStart: moveFromRangeStart,\r\n moveFrom,\r\n rangeEnd: moveFromRangeEnd,\r\n },\r\n destination: {\r\n rangeStart: moveToRangeStart,\r\n moveTo,\r\n rangeEnd: moveToRangeEnd,\r\n },\r\n moveId,\r\n };\r\n }\r\n\r\n /**\r\n * Adds a complete move operation to source and destination paragraphs.\r\n *\r\n * This is a convenience method that creates the move operation and adds\r\n * all elements to the appropriate paragraphs in the correct order.\r\n *\r\n * @param sourceParagraph - Paragraph where content was moved FROM\r\n * @param destParagraph - Paragraph where content was moved TO\r\n * @param options - Move operation options\r\n * @returns The move operation result for reference\r\n *\r\n * @example\r\n * ```typescript\r\n * import { Paragraph } from 'docxmlater';\r\n *\r\n * const sourcePara = document.getParagraphs()[0];\r\n * const destPara = document.getParagraphs()[5];\r\n *\r\n * MoveOperationHelper.addMoveOperation(sourcePara, destPara, {\r\n * author: 'John Doe',\r\n * content: new Run('moved text'),\r\n * });\r\n * ```\r\n */\r\n static addMoveOperation(\r\n sourceParagraph: import('../elements/Paragraph').Paragraph,\r\n destParagraph: import('../elements/Paragraph').Paragraph,\r\n options: MoveOperationOptions\r\n ): MoveOperationResult {\r\n const moveOp = this.createMoveOperation(options);\r\n\r\n // Add to source paragraph in order\r\n sourceParagraph.addRangeMarker(moveOp.source.rangeStart);\r\n sourceParagraph.addRevision(moveOp.source.moveFrom);\r\n sourceParagraph.addRangeMarker(moveOp.source.rangeEnd);\r\n\r\n // Add to destination paragraph in order\r\n destParagraph.addRangeMarker(moveOp.destination.rangeStart);\r\n destParagraph.addRevision(moveOp.destination.moveTo);\r\n destParagraph.addRangeMarker(moveOp.destination.rangeEnd);\r\n\r\n return moveOp;\r\n }\r\n\r\n /**\r\n * Resets the global ID counters (for testing purposes).\r\n * @internal\r\n */\r\n static resetIdCounters(): void {\r\n globalMoveIdCounter = 0;\r\n globalAnnotationIdCounter = 1000;\r\n }\r\n}\r\n"]}