UNPKG

eslint-plugin-feature-sliced-design-imports

Version:

A custom ESLint plugin designed to enforce strict import rules in projects following the Feature-Sliced Design architecture.

53 lines (40 loc) 1.21 kB
const layers = { app: 'app', pages: 'pages', widgets: 'widgets', features: 'features', entities: 'entities', shared: 'shared', }; const crossEntitiesFolder = '@x'; const rules = { app: ['app', 'pages', 'widgets', 'features', 'entities', 'shared'], pages: ['widgets', 'features', 'entities', 'shared'], widgets: ['features', 'entities', 'shared'], features: ['entities', 'shared'], entities: ['entities', 'shared'], shared: ['shared'], }; function getLayers(config = {}, valueOnly = false) { if (Object.keys(config).length === 0) { return layers; } const transformedLayers = {}; for (const [key, value] of Object.entries(layers)) { const newKey = valueOnly ? key : (config[key] || key); transformedLayers[newKey] = config[value] || value; } return transformedLayers; } function getRules(config = {}) { if (Object.keys(config).length === 0) { return rules; } const transformedRules = {}; for (const [key, values] of Object.entries(rules)) { const newKey = config[key] || key; transformedRules[newKey] = values.map(value => config[value] || value); } return transformedRules; } module.exports = { getLayers, getRules, crossEntitiesFolder };