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
JavaScript
;
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);
};
}