misoton665/elm-review-module-layer-dependency/1.0.0

NoViolationOfModuleLayerDependency

If you defined a layer dependency rule like A <- B, elm-review-module-layer-dependency will detect an error with below importing.

module A

import B.Data

Module A depends on module B (A -> B) is a violation of defined rule.

Rule

Example configuration

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" ]
        ]

Type

= ModuleLayer (List ModuleName)
| DefaultLayer

Provide module name to define rule.

Example

A module Aaa.Bbb.Ccc define as ModuleLayer. ModuleLayer [ [ "Aaa", "Bbb", "Ccc" ] ]

= ModuleLayerDependency (List ModuleLayer)

Provide layer to define rule.

Example

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.