UNPKG

@addon24/eslint-config

Version:

ESLint configuration rules for WorldOfTextcraft projects - Centralized configuration for all project types

70 lines (60 loc) 2.11 kB
export default { meta: { type: "problem", docs: { description: "Entity-DTOs müssen fromEntity-Methoden bereitstellen", category: "Architecture", recommended: true, }, schema: [], messages: { missingFromEntityMethod: "Entity-DTO-Klasse '{{dtoName}}' muss eine statische fromEntity-Methode bereitstellen", forbiddenCreateMethod: "Entity-DTO-Klasse '{{dtoName}}' darf keine create-Methode haben. Verwende stattdessen fromEntity-Methoden.", }, }, create(context) { const filename = context.getFilename(); // Prüfe, ob es sich um eine Entity-DTO-Datei handelt const isEntityDtoFile = filename.includes("/dto/Entity/"); if (!isEntityDtoFile) { return {}; } let classNode = null; let dtoClassName = ""; return { ClassDeclaration(node) { classNode = node; dtoClassName = node.id?.name; }, ExportDefaultDeclaration(node) { if (node.declaration.type === "ClassDeclaration") { classNode = node.declaration; dtoClassName = node.declaration.id?.name; } }, "Program:exit"(node) { if (!classNode || !dtoClassName) return; const methods = classNode.body.body.filter(member => member.type === "MethodDefinition" && member.static === true ); const hasFromEntityMethod = methods.some(method => method.key?.name === "fromEntity" ); const hasCreateMethod = methods.some(method => method.key?.name === "create" ); // Request-DTOs sind von der fromEntity-Regel ausgenommen const isRequestDto = filename.includes("/dto/Request/"); if (!isRequestDto) { if (!hasFromEntityMethod) { context.report({ node: classNode, messageId: "missingFromEntityMethod", data: { dtoName: dtoClassName } }); } if (hasCreateMethod) { context.report({ node: classNode, messageId: "forbiddenCreateMethod", data: { dtoName: dtoClassName } }); } } }, }; }, };