[{"name":"Codec","comment":" A `Codec a` contain a JSON `Decoder a` and the corresponding `a -> Value` encoder.\n\n\n# Definition\n\n@docs Codec, decoder, encoder\n\n\n# Primitives\n\n@docs string, bool, int, float, char\n\n\n# Data Structures\n\n@docs maybe, list, array, dict, set, tuple, triple, result\n\n\n# Object Primitives\n\n@docs ObjectCodec, object, field, optionalField, buildObject\n\n\n# Custom Types\n\n@docs CustomCodec, custom, variant0, variant1, variant2, variant3, variant4, variant5, variant6, variant7, variant8, buildCustom\n\n\n# Mapping\n\n@docs map\n\n\n# Fancy Codecs\n\n@docs constant, recursive\n\n","unions":[{"name":"Codec","comment":" A value that knows how to encode and decode JSON values.\n","args":["a"],"cases":[]},{"name":"CustomCodec","comment":" A partially built `Codec` for a custom type.\n","args":["match","v"],"cases":[]},{"name":"ObjectCodec","comment":" A partially built `Codec` for an object.\n","args":["a","b"],"cases":[]}],"aliases":[],"values":[{"name":"array","comment":" `Codec` between a JSON array and an Elm `Array`.\n","type":"Codec.Codec a -> Codec.Codec (Array.Array a)"},{"name":"bool","comment":" `Codec` between a JSON boolean and an Elm `Bool`\n","type":"Codec.Codec Basics.Bool"},{"name":"buildCustom","comment":" Build a `Codec` for a fully specified custom type.\n","type":"Codec.CustomCodec (a -> Json.Encode.Value) a -> Codec.Codec a"},{"name":"buildObject","comment":" Create a `Codec` from a fully specified `ObjectCodec`.\n","type":"Codec.ObjectCodec a a -> Codec.Codec a"},{"name":"char","comment":" `Codec` between a JSON string of length 1 and an Elm `Char`\n","type":"Codec.Codec Char.Char"},{"name":"constant","comment":" Create a `Codec` that produces null as JSON and always decodes as the same value.\n","type":"a -> Codec.Codec a"},{"name":"custom","comment":" Starts building a `Codec` for a custom type.\nYou need to pass a pattern matching function, see the examples and FAQ for details.\n","type":"match -> Codec.CustomCodec match value"},{"name":"decoder","comment":" Extracts the `Decoder` contained inside the `Codec`.\n","type":"Codec.Codec a -> Json.Decode.Decoder a"},{"name":"dict","comment":" `Codec` between a JSON object and an Elm `Dict`.\n","type":"Codec.Codec a -> Codec.Codec (Dict.Dict String.String a)"},{"name":"encoder","comment":" Extracts the encoding function contained inside the `Codec`.\n","type":"Codec.Codec a -> a -> Json.Encode.Value"},{"name":"field","comment":" Specify the name getter and `Codec` for a field.\n","type":"String.String -> (a -> f) -> Codec.Codec f -> Codec.ObjectCodec a (f -> b) -> Codec.ObjectCodec a b"},{"name":"float","comment":" `Codec` between a JSON number and an Elm `Float`\n","type":"Codec.Codec Basics.Float"},{"name":"int","comment":" `Codec` between a JSON number and an Elm `Int`\n","type":"Codec.Codec Basics.Int"},{"name":"list","comment":" `Codec` between a JSON array and an Elm `List`.\n","type":"Codec.Codec a -> Codec.Codec (List.List a)"},{"name":"map","comment":" Transform a `Codec`.\n","type":"(a -> b) -> (b -> a) -> Codec.Codec a -> Codec.Codec b"},{"name":"maybe","comment":" Represents an optional value.\n","type":"Codec.Codec a -> Codec.Codec (Maybe.Maybe a)"},{"name":"object","comment":" Start creating a `Codec` for an object. You should pass the main constructor as argument.\nIf you don't have one (for example it's a simple type with no name), you should pass a function that given the field values builds an object.\n","type":"b -> Codec.ObjectCodec a b"},{"name":"optionalField","comment":" Specify the name getter and `Codec` for an optional field.\nThis is particularly useful for evolving your `Codec`s.\n","type":"String.String -> (a -> Maybe.Maybe f) -> Codec.Codec f -> Codec.ObjectCodec a (Maybe.Maybe f -> b) -> Codec.ObjectCodec a b"},{"name":"recursive","comment":" Create a `Codec` for a recursive data structure.\nThe argument to the function you need to pass is the fully formed `Codec`.\n","type":"(Codec.Codec a -> Codec.Codec a) -> Codec.Codec a"},{"name":"result","comment":" `Codec` for `Result` values.\n","type":"Codec.Codec error -> Codec.Codec value -> Codec.Codec (Result.Result error value)"},{"name":"set","comment":" `Codec` between a JSON array and an Elm `Set`.\n","type":"Codec.Codec comparable -> Codec.Codec (Set.Set comparable)"},{"name":"string","comment":" `Codec` between a JSON string and an Elm `String`\n","type":"Codec.Codec String.String"},{"name":"triple","comment":" `Codec` between a JSON array of length 3 and an Elm triple.\n","type":"Codec.Codec a -> Codec.Codec b -> Codec.Codec c -> Codec.Codec ( a, b, c )"},{"name":"tuple","comment":" `Codec` between a JSON array of length 2 and an Elm `Tuple`.\n","type":"Codec.Codec a -> Codec.Codec b -> Codec.Codec ( a, b )"},{"name":"variant0","comment":" Define a variant with 0 parameters for a custom type.\n","type":"String.String -> v -> Codec.CustomCodec (Json.Encode.Value -> a) v -> Codec.CustomCodec a v"},{"name":"variant1","comment":" Define a variant with 1 parameters for a custom type.\n","type":"String.String -> (a -> v) -> Codec.Codec a -> Codec.CustomCodec ((a -> Json.Encode.Value) -> b) v -> Codec.CustomCodec b v"},{"name":"variant2","comment":" Define a variant with 2 parameters for a custom type.\n","type":"String.String -> (a -> b -> v) -> Codec.Codec a -> Codec.Codec b -> Codec.CustomCodec ((a -> b -> Json.Encode.Value) -> c) v -> Codec.CustomCodec c v"},{"name":"variant3","comment":" Define a variant with 3 parameters for a custom type.\n","type":"String.String -> (a -> b -> c -> v) -> Codec.Codec a -> Codec.Codec b -> Codec.Codec c -> Codec.CustomCodec ((a -> b -> c -> Json.Encode.Value) -> partial) v -> Codec.CustomCodec partial v"},{"name":"variant4","comment":" Define a variant with 4 parameters for a custom type.\n","type":"String.String -> (a -> b -> c -> d -> v) -> Codec.Codec a -> Codec.Codec b -> Codec.Codec c -> Codec.Codec d -> Codec.CustomCodec ((a -> b -> c -> d -> Json.Encode.Value) -> partial) v -> Codec.CustomCodec partial v"},{"name":"variant5","comment":" Define a variant with 5 parameters for a custom type.\n","type":"String.String -> (a -> b -> c -> d -> e -> v) -> Codec.Codec a -> Codec.Codec b -> Codec.Codec c -> Codec.Codec d -> Codec.Codec e -> Codec.CustomCodec ((a -> b -> c -> d -> e -> Json.Encode.Value) -> partial) v -> Codec.CustomCodec partial v"},{"name":"variant6","comment":" Define a variant with 6 parameters for a custom type.\n","type":"String.String -> (a -> b -> c -> d -> e -> f -> v) -> Codec.Codec a -> Codec.Codec b -> Codec.Codec c -> Codec.Codec d -> Codec.Codec e -> Codec.Codec f -> Codec.CustomCodec ((a -> b -> c -> d -> e -> f -> Json.Encode.Value) -> partial) v -> Codec.CustomCodec partial v"},{"name":"variant7","comment":" Define a variant with 7 parameters for a custom type.\n","type":"String.String -> (a -> b -> c -> d -> e -> f -> g -> v) -> Codec.Codec a -> Codec.Codec b -> Codec.Codec c -> Codec.Codec d -> Codec.Codec e -> Codec.Codec f -> Codec.Codec g -> Codec.CustomCodec ((a -> b -> c -> d -> e -> f -> g -> Json.Encode.Value) -> partial) v -> Codec.CustomCodec partial v"},{"name":"variant8","comment":" Define a variant with 8 parameters for a custom type.\n","type":"String.String -> (a -> b -> c -> d -> e -> f -> g -> h -> v) -> Codec.Codec a -> Codec.Codec b -> Codec.Codec c -> Codec.Codec d -> Codec.Codec e -> Codec.Codec f -> Codec.Codec g -> Codec.Codec h -> Codec.CustomCodec ((a -> b -> c -> d -> e -> f -> g -> h -> Json.Encode.Value) -> partial) v -> Codec.CustomCodec partial v"}],"binops":[]}]