forked from rtfeldman/elm-spa-example
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathdocs.json
1 lines (1 loc) · 25.1 KB
/
docs.json
1
[{"name":"Api","comment":" This module is responsible for communicating to the Conduit API.\n\n\n# Credentials\n\n@docs Cred, username\n\n\n# HTTP Requests\n\n@docs Request\n@docs register, login, get, post, put, delete, settings\n\n\n# Application\n\n@docs application\n\n\n# Persistence\n\n@docs storeSession, onSessionChange\n\n","unions":[{"name":"Cred","comment":" The authentication credentials for the User (that is, the currently logged-in user.)\n\nThis includes:\n\n - The cred's Username\n - The cred's authentication token\n\nBy design, there is no way to access the token directly as a `String`.\nIt can be added to a header to a HttpBuilder for a request, or encoded\ninto local storage, but that's it.\n\nThis token should never be rendered to the end user, and with this API, it\ncan't be!\n\n","args":[],"cases":[]}],"aliases":[{"name":"Request","comment":" For convenience, to avoid having to import [`Api.Endpoint`](Api-Endpoint) when using `Api`.\n","args":["a"],"type":"Api.Endpoint.Request a"}],"values":[{"name":"application","comment":" A custom application that knows how to decode the potential\ncredentials from the flags.\n","type":"Json.Decode.Decoder (Api.Cred -> session) -> { init : Maybe.Maybe session -> Url.Url -> Browser.Navigation.Key -> ( model, Platform.Cmd.Cmd msg ), onUrlChange : Url.Url -> msg, onUrlRequest : Browser.UrlRequest -> msg, subscriptions : model -> Platform.Sub.Sub msg, update : msg -> model -> ( model, Platform.Cmd.Cmd msg ), view : model -> Browser.Document msg } -> Platform.Program Json.Encode.Value model msg"},{"name":"delete","comment":" HTTP DELETE request.\n\nIt does not require any body as the `url` is enough to identify the\ntargeted resource.\n\n","type":"Api.Endpoint.Endpoint -> Api.Cred -> Json.Decode.Decoder a -> Api.Request a"},{"name":"get","comment":" HTTP GET request.\n","type":"Api.Endpoint.Endpoint -> Maybe.Maybe Api.Cred -> Json.Decode.Decoder a -> Api.Request a"},{"name":"login","comment":" A login request that will decode the credentials into the\n[`Cred`](Cred) opaque type.\n","type":"Http.Body -> Json.Decode.Decoder (Api.Cred -> a) -> Api.Request a"},{"name":"onSessionChange","comment":" An event listener for session changes.\nIt will trigger for any change of the session stored into the local\nstorage, even those from other browser tabs or windows.\n","type":"(Maybe.Maybe session -> msg) -> Json.Decode.Decoder (Api.Cred -> session) -> Platform.Sub.Sub msg"},{"name":"post","comment":" HTTP POST request.\n","type":"Api.Endpoint.Endpoint -> Maybe.Maybe Api.Cred -> Http.Body -> Json.Decode.Decoder a -> Api.Request a"},{"name":"put","comment":" HTTP PUT request.\n","type":"Api.Endpoint.Endpoint -> Api.Cred -> Http.Body -> Json.Decode.Decoder a -> Api.Request a"},{"name":"register","comment":" A register request that will decode the credentials into the\n[`Cred`](Cred) opaque type.\n","type":"Http.Body -> Json.Decode.Decoder (Api.Cred -> a) -> Api.Request a"},{"name":"settings","comment":" A user update request that will decode the credentials into the\n[`Cred`](Cred) opaque type.\n","type":"Api.Cred -> Http.Body -> Json.Decode.Decoder (Api.Cred -> a) -> Api.Request a"},{"name":"storeSession","comment":" Store the given session fields together with the credentials into local storage.\n","type":"List.List ( String.String, Json.Encode.Value ) -> Maybe.Maybe Api.Cred -> Platform.Cmd.Cmd msg"},{"name":"username","comment":" Return the username stored into the credentials.\n","type":"Api.Cred -> Author.Username.Username"}],"binops":[]},{"name":"Api.Endpoint","comment":" This module exposes an opaque Endpoint type which is guaranteed to point\nto the correct Conduit API URL.\n\n@docs Endpoint\n\n\n# Request\n\n@docs Request, request\n\n\n# Endpoints\n\n\n## Authors\n\n@docs login, user, users, profiles, follow\n\n\n## Articles\n\n@docs article, articles, feed, favorite, comment, comments, tags\n\n","unions":[{"name":"Endpoint","comment":" Get a URL to the Conduit API.\n\nThis is not publicly exposed, because we want to make sure the only way to get one of these URLs is from this module.\n\n","args":[],"cases":[]}],"aliases":[{"name":"Request","comment":" A type to represent an HTTP request.\n\nThis is needed as we can't store a `Cmd` into an `Effect` if we want to be able\nto test it.\n\n","args":["a"],"type":"{ method : String.String, headers : List.List Http.Header, url : Api.Endpoint.Endpoint, body : Http.Body, decoder : Json.Decode.Decoder a }"}],"values":[{"name":"article","comment":" ","type":"Article.Slug.Slug -> Api.Endpoint.Endpoint"},{"name":"articles","comment":" ","type":"List.List Url.Builder.QueryParameter -> Api.Endpoint.Endpoint"},{"name":"comment","comment":" ","type":"Article.Slug.Slug -> Article.Comment.Id.CommentId -> Api.Endpoint.Endpoint"},{"name":"comments","comment":" ","type":"Article.Slug.Slug -> Api.Endpoint.Endpoint"},{"name":"favorite","comment":" ","type":"Article.Slug.Slug -> Api.Endpoint.Endpoint"},{"name":"feed","comment":" ","type":"List.List Url.Builder.QueryParameter -> Api.Endpoint.Endpoint"},{"name":"follow","comment":" ","type":"Author.Username.Username -> Api.Endpoint.Endpoint"},{"name":"login","comment":" ","type":"Api.Endpoint.Endpoint"},{"name":"profiles","comment":" ","type":"Author.Username.Username -> Api.Endpoint.Endpoint"},{"name":"request","comment":" Turn the request into an actual `Cmd`.\n","type":"(Result.Result Errors.Errors a -> msg) -> Api.Endpoint.Request a -> Platform.Cmd.Cmd msg"},{"name":"tags","comment":" ","type":"Api.Endpoint.Endpoint"},{"name":"user","comment":" ","type":"Api.Endpoint.Endpoint"},{"name":"users","comment":" ","type":"Api.Endpoint.Endpoint"}],"binops":[]},{"name":"Effect","comment":" The application effects.\n\n@docs Effect\n\n\n# Application\n\n@docs Model, application\n\n\n# Fancy effects\n\n@docs none, batch, map\n\n\n# Navigation\n\n@docs replaceUrl, pushUrl, loadUrl\n\n\n# Time\n\n@docs getTimeZone\n\n\n# Scrolling\n\n@docs scrollToTop\n\n\n# User\n\n@docs register, authenticate, login, logout, fetchSettings, updateSettings\n\n\n# Tags\n\n@docs fetchTags\n\n\n# Article\n\n@docs fetchArticle, createArticle, editArticle, deleteArticle, favorite, unfavorite\n\n\n# Articles feed\n\n@docs fetchYourFeed, fetchGlobalFeed, fetchTagFeed, fetchAuthorFeed, fetchFavoritesFeed\n\n\n# Comments\n\n@docs fetchComments, postComment, deleteComment\n\n\n# Authors\n\n@docs fetchAuthor, follow, unfollow\n\n\n# Errors\n\n@docs logError\n\n","unions":[{"name":"Effect","comment":" An opaque type that represents all the effects that `init` and `update` functions may produce.\n","args":["msg"],"cases":[]}],"aliases":[{"name":"Model","comment":" The partial top level model required to perform effects.\n","args":["r"],"type":"{ r | session : Session.Session, env : Env.Env }"}],"values":[{"name":"application","comment":" A custom application that will turn `init` and `update` effects into\nactual `Cmd` and state changes.\n\nThe additional `ignore` function is used to ignore events at a single place\nin the whole application. Compared to the commonly used `NoOp`, it takes an\nadditional `String` description to be more informative in the debugger.\n\n","type":"{ init : Session.Session -> Url.Url -> Browser.Navigation.Key -> ( Effect.Model r, Effect.Effect msg ), view : Effect.Model r -> Browser.Document msg, update : msg -> Effect.Model r -> ( Effect.Model r, Effect.Effect msg ), ignore : String.String -> msg, subscriptions : Effect.Model r -> Platform.Sub.Sub msg, onUrlChange : Url.Url -> msg, onUrlRequest : Browser.UrlRequest -> msg } -> Platform.Program Json.Decode.Value (Effect.Model r) msg"},{"name":"authenticate","comment":" Authenticate with the backend.\n","type":"(Result.Result Errors.Errors Session.Session -> msg) -> { email : String.String, password : String.String } -> Effect.Effect msg"},{"name":"batch","comment":" Batch several effects together.\n","type":"List.List (Effect.Effect msg) -> Effect.Effect msg"},{"name":"createArticle","comment":" Create a new article.\n","type":"(Result.Result Errors.Errors (Article.Article Article.Full) -> msg) -> Api.Cred -> { title : String.String, description : String.String, body : String.String, tags : String.String } -> Effect.Effect msg"},{"name":"deleteArticle","comment":" Delete a previously created article.\n","type":"(Result.Result Errors.Errors () -> msg) -> Api.Cred -> Article.Slug.Slug -> Effect.Effect msg"},{"name":"deleteComment","comment":" Delete a previously posted article comment.\n","type":"(Result.Result Errors.Errors () -> msg) -> Api.Cred -> Article.Slug.Slug -> Article.Comment.Id.CommentId -> Effect.Effect msg"},{"name":"editArticle","comment":" Edit a previously created article.\n","type":"(Result.Result Errors.Errors (Article.Article Article.Full) -> msg) -> Api.Cred -> Article.Slug.Slug -> { r | title : String.String, description : String.String, body : String.String } -> Effect.Effect msg"},{"name":"favorite","comment":" Set an article as favorite.\n","type":"(Result.Result Errors.Errors (Article.Article Article.Preview) -> msg) -> Api.Cred -> Article.Slug.Slug -> Effect.Effect msg"},{"name":"fetchArticle","comment":" Fetch an article.\n","type":"(Result.Result Errors.Errors (Article.Article Article.Full) -> msg) -> Article.Slug.Slug -> Effect.Effect msg"},{"name":"fetchAuthor","comment":" Fetch an author profile.\n","type":"(Result.Result Errors.Errors Author.Author -> msg) -> Author.Username.Username -> Effect.Effect msg"},{"name":"fetchAuthorFeed","comment":" Fetch an author feed.\n","type":"(Result.Result Errors.Errors (PaginatedList.PaginatedList (Article.Article Article.Preview)) -> msg) -> Basics.Int -> Author.Username.Username -> Effect.Effect msg"},{"name":"fetchComments","comment":" Fetch an article comments.\n","type":"(Result.Result Errors.Errors (List.List Article.Comment.Comment) -> msg) -> Article.Slug.Slug -> Effect.Effect msg"},{"name":"fetchFavoritesFeed","comment":" Fetch the favorite artciles feed.\n","type":"(Result.Result Errors.Errors (PaginatedList.PaginatedList (Article.Article Article.Preview)) -> msg) -> Basics.Int -> Author.Username.Username -> Effect.Effect msg"},{"name":"fetchGlobalFeed","comment":" Fetch the global articles feed.\n","type":"(Result.Result Errors.Errors (PaginatedList.PaginatedList (Article.Article Article.Preview)) -> msg) -> Basics.Int -> Effect.Effect msg"},{"name":"fetchSettings","comment":" Fetch the logged in user settings.\n","type":"(Result.Result Errors.Errors Author.Settings -> msg) -> Effect.Effect msg"},{"name":"fetchTagFeed","comment":" Fetch the current tag feed.\n","type":"(Result.Result Errors.Errors (PaginatedList.PaginatedList (Article.Article Article.Preview)) -> msg) -> Basics.Int -> Article.Tag.Tag -> Effect.Effect msg"},{"name":"fetchTags","comment":" Fetch tags.\n","type":"(Result.Result Errors.Errors (List.List Article.Tag.Tag) -> msg) -> Effect.Effect msg"},{"name":"fetchYourFeed","comment":" Fetch the user articles feed.\n","type":"(Result.Result Errors.Errors (PaginatedList.PaginatedList (Article.Article Article.Preview)) -> msg) -> Basics.Int -> Effect.Effect msg"},{"name":"follow","comment":" Follow an author.\n","type":"(Result.Result Errors.Errors Author.Author -> msg) -> Api.Cred -> Author.UnfollowedAuthor -> Effect.Effect msg"},{"name":"getTimeZone","comment":" Retrieve a time zone based on the current UTC offset.\n","type":"(Time.Zone -> msg) -> Effect.Effect msg"},{"name":"loadUrl","comment":" Leave the current page and load the given URL.\n","type":"String.String -> Effect.Effect msg"},{"name":"logError","comment":" This is a placeholder API for how we might log errors to a server.\n\nWhenever you see Effect.logError used in this code base, it means\n\"Something unexpected happened. This is where we would log an error to a server\nwith some diagnostic info so we could investigate what happened later.\"\n\n(Since this is outside the scope of the RealWorld spec, and is only a\nplaceholder anyway, this function does not accept actual diagnostic info,\nauthentication tokens, etc.)\n\n","type":"Effect.Effect msg"},{"name":"login","comment":" Log in with an authenticated session.\n","type":"Session.Session -> Effect.Effect msg"},{"name":"logout","comment":" Logout\n","type":"Effect.Effect msg"},{"name":"map","comment":" Transform the messages produced by an effect.\n","type":"(a -> msg) -> Effect.Effect a -> Effect.Effect msg"},{"name":"none","comment":" No effect.\n","type":"Effect.Effect msg"},{"name":"postComment","comment":" Post an article comment.\n","type":"(Result.Result Errors.Errors Article.Comment.Comment -> msg) -> Api.Cred -> Article.Slug.Slug -> String.String -> Effect.Effect msg"},{"name":"pushUrl","comment":" Change the URL and add a new entry to the browser history.\n","type":"Url.Url -> Effect.Effect msg"},{"name":"register","comment":" Create a new user.\n","type":"(Result.Result Errors.Errors Session.Session -> msg) -> { username : String.String, email : String.String, password : String.String } -> Effect.Effect msg"},{"name":"replaceUrl","comment":" Replace the current URL without adding an entry to the browser history.\n","type":"Route.Route -> Effect.Effect msg"},{"name":"scrollToTop","comment":" Scroll page to top.\n","type":"Effect.Effect msg"},{"name":"unfavorite","comment":" Unset an article as favorite.\n","type":"(Result.Result Errors.Errors (Article.Article Article.Preview) -> msg) -> Api.Cred -> Article.Slug.Slug -> Effect.Effect msg"},{"name":"unfollow","comment":" Unfollow an author.\n","type":"(Result.Result Errors.Errors Author.Author -> msg) -> Api.Cred -> Author.FollowedAuthor -> Effect.Effect msg"},{"name":"updateSettings","comment":" Update the logged in user settings.\n","type":"(Result.Result Errors.Errors Session.Session -> msg) -> Api.Cred -> Author.Settings -> Effect.Effect msg"}],"binops":[]},{"name":"Env","comment":" The application environment.\n\n@docs Env\n\n\n# Create\n\n@docs init\n\n\n# Query\n\n@docs navKey, timeZone\n\n\n# Update\n\n@docs updateTimeZone\n\n","unions":[{"name":"Env","comment":" The application environment.\n","args":[],"cases":[]}],"aliases":[],"values":[{"name":"init","comment":" ","type":"Browser.Navigation.Key -> Time.Zone -> Env.Env"},{"name":"navKey","comment":" ","type":"Env.Env -> Browser.Navigation.Key"},{"name":"timeZone","comment":" ","type":"Env.Env -> Time.Zone"},{"name":"updateTimeZone","comment":" ","type":"Time.Zone -> Env.Env -> Env.Env"}],"binops":[]},{"name":"Main","comment":"\n\n\n# The Elm architecture\n\n[The usual Elm Architecture](https://guide.elm-lang.org/architecture/) is used, except that `Effect msg` are returned instead of `Cmd msg`, thanks to [`Effect.application`](Effect#application).\n\n@docs Model, Msg\n\n@docs init, view, update\n\n\n# Main\n\n@docs main\n\n","unions":[{"name":"Msg","comment":" The top level application `Msg` type.\n","args":[],"cases":[["Ignored",["String.String"]],["ChangedUrl",["Url.Url"]],["ClickedLink",["Browser.UrlRequest"]],["GotTimeZone",["Time.Zone"]],["GotSession",["Session.Session"]],["GotPageMsg",["Page.Msg"]]]}],"aliases":[{"name":"Model","comment":" The application model, storing the current session (guest or authenticated),\nan environment and the current page.\n","args":[],"type":"{ env : Env.Env, session : Session.Session, page : Page.Page }"}],"values":[{"name":"init","comment":" Initialize the application.\n","type":"Session.Session -> Url.Url -> Browser.Navigation.Key -> ( Main.Model, Effect.Effect Main.Msg )"},{"name":"main","comment":" The application entry point. It will receive the session from local storage\nas a flag if present.\n","type":"Platform.Program Json.Decode.Value Main.Model Main.Msg"},{"name":"update","comment":" Turns messages into effects and model update.\n","type":"Main.Msg -> Main.Model -> ( Main.Model, Effect.Effect Main.Msg )"},{"name":"view","comment":" Turns the model into an HTML page.\n","type":"Main.Model -> Browser.Document Main.Msg"}],"binops":[]},{"name":"Page","comment":" This module is responsible to handle subpages.\n\n\n# Types\n\n@docs Msg, Page\n\n\n# Creation\n\n@docs blank\n\n\n# Routing\n\n@docs changeRouteTo\n\n\n# View\n\n@docs view, mapDocument\n\n\n# Update\n\n@docs update\n\n","unions":[{"name":"Msg","comment":" The subpages messages.\n","args":[],"cases":[]},{"name":"Page","comment":" An opaque type to store the subpage and its model.\n","args":[],"cases":[]}],"aliases":[],"values":[{"name":"blank","comment":" An empty page.\n","type":"Page.Page"},{"name":"changeRouteTo","comment":" Return the page and associated effects associated to a route change.\n","type":"Maybe.Maybe Route.Route -> Session.Session -> Page.Page -> ( Page.Page, Effect.Effect Page.Msg )"},{"name":"mapDocument","comment":" Transform the messages produced by the page.\n","type":"(msg1 -> msg2) -> Browser.Document msg1 -> Browser.Document msg2"},{"name":"update","comment":" Update the page from a message, returning an updated page and effects.\n","type":"Page.Msg -> Page.Page -> ( Page.Page, Effect.Effect Page.Msg )"},{"name":"view","comment":" Turns the page into an HTML page.\n","type":"Env.Env -> Session.Session -> Page.Page -> Browser.Document Page.Msg"}],"binops":[]},{"name":"Page.Article","comment":" Viewing an individual article.\n\n@docs Model, Msg, init, view, update\n\n","unions":[{"name":"Msg","comment":" ","args":[],"cases":[]}],"aliases":[{"name":"Model","comment":" ","args":[],"type":"{ errors : Errors.Errors, comments : Remote.Remote ( Page.Article.CommentText, List.List Article.Comment.Comment ), article : Remote.Remote (Article.Article Article.Full) }"}],"values":[{"name":"init","comment":" ","type":"Article.Slug.Slug -> ( Page.Article.Model, Effect.Effect Page.Article.Msg )"},{"name":"update","comment":" ","type":"Page.Article.Msg -> Page.Article.Model -> ( Page.Article.Model, Effect.Effect Page.Article.Msg )"},{"name":"view","comment":" ","type":"Time.Zone -> Session.Session -> Page.Article.Model -> { title : String.String, content : Html.Html Page.Article.Msg }"}],"binops":[]},{"name":"Page.Article.Editor","comment":" Editing an individual article.\n\n@docs Model, Msg, initNew, initEdit, view, update\n\n","unions":[{"name":"Model","comment":" ","args":[],"cases":[]},{"name":"Msg","comment":" ","args":[],"cases":[]}],"aliases":[],"values":[{"name":"initEdit","comment":" Initialize the page from an existing article.\n","type":"Article.Slug.Slug -> ( Page.Article.Editor.Model, Effect.Effect Page.Article.Editor.Msg )"},{"name":"initNew","comment":" Initialize the page with a new article.\n","type":"( Page.Article.Editor.Model, Effect.Effect msg )"},{"name":"update","comment":" ","type":"Page.Article.Editor.Msg -> Page.Article.Editor.Model -> ( Page.Article.Editor.Model, Effect.Effect Page.Article.Editor.Msg )"},{"name":"view","comment":" ","type":"Session.Session -> Page.Article.Editor.Model -> { title : String.String, content : Html.Html Page.Article.Editor.Msg }"}],"binops":[]},{"name":"Page.Blank","comment":" Blank page.\n\n@docs view\n\n","unions":[],"aliases":[],"values":[{"name":"view","comment":" ","type":"{ title : String.String, content : Html.Html msg }"}],"binops":[]},{"name":"Page.Home","comment":" The homepage. You can get here via either the / or /#/ routes.\n\n@docs Model, Msg, init, view, update\n\n","unions":[{"name":"Msg","comment":" ","args":[],"cases":[]}],"aliases":[{"name":"Model","comment":" ","args":[],"type":"{ feedTab : Page.Home.FeedTab, feedPage : Basics.Int, tags : Remote.Remote (List.List Article.Tag.Tag), feed : Remote.Remote Article.Feed.Model }"}],"values":[{"name":"init","comment":" ","type":"Session.Session -> ( Page.Home.Model, Effect.Effect Page.Home.Msg )"},{"name":"update","comment":" ","type":"Page.Home.Msg -> Page.Home.Model -> ( Page.Home.Model, Effect.Effect Page.Home.Msg )"},{"name":"view","comment":" ","type":"Time.Zone -> Session.Session -> Page.Home.Model -> { title : String.String, content : Html.Html Page.Home.Msg }"}],"binops":[]},{"name":"Page.Login","comment":" The login page.\n\n@docs Model, Msg, init, view, update\n\n","unions":[{"name":"Msg","comment":" ","args":[],"cases":[]}],"aliases":[{"name":"Model","comment":" ","args":[],"type":"{ errors : Errors.Errors, form : Page.Login.Form }"}],"values":[{"name":"init","comment":" ","type":"( Page.Login.Model, Effect.Effect msg )"},{"name":"update","comment":" ","type":"Page.Login.Msg -> Page.Login.Model -> ( Page.Login.Model, Effect.Effect Page.Login.Msg )"},{"name":"view","comment":" ","type":"Page.Login.Model -> { title : String.String, content : Html.Html Page.Login.Msg }"}],"binops":[]},{"name":"Page.NotFound","comment":" Not Found page.\n\n@docs view\n\n","unions":[],"aliases":[],"values":[{"name":"view","comment":" ","type":"{ title : String.String, content : Html.Html msg }"}],"binops":[]},{"name":"Page.Profile","comment":" An Author's profile.\n\n@docs Model, Msg, init, view, update\n\n","unions":[{"name":"Msg","comment":" ","args":[],"cases":[]}],"aliases":[{"name":"Model","comment":" ","args":[],"type":"{ errors : Errors.Errors, feedTab : Page.Profile.FeedTab, feedPage : Basics.Int, username : Author.Username.Username, author : Remote.Remote Author.Author, feed : Remote.Remote Article.Feed.Model }"}],"values":[{"name":"init","comment":" ","type":"Author.Username.Username -> ( Page.Profile.Model, Effect.Effect Page.Profile.Msg )"},{"name":"update","comment":" ","type":"Page.Profile.Msg -> Page.Profile.Model -> ( Page.Profile.Model, Effect.Effect Page.Profile.Msg )"},{"name":"view","comment":" ","type":"Time.Zone -> Session.Session -> Page.Profile.Model -> { title : String.String, content : Html.Html Page.Profile.Msg }"}],"binops":[]},{"name":"Page.Register","comment":" Registering a new user.\n\n@docs Model, Msg, init, view, update\n\n","unions":[{"name":"Msg","comment":" ","args":[],"cases":[]}],"aliases":[{"name":"Model","comment":" ","args":[],"type":"{ errors : Errors.Errors, form : Page.Register.Form }"}],"values":[{"name":"init","comment":" ","type":"( Page.Register.Model, Effect.Effect msg )"},{"name":"update","comment":" ","type":"Page.Register.Msg -> Page.Register.Model -> ( Page.Register.Model, Effect.Effect Page.Register.Msg )"},{"name":"view","comment":" ","type":"Page.Register.Model -> { title : String.String, content : Html.Html Page.Register.Msg }"}],"binops":[]},{"name":"Page.Settings","comment":" User settings.\n\n@docs Model, Msg, init, view, update\n\n","unions":[{"name":"Msg","comment":" ","args":[],"cases":[]}],"aliases":[{"name":"Model","comment":" ","args":[],"type":"{ errors : Errors.Errors, settings : Remote.Remote Author.Settings }"}],"values":[{"name":"init","comment":" ","type":"( Page.Settings.Model, Effect.Effect Page.Settings.Msg )"},{"name":"update","comment":" ","type":"Page.Settings.Msg -> Page.Settings.Model -> ( Page.Settings.Model, Effect.Effect Page.Settings.Msg )"},{"name":"view","comment":" ","type":"Session.Session -> Page.Settings.Model -> { title : String.String, content : Html.Html Page.Settings.Msg }"}],"binops":[]},{"name":"Remote","comment":"\n\n@docs Remote\n\n\n# Create\n\n@docs loading\n\n\n# Manipulate\n\n@docs loaded, failed\n\n\n# Query\n\n@docs get, description\n\n\n# View\n\n@docs view, viewList\n\n","unions":[{"name":"Remote","comment":" A remotely loaded resource.\n","args":["a"],"cases":[]}],"aliases":[],"values":[{"name":"description","comment":" Return the resource description.\n","type":"Remote.Remote a -> String.String"},{"name":"failed","comment":" Set the loading status as failed.\n","type":"Remote.Remote a -> Remote.Remote a"},{"name":"get","comment":" Return the resource if loaded.\n","type":"Remote.Remote a -> Maybe.Maybe a"},{"name":"loaded","comment":" Store the loaded resource.\n","type":"a -> Remote.Remote a -> Remote.Remote a"},{"name":"loading","comment":" Initialize a loading resource with a description.\n","type":"String.String -> Remote.Remote a"},{"name":"view","comment":" View a loading message, the resource or an error according to\nthe resource status. A `viewer` function is needed to turn the\nresource into an HTML element.\n","type":"(a -> Html.Html msg) -> Remote.Remote a -> Html.Html msg"},{"name":"viewList","comment":" Like [`view`](Remote#view) but using a viewer that renders a `List (Html msg)`.\n","type":"(a -> List.List (Html.Html msg)) -> Remote.Remote a -> List.List (Html.Html msg)"}],"binops":[]},{"name":"Session","comment":" The application session.\n\n@docs Session\n\n\n# Create\n\n@docs guest\n\n\n# Query\n\n@docs avatar, credentials, username\n\n\n# Persistence\n\n@docs decoder, store, onChange\n\n","unions":[{"name":"Session","comment":" ","args":[],"cases":[]}],"aliases":[],"values":[{"name":"avatar","comment":" Return the user avatar.\n","type":"Session.Session -> Author.Avatar.Avatar"},{"name":"credentials","comment":" Return the session credentials if authenticated.\n","type":"Session.Session -> Maybe.Maybe Api.Cred"},{"name":"decoder","comment":" ","type":"Json.Decode.Decoder (Api.Cred -> Session.Session)"},{"name":"guest","comment":" Create an anonymous session.\n","type":"Session.Session"},{"name":"onChange","comment":" An event listener for [`Session`](Session#Session) changes.\nIt will trigger for any change of the session stored into the local\nstorage, even those from other browser tabs or windows.\n","type":"(Session.Session -> msg) -> Platform.Sub.Sub msg"},{"name":"store","comment":" Store the session into local storage.\n","type":"Session.Session -> Platform.Cmd.Cmd msg"},{"name":"username","comment":" Return the session username if authenticated.\n","type":"Session.Session -> Maybe.Maybe Author.Username.Username"}],"binops":[]}]