servant-queryparam-client 1.0.0 → 2.0.0
raw patch · 3 files changed
+217/−217 lines, 3 filesdep ~servant-queryparam-corePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: servant-queryparam-core
API changes (from Hackage documentation)
- Servant.Client.Record: instance (Servant.Client.Core.HasClient.HasClient m api, GHC.TypeLits.KnownSymbol sym, GHC.TypeLits.KnownSymbol (Fcf.Core.Eval (mod sym))) => Servant.Client.Record.GHasClient mod m (GHC.Generics.S1 ('GHC.Generics.MetaSel ('GHC.Maybe.Just sym) d1 d2 d3) (GHC.Generics.Rec0 GHC.Types.Bool)) api
- Servant.Client.Record: instance (Servant.Client.Core.RunClient.RunClient m, GHC.Generics.Generic a, Servant.Client.Record.GHasClient mod m (GHC.Generics.Rep a) api) => Servant.Client.Core.HasClient.HasClient m (Servant.Record.RecordParam mod a Servant.API.Sub.:> api)
- Servant.Client.Record: instance (Servant.Client.Core.RunClient.RunClient m, Servant.Client.Record.GHasClient mod m a api) => Servant.Client.Core.HasClient.HasClient m (Servant.Client.Record.GParam mod (a ()) Servant.API.Sub.:> api)
- Servant.Client.Record: instance (Web.Internal.HttpApiData.ToHttpApiData a, Servant.Client.Core.HasClient.HasClient m api, GHC.TypeLits.KnownSymbol sym, GHC.TypeLits.KnownSymbol (Fcf.Core.Eval (mod sym))) => Servant.Client.Record.GHasClient mod m (GHC.Generics.S1 ('GHC.Generics.MetaSel ('GHC.Maybe.Just sym) d1 d2 d3) (GHC.Generics.Rec0 (GHC.Maybe.Maybe a))) api
- Servant.Client.Record: instance (Web.Internal.HttpApiData.ToHttpApiData a, Servant.Client.Core.HasClient.HasClient m api, GHC.TypeLits.KnownSymbol sym, GHC.TypeLits.KnownSymbol (Fcf.Core.Eval (mod sym))) => Servant.Client.Record.GHasClient mod m (GHC.Generics.S1 ('GHC.Generics.MetaSel ('GHC.Maybe.Just sym) d1 d2 d3) (GHC.Generics.Rec0 [a])) api
- Servant.Client.Record: instance (Web.Internal.HttpApiData.ToHttpApiData a, Servant.Client.Core.HasClient.HasClient m api, GHC.TypeLits.KnownSymbol sym, GHC.TypeLits.KnownSymbol (Fcf.Core.Eval (mod sym))) => Servant.Client.Record.GHasClient mod m (GHC.Generics.S1 ('GHC.Generics.MetaSel ('GHC.Maybe.Just sym) d1 d2 d3) (GHC.Generics.Rec0 a)) api
- Servant.Client.Record: instance Servant.Client.Record.GHasClient mod m a (Servant.Client.Record.GParam mod (b ()) Servant.API.Sub.:> api) => Servant.Client.Record.GHasClient mod m (a GHC.Generics.:*: b) api
- Servant.Client.Record: instance Servant.Client.Record.GHasClient mod m a api => Servant.Client.Record.GHasClient mod m (GHC.Generics.C1 mon a) api
- Servant.Client.Record: instance Servant.Client.Record.GHasClient mod m c api => Servant.Client.Record.GHasClient mod m (GHC.Generics.D1 m3 c) api
+ Servant.QueryParam.Client.Record: instance (Servant.Client.Core.HasClient.HasClient m api, GHC.TypeLits.KnownSymbol sym, GHC.TypeLits.KnownSymbol (Fcf.Core.Eval (mod sym))) => Servant.QueryParam.Client.Record.GHasClient mod m (GHC.Generics.S1 ('GHC.Generics.MetaSel ('GHC.Maybe.Just sym) d1 d2 d3) (GHC.Generics.Rec0 GHC.Types.Bool)) api
+ Servant.QueryParam.Client.Record: instance (Servant.Client.Core.RunClient.RunClient m, GHC.Generics.Generic a, Servant.QueryParam.Client.Record.GHasClient mod m (GHC.Generics.Rep a) api) => Servant.Client.Core.HasClient.HasClient m (Servant.QueryParam.Record.RecordParam mod a Servant.API.Sub.:> api)
+ Servant.QueryParam.Client.Record: instance (Servant.Client.Core.RunClient.RunClient m, Servant.QueryParam.Client.Record.GHasClient mod m a api) => Servant.Client.Core.HasClient.HasClient m (Servant.QueryParam.Client.Record.GParam mod (a ()) Servant.API.Sub.:> api)
+ Servant.QueryParam.Client.Record: instance (Web.Internal.HttpApiData.ToHttpApiData a, Servant.Client.Core.HasClient.HasClient m api, GHC.TypeLits.KnownSymbol sym, GHC.TypeLits.KnownSymbol (Fcf.Core.Eval (mod sym))) => Servant.QueryParam.Client.Record.GHasClient mod m (GHC.Generics.S1 ('GHC.Generics.MetaSel ('GHC.Maybe.Just sym) d1 d2 d3) (GHC.Generics.Rec0 (GHC.Maybe.Maybe a))) api
+ Servant.QueryParam.Client.Record: instance (Web.Internal.HttpApiData.ToHttpApiData a, Servant.Client.Core.HasClient.HasClient m api, GHC.TypeLits.KnownSymbol sym, GHC.TypeLits.KnownSymbol (Fcf.Core.Eval (mod sym))) => Servant.QueryParam.Client.Record.GHasClient mod m (GHC.Generics.S1 ('GHC.Generics.MetaSel ('GHC.Maybe.Just sym) d1 d2 d3) (GHC.Generics.Rec0 [a])) api
+ Servant.QueryParam.Client.Record: instance (Web.Internal.HttpApiData.ToHttpApiData a, Servant.Client.Core.HasClient.HasClient m api, GHC.TypeLits.KnownSymbol sym, GHC.TypeLits.KnownSymbol (Fcf.Core.Eval (mod sym))) => Servant.QueryParam.Client.Record.GHasClient mod m (GHC.Generics.S1 ('GHC.Generics.MetaSel ('GHC.Maybe.Just sym) d1 d2 d3) (GHC.Generics.Rec0 a)) api
+ Servant.QueryParam.Client.Record: instance Servant.QueryParam.Client.Record.GHasClient mod m a (Servant.QueryParam.Client.Record.GParam mod (b ()) Servant.API.Sub.:> api) => Servant.QueryParam.Client.Record.GHasClient mod m (a GHC.Generics.:*: b) api
+ Servant.QueryParam.Client.Record: instance Servant.QueryParam.Client.Record.GHasClient mod m a api => Servant.QueryParam.Client.Record.GHasClient mod m (GHC.Generics.C1 mon a) api
+ Servant.QueryParam.Client.Record: instance Servant.QueryParam.Client.Record.GHasClient mod m c api => Servant.QueryParam.Client.Record.GHasClient mod m (GHC.Generics.D1 m3 c) api
Files
- servant-queryparam-client.cabal +3/−3
- src/Servant/Client/Record.hs +0/−214
- src/Servant/QueryParam/Client/Record.hs +214/−0
servant-queryparam-client.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: servant-queryparam-client-version: 1.0.0+version: 2.0.0 synopsis: Client support for servant-queryparam-core. description: Client support for [servant-queryparam-core](https://hackage.haskell.org/package/servant-queryparam-core).@@ -19,10 +19,10 @@ library default-language: GHC2021 ghc-options: -Wall- exposed-modules: Servant.Client.Record+ exposed-modules: Servant.QueryParam.Client.Record hs-source-dirs: src build-depends: , base >=4.16 && <5 , servant >=0.19 , servant-client-core >=0.19- , servant-queryparam-core >=1.0.0+ , servant-queryparam-core >=2.0.0
− src/Servant/Client/Record.hs
@@ -1,214 +0,0 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE RankNTypes #-}-{-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE TypeOperators #-}-{-# LANGUAGE UndecidableInstances #-}-{-# OPTIONS_GHC -fno-warn-orphans #-}---- | This module exports orphan instances to make--- [@servant-queryparam-core@](https://hackage.haskell.org/package/servant-queryparam-core) work with clients.-module Servant.Client.Record () where--import Data.Kind-import Data.Proxy-import GHC.Generics-import GHC.TypeLits-import Servant.API-import Servant.Client.Core.HasClient-import Servant.Client.Core.Request-import Servant.Client.Core.RunClient-import Servant.Record-import Servant.TypeLevel--instance- ( RunClient m,- Generic a,- GHasClient mod m (Rep a) api- ) =>- HasClient m (RecordParam mod a :> api)- where- type Client m (RecordParam mod a :> api) = a -> Client m api- clientWithRoute pm Proxy req record =- gClientWithRoute (Proxy :: Proxy mod) pm (Proxy :: Proxy api) req (from record :: Rep a ())- {-# INLINE clientWithRoute #-}- hoistClientMonad pm Proxy f cl as =- gHoistClientMonad- (Proxy :: Proxy mod)- pm- (Proxy :: Proxy api)- f- (cl . to)- (from as :: Rep a ())- {-# INLINE hoistClientMonad #-}--data GParam (mod :: Symbol -> Exp Symbol) a--class GHasClient (mod :: Symbol -> Exp Symbol) m (a :: Type -> Type) api where- gClientWithRoute ::- RunClient m =>- Proxy mod ->- Proxy m ->- Proxy api ->- Request ->- a () ->- Client m api- gHoistClientMonad ::- RunClient m =>- Proxy mod ->- Proxy m ->- Proxy api ->- (forall x. mon x -> mon' x) ->- (a () -> Client mon api) ->- (a () -> Client mon' api)--instance- ( RunClient m,- GHasClient mod m a api- ) =>- HasClient m (GParam mod (a ()) :> api)- where- type Client m (GParam mod (a ()) :> api) = a () -> Client m api- clientWithRoute pm _ = gClientWithRoute (Proxy :: Proxy mod) pm (Proxy :: Proxy api)- {-# INLINE clientWithRoute #-}- hoistClientMonad pm _ = gHoistClientMonad (Proxy :: Proxy mod) pm (Proxy :: Proxy api)- {-# INLINE hoistClientMonad #-}--instance- GHasClient mod m c api =>- GHasClient mod m (D1 m3 c) api- where- gClientWithRoute _ pm _ req (M1 x) =- gClientWithRoute (Proxy :: Proxy mod) pm (Proxy :: Proxy api) req x- {-# INLINE gClientWithRoute #-}- gHoistClientMonad _ pm Proxy f cl x =- gHoistClientMonad (Proxy :: Proxy mod) pm (Proxy :: Proxy api) f (cl . M1) (unM1 x)- {-# INLINE gHoistClientMonad #-}--instance- GHasClient mod m a (GParam mod (b ()) :> api) =>- GHasClient mod m (a :*: b) api- where- gClientWithRoute _ pm _ req (x :*: y) =- gClientWithRoute (Proxy :: Proxy mod) pm (Proxy :: Proxy (GParam mod (b ()) :> api)) req x y- {-# INLINE gClientWithRoute #-}- gHoistClientMonad _ pm Proxy f cl (x :*: y) =- gHoistClientMonad- (Proxy :: Proxy mod)- pm- (Proxy :: Proxy (GParam mod (b ()) :> api))- f- (\x' y' -> cl (x' :*: y'))- x- y- {-# INLINE gHoistClientMonad #-}--instance GHasClient mod m a api => GHasClient mod m (C1 mon a) api where- gClientWithRoute _ pm _ req (M1 x) =- gClientWithRoute (Proxy :: Proxy mod) pm (Proxy :: Proxy api) req x- {-# INLINE gClientWithRoute #-}- gHoistClientMonad _ pm _ f cl (M1 x) =- gHoistClientMonad (Proxy :: Proxy mod) pm (Proxy :: Proxy api) f (cl . M1) x- {-# INLINE gHoistClientMonad #-}--instance- {-# OVERLAPPING #-}- ( HasClient m api,- KnownSymbol sym,- KnownSymbol (Eval (mod sym))- ) =>- GHasClient mod m (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 Bool)) api- where- gClientWithRoute _ pm _ req (M1 (K1 x)) =- clientWithRoute pm (Proxy :: Proxy (QueryFlag (Eval (mod sym)) :> api)) req x- {-# INLINE gClientWithRoute #-}- gHoistClientMonad _ pm _ f cl (M1 (K1 x)) =- hoistClientMonad- pm- (Proxy :: Proxy (QueryFlag (Eval (mod sym)) :> api))- f- (cl . M1 . K1)- x- {-# INLINE gHoistClientMonad #-}--instance- {-# OVERLAPPING #-}- ( ToHttpApiData a,- HasClient m api,- KnownSymbol sym,- KnownSymbol (Eval (mod sym))- ) =>- GHasClient mod m (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 [a])) api- where- gClientWithRoute _ pm _ req (M1 (K1 x)) =- clientWithRoute pm (Proxy :: Proxy (QueryParams (Eval (mod sym)) a :> api)) req x- {-# INLINE gClientWithRoute #-}- gHoistClientMonad _ pm _ f cl (M1 (K1 x)) =- hoistClientMonad- pm- (Proxy :: Proxy (QueryParams (Eval (mod sym)) a :> api))- f- (cl . M1 . K1)- x- {-# INLINE gHoistClientMonad #-}--instance- {-# OVERLAPPING #-}- ( ToHttpApiData a,- HasClient m api,- KnownSymbol sym,- KnownSymbol (Eval (mod sym))- ) =>- GHasClient- mod- m- (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 (Maybe a)))- api- where- gClientWithRoute _ pm _ req (M1 (K1 x)) =- clientWithRoute- pm- (Proxy :: Proxy (QueryParam' '[Optional, Strict] (Eval (mod sym)) a :> api))- req- x- {-# INLINE gClientWithRoute #-}- gHoistClientMonad _ pm _ f cl (M1 (K1 x)) =- hoistClientMonad- pm- (Proxy :: Proxy (QueryParam' '[Optional, Strict] (Eval (mod sym)) a :> api))- f- (cl . M1 . K1)- x- {-# INLINE gHoistClientMonad #-}--instance- {-# OVERLAPPABLE #-}- ( ToHttpApiData a,- HasClient m api,- KnownSymbol sym,- KnownSymbol (Eval (mod sym))- ) =>- GHasClient- mod- m- (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 a))- api- where- gClientWithRoute _ pm _ req (M1 (K1 x)) =- clientWithRoute- pm- (Proxy :: Proxy (QueryParam' '[Required, Strict] (Eval (mod sym)) a :> api))- req- x- {-# INLINE gClientWithRoute #-}- gHoistClientMonad _ pm _ f cl (M1 (K1 x)) =- hoistClientMonad- pm- (Proxy :: Proxy (QueryParam' '[Required, Strict] (Eval (mod sym)) a :> api))- f- (cl . M1 . K1)- x- {-# INLINE gHoistClientMonad #-}
+ src/Servant/QueryParam/Client/Record.hs view
@@ -0,0 +1,214 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE UndecidableInstances #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++-- | This module exports orphan instances to make+-- [@servant-queryparam-core@](https://hackage.haskell.org/package/servant-queryparam-core) work with clients.+module Servant.QueryParam.Client.Record () where++import Data.Kind+import Data.Proxy+import GHC.Generics+import GHC.TypeLits+import Servant.API+import Servant.Client.Core.HasClient+import Servant.Client.Core.Request+import Servant.Client.Core.RunClient+import Servant.QueryParam.Record+import Servant.QueryParam.TypeLevel++instance+ ( RunClient m+ , Generic a+ , GHasClient mod m (Rep a) api+ ) =>+ HasClient m (RecordParam mod a :> api)+ where+ type Client m (RecordParam mod a :> api) = a -> Client m api+ clientWithRoute pm Proxy req record =+ gClientWithRoute (Proxy :: Proxy mod) pm (Proxy :: Proxy api) req (from record :: Rep a ())+ {-# INLINE clientWithRoute #-}+ hoistClientMonad pm Proxy f cl as =+ gHoistClientMonad+ (Proxy :: Proxy mod)+ pm+ (Proxy :: Proxy api)+ f+ (cl . to)+ (from as :: Rep a ())+ {-# INLINE hoistClientMonad #-}++data GParam (mod :: Symbol -> Exp Symbol) a++class GHasClient (mod :: Symbol -> Exp Symbol) m (a :: Type -> Type) api where+ gClientWithRoute ::+ RunClient m =>+ Proxy mod ->+ Proxy m ->+ Proxy api ->+ Request ->+ a () ->+ Client m api+ gHoistClientMonad ::+ RunClient m =>+ Proxy mod ->+ Proxy m ->+ Proxy api ->+ (forall x. mon x -> mon' x) ->+ (a () -> Client mon api) ->+ (a () -> Client mon' api)++instance+ ( RunClient m+ , GHasClient mod m a api+ ) =>+ HasClient m (GParam mod (a ()) :> api)+ where+ type Client m (GParam mod (a ()) :> api) = a () -> Client m api+ clientWithRoute pm _ = gClientWithRoute (Proxy :: Proxy mod) pm (Proxy :: Proxy api)+ {-# INLINE clientWithRoute #-}+ hoistClientMonad pm _ = gHoistClientMonad (Proxy :: Proxy mod) pm (Proxy :: Proxy api)+ {-# INLINE hoistClientMonad #-}++instance+ GHasClient mod m c api =>+ GHasClient mod m (D1 m3 c) api+ where+ gClientWithRoute _ pm _ req (M1 x) =+ gClientWithRoute (Proxy :: Proxy mod) pm (Proxy :: Proxy api) req x+ {-# INLINE gClientWithRoute #-}+ gHoistClientMonad _ pm Proxy f cl x =+ gHoistClientMonad (Proxy :: Proxy mod) pm (Proxy :: Proxy api) f (cl . M1) (unM1 x)+ {-# INLINE gHoistClientMonad #-}++instance+ GHasClient mod m a (GParam mod (b ()) :> api) =>+ GHasClient mod m (a :*: b) api+ where+ gClientWithRoute _ pm _ req (x :*: y) =+ gClientWithRoute (Proxy :: Proxy mod) pm (Proxy :: Proxy (GParam mod (b ()) :> api)) req x y+ {-# INLINE gClientWithRoute #-}+ gHoistClientMonad _ pm Proxy f cl (x :*: y) =+ gHoistClientMonad+ (Proxy :: Proxy mod)+ pm+ (Proxy :: Proxy (GParam mod (b ()) :> api))+ f+ (\x' y' -> cl (x' :*: y'))+ x+ y+ {-# INLINE gHoistClientMonad #-}++instance GHasClient mod m a api => GHasClient mod m (C1 mon a) api where+ gClientWithRoute _ pm _ req (M1 x) =+ gClientWithRoute (Proxy :: Proxy mod) pm (Proxy :: Proxy api) req x+ {-# INLINE gClientWithRoute #-}+ gHoistClientMonad _ pm _ f cl (M1 x) =+ gHoistClientMonad (Proxy :: Proxy mod) pm (Proxy :: Proxy api) f (cl . M1) x+ {-# INLINE gHoistClientMonad #-}++instance+ {-# OVERLAPPING #-}+ ( HasClient m api+ , KnownSymbol sym+ , KnownSymbol (Eval (mod sym))+ ) =>+ GHasClient mod m (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 Bool)) api+ where+ gClientWithRoute _ pm _ req (M1 (K1 x)) =+ clientWithRoute pm (Proxy :: Proxy (QueryFlag (Eval (mod sym)) :> api)) req x+ {-# INLINE gClientWithRoute #-}+ gHoistClientMonad _ pm _ f cl (M1 (K1 x)) =+ hoistClientMonad+ pm+ (Proxy :: Proxy (QueryFlag (Eval (mod sym)) :> api))+ f+ (cl . M1 . K1)+ x+ {-# INLINE gHoistClientMonad #-}++instance+ {-# OVERLAPPING #-}+ ( ToHttpApiData a+ , HasClient m api+ , KnownSymbol sym+ , KnownSymbol (Eval (mod sym))+ ) =>+ GHasClient mod m (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 [a])) api+ where+ gClientWithRoute _ pm _ req (M1 (K1 x)) =+ clientWithRoute pm (Proxy :: Proxy (QueryParams (Eval (mod sym)) a :> api)) req x+ {-# INLINE gClientWithRoute #-}+ gHoistClientMonad _ pm _ f cl (M1 (K1 x)) =+ hoistClientMonad+ pm+ (Proxy :: Proxy (QueryParams (Eval (mod sym)) a :> api))+ f+ (cl . M1 . K1)+ x+ {-# INLINE gHoistClientMonad #-}++instance+ {-# OVERLAPPING #-}+ ( ToHttpApiData a+ , HasClient m api+ , KnownSymbol sym+ , KnownSymbol (Eval (mod sym))+ ) =>+ GHasClient+ mod+ m+ (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 (Maybe a)))+ api+ where+ gClientWithRoute _ pm _ req (M1 (K1 x)) =+ clientWithRoute+ pm+ (Proxy :: Proxy (QueryParam' '[Optional, Strict] (Eval (mod sym)) a :> api))+ req+ x+ {-# INLINE gClientWithRoute #-}+ gHoistClientMonad _ pm _ f cl (M1 (K1 x)) =+ hoistClientMonad+ pm+ (Proxy :: Proxy (QueryParam' '[Optional, Strict] (Eval (mod sym)) a :> api))+ f+ (cl . M1 . K1)+ x+ {-# INLINE gHoistClientMonad #-}++instance+ {-# OVERLAPPABLE #-}+ ( ToHttpApiData a+ , HasClient m api+ , KnownSymbol sym+ , KnownSymbol (Eval (mod sym))+ ) =>+ GHasClient+ mod+ m+ (S1 ('MetaSel ('Just sym) d1 d2 d3) (Rec0 a))+ api+ where+ gClientWithRoute _ pm _ req (M1 (K1 x)) =+ clientWithRoute+ pm+ (Proxy :: Proxy (QueryParam' '[Required, Strict] (Eval (mod sym)) a :> api))+ req+ x+ {-# INLINE gClientWithRoute #-}+ gHoistClientMonad _ pm _ f cl (M1 (K1 x)) =+ hoistClientMonad+ pm+ (Proxy :: Proxy (QueryParam' '[Required, Strict] (Eval (mod sym)) a :> api))+ f+ (cl . M1 . K1)+ x+ {-# INLINE gHoistClientMonad #-}