UNPKG

nestjs-meili

Version:

Seamless and declarative integration of [MeiliSearch](https://www.meilisearch.com/) into [NestJS](https://nestjs.com/). Use decorators to configure indexes and inject `MeiliSearch` with type safety and zero boilerplate.

84 lines (83 loc) 3.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MeiliIndex = MeiliIndex; exports.Searchable = Searchable; exports.Filterable = Filterable; exports.Sortable = Sortable; exports.RankingRules = RankingRules; exports.StopWords = StopWords; exports.Synonyms = Synonyms; exports.Pagination = Pagination; exports.Faceting = Faceting; exports.Displayed = Displayed; exports.Distinct = Distinct; exports.PrimaryKey = PrimaryKey; require("reflect-metadata"); const watermarks_1 = require("./watermarks"); function MeiliIndex(index) { return (target) => { Reflect.defineMetadata(watermarks_1.MEILI_INDEX, index, target); }; } function Searchable() { return (target, propertyKey) => { const searchableProps = Reflect.getMetadata(watermarks_1.MEILI_INDEX_SEARCHABLE, target.constructor) || []; searchableProps.push(propertyKey.toString()); Reflect.defineMetadata(watermarks_1.MEILI_INDEX_SEARCHABLE, searchableProps, target.constructor); }; } function Filterable() { return (target, propertyKey) => { const filterableProps = Reflect.getMetadata(watermarks_1.MEILI_INDEX_FILTERABLE, target.constructor) || []; filterableProps.push(propertyKey.toString()); Reflect.defineMetadata(watermarks_1.MEILI_INDEX_FILTERABLE, filterableProps, target.constructor); }; } function Sortable() { return (target, propertyKey) => { const sortableProps = Reflect.getMetadata(watermarks_1.MEILI_INDEX_SORTABLE, target.constructor) || []; sortableProps.push(propertyKey.toString()); Reflect.defineMetadata(watermarks_1.MEILI_INDEX_SORTABLE, sortableProps, target.constructor); }; } function RankingRules(rules) { return (target) => { Reflect.defineMetadata(watermarks_1.MEILI_INDEX_RANKING_RULES, rules, target); }; } function StopWords(words) { return (target) => { Reflect.defineMetadata(watermarks_1.MEILI_INDEX_STOP_WORDS, words, target); }; } function Synonyms(map) { return (target) => { Reflect.defineMetadata(watermarks_1.MEILI_INDEX_SYNONYMS, map, target); }; } function Pagination(maxTotalHits) { return (target) => { Reflect.defineMetadata(watermarks_1.MEILI_INDEX_PAGINATION, maxTotalHits, target); }; } function Faceting(maxValuesPerFacet) { return (target) => { Reflect.defineMetadata(watermarks_1.MEILI_INDEX_FACETING, maxValuesPerFacet, target); }; } function Displayed() { return (target, propertyKey) => { const existing = Reflect.getMetadata(watermarks_1.MEILI_INDEX_DISPLAYED, target.constructor) || []; Reflect.defineMetadata(watermarks_1.MEILI_INDEX_DISPLAYED, [...new Set([...existing, propertyKey.toString()])], target.constructor); }; } function Distinct() { return (target, propertyKey) => { Reflect.defineMetadata(watermarks_1.MEILI_INDEX_DISTINCT, propertyKey.toString(), target.constructor); }; } function PrimaryKey() { return (target, propertyKey) => { Reflect.defineMetadata(watermarks_1.MEILI_PRIMARY_KEY, propertyKey.toString(), target.constructor); }; }