UNPKG

node-rigorous

Version:
54 lines (38 loc) 1.6 kB
/** * Autoriser le require dynamique * Impact -> https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-dynamic-require.md */ /* eslint global-require: 0 */ // --> OFF /* eslint import/no-dynamic-require: 0 */ // --> OFF const fs = require('fs'); function getFileName(file) { return file.substr(0, file.indexOf('.')); } function isAttributeFile(name) { return (name !== '' && name.indexOf('.js') > -1 && name.indexOf('_v.js') === -1); } function isVirtualFile(name) { return (name !== '' && name.indexOf('_v.js') > -1); } module.exports = (attributeModelFolderPath) => { const attributesSchema = {}; const virtuals = {}; fs.readdirSync(attributeModelFolderPath).forEach((file) => { try { // Order matter because virtual file detect has more restricted rules if (isVirtualFile(file)) { const fileName = getFileName(file); const virtualObject = require(`${attributeModelFolderPath}/${fileName}`).default; virtuals[virtualObject.virtualName] = virtualObject; } else if (isAttributeFile(file)) { const fileName = getFileName(file); const attributeObject = require(`${attributeModelFolderPath}/${fileName}`).default; attributesSchema[fileName] = attributeObject; } } catch (err) { console.log(`Attribute ${file} failed to load: ${err.toString()}`); throw err; } }); return { attributesSchema: attributesSchema, virtuals: virtuals }; };