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.json files #569 and #480
Allow classes like InvocationContext and HttpRequest to 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
Remove context.done(). We assume your function (async or sync) is done as soon as it returns
Remove context.executionContext. You can find functionName and retryContext on the root context object instead
Remove context.bindingDefinitions in favor of context.options
Remove context.log sub-methods (context.log.error/context.log.warn/etc.) in favor of methods on the root context object (context.error/context.warn/etc.). Also Remove the verbose option in favor of trace and debug to match Node.js's console methods
Remove context.req, context,res, and context.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 on context.extraInputs or context.extraOutputs
Clean up context.bindingMetadata
Rename to context.triggerMetadata
Remove legacy sys property
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
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 Request to HttpRequest
Change query from type HttpRequestQuery to Node.js core type URLSearchParams
Remove HttpResponseSimple/HttpResponseFull/HttpResponse types in favor of HttpResponse class and HttpResponseInit interface
Remove statusCode in favor of status
Remove end, send, sendStatus, and json. These were callback methods based on context.done() which is no longer supported
Remove header-related methods (setHeader, header, set, getHeader, get, removeHeader, type) from base response object. You must use response.headers for any header-related methods
Change headers from type HttpRequestHeaders/HttpResponseHeaders to fetch standard type Headers
Remove body properties body, rawBody, bufferBody, and parseFormBody() in favor of fetch standard methods arrayBuffer(), blob(), formData(), json(), and text()
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 the app object
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps @azure/functions from 3.5.0 to 4.0.1.
Release notes
Sourced from
@azure/functions
's releases.... (truncated)
Commits
4a83c78
Add link to blog post and discussion to README (#153)d339bff
Bump undici from 5.13.0 to 5.19.1 (#151)6e43a2b
Prep for v4 GA 🎉 (#148)34c305a
Bump version (#147)8ed8468
Add support for table input & output (#146)e9d27d3
Add support for sql input and output (#145)7eb4466
Validate tag/version in release pipeline (#142)0948a4b
add node 20 preview support to readme (v4) (#137)aa934c2
add node 20 to test pipeline (#139)2205716
Support service bus batching (#132)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show