Merge pull request #1268 from haskell-servant/version-0.17
Bump version to 0.17
This commit is contained in:
commit
74aa1d52ec
39 changed files with 441 additions and 254 deletions
58
.travis.yml
58
.travis.yml
|
@ -4,7 +4,7 @@
|
|||
#
|
||||
# For more information, see https://github.com/haskell-CI/haskell-ci
|
||||
#
|
||||
# version: 0.9.20200110
|
||||
# version: 0.9.20200121
|
||||
#
|
||||
version: ~> 1.0
|
||||
language: c
|
||||
|
@ -75,39 +75,31 @@ before_install:
|
|||
- echo $HCNUMVER
|
||||
- CABAL="$CABAL -vnormal+nowrap"
|
||||
- set -o pipefail
|
||||
install:
|
||||
- ${CABAL} --version
|
||||
- echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
|
||||
- node --version
|
||||
- echo $GHCJS
|
||||
- TEST=--enable-tests
|
||||
- BENCH=--enable-benchmarks
|
||||
- HEADHACKAGE=false
|
||||
- rm -f $CABALHOME/config
|
||||
- |
|
||||
echo "verbose: normal +nowrap +markoutput" >> $CABALHOME/config
|
||||
echo "remote-build-reporting: anonymous" >> $CABALHOME/config
|
||||
echo "write-ghc-environment-files: always" >> $CABALHOME/config
|
||||
echo "remote-repo-cache: $CABALHOME/packages" >> $CABALHOME/config
|
||||
echo "logs-dir: $CABALHOME/logs" >> $CABALHOME/config
|
||||
echo "world-file: $CABALHOME/world" >> $CABALHOME/config
|
||||
echo "extra-prog-path: $CABALHOME/bin" >> $CABALHOME/config
|
||||
echo "symlink-bindir: $CABALHOME/bin" >> $CABALHOME/config
|
||||
echo "installdir: $CABALHOME/bin" >> $CABALHOME/config
|
||||
echo "build-summary: $CABALHOME/logs/build.log" >> $CABALHOME/config
|
||||
echo "store-dir: $CABALHOME/store" >> $CABALHOME/config
|
||||
echo "install-dirs user" >> $CABALHOME/config
|
||||
echo " prefix: $CABALHOME" >> $CABALHOME/config
|
||||
echo "repository hackage.haskell.org" >> $CABALHOME/config
|
||||
echo " url: http://hackage.haskell.org/" >> $CABALHOME/config
|
||||
echo " secure: True" >> $CABALHOME/config
|
||||
echo " key-threshold: 3" >> $CABALHOME/config
|
||||
echo " root-keys:" >> $CABALHOME/config
|
||||
echo " fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0" >> $CABALHOME/config
|
||||
echo " 1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42" >> $CABALHOME/config
|
||||
echo " 2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3" >> $CABALHOME/config
|
||||
echo " 0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d" >> $CABALHOME/config
|
||||
echo " 51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921" >> $CABALHOME/config
|
||||
echo "verbose: normal +nowrap +markoutput" >> $CABALHOME/config
|
||||
echo "remote-build-reporting: anonymous" >> $CABALHOME/config
|
||||
echo "write-ghc-environment-files: always" >> $CABALHOME/config
|
||||
echo "remote-repo-cache: $CABALHOME/packages" >> $CABALHOME/config
|
||||
echo "logs-dir: $CABALHOME/logs" >> $CABALHOME/config
|
||||
echo "world-file: $CABALHOME/world" >> $CABALHOME/config
|
||||
echo "extra-prog-path: $CABALHOME/bin" >> $CABALHOME/config
|
||||
echo "symlink-bindir: $CABALHOME/bin" >> $CABALHOME/config
|
||||
echo "installdir: $CABALHOME/bin" >> $CABALHOME/config
|
||||
echo "build-summary: $CABALHOME/logs/build.log" >> $CABALHOME/config
|
||||
echo "store-dir: $CABALHOME/store" >> $CABALHOME/config
|
||||
echo "install-dirs user" >> $CABALHOME/config
|
||||
echo " prefix: $CABALHOME" >> $CABALHOME/config
|
||||
echo "repository hackage.haskell.org" >> $CABALHOME/config
|
||||
echo " url: http://hackage.haskell.org/" >> $CABALHOME/config
|
||||
install:
|
||||
- ${CABAL} --version
|
||||
- echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
|
||||
- node --version
|
||||
- echo $GHCJS
|
||||
- GHCJOBS=-j2
|
||||
- |
|
||||
echo "program-default-options" >> $CABALHOME/config
|
||||
|
@ -157,6 +149,9 @@ install:
|
|||
echo "allow-newer: io-streams-1.5.1.0:network" >> cabal.project
|
||||
echo "allow-newer: io-streams-1.5.1.0:primitive" >> cabal.project
|
||||
echo "allow-newer: openssl-streams-1.2.2.0:network" >> cabal.project
|
||||
echo "allow-newer: servant" >> cabal.project
|
||||
echo "allow-newer: servant-server" >> cabal.project
|
||||
echo "allow-newer: servant-client" >> cabal.project
|
||||
echo "optimization: False" >> cabal.project
|
||||
- "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(cookbook-basic-auth|cookbook-basic-streaming|cookbook-curl-mock|cookbook-db-postgres-pool|cookbook-file-upload|cookbook-generic|cookbook-pagination|cookbook-structuring-apis|cookbook-testing|cookbook-using-custom-monad|cookbook-using-free-client|servant|servant-client|servant-client-core|servant-conduit|servant-docs|servant-foreign|servant-http-streams|servant-machines|servant-pipes|servant-server|tutorial)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
|
||||
- cat cabal.project || true
|
||||
|
@ -259,6 +254,9 @@ script:
|
|||
echo "allow-newer: io-streams-1.5.1.0:network" >> cabal.project
|
||||
echo "allow-newer: io-streams-1.5.1.0:primitive" >> cabal.project
|
||||
echo "allow-newer: openssl-streams-1.2.2.0:network" >> cabal.project
|
||||
echo "allow-newer: servant" >> cabal.project
|
||||
echo "allow-newer: servant-server" >> cabal.project
|
||||
echo "allow-newer: servant-client" >> cabal.project
|
||||
echo "optimization: False" >> cabal.project
|
||||
- "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(cookbook-basic-auth|cookbook-basic-streaming|cookbook-curl-mock|cookbook-db-postgres-pool|cookbook-file-upload|cookbook-generic|cookbook-pagination|cookbook-structuring-apis|cookbook-testing|cookbook-using-custom-monad|cookbook-using-free-client|servant|servant-client|servant-client-core|servant-conduit|servant-docs|servant-foreign|servant-http-streams|servant-machines|servant-pipes|servant-server|tutorial)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
|
||||
- cat cabal.project || true
|
||||
|
@ -318,5 +316,5 @@ script:
|
|||
- if ! $GHCJS ; then ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} all ; fi
|
||||
- echo -en 'travis_fold:end:haddock\\r'
|
||||
|
||||
# REGENDATA ("0.9.20200110",["--config=cabal.haskell-ci","--output=.travis.yml","cabal.project"])
|
||||
# REGENDATA ("0.9.20200121",["--config=cabal.haskell-ci","--output=.travis.yml","cabal.project"])
|
||||
# EOF
|
||||
|
|
|
@ -65,3 +65,8 @@ constraints: base-compat ^>=0.11
|
|||
|
||||
-- needed for doctests
|
||||
write-ghc-environment-files: always
|
||||
|
||||
-- servant-0.17
|
||||
allow-newer: servant
|
||||
allow-newer: servant-server
|
||||
allow-newer: servant-client
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
synopsis: Add NoContentVerb
|
||||
prs: #1228 #1219
|
||||
issues: #1028
|
||||
significance: significant
|
||||
|
||||
description: {
|
||||
|
||||
The `NoContent` API endpoints should now use `NoContentVerb` combinator.
|
||||
The API type changes are usually of the kind
|
||||
|
||||
```diff
|
||||
- :<|> PostNoContent '[JSON] NoContent
|
||||
+ :<|> PostNoContent
|
||||
```
|
||||
|
||||
i.e. one doesn't need to specify the content-type anymore. There is no content.
|
||||
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
synopsis: Fix Verb with headers checking content type differently
|
||||
packages: servant-client-core servant-client
|
||||
prs: #1204
|
||||
issues: #1200
|
||||
packages: servant-client servant-client-core servant-http-streams
|
||||
|
||||
description: {
|
||||
|
||||
For `Verb`s with response `Headers`, the implementation didn't check
|
||||
for the content-type of the response. Now it does.
|
||||
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
synopsis: Merge documentation from duplicate routes
|
||||
packages: servant-docs
|
||||
prs: #1241
|
||||
issues: #1240
|
||||
|
||||
description: {
|
||||
|
||||
Servant supports defining the same route multiple times with different
|
||||
content-types and result-types, but servant-docs was only documenting
|
||||
the first of copy of such duplicated routes. It now combines the
|
||||
documentation from all the copies.
|
||||
|
||||
Unfortunately, it is not yet possible for the documentation to specify
|
||||
multiple status codes.
|
||||
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
synopsis: Progress on servant-jsaddle
|
||||
packages: servant-jsaddle
|
||||
prs: #1216
|
|
@ -1,17 +0,0 @@
|
|||
synopsis: `Capture` can be `Lenient`
|
||||
issues: #1155
|
||||
prs: #1156
|
||||
significance: significant
|
||||
description: {
|
||||
|
||||
You can specify a lenient capture as
|
||||
|
||||
```haskell
|
||||
:<|> "capture-lenient" :> Capture' '[Lenient] "foo" Int :> GET
|
||||
```
|
||||
|
||||
which will make the capture always succeed. Handlers will be of the
|
||||
type `Either String CapturedType`, where `Left err` represents
|
||||
the possible parse failure.
|
||||
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
synopsis: Add sponsorship button
|
||||
prs: #1190
|
||||
description: {
|
||||
|
||||
[Well-Typed](https://www.well-typed.com/)
|
||||
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
synopsis: Prevent race-conditions in testing
|
||||
packages: servant-docs
|
||||
prs: #1194
|
|
@ -1,4 +0,0 @@
|
|||
synopsis: `HasClient` instance for `Stream` with `Headers`
|
||||
packages: servant-client servant-client servant-http-streams
|
||||
prs: #1197
|
||||
issues: #1170
|
|
@ -1,3 +0,0 @@
|
|||
synopsis: Remove unused extensions from cabal file
|
||||
packages: servant
|
||||
prs: #1201
|
|
@ -1,12 +0,0 @@
|
|||
synopsis: Added a function to create Client.Request in ClientEnv
|
||||
packages: servant-client
|
||||
significance: significant
|
||||
prs: #1213 #1255
|
||||
description: {
|
||||
|
||||
The new member `makeClientRequest` of `ClientEnv` is used to create
|
||||
`http-client` `Request` from `servant-client-core` `Request`.
|
||||
This functionality can be used for example to set
|
||||
dynamic timeouts for each request.
|
||||
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
synopsis: Redact the authorization header in Show and exceptions
|
||||
packages: servant-client
|
||||
prs: #1238
|
|
@ -1,15 +0,0 @@
|
|||
synopsis: use queryString to parse QueryParam, QueryParams and QueryFlag
|
||||
packages: servant-server
|
||||
prs: #1249 #1262
|
||||
significance: significant
|
||||
description: {
|
||||
|
||||
Some APIs need query parameters rewriting, e.g. in order to support
|
||||
for multiple casing (camel, snake, etc) or something to that effect.
|
||||
|
||||
This could be easily achieved by using WAI Middleware and modyfing
|
||||
request's `Query`. But QueryParam, QueryParams and QueryFlag use
|
||||
`rawQueryString`. By using `queryString` rather then `rawQueryString`
|
||||
we can enable such rewritings.
|
||||
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
synopsis: Make packages `build-type: Simple`
|
||||
packages: servant servant-server
|
||||
prs: #1263
|
||||
significance: significant
|
||||
description: {
|
||||
|
||||
We used `build-type: Custom`, but it's problematic e.g.
|
||||
for cross-compiling. The benefit is small, as the doctests
|
||||
can be run other ways too (though not so conviniently).
|
||||
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
synopsis: Try changelog-d for changelog management
|
||||
prs: #1230
|
||||
|
||||
description: {
|
||||
|
||||
Check the [CONTRIBUTING.md](https://github.com/haskell-servant/servant/blob/master/CONTRIBUTING.md) for details
|
||||
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
synopsis: CI and testing tweaks.
|
||||
prs:
|
||||
#1154
|
||||
#1157
|
||||
#1182
|
||||
#1214
|
||||
#1229
|
||||
#1233
|
||||
#1242
|
||||
#1247
|
||||
#1250
|
||||
#1258
|
||||
|
||||
description: {
|
||||
|
||||
We are experiencing some bitrotting of cookbook recipe dependencies,
|
||||
therefore some of them aren't build as part of our CI anymore.
|
||||
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
synopsis: New cookbook recipes
|
||||
prs: #1171 #1088 #1198
|
||||
|
||||
description: {
|
||||
|
||||
- [OIDC Recipe](#TODO)
|
||||
- [MySQL Recipe](#TODO)
|
||||
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
synopsis: Dependency upgrades
|
||||
prs:
|
||||
#1173
|
||||
#1181
|
||||
#1183
|
||||
#1188
|
||||
#1224
|
||||
#1245
|
||||
#1257
|
|
@ -1,8 +0,0 @@
|
|||
synopsis: Documentation updates
|
||||
prs:
|
||||
#1162
|
||||
#1174
|
||||
#1175
|
||||
#1234
|
||||
#1244
|
||||
#1247
|
|
@ -1,6 +1,45 @@
|
|||
[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-client-core/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.17
|
||||
----
|
||||
|
||||
### Significant changes
|
||||
|
||||
- Add NoContentVerb [#1028](https://github.com/haskell-servant/servant/issues/1028) [#1219](https://github.com/haskell-servant/servant/pull/1219) [#1228](https://github.com/haskell-servant/servant/pull/1228)
|
||||
|
||||
The `NoContent` API endpoints should now use `NoContentVerb` combinator.
|
||||
The API type changes are usually of the kind
|
||||
|
||||
```diff
|
||||
- :<|> PostNoContent '[JSON] NoContent
|
||||
+ :<|> PostNoContent
|
||||
```
|
||||
|
||||
i.e. one doesn't need to specify the content-type anymore. There is no content.
|
||||
|
||||
- `Capture` can be `Lenient` [#1155](https://github.com/haskell-servant/servant/issues/1155) [#1156](https://github.com/haskell-servant/servant/pull/1156)
|
||||
|
||||
You can specify a lenient capture as
|
||||
|
||||
```haskell
|
||||
:<|> "capture-lenient" :> Capture' '[Lenient] "foo" Int :> GET
|
||||
```
|
||||
|
||||
which will make the capture always succeed. Handlers will be of the
|
||||
type `Either String CapturedType`, where `Left err` represents
|
||||
the possible parse failure.
|
||||
|
||||
### Other changes
|
||||
|
||||
- *servant-client* *servant-client-core* *servant-http-streams* Fix Verb with headers checking content type differently [#1200](https://github.com/haskell-servant/servant/issues/1200) [#1204](https://github.com/haskell-servant/servant/pull/1204)
|
||||
|
||||
For `Verb`s with response `Headers`, the implementation didn't check
|
||||
for the content-type of the response. Now it does.
|
||||
|
||||
- *servant-client* *servant-http-streams* `HasClient` instance for `Stream` with `Headers` [#1170](https://github.com/haskell-servant/servant/issues/1170) [#1197](https://github.com/haskell-servant/servant/pull/1197)
|
||||
- *servant-client* Redact the authorization header in Show and exceptions [#1238](https://github.com/haskell-servant/servant/pull/1238)
|
||||
|
||||
0.16
|
||||
----
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
cabal-version: >=1.10
|
||||
name: servant-client-core
|
||||
version: 0.16
|
||||
version: 0.17
|
||||
|
||||
synopsis: Core functionality and class for client function generation for servant APIs
|
||||
category: Servant, Web
|
||||
|
@ -69,7 +69,7 @@ library
|
|||
|
||||
-- Servant dependencies
|
||||
build-depends:
|
||||
servant >= 0.16 && <0.17
|
||||
servant >= 0.17 && <0.18
|
||||
|
||||
-- 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.
|
||||
|
|
|
@ -1,6 +1,54 @@
|
|||
[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-client/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.17
|
||||
----
|
||||
|
||||
### Significant changes
|
||||
|
||||
- Add NoContentVerb [#1028](https://github.com/haskell-servant/servant/issues/1028) [#1219](https://github.com/haskell-servant/servant/pull/1219) [#1228](https://github.com/haskell-servant/servant/pull/1228)
|
||||
|
||||
The `NoContent` API endpoints should now use `NoContentVerb` combinator.
|
||||
The API type changes are usually of the kind
|
||||
|
||||
```diff
|
||||
- :<|> PostNoContent '[JSON] NoContent
|
||||
+ :<|> PostNoContent
|
||||
```
|
||||
|
||||
i.e. one doesn't need to specify the content-type anymore. There is no content.
|
||||
|
||||
- `Capture` can be `Lenient` [#1155](https://github.com/haskell-servant/servant/issues/1155) [#1156](https://github.com/haskell-servant/servant/pull/1156)
|
||||
|
||||
You can specify a lenient capture as
|
||||
|
||||
```haskell
|
||||
:<|> "capture-lenient" :> Capture' '[Lenient] "foo" Int :> GET
|
||||
```
|
||||
|
||||
which will make the capture always succeed. Handlers will be of the
|
||||
type `Either String CapturedType`, where `Left err` represents
|
||||
the possible parse failure.
|
||||
|
||||
- *servant-client* Added a function to create Client.Request in ClientEnv [#1213](https://github.com/haskell-servant/servant/pull/1213) [#1255](https://github.com/haskell-servant/servant/pull/1255)
|
||||
|
||||
The new member `makeClientRequest` of `ClientEnv` is used to create
|
||||
`http-client` `Request` from `servant-client-core` `Request`.
|
||||
This functionality can be used for example to set
|
||||
dynamic timeouts for each request.
|
||||
|
||||
### Other changes
|
||||
|
||||
- *servant-client* *servant-client-core* *servant-http-streams* Fix Verb with headers checking content type differently [#1200](https://github.com/haskell-servant/servant/issues/1200) [#1204](https://github.com/haskell-servant/servant/pull/1204)
|
||||
|
||||
For `Verb`s with response `Headers`, the implementation didn't check
|
||||
for the content-type of the response. Now it does.
|
||||
|
||||
- *servant-client* *servant-http-streams* `HasClient` instance for `Stream` with `Headers` [#1170](https://github.com/haskell-servant/servant/issues/1170) [#1197](https://github.com/haskell-servant/servant/pull/1197)
|
||||
- *servant-client* Redact the authorization header in Show and exceptions [#1238](https://github.com/haskell-servant/servant/pull/1238)
|
||||
|
||||
|
||||
|
||||
0.16.0.1
|
||||
--------
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
cabal-version: >=1.10
|
||||
name: servant-client
|
||||
version: 0.16.0.1
|
||||
version: 0.17
|
||||
|
||||
synopsis: Automatic derivation of querying functions for servant
|
||||
category: Servant, Web
|
||||
|
@ -62,8 +62,8 @@ library
|
|||
-- Servant dependencies.
|
||||
-- Strict dependency on `servant-client-core` as we re-export things.
|
||||
build-depends:
|
||||
servant == 0.16.*
|
||||
, servant-client-core >= 0.16 && <0.16.1
|
||||
servant == 0.17.*
|
||||
, servant-client-core >= 0.17 && <0.17.1
|
||||
|
||||
-- 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.
|
||||
|
@ -127,8 +127,8 @@ test-suite spec
|
|||
, HUnit >= 1.6.0.0 && < 1.7
|
||||
, network >= 2.8.0.0 && < 3.2
|
||||
, QuickCheck >= 2.12.6.1 && < 2.14
|
||||
, servant == 0.16.*
|
||||
, servant-server == 0.16.*
|
||||
, servant == 0.17.*
|
||||
, servant-server == 0.17.*
|
||||
, tdigest >= 0.2 && < 0.3
|
||||
|
||||
build-tool-depends:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
cabal-version: >=1.10
|
||||
name: servant-conduit
|
||||
version: 0.15
|
||||
x-revision: 1
|
||||
x-revision: 3
|
||||
|
||||
synopsis: Servant Stream support for conduit.
|
||||
category: Servant, Web, Enumerator
|
||||
|
@ -39,7 +39,7 @@ library
|
|||
, conduit >=1.3.1 && <1.4
|
||||
, mtl >=2.2.2 && <2.3
|
||||
, resourcet >=1.2.2 && <1.3
|
||||
, servant >=0.15 && <0.17
|
||||
, servant >=0.15 && <0.18
|
||||
, unliftio-core >=0.1.2.0 && <0.2
|
||||
hs-source-dirs: src
|
||||
default-language: Haskell2010
|
||||
|
@ -60,8 +60,8 @@ test-suite example
|
|||
, resourcet
|
||||
, servant
|
||||
, servant-conduit
|
||||
, servant-server >=0.15 && <0.17
|
||||
, servant-client >=0.15 && <0.17
|
||||
, servant-server >=0.15 && <0.18
|
||||
, servant-client >=0.15 && <0.18
|
||||
, wai >=3.2.1.2 && <3.3
|
||||
, warp >=3.2.25 && <3.4
|
||||
, http-client
|
||||
|
|
|
@ -1,6 +1,46 @@
|
|||
[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.14.2
|
||||
----
|
||||
|
||||
|
||||
- Add NoContentVerb [#1028](https://github.com/haskell-servant/servant/issues/1028) [#1219](https://github.com/haskell-servant/servant/pull/1219) [#1228](https://github.com/haskell-servant/servant/pull/1228)
|
||||
|
||||
The `NoContent` API endpoints should now use `NoContentVerb` combinator.
|
||||
The API type changes are usually of the kind
|
||||
|
||||
```diff
|
||||
- :<|> PostNoContent '[JSON] NoContent
|
||||
+ :<|> PostNoContent
|
||||
```
|
||||
|
||||
i.e. one doesn't need to specify the content-type anymore. There is no content.
|
||||
|
||||
- `Capture` can be `Lenient` [#1155](https://github.com/haskell-servant/servant/issues/1155) [#1156](https://github.com/haskell-servant/servant/pull/1156)
|
||||
|
||||
You can specify a lenient capture as
|
||||
|
||||
```haskell
|
||||
:<|> "capture-lenient" :> Capture' '[Lenient] "foo" Int :> GET
|
||||
```
|
||||
|
||||
which will make the capture always succeed. Handlers will be of the
|
||||
type `Either String CapturedType`, where `Left err` represents
|
||||
the possible parse failure.
|
||||
|
||||
- *servant-docs* Merge documentation from duplicate routes [#1240](https://github.com/haskell-servant/servant/issues/1240) [#1241](https://github.com/haskell-servant/servant/pull/1241)
|
||||
|
||||
Servant supports defining the same route multiple times with different
|
||||
content-types and result-types, but servant-docs was only documenting
|
||||
the first of copy of such duplicated routes. It now combines the
|
||||
documentation from all the copies.
|
||||
|
||||
Unfortunately, it is not yet possible for the documentation to specify
|
||||
multiple status codes.
|
||||
|
||||
- *servant-docs* Prevent race-conditions in testing [#1194](https://github.com/haskell-servant/servant/pull/1194)
|
||||
|
||||
0.11.4
|
||||
------
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
cabal-version: >=1.10
|
||||
name: servant-docs
|
||||
version: 0.11.4
|
||||
version: 0.11.5
|
||||
|
||||
synopsis: generate API docs for your servant webservice
|
||||
category: Servant, Web
|
||||
|
@ -52,7 +52,7 @@ library
|
|||
|
||||
-- Servant dependencies
|
||||
build-depends:
|
||||
servant >= 0.15 && <0.17
|
||||
servant >= 0.17 && <0.18
|
||||
|
||||
-- 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.
|
||||
|
|
|
@ -1,6 +1,69 @@
|
|||
[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-foreign/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.15.1
|
||||
------
|
||||
|
||||
* Support `servant-0.17`
|
||||
|
||||
0.15
|
||||
----
|
||||
|
||||
- *servant-foreign* Add support so `HasForeign` can be implemented for
|
||||
`MultipartForm` from [`servant-multipart`](http://hackage.haskell.org/package/servant-multipart)
|
||||
[#1035](https://github.com/haskell-servant/servant/pull/1035)
|
||||
|
||||
- Drop support for GHC older than 8.0
|
||||
[#1008](https://github.com/haskell-servant/servant/pull/1008)
|
||||
[#1009](https://github.com/haskell-servant/servant/pull/1009)
|
||||
|
||||
|
||||
0.11.1
|
||||
------
|
||||
|
||||
- Add missing `Semigroup` instances
|
||||
|
||||
0.11
|
||||
----
|
||||
|
||||
### Breaking changes
|
||||
|
||||
- *servant* Add `Servant.API.Modifiers`
|
||||
([#873](https://github.com/haskell-servant/servant/pull/873))
|
||||
- Make foreign client Header arguments have the representation of 'Maybe' in those languages
|
||||
([#843](https://github.com/haskell-servant/servant/pull/843))
|
||||
|
||||
0.10.2
|
||||
------
|
||||
|
||||
### Changes
|
||||
|
||||
* Add instances for `Description` and `Summary` combinators
|
||||
([#767](https://github.com/haskell-servant/servant/pull/767))
|
||||
* Derive Data for all types
|
||||
([#809](https://github.com/haskell-servant/servant/pull/809))
|
||||
|
||||
0.10.1
|
||||
------
|
||||
|
||||
### Changes
|
||||
|
||||
* Don't drop samples in `HasDocs ReqBody` instance
|
||||
([#755](https://github.com/haskell-servant/servant/pull/755/files)).
|
||||
*Breaking change in an `Internal` module*.
|
||||
|
||||
0.10
|
||||
----
|
||||
|
||||
### Breaking changes
|
||||
|
||||
* Do not apply JavaScript specific mangling to the names.
|
||||
([#191](https://github.com/haskell-servant/servant/issues/191))
|
||||
|
||||
0.7.1
|
||||
-----
|
||||
|
||||
* Support GHC 8.0
|
||||
0.15
|
||||
----
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
cabal-version: >=1.10
|
||||
name: servant-foreign
|
||||
version: 0.15
|
||||
x-revision: 1
|
||||
version: 0.15.1
|
||||
|
||||
synopsis: Helpers for generating clients for servant APIs in any programming language
|
||||
category: Servant, Web
|
||||
|
@ -52,7 +51,7 @@ library
|
|||
|
||||
-- Servant dependencies
|
||||
build-depends:
|
||||
servant >=0.15 && <0.17
|
||||
servant >=0.17 && <0.18
|
||||
|
||||
-- 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.
|
||||
|
|
|
@ -1,6 +1,47 @@
|
|||
[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-http-streams/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.17
|
||||
----
|
||||
|
||||
### Significant changes
|
||||
|
||||
- Add NoContentVerb [#1028](https://github.com/haskell-servant/servant/issues/1028) [#1219](https://github.com/haskell-servant/servant/pull/1219) [#1228](https://github.com/haskell-servant/servant/pull/1228)
|
||||
|
||||
The `NoContent` API endpoints should now use `NoContentVerb` combinator.
|
||||
The API type changes are usually of the kind
|
||||
|
||||
```diff
|
||||
- :<|> PostNoContent '[JSON] NoContent
|
||||
+ :<|> PostNoContent
|
||||
```
|
||||
|
||||
i.e. one doesn't need to specify the content-type anymore. There is no content.
|
||||
|
||||
- `Capture` can be `Lenient` [#1155](https://github.com/haskell-servant/servant/issues/1155) [#1156](https://github.com/haskell-servant/servant/pull/1156)
|
||||
|
||||
You can specify a lenient capture as
|
||||
|
||||
```haskell
|
||||
:<|> "capture-lenient" :> Capture' '[Lenient] "foo" Int :> GET
|
||||
```
|
||||
|
||||
which will make the capture always succeed. Handlers will be of the
|
||||
type `Either String CapturedType`, where `Left err` represents
|
||||
the possible parse failure.
|
||||
|
||||
### Other changes
|
||||
|
||||
- *servant-client* *servant-client-core* *servant-http-streams* Fix Verb with headers checking content type differently [#1200](https://github.com/haskell-servant/servant/issues/1200) [#1204](https://github.com/haskell-servant/servant/pull/1204)
|
||||
|
||||
For `Verb`s with response `Headers`, the implementation didn't check
|
||||
for the content-type of the response. Now it does.
|
||||
|
||||
- *servant-client* *servant-http-streams* `HasClient` instance for `Stream` with `Headers` [#1170](https://github.com/haskell-servant/servant/issues/1170) [#1197](https://github.com/haskell-servant/servant/pull/1197)
|
||||
- *servant-client* Redact the authorization header in Show and exceptions [#1238](https://github.com/haskell-servant/servant/pull/1238)
|
||||
|
||||
|
||||
|
||||
0.16.0.1
|
||||
--------
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
cabal-version: >=1.10
|
||||
name: servant-http-streams
|
||||
version: 0.16
|
||||
version: 0.17
|
||||
|
||||
synopsis: Automatic derivation of querying functions for servant
|
||||
category: Servant, Web
|
||||
|
@ -59,8 +59,8 @@ library
|
|||
-- Servant dependencies.
|
||||
-- Strict dependency on `servant-client-core` as we re-export things.
|
||||
build-depends:
|
||||
servant == 0.16.*
|
||||
, servant-client-core >= 0.16 && <0.16.1
|
||||
servant == 0.17.*
|
||||
, servant-client-core >= 0.17 && <0.17.1
|
||||
|
||||
-- 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.
|
||||
|
@ -121,8 +121,8 @@ test-suite spec
|
|||
, HUnit >= 1.6.0.0 && < 1.7
|
||||
, network >= 2.8.0.0 && < 3.2
|
||||
, QuickCheck >= 2.12.6.1 && < 2.14
|
||||
, servant == 0.16.*
|
||||
, servant-server == 0.16.*
|
||||
, servant == 0.17.*
|
||||
, servant-server == 0.17.*
|
||||
, tdigest >= 0.2 && < 0.3
|
||||
|
||||
build-tool-depends:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
cabal-version: >=1.10
|
||||
name: servant-machines
|
||||
version: 0.15
|
||||
x-revision: 1
|
||||
x-revision: 4
|
||||
|
||||
synopsis: Servant Stream support for machines
|
||||
category: Servant, Web, Enumerator
|
||||
|
@ -38,7 +38,7 @@ library
|
|||
, bytestring >=0.10.8.1 && <0.11
|
||||
, machines >=0.6.4 && <0.8
|
||||
, mtl >=2.2.2 && <2.3
|
||||
, servant >=0.15 && <0.17
|
||||
, servant >=0.15 && <0.18
|
||||
hs-source-dirs: src
|
||||
default-language: Haskell2010
|
||||
ghc-options: -Wall
|
||||
|
@ -57,8 +57,8 @@ test-suite example
|
|||
, servant
|
||||
, machines
|
||||
, servant-machines
|
||||
, servant-server >=0.15 && <0.17
|
||||
, servant-client >=0.15 && <0.17
|
||||
, servant-server >=0.15 && <0.18
|
||||
, servant-client >=0.15 && <0.18
|
||||
, wai >=3.2.1.2 && <3.3
|
||||
, warp >=3.2.25 && <3.4
|
||||
, http-client
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
cabal-version: >=1.10
|
||||
name: servant-pipes
|
||||
version: 0.15.1
|
||||
x-revision: 1
|
||||
|
||||
synopsis: Servant Stream support for pipes
|
||||
category: Servant, Web, Pipes
|
||||
|
@ -39,7 +40,7 @@ library
|
|||
, pipes-safe >=2.3.1 && <2.4
|
||||
, mtl >=2.2.2 && <2.3
|
||||
, monad-control >=1.0.2.3 && <1.1
|
||||
, servant >=0.15 && <0.17
|
||||
, servant >=0.15 && <0.18
|
||||
hs-source-dirs: src
|
||||
default-language: Haskell2010
|
||||
ghc-options: -Wall
|
||||
|
@ -60,8 +61,8 @@ test-suite example
|
|||
, pipes-safe
|
||||
, servant-pipes
|
||||
, pipes-bytestring >=2.1.6 && <2.2
|
||||
, servant-server >=0.15 && <0.17
|
||||
, servant-client >=0.15 && <0.17
|
||||
, servant-server >=0.15 && <0.18
|
||||
, servant-client >=0.15 && <0.18
|
||||
, wai >=3.2.1.2 && <3.3
|
||||
, warp >=3.2.25 && <3.4
|
||||
, http-client
|
||||
|
|
|
@ -1,6 +1,51 @@
|
|||
[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-server/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.17
|
||||
----
|
||||
|
||||
### Significant changes
|
||||
|
||||
- Add NoContentVerb [#1028](https://github.com/haskell-servant/servant/issues/1028) [#1219](https://github.com/haskell-servant/servant/pull/1219) [#1228](https://github.com/haskell-servant/servant/pull/1228)
|
||||
|
||||
The `NoContent` API endpoints should now use `NoContentVerb` combinator.
|
||||
The API type changes are usually of the kind
|
||||
|
||||
```diff
|
||||
- :<|> PostNoContent '[JSON] NoContent
|
||||
+ :<|> PostNoContent
|
||||
```
|
||||
|
||||
i.e. one doesn't need to specify the content-type anymore. There is no content.
|
||||
|
||||
- `Capture` can be `Lenient` [#1155](https://github.com/haskell-servant/servant/issues/1155) [#1156](https://github.com/haskell-servant/servant/pull/1156)
|
||||
|
||||
You can specify a lenient capture as
|
||||
|
||||
```haskell
|
||||
:<|> "capture-lenient" :> Capture' '[Lenient] "foo" Int :> GET
|
||||
```
|
||||
|
||||
which will make the capture always succeed. Handlers will be of the
|
||||
type `Either String CapturedType`, where `Left err` represents
|
||||
the possible parse failure.
|
||||
|
||||
- *servant-server* use queryString to parse QueryParam, QueryParams and QueryFlag [#1249](https://github.com/haskell-servant/servant/pull/1249) [#1262](https://github.com/haskell-servant/servant/pull/1262)
|
||||
|
||||
Some APIs need query parameters rewriting, e.g. in order to support
|
||||
for multiple casing (camel, snake, etc) or something to that effect.
|
||||
|
||||
This could be easily achieved by using WAI Middleware and modyfing
|
||||
request's `Query`. But QueryParam, QueryParams and QueryFlag use
|
||||
`rawQueryString`. By using `queryString` rather then `rawQueryString`
|
||||
we can enable such rewritings.
|
||||
|
||||
- *servant* *servant-server* Make packages `build-type: Simple` [#1263](https://github.com/haskell-servant/servant/pull/1263)
|
||||
|
||||
We used `build-type: Custom`, but it's problematic e.g.
|
||||
for cross-compiling. The benefit is small, as the doctests
|
||||
can be run other ways too (though not so conviniently).
|
||||
|
||||
0.16.2
|
||||
------
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
cabal-version: >=1.10
|
||||
name: servant-server
|
||||
version: 0.16
|
||||
version: 0.17
|
||||
|
||||
synopsis: A family of combinators for defining webservices APIs and serving them
|
||||
category: Servant, Web
|
||||
|
|
|
@ -1,5 +1,107 @@
|
|||
[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
|
||||
|
||||
0.17
|
||||
----
|
||||
|
||||
### Significant changes
|
||||
|
||||
- Add NoContentVerb [#1028](https://github.com/haskell-servant/servant/issues/1028) [#1219](https://github.com/haskell-servant/servant/pull/1219) [#1228](https://github.com/haskell-servant/servant/pull/1228)
|
||||
|
||||
The `NoContent` API endpoints should now use `NoContentVerb` combinator.
|
||||
The API type changes are usually of the kind
|
||||
|
||||
```diff
|
||||
- :<|> PostNoContent '[JSON] NoContent
|
||||
+ :<|> PostNoContent
|
||||
```
|
||||
|
||||
i.e. one doesn't need to specify the content-type anymore. There is no content.
|
||||
|
||||
- `Capture` can be `Lenient` [#1155](https://github.com/haskell-servant/servant/issues/1155) [#1156](https://github.com/haskell-servant/servant/pull/1156)
|
||||
|
||||
You can specify a lenient capture as
|
||||
|
||||
```haskell
|
||||
:<|> "capture-lenient" :> Capture' '[Lenient] "foo" Int :> GET
|
||||
```
|
||||
|
||||
which will make the capture always succeed. Handlers will be of the
|
||||
type `Either String CapturedType`, where `Left err` represents
|
||||
the possible parse failure.
|
||||
|
||||
- *servant-client* Added a function to create Client.Request in ClientEnv [#1213](https://github.com/haskell-servant/servant/pull/1213) [#1255](https://github.com/haskell-servant/servant/pull/1255)
|
||||
|
||||
The new member `makeClientRequest` of `ClientEnv` is used to create
|
||||
`http-client` `Request` from `servant-client-core` `Request`.
|
||||
This functionality can be used for example to set
|
||||
dynamic timeouts for each request.
|
||||
|
||||
- *servant-server* use queryString to parse QueryParam, QueryParams and QueryFlag [#1249](https://github.com/haskell-servant/servant/pull/1249) [#1262](https://github.com/haskell-servant/servant/pull/1262)
|
||||
|
||||
Some APIs need query parameters rewriting, e.g. in order to support
|
||||
for multiple casing (camel, snake, etc) or something to that effect.
|
||||
|
||||
This could be easily achieved by using WAI Middleware and modyfing
|
||||
request's `Query`. But QueryParam, QueryParams and QueryFlag use
|
||||
`rawQueryString`. By using `queryString` rather then `rawQueryString`
|
||||
we can enable such rewritings.
|
||||
|
||||
- *servant* *servant-server* Make packages `build-type: Simple` [#1263](https://github.com/haskell-servant/servant/pull/1263)
|
||||
|
||||
We used `build-type: Custom`, but it's problematic e.g.
|
||||
for cross-compiling. The benefit is small, as the doctests
|
||||
can be run other ways too (though not so conviniently).
|
||||
|
||||
- *servant* Remove deprecated modules [1268#](https://github.com/haskell-servant/servant/pull/1268)
|
||||
|
||||
- `Servant.Utils.Links` is `Servant.Links`
|
||||
- `Servant.API.Internal.Test.ComprehensiveAPI` is `Servant.Test.ComprehensiveAPI`
|
||||
|
||||
### Other changes
|
||||
|
||||
- *servant-client* *servant-client-core* *servant-http-streams* Fix Verb with headers checking content type differently [#1200](https://github.com/haskell-servant/servant/issues/1200) [#1204](https://github.com/haskell-servant/servant/pull/1204)
|
||||
|
||||
For `Verb`s with response `Headers`, the implementation didn't check
|
||||
for the content-type of the response. Now it does.
|
||||
|
||||
- *servant-docs* Merge documentation from duplicate routes [#1240](https://github.com/haskell-servant/servant/issues/1240) [#1241](https://github.com/haskell-servant/servant/pull/1241)
|
||||
|
||||
Servant supports defining the same route multiple times with different
|
||||
content-types and result-types, but servant-docs was only documenting
|
||||
the first of copy of such duplicated routes. It now combines the
|
||||
documentation from all the copies.
|
||||
|
||||
Unfortunately, it is not yet possible for the documentation to specify
|
||||
multiple status codes.
|
||||
|
||||
- Add sponsorship button [#1190](https://github.com/haskell-servant/servant/pull/1190)
|
||||
|
||||
[Well-Typed](https://www.well-typed.com/) is a consultancy which could help you with `servant` issues
|
||||
(See consultancies section on https://www.servant.dev/).
|
||||
|
||||
- Try changelog-d for changelog management [#1230](https://github.com/haskell-servant/servant/pull/1230)
|
||||
|
||||
Check the [CONTRIBUTING.md](https://github.com/haskell-servant/servant/blob/master/CONTRIBUTING.md) for details
|
||||
|
||||
- CI and testing tweaks. [#1154](https://github.com/haskell-servant/servant/pull/1154) [#1157](https://github.com/haskell-servant/servant/pull/1157) [#1182](https://github.com/haskell-servant/servant/pull/1182) [#1214](https://github.com/haskell-servant/servant/pull/1214) [#1229](https://github.com/haskell-servant/servant/pull/1229) [#1233](https://github.com/haskell-servant/servant/pull/1233) [#1242](https://github.com/haskell-servant/servant/pull/1242) [#1247](https://github.com/haskell-servant/servant/pull/1247) [#1250](https://github.com/haskell-servant/servant/pull/1250) [#1258](https://github.com/haskell-servant/servant/pull/1258)
|
||||
|
||||
We are experiencing some bitrotting of cookbook recipe dependencies,
|
||||
therefore some of them aren't build as part of our CI anymore.
|
||||
|
||||
- New cookbook recipes [#1088](https://github.com/haskell-servant/servant/pull/1088) [#1171](https://github.com/haskell-servant/servant/pull/1171) [#1198](https://github.com/haskell-servant/servant/pull/1198)
|
||||
|
||||
- [OIDC Recipe](#TODO)
|
||||
- [MySQL Recipe](#TODO)
|
||||
|
||||
- *servant-jsaddle* Progress on servant-jsaddle [#1216](https://github.com/haskell-servant/servant/pull/1216)
|
||||
- *servant-docs* Prevent race-conditions in testing [#1194](https://github.com/haskell-servant/servant/pull/1194)
|
||||
- *servant-client* *servant-http-streams* `HasClient` instance for `Stream` with `Headers` [#1170](https://github.com/haskell-servant/servant/issues/1170) [#1197](https://github.com/haskell-servant/servant/pull/1197)
|
||||
- *servant* Remove unused extensions from cabal file [#1201](https://github.com/haskell-servant/servant/pull/1201)
|
||||
- *servant-client* Redact the authorization header in Show and exceptions [#1238](https://github.com/haskell-servant/servant/pull/1238)
|
||||
- Dependency upgrades [#1173](https://github.com/haskell-servant/servant/pull/1173) [#1181](https://github.com/haskell-servant/servant/pull/1181) [#1183](https://github.com/haskell-servant/servant/pull/1183) [#1188](https://github.com/haskell-servant/servant/pull/1188) [#1224](https://github.com/haskell-servant/servant/pull/1224) [#1245](https://github.com/haskell-servant/servant/pull/1245) [#1257](https://github.com/haskell-servant/servant/pull/1257)
|
||||
- Documentation updates [#1162](https://github.com/haskell-servant/servant/pull/1162) [#1174](https://github.com/haskell-servant/servant/pull/1174) [#1175](https://github.com/haskell-servant/servant/pull/1175) [#1234](https://github.com/haskell-servant/servant/pull/1234) [#1244](https://github.com/haskell-servant/servant/pull/1244) [#1247](https://github.com/haskell-servant/servant/pull/1247)
|
||||
|
||||
|
||||
0.16.2
|
||||
------
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
cabal-version: >=1.10
|
||||
name: servant
|
||||
version: 0.16
|
||||
version: 0.17
|
||||
|
||||
synopsis: A family of combinators for defining webservices APIs
|
||||
category: Servant, Web
|
||||
|
@ -74,11 +74,6 @@ library
|
|||
exposed-modules:
|
||||
Servant.Links
|
||||
|
||||
-- Deprecated modules, to be removed in late 2019
|
||||
exposed-modules:
|
||||
Servant.Utils.Links
|
||||
Servant.API.Internal.Test.ComprehensiveAPI
|
||||
|
||||
-- Bundled with GHC: Lower bound to not force re-installs
|
||||
-- text and mtl are bundled starting with GHC-8.4
|
||||
--
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
module Servant.API.Internal.Test.ComprehensiveAPI
|
||||
{-# DEPRECATED "Use Servant.TestComprehensiveAPI" #-}
|
||||
( module Servant.Test.ComprehensiveAPI )
|
||||
where
|
||||
|
||||
import Servant.Test.ComprehensiveAPI
|
|
@ -1,6 +0,0 @@
|
|||
module Servant.Utils.Links
|
||||
{-# DEPRECATED "Use Servant.Links." #-}
|
||||
( module Servant.Links )
|
||||
where
|
||||
|
||||
import Servant.Links
|
Loading…
Reference in a new issue