@@ -191,12 +191,14 @@ type family Elem (a :: *) (ls::[*]) :: Constraint where
191 Elem a (b ': list) = Elem a list
191 Elem a (b ': list) = Elem a list
193class HasJQ (layout :: *) where
193class HasJQ (layout :: *) where
194− type JQ layout :: *
194+ type JQ' layout :: *
195− jqueryFor :: Proxy layout -> AjaxReq -> JQ layout
195+ jqueryFor :: Proxy layout -> AjaxReq -> JQ' layout
197+type JQ layout = JQ' (Canonicalize layout)
197instance (HasJQ a, HasJQ b)
199instance (HasJQ a, HasJQ b)
198 => HasJQ (a :<|> b) where
200 => HasJQ (a :<|> b) where
199− type JQ (a :<|> b) = JQ a :<|> JQ b
201+ type JQ' (a :<|> b) = JQ' a :<|> JQ' b
201 jqueryFor Proxy req =
203 jqueryFor Proxy req =
202 jqueryFor (Proxy :: Proxy a) req
204 jqueryFor (Proxy :: Proxy a) req
@@ -204,7 +206,7 @@ instance (HasJQ a, HasJQ b)
205instance (KnownSymbol sym, HasJQ sublayout)
207instance (KnownSymbol sym, HasJQ sublayout)
206 => HasJQ (Capture sym a :> sublayout) where
208 => HasJQ (Capture sym a :> sublayout) where
207− type JQ (Capture sym a :> sublayout) = JQ sublayout
209+ type JQ' (Capture sym a :> sublayout) = JQ' sublayout
209 jqueryFor Proxy req =
211 jqueryFor Proxy req =
210 jqueryFor (Proxy :: Proxy sublayout) $
212 jqueryFor (Proxy :: Proxy sublayout) $
@@ -213,14 +215,14 @@ instance (KnownSymbol sym, HasJQ sublayout)
213 where str = symbolVal (Proxy :: Proxy sym)
215 where str = symbolVal (Proxy :: Proxy sym)
215instance HasJQ Delete where
217instance HasJQ Delete where
216− type JQ Delete = AjaxReq
218+ type JQ' Delete = AjaxReq
218 jqueryFor Proxy req =
220 jqueryFor Proxy req =
219 req & funcName %~ ("delete" <>)
221 req & funcName %~ ("delete" <>)
220 & reqMethod .~ "DELETE"
222 & reqMethod .~ "DELETE"
222instance Elem JSON list => HasJQ (Get list a) where
224instance Elem JSON list => HasJQ (Get list a) where
223− type JQ (Get list a) = AjaxReq
225+ type JQ' (Get list a) = AjaxReq
225 jqueryFor Proxy req =
227 jqueryFor Proxy req =
226 req & funcName %~ ("get" <>)
228 req & funcName %~ ("get" <>)
@@ -228,7 +230,7 @@ instance Elem JSON list => HasJQ (Get list a) where
229instance (KnownSymbol sym, HasJQ sublayout)
231instance (KnownSymbol sym, HasJQ sublayout)
230 => HasJQ (Header sym a :> sublayout) where
232 => HasJQ (Header sym a :> sublayout) where
231− type JQ (Header sym a :> sublayout) = JQ sublayout
233+ type JQ' (Header sym a :> sublayout) = JQ' sublayout
233 jqueryFor Proxy req =
235 jqueryFor Proxy req =
234 jqueryFor subP (req & reqHeaders <>~ [HeaderArg hname])
236 jqueryFor subP (req & reqHeaders <>~ [HeaderArg hname])
@@ -237,14 +239,14 @@ instance (KnownSymbol sym, HasJQ sublayout)
237 subP = Proxy :: Proxy sublayout
239 subP = Proxy :: Proxy sublayout
239instance Elem JSON list => HasJQ (Post list a) where
241instance Elem JSON list => HasJQ (Post list a) where
240− type JQ (Post list a) = AjaxReq
242+ type JQ' (Post list a) = AjaxReq
242 jqueryFor Proxy req =
244 jqueryFor Proxy req =
243 req & funcName %~ ("post" <>)
245 req & funcName %~ ("post" <>)
244 & reqMethod .~ "POST"
246 & reqMethod .~ "POST"
246instance Elem JSON list => HasJQ (Put list a) where
248instance Elem JSON list => HasJQ (Put list a) where
247− type JQ (Put list a) = AjaxReq
249+ type JQ' (Put list a) = AjaxReq
249 jqueryFor Proxy req =
251 jqueryFor Proxy req =
250 req & funcName %~ ("put" <>)
252 req & funcName %~ ("put" <>)
@@ -252,7 +254,7 @@ instance Elem JSON list => HasJQ (Put list a) where
253instance (KnownSymbol sym, HasJQ sublayout)
255instance (KnownSymbol sym, HasJQ sublayout)
254 => HasJQ (QueryParam sym a :> sublayout) where
256 => HasJQ (QueryParam sym a :> sublayout) where
255− type JQ (QueryParam sym a :> sublayout) = JQ sublayout
257+ type JQ' (QueryParam sym a :> sublayout) = JQ' sublayout
257 jqueryFor Proxy req =
259 jqueryFor Proxy req =
258 jqueryFor (Proxy :: Proxy sublayout) $
260 jqueryFor (Proxy :: Proxy sublayout) $
@@ -262,7 +264,7 @@ instance (KnownSymbol sym, HasJQ sublayout)
263instance (KnownSymbol sym, HasJQ sublayout)
265instance (KnownSymbol sym, HasJQ sublayout)
264 => HasJQ (QueryParams sym a :> sublayout) where
266 => HasJQ (QueryParams sym a :> sublayout) where
265− type JQ (QueryParams sym a :> sublayout) = JQ sublayout
267+ type JQ' (QueryParams sym a :> sublayout) = JQ' sublayout
267 jqueryFor Proxy req =
269 jqueryFor Proxy req =
268 jqueryFor (Proxy :: Proxy sublayout) $
270 jqueryFor (Proxy :: Proxy sublayout) $
@@ -272,7 +274,7 @@ instance (KnownSymbol sym, HasJQ sublayout)
273instance (KnownSymbol sym, HasJQ sublayout)
275instance (KnownSymbol sym, HasJQ sublayout)
274 => HasJQ (QueryFlag sym :> sublayout) where
276 => HasJQ (QueryFlag sym :> sublayout) where
275− type JQ (QueryFlag sym :> sublayout) = JQ sublayout
277+ type JQ' (QueryFlag sym :> sublayout) = JQ' sublayout
277 jqueryFor Proxy req =
279 jqueryFor Proxy req =
278 jqueryFor (Proxy :: Proxy sublayout) $
280 jqueryFor (Proxy :: Proxy sublayout) $
@@ -312,14 +314,14 @@ instance (KnownSymbol sym, HasJQ sublayout)
312 where str = symbolVal (Proxy :: Proxy sym)
314 where str = symbolVal (Proxy :: Proxy sym)
314instance HasJQ Raw where
316instance HasJQ Raw where
315− type JQ Raw = Method -> AjaxReq
317+ type JQ' Raw = Method -> AjaxReq
317 jqueryFor Proxy req method =
319 jqueryFor Proxy req method =
318 req & funcName %~ ((toLower <$> method) <>)
320 req & funcName %~ ((toLower <$> method) <>)
319 & reqMethod .~ method
321 & reqMethod .~ method
321instance (Elem JSON list, HasJQ sublayout) => HasJQ (ReqBody list a :> sublayout) where
323instance (Elem JSON list, HasJQ sublayout) => HasJQ (ReqBody list a :> sublayout) where
322− type JQ (ReqBody list a :> sublayout) = JQ sublayout
324+ type JQ' (ReqBody list a :> sublayout) = JQ' sublayout
324 jqueryFor Proxy req =
326 jqueryFor Proxy req =
325 jqueryFor (Proxy :: Proxy sublayout) $
327 jqueryFor (Proxy :: Proxy sublayout) $
@@ -327,7 +329,7 @@ instance (Elem JSON list, HasJQ sublayout) => HasJQ (ReqBody list a :> sublayout
328instance (KnownSymbol path, HasJQ sublayout)
330instance (KnownSymbol path, HasJQ sublayout)
329 => HasJQ (path :> sublayout) where
331 => HasJQ (path :> sublayout) where
330− type JQ (path :> sublayout) = JQ sublayout
332+ type JQ' (path :> sublayout) = JQ' sublayout
332 jqueryFor Proxy req =
334 jqueryFor Proxy req =
333 jqueryFor (Proxy :: Proxy sublayout) $
335 jqueryFor (Proxy :: Proxy sublayout) $