From 24867b064f52440ef4992dc37f64e9e4f4d8cf5a Mon Sep 17 00:00:00 2001 From: Samuel Evans-Powell Date: Thu, 2 May 2024 12:31:28 +0800 Subject: [PATCH 1/5] Update servant-jsaddle to work with newer version of servant --- servant-jsaddle.cabal | 16 ++++++++-------- .../Client/Internal/JSaddleXhrClient.hs | 18 +++++++++++++----- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/servant-jsaddle.cabal b/servant-jsaddle.cabal index 4ff54b6..3e14832 100644 --- a/servant-jsaddle.cabal +++ b/servant-jsaddle.cabal @@ -46,21 +46,21 @@ library -- Bundled with GHC: Lower bound to not force re-installs -- text and mtl are bundled starting with GHC-8.4 build-depends: - base >=4.9 && <4.14 - , bytestring >=0.10.8.1 && <0.11 + base >=4.9 && <5 + , bytestring >=0.10.8.1 , containers >=0.5.7.1 && <0.7 - , mtl >=2.2.2 && <2.3 - , text >=1.2.3.0 && <1.3 - , transformers >=0.5.2.0 && <0.6 + , mtl >=2.2.2 + , text >=1.2.3.0 + , transformers >=0.5.2.0 if impl(ghcjs -any) build-depends: ghcjs-base -- Servant dependencies. -- Strict dependency on `servant-client-core` as we re-export things. - build-depends: servant-client-core >=0.16 && <0.16.1 + build-depends: servant-client-core >=0.16 build-depends: - base-compat >=0.10.5 && <0.12 + base-compat >=0.10.5 , case-insensitive >=1.2.0.0 && <1.3 , exceptions >=0.10.0 && <0.11 , ghcjs-dom >=0.9.4.0 && <0.10 @@ -68,7 +68,7 @@ library , http-types >=0.12.2 && <0.13 , jsaddle >=0.9.6.0 && <0.10 , monad-control >=1.0.2.3 && <1.1 - , semigroupoids >=5.3.1 && <5.4 + , semigroupoids >=5.3.1 , string-conversions >=0.3 && <0.5 , transformers-base >=0.4.4 && <0.5 diff --git a/src/Servant/Client/Internal/JSaddleXhrClient.hs b/src/Servant/Client/Internal/JSaddleXhrClient.hs index e219ff2..d242c85 100644 --- a/src/Servant/Client/Internal/JSaddleXhrClient.hs +++ b/src/Servant/Client/Internal/JSaddleXhrClient.hs @@ -48,6 +48,8 @@ import Data.Foldable (toList) import Data.Functor.Alt (Alt (..)) +import Data.Maybe + (fromMaybe) import Data.Proxy (Proxy (..)) import qualified Data.Sequence as Seq @@ -70,7 +72,7 @@ import qualified Language.Javascript.JSaddle.Types as JSaddle import Network.HTTP.Media (renderHeader) import Network.HTTP.Types - (ResponseHeaders, http11, mkStatus, renderQuery, statusCode) + (ResponseHeaders, Status, http11, mkStatus, renderQuery, statusCode) import System.IO (hPutStrLn, stderr) @@ -120,9 +122,15 @@ instance Alt ClientM where instance RunClient ClientM where throwClientError = throwError +#if MIN_VERSION_servant_client_core(0,18,1) + runRequestAcceptStatus acceptStatuses r = do + d <- ClientM askDOM + performRequest (fromMaybe [] acceptStatuses) d r +#else runRequest r = do d <- ClientM askDOM - performRequest d r + performRequest [] d r +#endif runClientM :: ClientM a -> ClientEnv -> DOM (Either ClientError a) runClientM cm env = runExceptT $ flip runReaderT env $ fromClientM cm @@ -156,8 +164,8 @@ getDefaultBaseUrl = do pure (BaseUrl protocol hostname port "") -performRequest :: DOMContext -> Request -> ClientM Response -performRequest domc req = do +performRequest :: [Status] -> DOMContext -> Request -> ClientM Response +performRequest acceptStatuses domc req = do xhr <- JS.newXMLHttpRequest `runDOM` domc burl <- asks baseUrl fixUp <- asks fixUpXhr @@ -165,7 +173,7 @@ performRequest domc req = do resp <- toResponse domc xhr let status = statusCode (responseStatusCode resp) - unless (status >= 200 && status < 300) $ + unless ((status >= 200 && status < 300) || status `elem` (statusCode <$> acceptStatuses)) $ throwError $ mkFailureResponse burl req resp pure resp From 31bf67d913257c42924a4c9fdc6e02bd36cb0489 Mon Sep 17 00:00:00 2001 From: Samuel Evans-Powell Date: Thu, 2 May 2024 12:47:28 +0800 Subject: [PATCH 2/5] Allow to compile with new javascript backend --- servant-jsaddle.cabal | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/servant-jsaddle.cabal b/servant-jsaddle.cabal index 3e14832..f83910c 100644 --- a/servant-jsaddle.cabal +++ b/servant-jsaddle.cabal @@ -53,7 +53,7 @@ library , text >=1.2.3.0 , transformers >=0.5.2.0 - if impl(ghcjs -any) + if impl(ghcjs -any) || arch(javascript) build-depends: ghcjs-base -- Servant dependencies. @@ -72,7 +72,7 @@ library , string-conversions >=0.3 && <0.5 , transformers-base >=0.4.4 && <0.5 - if impl(ghc >=8.0) + if impl(ghc >=8.0) || arch(javascript) ghc-options: -Wno-redundant-constraints test-suite spec @@ -82,7 +82,7 @@ test-suite spec hs-source-dirs: test main-is: Spec.hs - if impl(ghcjs -any) + if impl(ghcjs -any) || arch(javascript) build-depends: base , servant-jsaddle From 842e0dc906398cda0969677f451ca41dbb38a2ed Mon Sep 17 00:00:00 2001 From: Samuel Evans-Powell Date: Mon, 13 May 2024 13:35:03 +0800 Subject: [PATCH 3/5] Re-instate upper version bounds - Moved upper version bounds to latest version tested. - Left lower bounds as-is, as changes should be compatible with existing tested versions. --- servant-jsaddle.cabal | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/servant-jsaddle.cabal b/servant-jsaddle.cabal index f83910c..e2dee24 100644 --- a/servant-jsaddle.cabal +++ b/servant-jsaddle.cabal @@ -47,20 +47,20 @@ library -- text and mtl are bundled starting with GHC-8.4 build-depends: base >=4.9 && <5 - , bytestring >=0.10.8.1 + , bytestring >=0.10.8.1 && <0.13 , containers >=0.5.7.1 && <0.7 - , mtl >=2.2.2 - , text >=1.2.3.0 - , transformers >=0.5.2.0 + , mtl >=2.2.2 && <2.4 + , text >=1.2.3.0 && <2.2 + , transformers >=0.5.2.0 && <0.7 if impl(ghcjs -any) || arch(javascript) build-depends: ghcjs-base -- Servant dependencies. -- Strict dependency on `servant-client-core` as we re-export things. - build-depends: servant-client-core >=0.16 + build-depends: servant-client-core >=0.16 && <0.21 build-depends: - base-compat >=0.10.5 + base-compat >=0.10.5 && <=0.13.1 , case-insensitive >=1.2.0.0 && <1.3 , exceptions >=0.10.0 && <0.11 , ghcjs-dom >=0.9.4.0 && <0.10 @@ -68,7 +68,7 @@ library , http-types >=0.12.2 && <0.13 , jsaddle >=0.9.6.0 && <0.10 , monad-control >=1.0.2.3 && <1.1 - , semigroupoids >=5.3.1 + , semigroupoids >=5.3.1 && <6.1 , string-conversions >=0.3 && <0.5 , transformers-base >=0.4.4 && <0.5 From 065ff9373073e0c22d35dbfdc6436447c5e08f46 Mon Sep 17 00:00:00 2001 From: Samuel Evans-Powell Date: Mon, 13 May 2024 13:35:12 +0800 Subject: [PATCH 4/5] Bump servant-jsaddle version --- servant-jsaddle.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servant-jsaddle.cabal b/servant-jsaddle.cabal index e2dee24..1d9a59b 100644 --- a/servant-jsaddle.cabal +++ b/servant-jsaddle.cabal @@ -1,5 +1,5 @@ name: servant-jsaddle -version: 0.16 +version: 0.17 synopsis: automatic derivation of querying functions for servant webservices for jsaddle From c167845feaa495cee4d83c1aad5efda249bfa389 Mon Sep 17 00:00:00 2001 From: Samuel Evans-Powell Date: Mon, 13 May 2024 13:58:13 +0800 Subject: [PATCH 5/5] Remove unnecessary arch(javascript) condition --- servant-jsaddle.cabal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servant-jsaddle.cabal b/servant-jsaddle.cabal index 1d9a59b..0fe89eb 100644 --- a/servant-jsaddle.cabal +++ b/servant-jsaddle.cabal @@ -72,7 +72,7 @@ library , string-conversions >=0.3 && <0.5 , transformers-base >=0.4.4 && <0.5 - if impl(ghc >=8.0) || arch(javascript) + if impl(ghc >=8.0) ghc-options: -Wno-redundant-constraints test-suite spec