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
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Complete catalog of legacy boolean compat elements defined in
3
+ * ECMA-376 4th Edition Part 4 (Transitional) and [MS-DOCX] specification.
4
+ *
5
+ * These elements are direct children of <w:compat> with complex type CT_OnOff.
6
+ * They emulate rendering quirks of older word processors. When compatibilityMode
7
+ * is upgraded to 15, Word's modern layout engine no longer needs them and they
8
+ * should be removed.
9
+ *
10
+ * Source: ECMA-376 4th Edition Part 4 sections 2.15.3.1 through 2.15.3.65
11
+ * and the [MS-DOCX] specification section 2.15.3.
12
+ * Verified against: http://www.datypic.com/sc/ooxml/t-w_CT_Compat.html (65 elements)
13
+ *
14
+ * Element names include the w: namespace prefix as they appear in XML.
15
+ */
16
+ export const LEGACY_COMPAT_ELEMENTS: string[] = [
17
+ // Word 6/95 emulation
18
+ 'w:useSingleBorderforContiguousCells',
19
+ 'w:wpJustification',
20
+ 'w:noTabHangInd',
21
+ 'w:noLeading',
22
+ 'w:spaceForUL',
23
+ 'w:noColumnBalance',
24
+ 'w:balanceSingleByteDoubleByteWidth',
25
+ 'w:noExtraLineSpacing',
26
+ 'w:doNotLeaveBackslashAlone',
27
+ 'w:ulTrailSpace',
28
+ 'w:doNotExpandShiftReturn',
29
+ 'w:spacingInWholePoints',
30
+ 'w:lineWrapLikeWord6',
31
+ 'w:printBodyTextBeforeHeader',
32
+ 'w:printColBlack',
33
+ 'w:wpSpaceWidth',
34
+ 'w:showBreaksInFrames',
35
+ 'w:subFontBySize',
36
+ 'w:suppressBottomSpacing',
37
+ 'w:suppressTopSpacing',
38
+ 'w:suppressSpacingAtTopOfPage',
39
+ 'w:suppressTopSpacingWP',
40
+ 'w:suppressSpBfAfterPgBrk',
41
+ 'w:swapBordersFacingPages',
42
+ 'w:convMailMergeEsc',
43
+ 'w:truncateFontHeightsLikeWP6',
44
+ 'w:mwSmallCaps',
45
+
46
+ // Word 97/2000 emulation
47
+ 'w:usePrinterMetrics',
48
+ 'w:doNotSuppressParagraphBorders',
49
+ 'w:wrapTrailSpaces',
50
+ 'w:footnoteLayoutLikeWW8',
51
+ 'w:shapeLayoutLikeWW8',
52
+ 'w:alignTablesRowByRow',
53
+ 'w:forgetLastTabAlignment',
54
+ 'w:adjustLineHeightInTable',
55
+ 'w:autoSpaceLikeWord95',
56
+ 'w:noSpaceRaiseLower',
57
+ 'w:doNotUseHTMLParagraphAutoSpacing',
58
+ 'w:layoutRawTableWidth',
59
+ 'w:layoutTableRowsApart',
60
+ 'w:useWord97LineBreakRules',
61
+ 'w:doNotBreakWrappedTables',
62
+ 'w:doNotSnapToGridInCell',
63
+ 'w:selectFldWithFirstOrLastChar',
64
+ 'w:applyBreakingRules',
65
+ 'w:doNotWrapTextWithPunct',
66
+ 'w:doNotUseEastAsianBreakRules',
67
+ 'w:useWord2002TableStyleRules',
68
+
69
+ // Word 2003+ additions
70
+ 'w:growAutofit',
71
+ 'w:useFELayout',
72
+ 'w:useNormalStyleForList',
73
+ 'w:doNotUseIndentAsNumberingTabStop',
74
+ 'w:useAltKinsokuLineBreakRules',
75
+ 'w:allowSpaceOfSameStyleInTable',
76
+ 'w:doNotSuppressIndentation',
77
+ 'w:doNotAutofitConstrainedTables',
78
+ 'w:autofitToFirstFixedWidthCell',
79
+ 'w:underlineTabInNumList',
80
+ 'w:displayHangulFixedWidth',
81
+ 'w:splitPgBreakAndParaMark',
82
+ 'w:doNotVertAlignCellWithSp',
83
+ 'w:doNotBreakConstrainedForcedTable',
84
+ 'w:doNotVertAlignInTxbx',
85
+ 'w:useAnsiKerningPairs',
86
+ 'w:cachedColBalance',
87
+ ];
88
+
89
+ /**
90
+ * Set of legacy compat element names without the w: prefix,
91
+ * for efficient lookup during parsing and filtering.
92
+ */
93
+ export const LEGACY_COMPAT_ELEMENT_NAMES = new Set<string>(
94
+ LEGACY_COMPAT_ELEMENTS.map(e => e.replace('w:', ''))
95
+ );
96
+
97
+ import type { CompatSetting } from '../types/compatibility-types';
98
+
99
+ /**
100
+ * The w:compatSetting entries that Word 2013+ includes for
101
+ * fully modern documents. These are the settings emitted when
102
+ * a user clicks File > Info > Convert in Word.
103
+ *
104
+ * Note: useWord2013TrackBottomHyphenation is intentionally omitted.
105
+ * Its default value varies across Word versions and its presence
106
+ * could change hyphenation behavior. Real Word 2016+ documents
107
+ * sometimes include it as "0" and sometimes as "1".
108
+ */
109
+ export const MODERN_COMPAT_SETTINGS: CompatSetting[] = [
110
+ {
111
+ name: 'compatibilityMode',
112
+ uri: 'http://schemas.microsoft.com/office/word',
113
+ val: '15',
114
+ },
115
+ {
116
+ name: 'overrideTableStyleFontSizeAndJustification',
117
+ uri: 'http://schemas.microsoft.com/office/word',
118
+ val: '1',
119
+ },
120
+ {
121
+ name: 'enableOpenTypeFeatures',
122
+ uri: 'http://schemas.microsoft.com/office/word',
123
+ val: '1',
124
+ },
125
+ {
126
+ name: 'doNotFlipMirrorIndents',
127
+ uri: 'http://schemas.microsoft.com/office/word',
128
+ val: '1',
129
+ },
130
+ {
131
+ name: 'differentiateMultirowTableHeaders',
132
+ uri: 'http://schemas.microsoft.com/office/word',
133
+ val: '1',
134
+ },
135
+ ];
136
+
137
+ /** The Microsoft Office Word URI used for w:compatSetting entries */
138
+ export const MS_WORD_COMPAT_URI = 'http://schemas.microsoft.com/office/word';
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Document validation and processing limits
3
+ * These constants define thresholds for memory usage, file sizes, and content limits
4
+ * Based on Microsoft Word compatibility constraints and practical performance testing
5
+ */
6
+
7
+ const PROPERTY_LIMITS = {
8
+ MAX_STRING_LENGTH: 10000,
9
+ MAX_REVISION: 999999,
10
+ } as const;
11
+
12
+ const FILE_SIZE_LIMITS = {
13
+ WARNING_SIZE_MB: 50,
14
+ ERROR_SIZE_MB: 150,
15
+ } as const;
16
+
17
+ const XML_LIMITS = {
18
+ MAX_PARSE_SIZE_MB: 10,
19
+ MAX_PARSE_SIZE_BYTES: 10 * 1024 * 1024,
20
+ } as const;
21
+
22
+ const MEMORY_LIMITS = {
23
+ DEFAULT_MAX_HEAP_PERCENT: 80,
24
+ DEFAULT_MAX_RSS_MB: 2048,
25
+ DEFAULT_USE_ABSOLUTE_LIMIT: true,
26
+ } as const;
27
+
28
+ const IMAGE_LIMITS = {
29
+ DEFAULT_MAX_IMAGE_COUNT: 20,
30
+ DEFAULT_MAX_TOTAL_SIZE_MB: 100,
31
+ DEFAULT_MAX_SINGLE_SIZE_MB: 20,
32
+ } as const;
33
+
34
+ const SIZE_ESTIMATES = {
35
+ BYTES_PER_PARAGRAPH: 200,
36
+ BYTES_PER_TABLE: 1000,
37
+ BASE_STRUCTURE_BYTES: 50000,
38
+ } as const;
39
+
40
+ /**
41
+ * All limits combined for easy import
42
+ */
43
+ export const LIMITS = {
44
+ ...PROPERTY_LIMITS,
45
+ ...FILE_SIZE_LIMITS,
46
+ ...XML_LIMITS,
47
+ ...MEMORY_LIMITS,
48
+ ...IMAGE_LIMITS,
49
+ ...SIZE_ESTIMATES,
50
+ } as const;
@@ -0,0 +1,109 @@
1
+ # Core Module
2
+
3
+ `src/core/` — Document lifecycle, XML parsing/generation, validation, relationships.
4
+
5
+ ## Classes
6
+
7
+ ### Document (`Document.ts`)
8
+
9
+ Primary entry point. Factory pattern: `Document.create()` (new), `Document.load()`/`loadFromBuffer()` (existing). Disposal pattern: always call `dispose()` when done.
10
+
11
+ **Load Options:**
12
+ ```typescript
13
+ interface DocumentLoadOptions {
14
+ revisionHandling?: 'accept' | 'strip' | 'preserve'; // default: 'accept'
15
+ acceptRevisions?: boolean; // true = parse then accept in-memory
16
+ }
17
+ ```
18
+
19
+ Use `revisionHandling: 'preserve'` to retain `pPrChange` and other revision elements during round-trip.
20
+
21
+ ### DocumentParser (`DocumentParser.ts`)
22
+
23
+ Converts XML to JavaScript object models. Position-based parsing (ReDoS-safe).
24
+
25
+ **Key behaviors:**
26
+ - Hyperlink defragmentation (merges consecutive hyperlinks with same URL)
27
+ - Special characters: `<w:tab/>`, `<w:br/>` → string equivalents
28
+ - Multi-paragraph complex fields: assembles fields (like TOC) spanning multiple paragraphs into single `ComplexField` objects
29
+ - Element order via `_orderedChildren` for correct tab/break ordering
30
+ - Body-level bookmarks: `extractBodyLevelBookmarkStarts()`/`extractBodyLevelBookmarkEnds()`
31
+ - Form field data: `parseFormFieldData()` with typed interfaces
32
+ - Footnotes/endnotes: `parseFootnotesXml()`/`parseEndnotesXml()`
33
+ - Unknown elements preserved for round-trip fidelity
34
+
35
+ ### DocumentGenerator (`DocumentGenerator.ts`)
36
+
37
+ Converts object models to DOCX XML. Template-based, on-demand, validates before generation.
38
+
39
+ Generates: `[Content_Types].xml`, `_rels/.rels`, `word/document.xml`, `word/styles.xml`, `word/numbering.xml`, `word/settings.xml`, `word/fontTable.xml`, `word/_rels/document.xml.rels`, `word/footnotes.xml`, `word/endnotes.xml`, `docProps/core.xml`, `docProps/app.xml`.
40
+
41
+ ### DocumentValidator (`DocumentValidator.ts`)
42
+
43
+ Estimates final DOCX file size and validates memory usage. Size formula: `(base ~5KB + text*1.5 + images + cells*200) * 0.3 compression`.
44
+
45
+ ### RelationshipManager (`RelationshipManager.ts`)
46
+
47
+ Manages relationships (images, hyperlinks, headers, footers, comments, footnotes, endnotes, people). Sequential IDs (`rId1`, `rId2`, ...). Singleton types (comments, footnotes, endnotes, people) need check-before-add guard to prevent duplicates on round-trip.
48
+
49
+ ### BaseManager (`BaseManager.ts`)
50
+
51
+ Abstract base for all manager classes. Subclasses: StylesManager, NumberingManager, ImageManager, BookmarkManager, CommentManager, RevisionManager, FootnoteManager, EndnoteManager, DrawingManager, HeaderFooterManager.
52
+
53
+ ## Data Flow
54
+
55
+ **Load:** `Document.load()` → `ZipHandler.load()` → extract XML → `DocumentParser.parse()` → parse styles/numbering/relationships → build object model → return Document
56
+
57
+ **Save:** `Document.save()` → `DocumentValidator.estimateSize()` → `DocumentGenerator.generate()` → generate all XML → `RelationshipManager.generateXML()` → `ZipWriter.create()` → write ZIP
58
+
59
+ ## Revision Acceptance Architecture
60
+
61
+ The framework implements the **industry-standard in-memory DOM transformation approach** (same as OpenXML PowerTools, Aspose.Words).
62
+
63
+ **`acceptAllRevisions()` transforms Revision objects in the in-memory model:**
64
+ 1. **Insertions (`w:ins`)**: Unwrap — child Runs/Hyperlinks extracted into parent paragraph
65
+ 2. **Deletions (`w:del`)**: Remove — revision and content deleted from model
66
+ 3. **MoveFrom (`w:moveFrom`)**: Remove — content exists at moveTo destination
67
+ 4. **MoveTo (`w:moveTo`)**: Unwrap — keep content, remove wrapper
68
+ 5. **Property changes (`w:rPrChange`, etc.)**: Remove metadata, keep current formatting
69
+
70
+ Because this transforms the in-memory model (not raw XML), standard `save()` regeneration includes both accepted changes AND subsequent modifications.
71
+
72
+ **`acceptAllRevisionsRawXml()` (legacy):** Sets `skipDocumentXmlRegeneration = true`. Any modifications after this call will NOT be saved.
73
+
74
+ **Helper Functions:**
75
+ ```typescript
76
+ import { acceptRevisionsInMemory, paragraphHasRevisions, getRevisionsFromParagraph, countRevisionsByType } from 'docxmlater';
77
+
78
+ // Selective acceptance
79
+ const result = acceptRevisionsInMemory(doc, {
80
+ acceptInsertions: true,
81
+ acceptDeletions: true,
82
+ acceptMoves: true,
83
+ acceptPropertyChanges: false,
84
+ });
85
+ ```
86
+
87
+ ## Sanitization & Cleanup Pipeline
88
+
89
+ All methods below are explicitly called by user code. None run automatically. **Removals are intentional — do not treat as bugs.**
90
+
91
+ **Post-Processing (`_postProcessDocumentXml`):** Runs during `prepareSave()`, after `updateDocumentXml()` and before `updateSettingsXml()`. Zero overhead when no flags set.
92
+
93
+ | Method | Removes | Why |
94
+ |--------|---------|-----|
95
+ | `flattenFieldCodes()` | INCLUDEPICTURE fldChar/instrText runs | Outlook bloat. Preserves w:drawing. Other fields untouched. Sets `skipDocumentXmlRegeneration = true`. |
96
+ | `stripOrphanRSIDs()` | Unreferenced RSIDs in settings.xml | 80%+ of settings.xml. Preserves `rsidRoot`. |
97
+ | `clearDirectSpacingForStyles()` | Direct w:spacing on styled paragraphs | Lets style spacing take effect. Protects w:pPrChange/w:rPr. |
98
+ | `cleanupUnusedNumbering()` | Unreferenced numbering defs | Scans 6 sources before removing. |
99
+ | `consolidateNumbering()` | Duplicate abstract numberings | Copy-paste creates 10-50+ identical copies. |
100
+
101
+ ## Performance
102
+
103
+ | Document Size | Load/Save Time |
104
+ |--------------|----------------|
105
+ | <100KB | <50ms |
106
+ | 100KB-1MB | 100-500ms |
107
+ | >1MB | 500ms-2s |
108
+
109
+ Buffer operations are 20-30% faster than file I/O. Base memory: ~2MB per Document, ~2 bytes/char, full buffer per image, ~200 bytes/cell.