@usejunior/docx-core 0.15.0 → 0.17.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 (221) hide show
  1. package/README.md +18 -83
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/cli/conformance-adapter.d.ts +14 -0
  4. package/dist/cli/conformance-adapter.d.ts.map +1 -1
  5. package/dist/cli/conformance-adapter.js +104 -12
  6. package/dist/cli/conformance-adapter.js.map +1 -1
  7. package/dist/footnotes.d.ts +7 -5
  8. package/dist/footnotes.d.ts.map +1 -1
  9. package/dist/footnotes.js +7 -5
  10. package/dist/footnotes.js.map +1 -1
  11. package/dist/generated/ecma-376-vocabulary.d.ts +93 -0
  12. package/dist/generated/ecma-376-vocabulary.d.ts.map +1 -0
  13. package/dist/generated/ecma-376-vocabulary.js +87 -0
  14. package/dist/generated/ecma-376-vocabulary.js.map +1 -0
  15. package/dist/generation/compile.js +2 -2
  16. package/dist/generation/compile.js.map +1 -1
  17. package/dist/generation/emit/comments-part.d.ts +2 -0
  18. package/dist/generation/emit/comments-part.d.ts.map +1 -1
  19. package/dist/generation/emit/comments-part.js +2 -0
  20. package/dist/generation/emit/comments-part.js.map +1 -1
  21. package/dist/generation/emit/paragraph.d.ts +3 -0
  22. package/dist/generation/emit/paragraph.d.ts.map +1 -1
  23. package/dist/generation/emit/paragraph.js +3 -0
  24. package/dist/generation/emit/paragraph.js.map +1 -1
  25. package/dist/generation/emit/run.d.ts.map +1 -1
  26. package/dist/generation/emit/run.js +6 -1
  27. package/dist/generation/emit/run.js.map +1 -1
  28. package/dist/generation/emit/settings-part.d.ts +12 -3
  29. package/dist/generation/emit/settings-part.d.ts.map +1 -1
  30. package/dist/generation/emit/settings-part.js +23 -5
  31. package/dist/generation/emit/settings-part.js.map +1 -1
  32. package/dist/generation/ordering.d.ts +3 -1
  33. package/dist/generation/ordering.d.ts.map +1 -1
  34. package/dist/generation/ordering.js +3 -1
  35. package/dist/generation/ordering.js.map +1 -1
  36. package/dist/generation/schema-enum-domains.d.ts +27 -0
  37. package/dist/generation/schema-enum-domains.d.ts.map +1 -0
  38. package/dist/generation/schema-enum-domains.js +69 -0
  39. package/dist/generation/schema-enum-domains.js.map +1 -0
  40. package/dist/generation/structural-checks.js +7 -1
  41. package/dist/generation/structural-checks.js.map +1 -1
  42. package/dist/generation/validate-spec.d.ts.map +1 -1
  43. package/dist/generation/validate-spec.js +149 -31
  44. package/dist/generation/validate-spec.js.map +1 -1
  45. package/dist/index.d.ts +7 -24
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +7 -46
  48. package/dist/index.js.map +1 -1
  49. package/dist/primitives/accept_ai_edits.d.ts +87 -0
  50. package/dist/primitives/accept_ai_edits.d.ts.map +1 -0
  51. package/dist/primitives/accept_ai_edits.js +253 -0
  52. package/dist/primitives/accept_ai_edits.js.map +1 -0
  53. package/dist/primitives/accept_changes.d.ts +36 -3
  54. package/dist/primitives/accept_changes.d.ts.map +1 -1
  55. package/dist/primitives/accept_changes.js +67 -31
  56. package/dist/primitives/accept_changes.js.map +1 -1
  57. package/dist/primitives/bookmarks.d.ts +44 -0
  58. package/dist/primitives/bookmarks.d.ts.map +1 -1
  59. package/dist/primitives/bookmarks.js +149 -11
  60. package/dist/primitives/bookmarks.js.map +1 -1
  61. package/dist/primitives/document.d.ts +53 -1
  62. package/dist/primitives/document.d.ts.map +1 -1
  63. package/dist/primitives/document.js +146 -2
  64. package/dist/primitives/document.js.map +1 -1
  65. package/dist/primitives/dom-helpers.d.ts.map +1 -1
  66. package/dist/primitives/dom-helpers.js +7 -2
  67. package/dist/primitives/dom-helpers.js.map +1 -1
  68. package/dist/primitives/index.d.ts +2 -1
  69. package/dist/primitives/index.d.ts.map +1 -1
  70. package/dist/primitives/index.js +2 -1
  71. package/dist/primitives/index.js.map +1 -1
  72. package/dist/primitives/layout.d.ts.map +1 -1
  73. package/dist/primitives/layout.js +41 -1
  74. package/dist/primitives/layout.js.map +1 -1
  75. package/dist/primitives/namespaces.d.ts +2 -0
  76. package/dist/primitives/namespaces.d.ts.map +1 -1
  77. package/dist/primitives/namespaces.js +2 -0
  78. package/dist/primitives/namespaces.js.map +1 -1
  79. package/dist/primitives/reject_changes.d.ts +21 -2
  80. package/dist/primitives/reject_changes.d.ts.map +1 -1
  81. package/dist/primitives/reject_changes.js +71 -31
  82. package/dist/primitives/reject_changes.js.map +1 -1
  83. package/dist/primitives/relationships.d.ts +33 -0
  84. package/dist/primitives/relationships.d.ts.map +1 -1
  85. package/dist/primitives/relationships.js +84 -1
  86. package/dist/primitives/relationships.js.map +1 -1
  87. package/dist/primitives/sectPrAudit.d.ts +11 -2
  88. package/dist/primitives/sectPrAudit.d.ts.map +1 -1
  89. package/dist/primitives/sectPrAudit.js +148 -23
  90. package/dist/primitives/sectPrAudit.js.map +1 -1
  91. package/dist/primitives/track-changes-emitter.d.ts +4 -0
  92. package/dist/primitives/track-changes-emitter.d.ts.map +1 -1
  93. package/dist/primitives/track-changes-emitter.js +5 -2
  94. package/dist/primitives/track-changes-emitter.js.map +1 -1
  95. package/dist/primitives/validate_ai_revisions.d.ts.map +1 -1
  96. package/dist/primitives/validate_ai_revisions.js +13 -5
  97. package/dist/primitives/validate_ai_revisions.js.map +1 -1
  98. package/dist/primitives/zip.d.ts.map +1 -1
  99. package/dist/primitives/zip.js +6 -2
  100. package/dist/primitives/zip.js.map +1 -1
  101. package/dist/shared/field-structure.d.ts +6 -0
  102. package/dist/shared/field-structure.d.ts.map +1 -1
  103. package/dist/shared/field-structure.js +6 -0
  104. package/dist/shared/field-structure.js.map +1 -1
  105. package/package.json +4 -8
  106. package/dist/atomizer.d.ts +0 -273
  107. package/dist/atomizer.d.ts.map +0 -1
  108. package/dist/atomizer.js +0 -1002
  109. package/dist/atomizer.js.map +0 -1
  110. package/dist/baselines/atomizer/atomLcs.d.ts +0 -82
  111. package/dist/baselines/atomizer/atomLcs.d.ts.map +0 -1
  112. package/dist/baselines/atomizer/atomLcs.js +0 -376
  113. package/dist/baselines/atomizer/atomLcs.js.map +0 -1
  114. package/dist/baselines/atomizer/auxiliaryIdCollision.d.ts +0 -99
  115. package/dist/baselines/atomizer/auxiliaryIdCollision.d.ts.map +0 -1
  116. package/dist/baselines/atomizer/auxiliaryIdCollision.js +0 -415
  117. package/dist/baselines/atomizer/auxiliaryIdCollision.js.map +0 -1
  118. package/dist/baselines/atomizer/consumerCompatibility.d.ts +0 -2
  119. package/dist/baselines/atomizer/consumerCompatibility.d.ts.map +0 -1
  120. package/dist/baselines/atomizer/consumerCompatibility.js +0 -188
  121. package/dist/baselines/atomizer/consumerCompatibility.js.map +0 -1
  122. package/dist/baselines/atomizer/debug.d.ts +0 -41
  123. package/dist/baselines/atomizer/debug.d.ts.map +0 -1
  124. package/dist/baselines/atomizer/debug.js +0 -85
  125. package/dist/baselines/atomizer/debug.js.map +0 -1
  126. package/dist/baselines/atomizer/documentReconstructor.d.ts +0 -75
  127. package/dist/baselines/atomizer/documentReconstructor.d.ts.map +0 -1
  128. package/dist/baselines/atomizer/documentReconstructor.js +0 -1449
  129. package/dist/baselines/atomizer/documentReconstructor.js.map +0 -1
  130. package/dist/baselines/atomizer/formattingFidelity.d.ts +0 -99
  131. package/dist/baselines/atomizer/formattingFidelity.d.ts.map +0 -1
  132. package/dist/baselines/atomizer/formattingFidelity.js +0 -449
  133. package/dist/baselines/atomizer/formattingFidelity.js.map +0 -1
  134. package/dist/baselines/atomizer/hierarchicalLcs.d.ts +0 -121
  135. package/dist/baselines/atomizer/hierarchicalLcs.d.ts.map +0 -1
  136. package/dist/baselines/atomizer/hierarchicalLcs.js +0 -753
  137. package/dist/baselines/atomizer/hierarchicalLcs.js.map +0 -1
  138. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.d.ts +0 -37
  139. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.d.ts.map +0 -1
  140. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.js +0 -189
  141. package/dist/baselines/atomizer/inPlaceModifier-bookmarks.js.map +0 -1
  142. package/dist/baselines/atomizer/inPlaceModifier-containers.d.ts +0 -74
  143. package/dist/baselines/atomizer/inPlaceModifier-containers.d.ts.map +0 -1
  144. package/dist/baselines/atomizer/inPlaceModifier-containers.js +0 -171
  145. package/dist/baselines/atomizer/inPlaceModifier-containers.js.map +0 -1
  146. package/dist/baselines/atomizer/inPlaceModifier-deletion.d.ts +0 -88
  147. package/dist/baselines/atomizer/inPlaceModifier-deletion.d.ts.map +0 -1
  148. package/dist/baselines/atomizer/inPlaceModifier-deletion.js +0 -326
  149. package/dist/baselines/atomizer/inPlaceModifier-deletion.js.map +0 -1
  150. package/dist/baselines/atomizer/inPlaceModifier-postprocess.d.ts +0 -85
  151. package/dist/baselines/atomizer/inPlaceModifier-postprocess.d.ts.map +0 -1
  152. package/dist/baselines/atomizer/inPlaceModifier-postprocess.js +0 -402
  153. package/dist/baselines/atomizer/inPlaceModifier-postprocess.js.map +0 -1
  154. package/dist/baselines/atomizer/inPlaceModifier-presplit.d.ts +0 -39
  155. package/dist/baselines/atomizer/inPlaceModifier-presplit.d.ts.map +0 -1
  156. package/dist/baselines/atomizer/inPlaceModifier-presplit.js +0 -265
  157. package/dist/baselines/atomizer/inPlaceModifier-presplit.js.map +0 -1
  158. package/dist/baselines/atomizer/inPlaceModifier-shared.d.ts +0 -62
  159. package/dist/baselines/atomizer/inPlaceModifier-shared.d.ts.map +0 -1
  160. package/dist/baselines/atomizer/inPlaceModifier-shared.js +0 -139
  161. package/dist/baselines/atomizer/inPlaceModifier-shared.js.map +0 -1
  162. package/dist/baselines/atomizer/inPlaceModifier-wrappers.d.ts +0 -198
  163. package/dist/baselines/atomizer/inPlaceModifier-wrappers.d.ts.map +0 -1
  164. package/dist/baselines/atomizer/inPlaceModifier-wrappers.js +0 -475
  165. package/dist/baselines/atomizer/inPlaceModifier-wrappers.js.map +0 -1
  166. package/dist/baselines/atomizer/inPlaceModifier.d.ts +0 -27
  167. package/dist/baselines/atomizer/inPlaceModifier.d.ts.map +0 -1
  168. package/dist/baselines/atomizer/inPlaceModifier.js +0 -648
  169. package/dist/baselines/atomizer/inPlaceModifier.js.map +0 -1
  170. package/dist/baselines/atomizer/numberingIntegration.d.ts +0 -59
  171. package/dist/baselines/atomizer/numberingIntegration.d.ts.map +0 -1
  172. package/dist/baselines/atomizer/numberingIntegration.js +0 -209
  173. package/dist/baselines/atomizer/numberingIntegration.js.map +0 -1
  174. package/dist/baselines/atomizer/pipeline.d.ts +0 -103
  175. package/dist/baselines/atomizer/pipeline.d.ts.map +0 -1
  176. package/dist/baselines/atomizer/pipeline.js +0 -1160
  177. package/dist/baselines/atomizer/pipeline.js.map +0 -1
  178. package/dist/baselines/atomizer/premergeRuns.d.ts +0 -26
  179. package/dist/baselines/atomizer/premergeRuns.d.ts.map +0 -1
  180. package/dist/baselines/atomizer/premergeRuns.js +0 -153
  181. package/dist/baselines/atomizer/premergeRuns.js.map +0 -1
  182. package/dist/baselines/atomizer/trackChangesAcceptor.d.ts +0 -63
  183. package/dist/baselines/atomizer/trackChangesAcceptor.d.ts.map +0 -1
  184. package/dist/baselines/atomizer/trackChangesAcceptor.js +0 -254
  185. package/dist/baselines/atomizer/trackChangesAcceptor.js.map +0 -1
  186. package/dist/baselines/atomizer/trackChangesAcceptorAst.d.ts +0 -64
  187. package/dist/baselines/atomizer/trackChangesAcceptorAst.d.ts.map +0 -1
  188. package/dist/baselines/atomizer/trackChangesAcceptorAst.js +0 -642
  189. package/dist/baselines/atomizer/trackChangesAcceptorAst.js.map +0 -1
  190. package/dist/baselines/atomizer/xmlToWmlElement.d.ts +0 -65
  191. package/dist/baselines/atomizer/xmlToWmlElement.d.ts.map +0 -1
  192. package/dist/baselines/atomizer/xmlToWmlElement.js +0 -96
  193. package/dist/baselines/atomizer/xmlToWmlElement.js.map +0 -1
  194. package/dist/baselines/wmlcomparer/DocxodusWasm.d.ts +0 -51
  195. package/dist/baselines/wmlcomparer/DocxodusWasm.d.ts.map +0 -1
  196. package/dist/baselines/wmlcomparer/DocxodusWasm.js +0 -83
  197. package/dist/baselines/wmlcomparer/DocxodusWasm.js.map +0 -1
  198. package/dist/baselines/wmlcomparer/DotnetCli.d.ts +0 -40
  199. package/dist/baselines/wmlcomparer/DotnetCli.d.ts.map +0 -1
  200. package/dist/baselines/wmlcomparer/DotnetCli.js +0 -142
  201. package/dist/baselines/wmlcomparer/DotnetCli.js.map +0 -1
  202. package/dist/cli/compare-two.d.ts +0 -28
  203. package/dist/cli/compare-two.d.ts.map +0 -1
  204. package/dist/cli/compare-two.js +0 -112
  205. package/dist/cli/compare-two.js.map +0 -1
  206. package/dist/cli/index.d.ts +0 -3
  207. package/dist/cli/index.d.ts.map +0 -1
  208. package/dist/cli/index.js +0 -25
  209. package/dist/cli/index.js.map +0 -1
  210. package/dist/compare-types.d.ts +0 -197
  211. package/dist/compare-types.d.ts.map +0 -1
  212. package/dist/compare-types.js +0 -2
  213. package/dist/compare-types.js.map +0 -1
  214. package/dist/format-detection.d.ts +0 -120
  215. package/dist/format-detection.d.ts.map +0 -1
  216. package/dist/format-detection.js +0 -339
  217. package/dist/format-detection.js.map +0 -1
  218. package/dist/move-detection.d.ts +0 -211
  219. package/dist/move-detection.d.ts.map +0 -1
  220. package/dist/move-detection.js +0 -390
  221. package/dist/move-detection.js.map +0 -1
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export declare function runCli(argv?: string[]): Promise<void>;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAKA,wBAAsB,MAAM,CAAC,IAAI,WAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAU/D"}
package/dist/cli/index.js DELETED
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env node
2
- import { realpathSync } from 'node:fs';
3
- import { pathToFileURL } from 'node:url';
4
- import { runCompareCli } from './compare-two.js';
5
- export async function runCli(argv = process.argv) {
6
- const result = await runCompareCli(argv.slice(2));
7
- if ('help' in result && result.help) {
8
- // eslint-disable-next-line no-console
9
- console.log(result.text);
10
- return;
11
- }
12
- // eslint-disable-next-line no-console
13
- console.log(JSON.stringify(result));
14
- }
15
- // npm installs bins as node_modules/.bin symlinks, so argv[1] must be
16
- // realpath-resolved before comparing against import.meta.url (which node
17
- // always resolves to the real dist file). See #398.
18
- if (process.argv[1] && pathToFileURL(realpathSync(process.argv[1])).href === import.meta.url) {
19
- runCli(process.argv).catch((err) => {
20
- // eslint-disable-next-line no-console
21
- console.error(err?.message ?? String(err));
22
- process.exit(1);
23
- });
24
- }
25
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;IAC9C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACpC,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IAED,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,sEAAsE;AACtE,yEAAyE;AACzE,oDAAoD;AACpD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7F,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACjC,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,197 +0,0 @@
1
- export interface CompareOptions {
2
- /** Author name for revision tracking. Default: "Comparison" */
3
- author?: string;
4
- /**
5
- * Revision timestamp used for generated track changes (`w:date`).
6
- * Default: current time.
7
- */
8
- date?: Date;
9
- /** Ignore formatting differences. Default: true (v1) */
10
- ignoreFormatting?: boolean;
11
- /**
12
- * Atomizer-only normalization: merge adjacent <w:r> siblings with identical formatting
13
- * prior to comparison. This can reduce overly-granular diffs for heavily-fragmented docs.
14
- *
15
- * Default: true.
16
- */
17
- premergeRuns?: boolean;
18
- /**
19
- * How to reconstruct the output DOCX when using the atomizer engine:
20
- * - 'rebuild': rebuild document.xml from scratch (more reject/accept stable)
21
- * - 'inplace': modify the revised document AST in place (more experimental)
22
- *
23
- * Default: 'rebuild'
24
- */
25
- reconstructionMode?: ReconstructionMode;
26
- /**
27
- * Comparison engine to use:
28
- * - 'atomizer': Character-level comparison with move detection (recommended)
29
- * - 'wmlcomparer': .NET WmlComparer (requires external runtime)
30
- * - 'auto': Automatically select best available engine (currently 'atomizer')
31
- *
32
- * Default: 'auto'
33
- */
34
- engine?: 'wmlcomparer' | 'atomizer' | 'auto';
35
- }
36
- export interface CompareStats {
37
- /**
38
- * Human-facing inserted change ranges. This counts contiguous inserted atom
39
- * runs, matching the coalesced w:ins regions emitted in OOXML.
40
- */
41
- insertions: number;
42
- /**
43
- * Human-facing deleted change ranges. This counts contiguous deleted atom
44
- * runs, matching the coalesced w:del regions emitted in OOXML.
45
- */
46
- deletions: number;
47
- /**
48
- * Paragraphs containing both inserted and deleted content. Format-only
49
- * changes are reported separately in formatChanges.
50
- */
51
- modifications: number;
52
- /** Same value as insertions, exposed with explicit range-level semantics. */
53
- insertedRanges: number;
54
- /** Same value as deletions, exposed with explicit range-level semantics. */
55
- deletedRanges: number;
56
- /** Atom-level inserted units for granular/benchmark consumers. */
57
- insertedAtoms: number;
58
- /** Atom-level deleted units for granular/benchmark consumers. */
59
- deletedAtoms: number;
60
- /** Same value as modifications, exposed without overloading the term. */
61
- modifiedParagraphs: number;
62
- /** Contiguous format-only change ranges. */
63
- formatChanges: number;
64
- /** Atom-level format-only units for granular/benchmark consumers. */
65
- formatChangeAtoms: number;
66
- }
67
- export type ReconstructionMode = 'rebuild' | 'inplace';
68
- export type ReconstructionFallbackReason = 'round_trip_safety_check_failed';
69
- export type ReconstructionSafetyCheckName = 'acceptText' | 'rejectText' | 'acceptBookmarks' | 'rejectBookmarks' | 'fieldStructure';
70
- export interface ReconstructionSafetyChecks {
71
- acceptText: boolean;
72
- rejectText: boolean;
73
- acceptBookmarks: boolean;
74
- rejectBookmarks: boolean;
75
- fieldStructure: boolean;
76
- }
77
- export interface ReconstructionTextMismatchDetails {
78
- expectedLength: number;
79
- actualLength: number;
80
- firstDifferingParagraphIndex: number;
81
- expectedParagraph: string;
82
- actualParagraph: string;
83
- differenceSample: string[];
84
- }
85
- export interface ReconstructionIdDelta {
86
- missing: string[];
87
- unexpected: string[];
88
- }
89
- export interface ReconstructionBookmarkMismatchDetails {
90
- startNames: ReconstructionIdDelta;
91
- referencedBookmarkNames: ReconstructionIdDelta;
92
- unresolvedReferenceNames: ReconstructionIdDelta;
93
- startIds: ReconstructionIdDelta;
94
- endIds: ReconstructionIdDelta;
95
- expectedDuplicateStartNames: string[];
96
- actualDuplicateStartNames: string[];
97
- expectedDuplicateStartIds: string[];
98
- actualDuplicateStartIds: string[];
99
- expectedDuplicateEndIds: string[];
100
- actualDuplicateEndIds: string[];
101
- expectedUnmatchedStartIds: string[];
102
- actualUnmatchedStartIds: string[];
103
- expectedUnmatchedEndIds: string[];
104
- actualUnmatchedEndIds: string[];
105
- }
106
- export interface ReconstructionSafetyFailureDetails {
107
- acceptText?: ReconstructionTextMismatchDetails;
108
- rejectText?: ReconstructionTextMismatchDetails;
109
- acceptBookmarks?: ReconstructionBookmarkMismatchDetails;
110
- rejectBookmarks?: ReconstructionBookmarkMismatchDetails;
111
- }
112
- export interface ReconstructionIdDeltaSummary {
113
- missingCount: number;
114
- unexpectedCount: number;
115
- firstMissing?: string;
116
- firstUnexpected?: string;
117
- }
118
- export interface ReconstructionTextMismatchSummary {
119
- firstDifferingParagraphIndex: number;
120
- expectedParagraph: string;
121
- actualParagraph: string;
122
- firstDifference: string;
123
- }
124
- export interface ReconstructionBookmarkMismatchSummary {
125
- startNames: ReconstructionIdDeltaSummary;
126
- referencedBookmarkNames: ReconstructionIdDeltaSummary;
127
- unresolvedReferenceNames: ReconstructionIdDeltaSummary;
128
- startIds: ReconstructionIdDeltaSummary;
129
- endIds: ReconstructionIdDeltaSummary;
130
- unmatchedStartCount: number;
131
- unmatchedEndCount: number;
132
- firstUnmatchedStartId?: string;
133
- firstUnmatchedEndId?: string;
134
- }
135
- export interface ReconstructionSafetyFailureSummary {
136
- acceptText?: ReconstructionTextMismatchSummary;
137
- rejectText?: ReconstructionTextMismatchSummary;
138
- acceptBookmarks?: ReconstructionBookmarkMismatchSummary;
139
- rejectBookmarks?: ReconstructionBookmarkMismatchSummary;
140
- }
141
- export interface ReconstructionAttemptDiagnostics {
142
- pass: 'inplace_word_split' | 'inplace_run_level' | 'inplace_word_split_cross_run' | 'inplace_run_level_cross_run';
143
- checks: ReconstructionSafetyChecks;
144
- failedChecks: ReconstructionSafetyCheckName[];
145
- failureDetails?: ReconstructionSafetyFailureDetails;
146
- firstDiffSummary?: ReconstructionSafetyFailureSummary;
147
- }
148
- export interface ReconstructionFallbackDiagnostics {
149
- attempts: ReconstructionAttemptDiagnostics[];
150
- }
151
- /**
152
- * Round-trip safety evaluation of rebuild output. Rebuild is the terminal
153
- * reconstruction strategy — there is no further fallback — so a failed check
154
- * cannot reroute the pipeline. The document is returned anyway and the
155
- * failures are surfaced here as a caller-visible warning.
156
- *
157
- * @see https://github.com/UseJunior/safe-docx/issues/226
158
- */
159
- export interface ReconstructionRebuildSafetyDiagnostics {
160
- checks: ReconstructionSafetyChecks;
161
- failedChecks: ReconstructionSafetyCheckName[];
162
- failureDetails?: ReconstructionSafetyFailureDetails;
163
- firstDiffSummary?: ReconstructionSafetyFailureSummary;
164
- }
165
- export interface CompareResult {
166
- /** The resulting DOCX with track changes */
167
- document: Buffer;
168
- /** Statistics about the comparison */
169
- stats: CompareStats;
170
- /** Which engine was used */
171
- engine: 'wmlcomparer' | 'atomizer';
172
- /**
173
- * Requested reconstruction mode. Present for atomizer outputs.
174
- */
175
- reconstructionModeRequested?: ReconstructionMode;
176
- /**
177
- * Actual reconstruction mode used to produce the output. Present for atomizer outputs.
178
- */
179
- reconstructionModeUsed?: ReconstructionMode;
180
- /**
181
- * Why the requested reconstruction mode could not be used.
182
- * Present only when atomizer falls back.
183
- */
184
- fallbackReason?: ReconstructionFallbackReason;
185
- /**
186
- * Detailed safety-check diagnostics for fallback decisions.
187
- * Present only when atomizer falls back.
188
- */
189
- fallbackDiagnostics?: ReconstructionFallbackDiagnostics;
190
- /**
191
- * Safety-check failures observed on rebuild output — whether rebuild was
192
- * requested explicitly (the default mode) or reached via inplace fallback.
193
- * Present only when at least one check failed.
194
- */
195
- rebuildSafetyDiagnostics?: ReconstructionRebuildSafetyDiagnostics;
196
- }
197
- //# sourceMappingURL=compare-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compare-types.d.ts","sourceRoot":"","sources":["../src/compare-types.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=compare-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compare-types.js","sourceRoot":"","sources":["../src/compare-types.ts"],"names":[],"mappings":""}
@@ -1,120 +0,0 @@
1
- /**
2
- * Format Change Detection Module
3
- *
4
- * Detects formatting changes (bold, italic, font size, etc.) between
5
- * documents after LCS comparison. Runs on atoms marked as Equal to
6
- * identify text that matches but has different formatting.
7
- *
8
- * Pipeline position:
9
- * LCS() → FlattenToAtomList() → detectMovesInAtomList() → detectFormatChangesInAtomList() → CoalesceRecurse()
10
- *
11
- * @see design.md Decision 10: Format Change Detection as Post-LCS Phase
12
- */
13
- import { ComparisonUnitAtom, FormatChangeInfo, FormatDetectionSettings } from './core-types.js';
14
- /**
15
- * Extract run properties (w:rPr) from an atom's ancestor elements.
16
- *
17
- * Finds the w:r (run) element in ancestors and extracts its w:rPr child.
18
- *
19
- * @param atom - The atom to extract properties from
20
- * @returns The w:rPr element, or null if not found
21
- *
22
- * @example
23
- * // For an atom inside <w:r><w:rPr><w:b/></w:rPr><w:t>text</w:t></w:r>
24
- * // Returns the <w:rPr><w:b/></w:rPr> element
25
- */
26
- export declare function getRunPropertiesFromAtom(atom: ComparisonUnitAtom): Element | null;
27
- /**
28
- * Lightweight property descriptor for normalized comparison.
29
- * These are NOT DOM Elements — they're ephemeral comparison objects.
30
- */
31
- interface NormalizedProperty {
32
- tagName: string;
33
- attrs: [string, string][];
34
- text?: string;
35
- }
36
- interface NormalizedRPr {
37
- children: NormalizedProperty[];
38
- }
39
- /**
40
- * Check if two run properties are equal after normalization.
41
- */
42
- export declare function areRunPropertiesEqual(rPr1: Element | null, rPr2: Element | null): boolean;
43
- export { areRunPropertiesEqual as areNormalizedRunPropertiesEqual };
44
- /**
45
- * Get the list of property names that changed between two run properties.
46
- *
47
- * Returns friendly names (e.g., "bold", "italic") when available,
48
- * otherwise returns the OOXML tag name.
49
- *
50
- * @param oldRPr - Old run properties element (or null)
51
- * @param newRPr - New run properties element (or null)
52
- * @returns Array of changed property names
53
- */
54
- export declare function getChangedPropertyNames(oldRPr: Element | null, newRPr: Element | null): string[];
55
- /**
56
- * Categorize changed properties into added, removed, and modified.
57
- *
58
- * @param oldRPr - Old run properties element (or null)
59
- * @param newRPr - New run properties element (or null)
60
- * @returns Object with added, removed, and changed arrays
61
- */
62
- export declare function categorizePropertyChanges(oldRPr: Element | null, newRPr: Element | null): {
63
- added: string[];
64
- removed: string[];
65
- changed: string[];
66
- };
67
- /**
68
- * Detect format changes in a flat list of atoms.
69
- *
70
- * Runs after LCS and move detection to identify Equal atoms where the text
71
- * matches but formatting differs. Updates atoms in place with format change status.
72
- *
73
- * @param atoms - The atom list to process (modified in place)
74
- * @param settings - Format detection settings (optional, uses defaults)
75
- */
76
- export declare function detectFormatChangesInAtomList(atoms: ComparisonUnitAtom[], settings?: FormatDetectionSettings): void;
77
- /**
78
- * Options for generating format change markup.
79
- */
80
- export interface FormatChangeMarkupOptions {
81
- /** Author name for revision tracking */
82
- author: string;
83
- /** Timestamp for revisions */
84
- dateTime: Date;
85
- /** ID for the w:rPrChange element */
86
- id: number;
87
- }
88
- /**
89
- * Merge format change markup into a run's existing rPr element.
90
- *
91
- * Adds the w:rPrChange element as the last child of w:rPr.
92
- *
93
- * @param runElement - The w:r element to modify
94
- * @param rPrChange - The w:rPrChange element to insert
95
- */
96
- export declare function mergeFormatChangeIntoRun(runElement: Element, rPrChange: Element): void;
97
- /**
98
- * Extract paragraph properties (w:pPr) from an element.
99
- *
100
- * @param paragraphElement - The w:p element
101
- * @returns The w:pPr element, or null if not found
102
- */
103
- export declare function getParagraphProperties(paragraphElement: Element): Element | null;
104
- /**
105
- * Paragraph property friendly names.
106
- */
107
- export declare const PARAGRAPH_PROPERTY_FRIENDLY_NAMES: Record<string, string>;
108
- /**
109
- * @deprecated Use areRunPropertiesEqual directly with Element params
110
- */
111
- export declare function normalizeRunProperties(rPr: Element | null): NormalizedRPr;
112
- /**
113
- * @deprecated Use getParagraphProperties directly
114
- */
115
- export declare function normalizeParagraphProperties(pPr: Element | null): NormalizedRPr;
116
- /**
117
- * @deprecated Removed — use generateFormatChangeMarkup with DOM approach
118
- */
119
- export declare function generateFormatChangeMarkup(formatChange: FormatChangeInfo, options: FormatChangeMarkupOptions): Element;
120
- //# sourceMappingURL=format-detection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"format-detection.d.ts","sourceRoot":"","sources":["../src/format-detection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,kBAAkB,EAGlB,gBAAgB,EAChB,uBAAuB,EAExB,MAAM,iBAAiB,CAAC;AAQzB;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,kBAAkB,GACvB,OAAO,GAAG,IAAI,CAYhB;AAMD;;;GAGG;AACH,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,aAAa;IACrB,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAmDD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,OAAO,GAAG,IAAI,EACpB,IAAI,EAAE,OAAO,GAAG,IAAI,GACnB,OAAO,CAIT;AAGD,OAAO,EAAE,qBAAqB,IAAI,+BAA+B,EAAE,CAAC;AAsCpE;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,OAAO,GAAG,IAAI,EACtB,MAAM,EAAE,OAAO,GAAG,IAAI,GACrB,MAAM,EAAE,CAuBV;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,OAAO,GAAG,IAAI,EACtB,MAAM,EAAE,OAAO,GAAG,IAAI,GACrB;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CA2C3D;AAMD;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,kBAAkB,EAAE,EAC3B,QAAQ,GAAE,uBAA2D,GACpE,IAAI,CA6BN;AAMD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,QAAQ,EAAE,IAAI,CAAC;IACf,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,GACjB,IAAI,CA0BN;AAMD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,OAAO,GACxB,OAAO,GAAG,IAAI,CAQhB;AAED;;GAEG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAcpE,CAAC;AAMF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,GAAG,aAAa,CAEzE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,GAAG,aAAa,CAE/E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAqBT"}