on master help sign in
Merge pull request #1268 from haskell-servant/version-0.17

Bump version to 0.17

commit74aa1d52ec03e230f7d5cab7b45bcc0dcb6b4e15 authorOleg Grenrus <oleg.grenrus@iki.fi> dateThu 23 Jan 2020, 13:58 (7 years ago) parent8372436b318e69
39 files changed+441−254
.travis.yml+28−30 cabal.project+5 changelog.d/issue1028−18 changelog.d/issue1200−12 changelog.d/issue1240−16 changelog.d/jsaddle−3 changelog.d/pr1156−17 changelog.d/pr1190−7 changelog.d/pr1194−3 changelog.d/pr1197−4 changelog.d/pr1201−3 changelog.d/pr1213−12 changelog.d/pr1238−3 changelog.d/pr1249−15 changelog.d/pr1263−11 changelog.d/z-changelog-d−8 changelog.d/z-ci-tweaks−19 changelog.d/z-cookbook−9 changelog.d/z-dependency-upgrades−9 changelog.d/z-documentation-updates−8 servant-client-core/CHANGELOG.md+39 servant-client-core/servant-client-core.cabal+2−2 servant-client/CHANGELOG.md+48 servant-client/servant-client.cabal+5−5 servant-conduit/servant-conduit.cabal+4−4 servant-docs/CHANGELOG.md+40 servant-docs/servant-docs.cabal+2−2 servant-foreign/CHANGELOG.md+63 servant-foreign/servant-foreign.cabal+2−3 servant-http-streams/CHANGELOG.md+41 servant-http-streams/servant-http-streams.cabal+5−5 servant-machines/servant-machines.cabal+4−4 servant-pipes/servant-pipes.cabal+4−3 servant-server/CHANGELOG.md+45 servant-server/servant-server.cabal+1−1 servant/CHANGELOG.md+102 servant/servant.cabal+1−6 servant/src/Servant/API/Internal/Test/ComprehensiveAPI.hs−6 servant/src/Servant/Utils/Links.hs−6
.travis.yml+28−30
@@ -4,7 +4,7 @@
44#
55# For more information, see https://github.com/haskell-CI/haskell-ci
66#
7−# version: 0.9.20200110
7+# version: 0.9.20200121
88#
99version: ~> 1.0
1010language: c
@@ -75,39 +75,31 @@ before_install:
7575 - echo $HCNUMVER
7676 - CABAL="$CABAL -vnormal+nowrap"
7777 - set -o pipefail
78−install:
79− - ${CABAL} --version
80− - echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
81− - node --version
82− - echo $GHCJS
8378 - TEST=--enable-tests
8479 - BENCH=--enable-benchmarks
8580 - HEADHACKAGE=false
8681 - rm -f $CABALHOME/config
8782 - |
88− echo "verbose: normal +nowrap +markoutput" >> $CABALHOME/config
89− echo "remote-build-reporting: anonymous" >> $CABALHOME/config
90− echo "write-ghc-environment-files: always" >> $CABALHOME/config
91− echo "remote-repo-cache: $CABALHOME/packages" >> $CABALHOME/config
92− echo "logs-dir: $CABALHOME/logs" >> $CABALHOME/config
93− echo "world-file: $CABALHOME/world" >> $CABALHOME/config
94− echo "extra-prog-path: $CABALHOME/bin" >> $CABALHOME/config
95− echo "symlink-bindir: $CABALHOME/bin" >> $CABALHOME/config
96− echo "installdir: $CABALHOME/bin" >> $CABALHOME/config
97− echo "build-summary: $CABALHOME/logs/build.log" >> $CABALHOME/config
98− echo "store-dir: $CABALHOME/store" >> $CABALHOME/config
99− echo "install-dirs user" >> $CABALHOME/config
100− echo " prefix: $CABALHOME" >> $CABALHOME/config
101− echo "repository hackage.haskell.org" >> $CABALHOME/config
102− echo " url: http://hackage.haskell.org/" >> $CABALHOME/config
103− echo " secure: True" >> $CABALHOME/config
104− echo " key-threshold: 3" >> $CABALHOME/config
105− echo " root-keys:" >> $CABALHOME/config
106− echo " fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0" >> $CABALHOME/config
107− echo " 1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42" >> $CABALHOME/config
108− echo " 2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3" >> $CABALHOME/config
109− echo " 0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d" >> $CABALHOME/config
110− echo " 51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921" >> $CABALHOME/config
83+ echo "verbose: normal +nowrap +markoutput" >> $CABALHOME/config
84+ echo "remote-build-reporting: anonymous" >> $CABALHOME/config
85+ echo "write-ghc-environment-files: always" >> $CABALHOME/config
86+ echo "remote-repo-cache: $CABALHOME/packages" >> $CABALHOME/config
87+ echo "logs-dir: $CABALHOME/logs" >> $CABALHOME/config
88+ echo "world-file: $CABALHOME/world" >> $CABALHOME/config
89+ echo "extra-prog-path: $CABALHOME/bin" >> $CABALHOME/config
90+ echo "symlink-bindir: $CABALHOME/bin" >> $CABALHOME/config
91+ echo "installdir: $CABALHOME/bin" >> $CABALHOME/config
92+ echo "build-summary: $CABALHOME/logs/build.log" >> $CABALHOME/config
93+ echo "store-dir: $CABALHOME/store" >> $CABALHOME/config
94+ echo "install-dirs user" >> $CABALHOME/config
95+ echo " prefix: $CABALHOME" >> $CABALHOME/config
96+ echo "repository hackage.haskell.org" >> $CABALHOME/config
97+ echo " url: http://hackage.haskell.org/" >> $CABALHOME/config
98+install:
99+ - ${CABAL} --version
100+ - echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
101+ - node --version
102+ - echo $GHCJS
111103 - GHCJOBS=-j2
112104 - |
113105 echo "program-default-options" >> $CABALHOME/config
@@ -157,6 +149,9 @@ install:
157149 echo "allow-newer: io-streams-1.5.1.0:network" >> cabal.project
158150 echo "allow-newer: io-streams-1.5.1.0:primitive" >> cabal.project
159151 echo "allow-newer: openssl-streams-1.2.2.0:network" >> cabal.project
152+ echo "allow-newer: servant" >> cabal.project
153+ echo "allow-newer: servant-server" >> cabal.project
154+ echo "allow-newer: servant-client" >> cabal.project
160155 echo "optimization: False" >> cabal.project
161156 - "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"
162157 - cat cabal.project || true
@@ -259,6 +254,9 @@ script:
259254 echo "allow-newer: io-streams-1.5.1.0:network" >> cabal.project
260255 echo "allow-newer: io-streams-1.5.1.0:primitive" >> cabal.project
261256 echo "allow-newer: openssl-streams-1.2.2.0:network" >> cabal.project
257+ echo "allow-newer: servant" >> cabal.project
258+ echo "allow-newer: servant-server" >> cabal.project
259+ echo "allow-newer: servant-client" >> cabal.project
262260 echo "optimization: False" >> cabal.project
263261 - "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"
264262 - cat cabal.project || true
@@ -318,5 +316,5 @@ script:
318316 - if ! $GHCJS ; then ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} all ; fi
319317 - echo -en 'travis_fold:end:haddock\\r'
320318
321−# REGENDATA ("0.9.20200110",["--config=cabal.haskell-ci","--output=.travis.yml","cabal.project"])
319+# REGENDATA ("0.9.20200121",["--config=cabal.haskell-ci","--output=.travis.yml","cabal.project"])
322320# EOF
cabal.project+5
@@ -65,3 +65,8 @@ constraints: base-compat ^>=0.11
6565
6666-- needed for doctests
6767write-ghc-environment-files: always
68+
69+-- servant-0.17
70+allow-newer: servant
71+allow-newer: servant-server
72+allow-newer: servant-client
changelog.d/issue1028deleted−18
@@ -1,18 +0,0 @@
1−synopsis: Add NoContentVerb
2−prs: #1228 #1219
3−issues: #1028
4−significance: significant
5−
6−description: {
7−
8−The `NoContent` API endpoints should now use `NoContentVerb` combinator.
9−The API type changes are usually of the kind
10−
11−```diff
12−- :<|> PostNoContent '[JSON] NoContent
13−+ :<|> PostNoContent
14−```
15−
16−i.e. one doesn't need to specify the content-type anymore. There is no content.
17−
18−}
changelog.d/issue1200deleted−12
@@ -1,12 +0,0 @@
1−synopsis: Fix Verb with headers checking content type differently
2−packages: servant-client-core servant-client
3−prs: #1204
4−issues: #1200
5−packages: servant-client servant-client-core servant-http-streams
6−
7−description: {
8−
9−For `Verb`s with response `Headers`, the implementation didn't check
10−for the content-type of the response. Now it does.
11−
12−}
changelog.d/issue1240deleted−16
@@ -1,16 +0,0 @@
1−synopsis: Merge documentation from duplicate routes
2−packages: servant-docs
3−prs: #1241
4−issues: #1240
5−
6−description: {
7−
8−Servant supports defining the same route multiple times with different
9−content-types and result-types, but servant-docs was only documenting
10−the first of copy of such duplicated routes. It now combines the
11−documentation from all the copies.
12−
13−Unfortunately, it is not yet possible for the documentation to specify
14−multiple status codes.
15−
16−}
changelog.d/jsaddledeleted−3
@@ -1,3 +0,0 @@
1−synopsis: Progress on servant-jsaddle
2−packages: servant-jsaddle
3−prs: #1216
changelog.d/pr1156deleted−17
@@ -1,17 +0,0 @@
1−synopsis: `Capture` can be `Lenient`
2−issues: #1155
3−prs: #1156
4−significance: significant
5−description: {
6−
7−You can specify a lenient capture as
8−
9−```haskell
10−:<|> "capture-lenient" :> Capture' '[Lenient] "foo" Int :> GET
11−```
12−
13−which will make the capture always succeed. Handlers will be of the
14−type `Either String CapturedType`, where `Left err` represents
15−the possible parse failure.
16−
17−}
changelog.d/pr1190deleted−7
@@ -1,7 +0,0 @@
1−synopsis: Add sponsorship button
2−prs: #1190
3−description: {
4−
5−[Well-Typed](https://www.well-typed.com/)
6−
7−}
changelog.d/pr1194deleted−3
@@ -1,3 +0,0 @@
1−synopsis: Prevent race-conditions in testing
2−packages: servant-docs
3−prs: #1194
changelog.d/pr1197deleted−4
@@ -1,4 +0,0 @@
1−synopsis: `HasClient` instance for `Stream` with `Headers`
2−packages: servant-client servant-client servant-http-streams
3−prs: #1197
4−issues: #1170
changelog.d/pr1201deleted−3
@@ -1,3 +0,0 @@
1−synopsis: Remove unused extensions from cabal file
2−packages: servant
3−prs: #1201
changelog.d/pr1213deleted−12
@@ -1,12 +0,0 @@
1−synopsis: Added a function to create Client.Request in ClientEnv
2−packages: servant-client
3−significance: significant
4−prs: #1213 #1255
5−description: {
6−
7−The new member `makeClientRequest` of `ClientEnv` is used to create
8−`http-client` `Request` from `servant-client-core` `Request`.
9−This functionality can be used for example to set
10−dynamic timeouts for each request.
11−
12−}
changelog.d/pr1238deleted−3
@@ -1,3 +0,0 @@
1−synopsis: Redact the authorization header in Show and exceptions
2−packages: servant-client
3−prs: #1238
changelog.d/pr1249deleted−15
@@ -1,15 +0,0 @@
1−synopsis: use queryString to parse QueryParam, QueryParams and QueryFlag
2−packages: servant-server
3−prs: #1249 #1262
4−significance: significant
5−description: {
6−
7−Some APIs need query parameters rewriting, e.g. in order to support
8− for multiple casing (camel, snake, etc) or something to that effect.
9−
10−This could be easily achieved by using WAI Middleware and modyfing
11−request's `Query`. But QueryParam, QueryParams and QueryFlag use
12−`rawQueryString`. By using `queryString` rather then `rawQueryString`
13−we can enable such rewritings.
14−
15−}
changelog.d/pr1263deleted−11
@@ -1,11 +0,0 @@
1−synopsis: Make packages `build-type: Simple`
2−packages: servant servant-server
3−prs: #1263
4−significance: significant
5−description: {
6−
7−We used `build-type: Custom`, but it's problematic e.g.
8−for cross-compiling. The benefit is small, as the doctests
9−can be run other ways too (though not so conviniently).
10−
11−}
changelog.d/z-changelog-ddeleted−8
@@ -1,8 +0,0 @@
1−synopsis: Try changelog-d for changelog management
2−prs: #1230
3−
4−description: {
5−
6−Check the [CONTRIBUTING.md](https://github.com/haskell-servant/servant/blob/master/CONTRIBUTING.md) for details
7−
8−}
changelog.d/z-ci-tweaksdeleted−19
@@ -1,19 +0,0 @@
1−synopsis: CI and testing tweaks.
2−prs:
3− #1154
4− #1157
5− #1182
6− #1214
7− #1229
8− #1233
9− #1242
10− #1247
11− #1250
12− #1258
13−
14−description: {
15−
16−We are experiencing some bitrotting of cookbook recipe dependencies,
17−therefore some of them aren't build as part of our CI anymore.
18−
19−}
changelog.d/z-cookbookdeleted−9
@@ -1,9 +0,0 @@
1−synopsis: New cookbook recipes
2−prs: #1171 #1088 #1198
3−
4−description: {
5−
6−- [OIDC Recipe](#TODO)
7−- [MySQL Recipe](#TODO)
8−
9−}
changelog.d/z-dependency-upgradesdeleted−9
@@ -1,9 +0,0 @@
1−synopsis: Dependency upgrades
2−prs:
3− #1173
4− #1181
5− #1183
6− #1188
7− #1224
8− #1245
9− #1257
changelog.d/z-documentation-updatesdeleted−8
@@ -1,8 +0,0 @@
1−synopsis: Documentation updates
2−prs:
3− #1162
4− #1174
5− #1175
6− #1234
7− #1244
8− #1247
servant-client-core/CHANGELOG.md+39
@@ -1,6 +1,45 @@
11[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-client-core/CHANGELOG.md)
22[Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
33
4+0.17
5+----
6+
7+### Significant changes
8+
9+- 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)
10+
11+ The `NoContent` API endpoints should now use `NoContentVerb` combinator.
12+ The API type changes are usually of the kind
13+
14+ ```diff
15+ - :<|> PostNoContent '[JSON] NoContent
16+ + :<|> PostNoContent
17+ ```
18+
19+ i.e. one doesn't need to specify the content-type anymore. There is no content.
20+
21+- `Capture` can be `Lenient` [#1155](https://github.com/haskell-servant/servant/issues/1155) [#1156](https://github.com/haskell-servant/servant/pull/1156)
22+
23+ You can specify a lenient capture as
24+
25+ ```haskell
26+ :<|> "capture-lenient" :> Capture' '[Lenient] "foo" Int :> GET
27+ ```
28+
29+ which will make the capture always succeed. Handlers will be of the
30+ type `Either String CapturedType`, where `Left err` represents
31+ the possible parse failure.
32+
33+### Other changes
34+
35+- *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)
36+
37+ For `Verb`s with response `Headers`, the implementation didn't check
38+ for the content-type of the response. Now it does.
39+
40+- *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)
41+- *servant-client* Redact the authorization header in Show and exceptions [#1238](https://github.com/haskell-servant/servant/pull/1238)
42+
4430.16
544----
645
servant-client-core/servant-client-core.cabal+2−2
@@ -1,6 +1,6 @@
11cabal-version: >=1.10
22name: servant-client-core
3−version: 0.16
3+version: 0.17
44
55synopsis: Core functionality and class for client function generation for servant APIs
66category: Servant, Web
@@ -69,7 +69,7 @@ library
6969
7070 -- Servant dependencies
7171 build-depends:
72− servant >= 0.16 && <0.17
72+ servant >= 0.17 && <0.18
7373
7474 -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
7575 -- Here can be exceptions if we really need features from the newer versions.
servant-client/CHANGELOG.md+48
@@ -1,6 +1,54 @@
11[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-client/CHANGELOG.md)
22[Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
33
4+0.17
5+----
6+
7+### Significant changes
8+
9+- 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)
10+
11+ The `NoContent` API endpoints should now use `NoContentVerb` combinator.
12+ The API type changes are usually of the kind
13+
14+ ```diff
15+ - :<|> PostNoContent '[JSON] NoContent
16+ + :<|> PostNoContent
17+ ```
18+
19+ i.e. one doesn't need to specify the content-type anymore. There is no content.
20+
21+- `Capture` can be `Lenient` [#1155](https://github.com/haskell-servant/servant/issues/1155) [#1156](https://github.com/haskell-servant/servant/pull/1156)
22+
23+ You can specify a lenient capture as
24+
25+ ```haskell
26+ :<|> "capture-lenient" :> Capture' '[Lenient] "foo" Int :> GET
27+ ```
28+
29+ which will make the capture always succeed. Handlers will be of the
30+ type `Either String CapturedType`, where `Left err` represents
31+ the possible parse failure.
32+
33+- *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)
34+
35+ The new member `makeClientRequest` of `ClientEnv` is used to create
36+ `http-client` `Request` from `servant-client-core` `Request`.
37+ This functionality can be used for example to set
38+ dynamic timeouts for each request.
39+
40+### Other changes
41+
42+- *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)
43+
44+ For `Verb`s with response `Headers`, the implementation didn't check
45+ for the content-type of the response. Now it does.
46+
47+- *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)
48+- *servant-client* Redact the authorization header in Show and exceptions [#1238](https://github.com/haskell-servant/servant/pull/1238)
49+
50+
51+
4520.16.0.1
553--------
654
servant-client/servant-client.cabal+5−5
@@ -1,6 +1,6 @@
11cabal-version: >=1.10
22name: servant-client
3−version: 0.16.0.1
3+version: 0.17
44
55synopsis: Automatic derivation of querying functions for servant
66category: Servant, Web
@@ -62,8 +62,8 @@ library
6262 -- Servant dependencies.
6363 -- Strict dependency on `servant-client-core` as we re-export things.
6464 build-depends:
65− servant == 0.16.*
66− , servant-client-core >= 0.16 && <0.16.1
65+ servant == 0.17.*
66+ , servant-client-core >= 0.17 && <0.17.1
6767
6868 -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
6969 -- Here can be exceptions if we really need features from the newer versions.
@@ -127,8 +127,8 @@ test-suite spec
127127 , HUnit >= 1.6.0.0 && < 1.7
128128 , network >= 2.8.0.0 && < 3.2
129129 , QuickCheck >= 2.12.6.1 && < 2.14
130− , servant == 0.16.*
131− , servant-server == 0.16.*
130+ , servant == 0.17.*
131+ , servant-server == 0.17.*
132132 , tdigest >= 0.2 && < 0.3
133133
134134 build-tool-depends:
servant-conduit/servant-conduit.cabal+4−4
@@ -1,7 +1,7 @@
11cabal-version: >=1.10
22name: servant-conduit
33version: 0.15
4−x-revision: 1
4+x-revision: 3
55
66synopsis: Servant Stream support for conduit.
77category: Servant, Web, Enumerator
@@ -39,7 +39,7 @@ library
3939 , conduit >=1.3.1 && <1.4
4040 , mtl >=2.2.2 && <2.3
4141 , resourcet >=1.2.2 && <1.3
42− , servant >=0.15 && <0.17
42+ , servant >=0.15 && <0.18
4343 , unliftio-core >=0.1.2.0 && <0.2
4444 hs-source-dirs: src
4545 default-language: Haskell2010
@@ -60,8 +60,8 @@ test-suite example
6060 , resourcet
6161 , servant
6262 , servant-conduit
63− , servant-server >=0.15 && <0.17
64− , servant-client >=0.15 && <0.17
63+ , servant-server >=0.15 && <0.18
64+ , servant-client >=0.15 && <0.18
6565 , wai >=3.2.1.2 && <3.3
6666 , warp >=3.2.25 && <3.4
6767 , http-client
servant-docs/CHANGELOG.md+40
@@ -1,6 +1,46 @@
11[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-docs/CHANGELOG.md)
22[Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
33
4+0.14.2
5+----
6+
7+
8+- 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)
9+
10+ The `NoContent` API endpoints should now use `NoContentVerb` combinator.
11+ The API type changes are usually of the kind
12+
13+ ```diff
14+ - :<|> PostNoContent '[JSON] NoContent
15+ + :<|> PostNoContent
16+ ```
17+
18+ i.e. one doesn't need to specify the content-type anymore. There is no content.
19+
20+- `Capture` can be `Lenient` [#1155](https://github.com/haskell-servant/servant/issues/1155) [#1156](https://github.com/haskell-servant/servant/pull/1156)
21+
22+ You can specify a lenient capture as
23+
24+ ```haskell
25+ :<|> "capture-lenient" :> Capture' '[Lenient] "foo" Int :> GET
26+ ```
27+
28+ which will make the capture always succeed. Handlers will be of the
29+ type `Either String CapturedType`, where `Left err` represents
30+ the possible parse failure.
31+
32+- *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)
33+
34+ Servant supports defining the same route multiple times with different
35+ content-types and result-types, but servant-docs was only documenting
36+ the first of copy of such duplicated routes. It now combines the
37+ documentation from all the copies.
38+
39+ Unfortunately, it is not yet possible for the documentation to specify
40+ multiple status codes.
41+
42+- *servant-docs* Prevent race-conditions in testing [#1194](https://github.com/haskell-servant/servant/pull/1194)
43+
4440.11.4
545------
646
servant-docs/servant-docs.cabal+2−2
@@ -1,6 +1,6 @@
11cabal-version: >=1.10
22name: servant-docs
3−version: 0.11.4
3+version: 0.11.5
44
55synopsis: generate API docs for your servant webservice
66category: Servant, Web
@@ -52,7 +52,7 @@ library
5252
5353 -- Servant dependencies
5454 build-depends:
55− servant >= 0.15 && <0.17
55+ servant >= 0.17 && <0.18
5656
5757 -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
5858 -- Here can be exceptions if we really need features from the newer versions.
servant-foreign/CHANGELOG.md+63
@@ -1,6 +1,69 @@
11[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-foreign/CHANGELOG.md)
22[Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
33
4+0.15.1
5+------
6+
7+* Support `servant-0.17`
8+
9+0.15
10+----
11+
12+- *servant-foreign* Add support so `HasForeign` can be implemented for
13+ `MultipartForm` from [`servant-multipart`](http://hackage.haskell.org/package/servant-multipart)
14+ [#1035](https://github.com/haskell-servant/servant/pull/1035)
15+
16+- Drop support for GHC older than 8.0
17+ [#1008](https://github.com/haskell-servant/servant/pull/1008)
18+ [#1009](https://github.com/haskell-servant/servant/pull/1009)
19+
20+
21+0.11.1
22+------
23+
24+- Add missing `Semigroup` instances
25+
26+0.11
27+----
28+
29+### Breaking changes
30+
31+- *servant* Add `Servant.API.Modifiers`
32+ ([#873](https://github.com/haskell-servant/servant/pull/873))
33+- Make foreign client Header arguments have the representation of 'Maybe' in those languages
34+ ([#843](https://github.com/haskell-servant/servant/pull/843))
35+
36+0.10.2
37+------
38+
39+### Changes
40+
41+* Add instances for `Description` and `Summary` combinators
42+ ([#767](https://github.com/haskell-servant/servant/pull/767))
43+* Derive Data for all types
44+ ([#809](https://github.com/haskell-servant/servant/pull/809))
45+
46+0.10.1
47+------
48+
49+### Changes
50+
51+* Don't drop samples in `HasDocs ReqBody` instance
52+ ([#755](https://github.com/haskell-servant/servant/pull/755/files)).
53+ *Breaking change in an `Internal` module*.
54+
55+0.10
56+----
57+
58+### Breaking changes
59+
60+* Do not apply JavaScript specific mangling to the names.
61+ ([#191](https://github.com/haskell-servant/servant/issues/191))
62+
63+0.7.1
64+-----
65+
66+* Support GHC 8.0
4670.15
568----
669
servant-foreign/servant-foreign.cabal+2−3
@@ -1,7 +1,6 @@
11cabal-version: >=1.10
22name: servant-foreign
3−version: 0.15
4−x-revision: 1
3+version: 0.15.1
54
65synopsis: Helpers for generating clients for servant APIs in any programming language
76category: Servant, Web
@@ -52,7 +51,7 @@ library
5251
5352 -- Servant dependencies
5453 build-depends:
55− servant >=0.15 && <0.17
54+ servant >=0.17 && <0.18
5655
5756 -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
5857 -- Here can be exceptions if we really need features from the newer versions.
servant-http-streams/CHANGELOG.md+41
@@ -1,6 +1,47 @@
11 [The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-http-streams/CHANGELOG.md)
22[Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
33
4+0.17
5+----
6+
7+### Significant changes
8+
9+- 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)
10+
11+ The `NoContent` API endpoints should now use `NoContentVerb` combinator.
12+ The API type changes are usually of the kind
13+
14+ ```diff
15+ - :<|> PostNoContent '[JSON] NoContent
16+ + :<|> PostNoContent
17+ ```
18+
19+ i.e. one doesn't need to specify the content-type anymore. There is no content.
20+
21+- `Capture` can be `Lenient` [#1155](https://github.com/haskell-servant/servant/issues/1155) [#1156](https://github.com/haskell-servant/servant/pull/1156)
22+
23+ You can specify a lenient capture as
24+
25+ ```haskell
26+ :<|> "capture-lenient" :> Capture' '[Lenient] "foo" Int :> GET
27+ ```
28+
29+ which will make the capture always succeed. Handlers will be of the
30+ type `Either String CapturedType`, where `Left err` represents
31+ the possible parse failure.
32+
33+### Other changes
34+
35+- *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)
36+
37+ For `Verb`s with response `Headers`, the implementation didn't check
38+ for the content-type of the response. Now it does.
39+
40+- *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)
41+- *servant-client* Redact the authorization header in Show and exceptions [#1238](https://github.com/haskell-servant/servant/pull/1238)
42+
43+
44+
4450.16.0.1
546--------
647
servant-http-streams/servant-http-streams.cabal+5−5
@@ -1,6 +1,6 @@
11cabal-version: >=1.10
22name: servant-http-streams
3−version: 0.16
3+version: 0.17
44
55synopsis: Automatic derivation of querying functions for servant
66category: Servant, Web
@@ -59,8 +59,8 @@ library
5959 -- Servant dependencies.
6060 -- Strict dependency on `servant-client-core` as we re-export things.
6161 build-depends:
62− servant == 0.16.*
63− , servant-client-core >= 0.16 && <0.16.1
62+ servant == 0.17.*
63+ , servant-client-core >= 0.17 && <0.17.1
6464
6565 -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
6666 -- Here can be exceptions if we really need features from the newer versions.
@@ -121,8 +121,8 @@ test-suite spec
121121 , HUnit >= 1.6.0.0 && < 1.7
122122 , network >= 2.8.0.0 && < 3.2
123123 , QuickCheck >= 2.12.6.1 && < 2.14
124− , servant == 0.16.*
125− , servant-server == 0.16.*
124+ , servant == 0.17.*
125+ , servant-server == 0.17.*
126126 , tdigest >= 0.2 && < 0.3
127127
128128 build-tool-depends:
servant-machines/servant-machines.cabal+4−4
@@ -1,7 +1,7 @@
11cabal-version: >=1.10
22name: servant-machines
33version: 0.15
4−x-revision: 1
4+x-revision: 4
55
66synopsis: Servant Stream support for machines
77category: Servant, Web, Enumerator
@@ -38,7 +38,7 @@ library
3838 , bytestring >=0.10.8.1 && <0.11
3939 , machines >=0.6.4 && <0.8
4040 , mtl >=2.2.2 && <2.3
41− , servant >=0.15 && <0.17
41+ , servant >=0.15 && <0.18
4242 hs-source-dirs: src
4343 default-language: Haskell2010
4444 ghc-options: -Wall
@@ -57,8 +57,8 @@ test-suite example
5757 , servant
5858 , machines
5959 , servant-machines
60− , servant-server >=0.15 && <0.17
61− , servant-client >=0.15 && <0.17
60+ , servant-server >=0.15 && <0.18
61+ , servant-client >=0.15 && <0.18
6262 , wai >=3.2.1.2 && <3.3
6363 , warp >=3.2.25 && <3.4
6464 , http-client
servant-pipes/servant-pipes.cabal+4−3
@@ -1,6 +1,7 @@
11cabal-version: >=1.10
22name: servant-pipes
33version: 0.15.1
4+x-revision: 1
45
56synopsis: Servant Stream support for pipes
67category: Servant, Web, Pipes
@@ -39,7 +40,7 @@ library
3940 , pipes-safe >=2.3.1 && <2.4
4041 , mtl >=2.2.2 && <2.3
4142 , monad-control >=1.0.2.3 && <1.1
42− , servant >=0.15 && <0.17
43+ , servant >=0.15 && <0.18
4344 hs-source-dirs: src
4445 default-language: Haskell2010
4546 ghc-options: -Wall
@@ -60,8 +61,8 @@ test-suite example
6061 , pipes-safe
6162 , servant-pipes
6263 , pipes-bytestring >=2.1.6 && <2.2
63− , servant-server >=0.15 && <0.17
64− , servant-client >=0.15 && <0.17
64+ , servant-server >=0.15 && <0.18
65+ , servant-client >=0.15 && <0.18
6566 , wai >=3.2.1.2 && <3.3
6667 , warp >=3.2.25 && <3.4
6768 , http-client
servant-server/CHANGELOG.md+45
@@ -1,6 +1,51 @@
11[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-server/CHANGELOG.md)
22[Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
33
4+0.17
5+----
6+
7+### Significant changes
8+
9+- 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)
10+
11+ The `NoContent` API endpoints should now use `NoContentVerb` combinator.
12+ The API type changes are usually of the kind
13+
14+ ```diff
15+ - :<|> PostNoContent '[JSON] NoContent
16+ + :<|> PostNoContent
17+ ```
18+
19+ i.e. one doesn't need to specify the content-type anymore. There is no content.
20+
21+- `Capture` can be `Lenient` [#1155](https://github.com/haskell-servant/servant/issues/1155) [#1156](https://github.com/haskell-servant/servant/pull/1156)
22+
23+ You can specify a lenient capture as
24+
25+ ```haskell
26+ :<|> "capture-lenient" :> Capture' '[Lenient] "foo" Int :> GET
27+ ```
28+
29+ which will make the capture always succeed. Handlers will be of the
30+ type `Either String CapturedType`, where `Left err` represents
31+ the possible parse failure.
32+
33+- *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)
34+
35+ Some APIs need query parameters rewriting, e.g. in order to support
36+ for multiple casing (camel, snake, etc) or something to that effect.
37+
38+ This could be easily achieved by using WAI Middleware and modyfing
39+ request's `Query`. But QueryParam, QueryParams and QueryFlag use
40+ `rawQueryString`. By using `queryString` rather then `rawQueryString`
41+ we can enable such rewritings.
42+
43+- *servant* *servant-server* Make packages `build-type: Simple` [#1263](https://github.com/haskell-servant/servant/pull/1263)
44+
45+ We used `build-type: Custom`, but it's problematic e.g.
46+ for cross-compiling. The benefit is small, as the doctests
47+ can be run other ways too (though not so conviniently).
48+
4490.16.2
550------
651
servant-server/servant-server.cabal+1−1
@@ -1,6 +1,6 @@
11cabal-version: >=1.10
22name: servant-server
3−version: 0.16
3+version: 0.17
44
55synopsis: A family of combinators for defining webservices APIs and serving them
66category: Servant, Web
servant/CHANGELOG.md+102
@@ -1,5 +1,107 @@
11[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
22
3+0.17
4+----
5+
6+### Significant changes
7+
8+- 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)
9+
10+ The `NoContent` API endpoints should now use `NoContentVerb` combinator.
11+ The API type changes are usually of the kind
12+
13+ ```diff
14+ - :<|> PostNoContent '[JSON] NoContent
15+ + :<|> PostNoContent
16+ ```
17+
18+ i.e. one doesn't need to specify the content-type anymore. There is no content.
19+
20+- `Capture` can be `Lenient` [#1155](https://github.com/haskell-servant/servant/issues/1155) [#1156](https://github.com/haskell-servant/servant/pull/1156)
21+
22+ You can specify a lenient capture as
23+
24+ ```haskell
25+ :<|> "capture-lenient" :> Capture' '[Lenient] "foo" Int :> GET
26+ ```
27+
28+ which will make the capture always succeed. Handlers will be of the
29+ type `Either String CapturedType`, where `Left err` represents
30+ the possible parse failure.
31+
32+- *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)
33+
34+ The new member `makeClientRequest` of `ClientEnv` is used to create
35+ `http-client` `Request` from `servant-client-core` `Request`.
36+ This functionality can be used for example to set
37+ dynamic timeouts for each request.
38+
39+- *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)
40+
41+ Some APIs need query parameters rewriting, e.g. in order to support
42+ for multiple casing (camel, snake, etc) or something to that effect.
43+
44+ This could be easily achieved by using WAI Middleware and modyfing
45+ request's `Query`. But QueryParam, QueryParams and QueryFlag use
46+ `rawQueryString`. By using `queryString` rather then `rawQueryString`
47+ we can enable such rewritings.
48+
49+- *servant* *servant-server* Make packages `build-type: Simple` [#1263](https://github.com/haskell-servant/servant/pull/1263)
50+
51+ We used `build-type: Custom`, but it's problematic e.g.
52+ for cross-compiling. The benefit is small, as the doctests
53+ can be run other ways too (though not so conviniently).
54+
55+- *servant* Remove deprecated modules [1268#](https://github.com/haskell-servant/servant/pull/1268)
56+
57+ - `Servant.Utils.Links` is `Servant.Links`
58+ - `Servant.API.Internal.Test.ComprehensiveAPI` is `Servant.Test.ComprehensiveAPI`
59+
60+### Other changes
61+
62+- *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)
63+
64+ For `Verb`s with response `Headers`, the implementation didn't check
65+ for the content-type of the response. Now it does.
66+
67+- *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)
68+
69+ Servant supports defining the same route multiple times with different
70+ content-types and result-types, but servant-docs was only documenting
71+ the first of copy of such duplicated routes. It now combines the
72+ documentation from all the copies.
73+
74+ Unfortunately, it is not yet possible for the documentation to specify
75+ multiple status codes.
76+
77+- Add sponsorship button [#1190](https://github.com/haskell-servant/servant/pull/1190)
78+
79+ [Well-Typed](https://www.well-typed.com/) is a consultancy which could help you with `servant` issues
80+ (See consultancies section on https://www.servant.dev/).
81+
82+- Try changelog-d for changelog management [#1230](https://github.com/haskell-servant/servant/pull/1230)
83+
84+ Check the [CONTRIBUTING.md](https://github.com/haskell-servant/servant/blob/master/CONTRIBUTING.md) for details
85+
86+- 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)
87+
88+ We are experiencing some bitrotting of cookbook recipe dependencies,
89+ therefore some of them aren't build as part of our CI anymore.
90+
91+- 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)
92+
93+ - [OIDC Recipe](#TODO)
94+ - [MySQL Recipe](#TODO)
95+
96+- *servant-jsaddle* Progress on servant-jsaddle [#1216](https://github.com/haskell-servant/servant/pull/1216)
97+- *servant-docs* Prevent race-conditions in testing [#1194](https://github.com/haskell-servant/servant/pull/1194)
98+- *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)
99+- *servant* Remove unused extensions from cabal file [#1201](https://github.com/haskell-servant/servant/pull/1201)
100+- *servant-client* Redact the authorization header in Show and exceptions [#1238](https://github.com/haskell-servant/servant/pull/1238)
101+- 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)
102+- 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)
103+
104+
31050.16.2
4106------
5107
servant/servant.cabal+1−6
@@ -1,6 +1,6 @@
11cabal-version: >=1.10
22name: servant
3−version: 0.16
3+version: 0.17
44
55synopsis: A family of combinators for defining webservices APIs
66category: Servant, Web
@@ -74,11 +74,6 @@ library
7474 exposed-modules:
7575 Servant.Links
7676
77− -- Deprecated modules, to be removed in late 2019
78− exposed-modules:
79− Servant.Utils.Links
80− Servant.API.Internal.Test.ComprehensiveAPI
81−
8277 -- Bundled with GHC: Lower bound to not force re-installs
8378 -- text and mtl are bundled starting with GHC-8.4
8479 --
servant/src/Servant/API/Internal/Test/ComprehensiveAPI.hsdeleted−6
@@ -1,6 +0,0 @@
1−module Servant.API.Internal.Test.ComprehensiveAPI
2− {-# DEPRECATED "Use Servant.TestComprehensiveAPI" #-}
3− ( module Servant.Test.ComprehensiveAPI )
4− where
5−
6−import Servant.Test.ComprehensiveAPI
servant/src/Servant/Utils/Links.hsdeleted−6
@@ -1,6 +0,0 @@
1−module Servant.Utils.Links
2− {-# DEPRECATED "Use Servant.Links." #-}
3− ( module Servant.Links )
4− where
5−
6−import Servant.Links