diff --git a/src/pdf/metadata.ts b/src/pdf/metadata.ts index b3d7a6b..719da7e 100644 --- a/src/pdf/metadata.ts +++ b/src/pdf/metadata.ts @@ -6,7 +6,10 @@ */ import { getDocument } from "pdfjs-dist"; -import type { Metadata } from "pdfjs-dist"; + +interface PdfJsXmpMetadata { + getAll(): Record; +} export interface PdfIntrinsicMetadata { readonly title?: string; @@ -72,7 +75,7 @@ export function mergeDocumentFields( function normalizePdfMetadata( info: Record, - metadata: Metadata | null, + metadata: PdfJsXmpMetadata | null, ): PdfIntrinsicMetadata { const result: { title?: string; @@ -172,7 +175,9 @@ function pdfDateField(value: unknown): string | undefined { return Number.isNaN(parsed.getTime()) ? trimmed : parsed.toISOString(); } -function xmpFields(metadata: Metadata | null): Record | undefined { +function xmpFields( + metadata: PdfJsXmpMetadata | null, +): Record | undefined { if (metadata === null) return undefined; const all = metadata.getAll() as Record; const xmp: Record = {}; diff --git a/src/recovery/reconcile.ts b/src/recovery/reconcile.ts index 9514592..3782573 100644 --- a/src/recovery/reconcile.ts +++ b/src/recovery/reconcile.ts @@ -20,7 +20,7 @@ export function reconcileFingerprint( return { unchanged, - previousFingerprint, + ...(previousFingerprint !== undefined ? { previousFingerprint } : {}), currentFingerprint, requiresReanchor: !unchanged, }; diff --git a/src/recovery/recovery.test.ts b/src/recovery/recovery.test.ts index 2e15c02..625fcd5 100644 --- a/src/recovery/recovery.test.ts +++ b/src/recovery/recovery.test.ts @@ -10,6 +10,7 @@ import { reIngestAndCompare, recoveryStateAfterLocalSearch, searchCanonicalQuote, + type DiscoveryCandidate, } from "./index"; describe("reconcileFingerprint", () => { @@ -77,15 +78,19 @@ describe("createSourceDiscoveryRegistry", () => { const registry = createSourceDiscoveryRegistry(); registry.register({ name: "low", - discover: vi.fn(async () => [ - { uri: "file:///a", confidence: 0.2, source: "local" }, - ]), + discover: vi.fn( + async (): Promise => [ + { uri: "file:///a", confidence: 0.2, source: "local" }, + ], + ), }); registry.register({ name: "high", - discover: vi.fn(async () => [ - { uri: "https://example.com/doc", confidence: 0.9, source: "external" }, - ]), + discover: vi.fn( + async (): Promise => [ + { uri: "https://example.com/doc", confidence: 0.9, source: "external" }, + ], + ), }); const candidates = await registry.discover({ title: "Example" });