dillonkearns/elm-pages-v3-beta/7.0.0

NOTE: the latest version is 21.0.0

BackendTask.Env

Because BackendTask's in elm-pages never run in the browser (see the BackendTask docs), you can access environment variables securely. As long as the environment variable isn't sent down into the final Data value, it won't end up in the client!

import BackendTask exposing (BackendTask)
import BackendTask.Env
import Exception exposing (Throwable)


type alias EnvVariables =
    { sendGridKey : String
    , siteUrl : String
    }


sendEmail : Email -> BackendTask Throwable ()
sendEmail email =
    BackendTask.map2 EnvVariables
        (BackendTask.Env.expect "SEND_GRID_KEY" |> BackendTask.throw)
        (BackendTask.Env.get "BASE_URL"
            |> BackendTask.map (Maybe.withDefault "http://localhost:1234")
        )
        |> BackendTask.andThen (sendEmailBackendTask email)


sendEmailBackendTask : Email -> EnvVariables -> BackendTask Throwable ()
sendEmailBackendTask email envVariables =
    Debug.todo "Not defined here"
get : String -> BackendTask error (Maybe String)

Get an environment variable, or Nothing if there is no environment variable matching that name. This BackendTask will never fail, but instead will return Nothing if the environment variable is missing.

expect : String -> BackendTask (Exception Error) String

Get an environment variable, or a BackendTask Exception if there is no environment variable matching that name.

Errors

type Error
= MissingEnvVariable String