@@ -167,12 +167,14 @@ type family Elem (a :: *) (ls::[*]) :: Constraint where
167167 Elem a (b ': list) = Elem a list
168168
169169class HasJQ (layout :: *) where
170− type JQ layout :: *
171− jqueryFor :: Proxy layout -> AjaxReq -> JQ layout
170+ type JQ' layout :: *
171+ jqueryFor :: Proxy layout -> AjaxReq -> JQ' layout
172+
173+type JQ layout = JQ' (Canonicalize layout)
172174
173175instance (HasJQ a, HasJQ b)
174176 => HasJQ (a :<|> b) where
175− type JQ (a :<|> b) = JQ a :<|> JQ b
177+ type JQ' (a :<|> b) = JQ' a :<|> JQ' b
176178
177179 jqueryFor Proxy req =
178180 jqueryFor (Proxy :: Proxy a) req
@@ -180,7 +182,7 @@ instance (HasJQ a, HasJQ b)
180182
181183instance (KnownSymbol sym, HasJQ sublayout)
182184 => HasJQ (Capture sym a :> sublayout) where
183− type JQ (Capture sym a :> sublayout) = JQ sublayout
185+ type JQ' (Capture sym a :> sublayout) = JQ' sublayout
184186
185187 jqueryFor Proxy req =
186188 jqueryFor (Proxy :: Proxy sublayout) $
@@ -189,14 +191,14 @@ instance (KnownSymbol sym, HasJQ sublayout)
189191 where str = symbolVal (Proxy :: Proxy sym)
190192
191193instance HasJQ Delete where
192− type JQ Delete = AjaxReq
194+ type JQ' Delete = AjaxReq
193195
194196 jqueryFor Proxy req =
195197 req & funcName %~ ("delete" <>)
196198 & reqMethod .~ "DELETE"
197199
198200instance Elem JSON list => HasJQ (Get list a) where
199− type JQ (Get list a) = AjaxReq
201+ type JQ' (Get list a) = AjaxReq
200202
201203 jqueryFor Proxy req =
202204 req & funcName %~ ("get" <>)
@@ -204,7 +206,7 @@ instance Elem JSON list => HasJQ (Get list a) where
204206
205207instance (KnownSymbol sym, HasJQ sublayout)
206208 => HasJQ (Header sym a :> sublayout) where
207− type JQ (Header sym a :> sublayout) = JQ sublayout
209+ type JQ' (Header sym a :> sublayout) = JQ' sublayout
208210
209211 jqueryFor Proxy req =
210212 jqueryFor subP (req & reqHeaders <>~ [HeaderArg hname])
@@ -213,14 +215,14 @@ instance (KnownSymbol sym, HasJQ sublayout)
213215 subP = Proxy :: Proxy sublayout
214216
215217instance Elem JSON list => HasJQ (Post list a) where
216− type JQ (Post list a) = AjaxReq
218+ type JQ' (Post list a) = AjaxReq
217219
218220 jqueryFor Proxy req =
219221 req & funcName %~ ("post" <>)
220222 & reqMethod .~ "POST"
221223
222224instance Elem JSON list => HasJQ (Put list a) where
223− type JQ (Put list a) = AjaxReq
225+ type JQ' (Put list a) = AjaxReq
224226
225227 jqueryFor Proxy req =
226228 req & funcName %~ ("put" <>)
@@ -228,7 +230,7 @@ instance Elem JSON list => HasJQ (Put list a) where
228230
229231instance (KnownSymbol sym, HasJQ sublayout)
230232 => HasJQ (QueryParam sym a :> sublayout) where
231− type JQ (QueryParam sym a :> sublayout) = JQ sublayout
233+ type JQ' (QueryParam sym a :> sublayout) = JQ' sublayout
232234
233235 jqueryFor Proxy req =
234236 jqueryFor (Proxy :: Proxy sublayout) $
@@ -238,7 +240,7 @@ instance (KnownSymbol sym, HasJQ sublayout)
238240
239241instance (KnownSymbol sym, HasJQ sublayout)
240242 => HasJQ (QueryParams sym a :> sublayout) where
241− type JQ (QueryParams sym a :> sublayout) = JQ sublayout
243+ type JQ' (QueryParams sym a :> sublayout) = JQ' sublayout
242244
243245 jqueryFor Proxy req =
244246 jqueryFor (Proxy :: Proxy sublayout) $
@@ -248,7 +250,7 @@ instance (KnownSymbol sym, HasJQ sublayout)
248250
249251instance (KnownSymbol sym, HasJQ sublayout)
250252 => HasJQ (QueryFlag sym :> sublayout) where
251− type JQ (QueryFlag sym :> sublayout) = JQ sublayout
253+ type JQ' (QueryFlag sym :> sublayout) = JQ' sublayout
252254
253255 jqueryFor Proxy req =
254256 jqueryFor (Proxy :: Proxy sublayout) $
@@ -257,14 +259,14 @@ instance (KnownSymbol sym, HasJQ sublayout)
257259 where str = symbolVal (Proxy :: Proxy sym)
258260
259261instance HasJQ Raw where
260− type JQ Raw = Method -> AjaxReq
262+ type JQ' Raw = Method -> AjaxReq
261263
262264 jqueryFor Proxy req method =
263265 req & funcName %~ ((toLower <$> method) <>)
264266 & reqMethod .~ method
265267
266268instance (Elem JSON list, HasJQ sublayout) => HasJQ (ReqBody list a :> sublayout) where
267− type JQ (ReqBody list a :> sublayout) = JQ sublayout
269+ type JQ' (ReqBody list a :> sublayout) = JQ' sublayout
268270
269271 jqueryFor Proxy req =
270272 jqueryFor (Proxy :: Proxy sublayout) $
@@ -272,7 +274,7 @@ instance (Elem JSON list, HasJQ sublayout) => HasJQ (ReqBody list a :> sublayout
272274
273275instance (KnownSymbol path, HasJQ sublayout)
274276 => HasJQ (path :> sublayout) where
275− type JQ (path :> sublayout) = JQ sublayout
277+ type JQ' (path :> sublayout) = JQ' sublayout
276278
277279 jqueryFor Proxy req =
278280 jqueryFor (Proxy :: Proxy sublayout) $