[{"name":"Json.Decode.Safe","comment":"\n\n@docs record, field, endRecord\n\n","unions":[],"aliases":[],"values":[{"name":"endRecord","comment":" Finalise the definition of a record decoder.\n\n    import Json.Decode\n    import Json.Decode.Safe exposing (endRecord, field, record)\n\n    userDecoder =\n        record userConstructor userConstructor\n            |> field \"firstName\" .firstName Json.Decode.string\n            |> field \"lastName\" .lastName Json.Decode.string\n            |> field \"pets\" .pets Json.Decode.int\n            |> endRecord\n\n","type":"Json.Decode.Decoder { recordType : recordType, expectedFieldOrder : expectedFieldOrder, gotFieldOrder : expectedFieldOrder -> Basics.Bool, totalFieldCount : totalFieldCount } -> Json.Decode.Decoder recordType"},{"name":"field","comment":" Add a field to a record decoder.\n\n    import Json.Decode\n    import Json.Decode.Safe exposing (record, field)\n\n    userDecoder =\n        record userConstructor userConstructor\n            |> field \"firstName\" .firstName Json.Decode.string\n            |> field \"lastName\" .lastName Json.Decode.string\n            |> field \"pets\" .pets Json.Decode.int\n            |> ...\n\n","type":"String.String -> (expectedFieldOrder -> totalFieldCount) -> Json.Decode.Decoder fieldValue -> Json.Decode.Decoder { expectedFieldOrder : totalFieldCount -> nextValidator, gotFieldOrder : expectedFieldOrder -> Basics.Bool, recordType : fieldValue -> nextConstructor, totalFieldCount : totalFieldCount } -> Json.Decode.Decoder { expectedFieldOrder : nextValidator, gotFieldOrder : expectedFieldOrder -> Basics.Bool, recordType : nextConstructor, totalFieldCount : Json.Decode.Safe.OnePlus totalFieldCount }"},{"name":"record","comment":" Start constructing a record decoder.\n\nYou will need to supply a polymorphic record constructor function as both arguments to this function.\n\nFor example, if you want to decode a record like this:\n\n    type alias User =\n        { firstName : String\n        , lastName : String\n        , pets : Int\n        }\n\nYou will need to write a constructor function as follows:\n\n    userConstructor : a -> b -> c -> { firstName : a, lastName : b, pets : c }\n    userConstructor firstName lastName pets =\n        { firstName = firstName\n        , lastName = lastName\n        , pets = pets\n        }\n\n**Note:** it is _important_ that the type annotation does not constrain the types of the arguments\npassed into this constructor function. That is part of the secret of how this package works its\nmagic!\n\nNow, pass the polymorphic constructor function into `record` _twice_, like this:\n\n    import Json.Decode.Safe exposing (record, field)\n\n    userDecoder =\n        record userConstructor userConstructor\n            |> ...\n\n","type":"constructor -> validator -> Json.Decode.Decoder { recordType : constructor, expectedFieldOrder : validator, totalFieldCount : Json.Decode.Safe.Zero, gotFieldOrder : a -> Basics.Bool }"}],"binops":[]}]