docxmlater 10.0.2 → 10.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/README.md +3 -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 +86 -55
  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 +8 -0
  76. package/dist/elements/Paragraph.d.ts.map +1 -1
  77. package/dist/elements/Paragraph.js +153 -118
  78. package/dist/elements/Paragraph.js.map +1 -1
  79. package/dist/elements/PreservedElement.js.map +1 -1
  80. package/dist/elements/PropertyChangeTypes.js.map +1 -1
  81. package/dist/elements/RangeMarker.js.map +1 -1
  82. package/dist/elements/Revision.d.ts +1 -0
  83. package/dist/elements/Revision.d.ts.map +1 -1
  84. package/dist/elements/Revision.js +44 -5
  85. package/dist/elements/Revision.js.map +1 -1
  86. package/dist/elements/RevisionContent.js.map +1 -1
  87. package/dist/elements/RevisionManager.d.ts.map +1 -1
  88. package/dist/elements/RevisionManager.js.map +1 -1
  89. package/dist/elements/Run.d.ts.map +1 -1
  90. package/dist/elements/Run.js +1 -3
  91. package/dist/elements/Run.js.map +1 -1
  92. package/dist/elements/Section.d.ts.map +1 -1
  93. package/dist/elements/Section.js +127 -118
  94. package/dist/elements/Section.js.map +1 -1
  95. package/dist/elements/Shape.d.ts.map +1 -1
  96. package/dist/elements/Shape.js +21 -0
  97. package/dist/elements/Shape.js.map +1 -1
  98. package/dist/elements/StructuredDocumentTag.d.ts.map +1 -1
  99. package/dist/elements/StructuredDocumentTag.js +20 -8
  100. package/dist/elements/StructuredDocumentTag.js.map +1 -1
  101. package/dist/elements/Table.d.ts +2 -2
  102. package/dist/elements/Table.d.ts.map +1 -1
  103. package/dist/elements/Table.js +29 -35
  104. package/dist/elements/Table.js.map +1 -1
  105. package/dist/elements/TableCell.d.ts +2 -2
  106. package/dist/elements/TableCell.d.ts.map +1 -1
  107. package/dist/elements/TableCell.js +63 -67
  108. package/dist/elements/TableCell.js.map +1 -1
  109. package/dist/elements/TableGridChange.js.map +1 -1
  110. package/dist/elements/TableOfContents.d.ts +6 -6
  111. package/dist/elements/TableOfContents.d.ts.map +1 -1
  112. package/dist/elements/TableOfContents.js.map +1 -1
  113. package/dist/elements/TableOfContentsElement.js.map +1 -1
  114. package/dist/elements/TableRow.d.ts.map +1 -1
  115. package/dist/elements/TableRow.js +65 -47
  116. package/dist/elements/TableRow.js.map +1 -1
  117. package/dist/elements/TextBox.d.ts.map +1 -1
  118. package/dist/elements/TextBox.js +1 -1
  119. package/dist/elements/TextBox.js.map +1 -1
  120. package/dist/formatting/AbstractNumbering.d.ts +1 -1
  121. package/dist/formatting/AbstractNumbering.d.ts.map +1 -1
  122. package/dist/formatting/AbstractNumbering.js +11 -11
  123. package/dist/formatting/AbstractNumbering.js.map +1 -1
  124. package/dist/formatting/NumberingInstance.d.ts.map +1 -1
  125. package/dist/formatting/NumberingInstance.js +4 -4
  126. package/dist/formatting/NumberingInstance.js.map +1 -1
  127. package/dist/formatting/NumberingLevel.d.ts.map +1 -1
  128. package/dist/formatting/NumberingLevel.js +26 -26
  129. package/dist/formatting/NumberingLevel.js.map +1 -1
  130. package/dist/formatting/NumberingManager.d.ts +1 -1
  131. package/dist/formatting/NumberingManager.d.ts.map +1 -1
  132. package/dist/formatting/NumberingManager.js.map +1 -1
  133. package/dist/formatting/Style.d.ts.map +1 -1
  134. package/dist/formatting/Style.js +87 -95
  135. package/dist/formatting/Style.js.map +1 -1
  136. package/dist/formatting/StylesManager.d.ts +3 -3
  137. package/dist/formatting/StylesManager.d.ts.map +1 -1
  138. package/dist/formatting/StylesManager.js.map +1 -1
  139. package/dist/helpers/CleanupHelper.js.map +1 -1
  140. package/dist/images/ImageOptimizer.js.map +1 -1
  141. package/dist/index.js.map +1 -1
  142. package/dist/managers/DrawingManager.d.ts.map +1 -1
  143. package/dist/managers/DrawingManager.js.map +1 -1
  144. package/dist/tracking/DocumentTrackingContext.js.map +1 -1
  145. package/dist/tracking/TrackingContext.js.map +1 -1
  146. package/dist/types/compatibility-types.js.map +1 -1
  147. package/dist/types/formatting.js.map +1 -1
  148. package/dist/types/list-types.d.ts +4 -4
  149. package/dist/types/list-types.d.ts.map +1 -1
  150. package/dist/types/list-types.js.map +1 -1
  151. package/dist/types/settings-types.js.map +1 -1
  152. package/dist/types/styleConfig.js.map +1 -1
  153. package/dist/utils/ChangelogGenerator.d.ts.map +1 -1
  154. package/dist/utils/ChangelogGenerator.js.map +1 -1
  155. package/dist/utils/CompatibilityUpgrader.d.ts.map +1 -1
  156. package/dist/utils/CompatibilityUpgrader.js +7 -7
  157. package/dist/utils/CompatibilityUpgrader.js.map +1 -1
  158. package/dist/utils/InMemoryRevisionAcceptor.d.ts.map +1 -1
  159. package/dist/utils/InMemoryRevisionAcceptor.js +23 -2
  160. package/dist/utils/InMemoryRevisionAcceptor.js.map +1 -1
  161. package/dist/utils/MoveOperationHelper.js.map +1 -1
  162. package/dist/utils/RevisionAwareProcessor.js.map +1 -1
  163. package/dist/utils/RevisionWalker.js.map +1 -1
  164. package/dist/utils/SelectiveRevisionAcceptor.d.ts +1 -0
  165. package/dist/utils/SelectiveRevisionAcceptor.d.ts.map +1 -1
  166. package/dist/utils/SelectiveRevisionAcceptor.js +46 -0
  167. package/dist/utils/SelectiveRevisionAcceptor.js.map +1 -1
  168. package/dist/utils/ShadingResolver.js +1 -1
  169. package/dist/utils/ShadingResolver.js.map +1 -1
  170. package/dist/utils/acceptRevisions.d.ts +0 -28
  171. package/dist/utils/acceptRevisions.d.ts.map +1 -1
  172. package/dist/utils/acceptRevisions.js +5 -7
  173. package/dist/utils/acceptRevisions.js.map +1 -1
  174. package/dist/utils/cnfStyleDecoder.js +1 -1
  175. package/dist/utils/cnfStyleDecoder.js.map +1 -1
  176. package/dist/utils/corruptionDetection.js.map +1 -1
  177. package/dist/utils/dateFormatting.js.map +1 -1
  178. package/dist/utils/deepClone.d.ts +0 -1
  179. package/dist/utils/deepClone.d.ts.map +1 -1
  180. package/dist/utils/deepClone.js +0 -7
  181. package/dist/utils/deepClone.js.map +1 -1
  182. package/dist/utils/diagnostics.d.ts +2 -2
  183. package/dist/utils/diagnostics.d.ts.map +1 -1
  184. package/dist/utils/diagnostics.js.map +1 -1
  185. package/dist/utils/errorHandling.js.map +1 -1
  186. package/dist/utils/formatting.js.map +1 -1
  187. package/dist/utils/list-detection.d.ts +2 -2
  188. package/dist/utils/list-detection.d.ts.map +1 -1
  189. package/dist/utils/list-detection.js +3 -3
  190. package/dist/utils/list-detection.js.map +1 -1
  191. package/dist/utils/logger.d.ts +2 -4
  192. package/dist/utils/logger.d.ts.map +1 -1
  193. package/dist/utils/logger.js +0 -2
  194. package/dist/utils/logger.js.map +1 -1
  195. package/dist/utils/parsingHelpers.js.map +1 -1
  196. package/dist/utils/stripTrackedChanges.d.ts +0 -19
  197. package/dist/utils/stripTrackedChanges.d.ts.map +1 -1
  198. package/dist/utils/stripTrackedChanges.js +0 -2
  199. package/dist/utils/stripTrackedChanges.js.map +1 -1
  200. package/dist/utils/textDiff.js.map +1 -1
  201. package/dist/utils/units.js.map +1 -1
  202. package/dist/utils/validation.d.ts.map +1 -1
  203. package/dist/utils/validation.js.map +1 -1
  204. package/dist/utils/xmlSanitization.js.map +1 -1
  205. package/dist/validation/RevisionAutoFixer.js.map +1 -1
  206. package/dist/validation/RevisionValidator.js.map +1 -1
  207. package/dist/validation/ValidationRules.js.map +1 -1
  208. package/dist/validation/index.js.map +1 -1
  209. package/dist/xml/XMLBuilder.d.ts.map +1 -1
  210. package/dist/xml/XMLBuilder.js +10 -0
  211. package/dist/xml/XMLBuilder.js.map +1 -1
  212. package/dist/xml/XMLParser.d.ts.map +1 -1
  213. package/dist/xml/XMLParser.js +4 -5
  214. package/dist/xml/XMLParser.js.map +1 -1
  215. package/dist/zip/ZipHandler.js.map +1 -1
  216. package/dist/zip/ZipReader.js.map +1 -1
  217. package/dist/zip/ZipWriter.js.map +1 -1
  218. package/dist/zip/errors.js.map +1 -1
  219. package/dist/zip/types.js.map +1 -1
  220. package/package.json +34 -4
  221. package/src/__tests__/helper-methods.test.ts +512 -0
  222. package/src/constants/legacyCompatFlags.ts +138 -0
  223. package/src/constants/limits.ts +50 -0
  224. package/src/core/CLAUDE.md +109 -0
  225. package/src/core/Document.ts +15569 -0
  226. package/src/core/DocumentContent.ts +467 -0
  227. package/src/core/DocumentGenerator.ts +1104 -0
  228. package/src/core/DocumentIdManager.ts +158 -0
  229. package/src/core/DocumentParser.ts +10140 -0
  230. package/src/core/DocumentValidator.ts +372 -0
  231. package/src/core/Relationship.ts +367 -0
  232. package/src/core/RelationshipManager.ts +428 -0
  233. package/src/elements/AlternateContent.ts +42 -0
  234. package/src/elements/Bookmark.ts +210 -0
  235. package/src/elements/BookmarkManager.ts +250 -0
  236. package/src/elements/CLAUDE.md +126 -0
  237. package/src/elements/Comment.ts +359 -0
  238. package/src/elements/CommentManager.ts +502 -0
  239. package/src/elements/CommonTypes.ts +549 -0
  240. package/src/elements/CustomXml.ts +36 -0
  241. package/src/elements/Endnote.ts +217 -0
  242. package/src/elements/EndnoteManager.ts +249 -0
  243. package/src/elements/Field.ts +1233 -0
  244. package/src/elements/FieldHelpers.ts +333 -0
  245. package/src/elements/FontManager.ts +339 -0
  246. package/src/elements/Footer.ts +269 -0
  247. package/src/elements/Footnote.ts +217 -0
  248. package/src/elements/FootnoteManager.ts +249 -0
  249. package/src/elements/Header.ts +269 -0
  250. package/src/elements/HeaderFooterManager.ts +219 -0
  251. package/src/elements/Hyperlink.ts +1146 -0
  252. package/src/elements/Image.ts +1756 -0
  253. package/src/elements/ImageManager.ts +432 -0
  254. package/src/elements/ImageRun.ts +59 -0
  255. package/src/elements/MathElement.ts +65 -0
  256. package/src/elements/Paragraph.ts +4287 -0
  257. package/src/elements/PreservedElement.ts +53 -0
  258. package/src/elements/PropertyChangeTypes.ts +442 -0
  259. package/src/elements/RangeMarker.ts +400 -0
  260. package/src/elements/Revision.ts +1217 -0
  261. package/src/elements/RevisionContent.ts +73 -0
  262. package/src/elements/RevisionManager.ts +1070 -0
  263. package/src/elements/Run.ts +3068 -0
  264. package/src/elements/Section.ts +1421 -0
  265. package/src/elements/Shape.ts +873 -0
  266. package/src/elements/StructuredDocumentTag.ts +978 -0
  267. package/src/elements/Table.ts +2524 -0
  268. package/src/elements/TableCell.ts +1586 -0
  269. package/src/elements/TableGridChange.ts +151 -0
  270. package/src/elements/TableOfContents.ts +691 -0
  271. package/src/elements/TableOfContentsElement.ts +89 -0
  272. package/src/elements/TableRow.ts +906 -0
  273. package/src/elements/TextBox.ts +768 -0
  274. package/src/formatting/AbstractNumbering.ts +548 -0
  275. package/src/formatting/CLAUDE.md +74 -0
  276. package/src/formatting/NumberingInstance.ts +212 -0
  277. package/src/formatting/NumberingLevel.ts +1006 -0
  278. package/src/formatting/NumberingManager.ts +827 -0
  279. package/src/formatting/Style.ts +1833 -0
  280. package/src/formatting/StylesManager.ts +1005 -0
  281. package/src/helpers/CleanupHelper.ts +524 -0
  282. package/src/images/ImageOptimizer.ts +274 -0
  283. package/src/index.ts +554 -0
  284. package/src/managers/CLAUDE.md +47 -0
  285. package/src/managers/DrawingManager.ts +319 -0
  286. package/src/tracking/DocumentTrackingContext.ts +643 -0
  287. package/src/tracking/TrackingContext.ts +173 -0
  288. package/src/types/compatibility-types.ts +49 -0
  289. package/src/types/formatting.ts +210 -0
  290. package/src/types/list-types.ts +152 -0
  291. package/src/types/settings-types.ts +59 -0
  292. package/src/types/styleConfig.ts +189 -0
  293. package/src/utils/CLAUDE.md +153 -0
  294. package/src/utils/ChangelogGenerator.ts +1581 -0
  295. package/src/utils/CompatibilityUpgrader.ts +237 -0
  296. package/src/utils/InMemoryRevisionAcceptor.ts +696 -0
  297. package/src/utils/MoveOperationHelper.ts +238 -0
  298. package/src/utils/RevisionAwareProcessor.ts +526 -0
  299. package/src/utils/RevisionWalker.ts +457 -0
  300. package/src/utils/SelectiveRevisionAcceptor.ts +683 -0
  301. package/src/utils/ShadingResolver.ts +107 -0
  302. package/src/utils/acceptRevisions.ts +714 -0
  303. package/src/utils/cnfStyleDecoder.ts +217 -0
  304. package/src/utils/corruptionDetection.ts +345 -0
  305. package/src/utils/dateFormatting.ts +20 -0
  306. package/src/utils/deepClone.ts +78 -0
  307. package/src/utils/diagnostics.ts +129 -0
  308. package/src/utils/errorHandling.ts +80 -0
  309. package/src/utils/formatting.ts +213 -0
  310. package/src/utils/list-detection.ts +274 -0
  311. package/src/utils/logger.ts +404 -0
  312. package/src/utils/parsingHelpers.ts +190 -0
  313. package/src/utils/stripTrackedChanges.ts +353 -0
  314. package/src/utils/textDiff.ts +100 -0
  315. package/src/utils/units.ts +421 -0
  316. package/src/utils/validation.ts +542 -0
  317. package/src/utils/xmlSanitization.ts +182 -0
  318. package/src/validation/RevisionAutoFixer.ts +542 -0
  319. package/src/validation/RevisionValidator.ts +460 -0
  320. package/src/validation/ValidationRules.ts +338 -0
  321. package/src/validation/index.ts +30 -0
  322. package/src/xml/CLAUDE.md +65 -0
  323. package/src/xml/XMLBuilder.ts +871 -0
  324. package/src/xml/XMLParser.ts +919 -0
  325. package/src/zip/CLAUDE.md +55 -0
  326. package/src/zip/ZipHandler.ts +637 -0
  327. package/src/zip/ZipReader.ts +299 -0
  328. package/src/zip/ZipWriter.ts +390 -0
  329. package/src/zip/errors.ts +69 -0
  330. package/src/zip/types.ts +116 -0
  331. package/dist/core/ListNormalizer.d.ts +0 -23
  332. package/dist/core/ListNormalizer.d.ts.map +0 -1
  333. package/dist/core/ListNormalizer.js +0 -624
  334. package/dist/core/ListNormalizer.js.map +0 -1
  335. package/dist/images/index.d.ts +0 -2
  336. package/dist/images/index.d.ts.map +0 -1
  337. package/dist/images/index.js +0 -8
  338. package/dist/images/index.js.map +0 -1
  339. package/dist/ms-doc/cfb/CFBReader.d.ts +0 -35
  340. package/dist/ms-doc/cfb/CFBReader.d.ts.map +0 -1
  341. package/dist/ms-doc/cfb/CFBReader.js +0 -360
  342. package/dist/ms-doc/cfb/CFBReader.js.map +0 -1
  343. package/dist/ms-doc/converter/DocToDocxConverter.d.ts +0 -55
  344. package/dist/ms-doc/converter/DocToDocxConverter.d.ts.map +0 -1
  345. package/dist/ms-doc/converter/DocToDocxConverter.js +0 -324
  346. package/dist/ms-doc/converter/DocToDocxConverter.js.map +0 -1
  347. package/dist/ms-doc/fib/FIB.d.ts +0 -18
  348. package/dist/ms-doc/fib/FIB.d.ts.map +0 -1
  349. package/dist/ms-doc/fib/FIB.js +0 -342
  350. package/dist/ms-doc/fib/FIB.js.map +0 -1
  351. package/dist/ms-doc/fields/FieldParser.d.ts +0 -31
  352. package/dist/ms-doc/fields/FieldParser.d.ts.map +0 -1
  353. package/dist/ms-doc/fields/FieldParser.js +0 -266
  354. package/dist/ms-doc/fields/FieldParser.js.map +0 -1
  355. package/dist/ms-doc/images/PictureExtractor.d.ts +0 -22
  356. package/dist/ms-doc/images/PictureExtractor.d.ts.map +0 -1
  357. package/dist/ms-doc/images/PictureExtractor.js +0 -233
  358. package/dist/ms-doc/images/PictureExtractor.js.map +0 -1
  359. package/dist/ms-doc/index.d.ts +0 -20
  360. package/dist/ms-doc/index.d.ts.map +0 -1
  361. package/dist/ms-doc/index.js +0 -59
  362. package/dist/ms-doc/index.js.map +0 -1
  363. package/dist/ms-doc/properties/SPRM.d.ts +0 -210
  364. package/dist/ms-doc/properties/SPRM.d.ts.map +0 -1
  365. package/dist/ms-doc/properties/SPRM.js +0 -633
  366. package/dist/ms-doc/properties/SPRM.js.map +0 -1
  367. package/dist/ms-doc/sections/SectionParser.d.ts +0 -25
  368. package/dist/ms-doc/sections/SectionParser.d.ts.map +0 -1
  369. package/dist/ms-doc/sections/SectionParser.js +0 -214
  370. package/dist/ms-doc/sections/SectionParser.js.map +0 -1
  371. package/dist/ms-doc/styles/StyleSheet.d.ts +0 -23
  372. package/dist/ms-doc/styles/StyleSheet.d.ts.map +0 -1
  373. package/dist/ms-doc/styles/StyleSheet.js +0 -268
  374. package/dist/ms-doc/styles/StyleSheet.js.map +0 -1
  375. package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts +0 -61
  376. package/dist/ms-doc/subdocuments/SubdocumentParser.d.ts.map +0 -1
  377. package/dist/ms-doc/subdocuments/SubdocumentParser.js +0 -208
  378. package/dist/ms-doc/subdocuments/SubdocumentParser.js.map +0 -1
  379. package/dist/ms-doc/tables/TableParser.d.ts +0 -29
  380. package/dist/ms-doc/tables/TableParser.d.ts.map +0 -1
  381. package/dist/ms-doc/tables/TableParser.js +0 -176
  382. package/dist/ms-doc/tables/TableParser.js.map +0 -1
  383. package/dist/ms-doc/text/PieceTable.d.ts +0 -21
  384. package/dist/ms-doc/text/PieceTable.d.ts.map +0 -1
  385. package/dist/ms-doc/text/PieceTable.js +0 -171
  386. package/dist/ms-doc/text/PieceTable.js.map +0 -1
  387. package/dist/ms-doc/types/Constants.d.ts +0 -99
  388. package/dist/ms-doc/types/Constants.d.ts.map +0 -1
  389. package/dist/ms-doc/types/Constants.js +0 -102
  390. package/dist/ms-doc/types/Constants.js.map +0 -1
  391. package/dist/ms-doc/types/DocTypes.d.ts +0 -368
  392. package/dist/ms-doc/types/DocTypes.d.ts.map +0 -1
  393. package/dist/ms-doc/types/DocTypes.js +0 -3
  394. package/dist/ms-doc/types/DocTypes.js.map +0 -1
  395. package/dist/tracking/index.d.ts +0 -3
  396. package/dist/tracking/index.d.ts.map +0 -1
  397. package/dist/tracking/index.js +0 -6
  398. package/dist/tracking/index.js.map +0 -1
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Endnote - Represents an endnote in a Word document
3
+ *
4
+ * Endnotes appear at the end of the document or section and are referenced
5
+ * within the document text via endnote references.
6
+ */
7
+
8
+ import { Paragraph } from './Paragraph';
9
+ import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
10
+
11
+ /**
12
+ * Endnote type
13
+ */
14
+ export enum EndnoteType {
15
+ /** Normal endnote */
16
+ Normal = 'normal',
17
+ /** Separator between document text and endnotes */
18
+ Separator = 'separator',
19
+ /** Continuation separator for endnotes that continue to next page */
20
+ ContinuationSeparator = 'continuationSeparator',
21
+ /** Continuation notice at bottom of page when endnotes continue */
22
+ ContinuationNotice = 'continuationNotice',
23
+ }
24
+
25
+ /**
26
+ * Endnote properties
27
+ */
28
+ export interface EndnoteProperties {
29
+ /** Endnote ID (required, must be unique) */
30
+ id: number;
31
+ /** Type of endnote */
32
+ type?: EndnoteType;
33
+ /** Custom mark/symbol (optional, otherwise uses numbering) */
34
+ customMark?: string;
35
+ }
36
+
37
+ /**
38
+ * Represents an endnote in a document
39
+ */
40
+ export class Endnote {
41
+ private id: number;
42
+ private type: EndnoteType;
43
+ private customMark?: string;
44
+ private paragraphs: Paragraph[] = [];
45
+
46
+ /**
47
+ * Creates a new endnote
48
+ * @param properties Endnote properties
49
+ */
50
+ constructor(properties: EndnoteProperties) {
51
+ this.id = properties.id;
52
+ this.type = properties.type || EndnoteType.Normal;
53
+ this.customMark = properties.customMark;
54
+ }
55
+
56
+ /**
57
+ * Gets the endnote ID
58
+ */
59
+ getId(): number {
60
+ return this.id;
61
+ }
62
+
63
+ /**
64
+ * Gets the endnote type
65
+ */
66
+ getType(): EndnoteType {
67
+ return this.type;
68
+ }
69
+
70
+ /**
71
+ * Gets the custom mark
72
+ */
73
+ getCustomMark(): string | undefined {
74
+ return this.customMark;
75
+ }
76
+
77
+ /**
78
+ * Sets the custom mark
79
+ * @param mark Custom mark/symbol
80
+ */
81
+ setCustomMark(mark: string): this {
82
+ this.customMark = mark;
83
+ return this;
84
+ }
85
+
86
+ /**
87
+ * Adds a paragraph to the endnote
88
+ * @param paragraph Paragraph to add
89
+ */
90
+ addParagraph(paragraph: Paragraph): this {
91
+ this.paragraphs.push(paragraph);
92
+ return this;
93
+ }
94
+
95
+ /**
96
+ * Creates and adds a new paragraph
97
+ * @param text Optional text content
98
+ * @returns The created paragraph
99
+ */
100
+ createParagraph(text?: string): Paragraph {
101
+ const para = new Paragraph();
102
+ if (text) {
103
+ para.addText(text);
104
+ }
105
+ this.paragraphs.push(para);
106
+ return para;
107
+ }
108
+
109
+ /**
110
+ * Gets all paragraphs in the endnote
111
+ */
112
+ getParagraphs(): Paragraph[] {
113
+ return [...this.paragraphs];
114
+ }
115
+
116
+ /**
117
+ * Gets the text content of the endnote
118
+ */
119
+ getText(): string {
120
+ return this.paragraphs.map(p => p.getText()).join('\n');
121
+ }
122
+
123
+ /**
124
+ * Generates the XML for this endnote
125
+ */
126
+ toXML(): XMLElement {
127
+ const attrs: Record<string, any> = {
128
+ 'w:id': this.id.toString(),
129
+ };
130
+
131
+ if (this.type !== EndnoteType.Normal) {
132
+ attrs['w:type'] = this.type;
133
+ }
134
+
135
+ const children: XMLElement[] = [];
136
+
137
+ // Separator types require specific child elements per ECMA-376
138
+ if (this.type === EndnoteType.Separator) {
139
+ // <w:p><w:r><w:separator/></w:r></w:p>
140
+ children.push(XMLBuilder.w('p', undefined, [
141
+ XMLBuilder.w('r', undefined, [XMLBuilder.wSelf('separator')])
142
+ ]));
143
+ } else if (this.type === EndnoteType.ContinuationSeparator) {
144
+ // <w:p><w:r><w:continuationSeparator/></w:r></w:p>
145
+ children.push(XMLBuilder.w('p', undefined, [
146
+ XMLBuilder.w('r', undefined, [XMLBuilder.wSelf('continuationSeparator')])
147
+ ]));
148
+ } else {
149
+ // Add paragraphs
150
+ for (const para of this.paragraphs) {
151
+ children.push(para.toXML());
152
+ }
153
+
154
+ // If no paragraphs, add an empty one (required)
155
+ if (children.length === 0) {
156
+ children.push(XMLBuilder.w('p'));
157
+ }
158
+ }
159
+
160
+ return XMLBuilder.w('endnote', attrs, children);
161
+ }
162
+
163
+ /**
164
+ * Creates an endnote from text
165
+ * @param id Endnote ID
166
+ * @param text Text content
167
+ * @returns New endnote instance
168
+ */
169
+ static fromText(id: number, text: string): Endnote {
170
+ const endnote = new Endnote({ id });
171
+ endnote.createParagraph(text);
172
+ return endnote;
173
+ }
174
+
175
+ /**
176
+ * Creates a separator endnote
177
+ * @param id Endnote ID
178
+ * @returns New separator endnote
179
+ */
180
+ static createSeparator(id: number): Endnote {
181
+ const endnote = new Endnote({
182
+ id,
183
+ type: EndnoteType.Separator
184
+ });
185
+ // Separator typically has a horizontal line
186
+ endnote.createParagraph();
187
+ // Add separator formatting if needed
188
+ return endnote;
189
+ }
190
+
191
+ /**
192
+ * Creates a continuation separator endnote
193
+ * @param id Endnote ID
194
+ * @returns New continuation separator endnote
195
+ */
196
+ static createContinuationSeparator(id: number): Endnote {
197
+ return new Endnote({
198
+ id,
199
+ type: EndnoteType.ContinuationSeparator
200
+ });
201
+ }
202
+
203
+ /**
204
+ * Creates a continuation notice endnote
205
+ * @param id Endnote ID
206
+ * @param text Notice text (e.g., "Continued on next page...")
207
+ * @returns New continuation notice endnote
208
+ */
209
+ static createContinuationNotice(id: number, text = 'Continued...'): Endnote {
210
+ const endnote = new Endnote({
211
+ id,
212
+ type: EndnoteType.ContinuationNotice
213
+ });
214
+ endnote.createParagraph(text);
215
+ return endnote;
216
+ }
217
+ }
@@ -0,0 +1,249 @@
1
+ /**
2
+ * EndnoteManager - Manages endnotes in a document
3
+ *
4
+ * Handles creation, registration, and XML generation for endnotes.
5
+ * Maintains unique IDs and proper ordering.
6
+ */
7
+
8
+ import { Endnote, EndnoteType } from './Endnote';
9
+ import { XMLBuilder, XMLElement } from '../xml/XMLBuilder';
10
+ import { XMLParser } from '../xml/XMLParser';
11
+
12
+ /**
13
+ * Manages endnotes in a document
14
+ */
15
+ export class EndnoteManager {
16
+ private endnotes = new Map<number, Endnote>();
17
+ private nextId = 1;
18
+
19
+ /**
20
+ * Creates a new EndnoteManager
21
+ * @private Use static factory method
22
+ */
23
+ private constructor() {
24
+ // Add special endnotes (separators) with negative IDs
25
+ this.addSpecialEndnotes();
26
+ }
27
+
28
+ /**
29
+ * Adds special endnotes (separator, continuation)
30
+ * These use negative IDs as per OOXML specification
31
+ */
32
+ private addSpecialEndnotes(): void {
33
+ // Separator endnote (ID -1)
34
+ const separator = Endnote.createSeparator(-1);
35
+ this.endnotes.set(-1, separator);
36
+
37
+ // Continuation separator (ID 0)
38
+ const continuationSep = Endnote.createContinuationSeparator(0);
39
+ this.endnotes.set(0, continuationSep);
40
+ }
41
+
42
+ /**
43
+ * Checks if an endnote is a special/system type (separator, continuationSeparator,
44
+ * continuationNotice) that should be preserved across clear() operations.
45
+ * Uses type-based detection rather than ID-based, because continuationNotice
46
+ * has a positive ID (typically 1) but is still a system endnote.
47
+ */
48
+ private isSpecialEndnote(endnote: Endnote): boolean {
49
+ const type = endnote.getType();
50
+ return type === EndnoteType.Separator ||
51
+ type === EndnoteType.ContinuationSeparator ||
52
+ type === EndnoteType.ContinuationNotice;
53
+ }
54
+
55
+ /**
56
+ * Creates a new EndnoteManager instance
57
+ */
58
+ static create(): EndnoteManager {
59
+ return new EndnoteManager();
60
+ }
61
+
62
+ /**
63
+ * Registers an endnote
64
+ * @param endnote Endnote to register
65
+ * @returns The registered endnote
66
+ */
67
+ register(endnote: Endnote): Endnote {
68
+ const id = endnote.getId();
69
+
70
+ // Ensure ID is not already used (except for special endnotes)
71
+ if (id > 0 && this.endnotes.has(id)) {
72
+ throw new Error(`Endnote with ID ${id} already exists`);
73
+ }
74
+
75
+ this.endnotes.set(id, endnote);
76
+
77
+ // Update next ID if needed
78
+ if (id >= this.nextId) {
79
+ this.nextId = id + 1;
80
+ }
81
+
82
+ return endnote;
83
+ }
84
+
85
+ /**
86
+ * Creates and registers a new endnote
87
+ * @param text Endnote text
88
+ * @returns The created endnote
89
+ */
90
+ createEndnote(text: string): Endnote {
91
+ const endnote = Endnote.fromText(this.nextId++, text);
92
+ this.endnotes.set(endnote.getId(), endnote);
93
+ return endnote;
94
+ }
95
+
96
+ /**
97
+ * Gets an endnote by ID
98
+ * @param id Endnote ID
99
+ * @returns The endnote, or undefined if not found
100
+ */
101
+ getEndnote(id: number): Endnote | undefined {
102
+ return this.endnotes.get(id);
103
+ }
104
+
105
+ /**
106
+ * Gets all user endnotes (excluding special system types: separator,
107
+ * continuationSeparator, continuationNotice)
108
+ */
109
+ getAllEndnotes(): Endnote[] {
110
+ return Array.from(this.endnotes.values())
111
+ .filter(e => !this.isSpecialEndnote(e))
112
+ .sort((a, b) => a.getId() - b.getId());
113
+ }
114
+
115
+ /**
116
+ * Gets all endnotes including special ones
117
+ */
118
+ getAllEndnotesWithSpecial(): Endnote[] {
119
+ return Array.from(this.endnotes.values())
120
+ .sort((a, b) => a.getId() - b.getId());
121
+ }
122
+
123
+ /**
124
+ * Checks if an endnote exists
125
+ * @param id Endnote ID
126
+ */
127
+ hasEndnote(id: number): boolean {
128
+ return this.endnotes.has(id);
129
+ }
130
+
131
+ /**
132
+ * Removes an endnote
133
+ * @param id Endnote ID
134
+ * @returns True if removed, false if not found or if it's a special type
135
+ */
136
+ removeEndnote(id: number): boolean {
137
+ const endnote = this.endnotes.get(id);
138
+ if (!endnote || this.isSpecialEndnote(endnote)) {
139
+ return false;
140
+ }
141
+ return this.endnotes.delete(id);
142
+ }
143
+
144
+ /**
145
+ * Gets the next available ID
146
+ */
147
+ getNextId(): number {
148
+ return this.nextId;
149
+ }
150
+
151
+ /**
152
+ * Gets the count of endnotes (excluding special ones)
153
+ */
154
+ getCount(): number {
155
+ return this.getAllEndnotes().length;
156
+ }
157
+
158
+ /**
159
+ * Checks if there are any endnotes (excluding special ones)
160
+ */
161
+ isEmpty(): boolean {
162
+ return this.getCount() === 0;
163
+ }
164
+
165
+ /**
166
+ * Clears all user endnotes (preserves special system types: separator,
167
+ * continuationSeparator, continuationNotice)
168
+ */
169
+ clear(): void {
170
+ const specialEndnotes = new Map<number, Endnote>();
171
+ let maxSpecialId = 0;
172
+
173
+ for (const [id, endnote] of this.endnotes) {
174
+ if (this.isSpecialEndnote(endnote)) {
175
+ specialEndnotes.set(id, endnote);
176
+ if (id > maxSpecialId) {
177
+ maxSpecialId = id;
178
+ }
179
+ }
180
+ }
181
+
182
+ this.endnotes = specialEndnotes;
183
+ // Ensure nextId doesn't collide with special endnotes that have positive IDs
184
+ this.nextId = Math.max(maxSpecialId + 1, 1);
185
+ }
186
+
187
+ /**
188
+ * Gets statistics about endnotes
189
+ */
190
+ getStats(): {
191
+ total: number;
192
+ nextId: number;
193
+ } {
194
+ return {
195
+ total: this.getCount(),
196
+ nextId: this.nextId,
197
+ };
198
+ }
199
+
200
+ /**
201
+ * Generates the endnotes.xml content
202
+ */
203
+ generateEndnotesXml(): string {
204
+ const endnotes = this.getAllEndnotesWithSpecial();
205
+
206
+ // Build endnotes element
207
+ const endnotesElement: XMLElement = {
208
+ name: 'w:endnotes',
209
+ attributes: {
210
+ 'xmlns:w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',
211
+ 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'
212
+ },
213
+ children: endnotes.map(e => e.toXML())
214
+ };
215
+
216
+ // Build XML using XMLBuilder
217
+ const builder = new XMLBuilder();
218
+ builder.element(
219
+ endnotesElement.name,
220
+ endnotesElement.attributes,
221
+ endnotesElement.children
222
+ );
223
+ return builder.build(true);
224
+ }
225
+
226
+ /**
227
+ * Validates endnotes XML
228
+ * @param xml XML string to validate
229
+ * @returns True if valid
230
+ */
231
+ static validate(xml: string): boolean {
232
+ // Use XMLParser to extract root element
233
+ if (!xml) {
234
+ return false;
235
+ }
236
+
237
+ const endnotesContent = XMLParser.extractBetweenTags(xml, '<w:endnotes', '</w:endnotes>');
238
+ if (!endnotesContent) {
239
+ return false;
240
+ }
241
+
242
+ // Check for proper structure - namespace declaration
243
+ if (!xml.includes('xmlns:w=')) {
244
+ return false;
245
+ }
246
+
247
+ return true;
248
+ }
249
+ }