@usejunior/docx-core 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +0 -2
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/atomizer.d.ts.map +1 -1
  4. package/dist/atomizer.js +16 -3
  5. package/dist/atomizer.js.map +1 -1
  6. package/dist/baselines/atomizer/documentReconstructor.d.ts.map +1 -1
  7. package/dist/baselines/atomizer/documentReconstructor.js +11 -5
  8. package/dist/baselines/atomizer/documentReconstructor.js.map +1 -1
  9. package/dist/baselines/atomizer/inPlaceModifier.d.ts +81 -1
  10. package/dist/baselines/atomizer/inPlaceModifier.d.ts.map +1 -1
  11. package/dist/baselines/atomizer/inPlaceModifier.js +618 -34
  12. package/dist/baselines/atomizer/inPlaceModifier.js.map +1 -1
  13. package/dist/baselines/atomizer/pipeline.d.ts +1 -1
  14. package/dist/baselines/atomizer/pipeline.d.ts.map +1 -1
  15. package/dist/baselines/atomizer/pipeline.js +70 -1
  16. package/dist/baselines/atomizer/pipeline.js.map +1 -1
  17. package/dist/baselines/atomizer/premergeRuns.d.ts.map +1 -1
  18. package/dist/baselines/atomizer/premergeRuns.js +3 -0
  19. package/dist/baselines/atomizer/premergeRuns.js.map +1 -1
  20. package/dist/baselines/atomizer/trackChangesAcceptorAst.d.ts.map +1 -1
  21. package/dist/baselines/atomizer/trackChangesAcceptorAst.js +63 -33
  22. package/dist/baselines/atomizer/trackChangesAcceptorAst.js.map +1 -1
  23. package/dist/cli/compare-two.js +4 -4
  24. package/dist/cli/compare-two.js.map +1 -1
  25. package/dist/index.d.ts +6 -6
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +7 -7
  28. package/dist/index.js.map +1 -1
  29. package/dist/primitives/document.d.ts +12 -0
  30. package/dist/primitives/document.d.ts.map +1 -1
  31. package/dist/primitives/document.js +17 -2
  32. package/dist/primitives/document.js.map +1 -1
  33. package/dist/primitives/document_view.d.ts +2 -0
  34. package/dist/primitives/document_view.d.ts.map +1 -1
  35. package/dist/primitives/document_view.js +3 -2
  36. package/dist/primitives/document_view.js.map +1 -1
  37. package/dist/primitives/formatting_tags.d.ts +14 -2
  38. package/dist/primitives/formatting_tags.d.ts.map +1 -1
  39. package/dist/primitives/formatting_tags.js +13 -11
  40. package/dist/primitives/formatting_tags.js.map +1 -1
  41. package/dist/primitives/matching.d.ts +12 -0
  42. package/dist/primitives/matching.d.ts.map +1 -1
  43. package/dist/primitives/matching.js +54 -0
  44. package/dist/primitives/matching.js.map +1 -1
  45. package/dist/primitives/merge_runs.d.ts.map +1 -1
  46. package/dist/primitives/merge_runs.js +48 -0
  47. package/dist/primitives/merge_runs.js.map +1 -1
  48. package/dist/shared/validators/structural.d.ts +31 -0
  49. package/dist/shared/validators/structural.d.ts.map +1 -0
  50. package/dist/shared/validators/structural.js +110 -0
  51. package/dist/shared/validators/structural.js.map +1 -0
  52. package/package.json +2 -2
  53. package/dist/baselines/diffmatch/documentBuilder.d.ts +0 -44
  54. package/dist/baselines/diffmatch/documentBuilder.d.ts.map +0 -1
  55. package/dist/baselines/diffmatch/documentBuilder.js +0 -227
  56. package/dist/baselines/diffmatch/documentBuilder.js.map +0 -1
  57. package/dist/baselines/diffmatch/paragraphAlignment.d.ts +0 -75
  58. package/dist/baselines/diffmatch/paragraphAlignment.d.ts.map +0 -1
  59. package/dist/baselines/diffmatch/paragraphAlignment.js +0 -206
  60. package/dist/baselines/diffmatch/paragraphAlignment.js.map +0 -1
  61. package/dist/baselines/diffmatch/pipeline.d.ts +0 -33
  62. package/dist/baselines/diffmatch/pipeline.d.ts.map +0 -1
  63. package/dist/baselines/diffmatch/pipeline.js +0 -84
  64. package/dist/baselines/diffmatch/pipeline.js.map +0 -1
  65. package/dist/baselines/diffmatch/runDiff.d.ts +0 -53
  66. package/dist/baselines/diffmatch/runDiff.d.ts.map +0 -1
  67. package/dist/baselines/diffmatch/runDiff.js +0 -253
  68. package/dist/baselines/diffmatch/runDiff.js.map +0 -1
  69. package/dist/baselines/diffmatch/trackChangesRenderer.d.ts +0 -64
  70. package/dist/baselines/diffmatch/trackChangesRenderer.d.ts.map +0 -1
  71. package/dist/baselines/diffmatch/trackChangesRenderer.js +0 -178
  72. package/dist/baselines/diffmatch/trackChangesRenderer.js.map +0 -1
  73. package/dist/baselines/diffmatch/xmlParser.d.ts +0 -45
  74. package/dist/baselines/diffmatch/xmlParser.d.ts.map +0 -1
  75. package/dist/baselines/diffmatch/xmlParser.js +0 -216
  76. package/dist/baselines/diffmatch/xmlParser.js.map +0 -1
  77. package/dist/benchmark/metrics.d.ts +0 -72
  78. package/dist/benchmark/metrics.d.ts.map +0 -1
  79. package/dist/benchmark/metrics.js +0 -45
  80. package/dist/benchmark/metrics.js.map +0 -1
  81. package/dist/benchmark/reporter.d.ts +0 -23
  82. package/dist/benchmark/reporter.d.ts.map +0 -1
  83. package/dist/benchmark/reporter.js +0 -147
  84. package/dist/benchmark/reporter.js.map +0 -1
  85. package/dist/benchmark/runner.d.ts +0 -30
  86. package/dist/benchmark/runner.d.ts.map +0 -1
  87. package/dist/benchmark/runner.js +0 -233
  88. package/dist/benchmark/runner.js.map +0 -1
@@ -1,64 +0,0 @@
1
- /**
2
- * Baseline B: Track changes OOXML renderer.
3
- *
4
- * Generates OOXML track changes markup (w:ins, w:del) from diff results.
5
- */
6
- import type { RunInfo } from '../../shared/ooxml/types.js';
7
- /**
8
- * Reset the revision ID counter.
9
- */
10
- export declare function resetRevisionIds(): void;
11
- /**
12
- * Allocate a new revision ID.
13
- */
14
- export declare function allocateRevisionId(): number;
15
- /**
16
- * Format a date for OOXML (ISO 8601 format).
17
- */
18
- export declare function formatOoxmlDate(date: Date): string;
19
- /**
20
- * Escape XML special characters.
21
- */
22
- export declare function escapeXml(text: string): string;
23
- /**
24
- * Generate insertion markup.
25
- */
26
- export declare function generateInsertion(runs: RunInfo[], author: string, date: Date): string;
27
- /**
28
- * Generate deletion markup.
29
- */
30
- export declare function generateDeletion(runs: RunInfo[], author: string, date: Date): string;
31
- /**
32
- * Generate unchanged run markup.
33
- */
34
- export declare function generateUnchangedRun(run: RunInfo): string;
35
- /**
36
- * Options for rendering track changes.
37
- */
38
- export interface RenderOptions {
39
- /** Author name for revisions */
40
- author: string;
41
- /** Timestamp for revisions */
42
- date: Date;
43
- }
44
- /**
45
- * Render merged runs with track changes to OOXML.
46
- *
47
- * @param mergedRuns - Runs with revision markers from diffRuns()
48
- * @param options - Rendering options
49
- * @returns OOXML paragraph content with track changes
50
- */
51
- export declare function renderTrackChanges(mergedRuns: RunInfo[], options: RenderOptions): string;
52
- /**
53
- * Wrap content in a paragraph element.
54
- */
55
- export declare function wrapInParagraph(content: string, pPr?: string): string;
56
- /**
57
- * Generate a complete deleted paragraph.
58
- */
59
- export declare function generateDeletedParagraph(runs: RunInfo[], author: string, date: Date, pPr?: string): string;
60
- /**
61
- * Generate a complete inserted paragraph.
62
- */
63
- export declare function generateInsertedParagraph(runs: RunInfo[], author: string, date: Date, pPr?: string): string;
64
- //# sourceMappingURL=trackChangesRenderer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trackChangesRenderer.d.ts","sourceRoot":"","sources":["../../../src/baselines/diffmatch/trackChangesRenderer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAK3D;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAElD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO9C;AA2DD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,GACT,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,GACT,MAAM,CAQR;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAEzD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,IAAI,EAAE,IAAI,CAAC;CACZ;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,OAAO,EAAE,EACrB,OAAO,EAAE,aAAa,GACrB,MAAM,CAsCR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,GAAG,CAAC,EAAE,MAAM,GACX,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,GAAG,CAAC,EAAE,MAAM,GACX,MAAM,CAGR"}
@@ -1,178 +0,0 @@
1
- /**
2
- * Baseline B: Track changes OOXML renderer.
3
- *
4
- * Generates OOXML track changes markup (w:ins, w:del) from diff results.
5
- */
6
- /** ID allocator for revision IDs */
7
- let nextRevisionId = 1;
8
- /**
9
- * Reset the revision ID counter.
10
- */
11
- export function resetRevisionIds() {
12
- nextRevisionId = 1;
13
- }
14
- /**
15
- * Allocate a new revision ID.
16
- */
17
- export function allocateRevisionId() {
18
- return nextRevisionId++;
19
- }
20
- /**
21
- * Format a date for OOXML (ISO 8601 format).
22
- */
23
- export function formatOoxmlDate(date) {
24
- return date.toISOString().replace('Z', 'Z');
25
- }
26
- /**
27
- * Escape XML special characters.
28
- */
29
- export function escapeXml(text) {
30
- return text
31
- .replace(/&/g, '&')
32
- .replace(/</g, '&lt;')
33
- .replace(/>/g, '&gt;')
34
- .replace(/"/g, '&quot;')
35
- .replace(/'/g, '&apos;');
36
- }
37
- /**
38
- * Generate run properties XML.
39
- */
40
- function generateRunProperties(run) {
41
- if (!run.properties) {
42
- return '';
43
- }
44
- const props = [];
45
- const p = run.properties;
46
- if (p.bold) {
47
- props.push('<w:b/>');
48
- }
49
- if (p.italic) {
50
- props.push('<w:i/>');
51
- }
52
- if (p.underline) {
53
- props.push(`<w:u w:val="${escapeXml(p.underline)}"/>`);
54
- }
55
- if (p.strikethrough) {
56
- props.push('<w:strike/>');
57
- }
58
- if (p.highlight) {
59
- props.push(`<w:highlight w:val="${escapeXml(p.highlight)}"/>`);
60
- }
61
- if (p.color) {
62
- props.push(`<w:color w:val="${escapeXml(p.color)}"/>`);
63
- }
64
- if (p.fontSize !== undefined) {
65
- props.push(`<w:sz w:val="${p.fontSize}"/>`);
66
- }
67
- if (p.fontFamily) {
68
- props.push(`<w:rFonts w:ascii="${escapeXml(p.fontFamily)}" w:hAnsi="${escapeXml(p.fontFamily)}"/>`);
69
- }
70
- if (props.length === 0) {
71
- return '';
72
- }
73
- return `<w:rPr>${props.join('')}</w:rPr>`;
74
- }
75
- /**
76
- * Generate a single run's XML.
77
- */
78
- function generateRunXml(text, run, useDelText = false) {
79
- const rPr = generateRunProperties(run);
80
- const textElement = useDelText ? 'w:delText' : 'w:t';
81
- // Handle whitespace preservation
82
- const needsSpace = text.startsWith(' ') || text.endsWith(' ') || text.includes(' ');
83
- const spaceAttr = needsSpace ? ' xml:space="preserve"' : '';
84
- return `<w:r>${rPr}<${textElement}${spaceAttr}>${escapeXml(text)}</${textElement}></w:r>`;
85
- }
86
- /**
87
- * Generate insertion markup.
88
- */
89
- export function generateInsertion(runs, author, date) {
90
- const id = allocateRevisionId();
91
- const dateStr = formatOoxmlDate(date);
92
- const runXml = runs.map(run => generateRunXml(run.text, run, false)).join('');
93
- return `<w:ins w:id="${id}" w:author="${escapeXml(author)}" w:date="${dateStr}">${runXml}</w:ins>`;
94
- }
95
- /**
96
- * Generate deletion markup.
97
- */
98
- export function generateDeletion(runs, author, date) {
99
- const id = allocateRevisionId();
100
- const dateStr = formatOoxmlDate(date);
101
- // Deletions use w:delText instead of w:t
102
- const runXml = runs.map(run => generateRunXml(run.text, run, true)).join('');
103
- return `<w:del w:id="${id}" w:author="${escapeXml(author)}" w:date="${dateStr}">${runXml}</w:del>`;
104
- }
105
- /**
106
- * Generate unchanged run markup.
107
- */
108
- export function generateUnchangedRun(run) {
109
- return generateRunXml(run.text, run, false);
110
- }
111
- /**
112
- * Render merged runs with track changes to OOXML.
113
- *
114
- * @param mergedRuns - Runs with revision markers from diffRuns()
115
- * @param options - Rendering options
116
- * @returns OOXML paragraph content with track changes
117
- */
118
- export function renderTrackChanges(mergedRuns, options) {
119
- const { author, date } = options;
120
- const parts = [];
121
- // Group consecutive runs by revision type for cleaner output
122
- let i = 0;
123
- while (i < mergedRuns.length) {
124
- const run = mergedRuns[i];
125
- const revType = run.revision?.type;
126
- if (!revType) {
127
- // Unchanged run
128
- parts.push(generateUnchangedRun(run));
129
- i++;
130
- }
131
- else if (revType === 'insertion') {
132
- // Collect consecutive insertions
133
- const insertionRuns = [];
134
- while (i < mergedRuns.length && mergedRuns[i]?.revision?.type === 'insertion') {
135
- insertionRuns.push(mergedRuns[i]);
136
- i++;
137
- }
138
- parts.push(generateInsertion(insertionRuns, author, date));
139
- }
140
- else if (revType === 'deletion') {
141
- // Collect consecutive deletions
142
- const deletionRuns = [];
143
- while (i < mergedRuns.length && mergedRuns[i]?.revision?.type === 'deletion') {
144
- deletionRuns.push(mergedRuns[i]);
145
- i++;
146
- }
147
- parts.push(generateDeletion(deletionRuns, author, date));
148
- }
149
- else {
150
- // Unknown revision type, treat as unchanged
151
- parts.push(generateUnchangedRun(run));
152
- i++;
153
- }
154
- }
155
- return parts.join('');
156
- }
157
- /**
158
- * Wrap content in a paragraph element.
159
- */
160
- export function wrapInParagraph(content, pPr) {
161
- const pPrXml = pPr ? `<w:pPr>${pPr}</w:pPr>` : '';
162
- return `<w:p>${pPrXml}${content}</w:p>`;
163
- }
164
- /**
165
- * Generate a complete deleted paragraph.
166
- */
167
- export function generateDeletedParagraph(runs, author, date, pPr) {
168
- const content = generateDeletion(runs, author, date);
169
- return wrapInParagraph(content, pPr);
170
- }
171
- /**
172
- * Generate a complete inserted paragraph.
173
- */
174
- export function generateInsertedParagraph(runs, author, date, pPr) {
175
- const content = generateInsertion(runs, author, date);
176
- return wrapInParagraph(content, pPr);
177
- }
178
- //# sourceMappingURL=trackChangesRenderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trackChangesRenderer.js","sourceRoot":"","sources":["../../../src/baselines/diffmatch/trackChangesRenderer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,oCAAoC;AACpC,IAAI,cAAc,GAAG,CAAC,CAAC;AAEvB;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,cAAc,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,cAAc,EAAE,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAU;IACxC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,GAAY;IACzC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;IAEzB,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,eAAe,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,uBAAuB,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,sBAAsB,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACtG,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,IAAY,EAAE,GAAY,EAAE,UAAU,GAAG,KAAK;IACpE,MAAM,GAAG,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;IAErD,iCAAiC;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrF,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5D,OAAO,QAAQ,GAAG,IAAI,WAAW,GAAG,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,WAAW,SAAS,CAAC;AAC5F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAe,EACf,MAAc,EACd,IAAU;IAEV,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE9E,OAAO,gBAAgB,EAAE,eAAe,SAAS,CAAC,MAAM,CAAC,aAAa,OAAO,KAAK,MAAM,UAAU,CAAC;AACrG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAe,EACf,MAAc,EACd,IAAU;IAEV,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAEtC,yCAAyC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE7E,OAAO,gBAAgB,EAAE,eAAe,SAAS,CAAC,MAAM,CAAC,aAAa,OAAO,KAAK,MAAM,UAAU,CAAC;AACrG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;AAYD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAqB,EACrB,OAAsB;IAEtB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,6DAA6D;IAC7D,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;QAEnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,gBAAgB;YAChB,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;YACnC,iCAAiC;YACjC,MAAM,aAAa,GAAc,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC9E,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC;gBACnC,CAAC,EAAE,CAAC;YACN,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,gCAAgC;YAChC,MAAM,YAAY,GAAc,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC7E,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC;gBAClC,CAAC,EAAE,CAAC;YACN,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,4CAA4C;YAC5C,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,GAAY;IAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,OAAO,QAAQ,MAAM,GAAG,OAAO,QAAQ,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAe,EACf,MAAc,EACd,IAAU,EACV,GAAY;IAEZ,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAAe,EACf,MAAc,EACd,IAAU,EACV,GAAY;IAEZ,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACtD,OAAO,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC"}
@@ -1,45 +0,0 @@
1
- /**
2
- * XML Parser for extracting paragraphs and runs from DOCX document.xml.
3
- *
4
- * Uses xmldom to parse OOXML and extract ParagraphInfo objects
5
- * suitable for comparison.
6
- */
7
- import type { ParagraphInfo, RunProperties } from '../../shared/ooxml/types.js';
8
- /**
9
- * Extended ParagraphInfo with original XML for reconstruction.
10
- */
11
- export interface ExtendedParagraphInfo extends ParagraphInfo {
12
- /** Original paragraph properties XML (w:pPr) for preservation */
13
- pPrXml?: string;
14
- /** Original paragraph index in document */
15
- originalIndex: number;
16
- }
17
- /**
18
- * Extract paragraphs from document.xml content.
19
- *
20
- * @param documentXml - The raw document.xml content
21
- * @returns Array of ParagraphInfo objects with runs and metadata
22
- */
23
- export declare function extractParagraphs(documentXml: string): ExtendedParagraphInfo[];
24
- /**
25
- * Extract run properties from a w:rPr element.
26
- */
27
- export declare function extractRunProperties(rPrElement: Element): RunProperties | undefined;
28
- /**
29
- * Get the document body content (everything inside w:body).
30
- * Useful for document reconstruction.
31
- */
32
- export declare function getBodyContent(documentXml: string): {
33
- beforeBody: string;
34
- bodyContent: string;
35
- afterBody: string;
36
- };
37
- /**
38
- * Extract sectPr (section properties) from body content if present.
39
- * sectPr must remain at the end of body.
40
- */
41
- export declare function extractSectPr(bodyContent: string): {
42
- content: string;
43
- sectPr: string | null;
44
- };
45
- //# sourceMappingURL=xmlParser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xmlParser.d.ts","sourceRoot":"","sources":["../../../src/baselines/diffmatch/xmlParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAW,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAMzF;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAsB9E;AAoED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAiDnF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAoBA;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAaA"}
@@ -1,216 +0,0 @@
1
- /**
2
- * XML Parser for extracting paragraphs and runs from DOCX document.xml.
3
- *
4
- * Uses xmldom to parse OOXML and extract ParagraphInfo objects
5
- * suitable for comparison.
6
- */
7
- import { XMLSerializer } from '@xmldom/xmldom';
8
- import { parseXml } from '../../primitives/xml.js';
9
- import { hashParagraph } from './paragraphAlignment.js';
10
- const ELEMENT_NODE = 1;
11
- const serializer = new XMLSerializer();
12
- /**
13
- * Extract paragraphs from document.xml content.
14
- *
15
- * @param documentXml - The raw document.xml content
16
- * @returns Array of ParagraphInfo objects with runs and metadata
17
- */
18
- export function extractParagraphs(documentXml) {
19
- const doc = parseXml(documentXml);
20
- const paragraphs = [];
21
- // Navigate to w:body
22
- const body = doc.getElementsByTagName('w:body')[0];
23
- if (!body) {
24
- return paragraphs;
25
- }
26
- // Find direct w:p children in body.
27
- let paragraphIndex = 0;
28
- for (const child of childElements(body)) {
29
- if (child.tagName === 'w:p') {
30
- const para = extractParagraph(child, paragraphIndex);
31
- paragraphs.push(para);
32
- paragraphIndex++;
33
- }
34
- // Note: We skip w:tbl (tables) for v1 - could add support later
35
- }
36
- return paragraphs;
37
- }
38
- /**
39
- * Extract a single paragraph from a parsed w:p element.
40
- */
41
- function extractParagraph(pElement, index) {
42
- const runs = [];
43
- let charOffset = 0;
44
- let pPrXml;
45
- for (const child of childElements(pElement)) {
46
- if (child.tagName === 'w:pPr') {
47
- // Extract paragraph properties as XML for preservation
48
- pPrXml = elementToXml(child);
49
- }
50
- else if (child.tagName === 'w:r') {
51
- // Extract run
52
- const runInfo = extractRun(child, charOffset);
53
- if (runInfo.text.length > 0) {
54
- runs.push(runInfo);
55
- charOffset = runInfo.end;
56
- }
57
- }
58
- // Skip other elements (bookmarkStart, bookmarkEnd, etc.)
59
- }
60
- // Combine all run text
61
- const text = runs.map(r => r.text).join('');
62
- return {
63
- text,
64
- runs,
65
- hash: hashParagraph(text),
66
- pPrXml,
67
- originalIndex: index,
68
- };
69
- }
70
- /**
71
- * Extract a single run from a parsed w:r element.
72
- */
73
- function extractRun(rElement, startOffset) {
74
- let text = '';
75
- let properties;
76
- for (const child of childElements(rElement)) {
77
- if (child.tagName === 'w:rPr') {
78
- properties = extractRunProperties(child);
79
- }
80
- else if (child.tagName === 'w:t') {
81
- // Get text content
82
- text += child.textContent ?? '';
83
- }
84
- else if (child.tagName === 'w:tab') {
85
- // Tab character
86
- text += '\t';
87
- }
88
- else if (child.tagName === 'w:br') {
89
- // Break (newline)
90
- text += '\n';
91
- }
92
- // Skip other elements (w:sym, w:drawing, etc.)
93
- }
94
- return {
95
- text,
96
- start: startOffset,
97
- end: startOffset + text.length,
98
- properties,
99
- };
100
- }
101
- /**
102
- * Extract run properties from a w:rPr element.
103
- */
104
- export function extractRunProperties(rPrElement) {
105
- const props = {};
106
- let hasProps = false;
107
- for (const child of childElements(rPrElement)) {
108
- if (child.tagName === 'w:b') {
109
- props.bold = true;
110
- hasProps = true;
111
- }
112
- else if (child.tagName === 'w:i') {
113
- props.italic = true;
114
- hasProps = true;
115
- }
116
- else if (child.tagName === 'w:u') {
117
- const val = child.getAttribute('w:val');
118
- props.underline = val || 'single';
119
- hasProps = true;
120
- }
121
- else if (child.tagName === 'w:strike') {
122
- props.strikethrough = true;
123
- hasProps = true;
124
- }
125
- else if (child.tagName === 'w:highlight') {
126
- const val = child.getAttribute('w:val');
127
- if (val) {
128
- props.highlight = val;
129
- hasProps = true;
130
- }
131
- }
132
- else if (child.tagName === 'w:color') {
133
- const val = child.getAttribute('w:val');
134
- if (val) {
135
- props.color = val;
136
- hasProps = true;
137
- }
138
- }
139
- else if (child.tagName === 'w:sz') {
140
- const val = child.getAttribute('w:val');
141
- if (val) {
142
- const parsed = Number.parseInt(val, 10);
143
- if (!Number.isNaN(parsed)) {
144
- props.fontSize = parsed;
145
- hasProps = true;
146
- }
147
- }
148
- }
149
- else if (child.tagName === 'w:rFonts') {
150
- const ascii = child.getAttribute('w:ascii');
151
- if (ascii) {
152
- props.fontFamily = ascii;
153
- hasProps = true;
154
- }
155
- }
156
- }
157
- return hasProps ? props : undefined;
158
- }
159
- /**
160
- * Get the document body content (everything inside w:body).
161
- * Useful for document reconstruction.
162
- */
163
- export function getBodyContent(documentXml) {
164
- // Use regex to extract body content while preserving structure
165
- const bodyMatch = documentXml.match(/(<w:body[^>]*>)([\s\S]*?)(<\/w:body>)/);
166
- if (!bodyMatch) {
167
- return {
168
- beforeBody: documentXml,
169
- bodyContent: '',
170
- afterBody: '',
171
- };
172
- }
173
- const bodyStart = documentXml.indexOf(bodyMatch[0]);
174
- const bodyEnd = bodyStart + bodyMatch[0].length;
175
- return {
176
- beforeBody: documentXml.slice(0, bodyStart) + bodyMatch[1],
177
- bodyContent: bodyMatch[2],
178
- afterBody: bodyMatch[3] + documentXml.slice(bodyEnd),
179
- };
180
- }
181
- /**
182
- * Extract sectPr (section properties) from body content if present.
183
- * sectPr must remain at the end of body.
184
- */
185
- export function extractSectPr(bodyContent) {
186
- // Find the last w:sectPr in the body
187
- const sectPrMatch = bodyContent.match(/<w:sectPr[^>]*>[\s\S]*?<\/w:sectPr>\s*$/);
188
- if (!sectPrMatch) {
189
- return { content: bodyContent, sectPr: null };
190
- }
191
- const sectPrStart = bodyContent.lastIndexOf(sectPrMatch[0]);
192
- return {
193
- content: bodyContent.slice(0, sectPrStart),
194
- sectPr: sectPrMatch[0],
195
- };
196
- }
197
- /**
198
- * Convert an element back to XML string.
199
- */
200
- function elementToXml(element) {
201
- return serializer.serializeToString(element);
202
- }
203
- /**
204
- * Get direct element children.
205
- */
206
- function childElements(element) {
207
- const children = [];
208
- for (let i = 0; i < element.childNodes.length; i++) {
209
- const child = element.childNodes[i];
210
- if (child && child.nodeType === ELEMENT_NODE) {
211
- children.push(child);
212
- }
213
- }
214
- return children;
215
- }
216
- //# sourceMappingURL=xmlParser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xmlParser.js","sourceRoot":"","sources":["../../../src/baselines/diffmatch/xmlParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;AAYvC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClC,MAAM,UAAU,GAA4B,EAAE,CAAC;IAE/C,qBAAqB;IACrB,MAAM,IAAI,GAAG,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,oCAAoC;IACpC,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;YACrD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,cAAc,EAAE,CAAC;QACnB,CAAC;QACD,gEAAgE;IAClE,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,QAAiB,EAAE,KAAa;IACxD,MAAM,IAAI,GAAc,EAAE,CAAC;IAC3B,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,MAA0B,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC9B,uDAAuD;YACvD,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACnC,cAAc;YACd,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAC9C,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnB,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,yDAAyD;IAC3D,CAAC;IAED,uBAAuB;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE5C,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC;QACzB,MAAM;QACN,aAAa,EAAE,KAAK;KACrB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,QAAiB,EAAE,WAAmB;IACxD,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,UAAqC,CAAC;IAE1C,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC9B,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACnC,mBAAmB;YACnB,IAAI,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;QAClC,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YACrC,gBAAgB;YAChB,IAAI,IAAI,IAAI,CAAC;QACf,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YACpC,kBAAkB;YAClB,IAAI,IAAI,IAAI,CAAC;QACf,CAAC;QACD,+CAA+C;IACjD,CAAC;IAED,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,WAAW;QAClB,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC,MAAM;QAC9B,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAmB;IACtD,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9C,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YAClB,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACnC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YACpB,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACxC,KAAK,CAAC,SAAS,GAAG,GAAG,IAAI,QAAQ,CAAC;YAClC,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACxC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;YAC3B,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;YAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,GAAG,EAAE,CAAC;gBACR,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;gBACtB,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,GAAG,EAAE,CAAC;gBACR,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;gBAClB,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1B,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;oBACxB,QAAQ,GAAG,IAAI,CAAC;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;gBACzB,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB;IAKhD,+DAA+D;IAC/D,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAE7E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,UAAU,EAAE,WAAW;YACvB,WAAW,EAAE,EAAE;YACf,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAEhD,OAAO;QACL,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QAC1D,WAAW,EAAE,SAAS,CAAC,CAAC,CAAE;QAC1B,SAAS,EAAE,SAAS,CAAC,CAAC,CAAE,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;KACtD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB;IAI/C,qCAAqC;IACrC,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAEjF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO;QACL,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;QAC1C,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,OAAgB;IACpC,OAAO,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,OAAgB;IACrC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC7C,QAAQ,CAAC,IAAI,CAAC,KAAgB,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,72 +0,0 @@
1
- /**
2
- * Benchmark metrics collection.
3
- *
4
- * Defines the metrics collected during A/B baseline comparison.
5
- */
6
- /**
7
- * Metrics collected from a comparison operation.
8
- */
9
- export interface ComparisonMetrics {
10
- /** Number of insertions detected */
11
- insertions: number;
12
- /** Number of deletions detected */
13
- deletions: number;
14
- /** Number of modifications (paragraphs with changes) */
15
- modifications: number;
16
- /** Average length of changed spans */
17
- avgSpanLength: number;
18
- /** Whether output opens in Word (requires manual verification or COM automation) */
19
- opensInWord: boolean | null;
20
- /** Whether OpenXML SDK can load the output */
21
- openXmlSdkValid: boolean | null;
22
- /** Whether all relationship parts are valid */
23
- noBrokenRelationships: boolean | null;
24
- /** Whether numbering was retained correctly */
25
- numberingRetained: boolean | null;
26
- /** Whether section headings are correct */
27
- sectionHeadingsCorrect: boolean | null;
28
- /** Whether defined terms are preserved */
29
- definedTermsPreserved: boolean | null;
30
- /** Whether tables remain intact */
31
- tablesIntact: boolean | null;
32
- /** Whether cross-references work */
33
- crossRefsWorking: boolean | null;
34
- /** Wall clock time in milliseconds */
35
- wallTimeMs: number;
36
- /** Peak RSS memory in megabytes */
37
- peakRssMb: number;
38
- /** Output file size in bytes */
39
- outputSizeBytes: number;
40
- }
41
- /**
42
- * Create an empty metrics object with null values.
43
- */
44
- export declare function createEmptyMetrics(): ComparisonMetrics;
45
- /**
46
- * Result of running a benchmark on a fixture.
47
- */
48
- export interface BenchmarkResult {
49
- /** Name of the fixture */
50
- fixture: string;
51
- /** Metrics from Baseline A (WmlComparer) */
52
- baselineA: ComparisonMetrics | null;
53
- /** Error from Baseline A if any */
54
- baselineAError?: string;
55
- /** Metrics from Baseline B (pure TS) */
56
- baselineB: ComparisonMetrics | null;
57
- /** Error from Baseline B if any */
58
- baselineBError?: string;
59
- /** Metrics from Word oracle (if available) */
60
- wordOracle?: ComparisonMetrics | null;
61
- /** Timestamp when benchmark was run */
62
- timestamp: Date;
63
- }
64
- /**
65
- * Measure memory usage.
66
- */
67
- export declare function measureMemory(): number;
68
- /**
69
- * High-resolution timer for performance measurement.
70
- */
71
- export declare function createTimer(): () => number;
72
- //# sourceMappingURL=metrics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/benchmark/metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAEhC,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,aAAa,EAAE,MAAM,CAAC;IAGtB,oFAAoF;IACpF,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,8CAA8C;IAC9C,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,+CAA+C;IAC/C,qBAAqB,EAAE,OAAO,GAAG,IAAI,CAAC;IAGtC,+CAA+C;IAC/C,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,2CAA2C;IAC3C,sBAAsB,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,0CAA0C;IAC1C,qBAAqB,EAAE,OAAO,GAAG,IAAI,CAAC;IACtC,mCAAmC;IACnC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,oCAAoC;IACpC,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC;IAGjC,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,iBAAiB,CAkBtD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,uCAAuC;IACvC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAGtC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,MAAM,CAM1C"}
@@ -1,45 +0,0 @@
1
- /**
2
- * Benchmark metrics collection.
3
- *
4
- * Defines the metrics collected during A/B baseline comparison.
5
- */
6
- /**
7
- * Create an empty metrics object with null values.
8
- */
9
- export function createEmptyMetrics() {
10
- return {
11
- insertions: 0,
12
- deletions: 0,
13
- modifications: 0,
14
- avgSpanLength: 0,
15
- opensInWord: null,
16
- openXmlSdkValid: null,
17
- noBrokenRelationships: null,
18
- numberingRetained: null,
19
- sectionHeadingsCorrect: null,
20
- definedTermsPreserved: null,
21
- tablesIntact: null,
22
- crossRefsWorking: null,
23
- wallTimeMs: 0,
24
- peakRssMb: 0,
25
- outputSizeBytes: 0,
26
- };
27
- }
28
- /**
29
- * Measure memory usage.
30
- */
31
- export function measureMemory() {
32
- const usage = process.memoryUsage();
33
- return usage.rss / (1024 * 1024); // Convert to MB
34
- }
35
- /**
36
- * High-resolution timer for performance measurement.
37
- */
38
- export function createTimer() {
39
- const start = process.hrtime.bigint();
40
- return () => {
41
- const end = process.hrtime.bigint();
42
- return Number(end - start) / 1_000_000; // Convert to ms
43
- };
44
- }
45
- //# sourceMappingURL=metrics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/benchmark/metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6CH;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,CAAC;QACZ,aAAa,EAAE,CAAC;QAChB,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,IAAI;QACjB,eAAe,EAAE,IAAI;QACrB,qBAAqB,EAAE,IAAI;QAC3B,iBAAiB,EAAE,IAAI;QACvB,sBAAsB,EAAE,IAAI;QAC5B,qBAAqB,EAAE,IAAI;QAC3B,YAAY,EAAE,IAAI;QAClB,gBAAgB,EAAE,IAAI;QACtB,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,CAAC;QACZ,eAAe,EAAE,CAAC;KACnB,CAAC;AACJ,CAAC;AAsBD;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,gBAAgB;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACtC,OAAO,GAAG,EAAE;QACV,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,gBAAgB;IAC1D,CAAC,CAAC;AACJ,CAAC"}