UNPKG

apemandb

Version:
37 lines (32 loc) 1.01 kB
/** * Require hooks from files. * @function fromFiles */ 'use strict' const aglob = require('aglob') const colorprint = require('colorprint') const path = require('path') const { pascalcase } = require('stringcase') /** @lends fromFiles */ function fromFiles (models, pattern) { let hooks = {} aglob.sync(pattern) .filter((filename) => !/^_/.test(path.basename(filename))) .forEach((filename) => { let basename = path.basename(filename, path.extname(filename)) let modelName = pascalcase(basename.replace(/[\._]hook$/, '')) let isKnownModel = models.hasOwnProperty(modelName) if (!isKnownModel) { colorprint.warn(`[apemandb] Skip hooking for unknown model: ${modelName}`) return } let Model = models[ modelName ] let hook = require(path.resolve(filename)) for (let name of Object.keys(hook)) { Model.hook(name, hook[ name ]) } hooks[ modelName ] = hook }) return hooks } module.exports = fromFiles