UNPKG

@typegoose/typegoose

Version:

Define Mongoose models using TypeScript classes

51 lines 4.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Post = exports.Pre = exports.post = exports.pre = void 0; const constants_1 = require("./internal/constants"); const errors_1 = require("./internal/errors"); const utils_1 = require("./internal/utils"); const logSettings_1 = require("./logSettings"); // TSDoc for the hooks can't be added without adding it to *every* overload const hooks = { pre(...args) { return (target) => addToHooks(target, 'pre', args); }, post(...args) { return (target) => addToHooks(target, 'post', args); }, }; /** * Add a hook to the hooks Array * @param target Target Class * @param hookType What type is it * @param args All Arguments, that should be passed-through */ function addToHooks(target, hookType, args) { // Convert Method to array if only a string is provided const methods = Array.isArray(args[0]) ? args[0] : [args[0]]; const func = args[1]; const hookOptions = args[2]; (0, utils_1.assertion)(typeof func === 'function', () => new errors_1.ExpectedTypeError('fn', 'function', func)); if (args.length > 3) { logSettings_1.logger.warn(`"addToHooks" parameter "args" has a length of over 3 (length: ${args.length})`); } logSettings_1.logger.info('Adding hooks for "[%s]" to "%s" as type "%s"', methods.join(','), (0, utils_1.getName)(target), hookType); switch (hookType) { case 'post': const postHooks = Array.from(Reflect.getMetadata(constants_1.DecoratorKeys.HooksPost, target) ?? []); postHooks.push({ func, methods, options: hookOptions }); Reflect.defineMetadata(constants_1.DecoratorKeys.HooksPost, postHooks, target); break; case 'pre': const preHooks = Array.from(Reflect.getMetadata(constants_1.DecoratorKeys.HooksPre, target) ?? []); preHooks.push({ func, methods, options: hookOptions }); Reflect.defineMetadata(constants_1.DecoratorKeys.HooksPre, preHooks, target); break; } } exports.pre = hooks.pre; exports.post = hooks.post; // Export it PascalCased exports.Pre = hooks.pre; exports.Post = hooks.post; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9va3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaG9va3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBdUJBLG9EQUFxRDtBQUNyRCw4Q0FBc0Q7QUFDdEQsNENBQXNEO0FBQ3RELCtDQUF1QztBQXFOdkMsMkVBQTJFO0FBQzNFLE1BQU0sS0FBSyxHQUFVO0lBQ25CLEdBQUcsQ0FBQyxHQUFHLElBQUk7UUFDVCxPQUFPLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsSUFBSSxDQUFDLEdBQUcsSUFBSTtRQUNWLE9BQU8sQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDRixDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxTQUFTLFVBQVUsQ0FBQyxNQUFXLEVBQUUsUUFBd0IsRUFBRSxJQUFXO0lBQ3BFLHVEQUF1RDtJQUN2RCxNQUFNLE9BQU8sR0FBMkIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLE1BQU0sSUFBSSxHQUE2QixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsTUFBTSxXQUFXLEdBQWtDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUzRCxJQUFBLGlCQUFTLEVBQUMsT0FBTyxJQUFJLEtBQUssVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksMEJBQWlCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRTNGLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQixvQkFBTSxDQUFDLElBQUksQ0FBQyxpRUFBaUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELG9CQUFNLENBQUMsSUFBSSxDQUFDLDhDQUE4QyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBQSxlQUFPLEVBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFMUcsUUFBUSxRQUFRLEVBQUUsQ0FBQztRQUNqQixLQUFLLE1BQU07WUFDVCxNQUFNLFNBQVMsR0FBa0IsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLHlCQUFhLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3hHLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sQ0FBQyxjQUFjLENBQUMseUJBQWEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ25FLE1BQU07UUFDUixLQUFLLEtBQUs7WUFDUixNQUFNLFFBQVEsR0FBa0IsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLHlCQUFhLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3RHLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sQ0FBQyxjQUFjLENBQUMseUJBQWEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2pFLE1BQU07SUFDVixDQUFDO0FBQ0gsQ0FBQztBQUVZLFFBQUEsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7QUFDaEIsUUFBQSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztBQUUvQix3QkFBd0I7QUFDWCxRQUFBLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQ2hCLFFBQUEsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMifQ==