If you defined a layer dependency rule like A <- B
, elm-review-module-layer-dependency will detect an error with below importing.
```elm
module A
import B.Data ```
Module A depends on module B (A -> B
) is a violation of defined rule.
rule : ModuleLayerDependency -> Review.Rule.Rule
config : List Rule
config =
[ NoViolationOfModuleLayerDependency.rule moduleLayerRule
]
moduleLayerRule : ModuleLayerDependency
moduleLayerRule =
ModuleLayerDependency
[ infraLayer
, applicationLayer
, DefaultLayer
, adapterLayer
]
adapterLayer : ModuleLayer
adapterLayer =
ModuleLayer
[ [ "Adapter" ]
, [ "Main" ]
]
applicationLayer : ModuleLayer
applicationLayer =
ModuleLayer
[ [ "Application" ]
]
infraLayer : ModuleLayer
infraLayer =
ModuleLayer
[ [ "Infra" ]
]
Provide module name to define rule.
A module Aaa.Bbb.Ccc
define as ModuleLayer.
ModuleLayer
[ [ "Aaa", "Bbb", "Ccc" ]
]
Provide layer to define rule.
Define ModuleLayerDependency use firstLayer: ModuleLayer
and secondLayer: ModuleLayer
.
[ firstLayer
, secondLayer
]
It means dependency like firstLayer <- secondLayer
.
If imported secondLayer module in firstLayer, elm-review will detect an error.