eslint-plugin-fsd-lint
Version:
ESLint plugin for enforcing Feature-Sliced Design (FSD) architecture
76 lines (70 loc) • 2.39 kB
JavaScript
/**
* @fileoverview ESLint plugin for Feature-Sliced Design architecture
*/
import forbiddenImports from './rules/forbidden-imports.js';
import noCrossSliceDependency from './rules/no-cross-slice-dependency.js';
import noGlobalStoreImports from './rules/no-global-store-imports.js';
import noPublicApiSidestep from './rules/no-public-api-sidestep.js';
import noRelativeImports from './rules/no-relative-imports.js';
import noUiInBusinessLogic from './rules/no-ui-in-business-logic.js';
import orderedImports from './rules/ordered-imports.js';
// Export all rules
export const rules = {
'forbidden-imports': forbiddenImports,
'no-cross-slice-dependency': noCrossSliceDependency,
'no-global-store-imports': noGlobalStoreImports,
'no-public-api-sidestep': noPublicApiSidestep,
'no-relative-imports': noRelativeImports,
'no-ui-in-business-logic': noUiInBusinessLogic,
'ordered-imports': orderedImports
};
// Export configurations
export const configs = {
// Recommended configuration
recommended: {
plugins: {
'fsd-lint': {
rules: {
'fsd-lint/forbidden-imports': 'error',
'fsd-lint/no-cross-slice-dependency': 'error',
'fsd-lint/no-global-store-imports': 'error',
'fsd-lint/no-public-api-sidestep': 'error',
'fsd-lint/no-relative-imports': 'error',
'fsd-lint/no-ui-in-business-logic': 'error',
'fsd-lint/ordered-imports': 'warn'
}
}
}
},
// Strict configuration
strict: {
plugins: ['fsd-lint'],
rules: {
'fsd-lint/forbidden-imports': 'error',
'fsd-lint/no-cross-slice-dependency': 'error',
'fsd-lint/no-global-store-imports': 'error',
'fsd-lint/no-public-api-sidestep': 'error',
'fsd-lint/no-relative-imports': 'error',
'fsd-lint/no-ui-in-business-logic': 'error',
'fsd-lint/ordered-imports': 'error'
}
},
// Base configuration (less strict)
base: {
plugins: ['fsd-lint'],
rules: {
'fsd-lint/forbidden-imports': 'warn',
'fsd-lint/no-cross-slice-dependency': 'warn',
'fsd-lint/no-global-store-imports': 'error',
'fsd-lint/no-public-api-sidestep': 'warn',
'fsd-lint/no-relative-imports': 'off',
'fsd-lint/no-ui-in-business-logic': 'error',
'fsd-lint/ordered-imports': 'warn'
}
}
};
// Default export for ESM
export default {
rules,
configs
};