[{"name":"NoMissingSubscriptionsCall","comment":"\n\n@docs rule\n\n","unions":[],"aliases":[],"values":[{"name":"rule","comment":" Reports likely missing calls to a `subscriptions` function.\n\n    config =\n        [ NoMissingSubscriptionsCall.rule\n        ]\n\n\n## Fail\n\n    import SomeModule\n\n    update msg model =\n        case msg of\n            UsedMsg subMsg ->\n                SomeModule.update subMsg model.used\n\n    subscriptions model =\n        -- We used `SomeModule.update` but not `SomeModule.subscriptions`\n        Sub.none\n\nThis won't fail if `SomeModule` does not define a `subscriptions` function.\n\n\n## Success\n\n    import SomeModule\n\n    update msg model =\n        case msg of\n            UsedMsg subMsg ->\n                SomeModule.update subMsg model.used\n\n    subscriptions model =\n        SomeModule.subscriptions\n\n","type":"Review.Rule.Rule"}],"binops":[]},{"name":"NoUselessSubscriptions","comment":"\n\n@docs rule\n\n","unions":[],"aliases":[],"values":[{"name":"rule","comment":" Reports `subscriptions` functions that never return a subscription.\n\nIn my opinion, this is often a sign of premature architectural work, where you\nset up an `init`, `view`, `update` and `subscriptions` functions. I think\nit is better to define them as they are needed, to avoid adding upfront complexity\nthat turn out to be unnecessary later.\n\n    config =\n        [ NoUselessSubscriptions.rule\n        ]\n\n\n## Fail\n\n    subscriptions : Model -> Sub Msg\n    subscriptions model =\n        Sub.none\n\n\n## Success\n\n    main =\n        Browser.element\n            { init = init\n            , update = update\n            , subscriptions = \\_ -> Sub.none\n            , view = view\n            }\n\n","type":"Review.Rule.Rule"}],"binops":[]}]