[
    {
        "name": "GraphQL",
        "comment": " Building and sending GraphQL.\n\nBuilding of HTTP request has been based on [`elm-http-builder`](http://package.elm-lang.org/packages/lukewestby/elm-http-builder/latest).\n\n\n# Build a GraphQL\n\n@docs GraphQL, query, mutation, subscription, select\n\n\n# Build a Request\n\n@docs Request, get, post\n\n@docs withHeader, withHeaders, withBearerToken, withQueryParam\n@docs withQueryParams, withTimeout, withCredentials, withCacheBuster\n\n\n# Make a Request\n\n@docs Error, toHttpRequest, toTask, send\n\n",
        "unions": [
            {
                "name": "GraphQL",
                "comment": " ",
                "args": [
                    "a"
                ],
                "cases": []
            }
        ],
        "aliases": [
            {
                "name": "Error",
                "comment": " A Request can fail in a couple ways:\n\n  - BadUrl means you did not provide a valid URL.\n  - Timeout means it took too long to get a response.\n  - NetworkError means the user turned off their wifi, went in a cave, etc.\n  - BadStatus means you got a response back, but the status code indicates failure.\n  - BadPayload means you got a response back with a nice status code,\n    but the body of the response was something unexpected.\n    The String in this case is a debugging message that\n    explains what went wrong with your JSON decoder or whatever.\n\n",
                "args": [],
                "type": "Error"
            },
            {
                "name": "Request",
                "comment": " A type for chaining request configuration.\n",
                "args": [
                    "a"
                ],
                "type": "{ method : String, url : String, headers : List Header, body : Body, expect : Expect a, timeout : Maybe Time, withCredentials : Bool, queryParams : List ( String, String ), cacheBuster : Maybe String }"
            }
        ],
        "values": [
            {
                "name": "get",
                "comment": " Start building a GET request with a given URL.\n\n    GraphQL.Selector.succeed (,)\n        |> GraphQL.Selector.field \"me\" [] userSelector\n        |> GraphQL.Selector.field \"articles\" [] (GraphQL.Selector.list articleSelector)\n        |> query \"InitialData\"\n        |> get \"https://example.com/graphql\"\n\n",
                "type": "String -> GraphQL a -> Request a"
            },
            {
                "name": "mutation",
                "comment": " Build a GraphQL named mutation.\n\n    GraphQL.Selector.succeed identity\n        |> GraphQL.Selector.field \"updateMe\"\n            [ ( \"firstName\", GraphQL.Argument.string \"Tom\" )\n            ]\n            (GraphQL.Selector.succeed User\n                |> GraphQL.Selector.field \"id\" [] GraphQL.Selector.string\n                |> GraphQL.Selector.field \"firstName\" [] GraphQL.Selector.string\n                |> GraphQL.Selector.field \"lastName\" [] GraphQL.Selector.string\n            )\n        |> mutation \"RenameUser\"\n\nIt collects a GraphQL which is equal to:\n\n    \"\"\"\n    mutation RenameUser {\n        updateMe(\"firstName\": \"Tom\") {\n            id\n            firstName\n            lastName\n        }\n    }\n    \"\"\"\n\n",
                "type": "String -> Selector a -> GraphQL a"
            },
            {
                "name": "post",
                "comment": " Start building a POST request with a given URL.\n\n    GraphQL.Selector.succeed (,)\n        |> GraphQL.Selector.field \"me\" [] userSelector\n        |> GraphQL.Selector.field \"articles\" [] (GraphQL.Selector.list articleSelector)\n        |> query \"InitialData\"\n        |> get \"https://example.com/graphql\"\n\n",
                "type": "String -> GraphQL a -> Request a"
            },
            {
                "name": "query",
                "comment": " Build a GraphQL named query.\n\n    GraphQL.Selector.succeed identity\n        |> GraphQL.Selector.field \"me\"\n            []\n            (GraphQL.Selector.succeed User\n                |> GraphQL.Selector.field \"id\" [] GraphQL.Selector.string\n                |> GraphQL.Selector.field \"firstName\" [] GraphQL.Selector.string\n                |> GraphQL.Selector.field \"lastName\" [] GraphQL.Selector.string\n            )\n        |> query \"Me\"\n\nIt collects a GraphQL which is equal to:\n\n    \"\"\"\n    query Me {\n        me {\n            id\n            firstName\n            lastName\n        }\n    }\n    \"\"\"\n\n",
                "type": "String -> Selector a -> GraphQL a"
            },
            {
                "name": "select",
                "comment": " Render GraphQL representation and build a Decoder from a GraphQL.\n",
                "type": "GraphQL a -> ( Maybe String, Decoder a )"
            },
            {
                "name": "send",
                "comment": " Send the request.\n",
                "type": "(Result Error a -> msg) -> Request a -> Cmd msg"
            },
            {
                "name": "subscription",
                "comment": " Build a GraphQL named subscription.\n\n    GraphQL.Selector.succeed identity\n        |> GraphQL.Selector.field \"onUpdateMe\"\n            []\n            (GraphQL.Selector.succeed User\n                |> GraphQL.Selector.field \"id\" [] GraphQL.Selector.string\n                |> GraphQL.Selector.field \"firstName\" [] GraphQL.Selector.string\n                |> GraphQL.Selector.field \"lastName\" [] GraphQL.Selector.string\n            )\n        |> subscription \"OnUpdateUser\"\n\nIt collects a GraphQL which is equal to:\n\n    \"\"\"\n    subscription OnUpdateUser {\n        onUpdateMe {\n            id\n            firstName\n            lastName\n        }\n    }\n    \"\"\"\n\n",
                "type": "String -> Selector a -> GraphQL a"
            },
            {
                "name": "toHttpRequest",
                "comment": " Extract the `Http.Request` component of the builder in case you want to use it directly.\n**This function is lossy** and will discard some of the extra stuff that HttpBuilder allows you to do.\n\nThings that will be lost:\n\n  - Attaching a cache buster to requests using `withCacheBuster`\n\n",
                "type": "Request a -> Request a"
            },
            {
                "name": "toTask",
                "comment": " Convert the `Request` to a `Task` with all options applied.\n`toTask` differs from `toRequest` in that it retains all extra behavior allowed by\nHttpBuilder, including:\n\n  - Attaching a cache buster to requests using `withCacheBuster`\n\n",
                "type": "Request a -> Task Error a"
            },
            {
                "name": "withBearerToken",
                "comment": " Add a bearer token to a request.\n\n    GraphQL.Selector.succeed (,)\n        |> GraphQL.Selector.field \"me\" [] userSelector\n        |> GraphQL.Selector.field \"articles\" [] (GraphQL.Selector.list articleSelector)\n        |> query \"InitialData\"\n        |> get \"https://example.com/graphql\"\n        |> withBearerToken \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhIjoiYSJ9.MvhYYpYBuN1rUaV0GGnQGvr889zY0xSc20Lnt8nMTfE\"\n\n",
                "type": "String -> Request a -> Request a"
            },
            {
                "name": "withCacheBuster",
                "comment": " Send the request with a Time based cache buster added to the URL.\nYou provide a key for an extra query param, and when the request is sent that\nquery param will be given a value with the current timestamp.\n\n    type Msg\n        = InitialData (Result Http.Error (User, List Article))\n\n    GraphQL.Selector.succeed (,)\n        |> GraphQL.Selector.field \"me\" [] userSelector\n        |> GraphQL.Selector.field \"articles\" [] (GraphQL.Selector.list articleSelector)\n        |> query \"InitialData\"\n        |> get \"https://example.com/graphql\"\n        |> withCacheBuster \"cache_buster\"\n        |> send InitialData\n\n    -- makes a request to https://example.com/graphql?cache_buster=1481633217383\n\n",
                "type": "String -> Request a -> Request a"
            },
            {
                "name": "withCredentials",
                "comment": " Set the `withCredentials` flag on the request to True. Works via\n[`XMLHttpRequest#withCredentials`](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials).\n\n    GraphQL.Selector.succeed (,)\n        |> GraphQL.Selector.field \"me\" [] userSelector\n        |> GraphQL.Selector.field \"articles\" [] (GraphQL.Selector.list articleSelector)\n        |> query \"InitialData\"\n        |> get \"https://example.com/graphql\"\n        |> withCredentials True\n\n",
                "type": "Bool -> Request a -> Request a"
            },
            {
                "name": "withHeader",
                "comment": " Add a single header to a request.\n\n    GraphQL.Selector.succeed (,)\n        |> GraphQL.Selector.field \"me\" [] userSelector\n        |> GraphQL.Selector.field \"articles\" [] (GraphQL.Selector.list articleSelector)\n        |> query \"InitialData\"\n        |> get \"https://example.com/graphql\"\n        |> withHeader \"Content-Type\" \"application/json\"\n        |> withHeader \"Accept\" \"application/json\"\n\n",
                "type": "String -> String -> Request a -> Request a"
            },
            {
                "name": "withHeaders",
                "comment": " Add many headers to a request.\n\n    GraphQL.Selector.succeed (,)\n        |> GraphQL.Selector.field \"me\" [] userSelector\n        |> GraphQL.Selector.field \"articles\" [] (GraphQL.Selector.list articleSelector)\n        |> query \"InitialData\"\n        |> get \"https://example.com/graphql\"\n        |> withHeaders\n            [ ( \"Content-Type\", \"application/json\" )\n            , ( \"Accept\", \"application/json\" )\n            ]\n\n",
                "type": "List ( String, String ) -> Request a -> Request a"
            },
            {
                "name": "withQueryParam",
                "comment": " Add a query param to the url for the request.\n\n    GraphQL.Selector.succeed (,)\n        |> GraphQL.Selector.field \"me\" [] userSelector\n        |> GraphQL.Selector.field \"articles\" [] (GraphQL.Selector.list articleSelector)\n        |> query \"InitialData\"\n        |> get \"https://example.com/graphql\"\n        |> withQueryParams \"hello\" \"world\"\n        |> withQueryParams baz\" \"qux\"\n\n    -- sends a request to https://example.com/graphql?hello=world&baz=qux\n\n",
                "type": "String -> String -> Request a -> Request a"
            },
            {
                "name": "withQueryParams",
                "comment": " Add some query params to the url for the request.\n\n    GraphQL.Selector.succeed (,)\n        |> GraphQL.Selector.field \"me\" [] userSelector\n        |> GraphQL.Selector.field \"articles\" [] (GraphQL.Selector.list articleSelector)\n        |> query \"InitialData\"\n        |> get \"https://example.com/graphql\"\n        |> withQueryParams [ ( \"hello\", \"world\" ), ( \"foo\", \"bar\" ) ]\n        |> withQueryParams [ ( \"baz\", \"qux\" ) ]\n\n    -- sends a request to https://example.com/graphql?hello=world&foo=bar&baz=qux\n\n",
                "type": "List ( String, String ) -> Request a -> Request a"
            },
            {
                "name": "withTimeout",
                "comment": " Set the `timeout` setting on the request.\n\n    GraphQL.Selector.succeed (,)\n        |> GraphQL.Selector.field \"me\" [] userSelector\n        |> GraphQL.Selector.field \"articles\" [] (GraphQL.Selector.list articleSelector)\n        |> query \"InitialData\"\n        |> get \"https://example.com/graphql\"\n        |> withTimeout (10 * Time.second)\n\n",
                "type": "Time -> Request a -> Request a"
            }
        ],
        "binops": []
    },
    {
        "name": "GraphQL.Argument",
        "comment": " Define GraphQL inputs in Elm\n\n\n# Primitives\n\n@docs Argument\n@docs string, int, float, bool, null\n\n\n# Arrays\n\n@docs list, array\n\n\n# Objects\n\n@docs object\n\n",
        "unions": [],
        "aliases": [
            {
                "name": "Argument",
                "comment": " Represents a GraphQL input values.\n",
                "args": [],
                "type": "Argument"
            }
        ],
        "values": [
            {
                "name": "array",
                "comment": " Pass array of arguments into a graph.\n\n    GraphQL.Selector.succeed Constructor\n        |> GraphQL.Selector.field \"fieldName\"\n            [ ( \"asInConsistentArray\"\n              , array\n                    (Array.fromList\n                        [ string \"foo\"\n                        , int 0\n                        , array [ bool False ]\n                        ]\n                    )\n              )\n            , ( \"asConsistentArray\"\n              , array\n                    (Array.fromList\n                        [ int 0\n                        , int 1\n                        , int 2\n                        ]\n                    )\n              )\n            ]\n            GraphQL.Selector.int\n\nEquals to:\n\n    \"\"\"\n    fieldName(\n        asInConsistentList: [\"foo\", 0, false],\n        asConsistentList: [0, 1, 2]\n    )\n    \"\"\"\n\n",
                "type": "Array Argument -> Argument"
            },
            {
                "name": "bool",
                "comment": " Pass bool argument into a graph.\n\n    GraphQL.Selector.succeed Constructor\n        |> GraphQL.Selector.field \"fieldName\"\n            [ ( \"asBool\", bool True )\n            ]\n            GraphQL.Selector.int\n\nEquals to:\n\n    \"\"\"\n    fieldName(asBool: true)\n    \"\"\"\n\n",
                "type": "Bool -> Argument"
            },
            {
                "name": "float",
                "comment": " Pass float argument into a graph.\n\n    GraphQL.Selector.succeed Constructor\n        |> GraphQL.Selector.field \"fieldName\"\n            [ ( \"asFloat\", float 3.14 )\n            ]\n            GraphQL.Selector.int\n\nEquals to:\n\n    \"\"\"\n    fieldName(asFloat: 3.14)\n    \"\"\"\n\n",
                "type": "Float -> Argument"
            },
            {
                "name": "int",
                "comment": " Pass int argument into a graph.\n\n    GraphQL.Selector.succeed Constructor\n        |> GraphQL.Selector.field \"fieldName\"\n            [ ( \"asInt\", int 1 )\n            ]\n            GraphQL.Selector.int\n\nEquals to:\n\n    \"\"\"\n    fieldName(asInt: 1)\n    \"\"\"\n\n",
                "type": "Int -> Argument"
            },
            {
                "name": "list",
                "comment": " Pass list of arguments into a graph.\n\n    GraphQL.Selector.succeed Constructor\n        |> GraphQL.Selector.field \"fieldName\"\n            [ ( \"asInConsistentList\"\n              , list\n                    [ string \"foo\"\n                    , int 0\n                    , list [ bool False ]\n                    ]\n              )\n            , ( \"asConsistentList\"\n              , list\n                    [ int 0\n                    , int 1\n                    , int 2\n                    ]\n              )\n            ]\n            GraphQL.Selector.int\n\nEquals to:\n\n    \"\"\"\n    fieldName(\n        asInConsistentList: [\"foo\", 0, false],\n        asConsistentList: [0, 1, 2]\n    )\n    \"\"\"\n\n",
                "type": "List Argument -> Argument"
            },
            {
                "name": "null",
                "comment": " Pass null argument into a graph.\n\n    GraphQL.Selector.succeed Constructor\n        |> GraphQL.Selector.field \"fieldName\"\n            [ ( \"asNull\", null )\n            ]\n            GraphQL.Selector.int\n\nEquals to:\n\n    \"\"\"\n    fieldName(asNull: null)\n    \"\"\"\n\n",
                "type": "Argument"
            },
            {
                "name": "object",
                "comment": " Pass object of arguments into a graph.\n\n    GraphQL.Selector.succeed Constructor\n        |> GraphQL.Selector.field \"fieldName\"\n            [ ( \"asObject\"\n              , object\n                    [ ( \"asString\", string \"foo\" )\n                    , ( \"asInt\", int 1 )\n                    , ( \"asFloat\", float 3.14 )\n                    , ( \"asBool\", bool True )\n                    , ( \"asNull\", null )\n                    ]\n              )\n            ]\n            GraphQL.Selector.int\n\nEquals to:\n\n    \"\"\"\n    fieldName(asObject: {\n        asString: \"foo\",\n        asInt: 1,\n        asFloat: 3.14,\n        asBool: true,\n        asNull: null\n    })\n    \"\"\"\n\n",
                "type": "List ( String, Argument ) -> Argument"
            },
            {
                "name": "string",
                "comment": " Pass string argument into a graph.\n\n    GraphQL.Selector.succeed Constructor\n        |> GraphQL.Selector.field \"fieldName\"\n            [ ( \"asString\", string \"foo\" )\n            ]\n            GraphQL.Selector.int\n\nEquals to:\n\n    \"\"\"\n    fieldName(asString: \"foo\")\n    \"\"\"\n\n",
                "type": "String -> Argument"
            }
        ],
        "binops": []
    },
    {
        "name": "GraphQL.Selector",
        "comment": " Build GraphQL with decoders for turning JSON values into Elm values.\n\n\n# Primitives\n\n@docs Selector\n@docs string, bool, int, float\n\n\n# Data Structures\n\n@docs nullable, list, array, dict, keyValuePairs\n\n\n# Object Primitives\n\n@docs field, aliased, index\n\n\n# Inconsistent Structure\n\n@docs maybe, oneOf\n\n\n# Run Selectors\n\n@docs Value\n@docs select, decodeString, decodeValue\n\n\n# Fancy Decoding\n\n@docs map, andThen, succeed, fail, value, null, on\n\n",
        "unions": [
            {
                "name": "Selector",
                "comment": " A value that knows how to select (receive and decode) a GraphQL values.\n",
                "args": [
                    "a"
                ],
                "cases": []
            }
        ],
        "aliases": [
            {
                "name": "Value",
                "comment": " A JSON value.\n",
                "args": [],
                "type": "Value"
            }
        ],
        "values": [
            {
                "name": "aliased",
                "comment": " ",
                "type": "String -> String -> List ( String, Argument ) -> Selector a -> Selector (a -> b) -> Selector b"
            },
            {
                "name": "andThen",
                "comment": " Create decoders that depend on previous results.\nDoesn't create depended Selector.\n",
                "type": "(a -> Selector b) -> Selector a -> Selector b"
            },
            {
                "name": "array",
                "comment": " Decode a JSON array into an Elm `Array`.\n\n    decodeString (array int) \"[1,2,3]\"       == Ok (Array.fromList [1,2,3])\n    decodeString (array bool) \"[true,false]\" == Ok (Array.fromList [True,False])\n\n",
                "type": "Selector a -> Selector (Array a)"
            },
            {
                "name": "bool",
                "comment": " Decode a JSON string into an Elm `Bool`.\n\n    decodeString bool \"true\"              == Ok True\n    decodeString bool \"42\"                == Err ...\n    decodeString bool \"3.14\"              == Err ...\n    decodeString bool \"\\\"hello\\\"\"         == Err ...\n    decodeString bool \"{ \\\"hello\\\": 42 }\" == Err ...\n\n",
                "type": "Selector Bool"
            },
            {
                "name": "decodeString",
                "comment": " Parse the given string into a JSON value and then run the Decoder on it.\nThis will fail if the string is not well-formed JSON or if the Decoder fails for some reason.\n\n    decodeString int \"4\"     == Ok 4\n    decodeString int \"1 + 2\" == Err ...\n\n",
                "type": "Selector a -> String -> Result String a"
            },
            {
                "name": "decodeValue",
                "comment": " Run a Decoder on some JSON Value.\nYou can send these JSON values through ports,\nso that is probably the main time you would use this function.\n",
                "type": "Selector a -> Value -> Result String a"
            },
            {
                "name": "dict",
                "comment": " Decode a JSON object into an Elm `Dict`.\n\n    decodeString (dict int) \"{ \\\"alice\\\": 42, \\\"bob\\\": 99 }\"\n      == Dict.fromList [(\"alice\", 42), (\"bob\", 99)]\n\n",
                "type": "Selector a -> Selector (Dict String a)"
            },
            {
                "name": "fail",
                "comment": " Ignore the JSON and make the decoder fail. This is handy when used with\n`oneOf` or `andThen` where you want to give a custom error message in some\ncase.\n\nSee the [`andThen`](#andThen) docs for an example.\n\n",
                "type": "String -> Selector a"
            },
            {
                "name": "field",
                "comment": " ",
                "type": "String -> List ( String, Argument ) -> Selector a -> Selector (a -> b) -> Selector b"
            },
            {
                "name": "float",
                "comment": " Decode a JSON number into an Elm `Float`.\n\n    decodeString float \"true\"              == Err ..\n    decodeString float \"42\"                == Ok 42\n    decodeString float \"3.14\"              == Ok 3.14\n    decodeString float \"\\\"hello\\\"\"         == Err ...\n    decodeString float \"{ \\\"hello\\\": 42 }\" == Err ...\n\n",
                "type": "Selector Float"
            },
            {
                "name": "index",
                "comment": " Decode a JSON array, requiring a particular index.\n\n    json = \"\"\"[ \"alice\", \"bob\", \"chuck\" ]\"\"\"\n\n    decodeString (index 0 string) json  == Ok \"alice\"\n    decodeString (index 1 string) json  == Ok \"bob\"\n    decodeString (index 2 string) json  == Ok \"chuck\"\n    decodeString (index 3 string) json  == Err ...\n\n",
                "type": "Int -> Selector a -> Selector a"
            },
            {
                "name": "int",
                "comment": " Decode a JSON number into an Elm `Int`.\n\n    decodeString int \"true\"              == Err ...\n    decodeString int \"42\"                == Ok 42\n    decodeString int \"3.14\"              == Err ...\n    decodeString int \"\\\"hello\\\"\"         == Err ...\n    decodeString int \"{ \\\"hello\\\": 42 }\" == Err ...\n\n",
                "type": "Selector Int"
            },
            {
                "name": "keyValuePairs",
                "comment": " Decode a JSON object into an Elm `List` of pairs.\n\n    decodeString (keyValuePairs int) \"{ \\\"alice\\\": 42, \\\"bob\\\": 99 }\"\n      == [(\"alice\", 42), (\"bob\", 99)]\n\n",
                "type": "Selector a -> Selector (List ( String, a ))"
            },
            {
                "name": "list",
                "comment": " Decode a JSON array into an Elm `List`.\n\n    decodeString (list int) \"[1,2,3]\"       == Ok [1,2,3]\n    decodeString (list bool) \"[true,false]\" == Ok [True,False]\n\n",
                "type": "Selector a -> Selector (List a)"
            },
            {
                "name": "map",
                "comment": " Transform a decoder. Maybe you just want to know the length of a string:\n\n    stringLength : Selector Int\n    stringLength =\n        map String.length string\n\nIt is often helpful to use `map` with `oneOf`, like when defining `nullable`:\n\n    nullable : Selector a -> Selector (Maybe a)\n    nullable decoder =\n        oneOf\n            [ null Nothing\n            , map Just decoder\n            ]\n\n",
                "type": "(a -> b) -> Selector a -> Selector b"
            },
            {
                "name": "maybe",
                "comment": " Helpful for dealing with optional fields. Here are a few slightly different examples:\n\n    json = \"\"\"{ \"name\": \"tom\", \"age\": 42 }\"\"\"\n\n    decodeString (succeed identity |> field \"age\" [] (maybe int)) json    == Ok (Just 42)\n    decodeString (succeed identity |> field \"name\" [] (maybe int)) json   == Ok Nothing\n    decodeString (succeed identity |> field \"height\" [] (maybe int)) json == Err ...\n\nNotice the last example!\nIt is saying we must have a field named `height` and the content may be a float.\nThere is no `height` field, so the decoder fails.\n\nPoint is, `maybe` will make exactly what it contains conditional.\nFor optional fields, this means you probably want it outside a use of `field` or `at`.\n\n",
                "type": "Selector a -> Selector (Maybe a)"
            },
            {
                "name": "null",
                "comment": " Decode a `null` value into some Elm value.\n\n    decodeString (null False) \"null\" == Ok False\n    decodeString (null 42) \"null\"    == Ok 42\n    decodeString (null 42) \"42\"      == Err ..\n    decodeString (null 42) \"false\"   == Err ..\n\nSo if you ever see a `null`, this will return whatever value you specified.\n\n",
                "type": "a -> Selector a"
            },
            {
                "name": "nullable",
                "comment": " Decode a nullable JSON value into an Elm value.\n\n    decodeString (nullable int) \"13\"    == Ok (Just 13)\n    decodeString (nullable int) \"42\"    == Ok (Just 42)\n    decodeString (nullable int) \"null\"  == Ok Nothing\n    decodeString (nullable int) \"true\"  == Err ...\n\n",
                "type": "Selector a -> Selector (Maybe a)"
            },
            {
                "name": "on",
                "comment": " ",
                "type": "List ( String, Selector a ) -> Selector (a -> b) -> Selector b"
            },
            {
                "name": "oneOf",
                "comment": " Try a bunch of different decoders. This can be useful if the JSON may come\nin a couple different formats. For example, say you want to read an array of\nnumbers, but some of them are `null`.\n\n    badInt : Decoder Int\n    badInt =\n        oneOf [ int, null 0 ]\n\n\n    -- decodeString (list badInt) \"[1,2,null,4]\" == Ok [1,2,0,4]\n\nWhy would someone generate JSON like this? Questions like this are not good\nfor your health. The point is that you can use `oneOf` to handle situations\nlike this!\n\nYou could also use `oneOf` to help version your data. Try the latest format,\nthen a few older ones that you still support. You could use `andThen` to be\neven more particular if you wanted.\n\n",
                "type": "List (Selector a) -> Selector a"
            },
            {
                "name": "select",
                "comment": " Render GraphQL representation and build a Decoder from a Selector.\n",
                "type": "Selector a -> ( Maybe String, Decoder a )"
            },
            {
                "name": "string",
                "comment": " Decode a JSON string into an Elm `String`.\n\n    decodeString string \"true\"              == Err ...\n    decodeString string \"42\"                == Err ...\n    decodeString string \"3.14\"              == Err ...\n    decodeString string \"\\\"hello\\\"\"         == Ok \"hello\"\n    decodeString string \"{ \\\"hello\\\": 42 }\" == Err ...\n\n",
                "type": "Selector String"
            },
            {
                "name": "succeed",
                "comment": " Ignore the JSON and produce a certain Elm value.\n\n    decodeString (succeed 42) \"true\"    == Ok 42\n    decodeString (succeed 42) \"[1,2,3]\" == Ok 42\n    decodeString (succeed 42) \"hello\"   == Err ... -- this is not a valid JSON string\n\n    This is handy when used with `oneOf` or `andThen`.\n\n",
                "type": "a -> Selector a"
            },
            {
                "name": "value",
                "comment": " Do not do anything with a JSON value, just bring it into Elm as a `Value`.\nThis can be useful if you have particularly crazy data that you would like to\ndeal with later. Or if you are going to send it out a port and do not care\nabout its structure.\n",
                "type": "Selector Value"
            }
        ],
        "binops": []
    }
]