github Azure/azure-functions-durable-js v3.0.0
Durable Functions for NodeJS 3.0.0

latest releases: v3.1.0, v2.1.4, 3.0.1...
13 months ago

Version 3 of the Durable Functions SDK is now generally available!🎉 This is the first version of the Durable Functions SDK with official support for v4 of the Node.js programming model. This changelog is meant as a detailed list of changes in this new version. See the official Durable Functions migration guide for a less detailed, more user-friendly list of changes. Learn more about the v4 programming model.

npm package

https://www.npmjs.com/package/durable-functions/v/3.0.0

Added

  • APIs to register Durable functions (orchestrations, activities, and entities) using code, under the app namespace (#453 and #384)
  • APIs to obtain trigger options for Durable triggers (orchestrations, activities, and entities) under the trigger namespace (#453 and #384)
  • API to obtain a Durable Client input options under the input namespace (#453 and #384)
  • A streamlined way to call activities and suborchestrations (#418)
  • A streamlined way to register Durable Functions client functions for HTTP and timer triggers (#414)
  • Preliminary support for Node 20

Removed

  • The old orchestrator() and entity() APIs (#453)

Changed

  • Update minimum version of Node.js to 18.x
  • Update minimum version of TypeScript to 4.x
  • Update minimum version of core tools required for local testing to 4.0.5382
  • Update @azure/functions dependency to 4.x (See v4.0.0 changelog for a more detailed list of changes to @azure/functions)
  • Improve exported types
    • Rename the IOrchestrationFunctionContext interface to OrchestrationContext, and export it from the root of the package (#455)
    • Rename the IEntityFunctionContext<T> interface to EntityContext<T> and export it from the root of the package (#455)
    • Rename the DurableOrchestrationClient class to DurableClient and export it from the root of the package (#154)
    • Export new type definitions
      • OrchestrationHandler, OrchestrationTrigger, and OrchestrationOptions for orchestrations
      • EntityHandler, EntityTrigger, and EntityOptions for entities
      • ActivityHandler, ActivityTrigger, and ActivityOptions for activities
      • DurableClientInput for client functions
    • Switch to manual declaration of type definitions (#458)
      • Remove private fields from exported class definitions
      • Remove @hidden fields from exported class definitions
      • Remove non-user facing classes/interfaces from public type definitions (#352)
  • Where applicable, switch DurableClient APIs from using discrete optional arguments to using an options object (#441 and #415)
    • getStatus()
    • getStatusBy()
    • purgeInstanceHistoryBy()
    • raiseEvent()
    • readEntityState()
    • rewind()
    • signalEntity()
    • startNew()
    • waitForCompletionOrCreateCheckStatusResponse()
  • Update the callHttp() API under the DurableOrchestrationContext class (#456 and #439)
    • Switch to using one options object for all arguments
    • Rename uri argument to url
    • Rename content argument to body
    • Deprecate asynchronousPatternEnabled flag in favor of enablePolling
  • Remove the Durable-specific IHTTPRequest, IHttpResponse, DurableHttpRequest and DurableHttpResponse classes, in favor of HttpRequest and HttpResponse from @azure/functions, which represent a subset of the fetch standard based on the undici npm package. See Changelog here for more details.
  • Breaking bug-fixes
    • Fixed a bug where input to sub-orchestrations would get serialized twice (#436)
    • Stopped supporting the creation of compound tasks (Task.any and Task.all) with no children, as it lead to ambiguous state (#424)
    • Fixed a bug where DurableClient.getStatus() was returning incorrect results. Updated the getStatus() API to be more type-safe and consistent with type contract (#486)

Patched

  • Fixed a bug where sometimes activities can be scheduled multiple times (#485)

Don't miss a new azure-functions-durable-js release

NewReleases is sending notifications on new releases.