@usejunior/docx-core 0.0.1 → 0.1.1

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 (252) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +86 -28
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/atomizer.d.ts +218 -0
  5. package/dist/atomizer.d.ts.map +1 -0
  6. package/dist/atomizer.js +856 -0
  7. package/dist/atomizer.js.map +1 -0
  8. package/dist/baselines/atomizer/atomLcs.d.ts +96 -0
  9. package/dist/baselines/atomizer/atomLcs.d.ts.map +1 -0
  10. package/dist/baselines/atomizer/atomLcs.js +347 -0
  11. package/dist/baselines/atomizer/atomLcs.js.map +1 -0
  12. package/dist/baselines/atomizer/debug.d.ts +41 -0
  13. package/dist/baselines/atomizer/debug.d.ts.map +1 -0
  14. package/dist/baselines/atomizer/debug.js +85 -0
  15. package/dist/baselines/atomizer/debug.js.map +1 -0
  16. package/dist/baselines/atomizer/documentReconstructor.d.ts +64 -0
  17. package/dist/baselines/atomizer/documentReconstructor.d.ts.map +1 -0
  18. package/dist/baselines/atomizer/documentReconstructor.js +939 -0
  19. package/dist/baselines/atomizer/documentReconstructor.js.map +1 -0
  20. package/dist/baselines/atomizer/hierarchicalLcs.d.ts +111 -0
  21. package/dist/baselines/atomizer/hierarchicalLcs.d.ts.map +1 -0
  22. package/dist/baselines/atomizer/hierarchicalLcs.js +469 -0
  23. package/dist/baselines/atomizer/hierarchicalLcs.js.map +1 -0
  24. package/dist/baselines/atomizer/inPlaceModifier.d.ts +183 -0
  25. package/dist/baselines/atomizer/inPlaceModifier.d.ts.map +1 -0
  26. package/dist/baselines/atomizer/inPlaceModifier.js +1600 -0
  27. package/dist/baselines/atomizer/inPlaceModifier.js.map +1 -0
  28. package/dist/baselines/atomizer/numberingIntegration.d.ts +59 -0
  29. package/dist/baselines/atomizer/numberingIntegration.d.ts.map +1 -0
  30. package/dist/baselines/atomizer/numberingIntegration.js +209 -0
  31. package/dist/baselines/atomizer/numberingIntegration.js.map +1 -0
  32. package/dist/baselines/atomizer/pipeline.d.ts +65 -0
  33. package/dist/baselines/atomizer/pipeline.d.ts.map +1 -0
  34. package/dist/baselines/atomizer/pipeline.js +510 -0
  35. package/dist/baselines/atomizer/pipeline.js.map +1 -0
  36. package/dist/baselines/atomizer/premergeRuns.d.ts +26 -0
  37. package/dist/baselines/atomizer/premergeRuns.d.ts.map +1 -0
  38. package/dist/baselines/atomizer/premergeRuns.js +150 -0
  39. package/dist/baselines/atomizer/premergeRuns.js.map +1 -0
  40. package/dist/baselines/atomizer/trackChangesAcceptor.d.ts +63 -0
  41. package/dist/baselines/atomizer/trackChangesAcceptor.d.ts.map +1 -0
  42. package/dist/baselines/atomizer/trackChangesAcceptor.js +254 -0
  43. package/dist/baselines/atomizer/trackChangesAcceptor.js.map +1 -0
  44. package/dist/baselines/atomizer/trackChangesAcceptorAst.d.ts +64 -0
  45. package/dist/baselines/atomizer/trackChangesAcceptorAst.d.ts.map +1 -0
  46. package/dist/baselines/atomizer/trackChangesAcceptorAst.js +586 -0
  47. package/dist/baselines/atomizer/trackChangesAcceptorAst.js.map +1 -0
  48. package/dist/baselines/atomizer/xmlToWmlElement.d.ts +65 -0
  49. package/dist/baselines/atomizer/xmlToWmlElement.d.ts.map +1 -0
  50. package/dist/baselines/atomizer/xmlToWmlElement.js +95 -0
  51. package/dist/baselines/atomizer/xmlToWmlElement.js.map +1 -0
  52. package/dist/baselines/diffmatch/documentBuilder.d.ts +44 -0
  53. package/dist/baselines/diffmatch/documentBuilder.d.ts.map +1 -0
  54. package/dist/baselines/diffmatch/documentBuilder.js +227 -0
  55. package/dist/baselines/diffmatch/documentBuilder.js.map +1 -0
  56. package/dist/baselines/diffmatch/paragraphAlignment.d.ts +75 -0
  57. package/dist/baselines/diffmatch/paragraphAlignment.d.ts.map +1 -0
  58. package/dist/baselines/diffmatch/paragraphAlignment.js +206 -0
  59. package/dist/baselines/diffmatch/paragraphAlignment.js.map +1 -0
  60. package/dist/baselines/diffmatch/pipeline.d.ts +33 -0
  61. package/dist/baselines/diffmatch/pipeline.d.ts.map +1 -0
  62. package/dist/baselines/diffmatch/pipeline.js +84 -0
  63. package/dist/baselines/diffmatch/pipeline.js.map +1 -0
  64. package/dist/baselines/diffmatch/runDiff.d.ts +53 -0
  65. package/dist/baselines/diffmatch/runDiff.d.ts.map +1 -0
  66. package/dist/baselines/diffmatch/runDiff.js +253 -0
  67. package/dist/baselines/diffmatch/runDiff.js.map +1 -0
  68. package/dist/baselines/diffmatch/trackChangesRenderer.d.ts +64 -0
  69. package/dist/baselines/diffmatch/trackChangesRenderer.d.ts.map +1 -0
  70. package/dist/baselines/diffmatch/trackChangesRenderer.js +178 -0
  71. package/dist/baselines/diffmatch/trackChangesRenderer.js.map +1 -0
  72. package/dist/baselines/diffmatch/xmlParser.d.ts +45 -0
  73. package/dist/baselines/diffmatch/xmlParser.d.ts.map +1 -0
  74. package/dist/baselines/diffmatch/xmlParser.js +344 -0
  75. package/dist/baselines/diffmatch/xmlParser.js.map +1 -0
  76. package/dist/baselines/wmlcomparer/DocxodusWasm.d.ts +51 -0
  77. package/dist/baselines/wmlcomparer/DocxodusWasm.d.ts.map +1 -0
  78. package/dist/baselines/wmlcomparer/DocxodusWasm.js +83 -0
  79. package/dist/baselines/wmlcomparer/DocxodusWasm.js.map +1 -0
  80. package/dist/baselines/wmlcomparer/DotnetCli.d.ts +40 -0
  81. package/dist/baselines/wmlcomparer/DotnetCli.d.ts.map +1 -0
  82. package/dist/baselines/wmlcomparer/DotnetCli.js +135 -0
  83. package/dist/baselines/wmlcomparer/DotnetCli.js.map +1 -0
  84. package/dist/benchmark/metrics.d.ts +72 -0
  85. package/dist/benchmark/metrics.d.ts.map +1 -0
  86. package/dist/benchmark/metrics.js +45 -0
  87. package/dist/benchmark/metrics.js.map +1 -0
  88. package/dist/benchmark/reporter.d.ts +23 -0
  89. package/dist/benchmark/reporter.d.ts.map +1 -0
  90. package/dist/benchmark/reporter.js +147 -0
  91. package/dist/benchmark/reporter.js.map +1 -0
  92. package/dist/benchmark/runner.d.ts +30 -0
  93. package/dist/benchmark/runner.d.ts.map +1 -0
  94. package/dist/benchmark/runner.js +233 -0
  95. package/dist/benchmark/runner.js.map +1 -0
  96. package/dist/cli/compare-two.d.ts +28 -0
  97. package/dist/cli/compare-two.d.ts.map +1 -0
  98. package/dist/cli/compare-two.js +110 -0
  99. package/dist/cli/compare-two.js.map +1 -0
  100. package/dist/cli/index.d.ts +3 -0
  101. package/dist/cli/index.d.ts.map +1 -0
  102. package/dist/cli/index.js +21 -0
  103. package/dist/cli/index.js.map +1 -0
  104. package/dist/core-types.d.ts +296 -0
  105. package/dist/core-types.d.ts.map +1 -0
  106. package/dist/core-types.js +122 -0
  107. package/dist/core-types.js.map +1 -0
  108. package/dist/footnotes.d.ts +144 -0
  109. package/dist/footnotes.d.ts.map +1 -0
  110. package/dist/footnotes.js +291 -0
  111. package/dist/footnotes.js.map +1 -0
  112. package/dist/format-detection.d.ts +120 -0
  113. package/dist/format-detection.d.ts.map +1 -0
  114. package/dist/format-detection.js +338 -0
  115. package/dist/format-detection.js.map +1 -0
  116. package/dist/index.d.ts +177 -0
  117. package/dist/index.d.ts.map +1 -0
  118. package/dist/index.js +55 -0
  119. package/dist/index.js.map +1 -0
  120. package/dist/integration/output-artifacts.d.ts +6 -0
  121. package/dist/integration/output-artifacts.d.ts.map +1 -0
  122. package/dist/integration/output-artifacts.js +30 -0
  123. package/dist/integration/output-artifacts.js.map +1 -0
  124. package/dist/move-detection.d.ts +211 -0
  125. package/dist/move-detection.d.ts.map +1 -0
  126. package/dist/move-detection.js +391 -0
  127. package/dist/move-detection.js.map +1 -0
  128. package/dist/numbering.d.ts +136 -0
  129. package/dist/numbering.d.ts.map +1 -0
  130. package/dist/numbering.js +446 -0
  131. package/dist/numbering.js.map +1 -0
  132. package/dist/primitives/accept_changes.d.ts +30 -0
  133. package/dist/primitives/accept_changes.d.ts.map +1 -0
  134. package/dist/primitives/accept_changes.js +241 -0
  135. package/dist/primitives/accept_changes.js.map +1 -0
  136. package/dist/primitives/bookmarks.d.ts +12 -0
  137. package/dist/primitives/bookmarks.d.ts.map +1 -0
  138. package/dist/primitives/bookmarks.js +248 -0
  139. package/dist/primitives/bookmarks.js.map +1 -0
  140. package/dist/primitives/comments.d.ts +88 -0
  141. package/dist/primitives/comments.d.ts.map +1 -0
  142. package/dist/primitives/comments.js +703 -0
  143. package/dist/primitives/comments.js.map +1 -0
  144. package/dist/primitives/document.d.ts +168 -0
  145. package/dist/primitives/document.d.ts.map +1 -0
  146. package/dist/primitives/document.js +532 -0
  147. package/dist/primitives/document.js.map +1 -0
  148. package/dist/primitives/document_view.d.ts +93 -0
  149. package/dist/primitives/document_view.d.ts.map +1 -0
  150. package/dist/primitives/document_view.js +722 -0
  151. package/dist/primitives/document_view.js.map +1 -0
  152. package/dist/primitives/dom-helpers.d.ts +94 -0
  153. package/dist/primitives/dom-helpers.d.ts.map +1 -0
  154. package/dist/primitives/dom-helpers.js +219 -0
  155. package/dist/primitives/dom-helpers.js.map +1 -0
  156. package/dist/primitives/errors.d.ts +7 -0
  157. package/dist/primitives/errors.d.ts.map +1 -0
  158. package/dist/primitives/errors.js +10 -0
  159. package/dist/primitives/errors.js.map +1 -0
  160. package/dist/primitives/extract_revisions.d.ts +50 -0
  161. package/dist/primitives/extract_revisions.d.ts.map +1 -0
  162. package/dist/primitives/extract_revisions.js +340 -0
  163. package/dist/primitives/extract_revisions.js.map +1 -0
  164. package/dist/primitives/footnotes.d.ts +37 -0
  165. package/dist/primitives/footnotes.d.ts.map +1 -0
  166. package/dist/primitives/footnotes.js +552 -0
  167. package/dist/primitives/footnotes.js.map +1 -0
  168. package/dist/primitives/formatting_tags.d.ts +30 -0
  169. package/dist/primitives/formatting_tags.d.ts.map +1 -0
  170. package/dist/primitives/formatting_tags.js +217 -0
  171. package/dist/primitives/formatting_tags.js.map +1 -0
  172. package/dist/primitives/index.d.ts +26 -0
  173. package/dist/primitives/index.d.ts.map +1 -0
  174. package/dist/primitives/index.js +26 -0
  175. package/dist/primitives/index.js.map +1 -0
  176. package/dist/primitives/layout.d.ts +53 -0
  177. package/dist/primitives/layout.d.ts.map +1 -0
  178. package/dist/primitives/layout.js +178 -0
  179. package/dist/primitives/layout.js.map +1 -0
  180. package/dist/primitives/list_labels.d.ts +19 -0
  181. package/dist/primitives/list_labels.d.ts.map +1 -0
  182. package/dist/primitives/list_labels.js +57 -0
  183. package/dist/primitives/list_labels.js.map +1 -0
  184. package/dist/primitives/matching.d.ts +17 -0
  185. package/dist/primitives/matching.d.ts.map +1 -0
  186. package/dist/primitives/matching.js +144 -0
  187. package/dist/primitives/matching.js.map +1 -0
  188. package/dist/primitives/merge_runs.d.ts +23 -0
  189. package/dist/primitives/merge_runs.d.ts.map +1 -0
  190. package/dist/primitives/merge_runs.js +195 -0
  191. package/dist/primitives/merge_runs.js.map +1 -0
  192. package/dist/primitives/namespaces.d.ts +90 -0
  193. package/dist/primitives/namespaces.d.ts.map +1 -0
  194. package/dist/primitives/namespaces.js +107 -0
  195. package/dist/primitives/namespaces.js.map +1 -0
  196. package/dist/primitives/numbering.d.ts +27 -0
  197. package/dist/primitives/numbering.d.ts.map +1 -0
  198. package/dist/primitives/numbering.js +182 -0
  199. package/dist/primitives/numbering.js.map +1 -0
  200. package/dist/primitives/prevent_double_elevation.d.ts +18 -0
  201. package/dist/primitives/prevent_double_elevation.d.ts.map +1 -0
  202. package/dist/primitives/prevent_double_elevation.js +190 -0
  203. package/dist/primitives/prevent_double_elevation.js.map +1 -0
  204. package/dist/primitives/reject_changes.d.ts +27 -0
  205. package/dist/primitives/reject_changes.d.ts.map +1 -0
  206. package/dist/primitives/reject_changes.js +371 -0
  207. package/dist/primitives/reject_changes.js.map +1 -0
  208. package/dist/primitives/relationships.d.ts +7 -0
  209. package/dist/primitives/relationships.d.ts.map +1 -0
  210. package/dist/primitives/relationships.js +24 -0
  211. package/dist/primitives/relationships.js.map +1 -0
  212. package/dist/primitives/semantic_tags.d.ts +32 -0
  213. package/dist/primitives/semantic_tags.d.ts.map +1 -0
  214. package/dist/primitives/semantic_tags.js +139 -0
  215. package/dist/primitives/semantic_tags.js.map +1 -0
  216. package/dist/primitives/simplify_redlines.d.ts +19 -0
  217. package/dist/primitives/simplify_redlines.d.ts.map +1 -0
  218. package/dist/primitives/simplify_redlines.js +94 -0
  219. package/dist/primitives/simplify_redlines.js.map +1 -0
  220. package/dist/primitives/styles.d.ts +36 -0
  221. package/dist/primitives/styles.d.ts.map +1 -0
  222. package/dist/primitives/styles.js +190 -0
  223. package/dist/primitives/styles.js.map +1 -0
  224. package/dist/primitives/text.d.ts +27 -0
  225. package/dist/primitives/text.d.ts.map +1 -0
  226. package/dist/primitives/text.js +416 -0
  227. package/dist/primitives/text.js.map +1 -0
  228. package/dist/primitives/validate_document.d.ts +24 -0
  229. package/dist/primitives/validate_document.d.ts.map +1 -0
  230. package/dist/primitives/validate_document.js +147 -0
  231. package/dist/primitives/validate_document.js.map +1 -0
  232. package/dist/primitives/xml.d.ts +5 -0
  233. package/dist/primitives/xml.d.ts.map +1 -0
  234. package/dist/primitives/xml.js +19 -0
  235. package/dist/primitives/xml.js.map +1 -0
  236. package/dist/primitives/zip.d.ts +25 -0
  237. package/dist/primitives/zip.d.ts.map +1 -0
  238. package/dist/primitives/zip.js +78 -0
  239. package/dist/primitives/zip.js.map +1 -0
  240. package/dist/shared/docx/DocxArchive.d.ts +94 -0
  241. package/dist/shared/docx/DocxArchive.d.ts.map +1 -0
  242. package/dist/shared/docx/DocxArchive.js +169 -0
  243. package/dist/shared/docx/DocxArchive.js.map +1 -0
  244. package/dist/shared/ooxml/namespaces.d.ts +149 -0
  245. package/dist/shared/ooxml/namespaces.d.ts.map +1 -0
  246. package/dist/shared/ooxml/namespaces.js +224 -0
  247. package/dist/shared/ooxml/namespaces.js.map +1 -0
  248. package/dist/shared/ooxml/types.d.ts +136 -0
  249. package/dist/shared/ooxml/types.d.ts.map +1 -0
  250. package/dist/shared/ooxml/types.js +7 -0
  251. package/dist/shared/ooxml/types.js.map +1 -0
  252. package/package.json +63 -6
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Baseline B: Track changes OOXML renderer.
3
+ *
4
+ * Generates OOXML track changes markup (w:ins, w:del) from diff results.
5
+ */
6
+ /** ID allocator for revision IDs */
7
+ let nextRevisionId = 1;
8
+ /**
9
+ * Reset the revision ID counter.
10
+ */
11
+ export function resetRevisionIds() {
12
+ nextRevisionId = 1;
13
+ }
14
+ /**
15
+ * Allocate a new revision ID.
16
+ */
17
+ export function allocateRevisionId() {
18
+ return nextRevisionId++;
19
+ }
20
+ /**
21
+ * Format a date for OOXML (ISO 8601 format).
22
+ */
23
+ export function formatOoxmlDate(date) {
24
+ return date.toISOString().replace('Z', 'Z');
25
+ }
26
+ /**
27
+ * Escape XML special characters.
28
+ */
29
+ export function escapeXml(text) {
30
+ return text
31
+ .replace(/&/g, '&')
32
+ .replace(/</g, '&lt;')
33
+ .replace(/>/g, '&gt;')
34
+ .replace(/"/g, '&quot;')
35
+ .replace(/'/g, '&apos;');
36
+ }
37
+ /**
38
+ * Generate run properties XML.
39
+ */
40
+ function generateRunProperties(run) {
41
+ if (!run.properties) {
42
+ return '';
43
+ }
44
+ const props = [];
45
+ const p = run.properties;
46
+ if (p.bold) {
47
+ props.push('<w:b/>');
48
+ }
49
+ if (p.italic) {
50
+ props.push('<w:i/>');
51
+ }
52
+ if (p.underline) {
53
+ props.push(`<w:u w:val="${escapeXml(p.underline)}"/>`);
54
+ }
55
+ if (p.strikethrough) {
56
+ props.push('<w:strike/>');
57
+ }
58
+ if (p.highlight) {
59
+ props.push(`<w:highlight w:val="${escapeXml(p.highlight)}"/>`);
60
+ }
61
+ if (p.color) {
62
+ props.push(`<w:color w:val="${escapeXml(p.color)}"/>`);
63
+ }
64
+ if (p.fontSize !== undefined) {
65
+ props.push(`<w:sz w:val="${p.fontSize}"/>`);
66
+ }
67
+ if (p.fontFamily) {
68
+ props.push(`<w:rFonts w:ascii="${escapeXml(p.fontFamily)}" w:hAnsi="${escapeXml(p.fontFamily)}"/>`);
69
+ }
70
+ if (props.length === 0) {
71
+ return '';
72
+ }
73
+ return `<w:rPr>${props.join('')}</w:rPr>`;
74
+ }
75
+ /**
76
+ * Generate a single run's XML.
77
+ */
78
+ function generateRunXml(text, run, useDelText = false) {
79
+ const rPr = generateRunProperties(run);
80
+ const textElement = useDelText ? 'w:delText' : 'w:t';
81
+ // Handle whitespace preservation
82
+ const needsSpace = text.startsWith(' ') || text.endsWith(' ') || text.includes(' ');
83
+ const spaceAttr = needsSpace ? ' xml:space="preserve"' : '';
84
+ return `<w:r>${rPr}<${textElement}${spaceAttr}>${escapeXml(text)}</${textElement}></w:r>`;
85
+ }
86
+ /**
87
+ * Generate insertion markup.
88
+ */
89
+ export function generateInsertion(runs, author, date) {
90
+ const id = allocateRevisionId();
91
+ const dateStr = formatOoxmlDate(date);
92
+ const runXml = runs.map(run => generateRunXml(run.text, run, false)).join('');
93
+ return `<w:ins w:id="${id}" w:author="${escapeXml(author)}" w:date="${dateStr}">${runXml}</w:ins>`;
94
+ }
95
+ /**
96
+ * Generate deletion markup.
97
+ */
98
+ export function generateDeletion(runs, author, date) {
99
+ const id = allocateRevisionId();
100
+ const dateStr = formatOoxmlDate(date);
101
+ // Deletions use w:delText instead of w:t
102
+ const runXml = runs.map(run => generateRunXml(run.text, run, true)).join('');
103
+ return `<w:del w:id="${id}" w:author="${escapeXml(author)}" w:date="${dateStr}">${runXml}</w:del>`;
104
+ }
105
+ /**
106
+ * Generate unchanged run markup.
107
+ */
108
+ export function generateUnchangedRun(run) {
109
+ return generateRunXml(run.text, run, false);
110
+ }
111
+ /**
112
+ * Render merged runs with track changes to OOXML.
113
+ *
114
+ * @param mergedRuns - Runs with revision markers from diffRuns()
115
+ * @param options - Rendering options
116
+ * @returns OOXML paragraph content with track changes
117
+ */
118
+ export function renderTrackChanges(mergedRuns, options) {
119
+ const { author, date } = options;
120
+ const parts = [];
121
+ // Group consecutive runs by revision type for cleaner output
122
+ let i = 0;
123
+ while (i < mergedRuns.length) {
124
+ const run = mergedRuns[i];
125
+ const revType = run.revision?.type;
126
+ if (!revType) {
127
+ // Unchanged run
128
+ parts.push(generateUnchangedRun(run));
129
+ i++;
130
+ }
131
+ else if (revType === 'insertion') {
132
+ // Collect consecutive insertions
133
+ const insertionRuns = [];
134
+ while (i < mergedRuns.length && mergedRuns[i]?.revision?.type === 'insertion') {
135
+ insertionRuns.push(mergedRuns[i]);
136
+ i++;
137
+ }
138
+ parts.push(generateInsertion(insertionRuns, author, date));
139
+ }
140
+ else if (revType === 'deletion') {
141
+ // Collect consecutive deletions
142
+ const deletionRuns = [];
143
+ while (i < mergedRuns.length && mergedRuns[i]?.revision?.type === 'deletion') {
144
+ deletionRuns.push(mergedRuns[i]);
145
+ i++;
146
+ }
147
+ parts.push(generateDeletion(deletionRuns, author, date));
148
+ }
149
+ else {
150
+ // Unknown revision type, treat as unchanged
151
+ parts.push(generateUnchangedRun(run));
152
+ i++;
153
+ }
154
+ }
155
+ return parts.join('');
156
+ }
157
+ /**
158
+ * Wrap content in a paragraph element.
159
+ */
160
+ export function wrapInParagraph(content, pPr) {
161
+ const pPrXml = pPr ? `<w:pPr>${pPr}</w:pPr>` : '';
162
+ return `<w:p>${pPrXml}${content}</w:p>`;
163
+ }
164
+ /**
165
+ * Generate a complete deleted paragraph.
166
+ */
167
+ export function generateDeletedParagraph(runs, author, date, pPr) {
168
+ const content = generateDeletion(runs, author, date);
169
+ return wrapInParagraph(content, pPr);
170
+ }
171
+ /**
172
+ * Generate a complete inserted paragraph.
173
+ */
174
+ export function generateInsertedParagraph(runs, author, date, pPr) {
175
+ const content = generateInsertion(runs, author, date);
176
+ return wrapInParagraph(content, pPr);
177
+ }
178
+ //# sourceMappingURL=trackChangesRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trackChangesRenderer.js","sourceRoot":"","sources":["../../../src/baselines/diffmatch/trackChangesRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * XML Parser for extracting paragraphs and runs from DOCX document.xml.
3
+ *
4
+ * Uses fast-xml-parser to parse OOXML and extract ParagraphInfo objects
5
+ * suitable for comparison.
6
+ */
7
+ import type { ParagraphInfo, RunProperties } from '../../shared/ooxml/types.js';
8
+ /**
9
+ * Extended ParagraphInfo with original XML for reconstruction.
10
+ */
11
+ export interface ExtendedParagraphInfo extends ParagraphInfo {
12
+ /** Original paragraph properties XML (w:pPr) for preservation */
13
+ pPrXml?: string;
14
+ /** Original paragraph index in document */
15
+ originalIndex: number;
16
+ }
17
+ /**
18
+ * Extract paragraphs from document.xml content.
19
+ *
20
+ * @param documentXml - The raw document.xml content
21
+ * @returns Array of ParagraphInfo objects with runs and metadata
22
+ */
23
+ export declare function extractParagraphs(documentXml: string): ExtendedParagraphInfo[];
24
+ /**
25
+ * Extract run properties from a w:rPr element.
26
+ */
27
+ export declare function extractRunProperties(rPrElement: unknown): RunProperties | undefined;
28
+ /**
29
+ * Get the document body content (everything inside w:body).
30
+ * Useful for document reconstruction.
31
+ */
32
+ export declare function getBodyContent(documentXml: string): {
33
+ beforeBody: string;
34
+ bodyContent: string;
35
+ afterBody: string;
36
+ };
37
+ /**
38
+ * Extract sectPr (section properties) from body content if present.
39
+ * sectPr must remain at the end of body.
40
+ */
41
+ export declare function extractSectPr(bodyContent: string): {
42
+ content: string;
43
+ sectPr: string | null;
44
+ };
45
+ //# sourceMappingURL=xmlParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xmlParser.d.ts","sourceRoot":"","sources":["../../../src/baselines/diffmatch/xmlParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAW,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAwBzF;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAwB9E;AA4ED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAkDnF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAoBA;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAaA"}
@@ -0,0 +1,344 @@
1
+ /**
2
+ * XML Parser for extracting paragraphs and runs from DOCX document.xml.
3
+ *
4
+ * Uses fast-xml-parser to parse OOXML and extract ParagraphInfo objects
5
+ * suitable for comparison.
6
+ */
7
+ import { XMLParser, XMLBuilder } from 'fast-xml-parser';
8
+ import { hashParagraph } from './paragraphAlignment.js';
9
+ /** Parser options for fast-xml-parser */
10
+ const PARSER_OPTIONS = {
11
+ ignoreAttributes: false,
12
+ attributeNamePrefix: '@_',
13
+ preserveOrder: true,
14
+ textNodeName: '#text',
15
+ trimValues: false,
16
+ parseTagValue: false,
17
+ parseAttributeValue: false,
18
+ };
19
+ /** Builder options for reconstructing XML */
20
+ const BUILDER_OPTIONS = {
21
+ ignoreAttributes: false,
22
+ attributeNamePrefix: '@_',
23
+ preserveOrder: true,
24
+ textNodeName: '#text',
25
+ format: false,
26
+ suppressEmptyNode: false,
27
+ };
28
+ /**
29
+ * Extract paragraphs from document.xml content.
30
+ *
31
+ * @param documentXml - The raw document.xml content
32
+ * @returns Array of ParagraphInfo objects with runs and metadata
33
+ */
34
+ export function extractParagraphs(documentXml) {
35
+ const parser = new XMLParser(PARSER_OPTIONS);
36
+ const doc = parser.parse(documentXml);
37
+ const paragraphs = [];
38
+ // Navigate to w:body
39
+ const body = findElement(doc, 'w:body');
40
+ if (!body) {
41
+ return paragraphs;
42
+ }
43
+ // Find all w:p elements in body
44
+ let paragraphIndex = 0;
45
+ for (const child of getChildren(body)) {
46
+ if (getTagName(child) === 'w:p') {
47
+ const para = extractParagraph(child, paragraphIndex);
48
+ paragraphs.push(para);
49
+ paragraphIndex++;
50
+ }
51
+ // Note: We skip w:tbl (tables) for v1 - could add support later
52
+ }
53
+ return paragraphs;
54
+ }
55
+ /**
56
+ * Extract a single paragraph from a parsed w:p element.
57
+ */
58
+ function extractParagraph(pElement, index) {
59
+ const runs = [];
60
+ let charOffset = 0;
61
+ let pPrXml;
62
+ const children = getChildren(pElement);
63
+ for (const child of children) {
64
+ const tagName = getTagName(child);
65
+ if (tagName === 'w:pPr') {
66
+ // Extract paragraph properties as XML for preservation
67
+ pPrXml = elementToXml(child);
68
+ }
69
+ else if (tagName === 'w:r') {
70
+ // Extract run
71
+ const runInfo = extractRun(child, charOffset);
72
+ if (runInfo.text.length > 0) {
73
+ runs.push(runInfo);
74
+ charOffset = runInfo.end;
75
+ }
76
+ }
77
+ // Skip other elements (bookmarkStart, bookmarkEnd, etc.)
78
+ }
79
+ // Combine all run text
80
+ const text = runs.map(r => r.text).join('');
81
+ return {
82
+ text,
83
+ runs,
84
+ hash: hashParagraph(text),
85
+ pPrXml,
86
+ originalIndex: index,
87
+ };
88
+ }
89
+ /**
90
+ * Extract a single run from a parsed w:r element.
91
+ */
92
+ function extractRun(rElement, startOffset) {
93
+ let text = '';
94
+ let properties;
95
+ const children = getChildren(rElement);
96
+ for (const child of children) {
97
+ const tagName = getTagName(child);
98
+ if (tagName === 'w:rPr') {
99
+ properties = extractRunProperties(child);
100
+ }
101
+ else if (tagName === 'w:t') {
102
+ // Get text content
103
+ text += getTextContent(child);
104
+ }
105
+ else if (tagName === 'w:tab') {
106
+ // Tab character
107
+ text += '\t';
108
+ }
109
+ else if (tagName === 'w:br') {
110
+ // Break (newline)
111
+ text += '\n';
112
+ }
113
+ // Skip other elements (w:sym, w:drawing, etc.)
114
+ }
115
+ return {
116
+ text,
117
+ start: startOffset,
118
+ end: startOffset + text.length,
119
+ properties,
120
+ };
121
+ }
122
+ /**
123
+ * Extract run properties from a w:rPr element.
124
+ */
125
+ export function extractRunProperties(rPrElement) {
126
+ const props = {};
127
+ let hasProps = false;
128
+ const children = getChildren(rPrElement);
129
+ for (const child of children) {
130
+ const tagName = getTagName(child);
131
+ if (tagName === 'w:b') {
132
+ props.bold = true;
133
+ hasProps = true;
134
+ }
135
+ else if (tagName === 'w:i') {
136
+ props.italic = true;
137
+ hasProps = true;
138
+ }
139
+ else if (tagName === 'w:u') {
140
+ const val = getAttribute(child, 'w:val');
141
+ props.underline = val || 'single';
142
+ hasProps = true;
143
+ }
144
+ else if (tagName === 'w:strike') {
145
+ props.strikethrough = true;
146
+ hasProps = true;
147
+ }
148
+ else if (tagName === 'w:highlight') {
149
+ const val = getAttribute(child, 'w:val');
150
+ if (val) {
151
+ props.highlight = val;
152
+ hasProps = true;
153
+ }
154
+ }
155
+ else if (tagName === 'w:color') {
156
+ const val = getAttribute(child, 'w:val');
157
+ if (val) {
158
+ props.color = val;
159
+ hasProps = true;
160
+ }
161
+ }
162
+ else if (tagName === 'w:sz') {
163
+ const val = getAttribute(child, 'w:val');
164
+ if (val) {
165
+ props.fontSize = parseInt(val, 10);
166
+ hasProps = true;
167
+ }
168
+ }
169
+ else if (tagName === 'w:rFonts') {
170
+ const ascii = getAttribute(child, 'w:ascii');
171
+ if (ascii) {
172
+ props.fontFamily = ascii;
173
+ hasProps = true;
174
+ }
175
+ }
176
+ }
177
+ return hasProps ? props : undefined;
178
+ }
179
+ /**
180
+ * Get the document body content (everything inside w:body).
181
+ * Useful for document reconstruction.
182
+ */
183
+ export function getBodyContent(documentXml) {
184
+ // Use regex to extract body content while preserving structure
185
+ const bodyMatch = documentXml.match(/(<w:body[^>]*>)([\s\S]*?)(<\/w:body>)/);
186
+ if (!bodyMatch) {
187
+ return {
188
+ beforeBody: documentXml,
189
+ bodyContent: '',
190
+ afterBody: '',
191
+ };
192
+ }
193
+ const bodyStart = documentXml.indexOf(bodyMatch[0]);
194
+ const bodyEnd = bodyStart + bodyMatch[0].length;
195
+ return {
196
+ beforeBody: documentXml.slice(0, bodyStart) + bodyMatch[1],
197
+ bodyContent: bodyMatch[2],
198
+ afterBody: bodyMatch[3] + documentXml.slice(bodyEnd),
199
+ };
200
+ }
201
+ /**
202
+ * Extract sectPr (section properties) from body content if present.
203
+ * sectPr must remain at the end of body.
204
+ */
205
+ export function extractSectPr(bodyContent) {
206
+ // Find the last w:sectPr in the body
207
+ const sectPrMatch = bodyContent.match(/<w:sectPr[^>]*>[\s\S]*?<\/w:sectPr>\s*$/);
208
+ if (!sectPrMatch) {
209
+ return { content: bodyContent, sectPr: null };
210
+ }
211
+ const sectPrStart = bodyContent.lastIndexOf(sectPrMatch[0]);
212
+ return {
213
+ content: bodyContent.slice(0, sectPrStart),
214
+ sectPr: sectPrMatch[0],
215
+ };
216
+ }
217
+ // Helper functions for navigating parsed XML
218
+ /**
219
+ * Find an element by tag name in a parsed structure.
220
+ */
221
+ function findElement(obj, tagName) {
222
+ if (!obj || typeof obj !== 'object')
223
+ return null;
224
+ if (Array.isArray(obj)) {
225
+ for (const item of obj) {
226
+ const found = findElement(item, tagName);
227
+ if (found)
228
+ return found;
229
+ }
230
+ return null;
231
+ }
232
+ const objRecord = obj;
233
+ if (tagName in objRecord) {
234
+ return objRecord[tagName];
235
+ }
236
+ // Search in children
237
+ for (const key of Object.keys(objRecord)) {
238
+ if (key.startsWith('@_') || key === '#text')
239
+ continue;
240
+ const found = findElement(objRecord[key], tagName);
241
+ if (found)
242
+ return found;
243
+ }
244
+ return null;
245
+ }
246
+ /**
247
+ * Get children of a parsed element.
248
+ * With preserveOrder, children are in an array.
249
+ */
250
+ function getChildren(element) {
251
+ if (!element || typeof element !== 'object')
252
+ return [];
253
+ if (Array.isArray(element)) {
254
+ return element;
255
+ }
256
+ // With preserveOrder: true, the structure is an array of objects
257
+ // where each object has a single key (the tag name)
258
+ const objRecord = element;
259
+ const result = [];
260
+ for (const key of Object.keys(objRecord)) {
261
+ if (key.startsWith('@_') || key === '#text' || key === ':@')
262
+ continue;
263
+ const value = objRecord[key];
264
+ if (Array.isArray(value)) {
265
+ result.push(...value);
266
+ }
267
+ else {
268
+ result.push({ [key]: value });
269
+ }
270
+ }
271
+ return result;
272
+ }
273
+ /**
274
+ * Get the tag name of a parsed element.
275
+ */
276
+ function getTagName(element) {
277
+ if (!element || typeof element !== 'object')
278
+ return null;
279
+ if (Array.isArray(element))
280
+ return null;
281
+ const objRecord = element;
282
+ for (const key of Object.keys(objRecord)) {
283
+ if (!key.startsWith('@_') && key !== '#text' && key !== ':@') {
284
+ return key;
285
+ }
286
+ }
287
+ return null;
288
+ }
289
+ /**
290
+ * Get an attribute value from a parsed element.
291
+ */
292
+ function getAttribute(element, attrName) {
293
+ if (!element || typeof element !== 'object')
294
+ return null;
295
+ const objRecord = element;
296
+ // Check in :@ for attributes (preserveOrder format)
297
+ const attrs = objRecord[':@'];
298
+ if (attrs) {
299
+ const prefixedName = '@_' + attrName;
300
+ if (prefixedName in attrs) {
301
+ return String(attrs[prefixedName]);
302
+ }
303
+ }
304
+ // Also check directly on object
305
+ const prefixedName = '@_' + attrName;
306
+ if (prefixedName in objRecord) {
307
+ return String(objRecord[prefixedName]);
308
+ }
309
+ return null;
310
+ }
311
+ /**
312
+ * Get text content from an element.
313
+ */
314
+ function getTextContent(element) {
315
+ if (!element || typeof element !== 'object')
316
+ return '';
317
+ const objRecord = element;
318
+ // With preserveOrder, text is in #text
319
+ if ('#text' in objRecord) {
320
+ return String(objRecord['#text']);
321
+ }
322
+ // Check nested children for text
323
+ for (const key of Object.keys(objRecord)) {
324
+ if (key === '#text') {
325
+ return String(objRecord[key]);
326
+ }
327
+ if (Array.isArray(objRecord[key])) {
328
+ for (const item of objRecord[key]) {
329
+ if (item && typeof item === 'object' && '#text' in item) {
330
+ return String(item['#text']);
331
+ }
332
+ }
333
+ }
334
+ }
335
+ return '';
336
+ }
337
+ /**
338
+ * Convert a parsed element back to XML string.
339
+ */
340
+ function elementToXml(element) {
341
+ const builder = new XMLBuilder(BUILDER_OPTIONS);
342
+ return builder.build([element]);
343
+ }
344
+ //# sourceMappingURL=xmlParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xmlParser.js","sourceRoot":"","sources":["../../../src/baselines/diffmatch/xmlParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Baseline A: WmlComparer via Docxodus WASM.
3
+ *
4
+ * Uses the Docxodus npm package's WASM-based comparison in Node.js.
5
+ *
6
+ * Note: WASM support in Node.js requires additional setup:
7
+ * 1. WASM files must be served or loaded from the filesystem
8
+ * 2. May need polyfills for browser APIs used by Blazor WASM
9
+ *
10
+ * This implementation is a placeholder - full WASM integration requires
11
+ * building Docxodus and hosting the WASM files.
12
+ */
13
+ import type { CompareResult } from '../../index.js';
14
+ export interface WasmOptions {
15
+ /** Author name for revisions. Default: "Comparison" */
16
+ author?: string;
17
+ /** Detail threshold (0.0-1.0, lower = more detailed). Default: 0.15 */
18
+ detailThreshold?: number;
19
+ /** Case-insensitive comparison. Default: false */
20
+ caseInsensitive?: boolean;
21
+ /** Path to WASM files directory. */
22
+ wasmPath?: string;
23
+ }
24
+ /**
25
+ * Initialize the WASM runtime.
26
+ *
27
+ * Must be called before using compareWithWasm().
28
+ *
29
+ * @param wasmPath - Path to the directory containing WASM files
30
+ */
31
+ export declare function initializeWasm(wasmPath: string): Promise<void>;
32
+ /**
33
+ * Check if WASM runtime is initialized.
34
+ */
35
+ export declare function isWasmInitialized(): boolean;
36
+ /**
37
+ * Compare two DOCX documents using WASM.
38
+ *
39
+ * @param original - Original document as Buffer
40
+ * @param revised - Revised document as Buffer
41
+ * @param options - WASM options
42
+ * @returns Comparison result with track changes
43
+ */
44
+ export declare function compareWithWasm(original: Buffer, revised: Buffer, options?: WasmOptions): Promise<CompareResult>;
45
+ /**
46
+ * Check if WASM is available and can be used in this environment.
47
+ *
48
+ * Note: WASM in Node.js has limitations compared to browser environments.
49
+ */
50
+ export declare function isWasmAvailable(): Promise<boolean>;
51
+ //# sourceMappingURL=DocxodusWasm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocxodusWasm.d.ts","sourceRoot":"","sources":["../../../src/baselines/wmlcomparer/DocxodusWasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,aAAa,CAAC,CA8BxB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAYxD"}