v4.0.0
The new Node.js programming model is now Generally Available! ๐ This changelog is meant as a detailed list of changes in the new version. See the official upgrade guide for a less detailed, more user-friendly list of the changes.
Added
- Support registering functions directly in your code instead of in
function.jsonfiles #569 and #480 - Allow classes like
InvocationContextandHttpRequestto be constructed in test environments outside the Azure Functions runtime
Changed
- Update minimum version of Node.js to 18.x
- Update minimum version of TypeScript to 4.x
- Switch the order of arguments. For example,
(context, request)is now(request, context)#34 - Simplify
contextobject #204- Rename
ContexttoInvocationContext - Remove
context.done(). We assume your function (async or sync) is done as soon as it returns - Remove
context.executionContext. You can findfunctionNameandretryContexton the rootcontextobject instead - Remove
context.bindingDefinitionsin favor ofcontext.options - Remove
context.logsub-methods (context.log.error/context.log.warn/etc.) in favor of methods on the rootcontextobject (context.error/context.warn/etc.). Also Remove theverboseoption in favor oftraceanddebugto match Node.js'sconsolemethods - Remove
context.req,context,res, andcontext.bindings. The primary input is always an argument to your function, the primary output is always the return value of your function, and everything else can be accessed oncontext.extraInputsorcontext.extraOutputs - Clean up
context.bindingMetadata- Rename to
context.triggerMetadata - Remove legacy
sysproperty - Remove logic that was recursively attempting to convert objects from rpc values, causing #607
- Make camel-case logic consistent so that it applies to the whole object - specifically including arrays which were previously excluded
- Rename to
- Rename
- Remove http classes that were unique to Azure Functions in favor of new classes representing a subset of the fetch standard based on the undici npm package.
- Rename
RequesttoHttpRequest- Change
queryfrom typeHttpRequestQueryto Node.js core typeURLSearchParams
- Change
- Remove
HttpResponseSimple/HttpResponseFull/HttpResponsetypes in favor ofHttpResponseclass andHttpResponseInitinterface- Remove
statusCodein favor ofstatus - Remove
end,send,sendStatus, andjson. These were callback methods based oncontext.done()which is no longer supported - Remove header-related methods (
setHeader,header,set,getHeader,get,removeHeader,type) from base response object. You must useresponse.headersfor any header-related methods
- Remove
- Change
headersfrom typeHttpRequestHeaders/HttpResponseHeadersto fetch standard typeHeaders - Remove body properties
body,rawBody,bufferBody, andparseFormBody()in favor of fetch standard methodsarrayBuffer(),blob(),formData(),json(), andtext()
- Rename
- Handle all falsy values appropriately. Treat it as data to be passed along instead of occasionally converting it to
null#388 - Remove
setup()method. v4 of the programming model is automatically setup when you register any function from theappobject