Merge pull request #985 from phadej/forward-port

Forward port
This commit is contained in:
Oleg Grenrus 2018-06-19 22:27:34 +03:00 committed by GitHub
commit 77ea599c63
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 229 additions and 124 deletions

View file

@ -64,17 +64,21 @@ install:
- BENCH=${BENCH---enable-benchmarks} - BENCH=${BENCH---enable-benchmarks}
- TEST=${TEST---enable-tests} - TEST=${TEST---enable-tests}
- HADDOCK=${HADDOCK-true} - HADDOCK=${HADDOCK-true}
- INSTALLED=${INSTALLED-true} - UNCONSTRAINED=${UNCONSTRAINED-true}
- NOINSTALLEDCONSTRAINTS=${NOINSTALLEDCONSTRAINTS-false}
- GHCHEAD=${GHCHEAD-false} - GHCHEAD=${GHCHEAD-false}
- travis_retry cabal update -v - travis_retry cabal update -v
- "sed -i.bak 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config" - "sed -i.bak 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config"
- rm -fv cabal.project cabal.project.local - rm -fv cabal.project cabal.project.local
- "if [ $HCNUMVER -ge 70800 ]; then sed -i.bak 's/-- ghc-options:.*/ghc-options: -j2/' ${HOME}/.cabal/config; fi" - "if [ $HCNUMVER -ge 70800 ]; then sed -i.bak 's/-- ghc-options:.*/ghc-options: -j2/' ${HOME}/.cabal/config; fi"
- grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$' - grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$'
- "printf 'packages: \"servant\" \"servant-client\" \"servant-client-core\" \"servant-docs\" \"servant-foreign\" \"servant-server\" \"doc/tutorial\" \"doc/cookbook/basic-auth\" \"doc/cookbook/db-postgres-pool\" \"doc/cookbook/db-sqlite-simple\" \"doc/cookbook/https\" \"doc/cookbook/pagination\" \"doc/cookbook/structuring-apis\" \"doc/cookbook/using-custom-monad\"\\n' > cabal.project" - "printf 'packages: \"servant\" \"servant-client\" \"servant-client-core\" \"servant-docs\" \"servant-foreign\" \"servant-server\" \"doc/tutorial\" \"doc/cookbook/basic-auth\" \"doc/cookbook/db-postgres-pool\" \"doc/cookbook/db-sqlite-simple\" \"doc/cookbook/file-upload\" \"doc/cookbook/https\" \"doc/cookbook/jwt-and-basic-auth\" \"doc/cookbook/pagination\" \"doc/cookbook/structuring-apis\" \"doc/cookbook/using-custom-monad\"\\n' > cabal.project"
- "echo 'constraints: foundation >=0.0.14,memory <0.14.12 || >0.14.12' >> cabal.project" - "echo 'constraints: foundation >=0.0.14,memory <0.14.12 || >0.14.12' >> cabal.project"
- "echo 'allow-newer: servant-auth-server:http-types,servant-auth-server:servant-server, http-media:base, servant-js:servant,servant-pagination:servant,servant-pagination:servant-server' >> cabal.project" - "echo 'allow-newer: servant-auth-server:http-types,servant-auth-server:servant-server, servant-pagination:servant,servant-pagination:servant-server' >> cabal.project"
- cat cabal.project - touch cabal.project.local
- "if ! $NOINSTALLEDCONSTRAINTS; then for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/^/constraints: /' | sed 's/-[^-]*$/ installed/' >> cabal.project.local; done; fi"
- cat cabal.project || true
- cat cabal.project.local || true
- if [ -f "servant/configure.ac" ]; then - if [ -f "servant/configure.ac" ]; then
(cd "servant" && autoreconf -i); (cd "servant" && autoreconf -i);
fi fi
@ -105,9 +109,15 @@ install:
- if [ -f "doc/cookbook/db-sqlite-simple/configure.ac" ]; then - if [ -f "doc/cookbook/db-sqlite-simple/configure.ac" ]; then
(cd "doc/cookbook/db-sqlite-simple" && autoreconf -i); (cd "doc/cookbook/db-sqlite-simple" && autoreconf -i);
fi fi
- if [ -f "doc/cookbook/file-upload/configure.ac" ]; then
(cd "doc/cookbook/file-upload" && autoreconf -i);
fi
- if [ -f "doc/cookbook/https/configure.ac" ]; then - if [ -f "doc/cookbook/https/configure.ac" ]; then
(cd "doc/cookbook/https" && autoreconf -i); (cd "doc/cookbook/https" && autoreconf -i);
fi fi
- if [ -f "doc/cookbook/jwt-and-basic-auth/configure.ac" ]; then
(cd "doc/cookbook/jwt-and-basic-auth" && autoreconf -i);
fi
- if [ -f "doc/cookbook/pagination/configure.ac" ]; then - if [ -f "doc/cookbook/pagination/configure.ac" ]; then
(cd "doc/cookbook/pagination" && autoreconf -i); (cd "doc/cookbook/pagination" && autoreconf -i);
fi fi
@ -118,7 +128,7 @@ install:
(cd "doc/cookbook/using-custom-monad" && autoreconf -i); (cd "doc/cookbook/using-custom-monad" && autoreconf -i);
fi fi
- rm -f cabal.project.freeze - rm -f cabal.project.freeze
- rm -rf .ghc.environment.* "servant"/dist "servant-client"/dist "servant-client-core"/dist "servant-docs"/dist "servant-foreign"/dist "servant-server"/dist "doc/tutorial"/dist "doc/cookbook/basic-auth"/dist "doc/cookbook/db-postgres-pool"/dist "doc/cookbook/db-sqlite-simple"/dist "doc/cookbook/https"/dist "doc/cookbook/pagination"/dist "doc/cookbook/structuring-apis"/dist "doc/cookbook/using-custom-monad"/dist - rm -rf .ghc.environment.* "servant"/dist "servant-client"/dist "servant-client-core"/dist "servant-docs"/dist "servant-foreign"/dist "servant-server"/dist "doc/tutorial"/dist "doc/cookbook/basic-auth"/dist "doc/cookbook/db-postgres-pool"/dist "doc/cookbook/db-sqlite-simple"/dist "doc/cookbook/file-upload"/dist "doc/cookbook/https"/dist "doc/cookbook/jwt-and-basic-auth"/dist "doc/cookbook/pagination"/dist "doc/cookbook/structuring-apis"/dist "doc/cookbook/using-custom-monad"/dist
- DISTDIR=$(mktemp -d /tmp/dist-test.XXXX) - DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
# Here starts the actual work to be performed for the package under test; # Here starts the actual work to be performed for the package under test;
@ -136,22 +146,26 @@ script:
- (cd "doc/cookbook/basic-auth" && cabal sdist) - (cd "doc/cookbook/basic-auth" && cabal sdist)
- (cd "doc/cookbook/db-postgres-pool" && cabal sdist) - (cd "doc/cookbook/db-postgres-pool" && cabal sdist)
- (cd "doc/cookbook/db-sqlite-simple" && cabal sdist) - (cd "doc/cookbook/db-sqlite-simple" && cabal sdist)
- (cd "doc/cookbook/file-upload" && cabal sdist)
- (cd "doc/cookbook/https" && cabal sdist) - (cd "doc/cookbook/https" && cabal sdist)
- (cd "doc/cookbook/jwt-and-basic-auth" && cabal sdist)
- (cd "doc/cookbook/pagination" && cabal sdist) - (cd "doc/cookbook/pagination" && cabal sdist)
- (cd "doc/cookbook/structuring-apis" && cabal sdist) - (cd "doc/cookbook/structuring-apis" && cabal sdist)
- (cd "doc/cookbook/using-custom-monad" && cabal sdist) - (cd "doc/cookbook/using-custom-monad" && cabal sdist)
- echo -en 'travis_fold:end:sdist\\r' - echo -en 'travis_fold:end:sdist\\r'
- echo Unpacking... && echo -en 'travis_fold:start:unpack\\r' - echo Unpacking... && echo -en 'travis_fold:start:unpack\\r'
- mv "servant"/dist/servant-*.tar.gz "servant-client"/dist/servant-client-*.tar.gz "servant-client-core"/dist/servant-client-core-*.tar.gz "servant-docs"/dist/servant-docs-*.tar.gz "servant-foreign"/dist/servant-foreign-*.tar.gz "servant-server"/dist/servant-server-*.tar.gz "doc/tutorial"/dist/tutorial-*.tar.gz "doc/cookbook/basic-auth"/dist/cookbook-basic-auth-*.tar.gz "doc/cookbook/db-postgres-pool"/dist/cookbook-db-postgres-pool-*.tar.gz "doc/cookbook/db-sqlite-simple"/dist/cookbook-db-sqlite-simple-*.tar.gz "doc/cookbook/https"/dist/cookbook-https-*.tar.gz "doc/cookbook/pagination"/dist/cookbook-pagination-*.tar.gz "doc/cookbook/structuring-apis"/dist/cookbook-structuring-apis-*.tar.gz "doc/cookbook/using-custom-monad"/dist/cookbook-using-custom-monad-*.tar.gz ${DISTDIR}/ - mv "servant"/dist/servant-*.tar.gz "servant-client"/dist/servant-client-*.tar.gz "servant-client-core"/dist/servant-client-core-*.tar.gz "servant-docs"/dist/servant-docs-*.tar.gz "servant-foreign"/dist/servant-foreign-*.tar.gz "servant-server"/dist/servant-server-*.tar.gz "doc/tutorial"/dist/tutorial-*.tar.gz "doc/cookbook/basic-auth"/dist/cookbook-basic-auth-*.tar.gz "doc/cookbook/db-postgres-pool"/dist/cookbook-db-postgres-pool-*.tar.gz "doc/cookbook/db-sqlite-simple"/dist/cookbook-db-sqlite-simple-*.tar.gz "doc/cookbook/file-upload"/dist/cookbook-file-upload-*.tar.gz "doc/cookbook/https"/dist/cookbook-https-*.tar.gz "doc/cookbook/jwt-and-basic-auth"/dist/cookbook-jwt-and-basic-auth-*.tar.gz "doc/cookbook/pagination"/dist/cookbook-pagination-*.tar.gz "doc/cookbook/structuring-apis"/dist/cookbook-structuring-apis-*.tar.gz "doc/cookbook/using-custom-monad"/dist/cookbook-using-custom-monad-*.tar.gz ${DISTDIR}/
- cd ${DISTDIR} || false - cd ${DISTDIR} || false
- find . -maxdepth 1 -name '*.tar.gz' -exec tar -xvf '{}' \; - find . -maxdepth 1 -name '*.tar.gz' -exec tar -xvf '{}' \;
- "printf 'packages: servant-*/*.cabal servant-client-*/*.cabal servant-client-core-*/*.cabal servant-docs-*/*.cabal servant-foreign-*/*.cabal servant-server-*/*.cabal tutorial-*/*.cabal cookbook-basic-auth-*/*.cabal cookbook-db-postgres-pool-*/*.cabal cookbook-db-sqlite-simple-*/*.cabal cookbook-https-*/*.cabal cookbook-pagination-*/*.cabal cookbook-structuring-apis-*/*.cabal cookbook-using-custom-monad-*/*.cabal\\n' > cabal.project" - "printf 'packages: servant-*/*.cabal servant-client-*/*.cabal servant-client-core-*/*.cabal servant-docs-*/*.cabal servant-foreign-*/*.cabal servant-server-*/*.cabal tutorial-*/*.cabal cookbook-basic-auth-*/*.cabal cookbook-db-postgres-pool-*/*.cabal cookbook-db-sqlite-simple-*/*.cabal cookbook-file-upload-*/*.cabal cookbook-https-*/*.cabal cookbook-jwt-and-basic-auth-*/*.cabal cookbook-pagination-*/*.cabal cookbook-structuring-apis-*/*.cabal cookbook-using-custom-monad-*/*.cabal\\n' > cabal.project"
- "echo 'constraints: foundation >=0.0.14,memory <0.14.12 || >0.14.12' >> cabal.project" - "echo 'constraints: foundation >=0.0.14,memory <0.14.12 || >0.14.12' >> cabal.project"
- "echo 'allow-newer: servant-auth-server:http-types,servant-auth-server:servant-server, http-media:base, servant-js:servant,servant-pagination:servant,servant-pagination:servant-server' >> cabal.project" - "echo 'allow-newer: servant-auth-server:http-types,servant-auth-server:servant-server, servant-pagination:servant,servant-pagination:servant-server' >> cabal.project"
- cat cabal.project - touch cabal.project.local
- "if ! $NOINSTALLEDCONSTRAINTS; then for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/^/constraints: /' | sed 's/-[^-]*$/ installed/' >> cabal.project.local; done; fi"
- cat cabal.project || true
- cat cabal.project.local || true
- echo -en 'travis_fold:end:unpack\\r' - echo -en 'travis_fold:end:unpack\\r'
- echo Building with tests and benchmarks... && echo -en 'travis_fold:start:build-everything\\r' - echo Building with tests and benchmarks... && echo -en 'travis_fold:start:build-everything\\r'
# build & run tests, build benchmarks # build & run tests, build benchmarks
- cabal new-build -w ${HC} ${TEST} ${BENCH} all - cabal new-build -w ${HC} ${TEST} ${BENCH} all
@ -164,5 +178,10 @@ script:
- if $HADDOCK; then cabal new-haddock -w ${HC} ${TEST} ${BENCH} all; else echo "Skipping haddock generation";fi - if $HADDOCK; then cabal new-haddock -w ${HC} ${TEST} ${BENCH} all; else echo "Skipping haddock generation";fi
- echo -en 'travis_fold:end:haddock\\r' - echo -en 'travis_fold:end:haddock\\r'
- echo Building without installed constraints for packages in global-db... && echo -en 'travis_fold:start:build-installed\\r'
# Build without installed constraints for packages in global-db
- if $UNCONSTRAINED; then rm -f cabal.project.local; echo cabal new-build -w ${HC} --disable-tests --disable-benchmarks all; else echo "Not building without installed constraints"; fi
- echo -en 'travis_fold:end:build-installed\\r'
# REGENDATA ["--config=cabal.make-travis-yml","--output=.travis.yml","cabal.project"] # REGENDATA ["--config=cabal.make-travis-yml","--output=.travis.yml","cabal.project"]
# EOF # EOF

View file

@ -6,7 +6,6 @@ install-dependencies-step: False
-- this speed-ups the build a little, but we have to check these for release -- this speed-ups the build a little, but we have to check these for release
no-tests-no-benchmarks: False no-tests-no-benchmarks: False
build-with-installed-step: False
-- Don't run cabal check, as cookbook examples won't pass it -- Don't run cabal check, as cookbook examples won't pass it
cabal-check: False cabal-check: False

View file

@ -11,11 +11,9 @@ packages: servant/
doc/cookbook/basic-auth doc/cookbook/basic-auth
doc/cookbook/db-postgres-pool doc/cookbook/db-postgres-pool
doc/cookbook/db-sqlite-simple doc/cookbook/db-sqlite-simple
-- MkLink changed doc/cookbook/file-upload
-- doc/cookbook/file-upload
doc/cookbook/https doc/cookbook/https
-- servant-auth-* doesn't support GHC-8.4 doc/cookbook/jwt-and-basic-auth
-- doc/cookbook/jwt-and-basic-auth
doc/cookbook/pagination doc/cookbook/pagination
doc/cookbook/structuring-apis doc/cookbook/structuring-apis
doc/cookbook/using-custom-monad doc/cookbook/using-custom-monad
@ -30,9 +28,5 @@ constraints:
memory <0.14.12 || >0.14.12 memory <0.14.12 || >0.14.12
allow-newer: allow-newer:
http-media:base
allow-newer:
servant-js:servant,
servant-pagination:servant, servant-pagination:servant,
servant-pagination:servant-server servant-pagination:servant-server

View file

@ -4,10 +4,50 @@
0.14 0.14
---- ----
- Add a `hoistClientMonad` method to the `HasClient` typeclass, for - `Stream` takes a status code argument
changing the monad in which client functions run.
```diff
-Stream method framing ctype a
+Stream method status framing ctype a
```
([#966](https://github.com/haskell-servant/servant/pull/966)
[#972](https://github.com/haskell-servant/servant/pull/972))
- `ToStreamGenerator` definition changed, so it's possible to write an instance
for conduits.
```diff
-class ToStreamGenerator f a where
- toStreamGenerator :: f a -> StreamGenerator a
+class ToStreamGenerator a b | a -> b where
+ toStreamGenerator :: a -> StreamGenerator b
```
([#959](https://github.com/haskell-servant/servant/pull/959))
- Added `NoFraming` streaming strategy
([#959](https://github.com/haskell-servant/servant/pull/959))
- *servant-client-core* Free `Client` implementation.
Useful for testing `HasClient` instances.
([#920](https://github.com/haskell-servant/servant/pull/920))
- *servant-client-core* Add `hoistClient` to `HasClient`.
Just like `hoistServer` allows us to change the monad in which request handlers
of a web application live in, we also have `hoistClient` for changing the monad
in which *client functions* live.
Read [tutorial section for more information](https://haskell-servant.readthedocs.io/en/release-0.14/tutorial/Client.html#changing-the-monad-the-client-functions-live-in).
([#936](https://github.com/haskell-servant/servant/pull/936)) ([#936](https://github.com/haskell-servant/servant/pull/936))
iF you have own combinators, you'll need to define a new method of
`HasClient` class, for example:
```haskell
type Client m (MyCombinator :> api) = MyValue :> Client m api
hoistClientMonad pm _ nt cl = hoistClientMonad pm (Proxy :: Proxy api) nt . cl
```
0.13.0.1 0.13.0.1
-------- --------

View file

@ -51,12 +51,11 @@ library
base >= 4.7 && < 4.12 base >= 4.7 && < 4.12
, bytestring >= 0.10.4.0 && < 0.11 , bytestring >= 0.10.4.0 && < 0.11
, containers >= 0.5.5.1 && < 0.6 , containers >= 0.5.5.1 && < 0.6
, mtl >= 2.1 && < 2.3
, text >= 1.2.3.0 && < 1.3 , text >= 1.2.3.0 && < 1.3
if !impl(ghc >= 8.0) if !impl(ghc >= 8.0)
build-depends: build-depends:
semigroups >=0.18.3 && <0.19 semigroups >=0.18.4 && <0.19
-- Servant dependencies -- Servant dependencies
build-depends: build-depends:
@ -65,16 +64,16 @@ library
-- Other dependencies: Lower bound around what is in the latest Stackage LTS. -- 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. -- Here can be exceptions if we really need features from the newer versions.
build-depends: build-depends:
base-compat >= 0.9.3 && < 0.11 base-compat >= 0.10.1 && < 0.11
, base64-bytestring >= 1.0.0.1 && < 1.1 , base64-bytestring >= 1.0.0.1 && < 1.1
, exceptions >= 0.8.3 && < 0.11 , exceptions >= 0.10.0 && < 0.11
, free >= 5.0.1 && < 5.1 , free >= 5.0.2 && < 5.1
, generics-sop >= 0.3.1.0 && < 0.4 , generics-sop >= 0.3.2.0 && < 0.4
, http-api-data >= 0.3.7.1 && < 0.4 , http-api-data >= 0.3.8.1 && < 0.4
, http-media >= 0.7.1.1 && < 0.8 , http-media >= 0.7.1.2 && < 0.8
, http-types >= 0.12 && < 0.13 , http-types >= 0.12.1 && < 0.13
, network-uri >= 2.6.1.0 && < 2.7 , network-uri >= 2.6.1.0 && < 2.7
, safe >= 0.3.15 && < 0.4 , safe >= 0.3.17 && < 0.4
hs-source-dirs: src hs-source-dirs: src
default-language: Haskell2010 default-language: Haskell2010
@ -99,8 +98,8 @@ test-suite spec
-- Additonal dependencies -- Additonal dependencies
build-depends: build-depends:
deepseq >= 1.3.0.2 && <1.5 deepseq >= 1.3.0.2 && <1.5
, hspec >= 2.4.4 && <2.6 , hspec >= 2.4.1 && <2.6
, QuickCheck >= 2.10.1 && < 2.12 , QuickCheck >= 2.11.3 && < 2.12
build-tool-depends: build-tool-depends:
hspec-discover:hspec-discover >= 2.4.4 && <2.6 hspec-discover:hspec-discover >= 2.5.1 && <2.6

View file

@ -4,10 +4,45 @@
0.14 0.14
---- ----
- Add `hoistClient` for changing the monad in which - `Stream` takes a status code argument
client functions run.
```diff
-Stream method framing ctype a
+Stream method status framing ctype a
```
([#966](https://github.com/haskell-servant/servant/pull/966)
[#972](https://github.com/haskell-servant/servant/pull/972))
- `ToStreamGenerator` definition changed, so it's possible to write an instance
for conduits.
```diff
-class ToStreamGenerator f a where
- toStreamGenerator :: f a -> StreamGenerator a
+class ToStreamGenerator a b | a -> b where
+ toStreamGenerator :: a -> StreamGenerator b
```
([#959](https://github.com/haskell-servant/servant/pull/959))
- Added `NoFraming` streaming strategy
([#959](https://github.com/haskell-servant/servant/pull/959))
- *servant-client-core* Add `hoistClient` to `HasClient`.
Just like `hoistServer` allows us to change the monad in which request handlers
of a web application live in, we also have `hoistClient` for changing the monad
in which *client functions* live.
Read [tutorial section for more information](https://haskell-servant.readthedocs.io/en/release-0.14/tutorial/Client.html#changing-the-monad-the-client-functions-live-in).
([#936](https://github.com/haskell-servant/servant/pull/936)) ([#936](https://github.com/haskell-servant/servant/pull/936))
- *servant-client* Add more constructors to `RequestBody`, including
`RequestBodyStream`.
*Note:* we are looking for http-library agnostic API,
so the might change again soon.
Tell us which constructors are useful for you!
([#913](https://github.com/haskell-servant/servant/pull/913))
0.13.0.1 0.13.0.1
-------- --------

View file

@ -51,7 +51,7 @@ library
, transformers >= 0.3.0.0 && < 0.6 , transformers >= 0.3.0.0 && < 0.6
if !impl(ghc >= 8.0) if !impl(ghc >= 8.0)
build-depends: semigroups >=0.18.3 && <0.19 build-depends: semigroups >=0.18.4 && <0.19
-- Servant dependencies -- Servant dependencies
build-depends: build-depends:
@ -60,19 +60,16 @@ library
-- Other dependencies: Lower bound around what is in the latest Stackage LTS. -- 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. -- Here can be exceptions if we really need features from the newer versions.
build-depends: build-depends:
aeson >= 1.2.3.0 && < 1.5 base-compat >= 0.10.1 && < 0.11
, base-compat >= 0.9.3 && < 0.11 , http-client >= 0.5.12 && < 0.6
, attoparsec >= 0.13.2.0 && < 0.14 , http-media >= 0.7.1.2 && < 0.8
, http-client >= 0.5.7.1 && < 0.6 , http-types >= 0.12.1 && < 0.13
, http-client-tls >= 0.3.5.1 && < 0.4 , exceptions >= 0.10.0 && < 0.11
, http-media >= 0.7.1.1 && < 0.8 , monad-control >= 1.0.2.3 && < 1.1
, http-types >= 0.12 && < 0.13 , semigroupoids >= 5.2.2 && < 5.3
, exceptions >= 0.8.3 && < 0.11 , stm >= 2.4.5.0 && < 2.5
, monad-control >= 1.0.0.4 && < 1.1 , transformers-base >= 0.4.5.2 && < 0.5
, semigroupoids >= 5.2.1 && < 5.3 , transformers-compat >= 0.6.2 && < 0.7
, stm >= 2.4.4.1 && < 2.5
, transformers-base >= 0.4.4 && < 0.5
, transformers-compat >= 0.5.1 && < 0.7
hs-source-dirs: src hs-source-dirs: src
default-language: Haskell2010 default-language: Haskell2010
@ -97,10 +94,8 @@ test-suite spec
, aeson , aeson
, base-compat , base-compat
, bytestring , bytestring
, containers
, http-api-data , http-api-data
, http-client , http-client
, http-media
, http-types , http-types
, mtl , mtl
, servant-client , servant-client
@ -117,18 +112,16 @@ test-suite spec
-- Additonal dependencies -- Additonal dependencies
build-depends: build-depends:
deepseq >= 1.3.0.2 && < 1.5 generics-sop >= 0.3.2.0 && < 0.4
, generics-sop >= 0.3.1.0 && < 0.4 , hspec >= 2.5.1 && < 2.6
, hspec >= 2.4.4 && < 2.6
, HUnit >= 1.6 && < 1.7 , HUnit >= 1.6 && < 1.7
, random-bytestring >= 0.1 && < 0.2
, network >= 2.6.3.2 && < 2.8 , network >= 2.6.3.2 && < 2.8
, QuickCheck >= 2.10.1 && < 2.12 , QuickCheck >= 2.10.1 && < 2.12
, servant == 0.14.* , servant == 0.14.*
, servant-server == 0.14.* , servant-server == 0.14.*
build-tool-depends: build-tool-depends:
hspec-discover:hspec-discover >= 2.4.4 && < 2.6 hspec-discover:hspec-discover >= 2.5.1 && < 2.6
test-suite readme test-suite readme
type: exitcode-stdio-1.0 type: exitcode-stdio-1.0
@ -136,3 +129,4 @@ test-suite readme
build-depends: base, servant, http-client, text, servant-client, markdown-unlit build-depends: base, servant, http-client, text, servant-client, markdown-unlit
build-tool-depends: markdown-unlit:markdown-unlit build-tool-depends: markdown-unlit:markdown-unlit
ghc-options: -pgmL markdown-unlit ghc-options: -pgmL markdown-unlit
default-language: Haskell2010

View file

@ -64,7 +64,7 @@ library
, case-insensitive >= 1.2.0.10 && < 1.3 , case-insensitive >= 1.2.0.10 && < 1.3
, control-monad-omega >= 0.3.1 && < 0.4 , control-monad-omega >= 0.3.1 && < 0.4
, hashable >= 1.2.6.1 && < 1.3 , hashable >= 1.2.6.1 && < 1.3
, http-media >= 0.7.1.1 && < 0.8 , http-media >= 0.7.0 && < 0.8
, http-types >= 0.12 && < 0.13 , http-types >= 0.12 && < 0.13
, lens >= 4.15.4 && < 4.17 , lens >= 4.15.4 && < 4.17
, string-conversions >= 0.4.0.1 && < 0.5 , string-conversions >= 0.4.0.1 && < 0.5

View file

@ -1,5 +1,6 @@
name: servant-foreign name: servant-foreign
version: 0.11.1 version: 0.11.1
x-revision: 2
synopsis: Helpers for generating clients for servant APIs in any programming language synopsis: Helpers for generating clients for servant APIs in any programming language
description: description:
Helper types and functions for generating client functions for servant APIs in any programming language Helper types and functions for generating client functions for servant APIs in any programming language

View file

@ -1,6 +1,52 @@
[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-server/CHANGELOG.md) [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) [Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
0.14
----
- `Stream` takes a status code argument
```diff
-Stream method framing ctype a
+Stream method status framing ctype a
```
([#966](https://github.com/haskell-servant/servant/pull/966)
[#972](https://github.com/haskell-servant/servant/pull/972))
- `ToStreamGenerator` definition changed, so it's possible to write an instance
for conduits.
```diff
-class ToStreamGenerator f a where
- toStreamGenerator :: f a -> StreamGenerator a
+class ToStreamGenerator a b | a -> b where
+ toStreamGenerator :: a -> StreamGenerator b
```
([#959](https://github.com/haskell-servant/servant/pull/959))
- Added `NoFraming` streaming strategy
([#959](https://github.com/haskell-servant/servant/pull/959))
- *servant-server* File serving in polymorphic monad.
i.e. Generalised types of `serveDirectoryFileServer` etc functions in
`Servant.Utils.StaticFiles`
([#953](https://github.com/haskell-servant/servant/pull/953))
- *servant-server* `ReqBody` content type check is recoverable.
This allows writing APIs like:
```haskell
ReqBody '[JSON] Int :> Post '[PlainText] Int
:<|> ReqBody '[PlainText] Int :> Post '[PlainText] Int
```
which is useful when handlers are subtly different,
for example may do less work.
([#937](https://github.com/haskell-servant/servant/pull/937))
0.13.0.1 0.13.0.1
-------- --------

View file

@ -40,7 +40,7 @@ custom-setup
setup-depends: setup-depends:
base >= 4 && <5, base >= 4 && <5,
Cabal, Cabal,
cabal-doctest >= 1.0.1 && <1.1 cabal-doctest >= 1.0.6 && <1.1
library library
exposed-modules: exposed-modules:
@ -71,7 +71,7 @@ library
if !impl(ghc >= 8.0) if !impl(ghc >= 8.0)
build-depends: build-depends:
semigroups >= 0.18.3 && < 0.19 semigroups >= 0.18.4 && < 0.19
-- Servant dependencies -- Servant dependencies
build-depends: build-depends:
@ -80,28 +80,22 @@ library
-- Other dependencies: Lower bound around what is in the latest Stackage LTS. -- 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. -- Here can be exceptions if we really need features from the newer versions.
build-depends: build-depends:
aeson >= 1.2.3.0 && < 1.5 base-compat >= 0.10.1 && < 0.11
, base-compat >= 0.9.3 && < 0.11
, attoparsec >= 0.13.2.0 && < 0.14
, base64-bytestring >= 1.0.0.1 && < 1.1 , base64-bytestring >= 1.0.0.1 && < 1.1
, exceptions >= 0.8.3 && < 0.11 , exceptions >= 0.10.0 && < 0.11
, http-api-data >= 0.3.7.1 && < 0.4 , http-api-data >= 0.3.8.1 && < 0.4
, http-media >= 0.7.1.1 && < 0.8 , http-media >= 0.7.1.2 && < 0.8
, http-types >= 0.12 && < 0.13 , http-types >= 0.12.1 && < 0.13
, network-uri >= 2.6.1.0 && < 2.7 , network-uri >= 2.6.1.0 && < 2.7
, monad-control >= 1.0.0.4 && < 1.1 , monad-control >= 1.0.2.3 && < 1.1
, network >= 2.6.3.2 && < 2.8 , network >= 2.6.3.5 && < 2.8
, safe >= 0.3.15 && < 0.4
, split >= 0.2.3.2 && < 0.3
, string-conversions >= 0.4.0.1 && < 0.5 , string-conversions >= 0.4.0.1 && < 0.5
, system-filepath >= 0.4 && < 0.5 , resourcet >= 1.1.11 && < 1.3
, resourcet >= 1.1.9 && < 1.3
, tagged >= 0.8.5 && < 0.9 , tagged >= 0.8.5 && < 0.9
, transformers-base >= 0.4.4 && < 0.5 , transformers-base >= 0.4.4 && < 0.5
, transformers-compat >= 0.5.1 && < 0.7 , transformers-compat >= 0.6.2 && < 0.7
, wai >= 3.2.1.1 && < 3.3 , wai >= 3.2.1.1 && < 3.3
, wai-app-static >= 3.1.6.1 && < 3.2 , wai-app-static >= 3.1.6.1 && < 3.2
, warp >= 3.2.13 && < 3.3
, word8 >= 0.1.3 && < 0.2 , word8 >= 0.1.3 && < 0.2
hs-source-dirs: src hs-source-dirs: src
@ -120,11 +114,13 @@ executable greet
base base
, servant , servant
, servant-server , servant-server
, aeson
, warp
, wai , wai
, text , text
build-depends:
aeson >= 1.3.1.1 && < 1.5
, warp >= 3.2.13 && < 3.3
test-suite spec test-suite spec
type: exitcode-stdio-1.0 type: exitcode-stdio-1.0
ghc-options: -Wall ghc-options: -Wall
@ -148,13 +144,10 @@ test-suite spec
build-depends: build-depends:
base base
, base-compat , base-compat
, aeson
, base64-bytestring , base64-bytestring
, bytestring , bytestring
, exceptions
, http-types , http-types
, mtl , mtl
, network
, resourcet , resourcet
, safe , safe
, servant , servant
@ -164,27 +157,26 @@ test-suite spec
, transformers , transformers
, transformers-compat , transformers-compat
, wai , wai
, warp
-- Additonal dependencies -- Additonal dependencies
build-depends: build-depends:
directory >= 1.2.1.0 && < 1.4 aeson >= 1.3.1.1 && < 1.5
, hspec >= 2.4.4 && < 2.6 , directory >= 1.2.1.0 && < 1.4
, hspec-wai >= 0.9 && < 0.10 , hspec >= 2.5.1 && < 2.6
, hspec-wai >= 0.9.0 && < 0.10
, QuickCheck >= 2.11.3 && < 2.12
, should-not-typecheck >= 2.1.0 && < 2.2 , should-not-typecheck >= 2.1.0 && < 2.2
, parsec >= 3.1.11 && < 3.2 , temporary >= 1.3 && < 1.4
, QuickCheck >= 2.10.1 && < 2.12
, wai-extra >= 3.0.21.0 && < 3.1 , wai-extra >= 3.0.21.0 && < 3.1
, temporary >= 1.2.0.3 && < 1.4
build-tool-depends: build-tool-depends:
hspec-discover:hspec-discover >=2.4.4 && <2.6 hspec-discover:hspec-discover >= 2.5.1 && <2.6
test-suite doctests test-suite doctests
build-depends: build-depends:
base base
, servant-server , servant-server
, doctest >= 0.13.0 && <0.16 , doctest >= 0.15.0 && <0.16
type: exitcode-stdio-1.0 type: exitcode-stdio-1.0
main-is: test/doctests.hs main-is: test/doctests.hs
buildable: True buildable: True

View file

@ -30,11 +30,11 @@
- Added `NoFraming` streaming strategy - Added `NoFraming` streaming strategy
([#959](https://github.com/haskell-servant/servant/pull/959)) ([#959](https://github.com/haskell-servant/servant/pull/959))
- *servant-client* Free `Client` implementation. - *servant-client-core* Free `Client` implementation.
Useful for testing `HasClient` instances. Useful for testing `HasClient` instances.
([#920](https://github.com/haskell-servant/servant/pull/920)) ([#920](https://github.com/haskell-servant/servant/pull/920))
- *servant-client* Add `hoistClient` to `HasClient`. - *servant-client-core* Add `hoistClient` to `HasClient`.
Just like `hoistServer` allows us to change the monad in which request handlers Just like `hoistServer` allows us to change the monad in which request handlers
of a web application live in, we also have `hoistClient` for changing the monad of a web application live in, we also have `hoistClient` for changing the monad
in which *client functions* live. in which *client functions* live.

View file

@ -34,7 +34,7 @@ custom-setup
setup-depends: setup-depends:
base >= 4 && <5, base >= 4 && <5,
Cabal, Cabal,
cabal-doctest >= 1.0.2 && <1.1 cabal-doctest >= 1.0.6 && <1.1
library library
exposed-modules: exposed-modules:
@ -77,25 +77,25 @@ library
if !impl(ghc >= 8.0) if !impl(ghc >= 8.0)
build-depends: build-depends:
semigroups >= 0.18.3 && < 0.19 semigroups >= 0.18.4 && < 0.19
-- Other dependencies: Lower bound around what is in the latest Stackage LTS. -- 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. -- Here can be exceptions if we really need features from the newer versions.
build-depends: build-depends:
base-compat >= 0.9.3 && < 0.11 base-compat >= 0.10.1 && < 0.11
, aeson >= 1.2.3.0 && < 1.5 , aeson >= 1.3.1.1 && < 1.5
, attoparsec >= 0.13.2.0 && < 0.14 , attoparsec >= 0.13.2.2 && < 0.14
, case-insensitive >= 1.2.0.10 && < 1.3 , case-insensitive >= 1.2.0.10 && < 1.3
, http-api-data >= 0.3.7.1 && < 0.4 , http-api-data >= 0.3.8.1 && < 0.4
, http-media >= 0.7.1.1 && < 0.8 , http-media >= 0.7.1.2 && < 0.8
, http-types >= 0.12 && < 0.13 , http-types >= 0.12.1 && < 0.13
, natural-transformation >= 0.4 && < 0.5 , natural-transformation >= 0.4 && < 0.5
, mmorph >= 1.1.0 && < 1.2 , mmorph >= 1.1.2 && < 1.2
, tagged >= 0.8.5 && < 0.9 , tagged >= 0.8.5 && < 0.9
, singleton-bool >= 0.1.2.0 && < 0.2 , singleton-bool >= 0.1.4 && < 0.2
, string-conversions >= 0.4.0.1 && < 0.5 , string-conversions >= 0.4.0.1 && < 0.5
, network-uri >= 2.6.1.0 && < 2.7 , network-uri >= 2.6.1.0 && < 2.7
, vault >= 0.3.0.7 && < 0.4 , vault >= 0.3.1.1 && < 0.4
hs-source-dirs: src hs-source-dirs: src
default-language: Haskell2010 default-language: Haskell2010
@ -141,7 +141,6 @@ test-suite spec
base base
, base-compat , base-compat
, aeson , aeson
, attoparsec
, bytestring , bytestring
, servant , servant
, string-conversions , string-conversions
@ -153,23 +152,23 @@ test-suite spec
-- Additonal dependencies -- Additonal dependencies
build-depends: build-depends:
aeson-compat >= 0.3.3 && < 0.4 aeson-compat >= 0.3.7.1 && < 0.4
, hspec >= 2.4.4 && < 2.6 , hspec >= 2.5.1 && < 2.6
, QuickCheck >= 2.10.1 && < 2.12 , QuickCheck >= 2.11.3 && < 2.12
, quickcheck-instances >= 0.3.16 && < 0.4 , quickcheck-instances >= 0.3.18 && < 0.4
build-tool-depends: build-tool-depends:
hspec-discover:hspec-discover >= 2.4.4 && < 2.6 hspec-discover:hspec-discover >= 2.5.1 && < 2.6
test-suite doctests test-suite doctests
build-depends: build-depends:
base base
, servant , servant
, doctest >= 0.13.0 && <0.16 , doctest >= 0.15.0 && <0.16
-- We test Links failure with doctest, so we need extra dependencies -- We test Links failure with doctest, so we need extra dependencies
build-depends: build-depends:
hspec >= 2.4.4 && < 2.6 hspec >= 2.5.1 && < 2.6
type: exitcode-stdio-1.0 type: exitcode-stdio-1.0
main-is: test/doctests.hs main-is: test/doctests.hs

View file

@ -1,5 +1,5 @@
# Let's try to keep resolver at the first day of the month # Let's try to keep resolver at the first day of the month
resolver: nightly-2018-03-01 resolver: nightly-2018-06-01
packages: packages:
- servant-client/ - servant-client/
- servant-client-core/ - servant-client-core/
@ -8,18 +8,5 @@ packages:
- servant-server/ - servant-server/
- servant/ - servant/
extra-deps:
- cabal-doctest-1.0.6
- http-api-data-0.3.7.2
- http-types-0.12
- text-1.2.3.0
- aeson-1.3.0.0
- exceptions-0.10.0
- aeson-compat-0.3.7.1
- free-5.0.1
- lens-4.16
- random-bytestring-0.1.3
- pcg-random-0.1.3.5
# allow-newer: true # ignores all bounds, that's a sledgehammer # allow-newer: true # ignores all bounds, that's a sledgehammer
# - doc/tutorial/ # - doc/tutorial/