First wire-order segment index where prev/cur diverge (added/removed/changed).
(prev: Segment[], cur: Segment[])
| 201 | |
| 202 | /** First wire-order segment index where prev/cur diverge (added/removed/changed). */ |
| 203 | function firstDivergence(prev: Segment[], cur: Segment[]): number { |
| 204 | const n = Math.min(prev.length, cur.length); |
| 205 | for (let i = 0; i < n; i += 1) { |
| 206 | if (prev[i].hash !== cur[i].hash || prev[i].id !== cur[i].id) return i; |
| 207 | } |
| 208 | return prev.length === cur.length ? -1 : n; |
| 209 | } |
| 210 | |
| 211 | /** Effective cached prefix = bytes up to the last breakpoint strictly before divergence. */ |
| 212 | function cachedPrefixBytes(segs: Segment[], divergeIdx: number): { bytes: number; at: string } { |