@@ -5,7 +5,7 @@ import Prelude
55import Data.Array (length)
66import Data.Maybe (Maybe(..))
77import Effect.Class.Console (log)
8−import Yoga.Fetch.Om (GET, POST, PUT, DELETE, Route, JSON, Path, type (/), type (:), type (:?), client)
8+import Yoga.Fetch.Om (GET, POST, PUT, DELETE, Route, JSON, Path, type (/), type (:), type (:?), client, polymorphic)
99import Yoga.Om (Om, handleErrors)
1010
1111type User =
@@ -73,15 +73,17 @@ type UserAPI =
7373 )
7474 }
7575
76+-- Generated client with polymorphic type annotation
7677api
77− :: { createUser :: CreateUserRequest -> Om {} (badRequest :: ErrorMessage) User
78− , createUserAuth :: { authorization :: String } -> CreateUserRequest -> Om {} (badRequest :: ErrorMessage) User
79− , deleteUser :: { id :: Int } -> Om {} (notFound :: ErrorMessage) {}
80− , getUser :: { id :: Int } -> Om {} (notFound :: ErrorMessage) User
81− , listUsers :: { limit :: Maybe Int, offset :: Maybe Int } -> Om {} () (Array User)
82− , updateUser :: { id :: Int } -> UpdateUserRequest -> Om {} (badRequest :: ErrorMessage, notFound :: ErrorMessage) User
78+ :: forall ctx err
79+ . { createUser :: CreateUserRequest -> Om ctx (badRequest :: ErrorMessage | err) User
80+ , createUserAuth :: { authorization :: String } -> CreateUserRequest -> Om ctx (badRequest :: ErrorMessage | err) User
81+ , deleteUser :: { id :: Int } -> Om ctx (notFound :: ErrorMessage | err) {}
82+ , getUser :: { id :: Int } -> Om ctx (notFound :: ErrorMessage | err) User
83+ , listUsers :: { limit :: Maybe Int, offset :: Maybe Int } -> Om ctx err (Array User)
84+ , updateUser :: { id :: Int } -> UpdateUserRequest -> Om ctx (badRequest :: ErrorMessage, notFound :: ErrorMessage | err) User
8385 }
84−api = client @UserAPI "https://api.example.com"
86+api = polymorphic $ client @UserAPI "https://api.example.com"
8587
8688exampleGetUser :: Om {} (notFound :: ErrorMessage) Unit
8789exampleGetUser = do