UNPKG

@biryanihouse/medusa-plugin-meilisearch

Version:
79 lines 7.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MeiliSearchService = void 0; const utils_1 = require("@biryanihouse/utils"); const meilisearch_1 = require("meilisearch"); const types_1 = require("../types"); const transformer_1 = require("../utils/transformer"); class MeiliSearchService extends utils_1.SearchUtils.AbstractSearchService { constructor(container, options) { super(container, options); this.isDefault = false; this.config_ = options; if (process.env.NODE_ENV !== 'development') { if (!options.config?.apiKey) { throw Error('Meilisearch API key is missing in plugin config. See https://github.com/rokmohar/medusa-plugin-meilisearch'); } } if (!options.config?.host) { throw Error('Meilisearch host is missing in plugin config. See https://github.com/rokmohar/medusa-plugin-meilisearch'); } this.client_ = new meilisearch_1.MeiliSearch(options.config); } async createIndex(indexName, options = { primaryKey: 'id' }) { return await this.client_.createIndex(indexName, options); } getIndex(indexName) { return this.client_.index(indexName); } async addDocuments(indexName, documents, type) { const transformedDocuments = this.getTransformedDocuments(type, documents); return await this.client_.index(indexName).addDocuments(transformedDocuments, { primaryKey: 'id' }); } async replaceDocuments(indexName, documents, type) { const transformedDocuments = this.getTransformedDocuments(type, documents); return await this.client_.index(indexName).addDocuments(transformedDocuments, { primaryKey: 'id' }); } async deleteDocument(indexName, documentId) { return await this.client_.index(indexName).deleteDocument(documentId); } async deleteAllDocuments(indexName) { return await this.client_.index(indexName).deleteAllDocuments(); } async search(indexName, query, options) { const { paginationOptions, filter, additionalOptions } = options; return await this.client_.index(indexName).search(query, { filter, ...paginationOptions, ...additionalOptions }); } async updateSettings(indexName, settings) { const indexSettings = settings.indexSettings ?? {}; await this.upsertIndex(indexName, settings); return await this.client_.index(indexName).updateSettings(indexSettings); } async upsertIndex(indexName, settings) { try { await this.client_.getIndex(indexName); } catch (error) { if (error.code === types_1.meilisearchErrorCodes.INDEX_NOT_FOUND) { await this.createIndex(indexName, { primaryKey: settings?.primaryKey ?? 'id', }); } } } getTransformedDocuments(type, documents) { if (!documents?.length) { return []; } switch (type) { case utils_1.SearchUtils.indexTypes.PRODUCTS: const productsTransformer = this.config_.settings?.[utils_1.SearchUtils.indexTypes.PRODUCTS]?.transformer ?? transformer_1.transformProduct; return documents.map(productsTransformer); default: return documents; } } } exports.MeiliSearchService = MeiliSearchService; MeiliSearchService.identifier = 'index-meilisearch'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVpbGlzZWFyY2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9tZWlsaXNlYXJjaC9zZXJ2aWNlcy9tZWlsaXNlYXJjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwrQ0FBaUQ7QUFDakQsNkNBQW1EO0FBQ25ELG9DQUEwRTtBQUMxRSxzREFBdUQ7QUFFdkQsTUFBYSxrQkFBbUIsU0FBUSxtQkFBVyxDQUFDLHFCQUFxQjtJQVF2RSxZQUFZLFNBQWMsRUFBRSxPQUFpQztRQUMzRCxLQUFLLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBTjNCLGNBQVMsR0FBRyxLQUFLLENBQUE7UUFRZixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUV0QixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUM1QixNQUFNLEtBQUssQ0FDVCw0R0FBNEcsQ0FDN0csQ0FBQTtZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDMUIsTUFBTSxLQUFLLENBQ1QseUdBQXlHLENBQzFHLENBQUE7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLHlCQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2hELENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQWlCLEVBQUUsVUFBbUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO1FBQzFGLE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUVELFFBQVEsQ0FBQyxTQUFpQjtRQUN4QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3RDLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQWlCLEVBQUUsU0FBYyxFQUFFLElBQVk7UUFDaEUsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBRTFFLE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNyRyxDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFNBQWlCLEVBQUUsU0FBYyxFQUFFLElBQVk7UUFDcEUsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBRTFFLE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUNyRyxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFpQixFQUFFLFVBQWtCO1FBQ3hELE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDdkUsQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxTQUFpQjtRQUN4QyxPQUFPLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtJQUNqRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFpQixFQUFFLEtBQWEsRUFBRSxPQUE0QjtRQUN6RSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsT0FBTyxDQUFBO1FBRWhFLE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxpQkFBaUIsRUFBRSxDQUFDLENBQUE7SUFDbEgsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBaUIsRUFBRSxRQUE4QztRQUNwRixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQTtRQUVsRCxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRTNDLE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDMUUsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBaUIsRUFBRSxRQUFtQztRQUN0RSxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3hDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLDZCQUFxQixDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN6RCxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFO29CQUNoQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsSUFBSSxJQUFJO2lCQUN6QyxDQUFDLENBQUE7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxJQUFZLEVBQUUsU0FBZ0I7UUFDcEQsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN2QixPQUFPLEVBQUUsQ0FBQTtRQUNYLENBQUM7UUFFRCxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyxtQkFBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRO2dCQUNsQyxNQUFNLG1CQUFtQixHQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLG1CQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFdBQVcsSUFBSSw4QkFBZ0IsQ0FBQTtnQkFFM0YsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUE7WUFDM0M7Z0JBQ0UsT0FBTyxTQUFTLENBQUE7UUFDcEIsQ0FBQztJQUNILENBQUM7O0FBbEdILGdEQW1HQztBQWxHUSw2QkFBVSxHQUFHLG1CQUFtQixBQUF0QixDQUFzQiJ9