servant-docs 0.11.1 → 0.11.2
raw patch · 4 files changed
+59/−30 lines, 4 filesdep ~aesondep ~aeson-prettydep ~basePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: aeson, aeson-pretty, base, base-compat, bytestring, case-insensitive, control-monad-omega, hashable, hspec, http-media, http-types, lens, semigroups, servant, string-conversions, text, unordered-containers
API changes (from Hackage documentation)
- Servant.Docs.Internal: instance (Servant.Docs.Internal.GToSample p, Servant.Docs.Internal.GToSample q) => Servant.Docs.Internal.GToSample (p GHC.Generics.:*: q)
- Servant.Docs.Internal: instance (Servant.Docs.Internal.GToSample p, Servant.Docs.Internal.GToSample q) => Servant.Docs.Internal.GToSample (p GHC.Generics.:+: q)
- Servant.Docs.Internal: instance Servant.Docs.Internal.GToSample f => Servant.Docs.Internal.GToSample (GHC.Generics.M1 i a f)
- Servant.Docs.Internal: instance forall k (api :: k). Servant.Docs.Internal.HasDocs api => Servant.Docs.Internal.HasDocs (Data.Vault.Lazy.Vault Servant.API.Sub.:> api)
- Servant.Docs.Internal: instance forall k (api :: k). Servant.Docs.Internal.HasDocs api => Servant.Docs.Internal.HasDocs (Network.HTTP.Types.Version.HttpVersion Servant.API.Sub.:> api)
- Servant.Docs.Internal: instance forall k (api :: k). Servant.Docs.Internal.HasDocs api => Servant.Docs.Internal.HasDocs (Servant.API.IsSecure.IsSecure Servant.API.Sub.:> api)
- Servant.Docs.Internal: instance forall k (api :: k). Servant.Docs.Internal.HasDocs api => Servant.Docs.Internal.HasDocs (Servant.API.RemoteHost.RemoteHost Servant.API.Sub.:> api)
- Servant.Docs.Internal: instance forall k (desc :: GHC.Types.Symbol) (api :: k). (GHC.TypeLits.KnownSymbol desc, Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.Description.Description desc Servant.API.Sub.:> api)
- Servant.Docs.Internal: instance forall k (desc :: GHC.Types.Symbol) (api :: k). (GHC.TypeLits.KnownSymbol desc, Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.Description.Summary desc Servant.API.Sub.:> api)
- Servant.Docs.Internal: instance forall k (path :: GHC.Types.Symbol) (api :: k). (GHC.TypeLits.KnownSymbol path, Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (path Servant.API.Sub.:> api)
- Servant.Docs.Internal: instance forall k (realm :: GHC.Types.Symbol) usr (api :: k). (Servant.Docs.Internal.ToAuthInfo (Servant.API.BasicAuth.BasicAuth realm usr), Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.BasicAuth.BasicAuth realm usr Servant.API.Sub.:> api)
- Servant.Docs.Internal: instance forall k (sym :: GHC.Types.Symbol) (api :: k) a. (GHC.TypeLits.KnownSymbol sym, Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.Header.Header sym a Servant.API.Sub.:> api)
- Servant.Docs.Internal: instance forall k (sym :: GHC.Types.Symbol) (api :: k). (GHC.TypeLits.KnownSymbol sym, Servant.Docs.Internal.ToParam (Servant.API.QueryParam.QueryFlag sym), Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.QueryParam.QueryFlag sym Servant.API.Sub.:> api)
- Servant.Docs.Internal: instance forall k a ct (cts :: [GHC.Types.*]) (api :: k). (Servant.Docs.Internal.ToSample a, Servant.API.ContentTypes.AllMimeRender (ct : cts) a, Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.ReqBody.ReqBody (ct : cts) a Servant.API.Sub.:> api)
- Servant.Docs.Internal: instance forall k k1 (sym :: GHC.Types.Symbol) (a :: k1) (api :: k). (GHC.TypeLits.KnownSymbol sym, Servant.Docs.Internal.ToCapture (Servant.API.Capture.Capture sym a), Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.Capture.Capture sym a Servant.API.Sub.:> api)
- Servant.Docs.Internal: instance forall k k1 (sym :: GHC.Types.Symbol) (a :: k1) (api :: k). (GHC.TypeLits.KnownSymbol sym, Servant.Docs.Internal.ToParam (Servant.API.QueryParam.QueryParam sym a), Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.QueryParam.QueryParam sym a Servant.API.Sub.:> api)
- Servant.Docs.Internal: instance forall k k1 (sym :: GHC.Types.Symbol) (a :: k1) (api :: k). (GHC.TypeLits.KnownSymbol sym, Servant.Docs.Internal.ToParam (Servant.API.QueryParam.QueryParams sym a), Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.QueryParam.QueryParams sym a Servant.API.Sub.:> api)
- Servant.Docs.Internal: instance forall k k1 (sym :: GHC.Types.Symbol) (a :: k1) (sublayout :: k). (GHC.TypeLits.KnownSymbol sym, Servant.Docs.Internal.ToCapture (Servant.API.Capture.CaptureAll sym a), Servant.Docs.Internal.HasDocs sublayout) => Servant.Docs.Internal.HasDocs (Servant.API.Capture.CaptureAll sym a Servant.API.Sub.:> sublayout)
- Servant.Docs.Internal: instance forall k1 a ct (cts :: [GHC.Types.*]) (status :: GHC.Types.Nat) (method :: k1) (ls :: [*]). (Servant.Docs.Internal.ToSample a, Servant.API.ContentTypes.AllMimeRender (ct : cts) a, GHC.TypeLits.KnownNat status, Servant.API.Verbs.ReflectMethod method, Servant.Docs.Internal.AllHeaderSamples ls, Servant.API.ResponseHeaders.GetHeaders (Servant.API.ResponseHeaders.HList ls)) => Servant.Docs.Internal.HasDocs (Servant.API.Verbs.Verb method status (ct : cts) (Servant.API.ResponseHeaders.Headers ls a))
- Servant.Docs.Internal: instance forall k1 a ct (cts :: [GHC.Types.*]) (status :: GHC.Types.Nat) (method :: k1). (Servant.Docs.Internal.ToSample a, Servant.API.ContentTypes.AllMimeRender (ct : cts) a, GHC.TypeLits.KnownNat status, Servant.API.Verbs.ReflectMethod method) => Servant.Docs.Internal.HasDocs (Servant.API.Verbs.Verb method status (ct : cts) a)
+ Servant.Docs.Internal: instance (GHC.TypeLits.KnownSymbol desc, Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.Description.Description desc Servant.API.Sub.:> api)
+ Servant.Docs.Internal: instance (GHC.TypeLits.KnownSymbol desc, Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.Description.Summary desc Servant.API.Sub.:> api)
+ Servant.Docs.Internal: instance (GHC.TypeLits.KnownSymbol path, Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (path Servant.API.Sub.:> api)
+ Servant.Docs.Internal: instance (GHC.TypeLits.KnownSymbol sym, Servant.Docs.Internal.ToCapture (Servant.API.Capture.Capture sym a), Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.Capture.Capture' mods sym a Servant.API.Sub.:> api)
+ Servant.Docs.Internal: instance (GHC.TypeLits.KnownSymbol sym, Servant.Docs.Internal.ToCapture (Servant.API.Capture.CaptureAll sym a), Servant.Docs.Internal.HasDocs sublayout) => Servant.Docs.Internal.HasDocs (Servant.API.Capture.CaptureAll sym a Servant.API.Sub.:> sublayout)
+ Servant.Docs.Internal: instance (GHC.TypeLits.KnownSymbol sym, Servant.Docs.Internal.ToParam (Servant.API.QueryParam.QueryFlag sym), Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.QueryParam.QueryFlag sym Servant.API.Sub.:> api)
+ Servant.Docs.Internal: instance (GHC.TypeLits.KnownSymbol sym, Servant.Docs.Internal.ToParam (Servant.API.QueryParam.QueryParam' mods sym a), Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.QueryParam.QueryParam' mods sym a Servant.API.Sub.:> api)
+ Servant.Docs.Internal: instance (GHC.TypeLits.KnownSymbol sym, Servant.Docs.Internal.ToParam (Servant.API.QueryParam.QueryParams sym a), Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.QueryParam.QueryParams sym a Servant.API.Sub.:> api)
+ Servant.Docs.Internal: instance (Servant.Docs.Internal.ToAuthInfo (Servant.API.BasicAuth.BasicAuth realm usr), Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.BasicAuth.BasicAuth realm usr Servant.API.Sub.:> api)
+ Servant.Docs.Internal: instance (Servant.Docs.Internal.ToSample a, Servant.API.ContentTypes.AllMimeRender (ct : cts) a, Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.ReqBody.ReqBody' mods (ct : cts) a Servant.API.Sub.:> api)
+ Servant.Docs.Internal: instance Servant.Docs.Internal.HasDocs api => Servant.Docs.Internal.HasDocs (Data.Vault.Lazy.Vault Servant.API.Sub.:> api)
+ Servant.Docs.Internal: instance Servant.Docs.Internal.HasDocs api => Servant.Docs.Internal.HasDocs (Network.HTTP.Types.Version.HttpVersion Servant.API.Sub.:> api)
+ Servant.Docs.Internal: instance Servant.Docs.Internal.HasDocs api => Servant.Docs.Internal.HasDocs (Servant.API.IsSecure.IsSecure Servant.API.Sub.:> api)
+ Servant.Docs.Internal: instance Servant.Docs.Internal.HasDocs api => Servant.Docs.Internal.HasDocs (Servant.API.RemoteHost.RemoteHost Servant.API.Sub.:> api)
+ Servant.Docs.Internal: instance forall k (f :: k -> *) i (a :: GHC.Generics.Meta). Servant.Docs.Internal.GToSample f => Servant.Docs.Internal.GToSample (GHC.Generics.M1 i a f)
+ Servant.Docs.Internal: instance forall k (p :: k -> *) (q :: k -> *). (Servant.Docs.Internal.GToSample p, Servant.Docs.Internal.GToSample q) => Servant.Docs.Internal.GToSample (p GHC.Generics.:*: q)
+ Servant.Docs.Internal: instance forall k (p :: k -> *) (q :: k -> *). (Servant.Docs.Internal.GToSample p, Servant.Docs.Internal.GToSample q) => Servant.Docs.Internal.GToSample (p GHC.Generics.:+: q)
+ Servant.Docs.Internal: instance forall k (sym :: GHC.Types.Symbol) api (mods :: [*]) (a :: k). (GHC.TypeLits.KnownSymbol sym, Servant.Docs.Internal.HasDocs api) => Servant.Docs.Internal.HasDocs (Servant.API.Header.Header' mods sym a Servant.API.Sub.:> api)
+ Servant.Docs.Internal: instance forall k1 a ct (cts :: [*]) (status :: GHC.Types.Nat) (method :: k1) (ls :: [*]). (Servant.Docs.Internal.ToSample a, Servant.API.ContentTypes.AllMimeRender (ct : cts) a, GHC.TypeNats.KnownNat status, Servant.API.Verbs.ReflectMethod method, Servant.Docs.Internal.AllHeaderSamples ls, Servant.API.ResponseHeaders.GetHeaders (Servant.API.ResponseHeaders.HList ls)) => Servant.Docs.Internal.HasDocs (Servant.API.Verbs.Verb method status (ct : cts) (Servant.API.ResponseHeaders.Headers ls a))
+ Servant.Docs.Internal: instance forall k1 a ct (cts :: [*]) (status :: GHC.Types.Nat) (method :: k1). (Servant.Docs.Internal.ToSample a, Servant.API.ContentTypes.AllMimeRender (ct : cts) a, GHC.TypeNats.KnownNat status, Servant.API.Verbs.ReflectMethod method) => Servant.Docs.Internal.HasDocs (Servant.API.Verbs.Verb method status (ct : cts) a)
- Servant.Docs: class ToSample a where toSamples = defaultSamples
+ Servant.Docs: class ToSample a
- Servant.Docs.Internal: class ToSample a where toSamples = defaultSamples
+ Servant.Docs.Internal: class ToSample a
Files
- CHANGELOG.md +7/−0
- servant-docs.cabal +42/−22
- src/Servant/Docs/Internal.hs +7/−7
- test/Servant/DocsSpec.hs +3/−1
CHANGELOG.md view
@@ -1,6 +1,13 @@ [The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-docs/CHANGELOG.md) [Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md) +0.11.2+------++* Allow `servant-0.13`:+ - Doesn't have instances for streaming.+ - Servant.API.Modifiers extra information isn't used.+ 0.11.1 ------
servant-docs.cabal view
@@ -1,5 +1,5 @@ name: servant-docs-version: 0.11.1+version: 0.11.2 synopsis: generate API docs for your servant webservice description: Library for generating API docs from a servant API definition.@@ -19,7 +19,7 @@ GHC==7.8.4 GHC==7.10.3 GHC==8.0.2- GHC==8.2.1+ GHC==8.2.2 homepage: http://haskell-servant.readthedocs.org/ Bug-reports: http://github.com/haskell-servant/servant/issues extra-source-files:@@ -35,25 +35,39 @@ Servant.Docs , Servant.Docs.Internal , Servant.Docs.Internal.Pretty++ -- Bundled with GHC: Lower bound to not force re-installs+ -- text and mtl are bundled starting with GHC-8.4+ --+ -- note: mtl lower bound is so low because of GHC-7.8 build-depends:- base >=4.7 && <5- , base-compat >= 0.9.1 && <0.10- , aeson- , aeson-pretty- , bytestring- , case-insensitive- , hashable- , http-media >= 0.6- , http-types >= 0.7- , lens- , servant == 0.12.*- , string-conversions- , text- , unordered-containers- , control-monad-omega == 0.3.*+ base >= 4.7 && < 4.11+ , bytestring >= 0.10.4.0 && < 0.11+ , text >= 1.2.3.0 && < 1.3+ if !impl(ghc >= 8.0) build-depends:- semigroups >=0.17 && <0.19+ semigroups >=0.18.3 && <0.19++ -- Servant dependencies+ build-depends:+ servant == 0.13.*++ -- Other dependencies: Lower bound around what is in the latest Stackage LTS.+ -- Here can be exceptions if we really need features from the newer versions.+ build-depends:+ aeson >= 1.2.3.0 && < 1.3+ , aeson-pretty >= 0.8.5 && < 0.9+ , base-compat >= 0.9.3 && < 0.10+ , case-insensitive >= 1.2.0.10 && < 1.3+ , control-monad-omega >= 0.3.1 && < 0.4+ , hashable >= 1.2.6.1 && < 1.3+ , http-media >= 0.7.1.1 && < 0.8+ , http-types >= 0.12 && < 0.13+ , lens >= 4.15.4 && < 4.17+ , string-conversions >= 0.4.0.1 && < 0.5+ , unordered-containers >= 0.2.8.0 && < 0.3+ hs-source-dirs: src default-language: Haskell2010 ghc-options: -Wall@@ -76,19 +90,25 @@ default-language: Haskell2010 test-suite spec+ default-language: Haskell2010 type: exitcode-stdio-1.0 main-is: Spec.hs other-modules: Servant.DocsSpec- build-tool-depends:- hspec-discover:hspec-discover hs-source-dirs: test ghc-options: -Wall++ -- Dependencies inherited from the library. No need to specify bounds. build-depends: base , aeson- , hspec , lens , servant , servant-docs , string-conversions- default-language: Haskell2010++ -- Additonal dependencies+ build-depends:+ hspec >= 2.4.4 && < 2.5++ build-tool-depends:+ hspec-discover:hspec-discover >=2.4.4 && <2.5
src/Servant/Docs/Internal.hs view
@@ -534,7 +534,7 @@ -- -- Example of an instance: ----- > instance ToParam (QueryParam "capital" Bool) where+-- > instance ToParam (QueryParam' mods "capital" Bool) where -- > toParam _ = -- > DocQueryParam "capital" -- > ["true", "false"]@@ -795,7 +795,7 @@ -- | @"books" :> 'Capture' "isbn" Text@ will appear as -- @/books/:isbn@ in the docs. instance (KnownSymbol sym, ToCapture (Capture sym a), HasDocs api)- => HasDocs (Capture sym a :> api) where+ => HasDocs (Capture' mods sym a :> api) where docsFor Proxy (endpoint, action) = docsFor subApiP (endpoint', action')@@ -859,7 +859,7 @@ p = Proxy :: Proxy a instance (KnownSymbol sym, HasDocs api)- => HasDocs (Header sym a :> api) where+ => HasDocs (Header' mods sym a :> api) where docsFor Proxy (endpoint, action) = docsFor subApiP (endpoint, action') @@ -867,14 +867,14 @@ action' = over headers (|> headername) action headername = T.pack $ symbolVal (Proxy :: Proxy sym) -instance (KnownSymbol sym, ToParam (QueryParam sym a), HasDocs api)- => HasDocs (QueryParam sym a :> api) where+instance (KnownSymbol sym, ToParam (QueryParam' mods sym a), HasDocs api)+ => HasDocs (QueryParam' mods sym a :> api) where docsFor Proxy (endpoint, action) = docsFor subApiP (endpoint, action') where subApiP = Proxy :: Proxy api- paramP = Proxy :: Proxy (QueryParam sym a)+ paramP = Proxy :: Proxy (QueryParam' mods sym a) action' = over params (|> toParam paramP) action instance (KnownSymbol sym, ToParam (QueryParams sym a), HasDocs api)@@ -929,7 +929,7 @@ -- 'AllMimeUnrender' and 'AllMimeRender' actually agree (or to suppose that -- both are even defined) for any particular type. instance (ToSample a, AllMimeRender (ct ': cts) a, HasDocs api)- => HasDocs (ReqBody (ct ': cts) a :> api) where+ => HasDocs (ReqBody' mods (ct ': cts) a :> api) where docsFor Proxy (endpoint, action) opts@DocOptions{..} = docsFor subApiP (endpoint, action') opts
test/Servant/DocsSpec.hs view
@@ -33,7 +33,9 @@ -- This declaration simply checks that all instances are in place. _ = docs comprehensiveAPI -instance ToParam (QueryParam "foo" Int) where+instance ToParam (QueryParam' mods "foo" Int) where+ toParam = error "unused"+instance ToParam (QueryParam' mods "bar" Int) where toParam = error "unused" instance ToParam (QueryParams "foo" Int) where toParam = error "unused"