UNPKG

@imranbarbhuiya/mongoose-fuzzy-searching

Version:
48 lines (47 loc) 2.29 kB
"use strict"; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.sort = exports.confidenceScore = void 0; var helpers_1 = require("./helpers"); var search_1 = require("./helpers/db/search"); Object.defineProperty(exports, "confidenceScore", { enumerable: true, get: function () { return search_1.confidenceScore; } }); Object.defineProperty(exports, "sort", { enumerable: true, get: function () { return search_1.sort; } }); var plugin = function (schema, _a) { var fields = _a.fields, options = _a.options; var _b = (0, helpers_1.createFields)(schema, fields), indexes = _b.indexes, weights = _b.weights; var _c = (0, helpers_1.setTransformers)(fields, options), toJSON = _c.toJSON, toObject = _c.toObject; schema.index(indexes, { weights: weights, name: "fuzzy_text" }); schema.set("toObject", toObject); schema.set("toJSON", toJSON); schema.pre("save", function (next) { return (0, helpers_1.createNGramsMiddleware)(this, fields, next); }); schema.pre("findOneAndUpdate", function (next) { return (0, helpers_1.createNGramsMiddleware)(this.getUpdate(), fields, next); }); schema.pre("updateMany", function (next) { return (0, helpers_1.createNGramsMiddleware)(this.getUpdate(), fields, next); }); schema.pre("updateOne", function (next) { return (0, helpers_1.createNGramsMiddleware)(this.getUpdate(), fields, next); }); schema.pre("insertMany", function (next, docs) { (0, helpers_1.createNGramsMiddleware)(docs, fields, next); }); schema.statics.fuzzySearch = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return new (helpers_1.StaticFuzzySearch.bind.apply(helpers_1.StaticFuzzySearch, __spreadArray([void 0], args, false)))().search(this); }; }; exports.default = plugin;