Webtask compiler that provides a configurable middleware pipeline


1.5.23 years ago4 years agoMinified + gzip package size for @webtask/middleware-compiler in KB


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.


  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.

  2. Set the wt-compiler metadata property on your webtask to @webtask/middleware-compiler.

  3. 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.
  4. 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:

  • 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 **

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.