UNPKG

apemandb

Version:
49 lines (43 loc) 1.28 kB
/** * Resolve model module path. * @function resolveModel * @param {string} name - Name of model * @param {Object} [options={}] - Optional settings * @param {string} [options.modelSearchPath=[]] - Additional search path */ 'use strict' const findout = require('findout') const path = require('path') const resolveSafely = require('../requiring/resolve_safely') /** @lends resolveModel */ function resolveModel (name, options = {}) { let { modelSearchPath = {} } = options let parsers = resolveModel.getParsers({ modelSearchPath }) for (let parser of parsers) { let resolved = resolveSafely(parser(name)) if (resolved) { return Object.assign(require(resolved), { $$src: resolved }) } } return null } Object.assign(resolveModel, { getParsers ({ modelSearchPath } = {}) { const { AP_MODEL_SEARCH_PATH } = process.env return [ (name) => name, (name) => path.resolve(name), (name) => findout.resolve(name, { safe: true }) ].concat( String(AP_MODEL_SEARCH_PATH || '').trim().split(',') .concat(modelSearchPath || []) .filter((pathname) => !!pathname) .map((pathname) => (name) => path.resolve(pathname, name) ) ) } }) module.exports = resolveModel