@usejunior/docx-core 0.14.0 → 0.16.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 (154) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/generation/index.d.ts +0 -1
  3. package/dist/generation/index.d.ts.map +1 -1
  4. package/dist/generation/index.js +0 -1
  5. package/dist/generation/index.js.map +1 -1
  6. package/dist/index.d.ts +7 -25
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +7 -47
  9. package/dist/index.js.map +1 -1
  10. package/dist/primitives/accept_ai_edits.d.ts +87 -0
  11. package/dist/primitives/accept_ai_edits.d.ts.map +1 -0
  12. package/dist/primitives/accept_ai_edits.js +253 -0
  13. package/dist/primitives/accept_ai_edits.js.map +1 -0
  14. package/dist/primitives/accept_changes.d.ts +13 -1
  15. package/dist/primitives/accept_changes.d.ts.map +1 -1
  16. package/dist/primitives/accept_changes.js +44 -29
  17. package/dist/primitives/accept_changes.js.map +1 -1
  18. package/dist/primitives/document.d.ts +51 -0
  19. package/dist/primitives/document.d.ts.map +1 -1
  20. package/dist/primitives/document.js +144 -1
  21. package/dist/primitives/document.js.map +1 -1
  22. package/dist/primitives/index.d.ts +1 -0
  23. package/dist/primitives/index.d.ts.map +1 -1
  24. package/dist/primitives/index.js +1 -0
  25. package/dist/primitives/index.js.map +1 -1
  26. package/dist/primitives/reject_changes.d.ts +4 -1
  27. package/dist/primitives/reject_changes.d.ts.map +1 -1
  28. package/dist/primitives/reject_changes.js +54 -30
  29. package/dist/primitives/reject_changes.js.map +1 -1
  30. package/dist/primitives/relationships.d.ts +33 -0
  31. package/dist/primitives/relationships.d.ts.map +1 -1
  32. package/dist/primitives/relationships.js +84 -1
  33. package/dist/primitives/relationships.js.map +1 -1
  34. package/package.json +8 -9
  35. package/dist/atomizer.d.ts +0 -273
  36. package/dist/atomizer.d.ts.map +0 -1
  37. package/dist/atomizer.js +0 -1002
  38. package/dist/atomizer.js.map +0 -1
  39. package/dist/baselines/atomizer/atomLcs.d.ts +0 -82
  40. package/dist/baselines/atomizer/atomLcs.d.ts.map +0 -1
  41. package/dist/baselines/atomizer/atomLcs.js +0 -376
  42. package/dist/baselines/atomizer/atomLcs.js.map +0 -1
  43. package/dist/baselines/atomizer/auxiliaryIdCollision.d.ts +0 -99
  44. package/dist/baselines/atomizer/auxiliaryIdCollision.d.ts.map +0 -1
  45. package/dist/baselines/atomizer/auxiliaryIdCollision.js +0 -415
  46. package/dist/baselines/atomizer/auxiliaryIdCollision.js.map +0 -1
  47. package/dist/baselines/atomizer/consumerCompatibility.d.ts +0 -2
  48. package/dist/baselines/atomizer/consumerCompatibility.d.ts.map +0 -1
  49. package/dist/baselines/atomizer/consumerCompatibility.js +0 -188
  50. package/dist/baselines/atomizer/consumerCompatibility.js.map +0 -1
  51. package/dist/baselines/atomizer/debug.d.ts +0 -41
  52. package/dist/baselines/atomizer/debug.d.ts.map +0 -1
  53. package/dist/baselines/atomizer/debug.js +0 -85
  54. package/dist/baselines/atomizer/debug.js.map +0 -1
  55. package/dist/baselines/atomizer/documentReconstructor.d.ts +0 -75
  56. package/dist/baselines/atomizer/documentReconstructor.d.ts.map +0 -1
  57. package/dist/baselines/atomizer/documentReconstructor.js +0 -1449
  58. package/dist/baselines/atomizer/documentReconstructor.js.map +0 -1
  59. package/dist/baselines/atomizer/formattingFidelity.d.ts +0 -99
  60. package/dist/baselines/atomizer/formattingFidelity.d.ts.map +0 -1
  61. package/dist/baselines/atomizer/formattingFidelity.js +0 -449
  62. package/dist/baselines/atomizer/formattingFidelity.js.map +0 -1
  63. package/dist/baselines/atomizer/hierarchicalLcs.d.ts +0 -121
  64. package/dist/baselines/atomizer/hierarchicalLcs.d.ts.map +0 -1
  65. package/dist/baselines/atomizer/hierarchicalLcs.js +0 -753
  66. package/dist/baselines/atomizer/hierarchicalLcs.js.map +0 -1
  67. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.d.ts +0 -37
  68. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.d.ts.map +0 -1
  69. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.js +0 -189
  70. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.js.map +0 -1
  71. package/dist/baselines/atomizer/inPlaceModifier-containers.d.ts +0 -74
  72. package/dist/baselines/atomizer/inPlaceModifier-containers.d.ts.map +0 -1
  73. package/dist/baselines/atomizer/inPlaceModifier-containers.js +0 -171
  74. package/dist/baselines/atomizer/inPlaceModifier-containers.js.map +0 -1
  75. package/dist/baselines/atomizer/inPlaceModifier-deletion.d.ts +0 -88
  76. package/dist/baselines/atomizer/inPlaceModifier-deletion.d.ts.map +0 -1
  77. package/dist/baselines/atomizer/inPlaceModifier-deletion.js +0 -326
  78. package/dist/baselines/atomizer/inPlaceModifier-deletion.js.map +0 -1
  79. package/dist/baselines/atomizer/inPlaceModifier-postprocess.d.ts +0 -85
  80. package/dist/baselines/atomizer/inPlaceModifier-postprocess.d.ts.map +0 -1
  81. package/dist/baselines/atomizer/inPlaceModifier-postprocess.js +0 -402
  82. package/dist/baselines/atomizer/inPlaceModifier-postprocess.js.map +0 -1
  83. package/dist/baselines/atomizer/inPlaceModifier-presplit.d.ts +0 -39
  84. package/dist/baselines/atomizer/inPlaceModifier-presplit.d.ts.map +0 -1
  85. package/dist/baselines/atomizer/inPlaceModifier-presplit.js +0 -265
  86. package/dist/baselines/atomizer/inPlaceModifier-presplit.js.map +0 -1
  87. package/dist/baselines/atomizer/inPlaceModifier-shared.d.ts +0 -62
  88. package/dist/baselines/atomizer/inPlaceModifier-shared.d.ts.map +0 -1
  89. package/dist/baselines/atomizer/inPlaceModifier-shared.js +0 -139
  90. package/dist/baselines/atomizer/inPlaceModifier-shared.js.map +0 -1
  91. package/dist/baselines/atomizer/inPlaceModifier-wrappers.d.ts +0 -198
  92. package/dist/baselines/atomizer/inPlaceModifier-wrappers.d.ts.map +0 -1
  93. package/dist/baselines/atomizer/inPlaceModifier-wrappers.js +0 -475
  94. package/dist/baselines/atomizer/inPlaceModifier-wrappers.js.map +0 -1
  95. package/dist/baselines/atomizer/inPlaceModifier.d.ts +0 -27
  96. package/dist/baselines/atomizer/inPlaceModifier.d.ts.map +0 -1
  97. package/dist/baselines/atomizer/inPlaceModifier.js +0 -648
  98. package/dist/baselines/atomizer/inPlaceModifier.js.map +0 -1
  99. package/dist/baselines/atomizer/numberingIntegration.d.ts +0 -59
  100. package/dist/baselines/atomizer/numberingIntegration.d.ts.map +0 -1
  101. package/dist/baselines/atomizer/numberingIntegration.js +0 -209
  102. package/dist/baselines/atomizer/numberingIntegration.js.map +0 -1
  103. package/dist/baselines/atomizer/pipeline.d.ts +0 -103
  104. package/dist/baselines/atomizer/pipeline.d.ts.map +0 -1
  105. package/dist/baselines/atomizer/pipeline.js +0 -1160
  106. package/dist/baselines/atomizer/pipeline.js.map +0 -1
  107. package/dist/baselines/atomizer/premergeRuns.d.ts +0 -26
  108. package/dist/baselines/atomizer/premergeRuns.d.ts.map +0 -1
  109. package/dist/baselines/atomizer/premergeRuns.js +0 -153
  110. package/dist/baselines/atomizer/premergeRuns.js.map +0 -1
  111. package/dist/baselines/atomizer/trackChangesAcceptor.d.ts +0 -63
  112. package/dist/baselines/atomizer/trackChangesAcceptor.d.ts.map +0 -1
  113. package/dist/baselines/atomizer/trackChangesAcceptor.js +0 -254
  114. package/dist/baselines/atomizer/trackChangesAcceptor.js.map +0 -1
  115. package/dist/baselines/atomizer/trackChangesAcceptorAst.d.ts +0 -64
  116. package/dist/baselines/atomizer/trackChangesAcceptorAst.d.ts.map +0 -1
  117. package/dist/baselines/atomizer/trackChangesAcceptorAst.js +0 -642
  118. package/dist/baselines/atomizer/trackChangesAcceptorAst.js.map +0 -1
  119. package/dist/baselines/atomizer/xmlToWmlElement.d.ts +0 -65
  120. package/dist/baselines/atomizer/xmlToWmlElement.d.ts.map +0 -1
  121. package/dist/baselines/atomizer/xmlToWmlElement.js +0 -96
  122. package/dist/baselines/atomizer/xmlToWmlElement.js.map +0 -1
  123. package/dist/baselines/wmlcomparer/DocxodusWasm.d.ts +0 -51
  124. package/dist/baselines/wmlcomparer/DocxodusWasm.d.ts.map +0 -1
  125. package/dist/baselines/wmlcomparer/DocxodusWasm.js +0 -83
  126. package/dist/baselines/wmlcomparer/DocxodusWasm.js.map +0 -1
  127. package/dist/baselines/wmlcomparer/DotnetCli.d.ts +0 -40
  128. package/dist/baselines/wmlcomparer/DotnetCli.d.ts.map +0 -1
  129. package/dist/baselines/wmlcomparer/DotnetCli.js +0 -142
  130. package/dist/baselines/wmlcomparer/DotnetCli.js.map +0 -1
  131. package/dist/cli/compare-two.d.ts +0 -28
  132. package/dist/cli/compare-two.d.ts.map +0 -1
  133. package/dist/cli/compare-two.js +0 -112
  134. package/dist/cli/compare-two.js.map +0 -1
  135. package/dist/cli/index.d.ts +0 -3
  136. package/dist/cli/index.d.ts.map +0 -1
  137. package/dist/cli/index.js +0 -25
  138. package/dist/cli/index.js.map +0 -1
  139. package/dist/compare-types.d.ts +0 -197
  140. package/dist/compare-types.d.ts.map +0 -1
  141. package/dist/compare-types.js +0 -2
  142. package/dist/compare-types.js.map +0 -1
  143. package/dist/format-detection.d.ts +0 -120
  144. package/dist/format-detection.d.ts.map +0 -1
  145. package/dist/format-detection.js +0 -339
  146. package/dist/format-detection.js.map +0 -1
  147. package/dist/generation/recipes.d.ts +0 -144
  148. package/dist/generation/recipes.d.ts.map +0 -1
  149. package/dist/generation/recipes.js +0 -358
  150. package/dist/generation/recipes.js.map +0 -1
  151. package/dist/move-detection.d.ts +0 -211
  152. package/dist/move-detection.d.ts.map +0 -1
  153. package/dist/move-detection.js +0 -390
  154. package/dist/move-detection.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"atomizer.js","sourceRoot":"","sources":["../src/atomizer.ts"],"names":[],"mappings":"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"}
@@ -1,82 +0,0 @@
1
- /**
2
- * LCS Algorithm for Atoms
3
- *
4
- * Implements hash-based Longest Common Subsequence (LCS) algorithm
5
- * for comparing arrays of ComparisonUnitAtom.
6
- */
7
- import type { ComparisonUnitAtom } from '../../core-types.js';
8
- /**
9
- * Represents a match between atoms in original and revised documents.
10
- */
11
- export interface AtomMatch {
12
- /** Index in the original atom array */
13
- originalIndex: number;
14
- /** Index in the revised atom array */
15
- revisedIndex: number;
16
- }
17
- /**
18
- * Result of the LCS comparison.
19
- */
20
- export interface LcsResult {
21
- /** Matched atom pairs (in LCS) */
22
- matches: AtomMatch[];
23
- /** Indices of atoms only in original (deleted) */
24
- deletedIndices: number[];
25
- /** Indices of atoms only in revised (inserted) */
26
- insertedIndices: number[];
27
- }
28
- /**
29
- * Compute the Longest Common Subsequence of two atom arrays.
30
- *
31
- * Uses hash-based comparison for O(1) equality checks.
32
- * Time complexity: O(N * M) where N and M are array lengths.
33
- *
34
- * @param original - Atoms from the original document
35
- * @param revised - Atoms from the revised document
36
- * @returns LCS result with matches and differences
37
- */
38
- export declare function computeAtomLcs(original: ComparisonUnitAtom[], revised: ComparisonUnitAtom[]): LcsResult;
39
- /**
40
- * Mark correlation status on atoms based on LCS result.
41
- *
42
- * Sets atoms to Equal, Deleted, or Inserted status.
43
- * Also links matched atoms via comparisonUnitAtomBefore reference.
44
- *
45
- * @param original - Atoms from the original document
46
- * @param revised - Atoms from the revised document
47
- * @param lcsResult - Result from computeAtomLcs
48
- */
49
- export declare function markCorrelationStatus(original: ComparisonUnitAtom[], revised: ComparisonUnitAtom[], lcsResult: LcsResult): void;
50
- /**
51
- * Create a merged atom list for document reconstruction.
52
- *
53
- * Interleaves original and revised atoms in document order,
54
- * preserving the structure needed for track changes rendering.
55
- *
56
- * @param original - Atoms from the original document (with status marked)
57
- * @param revised - Atoms from the revised document (with status marked)
58
- * @param lcsResult - Result from computeAtomLcs
59
- * @returns Merged atom list in document order
60
- */
61
- export declare function createMergedAtomList(original: ComparisonUnitAtom[], revised: ComparisonUnitAtom[], lcsResult: LcsResult): ComparisonUnitAtom[];
62
- export declare function assignUnifiedParagraphIndices(original: ComparisonUnitAtom[], revised: ComparisonUnitAtom[], merged: ComparisonUnitAtom[], lcsResult: LcsResult): void;
63
- /**
64
- * Statistics from the LCS comparison.
65
- */
66
- export interface LcsStats {
67
- /** Number of atoms that are equal */
68
- equal: number;
69
- /** Number of atoms deleted from original */
70
- deleted: number;
71
- /** Number of atoms inserted in revised */
72
- inserted: number;
73
- /** Total atoms in original */
74
- originalCount: number;
75
- /** Total atoms in revised */
76
- revisedCount: number;
77
- }
78
- /**
79
- * Compute statistics from LCS result.
80
- */
81
- export declare function computeLcsStats(original: ComparisonUnitAtom[], revised: ComparisonUnitAtom[], lcsResult: LcsResult): LcsStats;
82
- //# sourceMappingURL=atomLcs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"atomLcs.d.ts","sourceRoot":"","sources":["../../../src/baselines/atomizer/atomLcs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAK9D;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,kCAAkC;IAClC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,kDAAkD;IAClD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,kDAAkD;IAClD,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,OAAO,EAAE,kBAAkB,EAAE,GAC5B,SAAS,CAwDX;AA8BD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,SAAS,EAAE,SAAS,GACnB,IAAI,CAsBN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,SAAS,EAAE,SAAS,GACnB,kBAAkB,EAAE,CAmFtB;AAwCD,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,MAAM,EAAE,kBAAkB,EAAE,EAC5B,SAAS,EAAE,SAAS,GACnB,IAAI,CAmHN;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,SAAS,EAAE,SAAS,GACnB,QAAQ,CAQV"}
@@ -1,376 +0,0 @@
1
- /**
2
- * LCS Algorithm for Atoms
3
- *
4
- * Implements hash-based Longest Common Subsequence (LCS) algorithm
5
- * for comparing arrays of ComparisonUnitAtom.
6
- */
7
- import { CorrelationStatus } from '../../core-types.js';
8
- import { EMPTY_PARAGRAPH_TAG } from '../../atomizer.js';
9
- import { debug } from './debug.js';
10
- /**
11
- * Compute the Longest Common Subsequence of two atom arrays.
12
- *
13
- * Uses hash-based comparison for O(1) equality checks.
14
- * Time complexity: O(N * M) where N and M are array lengths.
15
- *
16
- * @param original - Atoms from the original document
17
- * @param revised - Atoms from the revised document
18
- * @returns LCS result with matches and differences
19
- */
20
- export function computeAtomLcs(original, revised) {
21
- const n = original.length;
22
- const m = revised.length;
23
- // Build LCS length table
24
- // dp[i][j] = length of LCS of original[0..i-1] and revised[0..j-1]
25
- const dp = Array(n + 1)
26
- .fill(null)
27
- .map(() => Array(m + 1).fill(0));
28
- for (let i = 1; i <= n; i++) {
29
- for (let j = 1; j <= m; j++) {
30
- if (atomsEqual(original[i - 1], revised[j - 1])) {
31
- dp[i][j] = dp[i - 1][j - 1] + 1;
32
- }
33
- else {
34
- dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
35
- }
36
- }
37
- }
38
- // Backtrack to find the actual LCS matches
39
- const matches = [];
40
- let i = n;
41
- let j = m;
42
- while (i > 0 && j > 0) {
43
- if (atomsEqual(original[i - 1], revised[j - 1])) {
44
- matches.unshift({ originalIndex: i - 1, revisedIndex: j - 1 });
45
- i--;
46
- j--;
47
- }
48
- else if (dp[i - 1][j] > dp[i][j - 1]) {
49
- i--;
50
- }
51
- else {
52
- j--;
53
- }
54
- }
55
- // Find deleted and inserted indices
56
- const matchedOriginal = new Set(matches.map((m) => m.originalIndex));
57
- const matchedRevised = new Set(matches.map((m) => m.revisedIndex));
58
- const deletedIndices = [];
59
- for (let idx = 0; idx < n; idx++) {
60
- if (!matchedOriginal.has(idx)) {
61
- deletedIndices.push(idx);
62
- }
63
- }
64
- const insertedIndices = [];
65
- for (let idx = 0; idx < m; idx++) {
66
- if (!matchedRevised.has(idx)) {
67
- insertedIndices.push(idx);
68
- }
69
- }
70
- return { matches, deletedIndices, insertedIndices };
71
- }
72
- /**
73
- * Check if two atoms are equal based on their hash.
74
- *
75
- * For more precise comparison, we also check the text content
76
- * and ancestor context to avoid false positives from hash collisions.
77
- */
78
- function atomsEqual(a, b) {
79
- // First check hash for quick rejection
80
- if (a.sha1Hash !== b.sha1Hash) {
81
- return false;
82
- }
83
- // Same hash - verify content to avoid collisions
84
- const aText = a.contentElement.textContent ?? '';
85
- const bText = b.contentElement.textContent ?? '';
86
- if (aText !== bText) {
87
- return false;
88
- }
89
- // Check tag name
90
- if (a.contentElement.tagName !== b.contentElement.tagName) {
91
- return false;
92
- }
93
- return true;
94
- }
95
- /**
96
- * Mark correlation status on atoms based on LCS result.
97
- *
98
- * Sets atoms to Equal, Deleted, or Inserted status.
99
- * Also links matched atoms via comparisonUnitAtomBefore reference.
100
- *
101
- * @param original - Atoms from the original document
102
- * @param revised - Atoms from the revised document
103
- * @param lcsResult - Result from computeAtomLcs
104
- */
105
- export function markCorrelationStatus(original, revised, lcsResult) {
106
- // Mark matched atoms as Equal and link them
107
- for (const match of lcsResult.matches) {
108
- const origAtom = original[match.originalIndex];
109
- const revAtom = revised[match.revisedIndex];
110
- origAtom.correlationStatus = CorrelationStatus.Equal;
111
- revAtom.correlationStatus = CorrelationStatus.Equal;
112
- // Link revised atom to original for format change detection
113
- revAtom.comparisonUnitAtomBefore = origAtom;
114
- }
115
- // Mark deleted atoms
116
- for (const idx of lcsResult.deletedIndices) {
117
- original[idx].correlationStatus = CorrelationStatus.Deleted;
118
- }
119
- // Mark inserted atoms
120
- for (const idx of lcsResult.insertedIndices) {
121
- revised[idx].correlationStatus = CorrelationStatus.Inserted;
122
- }
123
- }
124
- /**
125
- * Create a merged atom list for document reconstruction.
126
- *
127
- * Interleaves original and revised atoms in document order,
128
- * preserving the structure needed for track changes rendering.
129
- *
130
- * @param original - Atoms from the original document (with status marked)
131
- * @param revised - Atoms from the revised document (with status marked)
132
- * @param lcsResult - Result from computeAtomLcs
133
- * @returns Merged atom list in document order
134
- */
135
- export function createMergedAtomList(original, revised, lcsResult) {
136
- const merged = [];
137
- // Build maps for quick lookup
138
- const originalToRevised = new Map();
139
- const revisedToOriginal = new Map();
140
- for (const match of lcsResult.matches) {
141
- originalToRevised.set(match.originalIndex, match.revisedIndex);
142
- revisedToOriginal.set(match.revisedIndex, match.originalIndex);
143
- }
144
- const deletedSet = new Set(lcsResult.deletedIndices);
145
- const insertedSet = new Set(lcsResult.insertedIndices);
146
- // We'll walk through the revised document order
147
- // and insert deleted atoms at appropriate positions
148
- let originalPtr = 0;
149
- let revisedPtr = 0;
150
- while (revisedPtr < revised.length || originalPtr < original.length) {
151
- // First, add any deleted atoms that come before the current revised position
152
- while (originalPtr < original.length && deletedSet.has(originalPtr)) {
153
- const atom = original[originalPtr];
154
- atom.sourceDocument = 'original';
155
- merged.push(atom);
156
- originalPtr++;
157
- }
158
- // Now handle the current revised atom
159
- if (revisedPtr < revised.length) {
160
- const revAtom = revised[revisedPtr];
161
- if (insertedSet.has(revisedPtr)) {
162
- // This is an inserted atom
163
- revAtom.sourceDocument = 'revised';
164
- merged.push(revAtom);
165
- }
166
- else {
167
- // This is an equal atom - advance original pointer past its match
168
- const matchedOrigIdx = revisedToOriginal.get(revisedPtr);
169
- if (matchedOrigIdx !== undefined) {
170
- // Add any deleted atoms before this match
171
- while (originalPtr < matchedOrigIdx) {
172
- if (deletedSet.has(originalPtr)) {
173
- const atom = original[originalPtr];
174
- atom.sourceDocument = 'original';
175
- merged.push(atom);
176
- }
177
- originalPtr++;
178
- }
179
- // For equal empty paragraphs, use the original version to preserve
180
- // the original document's structure (important for reject all changes)
181
- const origAtom = original[matchedOrigIdx];
182
- if (origAtom.contentElement.tagName === EMPTY_PARAGRAPH_TAG) {
183
- origAtom.sourceDocument = 'original';
184
- merged.push(origAtom);
185
- }
186
- else {
187
- // For non-empty content, use the revised version
188
- revAtom.sourceDocument = 'revised';
189
- merged.push(revAtom);
190
- }
191
- // Advance past the matched original atom
192
- originalPtr = matchedOrigIdx + 1;
193
- }
194
- else {
195
- merged.push(revAtom);
196
- }
197
- }
198
- revisedPtr++;
199
- }
200
- else {
201
- // No more revised atoms - add remaining deleted originals
202
- while (originalPtr < original.length) {
203
- if (deletedSet.has(originalPtr)) {
204
- const atom = original[originalPtr];
205
- atom.sourceDocument = 'original';
206
- merged.push(atom);
207
- }
208
- originalPtr++;
209
- }
210
- }
211
- }
212
- return merged;
213
- }
214
- /**
215
- * Compute unified paragraph indices for merged atoms.
216
- *
217
- * Maps original and revised paragraph indices to a unified output paragraph index.
218
- * This ensures that:
219
- * 1. Atoms from corresponding paragraphs (Equal matches) share the same output index
220
- * 2. Deleted paragraphs get their own output indices interleaved with matched paragraphs
221
- * 3. Inserted paragraphs get their own output indices
222
- *
223
- * @param original - Original atoms with paragraphIndex set
224
- * @param revised - Revised atoms with paragraphIndex set
225
- * @param merged - Merged atom list
226
- * @param lcsResult - LCS result with matches
227
- */
228
- /**
229
- * Compute a container key for an atom based on its ancestor chain.
230
- * For atoms inside table cells, produces a string like "w:tbl:0/w:tr:2/w:tc:1".
231
- * For atoms not in tables, produces "".
232
- * Used to prevent cross-cell paragraph matches in unified index assignment.
233
- */
234
- function getAtomContainerKey(atom) {
235
- const parts = [];
236
- for (const el of atom.ancestorElements) {
237
- if (el.tagName === 'w:tc' || el.tagName === 'w:tr' || el.tagName === 'w:tbl') {
238
- let index = 0;
239
- let sibling = el.previousSibling;
240
- while (sibling) {
241
- if (sibling.nodeType === 1 && sibling.tagName === el.tagName) {
242
- index++;
243
- }
244
- sibling = sibling.previousSibling;
245
- }
246
- parts.push(`${el.tagName}:${index}`);
247
- }
248
- }
249
- return parts.join('/');
250
- }
251
- export function assignUnifiedParagraphIndices(original, revised, merged, lcsResult) {
252
- // Build paragraph correspondence from matches.
253
- // Container-aware (issue #65): skip matches where atoms are in different
254
- // structural containers (e.g., different table cells) to prevent empty
255
- // paragraphs from matching across cell boundaries.
256
- const originalToRevisedPara = new Map();
257
- for (const match of lcsResult.matches) {
258
- const origAtom = original[match.originalIndex];
259
- const revAtom = revised[match.revisedIndex];
260
- if (origAtom.paragraphIndex !== undefined && revAtom.paragraphIndex !== undefined) {
261
- if (!originalToRevisedPara.has(origAtom.paragraphIndex)) {
262
- // Only establish correspondence if atoms are in the same container
263
- if (getAtomContainerKey(origAtom) === getAtomContainerKey(revAtom)) {
264
- originalToRevisedPara.set(origAtom.paragraphIndex, revAtom.paragraphIndex);
265
- }
266
- }
267
- }
268
- }
269
- // Collect all unique original paragraph indices
270
- const allOriginalParas = [...new Set(original.map(a => a.paragraphIndex).filter(p => p !== undefined))];
271
- allOriginalParas.sort((a, b) => a - b);
272
- // Collect all unique revised paragraph indices
273
- const allRevisedParas = [...new Set(revised.map(a => a.paragraphIndex).filter(p => p !== undefined))];
274
- allRevisedParas.sort((a, b) => a - b);
275
- // Build interleaved output index sequence
276
- // Walk through original paragraphs in order, interleaving with revised paragraphs
277
- const originalToOutputPara = new Map();
278
- const revisedToOutputPara = new Map();
279
- let nextOutputPara = 0;
280
- let revisedIdx = 0;
281
- for (const origPara of allOriginalParas) {
282
- const correspondingRevised = originalToRevisedPara.get(origPara);
283
- if (correspondingRevised !== undefined) {
284
- // This original paragraph has a correspondent in revised
285
- // First, assign output indices to any revised paragraphs before this correspondent
286
- while (revisedIdx < allRevisedParas.length && allRevisedParas[revisedIdx] < correspondingRevised) {
287
- const revPara = allRevisedParas[revisedIdx];
288
- if (!revisedToOutputPara.has(revPara)) {
289
- revisedToOutputPara.set(revPara, nextOutputPara++);
290
- }
291
- revisedIdx++;
292
- }
293
- // Assign the same output index to both original and revised
294
- if (!revisedToOutputPara.has(correspondingRevised)) {
295
- revisedToOutputPara.set(correspondingRevised, nextOutputPara);
296
- originalToOutputPara.set(origPara, nextOutputPara);
297
- nextOutputPara++;
298
- }
299
- else {
300
- originalToOutputPara.set(origPara, revisedToOutputPara.get(correspondingRevised));
301
- }
302
- // Move past this revised paragraph
303
- if (revisedIdx < allRevisedParas.length && allRevisedParas[revisedIdx] === correspondingRevised) {
304
- revisedIdx++;
305
- }
306
- }
307
- else {
308
- // This original paragraph is deleted (no correspondent)
309
- // Give it its own output index
310
- originalToOutputPara.set(origPara, nextOutputPara++);
311
- }
312
- }
313
- // Assign output indices to any remaining revised paragraphs (inserted)
314
- while (revisedIdx < allRevisedParas.length) {
315
- const revPara = allRevisedParas[revisedIdx];
316
- if (!revisedToOutputPara.has(revPara)) {
317
- revisedToOutputPara.set(revPara, nextOutputPara++);
318
- }
319
- revisedIdx++;
320
- }
321
- // Assign unified paragraph indices to merged atoms
322
- let emptyParagraphsWithoutMapping = 0;
323
- for (const atom of merged) {
324
- if (atom.paragraphIndex === undefined)
325
- continue;
326
- const isEmptyPara = atom.contentElement.tagName === EMPTY_PARAGRAPH_TAG;
327
- if (atom.correlationStatus === CorrelationStatus.Deleted ||
328
- atom.correlationStatus === CorrelationStatus.MovedSource) {
329
- // Deleted and MovedSource atoms have paragraph indices from original
330
- const outputPara = originalToOutputPara.get(atom.paragraphIndex);
331
- if (outputPara !== undefined) {
332
- atom.paragraphIndex = outputPara;
333
- }
334
- else if (isEmptyPara) {
335
- emptyParagraphsWithoutMapping++;
336
- }
337
- }
338
- else if (atom.correlationStatus === CorrelationStatus.Equal && isEmptyPara) {
339
- // Equal empty paragraphs use the original atom (see createMergedAtomList),
340
- // so their paragraphIndex is from original, not revised
341
- const outputPara = originalToOutputPara.get(atom.paragraphIndex);
342
- if (outputPara !== undefined) {
343
- atom.paragraphIndex = outputPara;
344
- }
345
- else {
346
- emptyParagraphsWithoutMapping++;
347
- }
348
- }
349
- else {
350
- // Inserted and Equal (non-empty) atoms have paragraph indices from revised
351
- const outputPara = revisedToOutputPara.get(atom.paragraphIndex);
352
- if (outputPara !== undefined) {
353
- atom.paragraphIndex = outputPara;
354
- }
355
- else if (isEmptyPara) {
356
- emptyParagraphsWithoutMapping++;
357
- }
358
- }
359
- }
360
- if (emptyParagraphsWithoutMapping > 0) {
361
- debug('atomLcs', `Empty paragraphs without mapping: ${emptyParagraphsWithoutMapping}`);
362
- }
363
- }
364
- /**
365
- * Compute statistics from LCS result.
366
- */
367
- export function computeLcsStats(original, revised, lcsResult) {
368
- return {
369
- equal: lcsResult.matches.length,
370
- deleted: lcsResult.deletedIndices.length,
371
- inserted: lcsResult.insertedIndices.length,
372
- originalCount: original.length,
373
- revisedCount: revised.length,
374
- };
375
- }
376
- //# sourceMappingURL=atomLcs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"atomLcs.js","sourceRoot":"","sources":["../../../src/baselines/atomizer/atomLcs.ts"],"names":[],"mappings":"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"}
@@ -1,99 +0,0 @@
1
- /**
2
- * Auxiliary Part ID Collision Resolution
3
- *
4
- * Auxiliary part IDs (`w:id` on comments, footnotes, endnotes — OOXML
5
- * ST_DecimalNumber) are document-local: independently authored documents
6
- * routinely both start at `w:id="1"`. When the original and revised inputs
7
- * define *different* content under the same ID, the post-reconstruction
8
- * definition merge used to silently skip the source-side definition ("ID
9
- * already present"), leaving anchors from one side bound to the other side's
10
- * content.
11
- *
12
- * Strategy decision (issue #107 offered renumber vs. detect-and-flag): we
13
- * renumber, because detect-and-flag would fail comparisons between any two
14
- * independently authored commented documents — a core use case — and there is
15
- * no collision-free fallback mode to flag into. Renumbering happens *before*
16
- * comparison, on the revised archive, rather than inside the merge step:
17
- * after reconstruction the merged document.xml no longer records which anchor
18
- * came from which side, but at load time the revised archive can be rewritten
19
- * consistently (part definition + every ID-bearing anchor in document.xml,
20
- * header/footer parts, and the note stories — comments may be anchored on
21
- * footnote/endnote text). Downstream, colliding anchors then differ by ID, so
22
- * the LCS emits them as delete/insert pairs and the existing definition merge
23
- * imports the renumbered definition — each anchor resolves to the content it
24
- * was authored against, in both reconstruction modes.
25
- *
26
- * IDs whose definitions are content-identical on both sides are left alone so
27
- * their anchors still match as unchanged content (no duplicate definitions),
28
- * which keeps the common derived-document case byte-stable.
29
- *
30
- * Comment ancillary parts have a second collision axis: commentsExtended.xml
31
- * and commentsIds.xml are keyed by the w14:paraId on comment-content
32
- * paragraphs, not by w:id. We restamp colliding revised-side comment paraIds
33
- * before comparison for the same reason: merged ancillary rows must never bind
34
- * to the other document's comment paragraph.
35
- *
36
- * @see https://github.com/UseJunior/safe-docx/issues/107
37
- * @see https://github.com/UseJunior/safe-docx/issues/448
38
- */
39
- import type { DocxArchive } from '../../shared/docx/DocxArchive.js';
40
- export interface AuxiliaryPartDescriptor {
41
- label: string;
42
- partPath: string;
43
- referenceTag: string;
44
- entryTag: string;
45
- rootTag: string;
46
- contentType: string;
47
- relationshipType: string;
48
- /**
49
- * Every document.xml / header / footer tag that carries this part's `w:id`.
50
- * Superset of `referenceTag`: comments also anchor via range markers.
51
- */
52
- idBearingTags: string[];
53
- }
54
- export declare const AUXILIARY_PARTS: AuxiliaryPartDescriptor[];
55
- /**
56
- * Parse an auxiliary part and extract entry elements by ID.
57
- */
58
- export declare function parseEntries(xml: string, entryTag: string): {
59
- doc: Document;
60
- entries: Map<string, Element>;
61
- };
62
- export interface RenumberedAuxiliaryId {
63
- label: string;
64
- fromId: string;
65
- toId: string;
66
- }
67
- /**
68
- * Detect auxiliary `w:id` values defined with different content on both
69
- * sides and renumber the revised side's definitions and anchors into a fresh
70
- * ID space, so the comparison never binds an anchor to the other document's
71
- * content. Mutates `revisedArchive` in place; the originals' IDs are kept so
72
- * the comparison base (rebuild mode clones the original archive) stays
73
- * untouched.
74
- *
75
- * Anchors are rewritten in every revised-side story that can carry them:
76
- * document.xml, header/footer parts, and the auxiliary parts themselves —
77
- * Word allows comments anchored on footnote/endnote text, so a renumbered
78
- * comment's anchor may live inside footnotes.xml/endnotes.xml.
79
- *
80
- * Returns the applied renumberings (empty on the no-collision fast path).
81
- */
82
- export declare function renumberCollidingAuxiliaryIds(originalArchive: DocxArchive, revisedArchive: DocxArchive): Promise<RenumberedAuxiliaryId[]>;
83
- export interface RestampedCommentParaId {
84
- fromParaId: string;
85
- toParaId: string;
86
- }
87
- /**
88
- * Restamp revised-side comment paragraph paraIds when they collide with
89
- * original-side comment paraIds that belong to different comment content.
90
- *
91
- * This pass intentionally matches literal Word prefixes (`w14`, `w15`, and
92
- * `w16cid`) for both DOM lookup and raw allocation scans, consistent with the
93
- * rest of this module's prefix-literal auxiliary part handling. Mutates
94
- * `revisedArchive` in place and returns the applied restamps.
95
- *
96
- * @see https://github.com/UseJunior/safe-docx/issues/448
97
- */
98
- export declare function restampCollidingCommentParaIds(originalArchive: DocxArchive, revisedArchive: DocxArchive): Promise<RestampedCommentParaId[]>;
99
- //# sourceMappingURL=auxiliaryIdCollision.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auxiliaryIdCollision.d.ts","sourceRoot":"","sources":["../../../src/baselines/atomizer/auxiliaryIdCollision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAIpE,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,eAAO,MAAM,eAAe,EAAE,uBAAuB,EA+BpD,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GACf;IAAE,GAAG,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAUlD;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAuED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,6BAA6B,CACjD,eAAe,EAAE,WAAW,EAC5B,cAAc,EAAE,WAAW,GAC1B,OAAO,CAAC,qBAAqB,EAAE,CAAC,CA+FlC;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAuDD;;;;;;;;;;GAUG;AACH,wBAAsB,8BAA8B,CAClD,eAAe,EAAE,WAAW,EAC5B,cAAc,EAAE,WAAW,GAC1B,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA8GnC"}