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
JavaScript
;
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}`;
}
};