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:
-
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.{"@webtask/middleware-compiler":"1.1.0"}
-
Set the
wt-compiler
metadata property on your webtask to@webtask/middleware-compiler
. -
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 torequire('module_name')
. -
module_name/name_of_export_function
- The name of an npm module with the name of the desired export. This wouldbe equivalent torequire('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.
-
-
Optionally, set the
wt-debug
metadata property to a comma-separated list of debug references that containswt-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 ofhttp.IncomingRequest
for the current request. It has areq.webtaskContext
property:-
req.webtaskContext
is a typical webtask context object that is augmented with acompiler
property. Thecompiler
object is exposed so that a middleware can be implemented that supports custom programming models. Thecompiler
property is an object that hasnodejsCompiler
andscript
properties where:-
nodejsCompiler
is the node.js compiler function provided to webtask compilers -
script
is the underling webtask's code
-
-
-
res
is the instance ofhttp.ServerResponse
for the current request -
next
is a function with the signaturefunction next(error)
. A middleware function may be designed to complete the response, in which case it can omit callingnext
. A middleware may also implement authentication logic, such as the authentication middleware. In this case, the middleware might invokenext
with anError
. If the error has astatusCode
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 callnext()
with no arguments.
Example middleware
** Authentication **