{"moduleDefinition":{"range":[1,1,1,45],"value":{"type":"normal","normal":{"moduleName":{"range":[1,8,1,29],"value":["Example07CustomCodecs"]},"exposingList":{"range":[1,30,1,45],"value":{"type":"explicit","explicit":[{"range":[1,40,1,44],"value":{"type":"function","function":{"name":"main"}}}]}}}}},"imports":[{"range":[3,1,3,36],"value":{"moduleName":{"range":[3,8,3,24],"value":["Graphql","Document"]},"moduleAlias":{"range":[3,28,3,36],"value":["Document"]},"exposingList":null}},{"range":[4,1,4,20],"value":{"moduleName":{"range":[4,8,4,20],"value":["Graphql","Http"]},"moduleAlias":null,"exposingList":null}},{"range":[5,1,5,46],"value":{"moduleName":{"range":[5,8,5,25],"value":["Graphql","Operation"]},"moduleAlias":null,"exposingList":{"range":[5,26,5,46],"value":{"type":"explicit","explicit":[{"range":[5,36,5,45],"value":{"type":"typeOrAlias","typeOrAlias":{"name":"RootQuery"}}}]}}}},{"range":[6,1,6,64],"value":{"moduleName":{"range":[6,8,6,32],"value":["Graphql","OptionalArgument"]},"moduleAlias":null,"exposingList":{"range":[6,33,6,64],"value":{"type":"explicit","explicit":[{"range":[6,43,6,63],"value":{"type":"typeexpose","typeexpose":{"name":"OptionalArgument","open":[6,59,6,63]}}}]}}}},{"range":[7,1,7,68],"value":{"moduleName":{"range":[7,8,7,28],"value":["Graphql","SelectionSet"]},"moduleAlias":{"range":[7,32,7,44],"value":["SelectionSet"]},"exposingList":{"range":[7,45,7,68],"value":{"type":"explicit","explicit":[{"range":[7,55,7,67],"value":{"type":"typeOrAlias","typeOrAlias":{"name":"SelectionSet"}}}]}}}},{"range":[8,1,8,20],"value":{"moduleName":{"range":[8,8,8,20],"value":["Helpers","Main"]},"moduleAlias":null,"exposingList":null}},{"range":[9,1,9,40],"value":{"moduleName":{"range":[9,8,9,18],"value":["RemoteData"]},"moduleAlias":null,"exposingList":{"range":[9,19,9,40],"value":{"type":"explicit","explicit":[{"range":[9,29,9,39],"value":{"type":"typeOrAlias","typeOrAlias":{"name":"RemoteData"}}}]}}}},{"range":[10,1,10,39],"value":{"moduleName":{"range":[10,8,10,27],"value":["Swapi","Enum","Language"]},"moduleAlias":{"range":[10,31,10,39],"value":["Language"]},"exposingList":null}},{"range":[11,1,11,46],"value":{"moduleName":{"range":[11,8,11,33],"value":["Swapi","Interface","Character"]},"moduleAlias":{"range":[11,37,11,46],"value":["Character"]},"exposingList":null}},{"range":[12,1,12,28],"value":{"moduleName":{"range":[12,8,12,19],"value":["Swapi","Query"]},"moduleAlias":{"range":[12,23,12,28],"value":["Query"]},"exposingList":null}},{"range":[13,1,13,12],"value":{"moduleName":{"range":[13,8,13,12],"value":["Time"]},"moduleAlias":null,"exposingList":null}}],"declarations":[{"range":[54,1,55,8],"value":{"type":"typeAlias","typeAlias":{"documentation":null,"name":{"range":[54,12,54,20],"value":"Response"},"generics":[],"typeAnnotation":{"range":[55,5,55,8],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[55,5,55,8],"value":{"moduleName":[],"name":"Int"}},"args":[]}}}}}},{"range":[58,1,60,59],"value":{"type":"function","function":{"documentation":null,"signature":{"range":[58,1,58,40],"value":{"name":{"range":[58,1,58,6],"value":"query"},"typeAnnotation":{"range":[58,9,58,40],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[58,9,58,21],"value":{"moduleName":[],"name":"SelectionSet"}},"args":[{"range":[58,22,58,30],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[58,22,58,30],"value":{"moduleName":[],"name":"Response"}},"args":[]}}},{"range":[58,31,58,40],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[58,31,58,40],"value":{"moduleName":[],"name":"RootQuery"}},"args":[]}}}]}}}}},"declaration":{"range":[59,1,60,59],"value":{"name":{"range":[59,1,59,6],"value":"query"},"arguments":[],"expression":{"range":[60,5,60,59],"value":{"type":"application","application":[{"range":[60,5,60,14],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":["Query"],"name":"now"}}},{"range":[60,15,60,17],"value":{"type":"operator","operator":"|>"}},{"range":[60,18,60,34],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":["SelectionSet"],"name":"map"}}},{"range":[60,35,60,59],"value":{"type":"parenthesized","parenthesized":{"range":[60,36,60,58],"value":{"type":"application","application":[{"range":[60,36,60,49],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":["Time"],"name":"toSecond"}}},{"range":[60,50,60,58],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":["Time"],"name":"utc"}}}]}}}}]}}}}}}},{"range":[63,1,67,68],"value":{"type":"function","function":{"documentation":null,"signature":{"range":[63,1,63,22],"value":{"name":{"range":[63,1,63,12],"value":"makeRequest"},"typeAnnotation":{"range":[63,15,63,22],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[63,15,63,18],"value":{"moduleName":[],"name":"Cmd"}},"args":[{"range":[63,19,63,22],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[63,19,63,22],"value":{"moduleName":[],"name":"Msg"}},"args":[]}}}]}}}}},"declaration":{"range":[64,1,67,68],"value":{"name":{"range":[64,1,64,12],"value":"makeRequest"},"arguments":[],"expression":{"range":[65,5,67,68],"value":{"type":"application","application":[{"range":[65,5,65,10],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":[],"name":"query"}}},{"range":[66,9,66,11],"value":{"type":"operator","operator":"|>"}},{"range":[66,12,66,37],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":["Graphql","Http"],"name":"queryRequest"}}},{"range":[66,38,66,73],"value":{"type":"literal","literal":"https://elm-graphql.herokuapp.com"}},{"range":[67,9,67,11],"value":{"type":"operator","operator":"|>"}},{"range":[67,12,67,29],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":["Graphql","Http"],"name":"send"}}},{"range":[67,30,67,68],"value":{"type":"parenthesized","parenthesized":{"range":[67,31,67,67],"value":{"type":"application","application":[{"range":[67,31,67,52],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":["RemoteData"],"name":"fromResult"}}},{"range":[67,53,67,55],"value":{"type":"operator","operator":">>"}},{"range":[67,56,67,67],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":[],"name":"GotResponse"}}}]}}}}]}}}}}}},{"range":[74,1,75,24],"value":{"type":"typedecl","typedecl":{"documentation":null,"name":{"range":[74,6,74,9],"value":"Msg"},"generics":[],"constructors":[{"range":[75,7,75,24],"value":{"name":{"range":[75,7,75,18],"value":"GotResponse"},"arguments":[{"range":[75,19,75,24],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[75,19,75,24],"value":{"moduleName":[],"name":"Model"}},"args":[]}}}]}}]}}},{"range":[78,1,79,54],"value":{"type":"typeAlias","typeAlias":{"documentation":null,"name":{"range":[78,12,78,17],"value":"Model"},"generics":[],"typeAnnotation":{"range":[79,5,79,54],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[79,5,79,15],"value":{"moduleName":[],"name":"RemoteData"}},"args":[{"range":[79,16,79,45],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[79,17,79,35],"value":{"moduleName":["Graphql","Http"],"name":"Error"}},"args":[{"range":[79,36,79,44],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[79,36,79,44],"value":{"moduleName":[],"name":"Response"}},"args":[]}}}]}}},{"range":[79,46,79,54],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[79,46,79,54],"value":{"moduleName":[],"name":"Response"}},"args":[]}}}]}}}}}},{"range":[82,1,83,7],"value":{"type":"typeAlias","typeAlias":{"documentation":null,"name":{"range":[82,12,82,17],"value":"Flags"},"generics":[],"typeAnnotation":{"range":[83,5,83,7],"value":{"type":"unit","unit":{}}}}}},{"range":[86,1,88,40],"value":{"type":"function","function":{"documentation":null,"signature":{"range":[86,1,86,35],"value":{"name":{"range":[86,1,86,5],"value":"init"},"typeAnnotation":{"range":[86,8,86,35],"value":{"type":"function","function":{"left":{"range":[86,8,86,13],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[86,8,86,13],"value":{"moduleName":[],"name":"Flags"}},"args":[]}}},"right":{"range":[86,17,86,35],"value":{"type":"tupled","tupled":{"values":[{"range":[86,19,86,24],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[86,19,86,24],"value":{"moduleName":[],"name":"Model"}},"args":[]}}},{"range":[86,26,86,33],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[86,26,86,29],"value":{"moduleName":[],"name":"Cmd"}},"args":[{"range":[86,30,86,33],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[86,30,86,33],"value":{"moduleName":[],"name":"Msg"}},"args":[]}}}]}}}]}}}}}}}},"declaration":{"range":[87,1,88,40],"value":{"name":{"range":[87,1,87,5],"value":"init"},"arguments":[{"range":[87,6,87,7],"value":{"type":"all","all":{}}}],"expression":{"range":[88,5,88,40],"value":{"type":"tupled","tupled":[{"range":[88,7,88,25],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":["RemoteData"],"name":"Loading"}}},{"range":[88,27,88,38],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":[],"name":"makeRequest"}}}]}}}}}}},{"range":[91,1,95,35],"value":{"type":"function","function":{"documentation":null,"signature":{"range":[91,1,91,44],"value":{"name":{"range":[91,1,91,7],"value":"update"},"typeAnnotation":{"range":[91,10,91,44],"value":{"type":"function","function":{"left":{"range":[91,10,91,13],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[91,10,91,13],"value":{"moduleName":[],"name":"Msg"}},"args":[]}}},"right":{"range":[91,17,91,44],"value":{"type":"function","function":{"left":{"range":[91,17,91,22],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[91,17,91,22],"value":{"moduleName":[],"name":"Model"}},"args":[]}}},"right":{"range":[91,26,91,44],"value":{"type":"tupled","tupled":{"values":[{"range":[91,28,91,33],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[91,28,91,33],"value":{"moduleName":[],"name":"Model"}},"args":[]}}},{"range":[91,35,91,42],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[91,35,91,38],"value":{"moduleName":[],"name":"Cmd"}},"args":[{"range":[91,39,91,42],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[91,39,91,42],"value":{"moduleName":[],"name":"Msg"}},"args":[]}}}]}}}]}}}}}}}}}}},"declaration":{"range":[92,1,95,35],"value":{"name":{"range":[92,1,92,7],"value":"update"},"arguments":[{"range":[92,8,92,11],"value":{"type":"var","var":{"value":"msg"}}},{"range":[92,12,92,17],"value":{"type":"var","var":{"value":"model"}}}],"expression":{"range":[93,5,95,35],"value":{"type":"case","case":{"cases":[{"pattern":{"range":[94,9,94,29],"value":{"type":"named","named":{"qualified":{"moduleName":[],"name":"GotResponse"},"patterns":[{"range":[94,21,94,29],"value":{"type":"var","var":{"value":"response"}}}]}}},"expression":{"range":[95,13,95,35],"value":{"type":"tupled","tupled":[{"range":[95,15,95,23],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":[],"name":"response"}}},{"range":[95,25,95,33],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":["Cmd"],"name":"none"}}}]}}}],"expression":{"range":[93,10,93,13],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":[],"name":"msg"}}}}}}}}}}},{"range":[98,1,104,10],"value":{"type":"function","function":{"documentation":null,"signature":{"range":[98,1,98,44],"value":{"name":{"range":[98,1,98,5],"value":"main"},"typeAnnotation":{"range":[98,8,98,44],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[98,8,98,28],"value":{"moduleName":["Helpers","Main"],"name":"Program"}},"args":[{"range":[98,29,98,34],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[98,29,98,34],"value":{"moduleName":[],"name":"Flags"}},"args":[]}}},{"range":[98,35,98,40],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[98,35,98,40],"value":{"moduleName":[],"name":"Model"}},"args":[]}}},{"range":[98,41,98,44],"value":{"type":"typed","typed":{"moduleNameAndName":{"range":[98,41,98,44],"value":{"moduleName":[],"name":"Msg"}},"args":[]}}}]}}}}},"declaration":{"range":[99,1,104,10],"value":{"name":{"range":[99,1,99,5],"value":"main"},"arguments":[],"expression":{"range":[100,5,104,10],"value":{"type":"application","application":[{"range":[100,5,100,26],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":["Helpers","Main"],"name":"document"}}},{"range":[101,9,104,10],"value":{"type":"record","record":[{"range":[101,11,101,22],"value":{"field":{"range":[101,11,101,15],"value":"init"},"expression":{"range":[101,18,101,22],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":[],"name":"init"}}}}},{"range":[102,11,103,9],"value":{"field":{"range":[102,11,102,17],"value":"update"},"expression":{"range":[102,20,102,26],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":[],"name":"update"}}}}},{"range":[103,11,104,9],"value":{"field":{"range":[103,11,103,22],"value":"queryString"},"expression":{"range":[103,25,103,54],"value":{"type":"application","application":[{"range":[103,25,103,48],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":["Document"],"name":"serializeQuery"}}},{"range":[103,49,103,54],"value":{"type":"functionOrValue","functionOrValue":{"moduleName":[],"name":"query"}}}]}}}}]}}]}}}}}}}],"comments":[{"range":[71,1,71,26],"value":"-- Elm Architecture Setup"},{"range":[17,1,51,3],"value":"{-\n\n   If we generated this code without specifying `--scalar-codecs CustomScalarCodecs`\n   then all scalars in our schema would be deseriarlized as a Strings.\n   Note that the default decoder checks if it is a primitive type, and\n   serializes that primitive to a String. See the full implementation:\n   https://github.com/dillonkearns/elm-graphql/blob/376e8ed0992584d9de0a9da539833c41dbeca4dd/src/Graphql/Internal/Builder/Object.elm#L21-L40\n\n   Since we supplied a custom decoder with `--scalar-codecs CustomScalarCodecs`,\n   it uses the decoder specified in that file for our schema's `PosixTime` scalar.\n   So when we grab `Query.now`, instead of gettting back the default, which is\n   a simple type wrapper like this: `type PosixTime = PosixTime String`, we get\n   back an actual Elm `Time.Posix`. See the decoder specified in this file:\n   https://github.com/dillonkearns/elm-graphql/blob/master/examples/src/CustomScalarCodecs.elm\n\n   Since we have a `Posix.Time`, we can use some functions that require a `Posix.Time`,\n   in this case `Time.toSecond Time.utc <Posix.Time value>`.\n\n   Note that the purpose of a custom Scalar in GraphQL is to codify a set of\n   assumptions that we can make about any values that are passed as arguments\n   or return values of that type in our GraphQL API. The way this is enforced\n   is through the custom resolvers we define to serialize and deserialize this values\n   in our server. For example, if we have an `ISO8061Date` custom scalar in our\n   API, we can define a deserializer that gives a nice error message if you pass\n   an argument that isn't of the proper format to an API endpoint. Or if it\n   is in the proper format, it converts it to a DateTime object in our server\n   language that we can assume we have. Similarly, on the client side, if\n   the server has sent us back an `ISO8061Date` custom scalar, we know that\n   we can safely deserialize it assuming that it is in that format, since the\n   server uses its `ISO8061Date` resolver to turn it into a String in that format.\n   To learn more about GraphqL Scalars, see these resources:\n   * https://graphql.org/learn/schema/#scalar-types\n   * https://www.howtographql.com/graphql-scala/5-custom_scalars/\n\n-}"}]}