on daa5d4a help sign in
.travis.yml+18−7
since splitsnapshots
unifiedsplit
@@ -13,7 +13,7 @@ git:
13branches:
13branches:
14 only:
14 only:
15 - master
15 - master
16− - release-0.12
16+ - release-0.14
17
17
18cache:
18cache:
19 directories:
19 directories:
@@ -65,7 +65,8 @@ install:
65 - BENCH=${BENCH---enable-benchmarks}
65 - BENCH=${BENCH---enable-benchmarks}
66 - TEST=${TEST---enable-tests}
66 - TEST=${TEST---enable-tests}
67 - HADDOCK=${HADDOCK-true}
67 - HADDOCK=${HADDOCK-true}
68− - INSTALLED=${INSTALLED-true}
68+ - UNCONSTRAINED=${UNCONSTRAINED-true}
69+ - NOINSTALLEDCONSTRAINTS=${NOINSTALLEDCONSTRAINTS-false}
69 - GHCHEAD=${GHCHEAD-false}
70 - GHCHEAD=${GHCHEAD-false}
70 - travis_retry cabal update -v
71 - travis_retry cabal update -v
71 - "sed -i.bak 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config"
72 - "sed -i.bak 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config"
@@ -74,8 +75,11 @@ install:
74 - grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$'
75 - grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$'
75 - "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"
76 - "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"
76 - "echo 'constraints: foundation >=0.0.14,memory <0.14.12 || >0.14.12' >> cabal.project"
77 - "echo 'constraints: foundation >=0.0.14,memory <0.14.12 || >0.14.12' >> cabal.project"
77− - "echo 'allow-newer: servant-auth-server:http-types,servant-auth-server:servant-server, http-media:base' >> cabal.project"
78+ - "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"
79+ - touch cabal.project.local
80+ - "if ! $NOINSTALLEDCONSTRAINTS; then for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/^/constraints: /' | sed 's/-[^-]*$/ installed/' >> cabal.project.local; done; fi"
78− - cat cabal.project
81+ - cat cabal.project || true
82+ - cat cabal.project.local || true
79 - if [ -f "servant/configure.ac" ]; then
83 - if [ -f "servant/configure.ac" ]; then
80 (cd "servant" && autoreconf -i);
84 (cd "servant" && autoreconf -i);
81 fi
85 fi
@@ -148,11 +152,13 @@ script:
148 - find . -maxdepth 1 -name '*.tar.gz' -exec tar -xvf '{}' \;
152 - find . -maxdepth 1 -name '*.tar.gz' -exec tar -xvf '{}' \;
149 - "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"
153 - "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"
150 - "echo 'constraints: foundation >=0.0.14,memory <0.14.12 || >0.14.12' >> cabal.project"
154 - "echo 'constraints: foundation >=0.0.14,memory <0.14.12 || >0.14.12' >> cabal.project"
151− - "echo 'allow-newer: servant-auth-server:http-types,servant-auth-server:servant-server, http-media:base' >> cabal.project"
155+ - "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"
156+ - touch cabal.project.local
157+ - "if ! $NOINSTALLEDCONSTRAINTS; then for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/^/constraints: /' | sed 's/-[^-]*$/ installed/' >> cabal.project.local; done; fi"
152− - cat cabal.project
158+ - cat cabal.project || true
159+ - cat cabal.project.local || true
153 - echo -en 'travis_fold:end:unpack\\r'
160 - echo -en 'travis_fold:end:unpack\\r'
154
161
155−
156 - echo Building with tests and benchmarks... && echo -en 'travis_fold:start:build-everything\\r'
162 - echo Building with tests and benchmarks... && echo -en 'travis_fold:start:build-everything\\r'
157 # build & run tests, build benchmarks
163 # build & run tests, build benchmarks
158 - cabal new-build -w ${HC} ${TEST} ${BENCH} all
164 - cabal new-build -w ${HC} ${TEST} ${BENCH} all
@@ -165,5 +171,10 @@ script:
165 - if $HADDOCK; then cabal new-haddock -w ${HC} ${TEST} ${BENCH} all; else echo "Skipping haddock generation";fi
171 - if $HADDOCK; then cabal new-haddock -w ${HC} ${TEST} ${BENCH} all; else echo "Skipping haddock generation";fi
166
172
167 - echo -en 'travis_fold:end:haddock\\r'
173 - echo -en 'travis_fold:end:haddock\\r'
174+ - echo Building without installed constraints for packages in global-db... && echo -en 'travis_fold:start:build-installed\\r'
175+ # Build without installed constraints for packages in global-db
176+ - 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
177+
178+ - echo -en 'travis_fold:end:build-installed\\r'
168# REGENDATA ["--config=cabal.make-travis-yml","--output=.travis.yml","cabal.project"]
179# REGENDATA ["--config=cabal.make-travis-yml","--output=.travis.yml","cabal.project"]
169# EOF
180# EOF
cabal.make-travis-yml+1−1
@@ -1,5 +1,5 @@
1folds: all-but-test
1folds: all-but-test
2−branches: master release-0.12
2+branches: master release-0.14
3
3
4-- We have inplace packages (servant-js) so we skip installing dependencies in a separate step
4-- We have inplace packages (servant-js) so we skip installing dependencies in a separate step
5install-dependencies-step: False
5install-dependencies-step: False
doc/index.rst+11−9
@@ -3,22 +3,24 @@ servant – A Type-Level Web DSL
3
3
4.. image:: https://raw.githubusercontent.com/haskell-servant/servant/master/servant.png
4.. image:: https://raw.githubusercontent.com/haskell-servant/servant/master/servant.png
5
5
6−**servant** is a set of packages for declaring web APIs at the type-level and
6+**servant** is a set of Haskell libraries for writing *type-safe* web
7−then using those API specifications to:
7+applications but also *deriving* clients (in Haskell and other languages) or
8+generating documentation for them, and more.
8
9
9−- write servers (this part of **servant** can be considered a web framework),
10+This is achieved by taking as input a description of the web API
10−- obtain client functions (in haskell),
11+as a Haskell type. Servant is then able to check that your server-side request
11−- generate client functions for other programming languages,
12+handlers indeed implement your web API faithfully, or to automatically derive
12−- generate documentation for your web applications
13+Haskell functions that can hit a web application that implements this API,
13−- and more...
14+generate a Swagger description or code for client functions in some other
15+languages directly.
14
16
15−All in a type-safe manner.
17+If you would like to learn more, click the tutorial link below.
16
18
17.. toctree::
19.. toctree::
18 :maxdepth: 2
20 :maxdepth: 2
19
21
20− introduction.rst
21 tutorial/index.rst
22 tutorial/index.rst
22 cookbook/index.rst
23 cookbook/index.rst
23 examples.md
24 examples.md
24 links.rst
25 links.rst
26+ principles.rst
doc/introduction.rst → doc/principles.rstrenamed+2−2
@@ -1,5 +1,5 @@
1−Introduction
1+Principles
2−------------
2+----------
3
3
4**servant** has the following guiding principles:
4**servant** has the following guiding principles:
5
5
doc/tutorial/Javascript.lhs+1−2
@@ -477,7 +477,7 @@ data AngularOptions = AngularOptions
477 }
477 }
478```
478```
479
479
480−# Custom function name builder
480+## Custom function name builder
481
481
482Servant comes with three name builders included:
482Servant comes with three name builders included:
483
483
@@ -518,4 +518,3 @@ var get_books = function(q, onSuccess, onError)
518}
518}
519
519
520```
520```
521−
doc/tutorial/index.rst+21−2
@@ -3,9 +3,28 @@ Tutorial
3
3
4This is an introductory tutorial to **servant**. Whilst browsing is fine, it makes more sense if you read the sections in order, or at least read the first section before anything else.
4This is an introductory tutorial to **servant**. Whilst browsing is fine, it makes more sense if you read the sections in order, or at least read the first section before anything else.
5
5
6−(Any comments, issues or feedback about the tutorial can be submitted
6+Any comments, issues or feedback about the tutorial can be submitted
7−to `servant's issue tracker <http://github.com/haskell-servant/servant/issues>`_.)
7+to `servant's issue tracker <http://github.com/haskell-servant/servant/issues>`_.
8
8
9+In fact, the whole tutorial is a `cabal <https://cabal.readthedocs.io/en/latest/>`_
10+project and can be built and played with locally as follows:
11+
12+.. code-block:: bash
13+
14+ $ git clone https://github.com/haskell-servant/servant.git
15+ $ cd servant
16+ # build
17+ $ cabal new-build tutorial
18+ # load in ghci to play with it
19+ $ cabal new-repl tutorial
20+
21+The code can be found in the `*.lhs` files under `doc/tutorial/` in the
22+repository. Feel free to edit it while you're reading this documentation and
23+see the effect of your changes.
24+
25+`Nix <https://nixos.org/nix/>`_ users should feel free to take a look at
26+the `nix/shell.nix` file in the repository and use it to provision a suitable
27+environment to build and run the examples.
9
28
10.. toctree::
29.. toctree::
11 :maxdepth: 1
30 :maxdepth: 1
servant-client-core/servant-client-core.cabal+12−13
@@ -51,12 +51,11 @@ library
51 base >= 4.7 && < 4.12
51 base >= 4.7 && < 4.12
52 , bytestring >= 0.10.4.0 && < 0.11
52 , bytestring >= 0.10.4.0 && < 0.11
53 , containers >= 0.5.5.1 && < 0.6
53 , containers >= 0.5.5.1 && < 0.6
54− , mtl >= 2.1 && < 2.3
55 , text >= 1.2.3.0 && < 1.3
54 , text >= 1.2.3.0 && < 1.3
56
55
57 if !impl(ghc >= 8.0)
56 if !impl(ghc >= 8.0)
58 build-depends:
57 build-depends:
59− semigroups >=0.18.3 && <0.19
58+ semigroups >=0.18.4 && <0.19
60
59
61 -- Servant dependencies
60 -- Servant dependencies
62 build-depends:
61 build-depends:
@@ -65,16 +64,16 @@ library
65 -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
64 -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
66 -- Here can be exceptions if we really need features from the newer versions.
65 -- Here can be exceptions if we really need features from the newer versions.
67 build-depends:
66 build-depends:
68− base-compat >= 0.9.3 && < 0.11
67+ base-compat >= 0.10.1 && < 0.11
69 , base64-bytestring >= 1.0.0.1 && < 1.1
68 , base64-bytestring >= 1.0.0.1 && < 1.1
70− , exceptions >= 0.8.3 && < 0.11
69+ , exceptions >= 0.10.0 && < 0.11
71− , free >= 5.0.1 && < 5.1
70+ , free >= 5.0.2 && < 5.1
72− , generics-sop >= 0.3.1.0 && < 0.4
71+ , generics-sop >= 0.3.2.0 && < 0.4
73− , http-api-data >= 0.3.7.1 && < 0.4
72+ , http-api-data >= 0.3.8.1 && < 0.4
74− , http-media >= 0.7.1.1 && < 0.8
73+ , http-media >= 0.7.1.2 && < 0.8
75− , http-types >= 0.12 && < 0.13
74+ , http-types >= 0.12.1 && < 0.13
76 , network-uri >= 2.6.1.0 && < 2.7
75 , network-uri >= 2.6.1.0 && < 2.7
77− , safe >= 0.3.15 && < 0.4
76+ , safe >= 0.3.17 && < 0.4
78
77
79 hs-source-dirs: src
78 hs-source-dirs: src
80 default-language: Haskell2010
79 default-language: Haskell2010
@@ -99,8 +98,8 @@ test-suite spec
99 -- Additonal dependencies
98 -- Additonal dependencies
100 build-depends:
99 build-depends:
101 deepseq >= 1.3.0.2 && <1.5
100 deepseq >= 1.3.0.2 && <1.5
102− , hspec >= 2.4.4 && <2.6
101+ , hspec >= 2.4.1 && <2.6
103− , QuickCheck >= 2.10.1 && < 2.12
102+ , QuickCheck >= 2.11.3 && < 2.12
104
103
105 build-tool-depends:
104 build-tool-depends:
106− hspec-discover:hspec-discover >= 2.4.4 && <2.6
105+ hspec-discover:hspec-discover >= 2.5.1 && <2.6
servant-client/servant-client.cabal+16−23
@@ -51,7 +51,7 @@ library
51 , transformers >= 0.3.0.0 && < 0.6
51 , transformers >= 0.3.0.0 && < 0.6
52
52
53 if !impl(ghc >= 8.0)
53 if !impl(ghc >= 8.0)
54− build-depends: semigroups >=0.18.3 && <0.19
54+ build-depends: semigroups >=0.18.4 && <0.19
55
55
56 -- Servant dependencies
56 -- Servant dependencies
57 build-depends:
57 build-depends:
@@ -60,19 +60,16 @@ library
60 -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
60 -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
61 -- Here can be exceptions if we really need features from the newer versions.
61 -- Here can be exceptions if we really need features from the newer versions.
62 build-depends:
62 build-depends:
63− aeson >= 1.2.3.0 && < 1.5
64− , base-compat >= 0.9.3 && < 0.11
63+ base-compat >= 0.10.1 && < 0.11
65− , attoparsec >= 0.13.2.0 && < 0.14
66− , http-client >= 0.5.7.1 && < 0.6
64+ , http-client >= 0.5.12 && < 0.6
67− , http-client-tls >= 0.3.5.1 && < 0.4
68− , http-media >= 0.7.1.1 && < 0.8
65+ , http-media >= 0.7.1.2 && < 0.8
69− , http-types >= 0.12 && < 0.13
66+ , http-types >= 0.12.1 && < 0.13
70− , exceptions >= 0.8.3 && < 0.11
67+ , exceptions >= 0.10.0 && < 0.11
71− , monad-control >= 1.0.0.4 && < 1.1
68+ , monad-control >= 1.0.2.3 && < 1.1
72− , semigroupoids >= 5.2.1 && < 5.3
69+ , semigroupoids >= 5.2.2 && < 5.3
73− , stm >= 2.4.4.1 && < 2.5
70+ , stm >= 2.4.5.0 && < 2.5
74− , transformers-base >= 0.4.4 && < 0.5
71+ , transformers-base >= 0.4.5.2 && < 0.5
75− , transformers-compat >= 0.5.1 && < 0.7
72+ , transformers-compat >= 0.6.2 && < 0.7
76
73
77 hs-source-dirs: src
74 hs-source-dirs: src
78 default-language: Haskell2010
75 default-language: Haskell2010
@@ -97,10 +94,8 @@ test-suite spec
97 , aeson
94 , aeson
98 , base-compat
95 , base-compat
99 , bytestring
96 , bytestring
100− , containers
101 , http-api-data
97 , http-api-data
102 , http-client
98 , http-client
103− , http-media
104 , http-types
99 , http-types
105 , mtl
100 , mtl
106 , servant-client
101 , servant-client
@@ -117,18 +112,16 @@ test-suite spec
117
112
118 -- Additonal dependencies
113 -- Additonal dependencies
119 build-depends:
114 build-depends:
120− deepseq >= 1.3.0.2 && < 1.5
121− , generics-sop >= 0.3.1.0 && < 0.4
115+ generics-sop >= 0.3.2.0 && < 0.4
122− , hspec >= 2.4.4 && < 2.6
116+ , hspec >= 2.5.1 && < 2.6
123 , HUnit >= 1.6 && < 1.7
117 , HUnit >= 1.6 && < 1.7
124− , random-bytestring >= 0.1 && < 0.2
125 , network >= 2.6.3.2 && < 2.8
118 , network >= 2.6.3.2 && < 2.8
126 , QuickCheck >= 2.10.1 && < 2.12
119 , QuickCheck >= 2.10.1 && < 2.12
127− , servant == 0.13.*
120+ , servant == 0.14.*
128− , servant-server == 0.13.*
121+ , servant-server == 0.14.*
129
122
130 build-tool-depends:
123 build-tool-depends:
131− hspec-discover:hspec-discover >= 2.4.4 && < 2.6
124+ hspec-discover:hspec-discover >= 2.5.1 && < 2.6
132
125
133test-suite readme
126test-suite readme
134 type: exitcode-stdio-1.0
127 type: exitcode-stdio-1.0
servant-server/servant-server.cabal+23−31
@@ -40,7 +40,7 @@ custom-setup
40 setup-depends:
40 setup-depends:
41 base >= 4 && <5,
41 base >= 4 && <5,
42 Cabal,
42 Cabal,
43− cabal-doctest >= 1.0.1 && <1.1
43+ cabal-doctest >= 1.0.6 && <1.1
44
44
45library
45library
46 exposed-modules:
46 exposed-modules:
@@ -71,7 +71,7 @@ library
71
71
72 if !impl(ghc >= 8.0)
72 if !impl(ghc >= 8.0)
73 build-depends:
73 build-depends:
74− semigroups >= 0.18.3 && < 0.19
74+ semigroups >= 0.18.4 && < 0.19
75
75
76 -- Servant dependencies
76 -- Servant dependencies
77 build-depends:
77 build-depends:
@@ -80,28 +80,22 @@ library
80 -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
80 -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
81 -- Here can be exceptions if we really need features from the newer versions.
81 -- Here can be exceptions if we really need features from the newer versions.
82 build-depends:
82 build-depends:
83− aeson >= 1.2.3.0 && < 1.5
84− , base-compat >= 0.9.3 && < 0.11
83+ base-compat >= 0.10.1 && < 0.11
85− , attoparsec >= 0.13.2.0 && < 0.14
86 , base64-bytestring >= 1.0.0.1 && < 1.1
84 , base64-bytestring >= 1.0.0.1 && < 1.1
87− , exceptions >= 0.8.3 && < 0.11
85+ , exceptions >= 0.10.0 && < 0.11
88− , http-api-data >= 0.3.7.1 && < 0.4
86+ , http-api-data >= 0.3.8.1 && < 0.4
89− , http-media >= 0.7.1.1 && < 0.8
87+ , http-media >= 0.7.1.2 && < 0.8
90− , http-types >= 0.12 && < 0.13
88+ , http-types >= 0.12.1 && < 0.13
91 , network-uri >= 2.6.1.0 && < 2.7
89 , network-uri >= 2.6.1.0 && < 2.7
92− , monad-control >= 1.0.0.4 && < 1.1
90+ , monad-control >= 1.0.2.3 && < 1.1
93− , network >= 2.6.3.2 && < 2.8
91+ , network >= 2.6.3.5 && < 2.8
94− , safe >= 0.3.15 && < 0.4
95− , split >= 0.2.3.2 && < 0.3
96 , string-conversions >= 0.4.0.1 && < 0.5
92 , string-conversions >= 0.4.0.1 && < 0.5
97− , system-filepath >= 0.4 && < 0.5
98− , resourcet >= 1.1.9 && < 1.3
93+ , resourcet >= 1.1.11 && < 1.3
99 , tagged >= 0.8.5 && < 0.9
94 , tagged >= 0.8.5 && < 0.9
100 , transformers-base >= 0.4.4 && < 0.5
95 , transformers-base >= 0.4.4 && < 0.5
101− , transformers-compat >= 0.5.1 && < 0.7
96+ , transformers-compat >= 0.6.2 && < 0.7
102 , wai >= 3.2.1.1 && < 3.3
97 , wai >= 3.2.1.1 && < 3.3
103 , wai-app-static >= 3.1.6.1 && < 3.2
98 , wai-app-static >= 3.1.6.1 && < 3.2
104− , warp >= 3.2.13 && < 3.3
105 , word8 >= 0.1.3 && < 0.2
99 , word8 >= 0.1.3 && < 0.2
106
100
107 hs-source-dirs: src
101 hs-source-dirs: src
@@ -120,11 +114,13 @@ executable greet
120 base
114 base
121 , servant
115 , servant
122 , servant-server
116 , servant-server
123− , aeson
124− , warp
125 , wai
117 , wai
126 , text
118 , text
127
119
120+ build-depends:
121+ aeson >= 1.3.1.1 && < 1.5
122+ , warp >= 3.2.13 && < 3.3
123+
128test-suite spec
124test-suite spec
129 type: exitcode-stdio-1.0
125 type: exitcode-stdio-1.0
130 ghc-options: -Wall
126 ghc-options: -Wall
@@ -148,13 +144,10 @@ test-suite spec
148 build-depends:
144 build-depends:
149 base
145 base
150 , base-compat
146 , base-compat
151− , aeson
152 , base64-bytestring
147 , base64-bytestring
153 , bytestring
148 , bytestring
154− , exceptions
155 , http-types
149 , http-types
156 , mtl
150 , mtl
157− , network
158 , resourcet
151 , resourcet
159 , safe
152 , safe
160 , servant
153 , servant
@@ -164,27 +157,26 @@ test-suite spec
164 , transformers
157 , transformers
165 , transformers-compat
158 , transformers-compat
166 , wai
159 , wai
167− , warp
168
160
169 -- Additonal dependencies
161 -- Additonal dependencies
170 build-depends:
162 build-depends:
163+ aeson >= 1.3.1.1 && < 1.5
171− directory >= 1.2.1.0 && < 1.4
164+ , directory >= 1.2.1.0 && < 1.4
172− , hspec >= 2.4.4 && < 2.6
165+ , hspec >= 2.5.1 && < 2.6
173− , hspec-wai >= 0.9 && < 0.10
166+ , hspec-wai >= 0.9.0 && < 0.10
167+ , QuickCheck >= 2.11.3 && < 2.12
174 , should-not-typecheck >= 2.1.0 && < 2.2
168 , should-not-typecheck >= 2.1.0 && < 2.2
175− , parsec >= 3.1.11 && < 3.2
169+ , temporary >= 1.3 && < 1.4
176− , QuickCheck >= 2.10.1 && < 2.12
177 , wai-extra >= 3.0.21.0 && < 3.1
170 , wai-extra >= 3.0.21.0 && < 3.1
178− , temporary >= 1.2.0.3 && < 1.4
179
171
180 build-tool-depends:
172 build-tool-depends:
181− hspec-discover:hspec-discover >=2.4.4 && <2.6
173+ hspec-discover:hspec-discover >= 2.5.1 && <2.6
182
174
183test-suite doctests
175test-suite doctests
184 build-depends:
176 build-depends:
185 base
177 base
186 , servant-server
178 , servant-server
187− , doctest >= 0.13.0 && <0.16
179+ , doctest >= 0.15.0 && <0.16
188 type: exitcode-stdio-1.0
180 type: exitcode-stdio-1.0
189 main-is: test/doctests.hs
181 main-is: test/doctests.hs
190 buildable: True
182 buildable: True
servant/CHANGELOG.md+12−3
@@ -37,9 +37,18 @@
37- *servant-client* Add `hoistClient` to `HasClient`.
37- *servant-client* Add `hoistClient` to `HasClient`.
38 Just like `hoistServer` allows us to change the monad in which request handlers
38 Just like `hoistServer` allows us to change the monad in which request handlers
39 of a web application live in, we also have `hoistClient` for changing the monad
39 of a web application live in, we also have `hoistClient` for changing the monad
40− in which *client functions* live. Read [tutorial section for more information](#link).
40+ in which *client functions* live.
41+ 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).
41 ([#936](https://github.com/haskell-servant/servant/pull/936))
42 ([#936](https://github.com/haskell-servant/servant/pull/936))
42
43
44+ iF you have own combinators, you'll need to define a new method of
45+ `HasClient` class, for example:
46+
47+ ```haskell
48+ type Client m (MyCombinator :> api) = MyValue :> Client m api
49+ hoistClientMonad pm _ nt cl = hoistClientMonad pm (Proxy :: Proxy api) nt . cl
50+ ```
51+
43- *servant* Add `safeLink' :: (Link -> a) -> ... -> MkLink endpoint a`,
52- *servant* Add `safeLink' :: (Link -> a) -> ... -> MkLink endpoint a`,
44 which allows to create helpers returning something else than `Link`.
53 which allows to create helpers returning something else than `Link`.
45 ([#968](https://github.com/haskell-servant/servant/pull/968))
54 ([#968](https://github.com/haskell-servant/servant/pull/968))
@@ -76,10 +85,10 @@
76- Added tests or enabled tests
85- Added tests or enabled tests
77 ([#975](https://github.com/haskell-servant/servant/pull/975))
86 ([#975](https://github.com/haskell-servant/servant/pull/975))
78
87
79−- Add [pagination cookbook recipe](#link)
88+- Add [pagination cookbook recipe](https://haskell-servant.readthedocs.io/en/release-0.14/cookbook/pagination/Pagination.html)
80 ([#946](https://github.com/haskell-servant/servant/pull/946))
89 ([#946](https://github.com/haskell-servant/servant/pull/946))
81
90
82−- Add [`servant-flatten` cookbook recipe](#link)
91+- Add [`servant-flatten` "spice" to the structuring api recipe](https://haskell-servant.readthedocs.io/en/release-0.14/cookbook/structuring-apis/StructuringApis.html)
83 ([#929](https://github.com/haskell-servant/servant/pull/929))
92 ([#929](https://github.com/haskell-servant/servant/pull/929))
84
93
85- Dependency updates
94- Dependency updates
servant/servant.cabal+18−19
@@ -34,7 +34,7 @@ custom-setup
34 setup-depends:
34 setup-depends:
35 base >= 4 && <5,
35 base >= 4 && <5,
36 Cabal,
36 Cabal,
37− cabal-doctest >= 1.0.2 && <1.1
37+ cabal-doctest >= 1.0.6 && <1.1
38
38
39library
39library
40 exposed-modules:
40 exposed-modules:
@@ -77,25 +77,25 @@ library
77
77
78 if !impl(ghc >= 8.0)
78 if !impl(ghc >= 8.0)
79 build-depends:
79 build-depends:
80− semigroups >= 0.18.3 && < 0.19
80+ semigroups >= 0.18.4 && < 0.19
81
81
82 -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
82 -- Other dependencies: Lower bound around what is in the latest Stackage LTS.
83 -- Here can be exceptions if we really need features from the newer versions.
83 -- Here can be exceptions if we really need features from the newer versions.
84 build-depends:
84 build-depends:
85− base-compat >= 0.9.3 && < 0.11
85+ base-compat >= 0.10.1 && < 0.11
86− , aeson >= 1.2.3.0 && < 1.5
86+ , aeson >= 1.3.1.1 && < 1.5
87− , attoparsec >= 0.13.2.0 && < 0.14
87+ , attoparsec >= 0.13.2.2 && < 0.14
88 , case-insensitive >= 1.2.0.10 && < 1.3
88 , case-insensitive >= 1.2.0.10 && < 1.3
89− , http-api-data >= 0.3.7.1 && < 0.4
89+ , http-api-data >= 0.3.8.1 && < 0.4
90− , http-media >= 0.7.1.1 && < 0.8
90+ , http-media >= 0.7.1.2 && < 0.8
91− , http-types >= 0.12 && < 0.13
91+ , http-types >= 0.12.1 && < 0.13
92 , natural-transformation >= 0.4 && < 0.5
92 , natural-transformation >= 0.4 && < 0.5
93− , mmorph >= 1.1.0 && < 1.2
93+ , mmorph >= 1.1.2 && < 1.2
94 , tagged >= 0.8.5 && < 0.9
94 , tagged >= 0.8.5 && < 0.9
95− , singleton-bool >= 0.1.2.0 && < 0.2
95+ , singleton-bool >= 0.1.4 && < 0.2
96 , string-conversions >= 0.4.0.1 && < 0.5
96 , string-conversions >= 0.4.0.1 && < 0.5
97 , network-uri >= 2.6.1.0 && < 2.7
97 , network-uri >= 2.6.1.0 && < 2.7
98− , vault >= 0.3.0.7 && < 0.4
98+ , vault >= 0.3.1.1 && < 0.4
99
99
100 hs-source-dirs: src
100 hs-source-dirs: src
101 default-language: Haskell2010
101 default-language: Haskell2010
@@ -141,7 +141,6 @@ test-suite spec
141 base
141 base
142 , base-compat
142 , base-compat
143 , aeson
143 , aeson
144− , attoparsec
145 , bytestring
144 , bytestring
146 , servant
145 , servant
147 , string-conversions
146 , string-conversions
@@ -153,23 +152,23 @@ test-suite spec
153
152
154 -- Additonal dependencies
153 -- Additonal dependencies
155 build-depends:
154 build-depends:
156− aeson-compat >= 0.3.3 && < 0.4
155+ aeson-compat >= 0.3.7.1 && < 0.4
157− , hspec >= 2.4.4 && < 2.6
156+ , hspec >= 2.5.1 && < 2.6
158− , QuickCheck >= 2.10.1 && < 2.12
157+ , QuickCheck >= 2.11.3 && < 2.12
159− , quickcheck-instances >= 0.3.16 && < 0.4
158+ , quickcheck-instances >= 0.3.18 && < 0.4
160
159
161 build-tool-depends:
160 build-tool-depends:
162− hspec-discover:hspec-discover >= 2.4.4 && < 2.6
161+ hspec-discover:hspec-discover >= 2.5.1 && < 2.6
163
162
164test-suite doctests
163test-suite doctests
165 build-depends:
164 build-depends:
166 base
165 base
167 , servant
166 , servant
168− , doctest >= 0.13.0 && <0.16
167+ , doctest >= 0.15.0 && <0.16
169
168
170 -- We test Links failure with doctest, so we need extra dependencies
169 -- We test Links failure with doctest, so we need extra dependencies
171 build-depends:
170 build-depends:
172− hspec >= 2.4.4 && < 2.6
171+ hspec >= 2.5.1 && < 2.6
173
172
174 type: exitcode-stdio-1.0
173 type: exitcode-stdio-1.0
175 main-is: test/doctests.hs
174 main-is: test/doctests.hs
stack.yaml+1−14
@@ -1,5 +1,5 @@
1# Let's try to keep resolver at the first day of the month
1# Let's try to keep resolver at the first day of the month
2−resolver: nightly-2018-03-01
2+resolver: nightly-2018-06-01
3packages:
3packages:
4- servant-client/
4- servant-client/
5- servant-client-core/
5- servant-client-core/
@@ -8,18 +8,5 @@ packages:
8- servant-server/
8- servant-server/
9- servant/
9- servant/
10
10
11−extra-deps:
12−- cabal-doctest-1.0.6
13−- http-api-data-0.3.7.2
14−- http-types-0.12
15−- text-1.2.3.0
16−- aeson-1.3.0.0
17−- exceptions-0.10.0
18−- aeson-compat-0.3.7.1
19−- free-5.0.1
20−- lens-4.16
21−- random-bytestring-0.1.3
22−- pcg-random-0.1.3.5
23−
24# allow-newer: true # ignores all bounds, that's a sledgehammer
11# allow-newer: true # ignores all bounds, that's a sledgehammer
25# - doc/tutorial/
12# - doc/tutorial/