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":"RevisionAwareProcessor.js","sourceRoot":"","sources":["../../src/utils/RevisionAwareProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RevisionAwareProcessor.js","sourceRoot":"","sources":["../../src/utils/RevisionAwareProcessor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * RevisionAwareProcessor - Handles document revisions before and during processing\r\n *\r\n * Provides three modes for handling existing Word tracked changes:\r\n * - accept_all: Accept all revisions before processing (default)\r\n * - preserve: Preserve revisions, skip conflicting operations\r\n * - preserve_and_wrap: Preserve revisions, wrap conflicts in new revisions\r\n *\r\n * Implements ECMA-376 compliant revision handling.\r\n *\r\n * @module RevisionAwareProcessor\r\n */\r\n\r\nimport type { Document } from '../core/Document';\r\nimport { Revision, RevisionType } from '../elements/Revision';\r\nimport { RevisionManager } from '../elements/RevisionManager';\r\nimport { ChangeCategory, ChangeLocation } from './ChangelogGenerator';\r\n\r\n/**\r\n * Revision handling modes for document processing.\r\n */\r\nexport type RevisionHandlingMode =\r\n | 'accept_all' // Accept all revisions before processing\r\n | 'preserve' // Preserve revisions, skip conflicting operations\r\n | 'preserve_and_wrap'; // Preserve revisions, wrap conflicts in new revisions\r\n\r\n/**\r\n * Options for revision-aware processing.\r\n */\r\nexport interface RevisionProcessingOptions {\r\n /** How to handle existing revisions */\r\n mode: RevisionHandlingMode;\r\n /** Author name for new revisions (required for 'preserve_and_wrap' mode) */\r\n author?: string;\r\n /** Selective acceptance criteria (optional, for partial acceptance) */\r\n acceptCriteria?: SelectionCriteria;\r\n}\r\n\r\n/**\r\n * Criteria for selecting specific revisions.\r\n */\r\nexport interface SelectionCriteria {\r\n /** Specific revision IDs */\r\n ids?: number[];\r\n /** Filter by revision types */\r\n types?: RevisionType[];\r\n /** Filter by authors */\r\n authors?: string[];\r\n /** Filter by date range */\r\n dateRange?: { start: Date; end: Date };\r\n /** Filter by category */\r\n categories?: ChangeCategory[];\r\n /** Custom filter function */\r\n custom?: (revision: Revision) => boolean;\r\n}\r\n\r\n/**\r\n * Result of revision-aware processing.\r\n */\r\nexport interface RevisionProcessingResult {\r\n /** Whether processing completed successfully */\r\n success: boolean;\r\n /** IDs of revisions that were accepted */\r\n acceptedRevisions: string[];\r\n /** IDs of revisions that were preserved */\r\n preservedRevisions: string[];\r\n /** IDs of new revisions created (preserve_and_wrap mode) */\r\n newRevisions: string[];\r\n /** Conflicts encountered during processing */\r\n conflicts: ConflictInfo[];\r\n /** Processing log entries */\r\n log: ProcessingLogEntry[];\r\n}\r\n\r\n/**\r\n * Information about a conflict between an operation and a revision.\r\n */\r\nexport interface ConflictInfo {\r\n /** Description of the operation that conflicted */\r\n operation: string;\r\n /** ID of the conflicting revision */\r\n revisionId: string;\r\n /** How the conflict was resolved */\r\n resolution: 'accepted' | 'skipped' | 'wrapped';\r\n /** Location of the conflict */\r\n location: ChangeLocation;\r\n}\r\n\r\n/**\r\n * Log entry for processing actions.\r\n */\r\nexport interface ProcessingLogEntry {\r\n timestamp: Date;\r\n action: string;\r\n details: string;\r\n revisionId?: string;\r\n}\r\n\r\n/**\r\n * Handles document revisions before and during processing.\r\n * Implements ECMA-376 compliant revision handling.\r\n */\r\nexport class RevisionAwareProcessor {\r\n /**\r\n * Prepare document for processing by handling revisions.\r\n * Call this before applying any document modifications.\r\n *\r\n * @param doc - Document to prepare\r\n * @param options - Processing options\r\n * @returns Processing result with details of actions taken\r\n */\r\n static async prepare(\r\n doc: Document,\r\n options: RevisionProcessingOptions\r\n ): Promise<RevisionProcessingResult> {\r\n const log: ProcessingLogEntry[] = [];\r\n const acceptedRevisions: string[] = [];\r\n const preservedRevisions: string[] = [];\r\n const newRevisions: string[] = [];\r\n const conflicts: ConflictInfo[] = [];\r\n\r\n const addLog = (action: string, details: string, revisionId?: string) => {\r\n log.push({\r\n timestamp: new Date(),\r\n action,\r\n details,\r\n revisionId,\r\n });\r\n };\r\n\r\n addLog('start', `Starting revision processing with mode: ${options.mode}`);\r\n\r\n try {\r\n const revisionManager = doc.getRevisionManager();\r\n const hasInMemoryRevisions = revisionManager?.hasRevisions() ?? false;\r\n const hasRawXmlRevisions = doc.hasRawXmlRevisions();\r\n\r\n // Check both in-memory model AND raw XML for revisions\r\n // Raw XML may contain revisions that weren't fully parsed into memory\r\n if (!hasInMemoryRevisions && !hasRawXmlRevisions) {\r\n addLog('complete', 'No revisions found in document');\r\n return {\r\n success: true,\r\n acceptedRevisions,\r\n preservedRevisions,\r\n newRevisions,\r\n conflicts,\r\n log,\r\n };\r\n }\r\n\r\n const allRevisions = revisionManager?.getAllRevisions() ?? [];\r\n const inMemoryCount = allRevisions.length;\r\n const rawXmlNote = hasRawXmlRevisions ? ' (raw XML contains revision markup)' : '';\r\n addLog('info', `Found ${inMemoryCount} parsed revisions in document${rawXmlNote}`);\r\n\r\n switch (options.mode) {\r\n case 'accept_all':\r\n // Accept all revisions\r\n await this.acceptAllRevisions(doc, allRevisions, acceptedRevisions, addLog);\r\n break;\r\n\r\n case 'preserve':\r\n // Preserve all revisions by preventing document.xml regeneration\r\n // This keeps the original XML with w:ins/w:del elements intact\r\n for (const rev of allRevisions) {\r\n preservedRevisions.push(rev.getId().toString());\r\n }\r\n doc.preserveRawXml();\r\n addLog('complete', `Preserved ${preservedRevisions.length} revisions (raw XML preservation enabled)`);\r\n break;\r\n\r\n case 'preserve_and_wrap':\r\n // Preserve all revisions, track for later wrapping\r\n // Also enable raw XML preservation to keep existing revisions\r\n for (const rev of allRevisions) {\r\n preservedRevisions.push(rev.getId().toString());\r\n }\r\n doc.preserveRawXml();\r\n addLog('info', `Will preserve and wrap conflicts for ${preservedRevisions.length} revisions`);\r\n addLog('info', `New revisions will be authored by: ${options.author || 'Unknown'}`);\r\n break;\r\n\r\n default:\r\n addLog('error', `Unknown processing mode: ${options.mode}`);\r\n return {\r\n success: false,\r\n acceptedRevisions,\r\n preservedRevisions,\r\n newRevisions,\r\n conflicts,\r\n log,\r\n };\r\n }\r\n\r\n addLog('complete', 'Revision processing completed successfully');\r\n\r\n return {\r\n success: true,\r\n acceptedRevisions,\r\n preservedRevisions,\r\n newRevisions,\r\n conflicts,\r\n log,\r\n };\r\n } catch (error: unknown) {\r\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\r\n addLog('error', `Processing failed: ${errorMessage}`);\r\n\r\n return {\r\n success: false,\r\n acceptedRevisions,\r\n preservedRevisions,\r\n newRevisions,\r\n conflicts,\r\n log,\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Accept all revisions in the document using Document.acceptAllRevisions().\r\n *\r\n * This delegates to Document.acceptAllRevisions() which uses in-memory DOM transformation\r\n * (the industry-standard approach used by OpenXML PowerTools, Aspose.Words, etc.):\r\n *\r\n * 1. Transforms Revision objects in paragraph.content arrays\r\n * 2. Insertions (w:ins): Unwraps content - keeps Runs/Hyperlinks, removes Revision wrapper\r\n * 3. Deletions (w:del): Removes content entirely from the model\r\n * 4. Move operations: moveFrom removed, moveTo unwrapped\r\n * 5. Property changes: Removes change metadata, keeps current formatting\r\n *\r\n * This approach allows subsequent modifications to be saved correctly because the\r\n * in-memory model is transformed (not raw XML), so save() regenerates document.xml\r\n * with both the accepted changes AND any subsequent modifications.\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\r\n */\r\n private static async acceptAllRevisions(\r\n doc: Document,\r\n revisions: Revision[],\r\n acceptedIds: string[],\r\n addLog: (action: string, details: string, revisionId?: string) => void\r\n ): Promise<void> {\r\n addLog('info', 'Accepting all revisions using in-memory DOM transformation');\r\n\r\n // Track accepted revision IDs before acceptance (for logging)\r\n for (const rev of revisions) {\r\n acceptedIds.push(rev.getId().toString());\r\n }\r\n\r\n // Use Document.acceptAllRevisions() which uses in-memory transformation\r\n // This allows subsequent modifications to be saved correctly\r\n await doc.acceptAllRevisions();\r\n\r\n // Log each accepted revision\r\n for (const id of acceptedIds) {\r\n addLog('accept', `Accepted revision ${id}`, id);\r\n }\r\n\r\n addLog('complete', `Accepted ${acceptedIds.length} revisions (in-memory transformation)`);\r\n }\r\n\r\n /**\r\n * Accept revisions matching the given criteria.\r\n * Uses existing RevisionAcceptor under the hood.\r\n *\r\n * @param doc - Document to process\r\n * @param criteria - Selection criteria\r\n * @returns Array of accepted revision IDs\r\n */\r\n static acceptSelective(\r\n doc: Document,\r\n criteria: SelectionCriteria\r\n ): string[] {\r\n const revisionManager = doc.getRevisionManager();\r\n if (!revisionManager) {\r\n return [];\r\n }\r\n\r\n const allRevisions = revisionManager.getAllRevisions();\r\n const matchingRevisions = this.filterRevisions(allRevisions, criteria);\r\n\r\n const acceptedIds: string[] = [];\r\n for (const rev of matchingRevisions) {\r\n acceptedIds.push(rev.getId().toString());\r\n // Note: Actual acceptance would require XML manipulation\r\n // For now, this returns which revisions WOULD be accepted\r\n }\r\n\r\n return acceptedIds;\r\n }\r\n\r\n /**\r\n * Filter revisions based on criteria.\r\n */\r\n private static filterRevisions(\r\n revisions: Revision[],\r\n criteria: SelectionCriteria\r\n ): Revision[] {\r\n return revisions.filter(rev => {\r\n // Filter by IDs\r\n if (criteria.ids && !criteria.ids.includes(rev.getId())) {\r\n return false;\r\n }\r\n\r\n // Filter by types\r\n if (criteria.types && !criteria.types.includes(rev.getType())) {\r\n return false;\r\n }\r\n\r\n // Filter by authors\r\n if (criteria.authors && !criteria.authors.includes(rev.getAuthor())) {\r\n return false;\r\n }\r\n\r\n // Filter by date range\r\n if (criteria.dateRange) {\r\n const date = rev.getDate();\r\n if (date < criteria.dateRange.start || date > criteria.dateRange.end) {\r\n return false;\r\n }\r\n }\r\n\r\n // Filter by categories\r\n if (criteria.categories) {\r\n const category = this.getRevisionCategory(rev);\r\n if (!criteria.categories.includes(category)) {\r\n return false;\r\n }\r\n }\r\n\r\n // Custom filter\r\n if (criteria.custom && !criteria.custom(rev)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n /**\r\n * Get the semantic category of a revision.\r\n */\r\n private static getRevisionCategory(revision: Revision): ChangeCategory {\r\n const type = revision.getType();\r\n\r\n if (type === 'insert' || type === 'delete') {\r\n return 'content';\r\n }\r\n if (\r\n type === 'runPropertiesChange' ||\r\n type === 'paragraphPropertiesChange' ||\r\n type === 'numberingChange'\r\n ) {\r\n return 'formatting';\r\n }\r\n if (\r\n type === 'moveFrom' ||\r\n type === 'moveTo' ||\r\n type === 'sectionPropertiesChange'\r\n ) {\r\n return 'structural';\r\n }\r\n if (\r\n type === 'tablePropertiesChange' ||\r\n type === 'tableExceptionPropertiesChange' ||\r\n type === 'tableRowPropertiesChange' ||\r\n type === 'tableCellPropertiesChange' ||\r\n type === 'tableCellInsert' ||\r\n type === 'tableCellDelete' ||\r\n type === 'tableCellMerge'\r\n ) {\r\n return 'table';\r\n }\r\n\r\n return 'content';\r\n }\r\n\r\n /**\r\n * Check if an operation at the given location would conflict with any revision.\r\n *\r\n * @param doc - Document to check\r\n * @param paragraphIndex - Paragraph index\r\n * @param runIndex - Optional run index\r\n * @returns Conflicting revision or null\r\n */\r\n static checkConflict(\r\n doc: Document,\r\n paragraphIndex: number,\r\n runIndex?: number\r\n ): Revision | null {\r\n const revisionManager = doc.getRevisionManager();\r\n if (!revisionManager) {\r\n return null;\r\n }\r\n\r\n // Get revisions that might affect this paragraph\r\n const revisions = revisionManager.getRevisionsForParagraph(paragraphIndex);\r\n\r\n // For now, return the first revision at this location\r\n // In a more complete implementation, we would check run-level conflicts\r\n return revisions.length > 0 ? revisions[0]! : null;\r\n }\r\n\r\n /**\r\n * Get all revisions that would be affected by an operation.\r\n *\r\n * @param doc - Document to check\r\n * @param paragraphIndex - Paragraph index\r\n * @param runIndex - Optional run index\r\n * @returns Array of affected revisions\r\n */\r\n static getAffectedRevisions(\r\n doc: Document,\r\n paragraphIndex: number,\r\n runIndex?: number\r\n ): Revision[] {\r\n const revisionManager = doc.getRevisionManager();\r\n if (!revisionManager) {\r\n return [];\r\n }\r\n\r\n return revisionManager.getRevisionsForParagraph(paragraphIndex);\r\n }\r\n\r\n /**\r\n * Wrap content in a new revision (for preserve_and_wrap mode).\r\n * Creates a new revision tracking the change.\r\n *\r\n * @param doc - Document to modify\r\n * @param paragraphIndex - Paragraph index\r\n * @param runIndex - Run index\r\n * @param author - Author for the new revision\r\n * @param type - Type of revision to create\r\n * @returns ID of the new revision\r\n */\r\n static wrapInRevision(\r\n doc: Document,\r\n paragraphIndex: number,\r\n runIndex: number,\r\n author: string,\r\n type: 'insert' | 'delete'\r\n ): string {\r\n const revisionManager = doc.getRevisionManager();\r\n if (!revisionManager) {\r\n throw new Error('Document does not have a revision manager');\r\n }\r\n\r\n // Get the paragraphs from the document\r\n const paragraphs = doc.getParagraphs();\r\n if (paragraphIndex < 0 || paragraphIndex >= paragraphs.length) {\r\n throw new Error(`Invalid paragraph index: ${paragraphIndex}`);\r\n }\r\n\r\n const paragraph = paragraphs[paragraphIndex];\r\n if (!paragraph) {\r\n throw new Error(`Paragraph at index ${paragraphIndex} not found`);\r\n }\r\n\r\n const runs = paragraph.getRuns();\r\n if (runIndex < 0 || runIndex >= runs.length) {\r\n throw new Error(`Invalid run index: ${runIndex}`);\r\n }\r\n\r\n const run = runs[runIndex];\r\n if (!run) {\r\n throw new Error(`Run at index ${runIndex} not found`);\r\n }\r\n\r\n // Create new revision\r\n const revision = new Revision({\r\n author,\r\n type,\r\n content: run,\r\n date: new Date(),\r\n });\r\n\r\n // Register with manager\r\n revisionManager.register(revision);\r\n\r\n return revision.getId().toString();\r\n }\r\n\r\n /**\r\n * Check if document has any tracked changes.\r\n *\r\n * @param doc - Document to check\r\n * @returns True if document has tracked changes\r\n */\r\n static hasTrackedChanges(doc: Document): boolean {\r\n const revisionManager = doc.getRevisionManager();\r\n return revisionManager ? revisionManager.hasRevisions() : false;\r\n }\r\n\r\n /**\r\n * Get summary of tracked changes in document.\r\n *\r\n * @param doc - Document to summarize\r\n * @returns Summary object or null if no revision manager\r\n */\r\n static getTrackedChangesSummary(doc: Document): {\r\n total: number;\r\n insertions: number;\r\n deletions: number;\r\n formatting: number;\r\n moves: number;\r\n authors: string[];\r\n } | null {\r\n const revisionManager = doc.getRevisionManager();\r\n if (!revisionManager) {\r\n return null;\r\n }\r\n\r\n const summary = revisionManager.getSummary();\r\n return {\r\n total: summary.total,\r\n insertions: summary.byType.insertions,\r\n deletions: summary.byType.deletions,\r\n formatting: summary.byType.propertyChanges,\r\n moves: summary.byType.moves,\r\n authors: summary.authors,\r\n };\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RevisionWalker.js","sourceRoot":"","sources":["../../src/utils/RevisionWalker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RevisionWalker.js","sourceRoot":"","sources":["../../src/utils/RevisionWalker.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * RevisionWalker - DOM-based tree walker for accepting tracked changes\r\n *\r\n * Replaces the fragile RegEx-based revision acceptance with a robust\r\n * DOM-based approach that properly handles nested elements and preserves\r\n * element ordering.\r\n *\r\n * @module RevisionWalker\r\n */\r\n\r\nimport { ParsedXMLObject } from '../xml/XMLParser';\r\n\r\n/**\r\n * Options for controlling which revision types to accept\r\n */\r\nexport interface RevisionWalkerOptions {\r\n /** Keep content, remove w:ins wrapper (default: true) */\r\n acceptInsertions?: boolean;\r\n /** Remove w:del and content entirely (default: true) */\r\n acceptDeletions?: boolean;\r\n /** Handle w:moveFrom/w:moveTo (default: true) */\r\n acceptMoves?: boolean;\r\n /** Remove *Change elements (default: true) */\r\n acceptPropertyChanges?: boolean;\r\n}\r\n\r\n/**\r\n * Structure for tracking element order\r\n */\r\ninterface OrderedChildInfo {\r\n type: string;\r\n index: number;\r\n}\r\n\r\n/**\r\n * Revision element categories\r\n */\r\nconst REVISION_ELEMENTS = {\r\n /** Elements to unwrap (keep content, remove wrapper) */\r\n UNWRAP: ['w:ins', 'w:moveTo'],\r\n\r\n /** Elements to remove entirely (with content) */\r\n REMOVE: ['w:del', 'w:moveFrom'],\r\n\r\n /** Property change tracking elements */\r\n PROPERTY_CHANGES: [\r\n 'w:rPrChange',\r\n 'w:pPrChange',\r\n 'w:tblPrChange',\r\n 'w:tcPrChange',\r\n 'w:trPrChange',\r\n 'w:sectPrChange',\r\n 'w:tblGridChange',\r\n 'w:numberingChange',\r\n 'w:tblPrExChange',\r\n ],\r\n\r\n /** Range marker elements */\r\n RANGE_MARKERS: [\r\n 'w:moveFromRangeStart',\r\n 'w:moveFromRangeEnd',\r\n 'w:moveToRangeStart',\r\n 'w:moveToRangeEnd',\r\n 'w:customXmlInsRangeStart',\r\n 'w:customXmlInsRangeEnd',\r\n 'w:customXmlDelRangeStart',\r\n 'w:customXmlDelRangeEnd',\r\n 'w:customXmlMoveFromRangeStart',\r\n 'w:customXmlMoveFromRangeEnd',\r\n 'w:customXmlMoveToRangeStart',\r\n 'w:customXmlMoveToRangeEnd',\r\n ],\r\n};\r\n\r\n/**\r\n * DOM-based tree walker for accepting Word document revisions\r\n *\r\n * This class processes a parsed XML object tree (from XMLParser.parseToObject())\r\n * and accepts all tracked changes by:\r\n * - Unwrapping insertions (w:ins, w:moveTo) - keeping content\r\n * - Removing deletions (w:del, w:moveFrom) - discarding content\r\n * - Removing property changes (*Change elements)\r\n * - Removing range markers\r\n *\r\n * Element order is preserved using the _orderedChildren metadata.\r\n */\r\nexport class RevisionWalker {\r\n /**\r\n * Process a parsed XML object tree and accept all revisions\r\n *\r\n * @param obj - Parsed XML object from XMLParser.parseToObject()\r\n * @param options - Options controlling which revisions to accept\r\n * @returns New object tree with revisions accepted\r\n *\r\n * @example\r\n * ```typescript\r\n * const parsed = XMLParser.parseToObject(documentXml);\r\n * const clean = RevisionWalker.processTree(parsed);\r\n * ```\r\n */\r\n static processTree(\r\n obj: ParsedXMLObject,\r\n options?: RevisionWalkerOptions\r\n ): ParsedXMLObject {\r\n const opts: Required<RevisionWalkerOptions> = {\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 };\r\n\r\n // Deep clone the object to avoid mutating the original\r\n const clone = RevisionWalker.deepClone(obj);\r\n\r\n // Walk and transform the tree\r\n RevisionWalker.walkAndTransform(clone, opts);\r\n\r\n return clone;\r\n }\r\n\r\n /**\r\n * Deep clone an object\r\n */\r\n private static deepClone(obj: any): any {\r\n if (obj === null || typeof obj !== 'object') {\r\n return obj;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n return obj.map((item) => RevisionWalker.deepClone(item));\r\n }\r\n\r\n const clone: any = {};\r\n for (const key of Object.keys(obj)) {\r\n clone[key] = RevisionWalker.deepClone(obj[key]);\r\n }\r\n return clone;\r\n }\r\n\r\n /**\r\n * Recursively walk and transform the object tree\r\n * Processes children first (depth-first) to handle nested revisions\r\n */\r\n private static walkAndTransform(\r\n obj: any,\r\n options: Required<RevisionWalkerOptions>\r\n ): void {\r\n if (obj === null || typeof obj !== 'object') {\r\n return;\r\n }\r\n\r\n // Get keys to process (excluding metadata keys)\r\n const keys = Object.keys(obj).filter(\r\n (k) => !k.startsWith('@_') && k !== '#text' && k !== '_orderedChildren'\r\n );\r\n\r\n // First pass: recurse into children (depth-first)\r\n for (const key of keys) {\r\n const value = obj[key];\r\n if (Array.isArray(value)) {\r\n for (const item of value) {\r\n RevisionWalker.walkAndTransform(item, options);\r\n }\r\n } else if (typeof value === 'object' && value !== null) {\r\n RevisionWalker.walkAndTransform(value, options);\r\n }\r\n }\r\n\r\n // Second pass: process revision elements at this level\r\n // We need to iterate carefully because we're modifying the object\r\n RevisionWalker.processRevisions(obj, options);\r\n }\r\n\r\n /**\r\n * Process revision elements at the current level\r\n */\r\n private static processRevisions(\r\n parent: any,\r\n options: Required<RevisionWalkerOptions>\r\n ): void {\r\n if (!parent || typeof parent !== 'object') {\r\n return;\r\n }\r\n\r\n const keysToProcess = Object.keys(parent).filter(\r\n (k) => !k.startsWith('@_') && k !== '#text' && k !== '_orderedChildren'\r\n );\r\n\r\n for (const key of keysToProcess) {\r\n // Check if this is a revision element\r\n if (RevisionWalker.shouldUnwrap(key, options)) {\r\n RevisionWalker.unwrapAllElements(parent, key);\r\n } else if (RevisionWalker.shouldRemove(key, options)) {\r\n RevisionWalker.removeAllElements(parent, key);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Check if an element should be unwrapped (content kept)\r\n */\r\n private static shouldUnwrap(\r\n key: string,\r\n options: Required<RevisionWalkerOptions>\r\n ): boolean {\r\n if (REVISION_ELEMENTS.UNWRAP.includes(key)) {\r\n if (key === 'w:ins' && !options.acceptInsertions) return false;\r\n if (key === 'w:moveTo' && !options.acceptMoves) return false;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Check if an element should be removed (content discarded)\r\n */\r\n private static shouldRemove(\r\n key: string,\r\n options: Required<RevisionWalkerOptions>\r\n ): boolean {\r\n if (REVISION_ELEMENTS.REMOVE.includes(key)) {\r\n if (key === 'w:del' && !options.acceptDeletions) return false;\r\n if (key === 'w:moveFrom' && !options.acceptMoves) return false;\r\n return true;\r\n }\r\n if (REVISION_ELEMENTS.PROPERTY_CHANGES.includes(key)) {\r\n return options.acceptPropertyChanges;\r\n }\r\n if (REVISION_ELEMENTS.RANGE_MARKERS.includes(key)) {\r\n return true; // Always remove range markers\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Unwrap all elements of a given type, promoting their children to parent\r\n *\r\n * This is the most complex operation in RevisionWalker. When we unwrap a\r\n * revision element like w:ins, we need to:\r\n * 1. Extract the children from inside w:ins\r\n * 2. Insert them at the correct position in the parent's element arrays\r\n * 3. Update _orderedChildren to reflect the new structure\r\n *\r\n * The key challenge is maintaining correct element order. For example:\r\n * Before: <w:tbl><w:tr>Row1</w:tr><w:ins><w:tr>Row2</w:tr></w:ins><w:tr>Row3</w:tr></w:tbl>\r\n * After: <w:tbl><w:tr>Row1</w:tr><w:tr>Row2</w:tr><w:tr>Row3</w:tr></w:tbl>\r\n */\r\n private static unwrapAllElements(parent: any, key: string): void {\r\n const elements = parent[key];\r\n if (!elements) return;\r\n\r\n const elementArray = Array.isArray(elements) ? elements : [elements];\r\n\r\n // Build a complete ordered list of child elements by walking _orderedChildren\r\n // This captures the intended order before we modify anything\r\n const orderedElements: { type: string; element: any }[] = [];\r\n\r\n if (parent._orderedChildren) {\r\n // Track how many of each type we've seen to get correct array index\r\n const typeCounters = new Map<string, number>();\r\n let unwrappedIndex = 0;\r\n\r\n for (const entry of parent._orderedChildren) {\r\n const { type } = entry;\r\n\r\n if (type === key) {\r\n // This is a revision element - extract its children in order\r\n const revElement = elementArray[unwrappedIndex];\r\n unwrappedIndex++;\r\n\r\n if (revElement && typeof revElement === 'object') {\r\n if (revElement._orderedChildren) {\r\n // Use the revision element's _orderedChildren for correct order\r\n const childCounters = new Map<string, number>();\r\n for (const childEntry of revElement._orderedChildren) {\r\n const childType = childEntry.type;\r\n const childIdx = childCounters.get(childType) || 0;\r\n childCounters.set(childType, childIdx + 1);\r\n\r\n const childElements = revElement[childType];\r\n if (childElements) {\r\n const childArray = Array.isArray(childElements)\r\n ? childElements\r\n : [childElements];\r\n if (childIdx < childArray.length) {\r\n orderedElements.push({\r\n type: childType,\r\n element: childArray[childIdx],\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n // No _orderedChildren, extract children in object key order\r\n const childKeys = Object.keys(revElement).filter(\r\n (k) =>\r\n !k.startsWith('@_') &&\r\n k !== '#text' &&\r\n k !== '_orderedChildren'\r\n );\r\n for (const childKey of childKeys) {\r\n const childValue = revElement[childKey];\r\n const childArray = Array.isArray(childValue)\r\n ? childValue\r\n : [childValue];\r\n for (const child of childArray) {\r\n orderedElements.push({ type: childKey, element: child });\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n // Regular element - get it from the parent\r\n const idx = typeCounters.get(type) || 0;\r\n typeCounters.set(type, idx + 1);\r\n\r\n const parentElements = parent[type];\r\n if (parentElements) {\r\n const parentArray = Array.isArray(parentElements)\r\n ? parentElements\r\n : [parentElements];\r\n if (idx < parentArray.length) {\r\n orderedElements.push({ type, element: parentArray[idx] });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Remove the revision wrapper\r\n delete parent[key];\r\n\r\n // If we have ordered elements, rebuild the arrays in correct order\r\n if (orderedElements.length > 0) {\r\n // Group elements by type\r\n const rebuiltArrays = new Map<string, any[]>();\r\n\r\n for (const { type, element } of orderedElements) {\r\n if (!rebuiltArrays.has(type)) {\r\n rebuiltArrays.set(type, []);\r\n }\r\n rebuiltArrays.get(type)!.push(element);\r\n }\r\n\r\n // Update parent with rebuilt arrays\r\n for (const [type, elements] of rebuiltArrays) {\r\n if (elements.length === 1) {\r\n parent[type] = elements[0];\r\n } else {\r\n parent[type] = elements;\r\n }\r\n }\r\n\r\n // Rebuild _orderedChildren\r\n const newOrderedChildren: OrderedChildInfo[] = [];\r\n const typeCounters = new Map<string, number>();\r\n\r\n for (const { type } of orderedElements) {\r\n const idx = typeCounters.get(type) || 0;\r\n typeCounters.set(type, idx + 1);\r\n newOrderedChildren.push({ type, index: idx });\r\n }\r\n\r\n parent._orderedChildren = newOrderedChildren;\r\n } else {\r\n // Fallback for when there's no _orderedChildren - just merge\r\n for (const element of elementArray) {\r\n if (!element || typeof element !== 'object') continue;\r\n\r\n const elementKeys = Object.keys(element).filter(\r\n (k) => !k.startsWith('@_') && k !== '#text' && k !== '_orderedChildren'\r\n );\r\n\r\n for (const childKey of elementKeys) {\r\n RevisionWalker.mergeIntoParent(parent, childKey, element[childKey]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Remove all elements of a given type (including their content)\r\n */\r\n private static removeAllElements(parent: any, key: string): void {\r\n if (!parent[key]) return;\r\n\r\n // Update _orderedChildren before removing\r\n if (parent._orderedChildren) {\r\n parent._orderedChildren = parent._orderedChildren.filter(\r\n (c: OrderedChildInfo) => c.type !== key\r\n );\r\n // Re-index remaining elements of same types\r\n RevisionWalker.reindexOrderedChildren(parent._orderedChildren);\r\n }\r\n\r\n // Remove the element\r\n delete parent[key];\r\n }\r\n\r\n /**\r\n * Merge a child value into the parent, handling arrays properly\r\n */\r\n private static mergeIntoParent(\r\n parent: any,\r\n childKey: string,\r\n childValue: any\r\n ): void {\r\n if (parent[childKey] === undefined) {\r\n // No existing value, just assign\r\n parent[childKey] = childValue;\r\n } else {\r\n // Existing value, need to merge\r\n const existing = parent[childKey];\r\n const incoming = Array.isArray(childValue) ? childValue : [childValue];\r\n\r\n if (Array.isArray(existing)) {\r\n parent[childKey] = [...existing, ...incoming];\r\n } else {\r\n parent[childKey] = [existing, ...incoming];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Re-index _orderedChildren to ensure indices are sequential per type\r\n */\r\n private static reindexOrderedChildren(\r\n orderedChildren: OrderedChildInfo[]\r\n ): void {\r\n const typeCounters = new Map<string, number>();\r\n\r\n for (const entry of orderedChildren) {\r\n const currentIndex = typeCounters.get(entry.type) || 0;\r\n entry.index = currentIndex;\r\n typeCounters.set(entry.type, currentIndex + 1);\r\n }\r\n }\r\n\r\n /**\r\n * Check if an element is a revision-related element (any type)\r\n */\r\n static isRevisionElement(key: string): boolean {\r\n return (\r\n REVISION_ELEMENTS.UNWRAP.includes(key) ||\r\n REVISION_ELEMENTS.REMOVE.includes(key) ||\r\n REVISION_ELEMENTS.PROPERTY_CHANGES.includes(key) ||\r\n REVISION_ELEMENTS.RANGE_MARKERS.includes(key)\r\n );\r\n }\r\n\r\n /**\r\n * Get revision element categories (for external use/testing)\r\n */\r\n static getRevisionElementCategories(): typeof REVISION_ELEMENTS {\r\n return { ...REVISION_ELEMENTS };\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectiveRevisionAcceptor.js","sourceRoot":"","sources":["../../src/utils/SelectiveRevisionAcceptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SelectiveRevisionAcceptor.js","sourceRoot":"","sources":["../../src/utils/SelectiveRevisionAcceptor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * SelectiveRevisionAcceptor - Accept or reject specific revisions based on criteria\r\n *\r\n * Provides granular control over revision acceptance using in-memory DOM transformation.\r\n * Extends the all-or-nothing approach with selective acceptance by author, type, date,\r\n * and custom criteria.\r\n *\r\n * Uses the industry-standard in-memory transformation approach (like OpenXML PowerTools),\r\n * allowing subsequent modifications to be saved correctly.\r\n *\r\n * @module SelectiveRevisionAcceptor\r\n * @see https://github.com/OfficeDev/Open-Xml-PowerTools - RevisionAccepter.cs\r\n */\r\n\r\nimport type { Document } from '../core/Document';\r\nimport type { Paragraph, 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 } from '../elements/RevisionContent';\r\nimport { ChangeCategory } from './ChangelogGenerator';\r\nimport { SelectionCriteria } from './RevisionAwareProcessor';\r\n\r\n/**\r\n * Result of selective revision acceptance.\r\n */\r\nexport interface SelectiveAcceptResult {\r\n /** IDs of accepted revisions */\r\n accepted: string[];\r\n /** IDs of rejected/removed revisions */\r\n rejected: string[];\r\n /** IDs of revisions that remain */\r\n remaining: string[];\r\n /** Summary of actions taken */\r\n summary: {\r\n totalProcessed: number;\r\n acceptedCount: number;\r\n rejectedCount: number;\r\n remainingCount: number;\r\n };\r\n}\r\n\r\n/**\r\n * Provides granular control over revision acceptance using in-memory DOM transformation.\r\n * Allows subsequent modifications to be saved correctly.\r\n */\r\nexport class SelectiveRevisionAcceptor {\r\n /**\r\n * Accept revisions matching criteria using in-memory DOM transformation.\r\n * Matching revisions: content kept, revision wrapper removed.\r\n * Non-matching revisions: preserved in the document.\r\n *\r\n * @param doc - Document to process\r\n * @param criteria - Selection criteria\r\n * @returns Result with accepted, rejected, and remaining revision IDs\r\n */\r\n static accept(\r\n doc: Document,\r\n criteria: SelectionCriteria\r\n ): SelectiveAcceptResult {\r\n const accepted: string[] = [];\r\n const remaining: string[] = [];\r\n\r\n // Check if doc has full Document API (getAllParagraphs, getTables)\r\n // or if it's a minimal mock (only getRevisionManager)\r\n const hasFullApi = typeof (doc as any).getAllParagraphs === 'function';\r\n\r\n if (hasFullApi) {\r\n // Full in-memory DOM transformation\r\n const paragraphs = (doc as any).getAllParagraphs();\r\n for (const paragraph of paragraphs) {\r\n this.processSelectiveParagraph(paragraph, criteria, 'accept', accepted, remaining);\r\n }\r\n\r\n // Process paragraphs in tables\r\n const tables = (doc as any).getTables();\r\n for (const table of tables) {\r\n for (const row of table.getRows()) {\r\n for (const cell of row.getCells()) {\r\n for (const paragraph of cell.getParagraphs()) {\r\n this.processSelectiveParagraph(paragraph, criteria, 'accept', accepted, remaining);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n // Fallback: Filter revisions from RevisionManager only (for backward compatibility)\r\n const revisionManager = doc.getRevisionManager();\r\n if (revisionManager) {\r\n const allRevisions = revisionManager.getAllRevisions();\r\n for (const rev of allRevisions) {\r\n if (this.matchesCriteria(rev, criteria)) {\r\n accepted.push(rev.getId().toString());\r\n } else {\r\n remaining.push(rev.getId().toString());\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Clear accepted revisions from RevisionManager\r\n const revisionManager = doc.getRevisionManager();\r\n if (revisionManager) {\r\n for (const id of accepted) {\r\n revisionManager.removeById(parseInt(id, 10));\r\n }\r\n }\r\n\r\n return {\r\n accepted,\r\n rejected: [],\r\n remaining,\r\n summary: {\r\n totalProcessed: accepted.length + remaining.length,\r\n acceptedCount: accepted.length,\r\n rejectedCount: 0,\r\n remainingCount: remaining.length,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Reject revisions matching criteria using in-memory DOM transformation.\r\n * Matching revisions: content AND wrapper removed (opposite of accept).\r\n * Non-matching revisions: preserved in the document.\r\n *\r\n * For insertions: Rejecting removes the inserted content entirely.\r\n * For deletions: Rejecting keeps the deleted content (opposite of accepting).\r\n *\r\n * @param doc - Document to process\r\n * @param criteria - Selection criteria\r\n * @returns Result with accepted, rejected, and remaining revision IDs\r\n */\r\n static reject(\r\n doc: Document,\r\n criteria: SelectionCriteria\r\n ): SelectiveAcceptResult {\r\n const rejected: string[] = [];\r\n const remaining: string[] = [];\r\n\r\n // Check if doc has full Document API (getAllParagraphs, getTables)\r\n // or if it's a minimal mock (only getRevisionManager)\r\n const hasFullApi = typeof (doc as any).getAllParagraphs === 'function';\r\n\r\n if (hasFullApi) {\r\n // Full in-memory DOM transformation\r\n const paragraphs = (doc as any).getAllParagraphs();\r\n for (const paragraph of paragraphs) {\r\n this.processSelectiveParagraph(paragraph, criteria, 'reject', rejected, remaining);\r\n }\r\n\r\n // Process paragraphs in tables\r\n const tables = (doc as any).getTables();\r\n for (const table of tables) {\r\n for (const row of table.getRows()) {\r\n for (const cell of row.getCells()) {\r\n for (const paragraph of cell.getParagraphs()) {\r\n this.processSelectiveParagraph(paragraph, criteria, 'reject', rejected, remaining);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n // Fallback: Filter revisions from RevisionManager only (for backward compatibility)\r\n const revisionManager = doc.getRevisionManager();\r\n if (revisionManager) {\r\n const allRevisions = revisionManager.getAllRevisions();\r\n for (const rev of allRevisions) {\r\n if (this.matchesCriteria(rev, criteria)) {\r\n rejected.push(rev.getId().toString());\r\n } else {\r\n remaining.push(rev.getId().toString());\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Clear rejected revisions from RevisionManager\r\n const revisionManager = doc.getRevisionManager();\r\n if (revisionManager) {\r\n for (const id of rejected) {\r\n revisionManager.removeById(parseInt(id, 10));\r\n }\r\n }\r\n\r\n return {\r\n accepted: [],\r\n rejected,\r\n remaining,\r\n summary: {\r\n totalProcessed: rejected.length + remaining.length,\r\n acceptedCount: 0,\r\n rejectedCount: rejected.length,\r\n remainingCount: remaining.length,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Process a paragraph for selective revision acceptance/rejection.\r\n * Transforms matching revisions in-place using DOM transformation.\r\n */\r\n private static processSelectiveParagraph(\r\n paragraph: Paragraph,\r\n criteria: SelectionCriteria,\r\n action: 'accept' | 'reject',\r\n processedIds: string[],\r\n remainingIds: string[]\r\n ): void {\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 revisionId = item.getId().toString();\r\n\r\n if (this.matchesCriteria(item, criteria)) {\r\n // This revision matches the criteria - process it\r\n processedIds.push(revisionId);\r\n\r\n if (action === 'accept') {\r\n // Accept: Transform based on revision type\r\n this.acceptRevisionItem(item, newContent);\r\n } else {\r\n // Reject: Transform opposite of accept\r\n this.rejectRevisionItem(item, newContent);\r\n }\r\n } else {\r\n // This revision doesn't match - keep it\r\n remainingIds.push(revisionId);\r\n newContent.push(item);\r\n }\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\r\n /**\r\n * Accept a single revision item (unwrap insertions, remove deletions).\r\n */\r\n private static acceptRevisionItem(\r\n revision: Revision,\r\n newContent: ParagraphContent[]\r\n ): void {\r\n const revisionType = revision.getType();\r\n const childContent = revision.getContent();\r\n\r\n switch (revisionType) {\r\n case 'insert':\r\n case 'moveTo':\r\n // Unwrap: Extract child content into parent position\r\n for (const child of childContent) {\r\n if (isRunContent(child)) {\r\n newContent.push(child as Run);\r\n } else if (isHyperlinkContent(child)) {\r\n newContent.push(child);\r\n }\r\n }\r\n break;\r\n\r\n case 'delete':\r\n case 'moveFrom':\r\n // Remove: Don't add to newContent - content is deleted\r\n break;\r\n\r\n case 'runPropertiesChange':\r\n case 'paragraphPropertiesChange':\r\n case 'tablePropertiesChange':\r\n case 'tableExceptionPropertiesChange':\r\n case 'tableRowPropertiesChange':\r\n case 'tableCellPropertiesChange':\r\n case 'sectionPropertiesChange':\r\n case 'numberingChange':\r\n // Property changes: Keep content, remove change metadata\r\n for (const child of childContent) {\r\n if (isRunContent(child)) {\r\n newContent.push(child as Run);\r\n } else if (isHyperlinkContent(child)) {\r\n newContent.push(child);\r\n }\r\n }\r\n break;\r\n\r\n default:\r\n // Unknown type - keep the revision as-is for safety\r\n newContent.push(revision);\r\n }\r\n }\r\n\r\n /**\r\n * Reject a single revision item (opposite of accept).\r\n * - Rejecting an insertion removes the content\r\n * - Rejecting a deletion keeps the content (unwraps it)\r\n */\r\n private static rejectRevisionItem(\r\n revision: Revision,\r\n newContent: ParagraphContent[]\r\n ): void {\r\n const revisionType = revision.getType();\r\n const childContent = revision.getContent();\r\n\r\n switch (revisionType) {\r\n case 'insert':\r\n case 'moveTo':\r\n // Reject insertion: Remove the inserted content entirely\r\n break;\r\n\r\n case 'delete':\r\n case 'moveFrom':\r\n // Reject deletion: Keep the deleted content (unwrap)\r\n for (const child of childContent) {\r\n if (isRunContent(child)) {\r\n newContent.push(child as Run);\r\n } else if (isHyperlinkContent(child)) {\r\n newContent.push(child);\r\n }\r\n }\r\n break;\r\n\r\n case 'runPropertiesChange':\r\n case 'paragraphPropertiesChange':\r\n case 'tablePropertiesChange':\r\n case 'tableExceptionPropertiesChange':\r\n case 'tableRowPropertiesChange':\r\n case 'tableCellPropertiesChange':\r\n case 'sectionPropertiesChange':\r\n case 'numberingChange':\r\n // Rejecting property changes: Would need to restore old properties\r\n // For now, just keep content without the change metadata\r\n // (Full implementation would restore previousProperties)\r\n for (const child of childContent) {\r\n if (isRunContent(child)) {\r\n newContent.push(child as Run);\r\n } else if (isHyperlinkContent(child)) {\r\n newContent.push(child);\r\n }\r\n }\r\n break;\r\n\r\n default:\r\n // Unknown type - keep the revision as-is for safety\r\n newContent.push(revision);\r\n }\r\n }\r\n\r\n /**\r\n * Preview what would happen without making changes.\r\n *\r\n * @param doc - Document to analyze\r\n * @param criteria - Selection criteria\r\n * @param action - Action to preview\r\n * @returns Preview of what would happen\r\n */\r\n static preview(\r\n doc: Document,\r\n criteria: SelectionCriteria,\r\n action: 'accept' | 'reject'\r\n ): SelectiveAcceptResult {\r\n // Preview is the same as the actual operation but without side effects\r\n return action === 'accept'\r\n ? this.accept(doc, criteria)\r\n : this.reject(doc, criteria);\r\n }\r\n\r\n /**\r\n * Accept all revisions by a specific author.\r\n *\r\n * @param doc - Document to process\r\n * @param author - Author name to accept\r\n * @returns Result with accepted, rejected, and remaining revision IDs\r\n */\r\n static acceptByAuthor(doc: Document, author: string): SelectiveAcceptResult {\r\n return this.accept(doc, { authors: [author] });\r\n }\r\n\r\n /**\r\n * Reject all revisions by a specific author.\r\n *\r\n * @param doc - Document to process\r\n * @param author - Author name to reject\r\n * @returns Result with accepted, rejected, and remaining revision IDs\r\n */\r\n static rejectByAuthor(doc: Document, author: string): SelectiveAcceptResult {\r\n return this.reject(doc, { authors: [author] });\r\n }\r\n\r\n /**\r\n * Accept all revisions of specific types.\r\n *\r\n * @param doc - Document to process\r\n * @param types - Revision types to accept\r\n * @returns Result with accepted, rejected, and remaining revision IDs\r\n */\r\n static acceptByType(doc: Document, types: RevisionType[]): SelectiveAcceptResult {\r\n return this.accept(doc, { types });\r\n }\r\n\r\n /**\r\n * Reject all revisions of specific types.\r\n *\r\n * @param doc - Document to process\r\n * @param types - Revision types to reject\r\n * @returns Result with accepted, rejected, and remaining revision IDs\r\n */\r\n static rejectByType(doc: Document, types: RevisionType[]): SelectiveAcceptResult {\r\n return this.reject(doc, { types });\r\n }\r\n\r\n /**\r\n * Accept all revisions before a specific date.\r\n *\r\n * @param doc - Document to process\r\n * @param date - Cutoff date (exclusive)\r\n * @returns Result with accepted, rejected, and remaining revision IDs\r\n */\r\n static acceptBeforeDate(doc: Document, date: Date): SelectiveAcceptResult {\r\n return this.accept(doc, {\r\n dateRange: { start: new Date(0), end: date },\r\n });\r\n }\r\n\r\n /**\r\n * Accept all revisions after a specific date.\r\n *\r\n * @param doc - Document to process\r\n * @param date - Start date (exclusive)\r\n * @returns Result with accepted, rejected, and remaining revision IDs\r\n */\r\n static acceptAfterDate(doc: Document, date: Date): SelectiveAcceptResult {\r\n return this.accept(doc, {\r\n dateRange: { start: date, end: new Date() },\r\n });\r\n }\r\n\r\n /**\r\n * Accept all insertions only.\r\n *\r\n * @param doc - Document to process\r\n * @returns Result with accepted, rejected, and remaining revision IDs\r\n */\r\n static acceptInsertionsOnly(doc: Document): SelectiveAcceptResult {\r\n return this.accept(doc, { types: ['insert'] });\r\n }\r\n\r\n /**\r\n * Accept all deletions only.\r\n *\r\n * @param doc - Document to process\r\n * @returns Result with accepted, rejected, and remaining revision IDs\r\n */\r\n static acceptDeletionsOnly(doc: Document): SelectiveAcceptResult {\r\n return this.accept(doc, { types: ['delete'] });\r\n }\r\n\r\n /**\r\n * Reject all formatting changes (keep content changes).\r\n *\r\n * @param doc - Document to process\r\n * @returns Result with accepted, rejected, and remaining revision IDs\r\n */\r\n static rejectFormattingChanges(doc: Document): SelectiveAcceptResult {\r\n return this.reject(doc, { categories: ['formatting'] });\r\n }\r\n\r\n /**\r\n * Accept content changes only (reject formatting).\r\n *\r\n * @param doc - Document to process\r\n * @returns Result with accepted, rejected, and remaining revision IDs\r\n */\r\n static acceptContentChangesOnly(doc: Document): SelectiveAcceptResult {\r\n return this.accept(doc, { categories: ['content'] });\r\n }\r\n\r\n /**\r\n * Partition revisions into matching and non-matching based on criteria.\r\n */\r\n private static partitionRevisions(\r\n revisions: Revision[],\r\n criteria: SelectionCriteria\r\n ): { matching: Revision[]; nonMatching: Revision[] } {\r\n const matching: Revision[] = [];\r\n const nonMatching: Revision[] = [];\r\n\r\n for (const rev of revisions) {\r\n if (this.matchesCriteria(rev, criteria)) {\r\n matching.push(rev);\r\n } else {\r\n nonMatching.push(rev);\r\n }\r\n }\r\n\r\n return { matching, nonMatching };\r\n }\r\n\r\n /**\r\n * Check if a revision matches the given criteria.\r\n */\r\n private static matchesCriteria(\r\n revision: Revision,\r\n criteria: SelectionCriteria\r\n ): boolean {\r\n // If no criteria specified, match nothing\r\n if (\r\n !criteria.ids &&\r\n !criteria.types &&\r\n !criteria.authors &&\r\n !criteria.dateRange &&\r\n !criteria.categories &&\r\n !criteria.custom\r\n ) {\r\n return false;\r\n }\r\n\r\n // Filter by IDs\r\n if (criteria.ids && !criteria.ids.includes(revision.getId())) {\r\n return false;\r\n }\r\n\r\n // Filter by types\r\n if (criteria.types && !criteria.types.includes(revision.getType())) {\r\n return false;\r\n }\r\n\r\n // Filter by authors\r\n if (criteria.authors && !criteria.authors.includes(revision.getAuthor())) {\r\n return false;\r\n }\r\n\r\n // Filter by date range\r\n if (criteria.dateRange) {\r\n const date = revision.getDate();\r\n if (date < criteria.dateRange.start || date > criteria.dateRange.end) {\r\n return false;\r\n }\r\n }\r\n\r\n // Filter by categories\r\n if (criteria.categories) {\r\n const category = this.getRevisionCategory(revision);\r\n if (!criteria.categories.includes(category)) {\r\n return false;\r\n }\r\n }\r\n\r\n // Custom filter\r\n if (criteria.custom && !criteria.custom(revision)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Get the semantic category of a revision.\r\n */\r\n private static getRevisionCategory(revision: Revision): ChangeCategory {\r\n const type = revision.getType();\r\n\r\n if (type === 'insert' || type === 'delete') {\r\n return 'content';\r\n }\r\n if (\r\n type === 'runPropertiesChange' ||\r\n type === 'paragraphPropertiesChange' ||\r\n type === 'numberingChange'\r\n ) {\r\n return 'formatting';\r\n }\r\n if (\r\n type === 'moveFrom' ||\r\n type === 'moveTo' ||\r\n type === 'sectionPropertiesChange'\r\n ) {\r\n return 'structural';\r\n }\r\n if (\r\n type === 'tablePropertiesChange' ||\r\n type === 'tableExceptionPropertiesChange' ||\r\n type === 'tableRowPropertiesChange' ||\r\n type === 'tableCellPropertiesChange' ||\r\n type === 'tableCellInsert' ||\r\n type === 'tableCellDelete' ||\r\n type === 'tableCellMerge'\r\n ) {\r\n return 'table';\r\n }\r\n\r\n return 'content';\r\n }\r\n\r\n /**\r\n * Create an empty result.\r\n */\r\n private static emptyResult(): SelectiveAcceptResult {\r\n return {\r\n accepted: [],\r\n rejected: [],\r\n remaining: [],\r\n summary: {\r\n totalProcessed: 0,\r\n acceptedCount: 0,\r\n rejectedCount: 0,\r\n remainingCount: 0,\r\n },\r\n };\r\n }\r\n}\r\n"]}
@@ -31,7 +31,7 @@ function resolveCellShading(cell, table, stylesManager) {
31
31
  if (cnfStyle) {
32
32
  const activeConditionals = (0, cnfStyleDecoder_1.getActiveConditionalsInPriorityOrder)(cnfStyle);
33
33
  for (const condType of activeConditionals) {
34
- const match = conditionals.find((c) => c.type === condType);
34
+ const match = conditionals.find((c) => c.type === (condType));
35
35
  if (match?.cellFormatting?.shading) {
36
36
  const condShading = match.cellFormatting.shading;
37
37
  if (condShading.pattern === 'nil')
@@ -1 +1 @@
1
- {"version":3,"file":"ShadingResolver.js","sourceRoot":"","sources":["../../src/utils/ShadingResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ShadingResolver.js","sourceRoot":"","sources":["../../src/utils/ShadingResolver.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * ShadingResolver - Resolves effective cell shading through the ECMA-376 style hierarchy\r\n *\r\n * Per ECMA-376 §17.7.6, cell shading is resolved in priority order:\r\n * 1. Direct cell shading\r\n * 2. Row table property exceptions (tblPrEx)\r\n * 3. Conditional table style (tblStylePr) based on cnfStyle bitmask\r\n * 4. Table style default cell shading\r\n * 5. Direct table shading\r\n *\r\n * Special values:\r\n * - pattern: \"nil\" = explicitly clear (stop resolution)\r\n * - fill: \"auto\" = inherit (continue resolution)\r\n */\r\n\r\nimport type { ShadingConfig } from '../elements/CommonTypes';\r\nimport type { Table } from '../elements/Table';\r\nimport type { TableCell } from '../elements/TableCell';\r\nimport type { StylesManager } from '../formatting/StylesManager';\r\nimport { getActiveConditionalsInPriorityOrder } from './cnfStyleDecoder';\r\nimport type { ConditionalFormattingType } from '../formatting/Style';\r\n\r\n/**\r\n * Resolves the effective shading for a table cell through the style hierarchy.\r\n *\r\n * @param cell - The table cell to resolve shading for\r\n * @param table - The parent table\r\n * @param stylesManager - The document's styles manager for style lookup\r\n * @returns The resolved ShadingConfig, or undefined if no shading applies\r\n */\r\nexport function resolveCellShading(\r\n cell: TableCell,\r\n table: Table,\r\n stylesManager: StylesManager\r\n): ShadingConfig | undefined {\r\n // 1. Direct cell shading\r\n const directShading = cell.getShading();\r\n if (directShading) {\r\n if (directShading.pattern === 'nil') return undefined;\r\n if (directShading.fill && directShading.fill !== 'auto') return directShading;\r\n }\r\n\r\n // 2. Row table property exceptions\r\n const row = findRowForCell(cell, table);\r\n if (row) {\r\n const exceptions = row.getTablePropertyExceptions();\r\n if (exceptions?.shading) {\r\n if (exceptions.shading.pattern === 'nil') return undefined;\r\n if (exceptions.shading.fill && exceptions.shading.fill !== 'auto') return exceptions.shading;\r\n }\r\n }\r\n\r\n // 3. Conditional table style shading\r\n const tableStyleId = table.getStyle();\r\n if (tableStyleId) {\r\n const style = stylesManager.getStyle(tableStyleId);\r\n if (style) {\r\n const styleProps = style.getProperties();\r\n const conditionals = styleProps.tableStyle?.conditionalFormatting;\r\n if (conditionals) {\r\n const cnfStyle = cell.getCnfStyle();\r\n if (cnfStyle) {\r\n const activeConditionals = getActiveConditionalsInPriorityOrder(cnfStyle);\r\n for (const condType of activeConditionals) {\r\n const match = conditionals.find(\r\n (c) => c.type === (condType)\r\n );\r\n if (match?.cellFormatting?.shading) {\r\n const condShading = match.cellFormatting.shading;\r\n if (condShading.pattern === 'nil') return undefined;\r\n return condShading;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // 4. Table style default cell shading\r\n if (styleProps.tableStyle?.cell?.shading) {\r\n const defaultCellShading = styleProps.tableStyle.cell.shading;\r\n if (defaultCellShading.pattern === 'nil') return undefined;\r\n return defaultCellShading;\r\n }\r\n }\r\n }\r\n\r\n // 5. Direct table shading\r\n const tableShading = table.getShading();\r\n if (tableShading) {\r\n if (tableShading.pattern === 'nil') return undefined;\r\n return tableShading;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Finds the row that contains a given cell.\r\n */\r\nfunction findRowForCell(cell: TableCell, table: Table) {\r\n for (const row of table.getRows()) {\r\n const cells = row.getCells();\r\n if (cells.includes(cell)) {\r\n return row;\r\n }\r\n }\r\n return undefined;\r\n}\r\n"]}
@@ -1,32 +1,4 @@
1
1
  import { ZipHandler } from '../zip/ZipHandler';
2
- export declare class RevisionAcceptor {
3
- private zipHandler;
4
- private useDomBasedProcessing;
5
- constructor(zipHandler: ZipHandler);
6
- setUseDomBasedProcessing(enabled: boolean): void;
7
- acceptAllRevisions(): Promise<void>;
8
- private processDocumentPart;
9
- private processDocumentPartDOM;
10
- private processDocumentPartRegex;
11
- private removeAllRangeMarkers;
12
- private removeAllPropertyChanges;
13
- private acceptDeletions;
14
- private acceptMoveFrom;
15
- private acceptMoveTo;
16
- private acceptInsertions;
17
- private cleanupOrphanedTags;
18
- private parseRelationships;
19
- private getNextRelationshipId;
20
- private addRelationship;
21
- cleanupMetadata(): void;
22
- private cleanupPeopleXml;
23
- private cleanupSettingsXml;
24
- private cleanupCorePropsXml;
25
- private objectToXml;
26
- private escapeXml;
27
- private remapImageRelationshipsInTree;
28
- private walkTreeForEmbeds;
29
- }
30
2
  export declare function acceptAllRevisions(zipHandler: ZipHandler): Promise<void>;
31
3
  export declare function cleanupRevisionMetadata(zipHandler: ZipHandler): void;
32
4
  //# sourceMappingURL=acceptRevisions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"acceptRevisions.d.ts","sourceRoot":"","sources":["../../src/utils/acceptRevisions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAmB/C,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,qBAAqB,CAAiB;gBAElC,UAAU,EAAE,UAAU;IAOlC,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAOnC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;YAwBlC,mBAAmB;IAWjC,OAAO,CAAC,sBAAsB;IAiC9B,OAAO,CAAC,wBAAwB;IAuChC,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,wBAAwB;IAiChC,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,eAAe;IAsBhB,eAAe,IAAI,IAAI;IAW9B,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,kBAAkB;IA8B1B,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,WAAW;IA2HnB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,6BAA6B;IAsCrC,OAAO,CAAC,iBAAiB;CA4B1B;AAKD,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9E;AAeD,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAGpE"}
1
+ {"version":3,"file":"acceptRevisions.d.ts","sourceRoot":"","sources":["../../src/utils/acceptRevisions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAorB/C,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9E;AAeD,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAGpE"}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RevisionAcceptor = void 0;
4
3
  exports.acceptAllRevisions = acceptAllRevisions;
5
4
  exports.cleanupRevisionMetadata = cleanupRevisionMetadata;
6
5
  const XMLParser_1 = require("../xml/XMLParser");
@@ -18,10 +17,10 @@ class RevisionAcceptor {
18
17
  await this.processDocumentPart('word/document.xml');
19
18
  const files = this.zipHandler.getFilePaths();
20
19
  for (const file of files) {
21
- if (file.match(/^word\/header\d+\.xml$/)) {
20
+ if (/^word\/header\d+\.xml$/.exec(file)) {
22
21
  await this.processDocumentPart(file);
23
22
  }
24
- if (file.match(/^word\/footer\d+\.xml$/)) {
23
+ if (/^word\/footer\d+\.xml$/.exec(file)) {
25
24
  await this.processDocumentPart(file);
26
25
  }
27
26
  }
@@ -268,7 +267,7 @@ class RevisionAcceptor {
268
267
  'w:document', 'w:hyperlink', 'w:sdt', 'w:sdtContent', 'w:sdtPr',
269
268
  'w:pPr', 'w:rPr', 'w:sectPr', 'w:del', 'w:ins', 'w:moveFrom', 'w:moveTo',
270
269
  ];
271
- if (!hasChildren && (!element || !element['#text'])) {
270
+ if (!hasChildren && (!element?.['#text'])) {
272
271
  if (CANNOT_SELF_CLOSE.includes(tagName)) {
273
272
  xml += `></${tagName}>`;
274
273
  }
@@ -278,11 +277,11 @@ class RevisionAcceptor {
278
277
  }
279
278
  else {
280
279
  xml += '>';
281
- if (element && element['#text']) {
280
+ if (element?.['#text']) {
282
281
  xml += this.escapeXml(String(element['#text']));
283
282
  }
284
283
  if (element && typeof element === 'object') {
285
- const orderedChildren = element['_orderedChildren'];
284
+ const orderedChildren = element._orderedChildren;
286
285
  if (orderedChildren && orderedChildren.length > 0) {
287
286
  for (const childInfo of orderedChildren) {
288
287
  const childType = childInfo.type;
@@ -379,7 +378,6 @@ class RevisionAcceptor {
379
378
  }
380
379
  }
381
380
  }
382
- exports.RevisionAcceptor = RevisionAcceptor;
383
381
  async function acceptAllRevisions(zipHandler) {
384
382
  const acceptor = new RevisionAcceptor(zipHandler);
385
383
  await acceptor.acceptAllRevisions();
@@ -1 +1 @@
1
- {"version":3,"file":"acceptRevisions.js","sourceRoot":"","sources":["../../src/utils/acceptRevisions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acceptRevisions.js","sourceRoot":"","sources":["../../src/utils/acceptRevisions.ts"],"names":[],"mappings":"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","sourcesContent":["import { ZipHandler } from '../zip/ZipHandler';\r\nimport { XMLParser } from '../xml/XMLParser';\r\nimport { RevisionWalker } from './RevisionWalker';\r\n\r\n/**\r\n * Accepts all tracked changes in a Word document per Microsoft's OpenXML SDK pattern\r\n *\r\n * This implementation uses DOM-based tree walking for reliability:\r\n * 1. Insertions (<w:ins>): Keep content, remove wrapper tags\r\n * 2. Deletions (<w:del>): Remove entirely (content and tags)\r\n * 3. Move From (<w:moveFrom>): Remove entirely (source of move)\r\n * 4. Move To (<w:moveTo>): Keep content, remove wrapper (destination of move)\r\n * 5. Property changes: Remove all *Change elements\r\n * 6. Range markers: Remove all boundary markers\r\n *\r\n * Also cleans up metadata in people.xml, settings.xml, and core.xml\r\n *\r\n * @see https://learn.microsoft.com/en-us/office/open-xml/how-to-accept-all-revisions\r\n */\r\nclass RevisionAcceptor {\r\n private zipHandler: ZipHandler;\r\n /** Feature flag for DOM-based processing (default: true) */\r\n private useDomBasedProcessing = true;\r\n\r\n constructor(zipHandler: ZipHandler) {\r\n this.zipHandler = zipHandler;\r\n }\r\n\r\n /**\r\n * Enable or disable DOM-based processing (for testing/migration)\r\n */\r\n setUseDomBasedProcessing(enabled: boolean): void {\r\n this.useDomBasedProcessing = enabled;\r\n }\r\n\r\n /**\r\n * Main method to accept all revisions in the document\r\n */\r\n public async acceptAllRevisions(): Promise<void> {\r\n // Process document.xml\r\n await this.processDocumentPart('word/document.xml');\r\n \r\n // Process headers\r\n const files = this.zipHandler.getFilePaths();\r\n for (const file of files) {\r\n if (/^word\\/header\\d+\\.xml$/.exec(file)) {\r\n await this.processDocumentPart(file);\r\n }\r\n if (/^word\\/footer\\d+\\.xml$/.exec(file)) {\r\n await this.processDocumentPart(file);\r\n }\r\n }\r\n\r\n // Clean up metadata files\r\n this.cleanupPeopleXml();\r\n this.cleanupSettingsXml();\r\n this.cleanupCorePropsXml();\r\n }\r\n\r\n /**\r\n * Process a document part (document.xml, header, footer) to accept revisions\r\n */\r\n private async processDocumentPart(partPath: string): Promise<void> {\r\n if (this.useDomBasedProcessing) {\r\n return this.processDocumentPartDOM(partPath);\r\n }\r\n return this.processDocumentPartRegex(partPath);\r\n }\r\n\r\n /**\r\n * DOM-based implementation of revision acceptance\r\n * Uses XMLParser and RevisionWalker for reliable processing\r\n */\r\n private processDocumentPartDOM(partPath: string): void {\r\n const xml = this.zipHandler.getFileAsString(partPath);\r\n if (!xml) {\r\n return;\r\n }\r\n\r\n // Step 1: Parse XML to object tree\r\n // IMPORTANT: trimValues: false preserves whitespace from xml:space=\"preserve\" attributes\r\n const parsed = XMLParser.parseToObject(xml, { trimValues: false });\r\n\r\n // Step 2: Process revisions using DOM walker\r\n const processed = RevisionWalker.processTree(parsed, {\r\n acceptInsertions: true,\r\n acceptDeletions: true,\r\n acceptMoves: true,\r\n acceptPropertyChanges: true,\r\n });\r\n\r\n // Step 3: Handle image relationship ID remapping\r\n this.remapImageRelationshipsInTree(processed);\r\n\r\n // Step 4: Convert back to XML\r\n const outputXml =\r\n '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\n' +\r\n this.objectToXml(processed);\r\n\r\n // Step 5: Update file\r\n this.zipHandler.updateFile(partPath, outputXml);\r\n }\r\n\r\n /**\r\n * Legacy RegEx-based implementation (kept as fallback)\r\n */\r\n private processDocumentPartRegex(partPath: string): void {\r\n const xml = this.zipHandler.getFileAsString(partPath);\r\n if (!xml) {\r\n return;\r\n }\r\n\r\n let content = xml;\r\n\r\n // Step 1: Remove all range markers FIRST (before processing revisions)\r\n // This prevents orphaned references when revision content is modified\r\n content = this.removeAllRangeMarkers(content);\r\n\r\n // Step 2: Remove all property change elements\r\n // These track formatting changes and must be removed before other processing\r\n content = this.removeAllPropertyChanges(content);\r\n\r\n // Step 3: Process deletions - remove entire element INCLUDING content\r\n // Must be done before insertions to handle nested scenarios\r\n content = this.acceptDeletions(content);\r\n\r\n // Step 4: Process move operations\r\n // Remove moveFrom entirely (source), unwrap moveTo (destination)\r\n content = this.acceptMoveFrom(content);\r\n content = this.acceptMoveTo(content);\r\n\r\n // Step 5: Process insertions - keep content, remove wrapper\r\n content = this.acceptInsertions(content);\r\n\r\n // Step 6: Final cleanup - remove any remaining orphaned tags\r\n content = this.cleanupOrphanedTags(content);\r\n\r\n // Update the file\r\n this.zipHandler.updateFile(partPath, content);\r\n }\r\n\r\n /**\r\n * Remove all range marker elements\r\n * These are boundary markers for tracked changes and moves\r\n */\r\n private removeAllRangeMarkers(xml: string): string {\r\n const patterns = [\r\n // Move range markers\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 // Custom XML range markers\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 /<w:customXmlMoveFromRangeStart[^>]*(?:\\/>|>.*?<\\/w:customXmlMoveFromRangeStart>)/gs,\r\n /<w:customXmlMoveFromRangeEnd[^>]*(?:\\/>|>.*?<\\/w:customXmlMoveFromRangeEnd>)/gs,\r\n /<w:customXmlMoveToRangeStart[^>]*(?:\\/>|>.*?<\\/w:customXmlMoveToRangeStart>)/gs,\r\n /<w:customXmlMoveToRangeEnd[^>]*(?:\\/>|>.*?<\\/w:customXmlMoveToRangeEnd>)/gs,\r\n ];\r\n\r\n let result = xml;\r\n for (const pattern of patterns) {\r\n result = result.replace(pattern, '');\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Remove all property change tracking elements\r\n * Per ECMA-376, these track previous state of formatting\r\n */\r\n private removeAllPropertyChanges(xml: string): string {\r\n const patterns = [\r\n // Run property changes\r\n /<w:rPrChange[^>]*>[\\s\\S]*?<\\/w:rPrChange>/g,\r\n // Paragraph property changes \r\n /<w:pPrChange[^>]*>[\\s\\S]*?<\\/w:pPrChange>/g,\r\n // Table property changes\r\n /<w:tblPrChange[^>]*>[\\s\\S]*?<\\/w:tblPrChange>/g,\r\n /<w:tblPrExChange[^>]*>[\\s\\S]*?<\\/w:tblPrExChange>/g,\r\n // Table cell property changes\r\n /<w:tcPrChange[^>]*>[\\s\\S]*?<\\/w:tcPrChange>/g,\r\n // Table row property changes\r\n /<w:trPrChange[^>]*>[\\s\\S]*?<\\/w:trPrChange>/g,\r\n // Section property changes\r\n /<w:sectPrChange[^>]*>[\\s\\S]*?<\\/w:sectPrChange>/g,\r\n // Table grid changes\r\n /<w:tblGridChange[^>]*>[\\s\\S]*?<\\/w:tblGridChange>/g,\r\n // Numbering changes\r\n /<w:numberingChange[^>]*>[\\s\\S]*?<\\/w:numberingChange>/g,\r\n ];\r\n\r\n let result = xml;\r\n for (const pattern of patterns) {\r\n result = result.replace(pattern, '');\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Accept deletions - remove the entire <w:del> element including its content\r\n * \r\n * Per Microsoft SDK: \"DeletedRun elements should be removed along with their content\"\r\n */\r\n private acceptDeletions(xml: string): string {\r\n let result = xml;\r\n let previousLength = 0;\r\n \r\n // Iterate until no more deletions (handles nested cases)\r\n while (result.length !== previousLength) {\r\n previousLength = result.length;\r\n \r\n // Match complete <w:del ...>...</w:del> elements and remove entirely\r\n result = result.replace(/<w:del\\b[^>]*>[\\s\\S]*?<\\/w:del>/g, '');\r\n }\r\n \r\n // Also remove self-closing deletion tags\r\n result = result.replace(/<w:del\\b[^>]*\\/>/g, '');\r\n \r\n return result;\r\n }\r\n\r\n /**\r\n * Accept moveFrom - remove the entire element (source of moved content)\r\n * \r\n * The content exists at the moveTo destination, so we discard the source\r\n */\r\n private acceptMoveFrom(xml: string): string {\r\n let result = xml;\r\n let previousLength = 0;\r\n \r\n while (result.length !== previousLength) {\r\n previousLength = result.length;\r\n result = result.replace(/<w:moveFrom\\b[^>]*>[\\s\\S]*?<\\/w:moveFrom>/g, '');\r\n }\r\n \r\n // Also remove self-closing tags\r\n result = result.replace(/<w:moveFrom\\b[^>]*\\/>/g, '');\r\n \r\n return result;\r\n }\r\n\r\n /**\r\n * Accept moveTo - keep the content, remove the wrapper tags\r\n * \r\n * The moveTo location is where the content should remain\r\n */\r\n private acceptMoveTo(xml: string): string {\r\n let result = xml;\r\n \r\n // Remove closing tags first (prevents issues with regex matching)\r\n result = result.replace(/<\\/w:moveTo>/g, '');\r\n \r\n // Remove opening tags (keeps content that was inside)\r\n result = result.replace(/<w:moveTo\\b[^>]*>/g, '');\r\n \r\n return result;\r\n }\r\n\r\n /**\r\n * Accept insertions - keep the content, remove the wrapper tags\r\n *\r\n * Per Microsoft SDK: \"InsertedRun elements should be unwrapped, keeping their content\"\r\n *\r\n * IMPORTANT: This method now handles relationship ID remapping for images inside insertions.\r\n * When Word tracks changes with images, it can reuse relationship IDs (like rId5) because\r\n * they're in separate tracked change contexts. But when we unwrap them, duplicate IDs\r\n * cause corruption. This method assigns new unique IDs to images inside insertions.\r\n */\r\n private acceptInsertions(xml: string): string {\r\n let result = xml;\r\n\r\n // Parse existing relationships\r\n const relationships = this.parseRelationships();\r\n const existingIds = new Set(relationships.keys());\r\n\r\n // Process each w:ins element and remap images one by one\r\n const insRegex = /<w:ins\\b[^>]*>[\\s\\S]*?<\\/w:ins>/g;\r\n\r\n result = result.replace(insRegex, (insMatch) => {\r\n // For each image reference inside this insertion, generate a unique new ID\r\n return insMatch.replace(/r:embed=\"(rId\\d+)\"/g, (embedMatch, oldId) => {\r\n // Generate new unique ID for THIS occurrence\r\n const newId = this.getNextRelationshipId(existingIds);\r\n existingIds.add(newId);\r\n\r\n // Add relationship with same target as original\r\n const target = relationships.get(oldId);\r\n if (target) {\r\n this.addRelationship(\r\n newId,\r\n target,\r\n 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'\r\n );\r\n }\r\n\r\n return `r:embed=\"${newId}\"`;\r\n });\r\n });\r\n\r\n // Now unwrap the w:ins tags (content has unique remapped IDs)\r\n result = result.replace(/<\\/w:ins>/g, '');\r\n result = result.replace(/<w:ins\\b[^>]*>/g, '');\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Final cleanup to remove any orphaned or malformed revision-related tags\r\n */\r\n private cleanupOrphanedTags(xml: string): string {\r\n let result = xml;\r\n\r\n // Remove any remaining self-closing revision 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 // Remove empty w:r elements that might be left after removing deletions\r\n result = result.replace(/<w:r\\b[^>]*>\\s*<\\/w:r>/g, '');\r\n\r\n // Remove empty w:p elements (but preserve those with properties)\r\n // We keep <w:p><w:pPr>...</w:pPr></w:p> as those are intentional empty paragraphs with styling\r\n result = result.replace(/<w:p>\\s*<\\/w:p>/g, '');\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Parse relationship IDs from word/_rels/document.xml.rels\r\n * Returns a map of relationship ID to target path\r\n */\r\n private parseRelationships(): Map<string, string> {\r\n const relsXml = this.zipHandler.getFileAsString('word/_rels/document.xml.rels');\r\n if (!relsXml) return new Map();\r\n\r\n const map = new Map<string, string>();\r\n const relationshipRegex = /<Relationship[^>]*Id=\"([^\"]+)\"[^>]*Target=\"([^\"]+)\"[^>]*\\/>/g;\r\n let match;\r\n\r\n while ((match = relationshipRegex.exec(relsXml)) !== null) {\r\n if (match[1] && match[2]) {\r\n map.set(match[1], match[2]); // rId -> target path\r\n }\r\n }\r\n\r\n return map;\r\n }\r\n\r\n /**\r\n * Get the next available relationship ID\r\n * Finds the highest numeric ID and increments it\r\n */\r\n private getNextRelationshipId(existingIds: Set<string>): string {\r\n let maxId = 0;\r\n for (const id of existingIds) {\r\n const num = parseInt(id.replace('rId', ''));\r\n if (!isNaN(num) && num > maxId) {\r\n maxId = num;\r\n }\r\n }\r\n return `rId${maxId + 1}`;\r\n }\r\n\r\n /**\r\n * Add a new relationship to word/_rels/document.xml.rels\r\n */\r\n private addRelationship(rId: string, target: string, type: string): void {\r\n const relsXml = this.zipHandler.getFileAsString('word/_rels/document.xml.rels');\r\n if (!relsXml) return;\r\n\r\n // Insert new relationship before closing tag\r\n const newRel = `<Relationship Id=\"${rId}\" Type=\"${type}\" Target=\"${target}\"/>`;\r\n const updated = relsXml.replace('</Relationships>', `${newRel}\\n</Relationships>`);\r\n\r\n this.zipHandler.updateFile('word/_rels/document.xml.rels', updated);\r\n }\r\n\r\n /**\r\n * Clean up all revision metadata files (people.xml, settings.xml, core.xml).\r\n *\r\n * This removes:\r\n * - All revision authors from people.xml\r\n * - Track changes settings from settings.xml\r\n * - Resets revision count in core.xml\r\n *\r\n * Called as part of acceptAllRevisions() but can also be called separately\r\n * when using in-memory revision acceptance.\r\n */\r\n public cleanupMetadata(): void {\r\n this.cleanupPeopleXml();\r\n this.cleanupSettingsXml();\r\n this.cleanupCorePropsXml();\r\n }\r\n\r\n /**\r\n * Clean up word/people.xml - remove all revision authors\r\n *\r\n * Handles both w: and w15: namespace variants\r\n */\r\n private cleanupPeopleXml(): void {\r\n const peopleXml = this.zipHandler.getFileAsString('word/people.xml');\r\n if (!peopleXml) {\r\n return;\r\n }\r\n\r\n let content = peopleXml;\r\n\r\n // Remove all person elements in any namespace variant\r\n content = content.replace(/<w:person\\b[^>]*>[\\s\\S]*?<\\/w:person>/g, '');\r\n content = content.replace(/<w15:person\\b[^>]*>[\\s\\S]*?<\\/w15:person>/g, '');\r\n \r\n // Handle any namespace-prefixed variants (w1:, w2:, etc.)\r\n content = content.replace(/<w\\d+:person\\b[^>]*>[\\s\\S]*?<\\/w\\d+:person>/g, '');\r\n \r\n // Also remove self-closing person elements\r\n content = content.replace(/<w:person\\b[^>]*\\/>/g, '');\r\n content = content.replace(/<w15:person\\b[^>]*\\/>/g, '');\r\n content = content.replace(/<w\\d+:person\\b[^>]*\\/>/g, '');\r\n\r\n this.zipHandler.updateFile('word/people.xml', content);\r\n }\r\n\r\n /**\r\n * Clean up word/settings.xml - disable track changes\r\n */\r\n private cleanupSettingsXml(): void {\r\n const settingsXml = this.zipHandler.getFileAsString('word/settings.xml');\r\n if (!settingsXml) {\r\n return;\r\n }\r\n\r\n let content = settingsXml;\r\n\r\n // Remove trackRevisions element (enables tracking)\r\n content = content.replace(/<w:trackRevisions\\b[^>]*\\/>/g, '');\r\n content = content.replace(/<w:trackRevisions\\b[^>]*>[\\s\\S]*?<\\/w:trackRevisions>/g, '');\r\n\r\n // Remove revisionView element (controls which revisions are visible)\r\n content = content.replace(/<w:revisionView\\b[^>]*\\/>/g, '');\r\n content = content.replace(/<w:revisionView\\b[^>]*>[\\s\\S]*?<\\/w:revisionView>/g, '');\r\n\r\n // Remove doNotTrackMoves (prevents move tracking)\r\n content = content.replace(/<w:doNotTrackMoves\\b[^>]*\\/>/g, '');\r\n content = content.replace(/<w:doNotTrackMoves\\b[^>]*>[\\s\\S]*?<\\/w:doNotTrackMoves>/g, '');\r\n\r\n // Remove doNotTrackFormatting\r\n content = content.replace(/<w:doNotTrackFormatting\\b[^>]*\\/>/g, '');\r\n content = content.replace(/<w:doNotTrackFormatting\\b[^>]*>[\\s\\S]*?<\\/w:doNotTrackFormatting>/g, '');\r\n\r\n this.zipHandler.updateFile('word/settings.xml', content);\r\n }\r\n\r\n /**\r\n * Clean up docProps/core.xml - reset revision count\r\n */\r\n private cleanupCorePropsXml(): void {\r\n const coreXml = this.zipHandler.getFileAsString('docProps/core.xml');\r\n if (!coreXml) {\r\n return;\r\n }\r\n\r\n // Reset revision count to 1\r\n const content = coreXml.replace(\r\n /<cp:revision>\\d+<\\/cp:revision>/g,\r\n '<cp:revision>1</cp:revision>'\r\n );\r\n\r\n this.zipHandler.updateFile('docProps/core.xml', content);\r\n }\r\n\r\n // =========================================================================\r\n // DOM-based processing helper methods\r\n // =========================================================================\r\n\r\n /**\r\n * Convert parsed XML object back to XML string\r\n * Preserves element order using _orderedChildren metadata\r\n *\r\n * Based on DocumentParser.objectToXml() implementation\r\n */\r\n private objectToXml(obj: any): string {\r\n const buildXml = (o: any, name?: string): string => {\r\n // Handle simple string/number with a tag name: <tagName>value</tagName>\r\n if (name && (typeof o === 'string' || typeof o === 'number')) {\r\n return `<${name}>${this.escapeXml(String(o))}</${name}>`;\r\n }\r\n if (typeof o === 'string') return this.escapeXml(o);\r\n if (typeof o !== 'object' || o === null) return String(o ?? '');\r\n\r\n const keys = Object.keys(o);\r\n\r\n // If a name is provided, we're building a specific element\r\n // Don't return empty string for empty objects with a name - they become self-closing tags\r\n if (keys.length === 0 && !name) return '';\r\n\r\n const tagName = name || keys[0]!;\r\n const element = name ? o : o[tagName];\r\n\r\n let xml = `<${tagName}`;\r\n\r\n // Add attributes (keys starting with @_)\r\n if (element && typeof element === 'object') {\r\n for (const key of Object.keys(element)) {\r\n if (key.startsWith('@_')) {\r\n const attrName = key.substring(2);\r\n xml += ` ${attrName}=\"${this.escapeXml(String(element[key]))}\"`;\r\n }\r\n }\r\n }\r\n\r\n // Check for children (non-attribute, non-text, non-metadata keys)\r\n const hasChildren =\r\n element &&\r\n typeof element === 'object' &&\r\n Object.keys(element).some(\r\n (k) =>\r\n !k.startsWith('@_') && k !== '#text' && k !== '_orderedChildren'\r\n );\r\n\r\n // Per ECMA-376, certain elements MUST NOT be self-closing (e.g., <w:p/> is invalid).\r\n // This mirrors the CANNOT_SELF_CLOSE list in XMLBuilder.ts.\r\n const CANNOT_SELF_CLOSE = [\r\n 'w:t', 'w:r', 'w:p', 'w:tbl', 'w:tr', 'w:tc', 'w:body',\r\n 'w:document', 'w:hyperlink', 'w:sdt', 'w:sdtContent', 'w:sdtPr',\r\n 'w:pPr', 'w:rPr', 'w:sectPr', 'w:del', 'w:ins', 'w:moveFrom', 'w:moveTo',\r\n ];\r\n\r\n if (!hasChildren && (!element?.['#text'])) {\r\n if (CANNOT_SELF_CLOSE.includes(tagName)) {\r\n xml += `></${tagName}>`;\r\n } else {\r\n xml += '/>';\r\n }\r\n } else {\r\n xml += '>';\r\n\r\n // Add text content\r\n if (element?.['#text']) {\r\n xml += this.escapeXml(String(element['#text']));\r\n }\r\n\r\n // Add child elements using _orderedChildren if available\r\n if (element && typeof element === 'object') {\r\n const orderedChildren = element._orderedChildren as\r\n | { type: string; index: number }[]\r\n | undefined;\r\n\r\n if (orderedChildren && orderedChildren.length > 0) {\r\n // Use _orderedChildren to preserve element order\r\n for (const childInfo of orderedChildren) {\r\n const childType = childInfo.type;\r\n const childIndex = childInfo.index;\r\n\r\n if (element[childType] !== undefined) {\r\n const children = element[childType];\r\n\r\n if (Array.isArray(children)) {\r\n if (childIndex < children.length) {\r\n const childXml = buildXml(children[childIndex], childType);\r\n xml += childXml;\r\n }\r\n } else {\r\n // Single child element\r\n if (childIndex === 0) {\r\n const childXml = buildXml(children, childType);\r\n xml += childXml;\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n // Fallback: iterate through keys if no _orderedChildren\r\n for (const key of Object.keys(element)) {\r\n if (\r\n !key.startsWith('@_') &&\r\n key !== '#text' &&\r\n key !== '_orderedChildren'\r\n ) {\r\n const children = element[key];\r\n if (Array.isArray(children)) {\r\n for (const child of children) {\r\n xml += buildXml(child, key);\r\n }\r\n } else {\r\n xml += buildXml(children, key);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n xml += `</${tagName}>`;\r\n }\r\n\r\n return xml;\r\n };\r\n\r\n return buildXml(obj);\r\n }\r\n\r\n /**\r\n * Escape special XML characters\r\n */\r\n private escapeXml(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, '&apos;');\r\n }\r\n\r\n /**\r\n * Remap image relationship IDs in the parsed tree to prevent duplicates\r\n * Walks the tree looking for r:embed attributes and assigns unique IDs\r\n */\r\n private remapImageRelationshipsInTree(obj: any): void {\r\n const relationships = this.parseRelationships();\r\n const existingIds = new Set(relationships.keys());\r\n const remappedIds = new Map<string, string>();\r\n\r\n // Walk the tree and find all r:embed attributes\r\n this.walkTreeForEmbeds(obj, (embedId: string, parent: any, key: string) => {\r\n // Check if this ID has already been remapped\r\n if (remappedIds.has(embedId)) {\r\n parent[key] = remappedIds.get(embedId);\r\n return;\r\n }\r\n\r\n // Check if this ID needs remapping (duplicate)\r\n // For DOM-based processing, we check if we've seen this ID before in this pass\r\n const target = relationships.get(embedId);\r\n if (target) {\r\n // Generate new unique ID\r\n const newId = this.getNextRelationshipId(existingIds);\r\n existingIds.add(newId);\r\n remappedIds.set(embedId, newId);\r\n\r\n // Add relationship with same target\r\n this.addRelationship(\r\n newId,\r\n target,\r\n 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'\r\n );\r\n\r\n // Update the attribute\r\n parent[key] = newId;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Walk the tree looking for r:embed attributes\r\n */\r\n private walkTreeForEmbeds(\r\n obj: any,\r\n callback: (embedId: string, parent: any, key: string) => void\r\n ): void {\r\n if (!obj || typeof obj !== 'object') {\r\n return;\r\n }\r\n\r\n for (const key of Object.keys(obj)) {\r\n // Check for r:embed attribute\r\n if (key === '@_r:embed') {\r\n callback(obj[key], obj, key);\r\n } else if (\r\n !key.startsWith('@_') &&\r\n key !== '#text' &&\r\n key !== '_orderedChildren'\r\n ) {\r\n const value = obj[key];\r\n if (Array.isArray(value)) {\r\n for (const item of value) {\r\n this.walkTreeForEmbeds(item, callback);\r\n }\r\n } else if (typeof value === 'object') {\r\n this.walkTreeForEmbeds(value, callback);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Convenience function to accept all revisions in a document\r\n */\r\nexport async function acceptAllRevisions(zipHandler: ZipHandler): Promise<void> {\r\n const acceptor = new RevisionAcceptor(zipHandler);\r\n await acceptor.acceptAllRevisions();\r\n}\r\n\r\n/**\r\n * Convenience function to clean up revision metadata files.\r\n *\r\n * This removes:\r\n * - All revision authors from people.xml\r\n * - Track changes settings from settings.xml\r\n * - Resets revision count in core.xml\r\n *\r\n * Use this after in-memory revision acceptance to ensure metadata is also cleaned.\r\n * The raw XML acceptAllRevisions() function calls this automatically.\r\n *\r\n * @param zipHandler - The ZipHandler containing the DOCX package\r\n */\r\nexport function cleanupRevisionMetadata(zipHandler: ZipHandler): void {\r\n const acceptor = new RevisionAcceptor(zipHandler);\r\n acceptor.cleanupMetadata();\r\n}\r\n"]}
@@ -50,7 +50,7 @@ exports.CONDITIONAL_PRIORITY_ORDER = [
50
50
  function decodeCnfStyle(cnfStyle) {
51
51
  const normalized = cnfStyle.padEnd(12, "0");
52
52
  return {
53
- firstRow: normalized[BIT_POSITIONS.firstRow] === "1",
53
+ firstRow: normalized.startsWith("1"),
54
54
  lastRow: normalized[BIT_POSITIONS.lastRow] === "1",
55
55
  firstCol: normalized[BIT_POSITIONS.firstCol] === "1",
56
56
  lastCol: normalized[BIT_POSITIONS.lastCol] === "1",
@@ -1 +1 @@
1
- {"version":3,"file":"cnfStyleDecoder.js","sourceRoot":"","sources":["../../src/utils/cnfStyleDecoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cnfStyleDecoder.js","sourceRoot":"","sources":["../../src/utils/cnfStyleDecoder.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * cnfStyle Decoder - Decodes the conditional formatting style bitmask\r\n * Per ECMA-376 Part 1 Section 17.4.7 (w:cnfStyle)\r\n *\r\n * The cnfStyle is a 12-character string where each character is '0' or '1'\r\n * representing whether a particular conditional format applies.\r\n */\r\n\r\nimport { ConditionalFormattingType } from \"../formatting/Style\";\r\n\r\n/**\r\n * Decoded cnfStyle flags\r\n * Each flag corresponds to a conditional formatting type that may apply to a cell\r\n */\r\nexport interface CnfStyleFlags {\r\n /** First row of table (header row) */\r\n firstRow: boolean;\r\n /** Last row of table */\r\n lastRow: boolean;\r\n /** First column of table */\r\n firstCol: boolean;\r\n /** Last column of table */\r\n lastCol: boolean;\r\n /** Odd vertical band (column banding) */\r\n band1Vert: boolean;\r\n /** Even vertical band (column banding) */\r\n band2Vert: boolean;\r\n /** Odd horizontal band (row banding) */\r\n band1Horz: boolean;\r\n /** Even horizontal band (row banding) */\r\n band2Horz: boolean;\r\n /** Northeast cell (top-right corner) */\r\n neCell: boolean;\r\n /** Northwest cell (top-left corner) */\r\n nwCell: boolean;\r\n /** Southeast cell (bottom-right corner) */\r\n seCell: boolean;\r\n /** Southwest cell (bottom-left corner) */\r\n swCell: boolean;\r\n}\r\n\r\n/**\r\n * Maps flag names to ConditionalFormattingType values\r\n */\r\nexport const CNF_TO_CONDITIONAL_MAP: Record<\r\n keyof CnfStyleFlags,\r\n ConditionalFormattingType\r\n> = {\r\n firstRow: \"firstRow\",\r\n lastRow: \"lastRow\",\r\n firstCol: \"firstCol\",\r\n lastCol: \"lastCol\",\r\n band1Vert: \"band1Vert\",\r\n band2Vert: \"band2Vert\",\r\n band1Horz: \"band1Horz\",\r\n band2Horz: \"band2Horz\",\r\n neCell: \"neCell\",\r\n nwCell: \"nwCell\",\r\n seCell: \"seCell\",\r\n swCell: \"swCell\",\r\n};\r\n\r\n/**\r\n * Bit positions in the cnfStyle string (0-indexed from left)\r\n * Per ECMA-376 Part 1 Section 17.4.7\r\n */\r\nconst BIT_POSITIONS: Record<keyof CnfStyleFlags, number> = {\r\n firstRow: 0,\r\n lastRow: 1,\r\n firstCol: 2,\r\n lastCol: 3,\r\n band1Vert: 4,\r\n band2Vert: 5,\r\n band1Horz: 6,\r\n band2Horz: 7,\r\n neCell: 8,\r\n nwCell: 9,\r\n seCell: 10,\r\n swCell: 11,\r\n};\r\n\r\n/**\r\n * Priority order for conditional formatting resolution\r\n * More specific conditions (corners) override less specific (edges, banding)\r\n * Per ECMA-376, this is the order in which conditionals should be applied\r\n */\r\nexport const CONDITIONAL_PRIORITY_ORDER: (keyof CnfStyleFlags)[] = [\r\n // Corner cells (most specific)\r\n \"nwCell\",\r\n \"neCell\",\r\n \"swCell\",\r\n \"seCell\",\r\n // Edge rows/columns\r\n \"firstRow\",\r\n \"lastRow\",\r\n \"firstCol\",\r\n \"lastCol\",\r\n // Banding (least specific)\r\n \"band1Horz\",\r\n \"band2Horz\",\r\n \"band1Vert\",\r\n \"band2Vert\",\r\n];\r\n\r\n/**\r\n * Decodes a cnfStyle string into individual flags\r\n *\r\n * @param cnfStyle - 12-character binary string (e.g., \"100000000000\" for firstRow)\r\n * @returns Decoded flags object\r\n *\r\n * @example\r\n * ```typescript\r\n * const flags = decodeCnfStyle('100000000000');\r\n * console.log(flags.firstRow); // true\r\n * console.log(flags.lastRow); // false\r\n * ```\r\n */\r\nexport function decodeCnfStyle(cnfStyle: string): CnfStyleFlags {\r\n // Pad to 12 characters if shorter (handles legacy or truncated values)\r\n // Use padEnd because the string represents left-to-right bit positions\r\n const normalized = cnfStyle.padEnd(12, \"0\");\r\n\r\n return {\r\n firstRow: normalized.startsWith(\"1\"),\r\n lastRow: normalized[BIT_POSITIONS.lastRow] === \"1\",\r\n firstCol: normalized[BIT_POSITIONS.firstCol] === \"1\",\r\n lastCol: normalized[BIT_POSITIONS.lastCol] === \"1\",\r\n band1Vert: normalized[BIT_POSITIONS.band1Vert] === \"1\",\r\n band2Vert: normalized[BIT_POSITIONS.band2Vert] === \"1\",\r\n band1Horz: normalized[BIT_POSITIONS.band1Horz] === \"1\",\r\n band2Horz: normalized[BIT_POSITIONS.band2Horz] === \"1\",\r\n neCell: normalized[BIT_POSITIONS.neCell] === \"1\",\r\n nwCell: normalized[BIT_POSITIONS.nwCell] === \"1\",\r\n seCell: normalized[BIT_POSITIONS.seCell] === \"1\",\r\n swCell: normalized[BIT_POSITIONS.swCell] === \"1\",\r\n };\r\n}\r\n\r\n/**\r\n * Encodes CnfStyleFlags back to a binary string\r\n *\r\n * @param flags - Flags to encode\r\n * @returns 12-character binary string\r\n *\r\n * @example\r\n * ```typescript\r\n * const cnfStyle = encodeCnfStyle({ firstRow: true, lastCol: true });\r\n * console.log(cnfStyle); // '100100000000'\r\n * ```\r\n */\r\nexport function encodeCnfStyle(flags: Partial<CnfStyleFlags>): string {\r\n const bits = new Array(12).fill(\"0\");\r\n\r\n for (const [key, position] of Object.entries(BIT_POSITIONS)) {\r\n if (flags[key as keyof CnfStyleFlags]) {\r\n bits[position] = \"1\";\r\n }\r\n }\r\n\r\n return bits.join(\"\");\r\n}\r\n\r\n/**\r\n * Gets the active conditional formatting types from a cnfStyle\r\n *\r\n * @param cnfStyle - The cnfStyle string to decode\r\n * @returns Array of active ConditionalFormattingType values\r\n *\r\n * @example\r\n * ```typescript\r\n * const types = getActiveConditionals('110000000000');\r\n * console.log(types); // ['firstRow', 'lastRow']\r\n * ```\r\n */\r\nexport function getActiveConditionals(\r\n cnfStyle: string\r\n): ConditionalFormattingType[] {\r\n const flags = decodeCnfStyle(cnfStyle);\r\n const active: ConditionalFormattingType[] = [];\r\n\r\n for (const [key, isActive] of Object.entries(flags)) {\r\n if (isActive) {\r\n active.push(CNF_TO_CONDITIONAL_MAP[key as keyof CnfStyleFlags]);\r\n }\r\n }\r\n\r\n return active;\r\n}\r\n\r\n/**\r\n * Gets the active conditional formatting types in priority order\r\n * More specific conditions come first (corners before edges before banding)\r\n *\r\n * @param cnfStyle - The cnfStyle string to decode\r\n * @returns Array of active ConditionalFormattingType values in priority order\r\n *\r\n * @example\r\n * ```typescript\r\n * // Cell is both in first row and is the nwCell (top-left corner)\r\n * const types = getActiveConditionalsInPriorityOrder('100000000100');\r\n * console.log(types); // ['nwCell', 'firstRow'] - corner takes priority\r\n * ```\r\n */\r\nexport function getActiveConditionalsInPriorityOrder(\r\n cnfStyle: string\r\n): ConditionalFormattingType[] {\r\n const flags = decodeCnfStyle(cnfStyle);\r\n const active: ConditionalFormattingType[] = [];\r\n\r\n for (const flagName of CONDITIONAL_PRIORITY_ORDER) {\r\n if (flags[flagName]) {\r\n active.push(CNF_TO_CONDITIONAL_MAP[flagName]);\r\n }\r\n }\r\n\r\n return active;\r\n}\r\n"]}