@webtask/middleware-compiler

Webtask compiler that provides a configurable middleware pipeline

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@webtask/middleware-compiler
1.5.26 years ago7 years agoMinified + gzip package size for @webtask/middleware-compiler in KB

Readme

Middleware compiler
The middleware compiler provides a mechanism to run any number of middleware prior to invoking a webtask.
Webtask middleware are disigned in a connect-compatible way that should allow many express middleware to just work.

Usage:

  1. Set the wt-node-dependencies metadata property to the stringified JSON of an object having a @webtask/middleware-compiler property whose value is the latest version of this module.
```json
{"@webtask/middleware-compiler":"1.1.0"}
```
  1. Set the wt-compiler metadata property on your webtask to @webtask/middleware-compiler.

  1. Optionally, set the wt-middleware metadata property to a comma-separated list of middleware references. Middleware references can be any combination of:
- `module_name` - The name of an npm module, in which case the module's default export is used. This would be equivalent to `require('module_name')`.
- `module_name/name_of_export_function` - The name of an npm module with the name of the desired export. This wouldbe equivalent to `require('module_name').name_of_export_function`.
- `http(s)://url.of/a/file/exporting/a/middleware.js` - A publicly accessible url from which the middleware's code will be downloaded and evaluated. The code must export a suitable middleware factory function as the default export.
  1. Optionally, set the wt-debug metadata property to a comma-separated list of debug references that contains wt-middleware. This will result in additional debug information being sent to real-time logs.

How it works

A middleware is a Function exported by a node module that returns another Function having the signature function(req, res, next), where:
  • req is the instance of http.IncomingRequest for the current request. It has a req.webtaskContext property:
- `req.webtaskContext` is a typical [webtask context object](https://webtask.io/docs/context) that is augmented with a `compiler` property. The `compiler` object is exposed so that a middleware can be implemented that supports [custom programming models](https://webtask.io/docs/webtask-compilers). The `compiler` property is an object that has `nodejsCompiler` and `script` properties where:
    - `nodejsCompiler` is the node.js [compiler function provided to webtask compilers](https://webtask.io/docs/webtask-compilers)
    - `script` is the underling webtask's code
  • res is the instance of http.ServerResponse for the current request
  • next is a function with the signature function next(error). A middleware function may be designed to complete the response, in which case it can omit calling next. A middleware may also implement authentication logic, such as the authentication() middleware. In this case, the middleware might invoke next with an Error. If the error has a statusCode property, this will be used as the response status code. Otherwise, to allow control to go to the next middleware, or to the default middleware (which compiles and invokes the webtask code), the middleware can call next() with no arguments.

Example middleware

Authentication