UNPKG

loopback4-slug

Version:
37 lines 1.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SlugRepositoryMixin = exports.debug = void 0; const tslib_1 = require("tslib"); const core_1 = require("@loopback/core"); const slugify_1 = tslib_1.__importDefault(require("slugify")); const keys_1 = require("../keys"); const debug_1 = tslib_1.__importDefault(require("debug")); exports.debug = (0, debug_1.default)('loopback:slug'); /* eslint-disable @typescript-eslint/ban-ts-comment */ function SlugRepositoryMixin() { return function (superClass) { class SlugRepository extends superClass { definePersistedModel(entityClass) { (0, exports.debug)('Execute method "definePersistedModel()"'); // @ts-ignore const modelClass = super.definePersistedModel(entityClass); // @ts-ignore modelClass.observe('before save', async (ctx) => { var _a; if (ctx.instance) { (0, exports.debug)('Run "before save" script'); const propertyMap = (_a = core_1.MetadataInspector.getAllPropertyMetadata(keys_1.MODEL_SLUG_KEY, entityClass.prototype)) !== null && _a !== void 0 ? _a : {}; for (const [propName, propDef] of Object.entries(propertyMap)) { (0, exports.debug)('Generate slug from field "%s" to field "%s"', propDef.field, propName); ctx.instance[propName] = (0, slugify_1.default)(ctx.instance[propDef.field], propDef.options); } } }); return modelClass; } } return SlugRepository; }; } exports.SlugRepositoryMixin = SlugRepositoryMixin; //# sourceMappingURL=slug.repository.js.map