view data fixes

This commit is contained in:
2026-01-23 15:30:23 +01:00
parent e22033be38
commit f8099f04bc
213 changed files with 3466 additions and 3003 deletions

View File

@@ -1,6 +1,6 @@
/**
* ESLint rules for Template Purity Guardrails
*
*
* Enforces pure template components without business logic
*/
@@ -14,17 +14,21 @@ module.exports = {
category: 'Template Purity',
},
messages: {
message: 'ViewModels or DisplayObjects import forbidden in templates - see apps/website/lib/contracts/view-data/ViewData.ts',
message: 'ViewModels or DisplayObjects import forbidden in templates - see apps/website/lib/contracts/view-data/ViewData.ts. Templates should only receive logic-rich ViewModels via props from ClientWrappers, never import them directly.',
},
},
create(context) {
return {
ImportDeclaration(node) {
const importPath = node.source.value;
if ((importPath.includes('@/lib/view-models/') ||
// Templates are allowed to import ViewModels for TYPE-ONLY usage (interface/type)
// but not for instantiation or logic. However, to be safe, we forbid direct imports
// and suggest passing them through ClientWrappers.
if ((importPath.includes('@/lib/view-models/') ||
importPath.includes('@/lib/presenters/') ||
importPath.includes('@/lib/display-objects/')) &&
!isInComment(node)) {
!isInComment(node) &&
node.importKind !== 'type') {
context.report({
node,
messageId: 'message',