I should really write some elevator-pitch style examples to include here. Oh well.
Made with ❤️ and released under BSD3. My eternal thanks to @michaeljones for his invaluable feedback and continued discovery of edge-cases and bugs!
Json.Decode.Exploration:isObject and isArray: ascertainments about structure without using
contained valuesJson.Decode.Exploration.Pipeline:optional and optionalAt now use isObject to prevent marking unused
contained values as having been used.Json.Decode.Exploration.Pipeline.optional and optionalAt now error when
used on something that is not an object. The clue is that each field in the
path is optional in the existential sense - if it simply does not exist, we
dutifully use the provided fallback. However, if a field exists but does not
point to an object, we now error out instead.optional on an empty
object.Json.Decode.Exploration.check: verify the value of a field while decodingJson.Decode.Exploration.Pipeline:checked and checkedAt: verify values during decodingignored and ignoredAt: completely ignore values during decodingIncreased test coverage of Json.Decode.Exploration.Pipeline.
BadField errors weren't properly traced through the stack.
Increase test coverage of Json.Decode.Exploration.