[{"name":"Ur","comment":"\n\n\n# Simple requests\n\n@docs logIn, getShipName, scry, scryTask\n\n","unions":[],"aliases":[],"values":[{"name":"getShipName","comment":" Queries the name of the current ship.\nReturn strings like `~zod` or `~racfer-hattes`.\n\n    getShipName \"http://localhost:8080\"\n\n","type":"String.String -> Platform.Cmd.Cmd (Result.Result Http.Error Ur.Types.Ship)"},{"name":"logIn","comment":" Logs into your Urbit at the given root path and password.\n\n    logIn \"http://localhost:8080\" \"lidlut-tabwed-pillex-ridrup\"\n\n","type":"String.String -> String.String -> Platform.Cmd.Cmd (Result.Result Http.Error ())"},{"name":"scry","comment":" Scry an agent at some path\n\n    scry\n        { url = \"http://localhost:8080\"\n        , agent = \"journal\"\n        , path = [ \"entries\", \"all\" ]\n        , error = Noop\n        , success =\n            D.cell D.ignore\n                (D.cell (D.const D.cord \"jrnl\")\n                    (D.list (D.cell D.bigint D.cord |> D.map (\\a b -> ( a, b ))))\n                    |> D.map GotListings\n                )\n        }\n\n","type":"{ url : String.String, agent : Ur.Types.Agent, path : Ur.Types.Path, error : msg, success : Ur.Deconstructor.Deconstructor msg } -> Platform.Cmd.Cmd msg"},{"name":"scryTask","comment":" Same as `scry` but returns a `Task` instead of a `Cmd`.\n","type":"{ url : String.String, agent : Ur.Types.Agent, path : Ur.Types.Path, error : msg, success : Ur.Deconstructor.Deconstructor msg } -> Platform.Task a msg"}],"binops":[]},{"name":"Ur.Cmd","comment":" This module is conceptually similar to `Platform.Cmd`, but also allows you to send Urbit requests.\n\n@docs Cmd, poke, cmd, none, batch\n\n","unions":[],"aliases":[{"name":"Cmd","comment":" Like `Cmd` from `Platform.Cmd`, but for Urbit commands.\n","args":["msg"],"type":"List.List (Ur.Cmd.Internal.Cmd msg)"}],"values":[{"name":"batch","comment":" Batches multiple commands into one. Similar to `Platform.Cmd.batch`.\n","type":"List.List (Ur.Cmd.Cmd msg) -> Ur.Cmd.Cmd msg"},{"name":"cmd","comment":" Turns a `Platform.Cmd` command into a `Ur.Cmd` command.\n","type":"Platform.Cmd.Cmd msg -> Ur.Cmd.Cmd msg"},{"name":"none","comment":" A command that does exactly nothing.\n","type":"Ur.Cmd.Cmd msg"},{"name":"poke","comment":" Sends a %poke to a Gall Agent.\n\n    poke\n        { ship = \"~zod\"\n        , agent = \"journal\"\n        , mark = \"journal-action\"\n        , noun = C.cell (C.cord \"del\") (C.bigint id)\n        }\n\n","type":"{ ship : Ur.Types.Ship, agent : Ur.Types.Agent, mark : Ur.Types.Mark, noun : Ur.Types.Noun } -> Ur.Cmd.Cmd msg"}],"binops":[]},{"name":"Ur.Constructor","comment":" Different ways of constructing `Noun` from Elm types.\n\n\n# Primitive constructors\n\n@docs cell, sig, bytes\n\n\n# Integers\n\n@docs int, signedInt, bigint\n\n\n# Floats\n\n@docs float32, float64\n\n\n# String\n\n@docs cord, tape\n\n\n# Higher-order constructors\n\n@docs listOf\n\n","unions":[],"aliases":[],"values":[{"name":"bigint","comment":" Constructs an `Atom` from a `BigInt`.\n","type":"BigInt.BigInt -> Ur.Types.Noun"},{"name":"bytes","comment":" Constructs an `Atom` from `Bytes`.\n","type":"Bytes.Bytes -> Ur.Types.Noun"},{"name":"cell","comment":" Constructs a [Cell](https://developers.urbit.org/reference/glossary/cell) from two Nouns.\n","type":"Ur.Types.Noun -> Ur.Types.Noun -> Ur.Types.Noun"},{"name":"cord","comment":" Constructs a [`cord`](https://developers.urbit.org/reference/glossary/cord), [`knot`](https://developers.urbit.org/guides/additional/strings#knot) or a [`term`](https://developers.urbit.org/guides/additional/strings#term) from a String.\n","type":"String.String -> Ur.Types.Noun"},{"name":"float32","comment":" Constructs an `Atom` from a 32-bit float.\n","type":"Basics.Float -> Ur.Types.Noun"},{"name":"float64","comment":" Constructs an `Atom` from a 64-bit float.\n","type":"Basics.Float -> Ur.Types.Noun"},{"name":"int","comment":" Constructs an `Atom` from an unsigned 32-bit `Int`.\nIf you pass something other than an unsigned 32-bit integer the behaviour is undefined.\n","type":"Basics.Int -> Ur.Types.Noun"},{"name":"listOf","comment":" Constructs a `sig`-terminated list.\n\nThe first argument is a constructor for the elements of the list.\n\nThe second argument is the list of values to encode.\n\n","type":"(a -> Ur.Types.Noun) -> List.List a -> Ur.Types.Noun"},{"name":"sig","comment":" The [`sig`](https://developers.urbit.org/reference/glossary/tape) value. Also known as `~`.\n\nIt is equivalent to `0`.\n\n","type":"Ur.Types.Noun"},{"name":"signedInt","comment":" Constructs an `Atom` from a signed `Int`.\n","type":"Basics.Int -> Ur.Types.Noun"},{"name":"tape","comment":" Constructs a [`tape`](https://developers.urbit.org/reference/glossary/tape) from a `String`.\n","type":"String.String -> Ur.Types.Noun"}],"binops":[]},{"name":"Ur.Da","comment":"\n\n@docs Da, posixToDa\n\n","unions":[],"aliases":[{"name":"Da","comment":" Represents a `@da`.\n","args":[],"type":"BigInt.BigInt"}],"values":[{"name":"posixToDa","comment":" Converts `Posix` to a `@da`.\n","type":"Time.Posix -> Ur.Da.Da"}],"binops":[]},{"name":"Ur.Deconstructor","comment":" This module provides an API to deconstruct `Noun`s into arbitrary Elm data structures.\n\nYou would parse a `[%edit @ cord]` like this:\n\n     type alias Edit = {id: Int, text : String}\n\n     (D.cell (D.const D.cord \"edit\") (D.cell D.bigint D.cord)) |> D.map (\\( (), ( id, txt ) ) -> Edit id txt)\n\n@docs Deconstructor\n\n\n# Running a `Deconstructor`\n\n@docs run, runBytes\n\n\n# Higher-order `Deconstructor`s\n\n@docs cell, list, oneOf, const\n\n\n# Mapping a `Deconstructor`\n\n@docs map\n\n\n# Numbers\n\n\n## `Int`a\n\n@docs int, signedInt, bigint\n\n\n## `Float`s\n\n@docs float32, float64\n\n\n# `String`s\n\n@docs cord, tape\n\n\n# Miscellaneous\n\n@docs bytes, sig, ignore, tar, lazy, debug\n\n","unions":[],"aliases":[{"name":"Deconstructor","comment":" A `Noun` deconstructor.\n","args":["a"],"type":"Ur.Types.Noun -> Maybe.Maybe a"}],"values":[{"name":"bigint","comment":" Extracts a `BigInt`.\n","type":"Ur.Types.Noun -> Maybe.Maybe BigInt.BigInt"},{"name":"bytes","comment":" Extracts the raw `Byte`s of an `Atom`.\n","type":"Ur.Types.Noun -> Maybe.Maybe Bytes.Bytes"},{"name":"cell","comment":" Extracts a [`Cell`](https://developers.urbit.org/reference/glossary/cell) (pair) of two arbitrary values.\n\nAccepts two arbitrary `Deconstructor`s that form a Cell.\n\n","type":"Ur.Deconstructor.Deconstructor a -> Ur.Deconstructor.Deconstructor b -> Ur.Types.Noun -> Maybe.Maybe ( a, b )"},{"name":"const","comment":" Asserts that the value should be exactly equal to the second argument.\n\nThe first argument is a `Deconstructor` for the given type.\n\nThe second argument is the value to compare with.\n\nThis is useful to match on `term`s when there are multiple possible cases in a head-tagged union.\n\n","type":"Ur.Deconstructor.Deconstructor a -> a -> Ur.Types.Noun -> Maybe.Maybe ()"},{"name":"cord","comment":" Extracts a `cord`.\n","type":"Ur.Types.Noun -> Maybe.Maybe String.String"},{"name":"debug","comment":" Debug a deconstructor.\nIf the deconstructor from the second argument fails then the failed nock will be printed to the console.\n","type":"(String.String -> String.String) -> Ur.Deconstructor.Deconstructor a -> Ur.Types.Noun -> Maybe.Maybe a"},{"name":"float32","comment":" Extracts a 32-bit `Float`.\n","type":"Ur.Types.Noun -> Maybe.Maybe Basics.Float"},{"name":"float64","comment":" Extracts a 64-bit `Float`.\n","type":"Ur.Types.Noun -> Maybe.Maybe Basics.Float"},{"name":"ignore","comment":" Ignore any value.\n\nThis is useful when you have a value you don't care about. `ignore` allows you to just skip the value.\n\n","type":"Ur.Deconstructor.Deconstructor ()"},{"name":"int","comment":" Extracts a 32-bit unsigned `Int`.\n\nIf the `Atom` is larger than 32 bits the the behaviour is undefined.\n\n","type":"Ur.Types.Noun -> Maybe.Maybe Basics.Int"},{"name":"lazy","comment":" Maps (applies) a function to all of the values deconstructed.\n\nThis is useful when you want to create a data type with extracted values as fields.\n\n","type":"(() -> Ur.Deconstructor.Deconstructor a) -> Ur.Types.Noun -> Maybe.Maybe a"},{"name":"list","comment":" Extracts a sig-terminated list of arbitrary elements.\n\nThe first argument is a `Deconstructor` of the elements of the list.\n\n","type":"Ur.Deconstructor.Deconstructor a -> Ur.Types.Noun -> Maybe.Maybe (List.List a)"},{"name":"map","comment":" Maps over the result of the deconstructor.\n","type":"(a -> b) -> Ur.Deconstructor.Deconstructor a -> Ur.Types.Noun -> Maybe.Maybe b"},{"name":"oneOf","comment":" Try to execute all of the `Deconstructor`s in order until one succeeds.\n\nThis is especially useful for deconstructing head-tagged unions from Hoon.\n\n","type":"List.List (Ur.Deconstructor.Deconstructor a) -> Ur.Deconstructor.Deconstructor a"},{"name":"run","comment":" Executes a `Deconstructor` on a `Noun`.\n","type":"Ur.Deconstructor.Deconstructor a -> Ur.Types.Noun -> Maybe.Maybe a"},{"name":"runBytes","comment":" Executes a deconstructor on a `jam`med `Noun`.\n","type":"Ur.Deconstructor.Deconstructor a -> Bytes.Bytes -> Maybe.Maybe a"},{"name":"sig","comment":" Asserts the the `Atom` should be exactly `sig` (`~`).\n","type":"Ur.Types.Noun -> Maybe.Maybe ()"},{"name":"signedInt","comment":" Extracts a 32-bit signed `Int`.\n\nIf the `Atom` is larger than 32 bits the the behaviour is undefined.\n\n","type":"Ur.Deconstructor.Deconstructor Basics.Int"},{"name":"tape","comment":" Extracts a `tape`.\n","type":"Ur.Deconstructor.Deconstructor String.String"},{"name":"tar","comment":" Extract the raw `Noun`.\n\nAlways succeeds.\n\n","type":"Ur.Deconstructor.Deconstructor Ur.Types.Noun"}],"binops":[]},{"name":"Ur.Phonemic","comment":"\n\n@docs fromString\n\n","unions":[],"aliases":[],"values":[{"name":"fromString","comment":" Converts a ship name like `~zod` into an `Atom`.\n","type":"Ur.Types.Ship -> Ur.Types.Atom"}],"binops":[]},{"name":"Ur.Run","comment":" This module contains functions to run your application with Urbit integration.\n\n@docs element, document, application, Program, Model, Msg\n\n","unions":[{"name":"Msg","comment":" An Urbit wrapper around your application messages.\n","args":["msg"],"cases":[]}],"aliases":[{"name":"Model","comment":" An Urbit wrapper around your application model.\n","args":["app","msg"],"type":"{ subscriptions : Ur.Run.SubDict msg, subscriptionIntMapping : Dict.Dict Basics.Int ( String.String, String.String, List.List String.String ), app : app, connected : Basics.Bool, eventId : Basics.Int, flags : Ur.Run.Flags, requestsToRetry : List.List Ur.Requests.UrbitRequest, sinks : Dict.Dict Basics.Int Ur.Types.Noun }"},{"name":"Program","comment":" A wrapper around your application `Program`.\n","args":["model","msg"],"type":"Platform.Program Ur.Run.Flags (Ur.Run.Model model msg) (Ur.Run.Msg msg)"}],"values":[{"name":"application","comment":" The same as `Browser.element` but with urbit stuff added around it.\n","type":"{ init : Url.Url -> Browser.Navigation.Key -> ( model, Ur.Cmd.Cmd msg ), view : model -> Browser.Document msg, update : msg -> model -> ( model, Ur.Cmd.Cmd msg ), subscriptions : model -> Platform.Sub.Sub msg, urbitSubscriptions : model -> Ur.Sub.Sub msg, onUrlRequest : Browser.UrlRequest -> msg, onUrlChange : Url.Url -> msg, createEventSource : String.String -> Platform.Cmd.Cmd (Ur.Run.Msg msg), onEventSourceMsg : (Json.Decode.Value -> Ur.Run.Msg msg) -> Platform.Sub.Sub (Ur.Run.Msg msg), urbitUrl : model -> String.String } -> Ur.Run.Program model msg"},{"name":"document","comment":" The same as `Browser.element` but with urbit stuff added around it.\n","type":"{ init : ( model, Ur.Cmd.Cmd msg ), view : model -> Browser.Document msg, update : msg -> model -> ( model, Ur.Cmd.Cmd msg ), subscriptions : model -> Platform.Sub.Sub msg, urbitSubscriptions : model -> Ur.Sub.Sub msg, createEventSource : String.String -> Platform.Cmd.Cmd (Ur.Run.Msg msg), onEventSourceMsg : (Json.Decode.Value -> Ur.Run.Msg msg) -> Platform.Sub.Sub (Ur.Run.Msg msg), urbitUrl : model -> String.String } -> Ur.Run.Program model msg"},{"name":"element","comment":" The same as `Browser.element` but with urbit stuff added around it.\n","type":"{ init : ( model, Ur.Cmd.Cmd msg ), view : model -> Html.Html msg, update : msg -> model -> ( model, Ur.Cmd.Cmd msg ), subscriptions : model -> Platform.Sub.Sub msg, urbitSubscriptions : model -> Ur.Sub.Sub msg, createEventSource : String.String -> Platform.Cmd.Cmd (Ur.Run.Msg msg), onEventSourceMsg : (Json.Decode.Value -> Ur.Run.Msg msg) -> Platform.Sub.Sub (Ur.Run.Msg msg), urbitUrl : model -> String.String } -> Ur.Run.Program model msg"}],"binops":[]},{"name":"Ur.Sub","comment":" This module is conceptually similar to `Platform.Sub`, but allows you to subscribe to Urbit channels.\n\n@docs Sub, subscribe, none, batch, sink\n\n","unions":[],"aliases":[{"name":"Sub","comment":" Like `Sub` from `Platform.Sub` but for Urbit subscriptions.\n","args":["msg"],"type":"Ur.Sub.Internal.Sub msg"}],"values":[{"name":"batch","comment":" Batch multiple subscriptions into one.\n","type":"List.List (Ur.Sub.Sub msg) -> Ur.Sub.Sub msg"},{"name":"none","comment":" A subscription that does exactly nothing. (Does not subscribe to anything)\n","type":"Ur.Sub.Sub msg"},{"name":"sink","comment":" Creates a %sink subscription.\n","type":"{ ship : String.String, app : String.String, path : List.List String.String, deconstructor : Ur.Deconstructor.Deconstructor msg } -> Ur.Sub.Sub msg"},{"name":"subscribe","comment":" Creates an Urbit subscription.\n\n    subscribe\n        { ship = ship\n        , app = \"journal\"\n        , path = [ \"updates\" ]\n        , deconstructor = decodeJournalUpdate |> D.map GotUpdate\n        }\n\n","type":"{ ship : String.String, app : String.String, path : List.List String.String, deconstructor : Ur.Deconstructor.Deconstructor msg } -> Ur.Sub.Sub msg"}],"binops":[]},{"name":"Ur.Types","comment":"\n\n\n# Nouns\n\n@docs Noun, Atom\n\n\n# Types\n\n@docs Agent, Mark, Path, Ship\n\n","unions":[{"name":"Noun","comment":" An [Urbit Noun](https://developers.urbit.org/reference/glossary/noun).\n","args":[],"cases":[["Cell",["( Ur.Types.Noun, Ur.Types.Noun )"]],["Atom",["Ur.Types.Atom"]]]}],"aliases":[{"name":"Agent","comment":" An [Urbit agent](https://developers.urbit.org/reference/glossary/agent) (app) name like `journal` or `groups`.\n","args":[],"type":"String.String"},{"name":"Atom","comment":" An [Urbit Atom](https://developers.urbit.org/reference/glossary/atom)\n","args":[],"type":"Bytes.Bytes"},{"name":"Mark","comment":" An [Urbit mark](https://developers.urbit.org/reference/arvo/clay/marks/marks)\n","args":[],"type":"String.String"},{"name":"Path","comment":" An [Urbit subscription path](https://developers.urbit.org/reference/glossary/path).\n","args":[],"type":"List.List String.String"},{"name":"Ship","comment":" A ship name like `~zod` or `~racfer-hattes`.\n\nAlso know as `@p`.\n\n","args":[],"type":"String.String"}],"values":[],"binops":[]},{"name":"Ur.Uw","comment":" This module works with Urbit base-64 encoded strings aka `@uw`.\n\n@docs decode, encode\n\n","unions":[],"aliases":[],"values":[{"name":"decode","comment":" ","type":"String.String -> Bytes.Bytes"},{"name":"encode","comment":" ","type":"Bytes.Bytes -> String.String"}],"binops":[]}]