Available options that are used when creating a new instance of
Application
.
S extends State
contextState: "clone"
| "prototype"
| "alias"
| "empty"
Determine how when creating a new context, the state from the application
should be applied. A value of "clone"
will set the state as a clone of
the app state. Any non-cloneable or non-enumerable properties will not be
copied. A value of "prototype"
means that the application's state will be
used as the prototype of the the context's state, meaning shallow
properties on the context's state will not be reflected in the
application's state. A value of "alias"
means that application's .state
and the context's .state
will be a reference to the same object. A value
of "empty"
will initialize the context's .state
with an empty object.
The default value is "clone"
.
jsonBodyReplacer: () => unknown
An optional replacer function to be used when serializing a JSON
response. The replacer will be used with JSON.stringify()
to encode any
response bodies that need to be converted before sending the response.
This is intended to allow responses to contain bigints and circular references and encoding other values which JSON does not support directly.
This can be used in conjunction with jsonBodyReviver
to handle decoding
of request bodies if the same semantics are used for client requests.
If more detailed or conditional usage is required, then serialization should be implemented directly in middleware.
jsonBodyReviver: () => unknown
An optional reviver function to be used when parsing a JSON request. The
reviver will be used with JSON.parse()
to decode any response bodies that
are being converted as JSON.
This is intended to allow requests to deserialize to bigints, circular references, or other values which JSON does not support directly.
This can be used in conjunction with jsonBodyReplacer
to handle decoding
of response bodies if the same semantics are used for responses.
If more detailed or conditional usage is required, then deserialization should be implemented directly in the middleware.
keys: KeyStack | Key[]
An initial set of keys (or instance of KeyStack
) to be used for signing
cookies produced by the application.
If true
, any errors handled by the application will be logged to the
stderr. If false
nothing will be logged. The default is true
.
All errors are available as events on the application of type "error"
and
can be accessed for custom logging/application management via adding an
event listener to the application:
const app = new Application({ logErrors: false }); app.addEventListener("error", (evt) => { // evt.error will contain what error was thrown });
If set to true
, proxy headers will be trusted when processing requests.
This defaults to false
.
serverConstructor: ServerConstructor<R>
A server constructor to use instead of the default server for receiving requests.
Generally this is only used for testing.