@@ -5,7 +5,7 @@ import Prelude
5import Data.Array (length)
5import Data.Array (length)
6import Data.Maybe (Maybe(..))
6import Data.Maybe (Maybe(..))
7import Effect.Class.Console (log)
7import 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)
9import Yoga.Om (Om, handleErrors)
9import Yoga.Om (Om, handleErrors)
11type User =
11type User =
@@ -73,15 +73,17 @@ type UserAPI =
76+-- Generated client with polymorphic type annotation
77− :: { createUser :: CreateUserRequest -> Om {} (badRequest :: ErrorMessage) User
79+ . { createUser :: CreateUserRequest -> Om ctx (badRequest :: ErrorMessage | err) User
78− , createUserAuth :: { authorization :: String } -> CreateUserRequest -> Om {} (badRequest :: ErrorMessage) User
80+ , createUserAuth :: { authorization :: String } -> CreateUserRequest -> Om ctx (badRequest :: ErrorMessage | err) User
79− , deleteUser :: { id :: Int } -> Om {} (notFound :: ErrorMessage) {}
81+ , deleteUser :: { id :: Int } -> Om ctx (notFound :: ErrorMessage | err) {}
80− , getUser :: { id :: Int } -> Om {} (notFound :: ErrorMessage) User
82+ , getUser :: { id :: Int } -> Om ctx (notFound :: ErrorMessage | err) User
81− , listUsers :: { limit :: Maybe Int, offset :: Maybe Int } -> Om {} () (Array User)
83+ , listUsers :: { limit :: Maybe Int, offset :: Maybe Int } -> Om ctx err (Array User)
82− , updateUser :: { id :: Int } -> UpdateUserRequest -> Om {} (badRequest :: ErrorMessage, notFound :: ErrorMessage) User
84+ , updateUser :: { id :: Int } -> UpdateUserRequest -> Om ctx (badRequest :: ErrorMessage, notFound :: ErrorMessage | err) User
84−api = client @UserAPI "https://api.example.com"
86+api = polymorphic $ client @UserAPI "https://api.example.com"
86exampleGetUser :: Om {} (notFound :: ErrorMessage) Unit
88exampleGetUser :: Om {} (notFound :: ErrorMessage) Unit
87exampleGetUser = do
89exampleGetUser = do