Don’t parse request body by default, to make Fn play well with
others (that want to parse the body themself).
Add !=> connective that is like ==>, but parses the request
body. If you don’t use !=>, patterns with file and files
will fail. Also, param will only get query parameters.
Add Route type alias for the type of pattern ==> handler. This
is partly for convenience and partly to make upgrades easier (in
the event that the types change).
Change FromParam class to take a list of all parameters matching
a given name, which allows us to implement a Maybe instance, a
list instance, and make paramMany redundant (though currently
left in, for compatibility). This also makes the ergonomics of
using optional parameters better.
Fix bug where staticServe would allow you to break out of
directory specified with ...
Changed to having our own FnRequest type, which is a WAI
Request and the results of parsing the body for contents, since
we need to be able to do that once and thread it through.
Add file and files matchers, which match against and pass file
uploads to handlers.
Add staticServe to serve static files based on path.
Allow nested calls to route, by changing Request in
ctxt. This necesitated changing it so that the ctxt is passed
to handlers last, instead of first, because we need to have
completed matching before we can change the request.
Add anything route matcher that matches anything.
Add paramMany matcher that returns a list of values for the
given query param.
Change param to fail if more than one value is in query string.