UNPKG

datoit

Version:

An open source headless CMS solution to create and manage your own API. It provides a powerful dashboard and features to make your life easier. Databases supported: MongoDB, MySQL, MariaDB, PostgreSQL, SQLite

37 lines (27 loc) 816 B
'use strict'; const assert = require('assert'); const path = require('path'); const _ = require('lodash'); const fse = require('fs-extra'); module.exports = dir => { if (!fse.existsSync(dir)) return {}; const root = {}; const paths = fse.readdirSync(dir, { withFileTypes: true }).filter(fd => fd.isFile()); for (let fd of paths) { const { name } = fd; const fullPath = dir + path.sep + name; const ext = path.extname(name); const key = path.basename(name, ext); root[_.toLower(key)] = loadPolicy(fullPath); } return root; }; const loadPolicy = file => { try { const policy = require(file); assert(typeof policy === 'function', 'Policy must be a function.'); return policy; } catch (error) { throw `Could not load policy ${file}: ${error.message}`; } };