38 lines
872 B
JavaScript
38 lines
872 B
JavaScript
module.exports = {
|
|
meta: {
|
|
type: 'problem',
|
|
docs: {
|
|
description: 'Enforce that Core Domain does not depend on Application layer',
|
|
category: 'Architecture',
|
|
recommended: true,
|
|
},
|
|
fixable: null,
|
|
schema: [],
|
|
messages: {
|
|
forbiddenImport: 'Domain layer should not depend on Application layer. Forbidden import from "{{source}}".',
|
|
},
|
|
},
|
|
|
|
create(context) {
|
|
const filename = context.getFilename();
|
|
const isDomainFile = filename.includes('/domain/');
|
|
|
|
if (!isDomainFile) return {};
|
|
|
|
return {
|
|
ImportDeclaration(node) {
|
|
const source = node.source.value;
|
|
if (source.includes('/application/')) {
|
|
context.report({
|
|
node,
|
|
messageId: 'forbiddenImport',
|
|
data: {
|
|
source,
|
|
},
|
|
});
|
|
}
|
|
},
|
|
};
|
|
},
|
|
};
|