view data fixes
This commit is contained in:
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user