## [Unreleased]
+## [v2.0.0] - TBD
+
+- HEAD requests are now handled automatically by default, if not otherwise specifically registered, on a route with a GET handler
+- trailing slashes on a request url now default to being ignored when matching routes
- removed deprecated functions
+- minor refactors
+- updated devDependencies
## [v1.2.10] - 2023-07-20
---
-[Unreleased]: https://git.squeep.com/?p=squeep-api-dingus;a=commitdiff;h=HEAD;hp=v1.2.10
+[Unreleased]: https://git.squeep.com/?p=squeep-api-dingus;a=commitdiff;h=HEAD;hp=v2.0.0
+[v2.0.0]: https://git.squeep.com/?p=squeep-api-dingus;a=commitdiff;h=v2.0.0;hp=v1.2.10
[v1.2.10]: https://git.squeep.com/?p=squeep-api-dingus;a=commitdiff;h=v1.2.10;hp=v1.2.9
[v1.2.9]: https://git.squeep.com/?p=squeep-api-dingus;a=commitdiff;h=v1.2.9;hp=v1.2.8
[v1.2.8]: https://git.squeep.com/?p=squeep-api-dingus;a=commitdiff;h=v1.2.8;hp=v1.2.7
The primary design goals are:
- self-contained: Uses as few external dependencies as are feasible.
-- not-infinitely-extensible: The projects it gets used in drive the feature set.
+- not-infinitely-extensible: The projects it gets used in drive the feature set, so some expected functionality may be surprisingly missing.
- learning from mistakes made along the way: This was partly created as a means to gain a better understanding of the existing web framework ecosystem by fussing with all the involved fiddly bits, a priori, from the bottom up.
## Getting Started
Construct it with a console-level-compatible logger object capable of doing something meaningful with calls like `logger[level](scopeString, messageString, dataObject)`.
Within the server request handler:
-- `dispatch(req, res)` makes things go.
+- `async dispatch(req, res)` makes things go.
Within the application implementation:
- `on(method, urlPath, handler)` declares a thing to do when a request matches.
-- `preHandler(req, res, ctx)` is called on every request before the handler function, by default adding some request information to the context.
+- `async preHandler(req, res, ctx)` is called on every request before the handler function, by default adding some request information to the context.
Within your handlers:
- parameters from the route and query, along with other metadata, are set in each context.
- `renderError(contentType, err)` for outgoing types.
Some handler functions are provided:
-- `handlerGetStaticFile(req, res, ctx, file)` will return a file from a configured directory, and also supports including CERN-style header metadata. It will also serve pre-encoded variations (e.g `.gz` or `.br`) if available and requested.
-- `handlerRedirect(req, res, ctx, newPath, statusCode)` will return a redirect response.
+- `async handlerGetStaticFile(req, res, ctx, file)` will return a file from a configured directory, and also supports including CERN-style header metadata. It will also serve pre-encoded variations (e.g. `.gz` or `.br`) if available and requested.
+- `async handlerRedirect(req, res, ctx, newPath, statusCode)` will return a redirect response.
+
+## Performance
+
+While not a specifically-focused target, performance falls roughly midway between [koa](https://koajs.com/) and [fastify](https://fastify.dev/).