@pdf-testkit/core 0.1.2 → 0.1.3
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.
- package/dist/diff/group.d.ts +1 -1
- package/dist/diff/group.d.ts.map +1 -1
- package/dist/diff/group.js +272 -118
- package/dist/diff/group.js.map +1 -1
- package/package.json +1 -1
package/dist/diff/group.d.ts
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import type { DiffOptions, SemanticEvent, Severity } from '../events.js';
|
|
24
24
|
import type { StructuralSnapshot } from '../types.js';
|
|
25
|
-
export type GroupKind = 'single' | 'table-
|
|
25
|
+
export type GroupKind = 'single' | 'table-resized' | 'page-shift-cascade' | 'new-page-furniture' | 'value-changed';
|
|
26
26
|
export interface EventGroup {
|
|
27
27
|
kind: GroupKind;
|
|
28
28
|
/** The member event that defines this group's severity and headline. */
|
package/dist/diff/group.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/diff/group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAqB,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,KAAK,EAA4B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGhF,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,
|
|
1
|
+
{"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/diff/group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAqB,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC5F,OAAO,KAAK,EAA4B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGhF,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,eAAe,GACf,oBAAoB,GACpB,oBAAoB,GACpB,eAAe,CAAC;AAEpB,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,wEAAwE;IACxE,IAAI,EAAE,aAAa,CAAC;IACpB,iFAAiF;IACjF,QAAQ,EAAE,QAAQ,CAAC;IACnB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAyDD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,aAAa,EAAE,EACvB,IAAI,GAAE,WAAgB,GACrB,UAAU,EAAE,CA+Od"}
|
package/dist/diff/group.js
CHANGED
|
@@ -53,14 +53,18 @@ export function groupEvents(baseline, next, events, opts = {}) {
|
|
|
53
53
|
const nextNodes = next.nodes.filter((n) => !ignore.has(n.role));
|
|
54
54
|
const baseById = byId(baseNodes);
|
|
55
55
|
const nextById = byId(nextNodes);
|
|
56
|
+
const baseRank = readingRank(baseNodes);
|
|
56
57
|
const nextRank = readingRank(nextNodes);
|
|
57
58
|
// Re-run the matcher rather than threading its result out of `diffSnapshots`:
|
|
58
59
|
// it is deterministic over the same inputs, and grouping needs the *pairing*
|
|
59
60
|
// (which base node became which next node) that the flat event list drops.
|
|
60
61
|
const { pairs } = matchNodes(baseNodes, nextNodes);
|
|
61
62
|
const baseToNext = new Map();
|
|
62
|
-
|
|
63
|
+
const nextToBase = new Map();
|
|
64
|
+
for (const p of pairs) {
|
|
63
65
|
baseToNext.set(p.base.id, p.next.id);
|
|
66
|
+
nextToBase.set(p.next.id, p.base.id);
|
|
67
|
+
}
|
|
64
68
|
// Event indices that carry a resolvable node, split by which snapshot the id
|
|
65
69
|
// belongs to. `element-removed` is the only one pointing at the baseline.
|
|
66
70
|
// One node can produce several events (an added cell that also overflows), so
|
|
@@ -80,12 +84,42 @@ export function groupEvents(baseline, next, events, opts = {}) {
|
|
|
80
84
|
});
|
|
81
85
|
const pageCountIdx = events.findIndex((e) => e.type === 'page-count-changed');
|
|
82
86
|
const repeated = repeatedNormTexts(nextNodes);
|
|
87
|
+
/** The document lost pages rather than gaining them. */
|
|
88
|
+
const shed = next.pageCount < baseline.pageCount;
|
|
89
|
+
/**
|
|
90
|
+
* Where a node sits in the *new* document's reading order. A removed node has
|
|
91
|
+
* no position there at all, so it borrows the slot just after the last
|
|
92
|
+
* surviving thing that preceded it in the baseline — which is exactly where
|
|
93
|
+
* its absence is felt, and lets a deletion be cited as the cause of a shift.
|
|
94
|
+
*/
|
|
95
|
+
const baseByRank = new Map();
|
|
96
|
+
for (const n of baseNodes) {
|
|
97
|
+
const r = baseRank.get(n.id);
|
|
98
|
+
if (r != null)
|
|
99
|
+
baseByRank.set(r, n);
|
|
100
|
+
}
|
|
101
|
+
const rankInNext = (nodeId) => {
|
|
102
|
+
const direct = nextRank.get(nodeId);
|
|
103
|
+
if (direct != null)
|
|
104
|
+
return direct;
|
|
105
|
+
const from = baseRank.get(nodeId);
|
|
106
|
+
if (from == null)
|
|
107
|
+
return null;
|
|
108
|
+
for (let r = from - 1; r >= 0; r--) {
|
|
109
|
+
const prev = baseByRank.get(r);
|
|
110
|
+
const mapped = prev == null ? undefined : baseToNext.get(prev.id);
|
|
111
|
+
const rank = mapped == null ? undefined : nextRank.get(mapped);
|
|
112
|
+
if (rank != null)
|
|
113
|
+
return rank + 0.5;
|
|
114
|
+
}
|
|
115
|
+
return -0.5; // Removed from the very top of the document.
|
|
116
|
+
};
|
|
83
117
|
/** -1 = unclaimed. Otherwise the index of the group this event belongs to. */
|
|
84
118
|
const claim = new Array(events.length).fill(-1);
|
|
85
119
|
const groups = [];
|
|
86
|
-
const open = (kind, rootIdx, summary) => {
|
|
120
|
+
const open = (kind, rootIdx, summary, label) => {
|
|
87
121
|
const id = groups.length;
|
|
88
|
-
groups.push({ kind, rootIdx, members: [rootIdx], summary });
|
|
122
|
+
groups.push({ kind, rootIdx, members: [rootIdx], summary, label });
|
|
89
123
|
claim[rootIdx] = id;
|
|
90
124
|
return id;
|
|
91
125
|
};
|
|
@@ -109,60 +143,97 @@ export function groupEvents(baseline, next, events, opts = {}) {
|
|
|
109
143
|
const id = open('value-changed', addedIdx, `${role} "${before}" → "${after}"`);
|
|
110
144
|
attach(id, removedIdx);
|
|
111
145
|
}
|
|
112
|
-
// ── Rule 3 —
|
|
146
|
+
// ── Rule 3 — page furniture ────────────────────────────────────────────────
|
|
113
147
|
// A page that did not exist in the baseline brings a fresh copy of every
|
|
114
|
-
// repeated fixed element with it
|
|
115
|
-
// `page-count-changed`,
|
|
148
|
+
// repeated fixed element with it; a page that goes away takes its copy with
|
|
149
|
+
// it. Either way those adds/removes are a restatement of `page-count-changed`,
|
|
150
|
+
// not independent findings — so the rule reads whichever snapshot holds the
|
|
151
|
+
// pages that only exist on one side.
|
|
116
152
|
if (pageCountIdx !== -1) {
|
|
153
|
+
const side = shed
|
|
154
|
+
? {
|
|
155
|
+
type: 'element-removed',
|
|
156
|
+
nodes: baseNodes,
|
|
157
|
+
index: baseById,
|
|
158
|
+
eventIdx: eventIdxByBaseId,
|
|
159
|
+
repeated: repeatedNormTexts(baseNodes),
|
|
160
|
+
firstGonePage: next.pageCount,
|
|
161
|
+
}
|
|
162
|
+
: {
|
|
163
|
+
type: 'element-added',
|
|
164
|
+
nodes: nextNodes,
|
|
165
|
+
index: nextById,
|
|
166
|
+
eventIdx: eventIdxByNextId,
|
|
167
|
+
repeated,
|
|
168
|
+
firstGonePage: baseline.pageCount,
|
|
169
|
+
};
|
|
117
170
|
const furniture = [];
|
|
118
|
-
for (const root of
|
|
119
|
-
if (root.node.pageIndex <
|
|
171
|
+
for (const root of subtreeRoots(side.type, events, claim, side.index, side.eventIdx)) {
|
|
172
|
+
if (root.node.pageIndex < side.firstGonePage)
|
|
173
|
+
continue;
|
|
174
|
+
// A table row is content wherever it sits. Line-item text can repeat
|
|
175
|
+
// across pages by coincidence, and mistaking that for a running footer
|
|
176
|
+
// would drag half a table into the page-count group.
|
|
177
|
+
if (root.node.role === 'table' || TABLE_PARTS.has(root.node.role))
|
|
120
178
|
continue;
|
|
121
|
-
const subtree = collectSubtree(root.node,
|
|
122
|
-
if (!subtree.some((n) => n.normText != null && repeated.has(n.normText)))
|
|
179
|
+
const subtree = collectSubtree(root.node, side.nodes);
|
|
180
|
+
if (!subtree.some((n) => n.normText != null && side.repeated.has(n.normText)))
|
|
123
181
|
continue;
|
|
124
182
|
for (const n of subtree) {
|
|
125
|
-
const idx =
|
|
183
|
+
const idx = side.eventIdx.get(n.id);
|
|
126
184
|
if (idx != null && claim[idx] === -1)
|
|
127
185
|
furniture.push(idx);
|
|
128
186
|
}
|
|
129
187
|
}
|
|
130
188
|
if (furniture.length > 0) {
|
|
131
|
-
const id = open('new-page-furniture', pageCountIdx, furnitureSummary(events[pageCountIdx], furniture.length));
|
|
189
|
+
const id = open('new-page-furniture', pageCountIdx, furnitureSummary(events[pageCountIdx], furniture.length), 'the page-count change');
|
|
132
190
|
for (const idx of furniture)
|
|
133
191
|
attach(id, idx);
|
|
134
192
|
}
|
|
135
193
|
}
|
|
136
|
-
// ── Rule 1 — table subtree
|
|
194
|
+
// ── Rule 1 — table subtree resize ──────────────────────────────────────────
|
|
137
195
|
// Restricted to row/cell/table roles on purpose. "Anything added under a node
|
|
138
196
|
// that changed" would swallow a new paragraph inside a container that merely
|
|
139
197
|
// moved; a row or a cell, by contrast, has no meaning apart from its table.
|
|
140
|
-
// A table that
|
|
141
|
-
// extractor reports as a whole
|
|
142
|
-
// actually paired
|
|
143
|
-
|
|
144
|
-
const
|
|
198
|
+
// A table that spans a page break carries a continuation fragment, which the
|
|
199
|
+
// extractor reports as a whole separate table. Those are resolved back to the
|
|
200
|
+
// fragment that actually paired — on *both* sides, since the fragment that
|
|
201
|
+
// exists alone lives in the baseline when the table shrank.
|
|
202
|
+
const tables = {
|
|
203
|
+
baseById,
|
|
204
|
+
nextById,
|
|
205
|
+
baseToNext,
|
|
206
|
+
nextToBase,
|
|
207
|
+
contBase: continuationAnchors(baseNodes, baseRank, baseToNext, pageCountIdx !== -1),
|
|
208
|
+
contNext: continuationAnchors(nextNodes, nextRank, nextToBase, pageCountIdx !== -1),
|
|
209
|
+
eventIdxByBaseId,
|
|
210
|
+
eventIdxByNextId,
|
|
211
|
+
};
|
|
212
|
+
const tableGroups = new Map(); // canonical table key -> group id
|
|
145
213
|
for (let i = 0; i < events.length; i++) {
|
|
146
214
|
if (claim[i] !== -1)
|
|
147
215
|
continue;
|
|
148
216
|
const e = events[i];
|
|
149
217
|
if (e.type !== 'element-added' && e.type !== 'element-removed')
|
|
150
218
|
continue;
|
|
151
|
-
const
|
|
152
|
-
if (
|
|
219
|
+
const key = owningTable(e, tables);
|
|
220
|
+
if (key == null)
|
|
153
221
|
continue;
|
|
154
|
-
let gid = tableGroups.get(
|
|
222
|
+
let gid = tableGroups.get(key);
|
|
155
223
|
if (gid == null) {
|
|
156
|
-
const rootIdx =
|
|
224
|
+
const rootIdx = tableRootIdx(key, tables);
|
|
157
225
|
if (rootIdx == null || claim[rootIdx] !== -1)
|
|
158
226
|
continue;
|
|
159
|
-
gid = open('table-
|
|
160
|
-
tableGroups.set(
|
|
227
|
+
gid = open('table-resized', rootIdx, '');
|
|
228
|
+
tableGroups.set(key, gid);
|
|
161
229
|
}
|
|
162
230
|
attach(gid, i);
|
|
163
231
|
}
|
|
164
|
-
for (const [
|
|
165
|
-
|
|
232
|
+
for (const [key, gid] of tableGroups) {
|
|
233
|
+
const g = groups[gid];
|
|
234
|
+
const { summary, label } = tableSummary(key, tables, g.members, events);
|
|
235
|
+
g.summary = summary;
|
|
236
|
+
g.label = label;
|
|
166
237
|
}
|
|
167
238
|
// ── Rule 2 — uniform page-shift cascade ────────────────────────────────────
|
|
168
239
|
// Partitioned by page *delta*, not destination: on the invoice fixture 8
|
|
@@ -194,10 +265,11 @@ export function groupEvents(baseline, next, events, opts = {}) {
|
|
|
194
265
|
// down. Split the bucket into contiguous document runs and judge each on
|
|
195
266
|
// its own, so a genuine two-region regression reports as two findings
|
|
196
267
|
// rather than one false "everything shifted" line.
|
|
197
|
-
|
|
268
|
+
const movedIds = new Set(ranked.map((m) => events[m.i].nodeId));
|
|
269
|
+
for (const run of contiguousRuns(ranked, nextNodes, nextRank, eventIdxByNextId, repeated, movedIds)) {
|
|
198
270
|
if (run.length < MIN_CASCADE_MEMBERS)
|
|
199
271
|
continue;
|
|
200
|
-
const cause = nearestPrecedingCause(groups, events,
|
|
272
|
+
const cause = nearestPrecedingCause(groups, events, rankInNext, run[0].rank, pageCountIdx);
|
|
201
273
|
if (cause == null)
|
|
202
274
|
continue; // No root -> no group. "These moved, cause unknown" helps nobody.
|
|
203
275
|
const id = open('page-shift-cascade', run[0].i, cascadeSummary(run.length, delta, run.map((m) => m.i), events, cause));
|
|
@@ -370,20 +442,23 @@ function repeatedNormTexts(nodes) {
|
|
|
370
442
|
out.add(text);
|
|
371
443
|
return out;
|
|
372
444
|
}
|
|
373
|
-
/**
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
445
|
+
/**
|
|
446
|
+
* Nodes added (or removed) whose parent was not itself added (or removed) — the
|
|
447
|
+
* tops of the subtrees that appeared or vanished wholesale.
|
|
448
|
+
*/
|
|
449
|
+
function subtreeRoots(type, events, claim, index, eventIdx) {
|
|
450
|
+
const isSameChange = (id) => {
|
|
451
|
+
const idx = eventIdx.get(id);
|
|
452
|
+
return idx != null && events[idx].type === type;
|
|
378
453
|
};
|
|
379
454
|
const out = [];
|
|
380
455
|
events.forEach((e, i) => {
|
|
381
|
-
if (claim[i] !== -1 || e.type !==
|
|
456
|
+
if (claim[i] !== -1 || e.type !== type)
|
|
382
457
|
return;
|
|
383
|
-
const node =
|
|
458
|
+
const node = index.get(e.nodeId);
|
|
384
459
|
if (!node)
|
|
385
460
|
return;
|
|
386
|
-
if (node.parentId != null &&
|
|
461
|
+
if (node.parentId != null && isSameChange(node.parentId))
|
|
387
462
|
return;
|
|
388
463
|
out.push({ idx: i, node });
|
|
389
464
|
});
|
|
@@ -411,79 +486,134 @@ function collectSubtree(root, nodes) {
|
|
|
411
486
|
return out;
|
|
412
487
|
}
|
|
413
488
|
function furnitureSummary(pageCount, extra) {
|
|
414
|
-
|
|
415
|
-
|
|
489
|
+
if (pageCount.type !== 'page-count-changed')
|
|
490
|
+
return pageCount.message;
|
|
491
|
+
const shed = pageCount.to < pageCount.from;
|
|
492
|
+
const pages = Math.abs(pageCount.to - pageCount.from);
|
|
493
|
+
const noun = `repeated header/footer element${extra === 1 ? '' : 's'}`;
|
|
494
|
+
const where = `${shed ? 'removed' : 'new'} page${pages === 1 ? '' : 's'}`;
|
|
495
|
+
return `${pageCount.message} (${shed ? '-' : '+'}${extra} ${noun} on the ${where})`;
|
|
416
496
|
}
|
|
417
497
|
// ── Rule 1 helpers ──────────────────────────────────────────────────────────
|
|
418
498
|
/**
|
|
419
|
-
*
|
|
420
|
-
*
|
|
421
|
-
*
|
|
499
|
+
* Within one snapshot, map every table fragment that exists only on this side to
|
|
500
|
+
* the nearest preceding fragment the matcher recognised. A table crossing a page
|
|
501
|
+
* break is reported by the extractor as two whole tables, and which side holds
|
|
502
|
+
* the extra fragment depends purely on which way the change went — so this runs
|
|
503
|
+
* over the baseline and the new snapshot alike, keyed off `paired` (this side's
|
|
504
|
+
* ids that the matcher resolved to a counterpart).
|
|
505
|
+
*
|
|
506
|
+
* Pairing rather than event type is the anchor test on purpose: the surviving
|
|
507
|
+
* fragment's event is filed under the *other* snapshot's id, so asking "does
|
|
508
|
+
* this fragment have a non-additive event here" answers yes going forwards and
|
|
509
|
+
* no going backwards, which is exactly how deletions stopped grouping.
|
|
510
|
+
*
|
|
511
|
+
* Only when the page count changed: absent that, a second table really is a
|
|
512
|
+
* second table and deserves its own top-level event.
|
|
422
513
|
*/
|
|
423
|
-
function
|
|
514
|
+
function continuationAnchors(nodes, rank, paired, pageCountChanged) {
|
|
424
515
|
const out = new Map();
|
|
425
|
-
if (!
|
|
426
|
-
return out;
|
|
427
|
-
const eventTypeOf = (id) => {
|
|
428
|
-
const i = eventIdxByNextId.get(id);
|
|
429
|
-
return i == null ? undefined : events[i].type;
|
|
430
|
-
};
|
|
431
|
-
// The primary is the earliest table carrying a non-additive event, i.e. one
|
|
432
|
-
// the matcher recognised as the same table as in the baseline.
|
|
433
|
-
let primary = null;
|
|
434
|
-
for (const [id, n] of nextById) {
|
|
435
|
-
if (n.role !== 'table')
|
|
436
|
-
continue;
|
|
437
|
-
const type = eventTypeOf(id);
|
|
438
|
-
if (type == null || type === 'element-added')
|
|
439
|
-
continue;
|
|
440
|
-
if (primary == null || (nextRank.get(id) ?? 0) < (nextRank.get(primary) ?? 0))
|
|
441
|
-
primary = id;
|
|
442
|
-
}
|
|
443
|
-
if (primary == null)
|
|
516
|
+
if (!pageCountChanged)
|
|
444
517
|
return out;
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
518
|
+
const tables = nodes
|
|
519
|
+
.filter((n) => n.role === 'table')
|
|
520
|
+
.sort((a, b) => (rank.get(a.id) ?? 0) - (rank.get(b.id) ?? 0));
|
|
521
|
+
let anchor = null;
|
|
522
|
+
for (const t of tables) {
|
|
523
|
+
if (paired.has(t.id))
|
|
524
|
+
anchor = t.id;
|
|
525
|
+
else if (anchor != null)
|
|
526
|
+
out.set(t.id, anchor);
|
|
448
527
|
}
|
|
449
528
|
return out;
|
|
450
529
|
}
|
|
451
|
-
/**
|
|
452
|
-
|
|
530
|
+
/**
|
|
531
|
+
* The canonical key of the logical table this add/remove belongs to, or null.
|
|
532
|
+
*
|
|
533
|
+
* The key is side-prefixed (`next:<id>` / `base:<id>`) because a table only
|
|
534
|
+
* present in the baseline has no new-snapshot id to be named by, and forcing one
|
|
535
|
+
* is what made deletions ungroupable: every descendant of a vanished fragment
|
|
536
|
+
* failed its `baseToNext` lookup and fell out as a loose row.
|
|
537
|
+
*/
|
|
538
|
+
function owningTable(e, t) {
|
|
453
539
|
const fromBase = e.type === 'element-removed';
|
|
454
|
-
const
|
|
455
|
-
const
|
|
540
|
+
const index = fromBase ? t.baseById : t.nextById;
|
|
541
|
+
const cont = fromBase ? t.contBase : t.contNext;
|
|
542
|
+
const node = 'nodeId' in e ? index.get(e.nodeId) : undefined;
|
|
456
543
|
if (!node)
|
|
457
544
|
return null;
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
545
|
+
let table;
|
|
546
|
+
if (node.role === 'table') {
|
|
547
|
+
// A table's own add/remove groups only when it is a continuation fragment of
|
|
548
|
+
// a table that survived; otherwise it is a finding in its own right.
|
|
549
|
+
const anchor = cont.get(node.id);
|
|
550
|
+
if (anchor == null)
|
|
551
|
+
return null;
|
|
552
|
+
table = index.get(anchor);
|
|
553
|
+
}
|
|
554
|
+
else {
|
|
555
|
+
if (!TABLE_PARTS.has(node.role))
|
|
466
556
|
return null;
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
557
|
+
let cur = node;
|
|
558
|
+
while (cur?.parentId != null) {
|
|
559
|
+
const parent = index.get(cur.parentId);
|
|
560
|
+
if (!parent)
|
|
470
561
|
return null;
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
562
|
+
if (parent.role === 'table') {
|
|
563
|
+
table = parent;
|
|
564
|
+
break;
|
|
565
|
+
}
|
|
566
|
+
cur = parent;
|
|
474
567
|
}
|
|
475
|
-
cur = parent;
|
|
476
568
|
}
|
|
569
|
+
if (!table)
|
|
570
|
+
return null;
|
|
571
|
+
// Rows and cells under a continuation fragment belong to its anchor table.
|
|
572
|
+
const anchorId = cont.get(table.id) ?? table.id;
|
|
573
|
+
const nextId = fromBase ? t.baseToNext.get(anchorId) : anchorId;
|
|
574
|
+
if (nextId != null && t.eventIdxByNextId.has(nextId))
|
|
575
|
+
return `next:${nextId}`;
|
|
576
|
+
const baseId = fromBase ? anchorId : t.nextToBase.get(anchorId);
|
|
577
|
+
if (baseId != null && t.eventIdxByBaseId.has(baseId))
|
|
578
|
+
return `base:${baseId}`;
|
|
477
579
|
return null;
|
|
478
580
|
}
|
|
479
|
-
function
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
581
|
+
function splitKey(key) {
|
|
582
|
+
const at = key.indexOf(':');
|
|
583
|
+
return { side: key.slice(0, at), id: key.slice(at + 1) };
|
|
584
|
+
}
|
|
585
|
+
/** The event index that heads this table's group. */
|
|
586
|
+
function tableRootIdx(key, t) {
|
|
587
|
+
const { side, id } = splitKey(key);
|
|
588
|
+
return side === 'next' ? t.eventIdxByNextId.get(id) : t.eventIdxByBaseId.get(id);
|
|
589
|
+
}
|
|
590
|
+
/** The anchor fragment plus every continuation fragment that points at it. */
|
|
591
|
+
function fragmentsOf(anchorId, index, cont) {
|
|
592
|
+
if (anchorId == null)
|
|
593
|
+
return [];
|
|
594
|
+
const anchor = index.get(anchorId);
|
|
595
|
+
const out = anchor ? [anchor] : [];
|
|
596
|
+
for (const [id, a] of cont) {
|
|
597
|
+
if (a !== anchorId)
|
|
598
|
+
continue;
|
|
599
|
+
const n = index.get(id);
|
|
600
|
+
if (n)
|
|
601
|
+
out.push(n);
|
|
484
602
|
}
|
|
485
|
-
|
|
486
|
-
|
|
603
|
+
return out.sort((a, b) => a.pageIndex - b.pageIndex || a.order - b.order);
|
|
604
|
+
}
|
|
605
|
+
/**
|
|
606
|
+
* The table's before/after shape is read from the *structure* — every fragment
|
|
607
|
+
* on each side — rather than from the group's member events. Scanning members
|
|
608
|
+
* only ever sees the fragments that changed, so on a shrink it would miss the
|
|
609
|
+
* baseline's continuation fragment entirely and report a 21-row table as a
|
|
610
|
+
* 9-row one. Row and cell counts still come from the members, so the numbers in
|
|
611
|
+
* the headline always agree with what is inside the group.
|
|
612
|
+
*/
|
|
613
|
+
function tableSummary(key, t, members, events) {
|
|
614
|
+
const { side, id } = splitKey(key);
|
|
615
|
+
const baseFrags = fragmentsOf(side === 'base' ? id : t.nextToBase.get(id), t.baseById, t.contBase);
|
|
616
|
+
const nextFrags = fragmentsOf(side === 'next' ? id : t.baseToNext.get(id), t.nextById, t.contNext);
|
|
487
617
|
let rows = 0;
|
|
488
618
|
let cells = 0;
|
|
489
619
|
for (const m of members) {
|
|
@@ -491,7 +621,7 @@ function tableSummary(tableId, baseById, nextById, baseToNext, members, events)
|
|
|
491
621
|
if (!('nodeId' in e))
|
|
492
622
|
continue;
|
|
493
623
|
const removed = e.type === 'element-removed';
|
|
494
|
-
const n = (removed ? baseById : nextById).get(e.nodeId);
|
|
624
|
+
const n = (removed ? t.baseById : t.nextById).get(e.nodeId);
|
|
495
625
|
if (!n)
|
|
496
626
|
continue;
|
|
497
627
|
const sign = removed ? -1 : 1;
|
|
@@ -499,23 +629,34 @@ function tableSummary(tableId, baseById, nextById, baseToNext, members, events)
|
|
|
499
629
|
rows += sign;
|
|
500
630
|
else if (n.role === 'cell')
|
|
501
631
|
cells += sign;
|
|
502
|
-
// Only added tables: the group's own root is the primary fragment, already
|
|
503
|
-
// seeded above, and counting it twice doubles the reported row total.
|
|
504
|
-
else if (n.role === 'table' && e.type === 'element-added')
|
|
505
|
-
fragments.push(n);
|
|
506
632
|
}
|
|
507
|
-
const pages = [...new Set(fragments.map((f) => f.pageIndex + 1))].sort((a, b) => a - b);
|
|
508
|
-
const shape = baseTable?.table
|
|
509
|
-
? `${baseTable.table.rows}×${baseTable.table.cols} → ${fragments.reduce((s, f) => s + (f.table?.rows ?? 0), 0)}×${fragments[0]?.table?.cols ?? '?'}`
|
|
510
|
-
: 'table';
|
|
511
633
|
const delta = [
|
|
512
634
|
rows !== 0 ? `${rows > 0 ? '+' : ''}${rows} row${Math.abs(rows) === 1 ? '' : 's'}` : null,
|
|
513
635
|
cells !== 0 ? `${cells > 0 ? '+' : ''}${cells} cell${Math.abs(cells) === 1 ? '' : 's'}` : null,
|
|
514
636
|
]
|
|
515
637
|
.filter(Boolean)
|
|
516
638
|
.join(', ');
|
|
639
|
+
if (baseFrags.length === 0) {
|
|
640
|
+
return { summary: `table added (${dims(nextFrags)})${delta ? `, ${delta}` : ''}`, label: 'the new table' };
|
|
641
|
+
}
|
|
642
|
+
if (nextFrags.length === 0) {
|
|
643
|
+
return { summary: `table removed (${dims(baseFrags)})${delta ? `, ${delta}` : ''}`, label: 'the removed table' };
|
|
644
|
+
}
|
|
645
|
+
const before = totalRows(baseFrags);
|
|
646
|
+
const after = totalRows(nextFrags);
|
|
647
|
+
const verb = after < before ? 'shrank' : after > before ? 'grew' : 'changed';
|
|
648
|
+
const pages = [...new Set(nextFrags.map((f) => f.pageIndex + 1))].sort((a, b) => a - b);
|
|
517
649
|
const span = pages.length > 1 ? `, now spans pages ${pages[0]}–${pages[pages.length - 1]}` : '';
|
|
518
|
-
return
|
|
650
|
+
return {
|
|
651
|
+
summary: `table ${verb}${delta ? ` ${delta}` : ''} (${dims(baseFrags)} → ${dims(nextFrags)})${span}`,
|
|
652
|
+
label: verb === 'shrank' ? 'the table shrinking' : "the table's growth",
|
|
653
|
+
};
|
|
654
|
+
}
|
|
655
|
+
function totalRows(frags) {
|
|
656
|
+
return frags.reduce((s, f) => s + (f.table?.rows ?? 0), 0);
|
|
657
|
+
}
|
|
658
|
+
function dims(frags) {
|
|
659
|
+
return `${totalRows(frags)}×${frags[0]?.table?.cols ?? '?'}`;
|
|
519
660
|
}
|
|
520
661
|
// ── Rule 2 helpers ──────────────────────────────────────────────────────────
|
|
521
662
|
/**
|
|
@@ -523,29 +664,31 @@ function tableSummary(tableId, baseById, nextById, baseToNext, members, events)
|
|
|
523
664
|
* is what turns "23 things moved" into "23 things moved *because of this*".
|
|
524
665
|
* `page-count-changed` has no position, so it is the last-resort cause.
|
|
525
666
|
*/
|
|
526
|
-
function nearestPrecedingCause(groups, events,
|
|
667
|
+
function nearestPrecedingCause(groups, events, rankInNext, firstMemberRank, pageCountIdx) {
|
|
527
668
|
let best = null;
|
|
528
|
-
let bestRank = -
|
|
669
|
+
let bestRank = -Infinity;
|
|
529
670
|
for (const g of groups) {
|
|
530
|
-
// A cascade is an effect, never a cause; citing one would produce
|
|
531
|
-
//
|
|
532
|
-
|
|
671
|
+
// A cascade is an effect, never a cause; citing one would produce "N moved
|
|
672
|
+
// following M moved following the real thing". A value change swaps one
|
|
673
|
+
// string for another in place, so it cannot push content across a page
|
|
674
|
+
// boundary and is never the reason a page shifted either.
|
|
675
|
+
if (g.kind === 'page-shift-cascade' || g.kind === 'value-changed')
|
|
533
676
|
continue;
|
|
534
677
|
const root = events[g.rootIdx];
|
|
535
678
|
if (!('nodeId' in root))
|
|
536
679
|
continue;
|
|
537
|
-
const rank =
|
|
680
|
+
const rank = rankInNext(root.nodeId);
|
|
538
681
|
if (rank == null || rank >= firstMemberRank)
|
|
539
682
|
continue;
|
|
540
683
|
if (rank > bestRank) {
|
|
541
684
|
bestRank = rank;
|
|
542
|
-
best = {
|
|
685
|
+
best = { summary: g.summary, label: g.label };
|
|
543
686
|
}
|
|
544
687
|
}
|
|
545
688
|
if (best)
|
|
546
689
|
return best;
|
|
547
690
|
if (pageCountIdx !== -1)
|
|
548
|
-
return {
|
|
691
|
+
return { summary: events[pageCountIdx].message };
|
|
549
692
|
return null;
|
|
550
693
|
}
|
|
551
694
|
/**
|
|
@@ -561,14 +704,20 @@ function nearestPrecedingCause(groups, events, nextRank, firstMemberRank, pageCo
|
|
|
561
704
|
* Anything else in the gap is content that stayed put while its neighbours
|
|
562
705
|
* moved — which is not a cascade, so the run ends there.
|
|
563
706
|
*/
|
|
564
|
-
function contiguousRuns(ranked, nextNodes, nextRank, eventIdxByNextId, repeated) {
|
|
707
|
+
function contiguousRuns(ranked, nextNodes, nextRank, eventIdxByNextId, repeated, movedIds) {
|
|
565
708
|
const byRank = new Map();
|
|
566
709
|
for (const n of nextNodes) {
|
|
567
710
|
const r = nextRank.get(n.id);
|
|
568
711
|
if (r != null)
|
|
569
712
|
byRank.set(r, n);
|
|
570
713
|
}
|
|
571
|
-
const
|
|
714
|
+
const cache = new Map();
|
|
715
|
+
const subtree = (n) => {
|
|
716
|
+
let s = cache.get(n.id);
|
|
717
|
+
if (!s)
|
|
718
|
+
cache.set(n.id, (s = collectSubtree(n, nextNodes)));
|
|
719
|
+
return s;
|
|
720
|
+
};
|
|
572
721
|
const bridges = (from, to) => {
|
|
573
722
|
for (let r = from + 1; r < to; r++) {
|
|
574
723
|
const node = byRank.get(r);
|
|
@@ -576,8 +725,18 @@ function contiguousRuns(ranked, nextNodes, nextRank, eventIdxByNextId, repeated)
|
|
|
576
725
|
return false;
|
|
577
726
|
if (eventIdxByNextId.has(node.id))
|
|
578
727
|
continue; // changed for its own reasons
|
|
579
|
-
|
|
580
|
-
|
|
728
|
+
const inside = subtree(node);
|
|
729
|
+
// Page-anchored, and so correctly did not move.
|
|
730
|
+
if (inside.some((d) => d.normText != null && repeated.has(d.normText)))
|
|
731
|
+
continue;
|
|
732
|
+
// An anonymous layout container whose own children are in this very run.
|
|
733
|
+
// Containers have no text to match on, so the matcher pairs them by
|
|
734
|
+
// position and they often end up without a move event even though
|
|
735
|
+
// everything they hold moved. That is a gap in the pairing, not content
|
|
736
|
+
// that stayed behind — the evidence comes from the run itself, so this
|
|
737
|
+
// can never bridge two unrelated regions together.
|
|
738
|
+
if (inside.some((d) => d.id !== node.id && movedIds.has(d.id)))
|
|
739
|
+
continue;
|
|
581
740
|
return false;
|
|
582
741
|
}
|
|
583
742
|
return true;
|
|
@@ -605,12 +764,7 @@ function cascadeSummary(count, delta, idxs, events, cause) {
|
|
|
605
764
|
.filter(Boolean)
|
|
606
765
|
.sort();
|
|
607
766
|
const dir = delta > 0 ? `+${delta}` : `${delta}`;
|
|
608
|
-
|
|
609
|
-
? "the table's growth"
|
|
610
|
-
: cause.kind === 'new-page-furniture'
|
|
611
|
-
? 'the page-count change'
|
|
612
|
-
: cause.summary;
|
|
613
|
-
return `${count} elements shifted ${dir} page${Math.abs(delta) === 1 ? '' : 's'} (${hops.join(', ')}) following ${label}`;
|
|
767
|
+
return `${count} elements shifted ${dir} page${Math.abs(delta) === 1 ? '' : 's'} (${hops.join(', ')}) following ${cause.label ?? cause.summary}`;
|
|
614
768
|
}
|
|
615
769
|
// ── Shared helpers ──────────────────────────────────────────────────────────
|
|
616
770
|
function byId(nodes) {
|
package/dist/diff/group.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/diff/group.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/diff/group.ts"],"names":[],"mappings":"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"}
|