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/).