UNPKG

strapi-plugin-fuzzy-search-young

Version:

Register a weighted fuzzy search endpoint for Strapi Headless CMS you can add your content types to in no time.

32 lines (31 loc) 1.25 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fuzzysort_1 = __importDefault(require("fuzzysort")); exports.default = ({ model, keys, query, }) => { const { pluralName } = model.schemaInfo; if (model.fuzzysortOptions.characterLimit) { model[pluralName].forEach((entry) => { const entryKeys = Object.keys(entry); entryKeys.forEach((key) => { if (!keys.includes(key)) return; if (!entry[key]) return; entry[key] = entry[key].slice(0, model.fuzzysortOptions.characterLimit); }); }); } return { schemaInfo: model.schemaInfo, uid: model.uid, fuzzysortResults: fuzzysort_1.default.go(query, model[pluralName], { threshold: model.fuzzysortOptions.threshold, limit: model.fuzzysortOptions.limit, keys, scoreFn: (a) => Math.max(...model.fuzzysortOptions.keys.map((key, index) => a[index] ? a[index].score + key.weight : -9999)), }), }; };