-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Library providing JSON parser that warns about unexpected fields in objects.
--   
--   Please see the README on GitHub at
--   <a>https://github.com/commercialhaskell/aeson-warning-parser#readme</a>
@package aeson-warning-parser
@version 0.1.1

module Data.Aeson.WarningParser

-- | A JSON parser that warns about unexpected fields in objects.
type WarningParser a = WriterT WarningParserMonoid Parser a

-- | Warning output from <a>WarningParser</a>.
data JSONWarning
JSONUnrecognizedFields :: String -> [Text] -> JSONWarning
JSONGeneralWarning :: !Text -> JSONWarning
data WithJSONWarnings a
WithJSONWarnings :: a -> [JSONWarning] -> WithJSONWarnings a

-- | <a>WarningParser</a> version of <a>withObject</a>.
withObjectWarnings :: String -> (Object -> WarningParser a) -> Value -> Parser (WithJSONWarnings a)

-- | Handle warnings in a sub-object.
jsonSubWarnings :: WarningParser (WithJSONWarnings a) -> WarningParser a

-- | Handle warnings in a <tt>Traversable</tt> of sub-objects.
jsonSubWarningsT :: Traversable t => WarningParser (t (WithJSONWarnings a)) -> WarningParser (t a)

-- | Handle warnings in a <tt>Maybe Traversable</tt> of sub-objects.
jsonSubWarningsTT :: (Traversable t, Traversable u) => WarningParser (u (t (WithJSONWarnings a))) -> WarningParser (u (t a))

-- | Log JSON warnings.
logJSONWarnings :: (MonadReader env m, HasLogFunc env, HasCallStack, MonadIO m) => FilePath -> [JSONWarning] -> m ()
noJSONWarnings :: a -> WithJSONWarnings a

-- | Tell the warning parser about an expected field, so it doesn't warn
--   about it.
tellJSONField :: Text -> WarningParser ()

-- | Convert a <a>WarningParser</a> to a <a>Parser</a>.
unWarningParser :: WarningParser a -> Parser a

-- | Extends the <tt>.:</tt> warning to include the field name that failed
--   to parse.
(.:) :: FromJSON a => Object -> Text -> Parser a

-- | Extends the <tt>.:?</tt> warning to include the field name that failed
--   to parse.
(.:?) :: FromJSON a => Object -> Text -> Parser (Maybe a)

-- | <a>WarningParser</a> version of <tt>.:</tt>.
(..:) :: FromJSON a => Object -> Text -> WarningParser a

-- | Synonym version of <tt>..:</tt>.
(...:) :: FromJSON a => Object -> [Text] -> WarningParser a

-- | <a>WarningParser</a> version of <tt>.:?</tt>.
(..:?) :: FromJSON a => Object -> Text -> WarningParser (Maybe a)

-- | Synonym version of <tt>..:?</tt>.
(...:?) :: FromJSON a => Object -> [Text] -> WarningParser (Maybe a)

-- | <a>WarningParser</a> version of <tt>.!=</tt>.
(..!=) :: WarningParser (Maybe a) -> a -> WarningParser a
instance GHC.Classes.Eq Data.Aeson.WarningParser.JSONWarning
instance GHC.Show.Show a => GHC.Show.Show (Data.Aeson.WarningParser.WithJSONWarnings a)
instance GHC.Generics.Generic (Data.Aeson.WarningParser.WithJSONWarnings a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Aeson.WarningParser.WithJSONWarnings a)
instance GHC.Generics.Generic Data.Aeson.WarningParser.WarningParserMonoid
instance GHC.Base.Semigroup Data.Aeson.WarningParser.WarningParserMonoid
instance GHC.Base.Monoid Data.Aeson.WarningParser.WarningParserMonoid
instance Data.String.IsString Data.Aeson.WarningParser.WarningParserMonoid
instance GHC.Base.Functor Data.Aeson.WarningParser.WithJSONWarnings
instance GHC.Base.Monoid a => GHC.Base.Semigroup (Data.Aeson.WarningParser.WithJSONWarnings a)
instance GHC.Base.Monoid a => GHC.Base.Monoid (Data.Aeson.WarningParser.WithJSONWarnings a)
instance Data.Aeson.Types.FromJSON.FromJSON (Data.Aeson.WarningParser.WithJSONWarnings RIO.PrettyPrint.StylesUpdate.StylesUpdate)
instance GHC.Show.Show Data.Aeson.WarningParser.JSONWarning
instance RIO.Prelude.Display.Display Data.Aeson.WarningParser.JSONWarning
instance Data.String.IsString Data.Aeson.WarningParser.JSONWarning
