[{"name":"PostgRestAdmin","comment":"\n\n@docs Model, Msg\n@docs Config, Program, AppParams, configure\n@docs buildProgram, buildAppParams, applyConfiguration\n@docs appUrl\n\n\n## Wiring\n\n@docs onLogin, onAuthFailed, onLogout, onExternalLogin\n\n\n## Client\n\n@docs withHost, withLoginUrl, withJWT, withClientHeaders\n@docs withFlags\n\n\n## UI\n\n@docs withMountPath, withRecordsPerPage\n@docs withMenuLinks, withFormFields\n@docs withTables, withTableAliases\n@docs withLoginBannerText\n\n","unions":[{"name":"Config","comment":" ","args":["msg"],"cases":[["Config",["PostgRestAdmin.Params msg","List.List String.String"]]]},{"name":"Msg","comment":" ","args":[],"cases":[]}],"aliases":[{"name":"AppParams","comment":" ","args":["model","outerMsg"],"type":"{ init : Json.Decode.Value -> Url.Url -> Browser.Navigation.Key -> ( model, Platform.Cmd.Cmd outerMsg ), view : model -> Html.Html outerMsg, update : PostgRestAdmin.Msg -> model -> ( model, Platform.Cmd.Cmd outerMsg ), subscriptions : model -> Platform.Sub.Sub outerMsg, onUrlRequest : Browser.UrlRequest -> outerMsg, onUrlChange : Url.Url -> outerMsg }"},{"name":"Model","comment":" ","args":[],"type":"{ appUrl : AppUrl.AppUrl, baseUrl : { protocol : Url.Protocol, host : String.String, port_ : Maybe.Maybe Basics.Int }, key : Browser.Navigation.Key, notification : PostgRestAdmin.Notification, authFormUrl : Url.Url, authFormField : FormToolkit.Field.Field Basics.Never, authFormStatus : PostgRestAdmin.AuthFormStatus, mountPath : PostgRestAdmin.MountPath.MountPath, menuLinks : List.List ( String.String, String.String ), loginBannerText : Maybe.Maybe String.String, recordsPerPage : Basics.Int, formFields : Dict.Dict String.String (List.List String.String), configErrors : List.List String.String, listing : Maybe.Maybe Internal.PageListing.Model, detail : Maybe.Maybe Internal.PageDetail.Model, form : Maybe.Maybe Internal.PageForm.Model, clientAttributes : PostgRestAdmin.ClientAttributes, client : PostgRestAdmin.Client.Client }"},{"name":"Program","comment":" An alias to elm's Platform.Program providing the type signature for a\nPostgRestAdmin program.\n","args":[],"type":"Platform.Program Json.Decode.Value PostgRestAdmin.Model PostgRestAdmin.Msg"}],"values":[{"name":"appUrl","comment":" ","type":"PostgRestAdmin.Model -> AppUrl.AppUrl"},{"name":"applyConfiguration","comment":" ","type":"PostgRestAdmin.Config msg -> PostgRestAdmin.Model -> ( PostgRestAdmin.Model, Platform.Cmd.Cmd PostgRestAdmin.Msg )"},{"name":"buildAppParams","comment":" ","type":"{ toInnerModel : model -> PostgRestAdmin.Model, toOuterModel : PostgRestAdmin.Model -> model -> model, toOuterMsg : PostgRestAdmin.Msg -> outerMsg, initModel : Json.Decode.Value -> PostgRestAdmin.Model -> model } -> PostgRestAdmin.Config msg -> PostgRestAdmin.AppParams model outerMsg"},{"name":"buildProgram","comment":" Converts a Config into a Program.\n","type":"PostgRestAdmin.Config msg -> PostgRestAdmin.Program"},{"name":"configure","comment":" Creates a default configuration.\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configure\n            |> PostgRestAdmin.host \"http://localhost:3000\"\n            |> PostgRestAdmin.onLogin loginSuccess\n            |> PostgRestAdmin.buildProgram\n\n","type":"PostgRestAdmin.Config msg"},{"name":"onAuthFailed","comment":" Callback triggered when authentication fails when attempting to perform a\nrequest. You can use this to perform external authentication.\n\n    port authFailure : String -> Cmd msg\n\n    port tokenReceiver :\n        ({ path : String, accessToken : String } -> msg)\n        -> Sub msg\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configuration\n            |> PostgRestAdmin.onAuthFailed authFailure\n            |> PostgRestAdmin.onExternalLogin tokenReceiver\n            |> PostgRestAdmin.buildProgram\n\nThen wire to the corresponding ports.\n\n    app.ports.authFailure.subscribe(requestedPath => {\n        authenticate(requestedPath).then((accessToken) => {\n            app.ports.tokenReceiver.send({\n                path : requestedPath,\n                accessToken : accessToken\n            })\n        })\n    });\n\n","type":"(String.String -> Platform.Cmd.Cmd msg) -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"},{"name":"onExternalLogin","comment":" Subscribe to receive a JWT and a redirect path when login with an external\nprovider.\n\nSee [onAuthFailed](#onAuthFailed).\n\n","type":"(({ path : String.String, accessToken : String.String } -> { path : String.String, accessToken : String.String }) -> Platform.Sub.Sub { path : String.String, accessToken : String.String }) -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"},{"name":"onLogin","comment":" Callback triggered with a JWT string on successful login.\nTypically used to persist the JWT to session storage.\n\n    port loginSuccess : String -> Cmd msg\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configuration\n            |> PostgRestAdmin.onLogin loginSuccess\n            |> PostgRestAdmin.buildProgram\n\nThen subscribe to the corresponding port.\n\n    app.ports.loginSuccess.subscribe(jwt => {\n      sessionStorage.setItem(\"jwt\", jwt)\n    });\n\n","type":"(String.String -> Platform.Cmd.Cmd msg) -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"},{"name":"onLogout","comment":" Callback triggered when the user logs out.\nYou can use this to perform cleanup or external logout operations.\n\n    port logout : () -> Cmd msg\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configuration\n            |> PostgRestAdmin.onLogout logout\n            |> PostgRestAdmin.buildProgram\n\nThen subscribe to the corresponding port.\n\n    app.ports.logout.subscribe(_ => {\n        externalLogout()\n    });\n\n","type":"(() -> Platform.Cmd.Cmd msg) -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"},{"name":"withClientHeaders","comment":" Set default HTTP headers to be included in all Client requests. This is\nuseful for setting headers like `Accept-Profile` or `Content-Profile` when\nworking with PostgREST schemas.\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configuration\n            |> PostgRestAdmin.withClientHeaders\n                [ Http.header \"Accept-Profile\" \"bluebox\"\n                , Http.header \"Content-Profile\" \"bluebox\"\n                ]\n            |> PostgRestAdmin.buildProgram\n\n","type":"List.List Http.Header -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"},{"name":"withFlags","comment":" If set to False no attempt to decode and apply flags will be made.\nDefaults to true.\n\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configuration\n            |> PostgRestAdmin.withFlags False\n            |> PostgRestAdmin.buildProgram\n\n    -- Flags are ignored\n\n","type":"Basics.Bool -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"},{"name":"withFormFields","comment":" Specify which fields should be present in the edit and create forms,\noverriding the table schema. By default a primary key field is not present in\nthe forms.\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configuration\n            |> PostgRestAdmin.withFormFields \"posts\" [ \"id\", \"title\", \"content\" ]\n            |> PostgRestAdmin.buildProgram\n\n","type":"String.String -> List.List String.String -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"},{"name":"withHost","comment":" Specify the PostgREST host.\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configuration\n            |> PostgRestAdmin.withHost \"http://localhost:3000\"\n            |> PostgRestAdmin.buildProgram\n\n","type":"String.String -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"},{"name":"withJWT","comment":" Set a JWT to authenticate PostgREST requests. You can set an initial JWT\nusing this attribute.\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configuration\n            |> PostgRestAdmin.withJWT \"8abf3a...9ac36d\"\n            |> PostgRestAdmin.buildProgram\n\n","type":"String.String -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"},{"name":"withLoginBannerText","comment":" Display a banner text below the login form. The text is rendered as markdown.\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configuration\n            |> PostgRestAdmin.withLoginBannerText \"**Welcome!** Please login to continue.\"\n            |> PostgRestAdmin.buildProgram\n\n","type":"String.String -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"},{"name":"withLoginUrl","comment":" Specify the login URL for form authentication.\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configuration\n            |> PostgRestAdmin.withLoginUrl \"http://localhost:3000/rpc/login\"\n            |> PostgRestAdmin.buildProgram\n\n","type":"String.String -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"},{"name":"withMenuLinks","comment":" Pass a list of links to display in the side menu. The list consists of\ntuples of the link text and a url.\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configuration\n            |> PostgRestAdmin.withMenuLinks [ ( \"Api Docs\", \"/api/docs\" ) ]\n            |> PostgRestAdmin.buildProgram\n\n","type":"List.List ( String.String, String.String ) -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"},{"name":"withMountPath","comment":" Specify a path prefix for all routes, in case the app is not mounted in the\nroot path.\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configuration\n            |> PostgRestAdmin.withMountPath \"/back-office\"\n            |> PostgRestAdmin.buildProgram\n\n","type":"String.String -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"},{"name":"withRecordsPerPage","comment":" Set the number of records to display per page in listing views.\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configuration\n            |> PostgRestAdmin.withRecordsPerPage 100\n            |> PostgRestAdmin.buildProgram\n\n","type":"Basics.Int -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"},{"name":"withTableAliases","comment":" Rename a table referenced in a foreign key. PostgREST OpenAPI generated docs\nconfuse tables with views when describing the foreign key for a resource,\nbecause of this some links might be incorrectly generated.\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configuration\n            |> PostgRestAdmin.withTableAliases\n                (Dict.fromList [ ( \"published_posts\", \"posts\" ) ])\n            |> PostgRestAdmin.buildProgram\n\n","type":"Dict.Dict String.String String.String -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"},{"name":"withTables","comment":" Pass a list of table names to restrict the editable resources, also sets the\norder of the left resources menu.\n\n    main : PostgRestAdmin.Program\n    main =\n        PostgRestAdmin.configuration\n            |> PostgRestAdmin.withTables [ \"posts\", \"comments\" ]\n            |> PostgRestAdmin.buildProgram\n\n","type":"List.List String.String -> PostgRestAdmin.Config msg -> PostgRestAdmin.Config msg"}],"binops":[]},{"name":"PostgRestAdmin.MountPath","comment":" PostgRestAdmin mount path and url generation.\n\n@docs MountPath, fromString, segments\n\n\n# Path building\n\n@docs path, breadcrumbs\n\n","unions":[{"name":"MountPath","comment":" Represents a path where PostgRestAdmin is mounted.\nSee [Config.mountPath](PostgRestAdmin.Config#mountPath) to mount it at any\npath other than `/`.\n","args":[],"cases":[]}],"aliases":[],"values":[{"name":"breadcrumbs","comment":" Html breadcrumbs for a path prepended by the endpoint.\n\n    myHeader : Html msg\n    myHeader =\n        Html.header\n            []\n            [ Html.h1 [] [ Html.text \"Some Path\" ]\n            , breadcrumbs (fromString \"admin\") \"some/path\"\n            ]\n\n","type":"PostgRestAdmin.MountPath.MountPath -> String.String -> List.List ( String.String, Maybe.Maybe String.String ) -> Html.Html msg"},{"name":"fromString","comment":" Build from `String`.\n\n    fromString \"admin\" == fromString \"/admin\"\n\n    fromString \"\" == fromString \"/\"\n\n","type":"String.String -> PostgRestAdmin.MountPath.MountPath"},{"name":"path","comment":" Build a path prepended by the endpoint.\n\n    path (fromString \"admin\") \"some/path\" == \"/admin/some/path\"\n\n","type":"PostgRestAdmin.MountPath.MountPath -> String.String -> String.String"},{"name":"segments","comment":" Convert to a list of path segments.\n\n    segments (fromString \"/my/mount/point\") == [ \"my\", \"mount\", \"point\" ]\n\n","type":"PostgRestAdmin.MountPath.MountPath -> List.List String.String"}],"binops":[]}]