eslint-plugin-tis-imports
Version:
Eslint plugin for precise control of architectural restrictions. FSD, public api, hierarchy of entities in the project.
46 lines (45 loc) • 1.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.enforceEntityHierarchyRule = void 0;
const createEntitiesHierarchy_1 = require("./createEntitiesHierarchy");
const PROPERTIES = {
type: 'object',
properties: {
alias: { type: 'string' },
checkingLayers: {
type: 'array',
items: { type: 'string' },
},
hierarchy: {
type: 'array',
items: { type: 'string' },
},
},
required: ['checkingLayers', 'hierarchy'],
additionalProperties: false,
};
const MESSAGES = {
wrongEntityDirection: 'Импорт из сущности "{{importingEntity}}" в "{{currentEntity}}" нарушает иерархию.',
};
const DOCS = {
description: 'Запрещает импорт из родительской сущности в дочернюю внутри одного слоя (entities, features и т.д.)',
recommended: true,
};
exports.enforceEntityHierarchyRule = (() => {
return {
meta: {
type: 'problem',
docs: DOCS,
schema: [PROPERTIES],
messages: MESSAGES,
},
defaultOptions: [{ alias: createEntitiesHierarchy_1.DEFAULT_ALIAS, checkingLayers: [], hierarchy: [] }],
create(context) {
return (0, createEntitiesHierarchy_1.createEnforceEntityHierarchyRule)({
options: context.options[0],
filename: context.filename,
report: context.report,
});
},
};
})();