@@ -122,6 +122,7 @@ import Servant.JS.Axios
122122import Servant.JS.Internal
123123import Servant.JS.JQuery
124124import Servant.JS.Vanilla
125+import Servant.Foreign (GenerateList(..), listFromAPI)
125126
126127-- Dummy type specifying target language
127128data LangJS
@@ -139,7 +140,7 @@ jsForAPI :: (HasForeign LangJS api, GenerateList (Foreign api))
139140 => Proxy api -- ^ proxy for your API type
140141 -> JavaScriptGenerator -- ^ js code generator to use (angular, vanilla js, jquery, others)
141142 -> Text -- ^ a text that you can embed in your pages or write to a file
142−jsForAPI p gen = gen (listFromAPI p)
143+jsForAPI p gen = gen (listFromAPI (Proxy :: Proxy LangJS) p)
143144
144145-- | Directly generate all the javascript functions for your API
145146-- from a 'Proxy' for your API type using the given generator
@@ -155,20 +156,3 @@ writeJSForAPI p gen fp = writeFile fp (jsForAPI p gen)
155156instance HasForeignType LangJS a where
156157 typeFor _ _ = empty
157158
158−-- | Utility class used by 'jsForAPI' which computes
159−-- the data needed to generate a function for each endpoint
160−-- and hands it all back in a list.
161−class GenerateList reqs where
162− generateList :: reqs -> [AjaxReq]
163−
164−instance GenerateList AjaxReq where
165− generateList r = [r]
166−
167−instance (GenerateList start, GenerateList rest) => GenerateList (start :<|> rest) where
168− generateList (start :<|> rest) = (generateList start) ++ (generateList rest)
169−
170−-- | Generate the necessary data for JS codegen as a list, each 'AjaxReq'
171−-- describing one endpoint from your API type.
172−listFromAPI :: (HasForeign LangJS api, GenerateList (Foreign api)) => Proxy api -> [AjaxReq]
173−listFromAPI p = generateList (javascript p)
174−