UNPKG

@sap/eslint-plugin-cds

Version:

ESLint plugin including recommended SAP Cloud Application Programming model and environment rules

27 lines (20 loc) 1.05 kB
'use strict' const { globalCache } = require('../utils/Cache') const createRule = require('../utils/createRule') const fs = require('node:fs') const path = require('node:path') /** * @param {string} dir - directory to read rules from * @param {(module: NodeJS.Module) => unknown} post - post processing function * @returns {Record<string, () => NodeJS.Module>} */ const readRulesFromDir = (dir, post) => Object.fromEntries(fs.readdirSync(path.join(__dirname, dir)) .filter(entry => entry.endsWith('.js') && !entry.includes('index')) // only js files .map(file => [path.parse(file).name, require(['.', dir, file].join('/'))]) .filter(([,module]) => Object.hasOwn(module, 'create')) // create() is required to exist on top level by eslint -> good check to find actual rules .map(([file, module]) => [file, () => post(module)])) const cdsRules = readRulesFromDir('.', createRule) const jsRules = readRulesFromDir('js', module => module) const rules = {...cdsRules, ...jsRules} globalCache.set('rules', rules) module.exports = rules