@akemona-org/strapi
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.25 kB
JavaScript
;
const path = require('path');
const fs = require('fs');
const { templateConfiguration, env } = require('@akemona-org/strapi-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}`);
}
};