@@ -122,6 +122,7 @@ import Servant.JS.Axios
122import Servant.JS.Internal
122import Servant.JS.Internal
123import Servant.JS.JQuery
123import Servant.JS.JQuery
124import Servant.JS.Vanilla
124import Servant.JS.Vanilla
125+import Servant.Foreign (GenerateList(..), listFromAPI)
126-- Dummy type specifying target language
127-- Dummy type specifying target language
127data LangJS
128data LangJS
@@ -139,7 +140,7 @@ jsForAPI :: (HasForeign LangJS api, GenerateList (Foreign api))
139 => Proxy api -- ^ proxy for your API type
140 => Proxy api -- ^ proxy for your API type
140 -> JavaScriptGenerator -- ^ js code generator to use (angular, vanilla js, jquery, others)
141 -> JavaScriptGenerator -- ^ js code generator to use (angular, vanilla js, jquery, others)
141 -> Text -- ^ a text that you can embed in your pages or write to a file
142 -> 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)
144-- | Directly generate all the javascript functions for your API
145-- | Directly generate all the javascript functions for your API
145-- from a 'Proxy' for your API type using the given generator
146-- from a 'Proxy' for your API type using the given generator
@@ -155,20 +156,3 @@ writeJSForAPI p gen fp = writeFile fp (jsForAPI p gen)
155instance HasForeignType LangJS a where
156instance HasForeignType LangJS a where
156 typeFor _ _ = empty
157 typeFor _ _ = empty
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]
164−instance GenerateList AjaxReq where
165− generateList r = [r]
167−instance (GenerateList start, GenerateList rest) => GenerateList (start :<|> rest) where
168− generateList (start :<|> rest) = (generateList start) ++ (generateList rest)
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)