@usejunior/docx-core 0.9.1 → 0.11.0

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 (335) hide show
  1. package/LICENSE +202 -21
  2. package/NOTICE +2 -0
  3. package/README.md +2 -2
  4. package/dist/.tsbuildinfo +1 -1
  5. package/dist/atomizer.d.ts +28 -8
  6. package/dist/atomizer.d.ts.map +1 -1
  7. package/dist/atomizer.js +96 -25
  8. package/dist/atomizer.js.map +1 -1
  9. package/dist/baselines/atomizer/auxiliaryIdCollision.d.ts +99 -0
  10. package/dist/baselines/atomizer/auxiliaryIdCollision.d.ts.map +1 -0
  11. package/dist/baselines/atomizer/auxiliaryIdCollision.js +415 -0
  12. package/dist/baselines/atomizer/auxiliaryIdCollision.js.map +1 -0
  13. package/dist/baselines/atomizer/documentReconstructor.d.ts.map +1 -1
  14. package/dist/baselines/atomizer/documentReconstructor.js +333 -112
  15. package/dist/baselines/atomizer/documentReconstructor.js.map +1 -1
  16. package/dist/baselines/atomizer/formattingFidelity.d.ts +99 -0
  17. package/dist/baselines/atomizer/formattingFidelity.d.ts.map +1 -0
  18. package/dist/baselines/atomizer/formattingFidelity.js +449 -0
  19. package/dist/baselines/atomizer/formattingFidelity.js.map +1 -0
  20. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.d.ts +37 -0
  21. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.d.ts.map +1 -0
  22. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.js +189 -0
  23. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.js.map +1 -0
  24. package/dist/baselines/atomizer/inPlaceModifier-containers.d.ts +74 -0
  25. package/dist/baselines/atomizer/inPlaceModifier-containers.d.ts.map +1 -0
  26. package/dist/baselines/atomizer/inPlaceModifier-containers.js +171 -0
  27. package/dist/baselines/atomizer/inPlaceModifier-containers.js.map +1 -0
  28. package/dist/baselines/atomizer/inPlaceModifier-deletion.d.ts +88 -0
  29. package/dist/baselines/atomizer/inPlaceModifier-deletion.d.ts.map +1 -0
  30. package/dist/baselines/atomizer/inPlaceModifier-deletion.js +326 -0
  31. package/dist/baselines/atomizer/inPlaceModifier-deletion.js.map +1 -0
  32. package/dist/baselines/atomizer/inPlaceModifier-postprocess.d.ts +85 -0
  33. package/dist/baselines/atomizer/inPlaceModifier-postprocess.d.ts.map +1 -0
  34. package/dist/baselines/atomizer/inPlaceModifier-postprocess.js +402 -0
  35. package/dist/baselines/atomizer/inPlaceModifier-postprocess.js.map +1 -0
  36. package/dist/baselines/atomizer/inPlaceModifier-presplit.d.ts +39 -0
  37. package/dist/baselines/atomizer/inPlaceModifier-presplit.d.ts.map +1 -0
  38. package/dist/baselines/atomizer/inPlaceModifier-presplit.js +265 -0
  39. package/dist/baselines/atomizer/inPlaceModifier-presplit.js.map +1 -0
  40. package/dist/baselines/atomizer/inPlaceModifier-shared.d.ts +62 -0
  41. package/dist/baselines/atomizer/inPlaceModifier-shared.d.ts.map +1 -0
  42. package/dist/baselines/atomizer/inPlaceModifier-shared.js +139 -0
  43. package/dist/baselines/atomizer/inPlaceModifier-shared.js.map +1 -0
  44. package/dist/baselines/atomizer/inPlaceModifier-wrappers.d.ts +198 -0
  45. package/dist/baselines/atomizer/inPlaceModifier-wrappers.d.ts.map +1 -0
  46. package/dist/baselines/atomizer/inPlaceModifier-wrappers.js +475 -0
  47. package/dist/baselines/atomizer/inPlaceModifier-wrappers.js.map +1 -0
  48. package/dist/baselines/atomizer/inPlaceModifier.d.ts +6 -290
  49. package/dist/baselines/atomizer/inPlaceModifier.d.ts.map +1 -1
  50. package/dist/baselines/atomizer/inPlaceModifier.js +23 -1828
  51. package/dist/baselines/atomizer/inPlaceModifier.js.map +1 -1
  52. package/dist/baselines/atomizer/pipeline.d.ts +36 -2
  53. package/dist/baselines/atomizer/pipeline.d.ts.map +1 -1
  54. package/dist/baselines/atomizer/pipeline.js +216 -144
  55. package/dist/baselines/atomizer/pipeline.js.map +1 -1
  56. package/dist/baselines/atomizer/trackChangesAcceptorAst.d.ts.map +1 -1
  57. package/dist/baselines/atomizer/trackChangesAcceptorAst.js +199 -173
  58. package/dist/baselines/atomizer/trackChangesAcceptorAst.js.map +1 -1
  59. package/dist/baselines/wmlcomparer/DotnetCli.d.ts.map +1 -1
  60. package/dist/baselines/wmlcomparer/DotnetCli.js +7 -0
  61. package/dist/baselines/wmlcomparer/DotnetCli.js.map +1 -1
  62. package/dist/cli/compare-two.d.ts.map +1 -1
  63. package/dist/cli/compare-two.js +3 -1
  64. package/dist/cli/compare-two.js.map +1 -1
  65. package/dist/cli/conformance-adapter.d.ts +3 -0
  66. package/dist/cli/conformance-adapter.d.ts.map +1 -0
  67. package/dist/cli/conformance-adapter.js +93 -0
  68. package/dist/cli/conformance-adapter.js.map +1 -0
  69. package/dist/cli/index.d.ts.map +1 -1
  70. package/dist/cli/index.js +5 -1
  71. package/dist/cli/index.js.map +1 -1
  72. package/dist/compare-types.d.ts +197 -0
  73. package/dist/compare-types.d.ts.map +1 -0
  74. package/dist/compare-types.js +2 -0
  75. package/dist/compare-types.js.map +1 -0
  76. package/dist/core-types.d.ts +5 -1
  77. package/dist/core-types.d.ts.map +1 -1
  78. package/dist/core-types.js +5 -1
  79. package/dist/core-types.js.map +1 -1
  80. package/dist/footnotes.d.ts +8 -3
  81. package/dist/footnotes.d.ts.map +1 -1
  82. package/dist/footnotes.js +8 -3
  83. package/dist/footnotes.js.map +1 -1
  84. package/dist/generation/compile.d.ts +21 -0
  85. package/dist/generation/compile.d.ts.map +1 -0
  86. package/dist/generation/compile.js +46 -0
  87. package/dist/generation/compile.js.map +1 -0
  88. package/dist/generation/context.d.ts +42 -0
  89. package/dist/generation/context.d.ts.map +1 -0
  90. package/dist/generation/context.js +65 -0
  91. package/dist/generation/context.js.map +1 -0
  92. package/dist/generation/emit/comments-part.d.ts +36 -0
  93. package/dist/generation/emit/comments-part.d.ts.map +1 -0
  94. package/dist/generation/emit/comments-part.js +116 -0
  95. package/dist/generation/emit/comments-part.js.map +1 -0
  96. package/dist/generation/emit/document-part.d.ts +24 -0
  97. package/dist/generation/emit/document-part.d.ts.map +1 -0
  98. package/dist/generation/emit/document-part.js +60 -0
  99. package/dist/generation/emit/document-part.js.map +1 -0
  100. package/dist/generation/emit/emit-context.d.ts +26 -0
  101. package/dist/generation/emit/emit-context.d.ts.map +1 -0
  102. package/dist/generation/emit/emit-context.js +19 -0
  103. package/dist/generation/emit/emit-context.js.map +1 -0
  104. package/dist/generation/emit/header-footer-part.d.ts +23 -0
  105. package/dist/generation/emit/header-footer-part.d.ts.map +1 -0
  106. package/dist/generation/emit/header-footer-part.js +57 -0
  107. package/dist/generation/emit/header-footer-part.js.map +1 -0
  108. package/dist/generation/emit/numbering-part.d.ts +29 -0
  109. package/dist/generation/emit/numbering-part.d.ts.map +1 -0
  110. package/dist/generation/emit/numbering-part.js +100 -0
  111. package/dist/generation/emit/numbering-part.js.map +1 -0
  112. package/dist/generation/emit/package-parts.d.ts +24 -0
  113. package/dist/generation/emit/package-parts.d.ts.map +1 -0
  114. package/dist/generation/emit/package-parts.js +121 -0
  115. package/dist/generation/emit/package-parts.js.map +1 -0
  116. package/dist/generation/emit/paragraph.d.ts +24 -0
  117. package/dist/generation/emit/paragraph.d.ts.map +1 -0
  118. package/dist/generation/emit/paragraph.js +63 -0
  119. package/dist/generation/emit/paragraph.js.map +1 -0
  120. package/dist/generation/emit/properties.d.ts +34 -0
  121. package/dist/generation/emit/properties.d.ts.map +1 -0
  122. package/dist/generation/emit/properties.js +138 -0
  123. package/dist/generation/emit/properties.js.map +1 -0
  124. package/dist/generation/emit/run.d.ts +15 -0
  125. package/dist/generation/emit/run.d.ts.map +1 -0
  126. package/dist/generation/emit/run.js +71 -0
  127. package/dist/generation/emit/run.js.map +1 -0
  128. package/dist/generation/emit/section.d.ts +29 -0
  129. package/dist/generation/emit/section.d.ts.map +1 -0
  130. package/dist/generation/emit/section.js +117 -0
  131. package/dist/generation/emit/section.js.map +1 -0
  132. package/dist/generation/emit/settings-part.d.ts +13 -0
  133. package/dist/generation/emit/settings-part.d.ts.map +1 -0
  134. package/dist/generation/emit/settings-part.js +24 -0
  135. package/dist/generation/emit/settings-part.js.map +1 -0
  136. package/dist/generation/emit/styles-part.d.ts +16 -0
  137. package/dist/generation/emit/styles-part.d.ts.map +1 -0
  138. package/dist/generation/emit/styles-part.js +80 -0
  139. package/dist/generation/emit/styles-part.js.map +1 -0
  140. package/dist/generation/emit/table.d.ts +26 -0
  141. package/dist/generation/emit/table.d.ts.map +1 -0
  142. package/dist/generation/emit/table.js +196 -0
  143. package/dist/generation/emit/table.js.map +1 -0
  144. package/dist/generation/errors.d.ts +22 -0
  145. package/dist/generation/errors.d.ts.map +1 -0
  146. package/dist/generation/errors.js +29 -0
  147. package/dist/generation/errors.js.map +1 -0
  148. package/dist/generation/index.d.ts +13 -0
  149. package/dist/generation/index.d.ts.map +1 -0
  150. package/dist/generation/index.js +12 -0
  151. package/dist/generation/index.js.map +1 -0
  152. package/dist/generation/ordering.d.ts +46 -0
  153. package/dist/generation/ordering.d.ts.map +1 -0
  154. package/dist/generation/ordering.js +119 -0
  155. package/dist/generation/ordering.js.map +1 -0
  156. package/dist/generation/recipes.d.ts +47 -0
  157. package/dist/generation/recipes.d.ts.map +1 -0
  158. package/dist/generation/recipes.js +84 -0
  159. package/dist/generation/recipes.js.map +1 -0
  160. package/dist/generation/structural-checks.d.ts +24 -0
  161. package/dist/generation/structural-checks.d.ts.map +1 -0
  162. package/dist/generation/structural-checks.js +318 -0
  163. package/dist/generation/structural-checks.js.map +1 -0
  164. package/dist/generation/types.d.ts +217 -0
  165. package/dist/generation/types.d.ts.map +1 -0
  166. package/dist/generation/types.js +16 -0
  167. package/dist/generation/types.js.map +1 -0
  168. package/dist/generation/validate-spec.d.ts +27 -0
  169. package/dist/generation/validate-spec.d.ts.map +1 -0
  170. package/dist/generation/validate-spec.js +307 -0
  171. package/dist/generation/validate-spec.js.map +1 -0
  172. package/dist/index.d.ts +9 -150
  173. package/dist/index.d.ts.map +1 -1
  174. package/dist/index.js +14 -0
  175. package/dist/index.js.map +1 -1
  176. package/dist/integration/generation-probes.d.ts +15 -0
  177. package/dist/integration/generation-probes.d.ts.map +1 -0
  178. package/dist/integration/generation-probes.js +84 -0
  179. package/dist/integration/generation-probes.js.map +1 -0
  180. package/dist/integration/libreoffice-oracle.d.ts +49 -0
  181. package/dist/integration/libreoffice-oracle.d.ts.map +1 -0
  182. package/dist/integration/libreoffice-oracle.js +290 -0
  183. package/dist/integration/libreoffice-oracle.js.map +1 -0
  184. package/dist/integration/synthetic-docx-fixture.d.ts +72 -0
  185. package/dist/integration/synthetic-docx-fixture.d.ts.map +1 -1
  186. package/dist/integration/synthetic-docx-fixture.js +131 -4
  187. package/dist/integration/synthetic-docx-fixture.js.map +1 -1
  188. package/dist/primitives/accept_changes.d.ts +4 -3
  189. package/dist/primitives/accept_changes.d.ts.map +1 -1
  190. package/dist/primitives/accept_changes.js +163 -77
  191. package/dist/primitives/accept_changes.js.map +1 -1
  192. package/dist/primitives/comments.d.ts +12 -3
  193. package/dist/primitives/comments.d.ts.map +1 -1
  194. package/dist/primitives/comments.js +374 -97
  195. package/dist/primitives/comments.js.map +1 -1
  196. package/dist/primitives/content_fingerprint.d.ts +29 -0
  197. package/dist/primitives/content_fingerprint.d.ts.map +1 -0
  198. package/dist/primitives/content_fingerprint.js +63 -0
  199. package/dist/primitives/content_fingerprint.js.map +1 -0
  200. package/dist/primitives/document.d.ts +94 -15
  201. package/dist/primitives/document.d.ts.map +1 -1
  202. package/dist/primitives/document.js +373 -36
  203. package/dist/primitives/document.js.map +1 -1
  204. package/dist/primitives/document_view-comments.d.ts +18 -0
  205. package/dist/primitives/document_view-comments.d.ts.map +1 -0
  206. package/dist/primitives/document_view-comments.js +160 -0
  207. package/dist/primitives/document_view-comments.js.map +1 -0
  208. package/dist/primitives/document_view-headings.d.ts +45 -0
  209. package/dist/primitives/document_view-headings.d.ts.map +1 -0
  210. package/dist/primitives/document_view-headings.js +247 -0
  211. package/dist/primitives/document_view-headings.js.map +1 -0
  212. package/dist/primitives/document_view-styles.d.ts +11 -0
  213. package/dist/primitives/document_view-styles.d.ts.map +1 -0
  214. package/dist/primitives/document_view-styles.js +104 -0
  215. package/dist/primitives/document_view-styles.js.map +1 -0
  216. package/dist/primitives/document_view-toon.d.ts +37 -0
  217. package/dist/primitives/document_view-toon.d.ts.map +1 -0
  218. package/dist/primitives/document_view-toon.js +199 -0
  219. package/dist/primitives/document_view-toon.js.map +1 -0
  220. package/dist/primitives/document_view-types.d.ts +152 -0
  221. package/dist/primitives/document_view-types.d.ts.map +1 -0
  222. package/dist/primitives/document_view-types.js +2 -0
  223. package/dist/primitives/document_view-types.js.map +1 -0
  224. package/dist/primitives/document_view.d.ts +8 -106
  225. package/dist/primitives/document_view.d.ts.map +1 -1
  226. package/dist/primitives/document_view.js +153 -312
  227. package/dist/primitives/document_view.js.map +1 -1
  228. package/dist/primitives/dom-helpers.d.ts +9 -0
  229. package/dist/primitives/dom-helpers.d.ts.map +1 -1
  230. package/dist/primitives/dom-helpers.js +10 -1
  231. package/dist/primitives/dom-helpers.js.map +1 -1
  232. package/dist/primitives/footnotes.d.ts +4 -3
  233. package/dist/primitives/footnotes.d.ts.map +1 -1
  234. package/dist/primitives/footnotes.js +232 -44
  235. package/dist/primitives/footnotes.js.map +1 -1
  236. package/dist/primitives/formatting_tags.d.ts +7 -0
  237. package/dist/primitives/formatting_tags.d.ts.map +1 -1
  238. package/dist/primitives/formatting_tags.js +22 -11
  239. package/dist/primitives/formatting_tags.js.map +1 -1
  240. package/dist/primitives/index.d.ts +10 -0
  241. package/dist/primitives/index.d.ts.map +1 -1
  242. package/dist/primitives/index.js +9 -0
  243. package/dist/primitives/index.js.map +1 -1
  244. package/dist/primitives/layout.d.ts +4 -3
  245. package/dist/primitives/layout.d.ts.map +1 -1
  246. package/dist/primitives/layout.js +45 -3
  247. package/dist/primitives/layout.js.map +1 -1
  248. package/dist/primitives/merge_runs.d.ts +21 -3
  249. package/dist/primitives/merge_runs.d.ts.map +1 -1
  250. package/dist/primitives/merge_runs.js +32 -10
  251. package/dist/primitives/merge_runs.js.map +1 -1
  252. package/dist/primitives/minimal_save.d.ts +38 -0
  253. package/dist/primitives/minimal_save.d.ts.map +1 -0
  254. package/dist/primitives/minimal_save.js +323 -0
  255. package/dist/primitives/minimal_save.js.map +1 -0
  256. package/dist/primitives/namespaces.d.ts +47 -0
  257. package/dist/primitives/namespaces.d.ts.map +1 -1
  258. package/dist/primitives/namespaces.js +52 -0
  259. package/dist/primitives/namespaces.js.map +1 -1
  260. package/dist/primitives/reject_changes.d.ts +6 -4
  261. package/dist/primitives/reject_changes.d.ts.map +1 -1
  262. package/dist/primitives/reject_changes.js +187 -91
  263. package/dist/primitives/reject_changes.js.map +1 -1
  264. package/dist/primitives/revision-parts.d.ts +7 -0
  265. package/dist/primitives/revision-parts.d.ts.map +1 -0
  266. package/dist/primitives/revision-parts.js +27 -0
  267. package/dist/primitives/revision-parts.js.map +1 -0
  268. package/dist/primitives/revision-vocabulary.d.ts +7 -0
  269. package/dist/primitives/revision-vocabulary.d.ts.map +1 -0
  270. package/dist/primitives/revision-vocabulary.js +39 -0
  271. package/dist/primitives/revision-vocabulary.js.map +1 -0
  272. package/dist/primitives/schema-corpus-capture.d.ts +19 -0
  273. package/dist/primitives/schema-corpus-capture.d.ts.map +1 -0
  274. package/dist/primitives/schema-corpus-capture.js +29 -0
  275. package/dist/primitives/schema-corpus-capture.js.map +1 -0
  276. package/dist/primitives/sectPrAudit.d.ts +19 -0
  277. package/dist/primitives/sectPrAudit.d.ts.map +1 -0
  278. package/dist/primitives/sectPrAudit.js +165 -0
  279. package/dist/primitives/sectPrAudit.js.map +1 -0
  280. package/dist/primitives/semantic_tags.d.ts +7 -0
  281. package/dist/primitives/semantic_tags.d.ts.map +1 -1
  282. package/dist/primitives/semantic_tags.js +23 -4
  283. package/dist/primitives/semantic_tags.js.map +1 -1
  284. package/dist/primitives/serialize_html.d.ts +37 -0
  285. package/dist/primitives/serialize_html.d.ts.map +1 -0
  286. package/dist/primitives/serialize_html.js +395 -0
  287. package/dist/primitives/serialize_html.js.map +1 -0
  288. package/dist/primitives/serialize_markdown.d.ts +16 -0
  289. package/dist/primitives/serialize_markdown.d.ts.map +1 -0
  290. package/dist/primitives/serialize_markdown.js +300 -0
  291. package/dist/primitives/serialize_markdown.js.map +1 -0
  292. package/dist/primitives/serialize_plaintext.d.ts +15 -0
  293. package/dist/primitives/serialize_plaintext.d.ts.map +1 -0
  294. package/dist/primitives/serialize_plaintext.js +154 -0
  295. package/dist/primitives/serialize_plaintext.js.map +1 -0
  296. package/dist/primitives/styles.d.ts +15 -0
  297. package/dist/primitives/styles.d.ts.map +1 -1
  298. package/dist/primitives/styles.js +33 -22
  299. package/dist/primitives/styles.js.map +1 -1
  300. package/dist/primitives/tables.d.ts.map +1 -1
  301. package/dist/primitives/tables.js +13 -3
  302. package/dist/primitives/tables.js.map +1 -1
  303. package/dist/primitives/text.d.ts +2 -1
  304. package/dist/primitives/text.d.ts.map +1 -1
  305. package/dist/primitives/text.js +116 -12
  306. package/dist/primitives/text.js.map +1 -1
  307. package/dist/primitives/track-changes-emitter.d.ts +148 -0
  308. package/dist/primitives/track-changes-emitter.d.ts.map +1 -0
  309. package/dist/primitives/track-changes-emitter.js +291 -0
  310. package/dist/primitives/track-changes-emitter.js.map +1 -0
  311. package/dist/primitives/validate_ai_revisions.d.ts +35 -0
  312. package/dist/primitives/validate_ai_revisions.d.ts.map +1 -0
  313. package/dist/primitives/validate_ai_revisions.js +323 -0
  314. package/dist/primitives/validate_ai_revisions.js.map +1 -0
  315. package/dist/primitives/xml-helpers.d.ts +29 -0
  316. package/dist/primitives/xml-helpers.d.ts.map +1 -0
  317. package/dist/primitives/xml-helpers.js +35 -0
  318. package/dist/primitives/xml-helpers.js.map +1 -0
  319. package/dist/primitives/xml.d.ts +5 -0
  320. package/dist/primitives/xml.d.ts.map +1 -1
  321. package/dist/primitives/xml.js +5 -0
  322. package/dist/primitives/xml.js.map +1 -1
  323. package/dist/primitives/zip.d.ts +1 -0
  324. package/dist/primitives/zip.d.ts.map +1 -1
  325. package/dist/primitives/zip.js +21 -3
  326. package/dist/primitives/zip.js.map +1 -1
  327. package/dist/shared/field-structure.d.ts +14 -0
  328. package/dist/shared/field-structure.d.ts.map +1 -0
  329. package/dist/shared/field-structure.js +166 -0
  330. package/dist/shared/field-structure.js.map +1 -0
  331. package/dist/shared/ooxml/namespaces.d.ts +4 -1
  332. package/dist/shared/ooxml/namespaces.d.ts.map +1 -1
  333. package/dist/shared/ooxml/namespaces.js +4 -1
  334. package/dist/shared/ooxml/namespaces.js.map +1 -1
  335. package/package.json +13 -9
@@ -0,0 +1,148 @@
1
+ /**
2
+ * State for allocating monotonically increasing revision IDs.
3
+ *
4
+ * `moveRangeIds` exists so comparison-time emitters can reserve paired source
5
+ * and destination IDs for move ranges while sharing the same counter.
6
+ */
7
+ export interface RevisionIdState {
8
+ nextId: number;
9
+ moveRangeIds: Map<string, {
10
+ sourceRangeId: number;
11
+ destRangeId: number;
12
+ }>;
13
+ }
14
+ /**
15
+ * Create a revision ID allocator.
16
+ *
17
+ * @param startId - First ID to allocate. Defaults to `1`.
18
+ */
19
+ export declare function createRevisionIdState(startId?: number): RevisionIdState;
20
+ /**
21
+ * Allocate the next revision ID from a shared state object.
22
+ */
23
+ export declare function allocateRevisionId(state: RevisionIdState): number;
24
+ /**
25
+ * Serialized metadata shared by tracked-change emitters.
26
+ */
27
+ export interface RevisionContext {
28
+ author: string;
29
+ date: string;
30
+ idState: RevisionIdState;
31
+ }
32
+ /**
33
+ * Options for constructing a revision context.
34
+ */
35
+ export interface RevisionContextOptions {
36
+ author: string;
37
+ date?: Date | string;
38
+ idState?: RevisionIdState;
39
+ }
40
+ /**
41
+ * Format a revision timestamp as OOXML-friendly ISO 8601.
42
+ */
43
+ export declare function formatDate(date: Date): string;
44
+ /**
45
+ * Escape XML attribute text used in serialized revision markup.
46
+ */
47
+ export declare function escapeXmlAttr(text: string): string;
48
+ /**
49
+ * Create a reusable revision context for tracked-change emission.
50
+ */
51
+ export declare function createRevisionContext(options: RevisionContextOptions): RevisionContext;
52
+ /**
53
+ * Create a fresh tracked-change container (`<w:ins>` or `<w:del>`) into which
54
+ * the caller appends owned child nodes.
55
+ *
56
+ * Use this when wrapping multiple sibling elements under one revision marker.
57
+ * For single-element wrapping, prefer `wrapElementWithIns` / `wrapElementWithDel`.
58
+ */
59
+ export declare function createRevisionContainer(doc: Document, kind: 'ins' | 'del', ctx: RevisionContext): Element;
60
+ /**
61
+ * Rewrite `<w:t>` → `<w:delText>` and `<w:instrText>` → `<w:delInstrText>`
62
+ * on the given element and all its descendants, for use inside a `<w:del>`
63
+ * container.
64
+ *
65
+ * **CALLERS MUST USE THE RETURN VALUE.** When the input element itself is a
66
+ * root `<w:t>` or `<w:instrText>`, this helper creates a renamed replacement
67
+ * node (you cannot rename a DOM element in place); the input element is
68
+ * detached from the tree and the new node is returned. Pattern:
69
+ *
70
+ * const ready = prepareElementForDeletion(detachedElement);
71
+ * wrapper.appendChild(ready);
72
+ *
73
+ * The element MUST already be detached from any parent. Calling on an
74
+ * attached element will leave the original tree in an inconsistent state.
75
+ */
76
+ export declare function prepareElementForDeletion(element: Element): Element;
77
+ /**
78
+ * Wrap an xmldom element in `<w:ins>`.
79
+ *
80
+ * The source element is cloned; the original DOM node is left untouched.
81
+ */
82
+ export declare function wrapElementWithIns(element: Element, ctx: RevisionContext): Element;
83
+ /**
84
+ * Wrap an xmldom element in `<w:del>`.
85
+ *
86
+ * Any descendant `<w:t>` and `<w:instrText>` nodes are converted to the OOXML
87
+ * deletion equivalents before the cloned element is appended.
88
+ */
89
+ export declare function wrapElementWithDel(element: Element, ctx: RevisionContext): Element;
90
+ /**
91
+ * Build a `<w:pPrChange>` wrapper containing the previous paragraph properties.
92
+ *
93
+ * The nested snapshot excludes children that are not valid in `CT_PPrBase`.
94
+ */
95
+ export declare function buildPPrChangeElement(oldPPr: Element | null, ctx: RevisionContext): Element;
96
+ /**
97
+ * Build a `<w:trPrChange>` wrapper containing the previous row properties.
98
+ *
99
+ * The nested snapshot excludes children that are not valid in `CT_TrPrBase`.
100
+ */
101
+ export declare function buildTrPrChangeElement(oldTrPr: Element | null, ctx: RevisionContext): Element;
102
+ /**
103
+ * Build a `<w:tcPrChange>` wrapper containing the previous cell properties.
104
+ *
105
+ * The nested snapshot excludes children that are not valid in `CT_TcPrBase`.
106
+ */
107
+ export declare function buildTcPrChangeElement(oldTcPr: Element | null, ctx: RevisionContext): Element;
108
+ /**
109
+ * Build a `<w:rPrChange>` wrapper containing the previous run properties.
110
+ *
111
+ * The nested snapshot excludes any existing `w:rPrChange` child. This filtering
112
+ * is intentional: OOXML does not permit recursively nested `w:rPrChange` (a
113
+ * change-of-a-change is undefined), so the helper drops it. Note this is a
114
+ * stricter contract than the legacy reconstructor's per-child loop, which
115
+ * would have passed a nested `w:rPrChange` through verbatim. The reconstructor
116
+ * still uses its own per-child path; this helper is for new primitive code
117
+ * (#136 onward).
118
+ */
119
+ export declare function buildRPrChangeElement(oldRPr: Element | null, ctx: RevisionContext): Element;
120
+ /**
121
+ * Wrap serialized OOXML content in a `<w:ins>` element.
122
+ *
123
+ * This keeps the reconstructor on its string-based emission path while sharing
124
+ * revision metadata handling with the DOM-aware helpers above.
125
+ */
126
+ export declare function wrapSerializedContentWithIns(content: string, ctx: RevisionContext): string;
127
+ /**
128
+ * Wrap serialized OOXML content in a `<w:del>` element.
129
+ *
130
+ * Visible text nodes are rewritten to their deletion-tag equivalents before
131
+ * the wrapper is serialized.
132
+ */
133
+ export declare function wrapSerializedContentWithDel(content: string, ctx: RevisionContext): string;
134
+ /**
135
+ * Convert serialized run content from insertion-style text tags to deletion
136
+ * equivalents (`w:t` -> `w:delText`, `w:instrText` -> `w:delInstrText`).
137
+ *
138
+ * The fragment is parsed into a DOM and renamed via the same traversal as
139
+ * `prepareElementForDeletion`, so attribute order is preserved and shapes a
140
+ * regex sweep mishandles (self-closing `<w:t/>`, attribute values containing
141
+ * `>`) convert correctly. Namespace prefixes the fragment uses without an
142
+ * inline declaration are bound on a temporary wrapper root that is stripped
143
+ * from the returned serialization.
144
+ *
145
+ * @see https://github.com/UseJunior/safe-docx/issues/102
146
+ */
147
+ export declare function convertSerializedDeletionContent(content: string): string;
148
+ //# sourceMappingURL=track-changes-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track-changes-emitter.d.ts","sourceRoot":"","sources":["../../src/primitives/track-changes-emitter.ts"],"names":[],"mappings":"AAiBA;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,MAAU,GAAG,eAAe,CAK1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAOtF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,KAAK,GAAG,KAAK,EACnB,GAAG,EAAE,eAAe,GACnB,OAAO,CAET;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAIlF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAKlF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAkB3F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAkB7F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAkB7F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAkB3F;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,MAAM,CAE1F;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,MAAM,CAE1F;AASD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAcxE"}
@@ -0,0 +1,291 @@
1
+ import { parseXml, serializeXml } from './xml.js';
2
+ import { childElements, createWmlElement, renameElement } from './dom-helpers.js';
3
+ import { OOXML } from './namespaces.js';
4
+ const SYNTHETIC_DOC = parseXml('<root xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"/>');
5
+ const EXCLUDED_PPR_CHANGE_CHILDREN = new Set(['w:rPr', 'w:rPrChange', 'w:pPrChange', 'w:sectPr']);
6
+ const EXCLUDED_TRPR_CHANGE_CHILDREN = new Set(['w:trPrChange', 'w:ins', 'w:del']);
7
+ // CT_TcPrInner (the inner pPr under <w:tcPrChange>) preserves cell-topology
8
+ // revision children (w:cellIns, w:cellDel, w:cellMerge). Only the
9
+ // change-of-a-change marker w:tcPrChange itself is excluded. See:
10
+ // https://learn.microsoft.com/en-us/dotnet/api/documentformat.openxml.wordprocessing.previoustablecellproperties
11
+ const EXCLUDED_TCPR_CHANGE_CHILDREN = new Set(['w:tcPrChange']);
12
+ const EXCLUDED_RPR_CHANGE_CHILDREN = new Set(['w:rPrChange']);
13
+ /**
14
+ * Create a revision ID allocator.
15
+ *
16
+ * @param startId - First ID to allocate. Defaults to `1`.
17
+ */
18
+ export function createRevisionIdState(startId = 1) {
19
+ return {
20
+ nextId: startId,
21
+ moveRangeIds: new Map(),
22
+ };
23
+ }
24
+ /**
25
+ * Allocate the next revision ID from a shared state object.
26
+ */
27
+ export function allocateRevisionId(state) {
28
+ return state.nextId++;
29
+ }
30
+ /**
31
+ * Format a revision timestamp as OOXML-friendly ISO 8601.
32
+ */
33
+ export function formatDate(date) {
34
+ return date.toISOString().replace(/\.\d{3}Z$/, 'Z');
35
+ }
36
+ /**
37
+ * Escape XML attribute text used in serialized revision markup.
38
+ */
39
+ export function escapeXmlAttr(text) {
40
+ return text
41
+ .replace(/&/g, '&amp;')
42
+ .replace(/</g, '&lt;')
43
+ .replace(/>/g, '&gt;')
44
+ .replace(/"/g, '&quot;');
45
+ }
46
+ /**
47
+ * Create a reusable revision context for tracked-change emission.
48
+ */
49
+ export function createRevisionContext(options) {
50
+ const { author, date, idState = createRevisionIdState() } = options;
51
+ return {
52
+ author,
53
+ date: typeof date === 'string' ? date : formatDate(date ?? new Date()),
54
+ idState,
55
+ };
56
+ }
57
+ /**
58
+ * Create a fresh tracked-change container (`<w:ins>` or `<w:del>`) into which
59
+ * the caller appends owned child nodes.
60
+ *
61
+ * Use this when wrapping multiple sibling elements under one revision marker.
62
+ * For single-element wrapping, prefer `wrapElementWithIns` / `wrapElementWithDel`.
63
+ */
64
+ export function createRevisionContainer(doc, kind, ctx) {
65
+ return createRevisionWrapperElement(doc, kind, ctx);
66
+ }
67
+ /**
68
+ * Rewrite `<w:t>` → `<w:delText>` and `<w:instrText>` → `<w:delInstrText>`
69
+ * on the given element and all its descendants, for use inside a `<w:del>`
70
+ * container.
71
+ *
72
+ * **CALLERS MUST USE THE RETURN VALUE.** When the input element itself is a
73
+ * root `<w:t>` or `<w:instrText>`, this helper creates a renamed replacement
74
+ * node (you cannot rename a DOM element in place); the input element is
75
+ * detached from the tree and the new node is returned. Pattern:
76
+ *
77
+ * const ready = prepareElementForDeletion(detachedElement);
78
+ * wrapper.appendChild(ready);
79
+ *
80
+ * The element MUST already be detached from any parent. Calling on an
81
+ * attached element will leave the original tree in an inconsistent state.
82
+ */
83
+ export function prepareElementForDeletion(element) {
84
+ return normalizeDeletionElement(element);
85
+ }
86
+ /**
87
+ * Wrap an xmldom element in `<w:ins>`.
88
+ *
89
+ * The source element is cloned; the original DOM node is left untouched.
90
+ */
91
+ export function wrapElementWithIns(element, ctx) {
92
+ const wrapper = createRevisionContainer(getOwnerDocument(element), 'ins', ctx);
93
+ wrapper.appendChild(element.cloneNode(true));
94
+ return wrapper;
95
+ }
96
+ /**
97
+ * Wrap an xmldom element in `<w:del>`.
98
+ *
99
+ * Any descendant `<w:t>` and `<w:instrText>` nodes are converted to the OOXML
100
+ * deletion equivalents before the cloned element is appended.
101
+ */
102
+ export function wrapElementWithDel(element, ctx) {
103
+ const wrapper = createRevisionContainer(getOwnerDocument(element), 'del', ctx);
104
+ const cloned = prepareElementForDeletion(element.cloneNode(true));
105
+ wrapper.appendChild(cloned);
106
+ return wrapper;
107
+ }
108
+ /**
109
+ * Build a `<w:pPrChange>` wrapper containing the previous paragraph properties.
110
+ *
111
+ * The nested snapshot excludes children that are not valid in `CT_PPrBase`.
112
+ */
113
+ export function buildPPrChangeElement(oldPPr, ctx) {
114
+ const pPrChange = createWmlElement(getOwnerDocument(oldPPr), 'pPrChange', revisionAttributes(ctx));
115
+ const previousPPr = createWmlElement(getOwnerDocument(oldPPr), 'pPr');
116
+ if (oldPPr) {
117
+ for (const child of childElements(oldPPr)) {
118
+ if (!EXCLUDED_PPR_CHANGE_CHILDREN.has(child.tagName)) {
119
+ previousPPr.appendChild(child.cloneNode(true));
120
+ }
121
+ }
122
+ }
123
+ pPrChange.appendChild(previousPPr);
124
+ return pPrChange;
125
+ }
126
+ /**
127
+ * Build a `<w:trPrChange>` wrapper containing the previous row properties.
128
+ *
129
+ * The nested snapshot excludes children that are not valid in `CT_TrPrBase`.
130
+ */
131
+ export function buildTrPrChangeElement(oldTrPr, ctx) {
132
+ const trPrChange = createWmlElement(getOwnerDocument(oldTrPr), 'trPrChange', revisionAttributes(ctx));
133
+ const previousTrPr = createWmlElement(getOwnerDocument(oldTrPr), 'trPr');
134
+ if (oldTrPr) {
135
+ for (const child of childElements(oldTrPr)) {
136
+ if (!EXCLUDED_TRPR_CHANGE_CHILDREN.has(child.tagName)) {
137
+ previousTrPr.appendChild(child.cloneNode(true));
138
+ }
139
+ }
140
+ }
141
+ trPrChange.appendChild(previousTrPr);
142
+ return trPrChange;
143
+ }
144
+ /**
145
+ * Build a `<w:tcPrChange>` wrapper containing the previous cell properties.
146
+ *
147
+ * The nested snapshot excludes children that are not valid in `CT_TcPrBase`.
148
+ */
149
+ export function buildTcPrChangeElement(oldTcPr, ctx) {
150
+ const tcPrChange = createWmlElement(getOwnerDocument(oldTcPr), 'tcPrChange', revisionAttributes(ctx));
151
+ const previousTcPr = createWmlElement(getOwnerDocument(oldTcPr), 'tcPr');
152
+ if (oldTcPr) {
153
+ for (const child of childElements(oldTcPr)) {
154
+ if (!EXCLUDED_TCPR_CHANGE_CHILDREN.has(child.tagName)) {
155
+ previousTcPr.appendChild(child.cloneNode(true));
156
+ }
157
+ }
158
+ }
159
+ tcPrChange.appendChild(previousTcPr);
160
+ return tcPrChange;
161
+ }
162
+ /**
163
+ * Build a `<w:rPrChange>` wrapper containing the previous run properties.
164
+ *
165
+ * The nested snapshot excludes any existing `w:rPrChange` child. This filtering
166
+ * is intentional: OOXML does not permit recursively nested `w:rPrChange` (a
167
+ * change-of-a-change is undefined), so the helper drops it. Note this is a
168
+ * stricter contract than the legacy reconstructor's per-child loop, which
169
+ * would have passed a nested `w:rPrChange` through verbatim. The reconstructor
170
+ * still uses its own per-child path; this helper is for new primitive code
171
+ * (#136 onward).
172
+ */
173
+ export function buildRPrChangeElement(oldRPr, ctx) {
174
+ const rPrChange = createWmlElement(getOwnerDocument(oldRPr), 'rPrChange', revisionAttributes(ctx));
175
+ const previousRPr = createWmlElement(getOwnerDocument(oldRPr), 'rPr');
176
+ if (oldRPr) {
177
+ for (const child of childElements(oldRPr)) {
178
+ if (!EXCLUDED_RPR_CHANGE_CHILDREN.has(child.tagName)) {
179
+ previousRPr.appendChild(child.cloneNode(true));
180
+ }
181
+ }
182
+ }
183
+ rPrChange.appendChild(previousRPr);
184
+ return rPrChange;
185
+ }
186
+ /**
187
+ * Wrap serialized OOXML content in a `<w:ins>` element.
188
+ *
189
+ * This keeps the reconstructor on its string-based emission path while sharing
190
+ * revision metadata handling with the DOM-aware helpers above.
191
+ */
192
+ export function wrapSerializedContentWithIns(content, ctx) {
193
+ return `${createSerializedRevisionOpenTag('w:ins', ctx)}${content}</w:ins>`;
194
+ }
195
+ /**
196
+ * Wrap serialized OOXML content in a `<w:del>` element.
197
+ *
198
+ * Visible text nodes are rewritten to their deletion-tag equivalents before
199
+ * the wrapper is serialized.
200
+ */
201
+ export function wrapSerializedContentWithDel(content, ctx) {
202
+ return `${createSerializedRevisionOpenTag('w:del', ctx)}${convertSerializedDeletionContent(content)}</w:del>`;
203
+ }
204
+ /**
205
+ * Matches a `<w:t>` or `<w:instrText>` open tag (including the self-closing
206
+ * form). Used as a fast path: content with no convertible tags is returned
207
+ * byte-for-byte unchanged, skipping the parse/serialize round-trip.
208
+ */
209
+ const CONVERTIBLE_TEXT_TAG = /<w:(?:t|instrText)[\s/>]/;
210
+ /**
211
+ * Convert serialized run content from insertion-style text tags to deletion
212
+ * equivalents (`w:t` -> `w:delText`, `w:instrText` -> `w:delInstrText`).
213
+ *
214
+ * The fragment is parsed into a DOM and renamed via the same traversal as
215
+ * `prepareElementForDeletion`, so attribute order is preserved and shapes a
216
+ * regex sweep mishandles (self-closing `<w:t/>`, attribute values containing
217
+ * `>`) convert correctly. Namespace prefixes the fragment uses without an
218
+ * inline declaration are bound on a temporary wrapper root that is stripped
219
+ * from the returned serialization.
220
+ *
221
+ * @see https://github.com/UseJunior/safe-docx/issues/102
222
+ */
223
+ export function convertSerializedDeletionContent(content) {
224
+ if (!CONVERTIBLE_TEXT_TAG.test(content)) {
225
+ return content;
226
+ }
227
+ const doc = parseXml(`<root${declareContentPrefixes(content)}>${content}</root>`);
228
+ for (const child of childElements(doc.documentElement)) {
229
+ normalizeDeletionElement(child);
230
+ }
231
+ // Strip the wrapper root: everything between the end of its open tag and
232
+ // the start of its close tag. Safe because the declared URIs contain no '>'.
233
+ const serialized = serializeXml(doc);
234
+ return serialized.slice(serialized.indexOf('>') + 1, serialized.lastIndexOf('<'));
235
+ }
236
+ /**
237
+ * Matches a `prefix:` occurrence in markup context — after `<`, `</`, or
238
+ * whitespace (attribute position). May over-match inside text content, which
239
+ * is harmless: it only yields an unused declaration on the wrapper root.
240
+ */
241
+ const PREFIX_SCAN = /[<\s]\/?([A-Za-z_][A-Za-z0-9_.-]*):/g;
242
+ /**
243
+ * Build `xmlns` declarations for every namespace prefix a serialized fragment
244
+ * uses, so the fragment parses under a wrapper root (xmldom rejects
245
+ * undeclared prefixes). `w` binds to the real WordprocessingML namespace —
246
+ * the deletion rename produces elements in that namespace — while unknown
247
+ * prefixes get placeholder URIs. The wrapper root carrying these declarations
248
+ * is stripped after serialization, so placeholders never reach the output;
249
+ * fragments serialized from a real document carry their own inline
250
+ * declarations, which take precedence over the wrapper's.
251
+ */
252
+ function declareContentPrefixes(content) {
253
+ const declarations = new Map([['w', OOXML.W_NS]]);
254
+ for (const match of content.matchAll(PREFIX_SCAN)) {
255
+ const prefix = match[1];
256
+ if (prefix !== 'xml' && prefix !== 'xmlns' && !declarations.has(prefix)) {
257
+ declarations.set(prefix, `urn:safe-docx:undeclared-prefix:${prefix}`);
258
+ }
259
+ }
260
+ return [...declarations].map(([prefix, uri]) => ` xmlns:${prefix}="${uri}"`).join('');
261
+ }
262
+ function getOwnerDocument(element) {
263
+ return element?.ownerDocument ?? SYNTHETIC_DOC;
264
+ }
265
+ function revisionAttributes(ctx) {
266
+ return {
267
+ 'w:id': String(allocateRevisionId(ctx.idState)),
268
+ 'w:author': ctx.author,
269
+ 'w:date': ctx.date,
270
+ };
271
+ }
272
+ function createRevisionWrapperElement(doc, tag, ctx) {
273
+ return createWmlElement(doc, tag, revisionAttributes(ctx));
274
+ }
275
+ function createSerializedRevisionOpenTag(tagName, ctx) {
276
+ const id = allocateRevisionId(ctx.idState);
277
+ return `<${tagName} w:id="${id}" w:author="${escapeXmlAttr(ctx.author)}" w:date="${ctx.date}">`;
278
+ }
279
+ function normalizeDeletionElement(element) {
280
+ for (const child of childElements(element)) {
281
+ normalizeDeletionElement(child);
282
+ }
283
+ if (element.tagName === 'w:t') {
284
+ return renameElement(element, 'w:delText');
285
+ }
286
+ if (element.tagName === 'w:instrText') {
287
+ return renameElement(element, 'w:delInstrText');
288
+ }
289
+ return element;
290
+ }
291
+ //# sourceMappingURL=track-changes-emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track-changes-emitter.js","sourceRoot":"","sources":["../../src/primitives/track-changes-emitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { DocxZip } from './zip.js';
2
+ export type AiRevisionSeverity = 'error' | 'warning';
3
+ export type AiRevisionDiagnostic = {
4
+ severity: AiRevisionSeverity;
5
+ code: string;
6
+ message: string;
7
+ part?: string;
8
+ element?: string;
9
+ id?: string;
10
+ author?: string | null;
11
+ };
12
+ export type ValidateAiRevisionsResult = {
13
+ valid: boolean;
14
+ errors: AiRevisionDiagnostic[];
15
+ warnings: AiRevisionDiagnostic[];
16
+ };
17
+ export type AiRevisionValidationTouchedContext = {
18
+ revisionIds?: Iterable<string | number>;
19
+ rangeIds?: Iterable<string | number>;
20
+ relationshipParts?: Iterable<string>;
21
+ sideParts?: Iterable<string>;
22
+ };
23
+ export type AiRevisionStoryInput = {
24
+ part: string;
25
+ doc: Document;
26
+ };
27
+ export type ValidateAiRevisionsOptions = {
28
+ aiAuthor: string;
29
+ stories: AiRevisionStoryInput[];
30
+ packageZip?: DocxZip;
31
+ touched?: AiRevisionValidationTouchedContext;
32
+ };
33
+ export declare function validateAiRevisions(options: ValidateAiRevisionsOptions): Promise<ValidateAiRevisionsResult>;
34
+ export declare const AI_REVISION_VALIDATION_STORY_PARTS: readonly ["word/footnotes.xml", "word/endnotes.xml", "word/comments.xml", "word/glossary/document.xml"];
35
+ //# sourceMappingURL=validate_ai_revisions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate_ai_revisions.d.ts","sourceRoot":"","sources":["../../src/primitives/validate_ai_revisions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAcnC,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,CAAC;AAErD,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACrC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,QAAQ,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,kCAAkC,CAAC;CAC9C,CAAC;AAoVF,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,yBAAyB,CAAC,CAgCpC;AAED,eAAO,MAAM,kCAAkC,yGAA4B,CAAC"}