diff --git a/src/cache-manager.ts b/src/cache-manager.ts index 68b39e4..1040be5 100644 --- a/src/cache-manager.ts +++ b/src/cache-manager.ts @@ -138,9 +138,17 @@ class CacheManager { public async addToLiveCache(path: string): Promise { try { const doc = await getAndMapIndexedDocument(path) + if (!doc.path) { + console.error( + `Missing .path field in IndexedDocument "${doc.basename}", skipping` + ) + return + } this.documents.set(path, doc) } catch (e) { - console.warn('Omnisearch: Error while adding to live cache', e) + console.warn(`Omnisearch: Error while adding "${path}" to live cache`, e) + // Shouldn't be needed, but... + this.removeFromLiveCache(path) } } diff --git a/src/search/omnisearch.ts b/src/search/omnisearch.ts index 5a7ed53..6265bdd 100644 --- a/src/search/omnisearch.ts +++ b/src/search/omnisearch.ts @@ -95,9 +95,11 @@ export class Omnisearch { * @param paths */ public async addFromPaths(paths: string[]): Promise { - let documents = await Promise.all( - paths.map(async path => await cacheManager.getDocument(path)) - ) + let documents = ( + await Promise.all( + paths.map(async path => await cacheManager.getDocument(path)) + ) + ).filter(d => !!d?.path) // If a document is already added, discard it this.removeFromPaths(