From 329aa50daa953518ec2bdc03959af86fdcb506a6 Mon Sep 17 00:00:00 2001 From: Simon Cambier Date: Tue, 17 Jan 2023 21:45:35 +0100 Subject: [PATCH] Fix #181 - Making sure that documents have a .path Though they should... --- src/cache-manager.ts | 10 +++++++++- src/search/omnisearch.ts | 8 +++++--- 2 files changed, 14 insertions(+), 4 deletions(-) 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(