packages feed

servant-to-elm 0.2.0.0 → 0.3.0.0

raw patch · 3 files changed

+30/−7 lines, 3 filesdep +servant-multipartPVP ok

version bump matches the API change (PVP)

Dependencies added: servant-multipart

API changes (from Hackage documentation)

+ Servant.To.Elm: instance (Language.Haskell.To.Elm.HasElmEncoder (Servant.Multipart.MultipartData tag) a, Servant.To.Elm.HasElmEndpoints api) => Servant.To.Elm.HasElmEndpoints (Servant.Multipart.MultipartForm tag a Servant.API.Sub.:> api)
+ Servant.To.Elm: instance Language.Haskell.To.Elm.HasElmEncoder (Servant.Multipart.MultipartData tag) (Servant.Multipart.MultipartData tag)
+ Servant.To.Elm: instance Language.Haskell.To.Elm.HasElmType (Servant.Multipart.MultipartData tag)
- Servant.To.Elm: Endpoint :: URL -> Method -> [(Text, Encoder, Bool)] -> Maybe Encoder -> Maybe Decoder -> [Text] -> Endpoint
+ Servant.To.Elm: Endpoint :: URL -> Method -> [(Text, Encoder, Bool)] -> Maybe (Expression Void, Encoder) -> Maybe Decoder -> [Text] -> Endpoint
- Servant.To.Elm: [$sel:_body:Endpoint] :: Endpoint -> Maybe Encoder
+ Servant.To.Elm: [$sel:_body:Endpoint] :: Endpoint -> Maybe (Expression Void, Encoder)

Files

CHANGELOG.md view
@@ -2,6 +2,10 @@  ## Unreleased changes +## 0.3.0.0++- Add support for multipart forms+ ## 0.2.0.0  - Update code with changes from `haskell-to-elm-0.2.0.0`
servant-to-elm.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 11605446602bdfe9cebe8697f26a8560fb1d2b9ff791eaf13b847658631ffb92+-- hash: 93b2674b01cbea25b894fcbcb2d07f0308d2c535ba76a81fd6831bda6deb39cb  name:           servant-to-elm-version:        0.2.0.0+version:        0.3.0.0 synopsis:       Automatically generate Elm clients for Servant APIs description:    Please see the README on GitHub at <https://github.com/folq/servant-to-elm#readme> category:       Servant, API, Elm, Compiler@@ -49,6 +49,7 @@     , http-types >=0.12.0     , protolude >=0.2.3     , servant >=0.16.0+    , servant-multipart >=0.11.0     , text >=1.2.0   default-language: Haskell2010 @@ -69,6 +70,7 @@     , http-types >=0.12.0     , protolude >=0.2.3     , servant+    , servant-multipart >=0.11.0     , servant-to-elm     , text >=1.2.0     , unordered-containers@@ -93,6 +95,7 @@     , http-types >=0.12.0     , protolude >=0.2.3     , servant >=0.16.0+    , servant-multipart >=0.11.0     , servant-to-elm     , text >=1.2.0   default-language: Haskell2010
src/Servant/To/Elm.hs view
@@ -25,6 +25,7 @@ import qualified Network.HTTP.Types as HTTP import Servant.API ((:<|>), (:>)) import qualified Servant.API as Servant+import qualified Servant.Multipart as Servant import qualified Servant.API.Modifiers as Servant  import Language.Elm.Definition (Definition)@@ -90,7 +91,7 @@             | (_, type_, arg) <- _queryString $ _url endpoint             ]           , [ _encodedType body-            | Just body <- [_body endpoint]+            | Just (_, body) <- [_body endpoint]             ]           ]         )@@ -286,9 +287,9 @@         Nothing ->           "Http.emptyBody" -        Just body ->+        Just (bodyType, body) ->           Expression.App-            "Http.jsonBody"+            (vacuous bodyType)             (Expression.App (vacuous $ _encoder body) $ pure bodyArgName)      elmExpect =@@ -402,7 +403,7 @@   { _url :: URL   , _method :: HTTP.Method   , _headers :: [(Text, Encoder, Bool)]-  , _body :: Maybe Encoder+  , _body :: Maybe (Expression Void, Encoder)   , _returnType :: Maybe Decoder   , _functionName :: [Text]   }@@ -561,9 +562,16 @@   => HasElmEndpoints (Servant.ReqBody' mods list a :> api) where     elmEndpoints' prefix =       elmEndpoints' @api prefix-        { _body = Just $ makeEncoder @Aeson.Value @a+        { _body = Just ("Http.jsonBody", makeEncoder @Aeson.Value @a)         } +instance (HasElmEncoder (Servant.MultipartData tag) a, HasElmEndpoints api)+  => HasElmEndpoints (Servant.MultipartForm tag a :> api) where+    elmEndpoints' prefix =+      elmEndpoints' @api prefix+        { _body = Just ("Http.multipartBody", makeEncoder @(Servant.MultipartData tag) @a)+        }+ instance (KnownSymbol path, HasElmEndpoints api) => HasElmEndpoints (path :> api) where   elmEndpoints' prefix =     elmEndpoints' @api prefix@@ -607,3 +615,11 @@ instance HasElmDecoder Aeson.Value Servant.NoContent where   elmDecoder =     Expression.App "Json.Decode.succeed" "NoContent.NoContent"++instance HasElmType (Servant.MultipartData tag) where+  elmType =+    Type.App "List.List" "Http.Part"++instance HasElmEncoder (Servant.MultipartData tag) (Servant.MultipartData tag) where+  elmEncoder =+    "Basics.identity"