UNPKG

@a24z/markdown-search

Version:

High-performance full-text search for markdown documents

66 lines 2.1 kB
"use strict"; /** * Factory for creating search engine adapters */ Object.defineProperty(exports, "__esModule", { value: true }); exports.SearchEngineFactory = void 0; const FlexSearchAdapter_1 = require("./adapters/implementations/FlexSearchAdapter"); class SearchEngineFactory { /** * Create a search engine adapter of the specified type */ static create(type, options) { switch (type) { case 'flexsearch': return new FlexSearchAdapter_1.FlexSearchAdapter(options); // Future implementations case 'fuse': throw new Error('Fuse.js adapter not yet implemented'); case 'lunr': throw new Error('Lunr.js adapter not yet implemented'); case 'minisearch': throw new Error('MiniSearch adapter not yet implemented'); case 'orama': throw new Error('Orama adapter not yet implemented'); default: throw new Error(`Unknown search engine type: ${type}`); } } /** * Get the default search engine type */ static getDefault() { return 'flexsearch'; } /** * Check if a search engine type is available */ static isAvailable(type) { try { // For now, only FlexSearch is implemented return type === 'flexsearch'; } catch { return false; } } /** * Get all available search engine types */ static getAvailable() { const allTypes = ['flexsearch', 'fuse', 'lunr', 'minisearch', 'orama']; return allTypes.filter((type) => this.isAvailable(type)); } /** * Create an in-memory search engine (convenience method) */ static createInMemoryEngine(options) { return new FlexSearchAdapter_1.FlexSearchAdapter({ ...options, // Force in-memory storage storage: undefined, }); } } exports.SearchEngineFactory = SearchEngineFactory; //# sourceMappingURL=SearchEngineFactory.js.map