@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 @@
1
+ {"version":3,"file":"matching.d.ts","sourceRoot":"","sources":["../../src/primitives/matching.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,kBAAkB,GAAG,qBAAqB,GAAG,gBAAgB,CAAC;AAEhG,MAAM,MAAM,0BAA0B,GAClC;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC3D;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,CAAC,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AA8GN,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,0BAA0B,CA4CrG"}
@@ -0,0 +1,144 @@
1
+ const DOUBLE_QUOTE_EQUIVALENTS = new Set([
2
+ '"',
3
+ '\u201c',
4
+ '\u201d',
5
+ '\u00ab',
6
+ '\u00bb',
7
+ '\u2039',
8
+ '\u203a',
9
+ ]);
10
+ const SINGLE_QUOTE_EQUIVALENTS = new Set([
11
+ "'",
12
+ '\u2018',
13
+ '\u2019',
14
+ ]);
15
+ function isQuoteChar(ch) {
16
+ return DOUBLE_QUOTE_EQUIVALENTS.has(ch) || SINGLE_QUOTE_EQUIVALENTS.has(ch);
17
+ }
18
+ function normalizeQuoteChar(ch) {
19
+ if (DOUBLE_QUOTE_EQUIVALENTS.has(ch))
20
+ return '"';
21
+ if (SINGLE_QUOTE_EQUIVALENTS.has(ch))
22
+ return "'";
23
+ return ch;
24
+ }
25
+ function isWhitespaceChar(ch) {
26
+ return /\s/u.test(ch);
27
+ }
28
+ function toMappedText(text) {
29
+ const spans = [];
30
+ for (let i = 0; i < text.length; i++)
31
+ spans.push({ start: i, end: i + 1 });
32
+ return { text, spans };
33
+ }
34
+ function applyTransforms(base, transforms) {
35
+ let out = base;
36
+ for (const transform of transforms)
37
+ out = transform(out);
38
+ return out;
39
+ }
40
+ function normalizeQuotes(input) {
41
+ if (!input.text)
42
+ return input;
43
+ let out = '';
44
+ for (let i = 0; i < input.text.length; i++)
45
+ out += normalizeQuoteChar(input.text[i]);
46
+ return { text: out, spans: input.spans.slice() };
47
+ }
48
+ function collapseWhitespace(input) {
49
+ if (!input.text)
50
+ return input;
51
+ const outChars = [];
52
+ const outSpans = [];
53
+ let i = 0;
54
+ while (i < input.text.length) {
55
+ const ch = input.text[i];
56
+ if (!isWhitespaceChar(ch)) {
57
+ outChars.push(ch);
58
+ outSpans.push(input.spans[i]);
59
+ i += 1;
60
+ continue;
61
+ }
62
+ const spanStart = input.spans[i].start;
63
+ let spanEnd = input.spans[i].end;
64
+ i += 1;
65
+ while (i < input.text.length && isWhitespaceChar(input.text[i])) {
66
+ spanEnd = input.spans[i].end;
67
+ i += 1;
68
+ }
69
+ outChars.push(' ');
70
+ outSpans.push({ start: spanStart, end: spanEnd });
71
+ }
72
+ return { text: outChars.join(''), spans: outSpans };
73
+ }
74
+ function removeQuotes(input) {
75
+ if (!input.text)
76
+ return input;
77
+ const outChars = [];
78
+ const outSpans = [];
79
+ for (let i = 0; i < input.text.length; i++) {
80
+ const ch = input.text[i];
81
+ if (isQuoteChar(ch))
82
+ continue;
83
+ outChars.push(ch);
84
+ outSpans.push(input.spans[i]);
85
+ }
86
+ return { text: outChars.join(''), spans: outSpans };
87
+ }
88
+ function findAllMatchIndices(haystack, needle) {
89
+ if (!needle)
90
+ return [];
91
+ const hits = [];
92
+ let from = 0;
93
+ while (from <= haystack.length - needle.length) {
94
+ const idx = haystack.indexOf(needle, from);
95
+ if (idx === -1)
96
+ break;
97
+ hits.push(idx);
98
+ from = idx + 1;
99
+ }
100
+ return hits;
101
+ }
102
+ export function findUniqueSubstringMatch(haystack, needle) {
103
+ if (!needle)
104
+ return { status: 'not_found' };
105
+ const hayBase = toMappedText(haystack);
106
+ const needleBase = toMappedText(needle);
107
+ const stages = [
108
+ { mode: 'exact', transforms: [] },
109
+ { mode: 'quote_normalized', transforms: [normalizeQuotes] },
110
+ { mode: 'flexible_whitespace', transforms: [normalizeQuotes, collapseWhitespace] },
111
+ { mode: 'quote_optional', transforms: [normalizeQuotes, collapseWhitespace, removeQuotes] },
112
+ ];
113
+ for (const stage of stages) {
114
+ const h = applyTransforms(hayBase, stage.transforms);
115
+ const n = applyTransforms(needleBase, stage.transforms);
116
+ if (!n.text)
117
+ continue;
118
+ const hits = findAllMatchIndices(h.text, n.text);
119
+ if (hits.length === 0)
120
+ continue;
121
+ if (hits.length > 1) {
122
+ return {
123
+ status: 'multiple',
124
+ mode: stage.mode,
125
+ matchCount: hits.length,
126
+ };
127
+ }
128
+ const hit = hits[0];
129
+ const startSpan = h.spans[hit];
130
+ const endSpan = h.spans[hit + n.text.length - 1];
131
+ const start = startSpan.start;
132
+ const end = endSpan.end;
133
+ return {
134
+ status: 'unique',
135
+ mode: stage.mode,
136
+ matchCount: 1,
137
+ start,
138
+ end,
139
+ matchedText: haystack.slice(start, end),
140
+ };
141
+ }
142
+ return { status: 'not_found' };
143
+ }
144
+ //# sourceMappingURL=matching.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matching.js","sourceRoot":"","sources":["../../src/primitives/matching.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * merge_runs — merge adjacent format-identical runs within paragraphs.
3
+ *
4
+ * Safety barriers: never merge across fldChar/instrText, comment range,
5
+ * bookmark, or tracked-change wrapper boundaries.
6
+ */
7
+ export type MergeRunsResult = {
8
+ runsMerged: number;
9
+ proofErrRemoved: number;
10
+ };
11
+ /**
12
+ * Merge adjacent format-identical runs across all paragraphs in the
13
+ * document body. Removes `<w:proofErr>` elements and strips `rsid`
14
+ * attributes from runs before comparison.
15
+ *
16
+ * Safety barriers prevent merges across:
17
+ * - Field boundaries (fldChar, instrText)
18
+ * - Comment range boundaries (commentRangeStart, commentRangeEnd)
19
+ * - Bookmark boundaries (bookmarkStart, bookmarkEnd)
20
+ * - Tracked-change wrapper boundaries (ins, del, moveFrom, moveTo)
21
+ */
22
+ export declare function mergeRuns(doc: Document): MergeRunsResult;
23
+ //# sourceMappingURL=merge_runs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge_runs.d.ts","sourceRoot":"","sources":["../../src/primitives/merge_runs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AA2LF;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,eAAe,CAwBxD"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * merge_runs — merge adjacent format-identical runs within paragraphs.
3
+ *
4
+ * Safety barriers: never merge across fldChar/instrText, comment range,
5
+ * bookmark, or tracked-change wrapper boundaries.
6
+ */
7
+ import { XMLSerializer } from '@xmldom/xmldom';
8
+ import { OOXML, W } from './namespaces.js';
9
+ // ── Barrier element local names ────────────────────────────────────────
10
+ const BARRIER_LOCALS = new Set([
11
+ W.fldChar,
12
+ W.instrText,
13
+ W.bookmarkStart,
14
+ W.bookmarkEnd,
15
+ 'commentRangeStart',
16
+ 'commentRangeEnd',
17
+ ]);
18
+ const TC_WRAPPER_LOCALS = new Set([
19
+ 'ins',
20
+ 'del',
21
+ 'moveFrom',
22
+ 'moveTo',
23
+ ]);
24
+ // ── Helpers ────────────────────────────────────────────────────────────
25
+ const serializer = new XMLSerializer();
26
+ function isW(el, localName) {
27
+ return el.namespaceURI === OOXML.W_NS && el.localName === localName;
28
+ }
29
+ function isWRun(node) {
30
+ return (node.nodeType === 1 &&
31
+ node.namespaceURI === OOXML.W_NS &&
32
+ node.localName === W.r);
33
+ }
34
+ /** Strip all w:rsid* attributes from an element and its descendants. */
35
+ function stripRsidAttributes(el) {
36
+ const attrs = Array.from(el.attributes);
37
+ for (const attr of attrs) {
38
+ const name = attr.localName ?? attr.name;
39
+ if (/^rsid/i.test(name)) {
40
+ el.removeAttributeNode(attr);
41
+ }
42
+ }
43
+ let child = el.firstChild;
44
+ while (child) {
45
+ if (child.nodeType === 1)
46
+ stripRsidAttributes(child);
47
+ child = child.nextSibling;
48
+ }
49
+ }
50
+ /**
51
+ * Canonical key for a run's direct formatting. Two runs with the same
52
+ * key have identical formatting and can be merged (if no barriers).
53
+ */
54
+ function runFormattingKey(run) {
55
+ const rPr = run.getElementsByTagNameNS(OOXML.W_NS, W.rPr).item(0);
56
+ if (!rPr)
57
+ return '';
58
+ const clone = rPr.cloneNode(true);
59
+ stripRsidAttributes(clone);
60
+ return serializer.serializeToString(clone);
61
+ }
62
+ /** Check whether a run contains barrier content (fldChar, instrText). */
63
+ function runContainsBarrierContent(run) {
64
+ let child = run.firstChild;
65
+ while (child) {
66
+ if (child.nodeType === 1) {
67
+ const el = child;
68
+ if (el.namespaceURI === OOXML.W_NS && BARRIER_LOCALS.has(el.localName)) {
69
+ return true;
70
+ }
71
+ }
72
+ child = child.nextSibling;
73
+ }
74
+ return false;
75
+ }
76
+ /** Content children of a run (everything except w:rPr). */
77
+ function runContentChildren(run) {
78
+ const out = [];
79
+ let child = run.firstChild;
80
+ while (child) {
81
+ if (child.nodeType === 1 && isW(child, W.rPr)) {
82
+ child = child.nextSibling;
83
+ continue;
84
+ }
85
+ out.push(child);
86
+ child = child.nextSibling;
87
+ }
88
+ return out;
89
+ }
90
+ /** Remove all `<w:proofErr>` elements from a paragraph. */
91
+ function removeProofErrors(paragraph) {
92
+ const proofErrs = Array.from(paragraph.getElementsByTagNameNS(OOXML.W_NS, 'proofErr'));
93
+ for (const el of proofErrs) {
94
+ el.parentNode?.removeChild(el);
95
+ }
96
+ return proofErrs.length;
97
+ }
98
+ // ── Run group collection ───────────────────────────────────────────────
99
+ /**
100
+ * Collect groups of adjacent w:r elements within the same parent, not
101
+ * separated by barrier elements. Each group is a merge candidate.
102
+ */
103
+ function collectMergeableRunGroups(paragraph) {
104
+ const allGroups = [];
105
+ const containers = [paragraph];
106
+ // Also collect runs inside tracked-change wrappers
107
+ for (const local of TC_WRAPPER_LOCALS) {
108
+ const wrappers = Array.from(paragraph.getElementsByTagNameNS(OOXML.W_NS, local));
109
+ containers.push(...wrappers);
110
+ }
111
+ for (const container of containers) {
112
+ let currentGroup = [];
113
+ let child = container.firstChild;
114
+ while (child) {
115
+ if (child.nodeType === 1) {
116
+ const el = child;
117
+ if (isWRun(el)) {
118
+ currentGroup.push(el);
119
+ }
120
+ else {
121
+ // Any non-run element breaks the group
122
+ if (currentGroup.length > 0) {
123
+ allGroups.push(currentGroup);
124
+ currentGroup = [];
125
+ }
126
+ }
127
+ }
128
+ child = child.nextSibling;
129
+ }
130
+ if (currentGroup.length > 0) {
131
+ allGroups.push(currentGroup);
132
+ }
133
+ }
134
+ return allGroups;
135
+ }
136
+ /** Merge adjacent format-identical runs within a paragraph. */
137
+ function mergeParagraphRuns(paragraph) {
138
+ let merged = 0;
139
+ const groups = collectMergeableRunGroups(paragraph);
140
+ for (const group of groups) {
141
+ if (group.length < 2)
142
+ continue;
143
+ let i = 0;
144
+ while (i < group.length - 1) {
145
+ const current = group[i];
146
+ const next = group[i + 1];
147
+ if (!runContainsBarrierContent(current) &&
148
+ !runContainsBarrierContent(next) &&
149
+ runFormattingKey(current) === runFormattingKey(next)) {
150
+ // Move all content children of `next` into `current`.
151
+ for (const node of runContentChildren(next)) {
152
+ current.appendChild(node);
153
+ }
154
+ next.parentNode?.removeChild(next);
155
+ group.splice(i + 1, 1);
156
+ merged++;
157
+ }
158
+ else {
159
+ i++;
160
+ }
161
+ }
162
+ }
163
+ return merged;
164
+ }
165
+ // ── Public API ─────────────────────────────────────────────────────────
166
+ /**
167
+ * Merge adjacent format-identical runs across all paragraphs in the
168
+ * document body. Removes `<w:proofErr>` elements and strips `rsid`
169
+ * attributes from runs before comparison.
170
+ *
171
+ * Safety barriers prevent merges across:
172
+ * - Field boundaries (fldChar, instrText)
173
+ * - Comment range boundaries (commentRangeStart, commentRangeEnd)
174
+ * - Bookmark boundaries (bookmarkStart, bookmarkEnd)
175
+ * - Tracked-change wrapper boundaries (ins, del, moveFrom, moveTo)
176
+ */
177
+ export function mergeRuns(doc) {
178
+ const body = doc.getElementsByTagNameNS(OOXML.W_NS, W.body).item(0);
179
+ if (!body)
180
+ return { runsMerged: 0, proofErrRemoved: 0 };
181
+ let totalMerged = 0;
182
+ let totalProofErr = 0;
183
+ const paragraphs = Array.from(body.getElementsByTagNameNS(OOXML.W_NS, W.p));
184
+ for (const p of paragraphs) {
185
+ totalProofErr += removeProofErrors(p);
186
+ // Strip rsid attributes from all runs before comparing.
187
+ const runs = Array.from(p.getElementsByTagNameNS(OOXML.W_NS, W.r));
188
+ for (const r of runs) {
189
+ stripRsidAttributes(r);
190
+ }
191
+ totalMerged += mergeParagraphRuns(p);
192
+ }
193
+ return { runsMerged: totalMerged, proofErrRemoved: totalProofErr };
194
+ }
195
+ //# sourceMappingURL=merge_runs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge_runs.js","sourceRoot":"","sources":["../../src/primitives/merge_runs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ export declare const OOXML: {
2
+ readonly W_NS: "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
3
+ readonly REL_NS: "http://schemas.openxmlformats.org/package/2006/relationships";
4
+ readonly R_NS: "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
5
+ readonly HYPERLINK_REL_TYPE: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink";
6
+ readonly W14_NS: "http://schemas.microsoft.com/office/word/2010/wordml";
7
+ readonly W15_NS: "http://schemas.microsoft.com/office/word/2012/wordml";
8
+ readonly WPC_NS: "http://schemas.microsoft.com/office/word/2012/wordml";
9
+ readonly CT_NS: "http://schemas.openxmlformats.org/package/2006/content-types";
10
+ };
11
+ export declare const W: {
12
+ readonly document: "document";
13
+ readonly body: "body";
14
+ readonly p: "p";
15
+ readonly r: "r";
16
+ readonly t: "t";
17
+ readonly pPr: "pPr";
18
+ readonly rPr: "rPr";
19
+ readonly bookmarkStart: "bookmarkStart";
20
+ readonly bookmarkEnd: "bookmarkEnd";
21
+ readonly pStyle: "pStyle";
22
+ readonly jc: "jc";
23
+ readonly ind: "ind";
24
+ readonly spacing: "spacing";
25
+ readonly before: "before";
26
+ readonly after: "after";
27
+ readonly line: "line";
28
+ readonly lineRule: "lineRule";
29
+ readonly rFonts: "rFonts";
30
+ readonly b: "b";
31
+ readonly i: "i";
32
+ readonly u: "u";
33
+ readonly highlight: "highlight";
34
+ readonly sz: "sz";
35
+ readonly color: "color";
36
+ readonly vertAlign: "vertAlign";
37
+ readonly position: "position";
38
+ readonly style: "style";
39
+ readonly name: "name";
40
+ readonly basedOn: "basedOn";
41
+ readonly numPr: "numPr";
42
+ readonly numId: "numId";
43
+ readonly ilvl: "ilvl";
44
+ readonly numbering: "numbering";
45
+ readonly abstractNum: "abstractNum";
46
+ readonly lvl: "lvl";
47
+ readonly start: "start";
48
+ readonly numFmt: "numFmt";
49
+ readonly lvlText: "lvlText";
50
+ readonly suff: "suff";
51
+ readonly num: "num";
52
+ readonly abstractNumId: "abstractNumId";
53
+ readonly lvlOverride: "lvlOverride";
54
+ readonly startOverride: "startOverride";
55
+ readonly tbl: "tbl";
56
+ readonly tr: "tr";
57
+ readonly tc: "tc";
58
+ readonly trPr: "trPr";
59
+ readonly tcPr: "tcPr";
60
+ readonly trHeight: "trHeight";
61
+ readonly tcMar: "tcMar";
62
+ readonly top: "top";
63
+ readonly bottom: "bottom";
64
+ readonly left: "left";
65
+ readonly right: "right";
66
+ readonly val: "val";
67
+ readonly hRule: "hRule";
68
+ readonly w: "w";
69
+ readonly type: "type";
70
+ readonly fldChar: "fldChar";
71
+ readonly instrText: "instrText";
72
+ readonly fldSimple: "fldSimple";
73
+ readonly tab: "tab";
74
+ readonly br: "br";
75
+ readonly hyperlink: "hyperlink";
76
+ readonly rStyle: "rStyle";
77
+ readonly comment: "comment";
78
+ readonly comments: "comments";
79
+ readonly commentRangeStart: "commentRangeStart";
80
+ readonly commentRangeEnd: "commentRangeEnd";
81
+ readonly commentReference: "commentReference";
82
+ readonly annotationRef: "annotationRef";
83
+ readonly footnote: "footnote";
84
+ readonly footnotes: "footnotes";
85
+ readonly footnoteReference: "footnoteReference";
86
+ readonly footnoteRef: "footnoteRef";
87
+ readonly separator: "separator";
88
+ readonly continuationSeparator: "continuationSeparator";
89
+ };
90
+ //# sourceMappingURL=namespaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../../src/primitives/namespaces.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK;;;;;;;;;CAiBR,CAAC;AAEX,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgGJ,CAAC"}
@@ -0,0 +1,107 @@
1
+ export const OOXML = {
2
+ // Main WordprocessingML namespace.
3
+ W_NS: 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',
4
+ // Relationships, package, etc. kept for future parts.
5
+ REL_NS: 'http://schemas.openxmlformats.org/package/2006/relationships',
6
+ // Relationship namespace used inside .rels parts (document relationships).
7
+ R_NS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
8
+ // Hyperlink relationship type URI.
9
+ HYPERLINK_REL_TYPE: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',
10
+ // Word 2010 extensions (paraId attributes).
11
+ W14_NS: 'http://schemas.microsoft.com/office/word/2010/wordml',
12
+ // Word 2012 extensions (commentsExtended, threaded replies).
13
+ W15_NS: 'http://schemas.microsoft.com/office/word/2012/wordml',
14
+ // People part namespace.
15
+ WPC_NS: 'http://schemas.microsoft.com/office/word/2012/wordml',
16
+ // Content-types part namespace.
17
+ CT_NS: 'http://schemas.openxmlformats.org/package/2006/content-types',
18
+ };
19
+ export const W = {
20
+ document: 'document',
21
+ body: 'body',
22
+ p: 'p',
23
+ r: 'r',
24
+ t: 't',
25
+ pPr: 'pPr',
26
+ rPr: 'rPr',
27
+ bookmarkStart: 'bookmarkStart',
28
+ bookmarkEnd: 'bookmarkEnd',
29
+ // Paragraph formatting
30
+ pStyle: 'pStyle',
31
+ jc: 'jc',
32
+ ind: 'ind',
33
+ spacing: 'spacing',
34
+ before: 'before',
35
+ after: 'after',
36
+ line: 'line',
37
+ lineRule: 'lineRule',
38
+ // Run formatting
39
+ rFonts: 'rFonts',
40
+ b: 'b',
41
+ i: 'i',
42
+ u: 'u',
43
+ highlight: 'highlight',
44
+ sz: 'sz',
45
+ color: 'color',
46
+ vertAlign: 'vertAlign',
47
+ position: 'position',
48
+ // Styles part
49
+ style: 'style',
50
+ name: 'name',
51
+ basedOn: 'basedOn',
52
+ // Numbering
53
+ numPr: 'numPr',
54
+ numId: 'numId',
55
+ ilvl: 'ilvl',
56
+ numbering: 'numbering',
57
+ abstractNum: 'abstractNum',
58
+ lvl: 'lvl',
59
+ start: 'start',
60
+ numFmt: 'numFmt',
61
+ lvlText: 'lvlText',
62
+ suff: 'suff',
63
+ num: 'num',
64
+ abstractNumId: 'abstractNumId',
65
+ lvlOverride: 'lvlOverride',
66
+ startOverride: 'startOverride',
67
+ // Tables + layout
68
+ tbl: 'tbl',
69
+ tr: 'tr',
70
+ tc: 'tc',
71
+ trPr: 'trPr',
72
+ tcPr: 'tcPr',
73
+ trHeight: 'trHeight',
74
+ tcMar: 'tcMar',
75
+ top: 'top',
76
+ bottom: 'bottom',
77
+ left: 'left',
78
+ right: 'right',
79
+ val: 'val',
80
+ hRule: 'hRule',
81
+ w: 'w',
82
+ type: 'type',
83
+ // Fields + special runs
84
+ fldChar: 'fldChar',
85
+ instrText: 'instrText',
86
+ fldSimple: 'fldSimple',
87
+ tab: 'tab',
88
+ br: 'br',
89
+ // Hyperlinks + character styles
90
+ hyperlink: 'hyperlink',
91
+ rStyle: 'rStyle',
92
+ // Comments
93
+ comment: 'comment',
94
+ comments: 'comments',
95
+ commentRangeStart: 'commentRangeStart',
96
+ commentRangeEnd: 'commentRangeEnd',
97
+ commentReference: 'commentReference',
98
+ annotationRef: 'annotationRef',
99
+ // Footnotes
100
+ footnote: 'footnote',
101
+ footnotes: 'footnotes',
102
+ footnoteReference: 'footnoteReference',
103
+ footnoteRef: 'footnoteRef',
104
+ separator: 'separator',
105
+ continuationSeparator: 'continuationSeparator',
106
+ };
107
+ //# sourceMappingURL=namespaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../../src/primitives/namespaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export type NumberingLevel = {
2
+ ilvl: number;
3
+ start: number;
4
+ numFmt: string;
5
+ lvlText: string;
6
+ suff: string;
7
+ };
8
+ export type AbstractNum = {
9
+ abstractNumId: string;
10
+ levels: Map<number, NumberingLevel>;
11
+ };
12
+ export type NumInstance = {
13
+ numId: string;
14
+ abstractNumId: string;
15
+ startOverrideByLevel: Map<number, number>;
16
+ };
17
+ export type NumberingModel = {
18
+ abstractNums: Map<string, AbstractNum>;
19
+ nums: Map<string, NumInstance>;
20
+ };
21
+ export declare function parseNumberingXml(numberingDoc: Document | null): NumberingModel;
22
+ export type NumberingCounters = Map<string, number[]>;
23
+ export declare function computeListLabelForParagraph(model: NumberingModel, counters: NumberingCounters, params: {
24
+ numId: string;
25
+ ilvl: number;
26
+ }): string;
27
+ //# sourceMappingURL=numbering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbering.d.ts","sourceRoot":"","sources":["../../src/primitives/numbering.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CAChC,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,QAAQ,GAAG,IAAI,GAAG,cAAc,CAqD/E;AAkED,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAmBtD,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACtC,MAAM,CA0CR"}