Build a fallback fingerprint from parsed metadata when raw patch text is unavailable.
(file: DiffFile)
| 48 | |
| 49 | /** Build a fallback fingerprint from parsed metadata when raw patch text is unavailable. */ |
| 50 | function metadataFingerprint(file: DiffFile) { |
| 51 | const hunkSummary = file.metadata.hunks |
| 52 | .map( |
| 53 | (hunk) => |
| 54 | `${hunk.hunkSpecs ?? ""}:${hunk.deletionStart}:${hunk.deletionCount}:${hunk.additionStart}:${hunk.additionCount}:${hunk.hunkContent.length}`, |
| 55 | ) |
| 56 | .join("|"); |
| 57 | |
| 58 | return [ |
| 59 | file.metadata.name, |
| 60 | file.metadata.prevName ?? "", |
| 61 | file.metadata.type, |
| 62 | lineSetFingerprint(file.metadata.deletionLines), |
| 63 | lineSetFingerprint(file.metadata.additionLines), |
| 64 | hunkSummary, |
| 65 | ].join(":"); |
| 66 | } |
| 67 | |
| 68 | /** Content fingerprint from the diff patch. Changes whenever the underlying diff |
| 69 | * changes, allowing per-file cache invalidation without a global flush. */ |
no test coverage detected