git.iko.soy/typeable/servant
on master help sign in
Bump version to 0.17
commit3bf4b100a825c95c0674d7860b3f7e735c00f8ea authorOleg Grenrus <oleg.grenrus@iki.fi> dateThu 23 Jan 2020, 12:31 (7 years ago) parent8372436
13 files changed+160−60
.travis.yml+28−30 cabal.project+5 servant-client-core/servant-client-core.cabal+2−2 servant-client/servant-client.cabal+5−5 servant-conduit/servant-conduit.cabal+4−4 servant-docs/servant-docs.cabal+2−2 servant-foreign/servant-foreign.cabal+2−3 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/servant-server.cabal+1−1 servant/CHANGELOG.md+97 servant/servant.cabal+1−1
.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
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/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/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/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/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/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+97
@@ -1,5 +1,102 @@
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+### Other changes
56+
57+- *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)
58+
59+ For `Verb`s with response `Headers`, the implementation didn't check
60+ for the content-type of the response. Now it does.
61+
62+- *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)
63+
64+ Servant supports defining the same route multiple times with different
65+ content-types and result-types, but servant-docs was only documenting
66+ the first of copy of such duplicated routes. It now combines the
67+ documentation from all the copies.
68+
69+ Unfortunately, it is not yet possible for the documentation to specify
70+ multiple status codes.
71+
72+- Add sponsorship button [#1190](https://github.com/haskell-servant/servant/pull/1190)
73+
74+ [Well-Typed](https://www.well-typed.com/) is a consultancy which could help you with `servant` issues
75+ (See consultancies section on https://www.servant.dev/).
76+
77+- Try changelog-d for changelog management [#1230](https://github.com/haskell-servant/servant/pull/1230)
78+
79+ Check the [CONTRIBUTING.md](https://github.com/haskell-servant/servant/blob/master/CONTRIBUTING.md) for details
80+
81+- 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)
82+
83+ We are experiencing some bitrotting of cookbook recipe dependencies,
84+ therefore some of them aren't build as part of our CI anymore.
85+
86+- 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)
87+
88+ - [OIDC Recipe](#TODO)
89+ - [MySQL Recipe](#TODO)
90+
91+- *servant-jsaddle* Progress on servant-jsaddle [#1216](https://github.com/haskell-servant/servant/pull/1216)
92+- *servant-docs* Prevent race-conditions in testing [#1194](https://github.com/haskell-servant/servant/pull/1194)
93+- *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)
94+- *servant* Remove unused extensions from cabal file [#1201](https://github.com/haskell-servant/servant/pull/1201)
95+- *servant-client* Redact the authorization header in Show and exceptions [#1238](https://github.com/haskell-servant/servant/pull/1238)
96+- 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)
97+- 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)
98+
99+
31000.16.2
4101------
5102
servant/servant.cabal+1−1
@@ -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