git.iko.soy/typeable/servant-reflex
on master help sign in
Merge pull request #102 from imalsogreg/bump-reflex-frp

Update dependencies

commitdac560cdb65ffaaa78d5ab800b8aa52ed011f44a authorGreg Hale <ImAlsoGreg@gmail.com> dateSun 23 Aug 2020, 10:56 (6 years ago) parent37a3e8f87e7911
10 files changed+50−33
.travis.yml+3−4 ChangeLog.md+8 default.nix+1−1 nix/nix.conf+2−1 nix/reflex-platform.nix+2−2 nix/servant-snap.nix+4−6 servant-reflex.cabal+13−5 src/Servant/Common/BaseUrl.hs+4−5 src/Servant/Reflex.hs+10−6 testserver/testserver.cabal+3−3
.travis.yml+3−4
@@ -1,17 +1,16 @@
11language: nix
2−nix: 2.1.1
2+nix: 2.3.6
33sudo: require
44
5−install:
5+before_install:
66 - sudo cp -rT $TRAVIS_BUILD_DIR/nix /etc/nix
77
88before_script:
9+ - sudo systemctl restart nix-daemon.service
910 - git config --global user.email "travis-ci@example.com"
1011 - git config --global user.name "Travis-CI"
1112
1213script:
13− - nix-env -iA cachix -f https://cachix.org/api/v1/install
14− - cachix use imalsogreg
1514 - nix-build travis.nix -A build
1615 - nix-build travis.nix -A testserver
1716 - nix-build travis.nix -A testresults
ChangeLog.md+8
@@ -1,3 +1,11 @@
1+0.3.5
2+-----
3+
4+ - Require reflex-dom-core >= 0.6 (for internal handling of case-insensitive headers)
5+ - Require servant >= 0.16
6+ - Eliminate use of deprecated widgets from reflex-dom-core
7+ - Bump the version of reflex-platform used in nix-shell and test suite
8+
190.3.4
210-----
311
default.nix+1−1
@@ -6,7 +6,7 @@
66}:
77mkDerivation {
88 pname = "servant-reflex";
9− version = "0.3.4";
9+ version = "0.3.5";
1010 src = builtins.filterSource
1111 (path: type:
1212 baseNameOf path != "result"
nix/nix.conf+2−1
@@ -1,2 +1,3 @@
1−substituters = https://cache.nixos.org https://nixcache.reflex-frp.org
1+substituters = https://cache.nixos.org/ https://nixcache.reflex-frp.org/
22trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= ryantrinkle.com-1:JJiAKaRv9mWgpVAz8dwewnZe0AzzEAzPkagE9SP5NWI=
3+trusted-users = travis
nix/reflex-platform.nix+2−2
@@ -1,7 +1,7 @@
11let
2− rev = "a15d3a2411e7ca7d4ee4853b57c72fe83faee272";
2+ rev = "df0bdcca5eb2a3236ec0496e4430d91876b29cf5";
33in import (builtins.fetchTarball
44 {
55 url = "https://github.com/reflex-frp/reflex-platform/archive/${rev}.tar.gz";
6− sha256 = "1dsvw0lah7761vndip1hqal4fjpjv84ravinnfhy83jgfav5ivna";
6+ sha256 = "1ja3vkq9px8f9iyiazq44mamaahgiphi9l236pvzbl5jvhi5c4qr";
77 }) {}
nix/servant-snap.nix+4−6
@@ -1,9 +1,7 @@
1−# Servant-snap is stuck a bit behind atm. But we have a fork that mostly works
2−# except for streaming, which is good enough for this test server. See:
3−# https://github.com/haskell-servant/servant-snap/issues/20
1+# Servant-snap is marked broken in nixpkgs
42{ nixpkgs ? import <nixpkgs> {}}: self: super:
53self.callCabal2nix "servant-snap" (nixpkgs.fetchgit {
6− url = "https://github.com/antislava/servant-snap.git";
7− rev = "fc9658e8f52ebce9e4f304ea0c6705d697d4fa84";
8− sha256 = "0zlipmx1fb73mhpnndwmdmigxxrsdnsnb1157pgsrxpx89l9pjig";
4+ url = "https://github.com/haskell-servant/servant-snap.git";
5+ rev = "af5172a6de5bb2a07eb1bf4c85952075ec6ecdf3";
6+ sha256 = "sha256-fzzQGwG8Ko72OO/kwLMG52eNZSt3F2dxhNgM9gaO4yQ=";
97}) {}
servant-reflex.cabal+13−5
@@ -1,5 +1,5 @@
11Name: servant-reflex
2−Version: 0.3.4
2+Version: 0.3.5
33Synopsis: servant API generator for reflex apps
44Description: Generate reflex-compatible client functions from servant API descriptions
55License: BSD3
@@ -36,10 +36,10 @@ library
3636 jsaddle >= 0.8 && < 0.10,
3737 mtl >= 2.2.1 && < 2.3,
3838 network-uri >= 2.6 && < 2.7,
39− reflex >= 0.5 && < 0.7,
40− reflex-dom-core >= 0.4 && < 0.6,
39+ reflex >= 0.5 && < 0.8,
40+ reflex-dom-core >= 0.6 && < 0.7,
4141 safe >= 0.3.9 && < 0.4,
42− servant >= 0.8 && < 0.18,
42+ servant >= 0.16 && < 0.18,
4343 servant-auth >= 0.2.1 && < 0.4,
4444 string-conversions >= 0.4 && < 0.5,
4545 text >= 1.2 && < 1.3,
@@ -54,7 +54,15 @@ executable example
5454 buildable: True
5555 else
5656 buildable: False
57− build-depends: aeson, reflex, servant-reflex, base, scientific, servant, reflex-dom-core, text
57+ build-depends:
58+ aeson,
59+ reflex,
60+ servant-reflex,
61+ base,
62+ scientific,
63+ servant,
64+ reflex-dom-core,
65+ text
5866 default-language: Haskell2010
5967 main-is: Example.hs
6068 other-modules: API
src/Servant/Common/BaseUrl.hs+4−5
@@ -85,15 +85,14 @@ baseUrlWidget = elClass "div" "base-url" $ do
8585 where pathWidget :: m (Dynamic t BaseUrl)
8686 pathWidget = do
8787 text "Url base path"
88− t <- textInput (def {_textInputConfig_attributes =
89− constDyn ("placeholder" =: "/a/b")})
88+ t <- inputElement def
9089 return $ BasePath <$> value t
9190 fullUrlWidget :: m (Dynamic t BaseUrl)
9291 fullUrlWidget = do
9392 schm <- dropdown Https (constDyn $ Https =: "https" <> Http =: "http") def
94− srv <- textInput def {_textInputConfig_attributes = constDyn $ "placeholder" =: "example.com"}
93+ srv <- inputElement def
9594 text ":"
96− prt <- textInput def { _textInputConfig_attributes = constDyn $ "placeholder" =: "80"}
95+ prt <- inputElement def
9796 port :: Dynamic t Int <- holdDyn 80 (fmapMaybe (readMaybe . T.unpack) $ updated (value prt))
98− path <- textInput def { _textInputConfig_attributes = constDyn $ "placeholder" =: "a/b" }
97+ path <- inputElement def
9998 return $ BaseFullUrl <$> value schm <*> value srv <*> port <*> value path
src/Servant/Reflex.hs+10−6
@@ -42,7 +42,7 @@ import Control.Applicative
4242import Data.Monoid ((<>))
4343import qualified Data.Set as Set
4444import qualified Data.Text.Encoding as E
45−import Data.CaseInsensitive (mk)
45+import qualified Data.CaseInsensitive as CI
4646import Data.Functor.Identity
4747import Data.Proxy (Proxy (..))
4848import qualified Data.Map as Map
@@ -226,22 +226,26 @@ instance {-# OVERLAPPING #-}
226226
227227toHeaders :: BuildHeadersTo ls => ReqResult tag a -> ReqResult tag (Headers ls a)
228228toHeaders r =
229− let toBS = E.encodeUtf8
230− hdrs = maybe []
231− (\xhr -> fmap (\(h,v) -> (mk (toBS h), toBS v))
229+ let hdrs = maybe []
230+ (\xhr -> fmap (\(h,v) -> (CI.map E.encodeUtf8 h, E.encodeUtf8 v))
232231 (Map.toList $ _xhrResponse_headers xhr))
233232 (response r)
234233 in ffor r $ \a -> Headers {getResponse = a ,getHeadersHList = buildHeadersTo hdrs}
235234
235+
236236class BuildHeaderKeysTo hs where
237− buildHeaderKeysTo :: Proxy hs -> [T.Text]
237+ buildHeaderKeysTo :: Proxy hs -> [CI.CI T.Text]
238238
239239instance {-# OVERLAPPABLE #-} BuildHeaderKeysTo '[]
240240 where buildHeaderKeysTo _ = []
241241
242242instance {-# OVERLAPPABLE #-} (BuildHeaderKeysTo xs, KnownSymbol h)
243243 => BuildHeaderKeysTo ((Header h v) ': xs) where
244− buildHeaderKeysTo _ = T.pack (symbolVal (Proxy :: Proxy h)) : buildHeaderKeysTo (Proxy :: Proxy xs)
244+ buildHeaderKeysTo _ =
245+ let
246+ thisKey = CI.mk $ T.pack (symbolVal (Proxy :: Proxy h))
247+ in thisKey : buildHeaderKeysTo (Proxy :: Proxy xs)
248+
245249
246250-- HEADERS Verb (Content) --
247251-- Headers combinator not treated in fully general case,
testserver/testserver.cabal+3−3
@@ -19,13 +19,13 @@ executable back
1919 main-is: Main.hs
2020 -- other-modules:
2121 -- other-extensions:
22− build-depends: aeson >= 0.9 && < 1.4
23− , base >=4.8 && <4.12
22+ build-depends: aeson >= 0.9 && < 1.5
23+ , base >=4.8 && < 5
2424 , mtl
2525 , snap >= 1.0 && < 1.2
2626 , snap-server >= 1.0 && < 1.2
2727 , snap-core >= 1.0 && < 1.1
28− , servant >= 0.8 && < 0.15
28+ , servant >= 0.16 && < 0.18
2929 , servant-snap >= 0.8 && < 0.9
3030 , text >= 1.0 && < 1.3
3131 -- hs-source-dirs: