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

57 lines (45 loc) 1.23 kB
'use strict'; const path = require('path'); const fs = require('fs'); const { templateConfiguration, env } = require('datoit-utils'); module.exports = dir => { if (!fs.existsSync(dir)) return {}; return fs .readdirSync(dir, { withFileTypes: true }) .filter(file => file.isFile()) .reduce((acc, file) => { const key = path.basename(file.name, path.extname(file.name)); acc[key] = loadFile(path.resolve(dir, file.name)); return acc; }, {}); }; const loadFile = file => { const ext = path.extname(file); switch (ext) { case '.js': return loadJsFile(file); case '.json': return loadJSONFile(file); default: return {}; } }; const loadJsFile = file => { try { const jsModule = require(file); // call if function if (typeof jsModule === 'function') { return jsModule({ env }); } return jsModule; } catch (error) { throw new Error(`Could not load js config file ${file}: ${error.message}`); } }; const loadJSONFile = file => { try { return templateConfiguration(JSON.parse(fs.readFileSync(file))); } catch (error) { throw new Error(`Could not load json config file ${file}: ${error.message}`); } };