@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,65 +0,0 @@
1
- /**
2
- * XML Parsing and Serialization
3
- *
4
- * Parses document.xml into a DOM tree using @xmldom/xmldom.
5
- * Replaces the former fast-xml-parser + WmlElement POJO approach.
6
- */
7
- /**
8
- * Parse document.xml string into a DOM Element tree.
9
- *
10
- * @param xml - The raw document.xml content
11
- * @returns Root element (the Document's documentElement)
12
- */
13
- export declare function parseDocumentXml(xml: string): Element;
14
- /**
15
- * Find the w:body element in the document tree.
16
- *
17
- * @param root - The document root element
18
- * @returns The w:body element, or undefined if not found
19
- */
20
- export declare function findBody(root: Element): Element | undefined;
21
- /**
22
- * Find the w:document element in the document tree.
23
- *
24
- * @param root - The document root element
25
- * @returns The w:document element, or undefined if not found
26
- */
27
- export declare function findDocument(root: Element): Element | undefined;
28
- /**
29
- * Find an element by tag name in the tree.
30
- *
31
- * @param node - The node to search from
32
- * @param tagName - The tag name to find
33
- * @returns The found element, or undefined
34
- */
35
- export declare function findElement(node: Element, tagName: string): Element | undefined;
36
- /**
37
- * Find all elements with a specific tag name.
38
- *
39
- * @param node - The node to search from
40
- * @param tagName - The tag name to find
41
- * @returns Array of matching elements
42
- */
43
- export declare function findAllElements(node: Element, tagName: string): Element[];
44
- /**
45
- * Serialize a DOM Element back to XML string.
46
- *
47
- * @param element - The element to serialize
48
- * @returns XML string
49
- */
50
- export declare function serializeToXml(element: Element | Document): string;
51
- /**
52
- * Clone a DOM Element tree (deep copy).
53
- *
54
- * @param element - The element to clone
55
- * @returns A deep copy of the element
56
- */
57
- export declare function cloneElement(element: Element): Element;
58
- /**
59
- * Backfill parent references — NO-OP for DOM Elements.
60
- *
61
- * DOM Elements have native parentNode/parentElement. This function exists
62
- * only to ease migration; callers should remove it over time.
63
- */
64
- export declare function backfillParentReferences(_node: Element, _parent?: Element): void;
65
- //# sourceMappingURL=xmlToWmlElement.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xmlToWmlElement.d.ts","sourceRoot":"","sources":["../../../src/baselines/atomizer/xmlToWmlElement.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAG3D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAI/D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,MAAM,GACd,OAAO,GAAG,SAAS,CAIrB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,MAAM,GACd,OAAO,EAAE,CAOX;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAElE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,OAAO,GAChB,IAAI,CAEN"}
@@ -1,96 +0,0 @@
1
- /**
2
- * XML Parsing and Serialization
3
- *
4
- * Parses document.xml into a DOM tree using @xmldom/xmldom.
5
- * Replaces the former fast-xml-parser + WmlElement POJO approach.
6
- */
7
- import { XMLSerializer } from '@xmldom/xmldom';
8
- import { parseXml } from '../../primitives/xml.js';
9
- /**
10
- * Parse document.xml string into a DOM Element tree.
11
- *
12
- * @param xml - The raw document.xml content
13
- * @returns Root element (the Document's documentElement)
14
- */
15
- export function parseDocumentXml(xml) {
16
- const doc = parseXml(xml);
17
- return doc.documentElement;
18
- }
19
- /**
20
- * Find the w:body element in the document tree.
21
- *
22
- * @param root - The document root element
23
- * @returns The w:body element, or undefined if not found
24
- */
25
- export function findBody(root) {
26
- const bodies = root.getElementsByTagName('w:body');
27
- return bodies.length > 0 ? bodies[0] : undefined;
28
- }
29
- /**
30
- * Find the w:document element in the document tree.
31
- *
32
- * @param root - The document root element
33
- * @returns The w:document element, or undefined if not found
34
- */
35
- export function findDocument(root) {
36
- if (root.tagName === 'w:document')
37
- return root;
38
- const docs = root.getElementsByTagName('w:document');
39
- return docs.length > 0 ? docs[0] : undefined;
40
- }
41
- /**
42
- * Find an element by tag name in the tree.
43
- *
44
- * @param node - The node to search from
45
- * @param tagName - The tag name to find
46
- * @returns The found element, or undefined
47
- */
48
- export function findElement(node, tagName) {
49
- if (node.tagName === tagName)
50
- return node;
51
- const results = node.getElementsByTagName(tagName);
52
- return results.length > 0 ? results[0] : undefined;
53
- }
54
- /**
55
- * Find all elements with a specific tag name.
56
- *
57
- * @param node - The node to search from
58
- * @param tagName - The tag name to find
59
- * @returns Array of matching elements
60
- */
61
- export function findAllElements(node, tagName) {
62
- const nodeList = node.getElementsByTagName(tagName);
63
- const result = [];
64
- for (let i = 0; i < nodeList.length; i++) {
65
- result.push(nodeList[i]);
66
- }
67
- return result;
68
- }
69
- /**
70
- * Serialize a DOM Element back to XML string.
71
- *
72
- * @param element - The element to serialize
73
- * @returns XML string
74
- */
75
- export function serializeToXml(element) {
76
- return new XMLSerializer().serializeToString(element);
77
- }
78
- /**
79
- * Clone a DOM Element tree (deep copy).
80
- *
81
- * @param element - The element to clone
82
- * @returns A deep copy of the element
83
- */
84
- export function cloneElement(element) {
85
- return element.cloneNode(true);
86
- }
87
- /**
88
- * Backfill parent references — NO-OP for DOM Elements.
89
- *
90
- * DOM Elements have native parentNode/parentElement. This function exists
91
- * only to ease migration; callers should remove it over time.
92
- */
93
- export function backfillParentReferences(_node, _parent) {
94
- // No-op: DOM Elements have native parentNode
95
- }
96
- //# sourceMappingURL=xmlToWmlElement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xmlToWmlElement.js","sourceRoot":"","sources":["../../../src/baselines/atomizer/xmlToWmlElement.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,GAAG,CAAC,eAAe,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,CAAC,CAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,IAAa,EACb,OAAe;IAEf,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,OAAO,CAAC,CAAC,CAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAa,EACb,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAY,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAA2B;IACxD,OAAO,IAAI,aAAa,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAY,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAc,EACd,OAAiB;IAEjB,6CAA6C;AAC/C,CAAC"}
@@ -1,51 +0,0 @@
1
- /**
2
- * Baseline A: WmlComparer via Docxodus WASM.
3
- *
4
- * Uses the Docxodus npm package's WASM-based comparison in Node.js.
5
- *
6
- * Note: WASM support in Node.js requires additional setup:
7
- * 1. WASM files must be served or loaded from the filesystem
8
- * 2. May need polyfills for browser APIs used by Blazor WASM
9
- *
10
- * This implementation is a placeholder - full WASM integration requires
11
- * building Docxodus and hosting the WASM files.
12
- */
13
- import type { CompareResult } from '../../index.js';
14
- export interface WasmOptions {
15
- /** Author name for revisions. Default: "Comparison" */
16
- author?: string;
17
- /** Detail threshold (0.0-1.0, lower = more detailed). Default: 0.15 */
18
- detailThreshold?: number;
19
- /** Case-insensitive comparison. Default: false */
20
- caseInsensitive?: boolean;
21
- /** Path to WASM files directory. */
22
- wasmPath?: string;
23
- }
24
- /**
25
- * Initialize the WASM runtime.
26
- *
27
- * Must be called before using compareWithWasm().
28
- *
29
- * @param wasmPath - Path to the directory containing WASM files
30
- */
31
- export declare function initializeWasm(wasmPath: string): Promise<void>;
32
- /**
33
- * Check if WASM runtime is initialized.
34
- */
35
- export declare function isWasmInitialized(): boolean;
36
- /**
37
- * Compare two DOCX documents using WASM.
38
- *
39
- * @param original - Original document as Buffer
40
- * @param revised - Revised document as Buffer
41
- * @param options - WASM options
42
- * @returns Comparison result with track changes
43
- */
44
- export declare function compareWithWasm(original: Buffer, revised: Buffer, options?: WasmOptions): Promise<CompareResult>;
45
- /**
46
- * Check if WASM is available and can be used in this environment.
47
- *
48
- * Note: WASM in Node.js has limitations compared to browser environments.
49
- */
50
- export declare function isWasmAvailable(): Promise<boolean>;
51
- //# sourceMappingURL=DocxodusWasm.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DocxodusWasm.d.ts","sourceRoot":"","sources":["../../../src/baselines/wmlcomparer/DocxodusWasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,aAAa,CAAC,CA8BxB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAYxD"}
@@ -1,83 +0,0 @@
1
- /**
2
- * Baseline A: WmlComparer via Docxodus WASM.
3
- *
4
- * Uses the Docxodus npm package's WASM-based comparison in Node.js.
5
- *
6
- * Note: WASM support in Node.js requires additional setup:
7
- * 1. WASM files must be served or loaded from the filesystem
8
- * 2. May need polyfills for browser APIs used by Blazor WASM
9
- *
10
- * This implementation is a placeholder - full WASM integration requires
11
- * building Docxodus and hosting the WASM files.
12
- */
13
- /** Whether WASM runtime has been initialized */
14
- let wasmInitialized = false;
15
- /**
16
- * Initialize the WASM runtime.
17
- *
18
- * Must be called before using compareWithWasm().
19
- *
20
- * @param wasmPath - Path to the directory containing WASM files
21
- */
22
- export async function initializeWasm(wasmPath) {
23
- // TODO: Implement WASM initialization
24
- // This requires:
25
- // 1. Loading the Docxodus WASM module
26
- // 2. Initializing the .NET runtime
27
- // 3. Setting up any required polyfills for Node.js
28
- throw new Error(`WASM initialization not yet implemented. ` +
29
- `WASM path: ${wasmPath}. ` +
30
- `For now, use compareWithDotnet() as a fallback.`);
31
- }
32
- /**
33
- * Check if WASM runtime is initialized.
34
- */
35
- export function isWasmInitialized() {
36
- return wasmInitialized;
37
- }
38
- /**
39
- * Compare two DOCX documents using WASM.
40
- *
41
- * @param original - Original document as Buffer
42
- * @param revised - Revised document as Buffer
43
- * @param options - WASM options
44
- * @returns Comparison result with track changes
45
- */
46
- export async function compareWithWasm(original, revised, options = {}) {
47
- if (!wasmInitialized) {
48
- throw new Error('WASM runtime not initialized. Call initializeWasm() first, ' +
49
- 'or use compareWithDotnet() as a fallback.');
50
- }
51
- const { author = 'Comparison', detailThreshold = 0.15, caseInsensitive = false, } = options;
52
- // TODO: Implement WASM-based comparison
53
- // This would call into the Docxodus WASM module:
54
- //
55
- // const docxodus = await import('docxodus');
56
- // const result = await docxodus.compareDocuments(
57
- // new Uint8Array(original),
58
- // new Uint8Array(revised),
59
- // { authorName: author, detailThreshold, caseInsensitive }
60
- // );
61
- throw new Error(`WASM comparison not yet implemented. ` +
62
- `Options: author=${author}, detailThreshold=${detailThreshold}, caseInsensitive=${caseInsensitive}. ` +
63
- `Original size: ${original.length}, Revised size: ${revised.length}. ` +
64
- `Use compareWithDotnet() as a fallback.`);
65
- }
66
- /**
67
- * Check if WASM is available and can be used in this environment.
68
- *
69
- * Note: WASM in Node.js has limitations compared to browser environments.
70
- */
71
- export async function isWasmAvailable() {
72
- // Check for WebAssembly support
73
- // WebAssembly is available in Node.js since v8
74
- try {
75
- // Simple check that WebAssembly is available
76
- const testModule = new WebAssembly.Module(new Uint8Array([0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00]));
77
- return testModule !== null;
78
- }
79
- catch {
80
- return false;
81
- }
82
- }
83
- //# sourceMappingURL=DocxodusWasm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DocxodusWasm.js","sourceRoot":"","sources":["../../../src/baselines/wmlcomparer/DocxodusWasm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAeH,gDAAgD;AAChD,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,sCAAsC;IACtC,iBAAiB;IACjB,sCAAsC;IACtC,mCAAmC;IACnC,mDAAmD;IAEnD,MAAM,IAAI,KAAK,CACb,2CAA2C;QACzC,cAAc,QAAQ,IAAI;QAC1B,iDAAiD,CACpD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,OAAe,EACf,UAAuB,EAAE;IAEzB,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,6DAA6D;YAC3D,2CAA2C,CAC9C,CAAC;IACJ,CAAC;IAED,MAAM,EACJ,MAAM,GAAG,YAAY,EACrB,eAAe,GAAG,IAAI,EACtB,eAAe,GAAG,KAAK,GACxB,GAAG,OAAO,CAAC;IAEZ,wCAAwC;IACxC,iDAAiD;IACjD,EAAE;IACF,6CAA6C;IAC7C,kDAAkD;IAClD,8BAA8B;IAC9B,6BAA6B;IAC7B,6DAA6D;IAC7D,KAAK;IAEL,MAAM,IAAI,KAAK,CACb,uCAAuC;QACrC,mBAAmB,MAAM,qBAAqB,eAAe,qBAAqB,eAAe,IAAI;QACrG,kBAAkB,QAAQ,CAAC,MAAM,mBAAmB,OAAO,CAAC,MAAM,IAAI;QACtE,wCAAwC,CAC3C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,gCAAgC;IAChC,+CAA+C;IAC/C,IAAI,CAAC;QACH,6CAA6C;QAC7C,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,MAAM,CACvC,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CACjE,CAAC;QACF,OAAO,UAAU,KAAK,IAAI,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -1,40 +0,0 @@
1
- /**
2
- * Baseline A: WmlComparer via dotnet CLI.
3
- *
4
- * Shells out to Docxodus's redline tool to perform document comparison.
5
- * Requires .NET 8+ and Docxodus to be available.
6
- */
7
- import type { CompareResult } from '../../index.js';
8
- export interface DotnetCliOptions {
9
- /** Author name for revisions. Default: "Comparison" */
10
- author?: string;
11
- /** Path to the redline executable or project. Default: uses global 'dotnet run' */
12
- redlinePath?: string;
13
- /** Path to Docxodus repository if using 'dotnet run'. */
14
- docxodusPath?: string;
15
- /** Path to dotnet executable. Default: 'dotnet' */
16
- dotnetPath?: string;
17
- /** Timeout in milliseconds. Default: 60000 (1 minute) */
18
- timeout?: number;
19
- }
20
- /**
21
- * Check if dotnet CLI is available.
22
- */
23
- export declare function isDotnetAvailable(dotnetPath?: string): Promise<boolean>;
24
- /**
25
- * Compare two DOCX documents using the dotnet CLI.
26
- *
27
- * @param original - Original document as Buffer
28
- * @param revised - Revised document as Buffer
29
- * @param options - CLI options
30
- * @returns Comparison result with track changes
31
- */
32
- export declare function compareWithDotnet(original: Buffer, revised: Buffer, options?: DotnetCliOptions): Promise<CompareResult>;
33
- /**
34
- * Check if Docxodus redline tool is available.
35
- *
36
- * @param docxodusPath - Path to Docxodus repository
37
- * @param dotnetPath - Path to dotnet executable
38
- */
39
- export declare function isRedlineAvailable(docxodusPath?: string, dotnetPath?: string): Promise<boolean>;
40
- //# sourceMappingURL=DotnetCli.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DotnetCli.d.ts","sourceRoot":"","sources":["../../../src/baselines/wmlcomparer/DotnetCli.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,gBAAgB,CAAC;AAIlE,MAAM,WAAW,gBAAgB;IAC/B,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/E;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,aAAa,CAAC,CA+FxB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAevG"}
@@ -1,142 +0,0 @@
1
- /**
2
- * Baseline A: WmlComparer via dotnet CLI.
3
- *
4
- * Shells out to Docxodus's redline tool to perform document comparison.
5
- * Requires .NET 8+ and Docxodus to be available.
6
- */
7
- import { execFile } from 'child_process';
8
- import { promisify } from 'util';
9
- import { writeFile, readFile, unlink, mkdtemp } from 'fs/promises';
10
- import { join } from 'path';
11
- import { tmpdir } from 'os';
12
- const execFileAsync = promisify(execFile);
13
- /**
14
- * Check if dotnet CLI is available.
15
- */
16
- export async function isDotnetAvailable(dotnetPath = 'dotnet') {
17
- try {
18
- await execFileAsync(dotnetPath, ['--version']);
19
- return true;
20
- }
21
- catch {
22
- return false;
23
- }
24
- }
25
- /**
26
- * Compare two DOCX documents using the dotnet CLI.
27
- *
28
- * @param original - Original document as Buffer
29
- * @param revised - Revised document as Buffer
30
- * @param options - CLI options
31
- * @returns Comparison result with track changes
32
- */
33
- export async function compareWithDotnet(original, revised, options = {}) {
34
- const { author = 'Comparison', redlinePath, docxodusPath, dotnetPath = 'dotnet', timeout = 60000, } = options;
35
- // Create a temporary directory for the comparison
36
- const tempDir = await mkdtemp(join(tmpdir(), 'docx-compare-'));
37
- const originalPath = join(tempDir, 'original.docx');
38
- const revisedPath = join(tempDir, 'revised.docx');
39
- const outputPath = join(tempDir, 'output.docx');
40
- try {
41
- // Write input files
42
- await writeFile(originalPath, original);
43
- await writeFile(revisedPath, revised);
44
- // Determine command to run
45
- let command;
46
- let args;
47
- if (redlinePath) {
48
- // Use specified redline executable
49
- command = redlinePath;
50
- args = [originalPath, revisedPath, outputPath, `--author=${author}`];
51
- }
52
- else if (docxodusPath) {
53
- // Use dotnet run with Docxodus project
54
- command = dotnetPath;
55
- args = [
56
- 'run',
57
- '--project',
58
- join(docxodusPath, 'tools', 'redline', 'redline.csproj'),
59
- '--configuration',
60
- 'Release',
61
- '--no-build',
62
- '--',
63
- originalPath,
64
- revisedPath,
65
- outputPath,
66
- `--author=${author}`,
67
- ];
68
- }
69
- else {
70
- // Try using global tool or assume redline is in PATH
71
- command = 'redline';
72
- args = [originalPath, revisedPath, outputPath, `--author=${author}`];
73
- }
74
- // Execute comparison
75
- const { stdout } = await execFileAsync(command, args, {
76
- timeout,
77
- maxBuffer: 10 * 1024 * 1024, // 10MB
78
- });
79
- // Parse revision count from stdout if available
80
- const revisionMatch = stdout.match(/(\d+) revision\(s\) found/);
81
- const revisionCount = revisionMatch ? parseInt(revisionMatch[1] ?? '0', 10) : 0;
82
- // Read output file
83
- const outputBuffer = await readFile(outputPath);
84
- // Return result
85
- // Note: We can't get detailed stats without parsing the output DOCX
86
- // For now, just return the revision count as insertions
87
- const stats = {
88
- insertions: revisionCount,
89
- deletions: 0, // Would need to parse output to get this
90
- modifications: 0,
91
- insertedRanges: revisionCount,
92
- deletedRanges: 0,
93
- insertedAtoms: revisionCount,
94
- deletedAtoms: 0,
95
- modifiedParagraphs: 0,
96
- formatChanges: 0,
97
- formatChangeAtoms: 0,
98
- };
99
- return {
100
- document: outputBuffer,
101
- stats,
102
- engine: 'wmlcomparer',
103
- };
104
- }
105
- finally {
106
- // Clean up temporary files
107
- try {
108
- await unlink(originalPath);
109
- await unlink(revisedPath);
110
- await unlink(outputPath);
111
- // Note: Can't rmdir because it might not be empty
112
- }
113
- catch {
114
- // Ignore cleanup errors
115
- }
116
- }
117
- }
118
- /**
119
- * Check if Docxodus redline tool is available.
120
- *
121
- * @param docxodusPath - Path to Docxodus repository
122
- * @param dotnetPath - Path to dotnet executable
123
- */
124
- export async function isRedlineAvailable(docxodusPath, dotnetPath = 'dotnet') {
125
- try {
126
- if (docxodusPath) {
127
- // Check if the project file exists
128
- const projectPath = join(docxodusPath, 'tools', 'redline', 'redline.csproj');
129
- await readFile(projectPath);
130
- return await isDotnetAvailable(dotnetPath);
131
- }
132
- else {
133
- // Try running redline --version
134
- await execFileAsync('redline', ['--version']);
135
- return true;
136
- }
137
- }
138
- catch {
139
- return false;
140
- }
141
- }
142
- //# sourceMappingURL=DotnetCli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DotnetCli.js","sourceRoot":"","sources":["../../../src/baselines/wmlcomparer/DotnetCli.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import { type CompareOptions } from '../index.js';
2
- export interface ParsedCompareCliArgs {
3
- originalPath: string;
4
- revisedPath: string;
5
- outputPath?: string;
6
- options: {
7
- engine: NonNullable<CompareOptions['engine']>;
8
- reconstructionMode: 'inplace' | 'rebuild';
9
- author: string;
10
- premergeRuns: boolean;
11
- };
12
- }
13
- export interface CompareCliHelpResult {
14
- help: true;
15
- text: string;
16
- }
17
- export interface CompareCliRunResult {
18
- help?: false;
19
- output: string;
20
- engine: string;
21
- mode: 'inplace' | 'rebuild';
22
- bytes: number;
23
- stats: unknown;
24
- }
25
- export type CompareCliResult = CompareCliHelpResult | CompareCliRunResult;
26
- export declare function parseCompareCliArgs(argv: string[]): ParsedCompareCliArgs;
27
- export declare function runCompareCli(argv?: string[]): Promise<CompareCliResult>;
28
- //# sourceMappingURL=compare-two.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compare-two.d.ts","sourceRoot":"","sources":["../../src/cli/compare-two.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAQpE,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE;QACP,MAAM,EAAE,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9C,kBAAkB,EAAE,SAAS,GAAG,SAAS,CAAC;QAC1C,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AAS1E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAsExE;AAMD,wBAAsB,aAAa,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiC3F"}
@@ -1,112 +0,0 @@
1
- import { readFile, writeFile, mkdir } from 'node:fs/promises';
2
- import { dirname, resolve } from 'node:path';
3
- import { compareDocuments } from '../index.js';
4
- const USAGE = 'Usage: docx-comparison <original.docx> <revised.docx> [output.docx] ' +
5
- '[--engine atomizer|auto] [--mode inplace|rebuild] [--author "Name"] [--premerge-runs true|false]\n' +
6
- 'Stats: insertions/deletions count contiguous revision ranges; insertedAtoms/deletedAtoms count granular word atoms; ' +
7
- 'modifications counts modified paragraphs and formatChanges is separate.';
8
- function parseBooleanFlag(raw, flagName) {
9
- const normalized = raw.trim().toLowerCase();
10
- if (['1', 'true', 'yes', 'on'].includes(normalized))
11
- return true;
12
- if (['0', 'false', 'no', 'off'].includes(normalized))
13
- return false;
14
- throw new Error(`Invalid value for ${flagName}: ${raw}. Use true or false.`);
15
- }
16
- export function parseCompareCliArgs(argv) {
17
- const positional = [];
18
- const options = {
19
- engine: 'atomizer',
20
- reconstructionMode: 'rebuild',
21
- author: 'Comparison',
22
- premergeRuns: true,
23
- };
24
- for (let i = 0; i < argv.length; i++) {
25
- const token = argv[i];
26
- if (!token)
27
- continue;
28
- if (!token.startsWith('--')) {
29
- positional.push(token);
30
- continue;
31
- }
32
- const consumeValue = (flagName) => {
33
- const next = argv[i + 1];
34
- if (!next || next.startsWith('--')) {
35
- throw new Error(`Missing value for ${flagName}.\n${USAGE}`);
36
- }
37
- i += 1;
38
- return next;
39
- };
40
- switch (token) {
41
- case '--engine': {
42
- const engine = consumeValue(token);
43
- if (engine !== 'atomizer' && engine !== 'auto') {
44
- throw new Error(`Unsupported engine: ${engine}. Use atomizer or auto.`);
45
- }
46
- options.engine = engine;
47
- break;
48
- }
49
- case '--mode': {
50
- const mode = consumeValue(token);
51
- if (mode !== 'inplace' && mode !== 'rebuild') {
52
- throw new Error(`Unsupported mode: ${mode}. Use inplace or rebuild.`);
53
- }
54
- options.reconstructionMode = mode;
55
- break;
56
- }
57
- case '--author':
58
- options.author = consumeValue(token);
59
- break;
60
- case '--premerge-runs':
61
- options.premergeRuns = parseBooleanFlag(consumeValue(token), token);
62
- break;
63
- default:
64
- throw new Error(`Unknown option: ${token}.\n${USAGE}`);
65
- }
66
- }
67
- if (positional.length < 2 || positional.length > 3) {
68
- throw new Error(`Expected <original.docx> <revised.docx> [output.docx].\n${USAGE}`);
69
- }
70
- const [originalPath, revisedPath, outputPath] = positional;
71
- if (!originalPath || !revisedPath) {
72
- throw new Error(`Expected <original.docx> <revised.docx> [output.docx].\n${USAGE}`);
73
- }
74
- return {
75
- originalPath,
76
- revisedPath,
77
- outputPath,
78
- options,
79
- };
80
- }
81
- function defaultOutputPath(revisedAbs, options) {
82
- return revisedAbs.replace(/\.docx$/i, '') + `.REDLINE.${options.engine}.${options.reconstructionMode}.docx`;
83
- }
84
- export async function runCompareCli(argv = process.argv.slice(2)) {
85
- if (argv.includes('--help') || argv.includes('-h')) {
86
- return { help: true, text: USAGE };
87
- }
88
- const parsed = parseCompareCliArgs(argv);
89
- const originalAbs = resolve(parsed.originalPath);
90
- const revisedAbs = resolve(parsed.revisedPath);
91
- const outputAbs = resolve(parsed.outputPath ?? defaultOutputPath(revisedAbs, parsed.options));
92
- const [originalBuffer, revisedBuffer] = await Promise.all([
93
- readFile(originalAbs),
94
- readFile(revisedAbs),
95
- ]);
96
- const result = await compareDocuments(originalBuffer, revisedBuffer, {
97
- engine: parsed.options.engine,
98
- author: parsed.options.author,
99
- reconstructionMode: parsed.options.reconstructionMode,
100
- premergeRuns: parsed.options.premergeRuns,
101
- });
102
- await mkdir(dirname(outputAbs), { recursive: true });
103
- await writeFile(outputAbs, result.document);
104
- return {
105
- output: outputAbs,
106
- engine: result.engine,
107
- mode: parsed.options.reconstructionMode,
108
- bytes: result.document.length,
109
- stats: result.stats,
110
- };
111
- }
112
- //# sourceMappingURL=compare-two.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compare-two.js","sourceRoot":"","sources":["../../src/cli/compare-two.ts"],"names":[],"mappings":"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"}