Minor Changes
-
2960244: Add the
qualify(type, options?)helper to@temporal-contract/worker/activity.It builds the qualifier function
fromPromiseneeds, replacing the
ApplicationFailure.create({ type, message: error instanceof Error ? ... })
boilerplate previously repeated in every activity:import { declareActivitiesHandler, qualify } from "@temporal-contract/worker/activity"; import { fromPromise } from "unthrown"; export const activities = declareActivitiesHandler({ contract, activities: { sendEmail: (args) => fromPromise(emailService.send(args), qualify("EMAIL_SEND_FAILED")).map(() => ({ sent: true, })), }, });
An
Errorrejection keeps its own message and is preserved ascause;
non-Errorrejections fall back tooptions.message(orString(error)).
options.nonRetryableandoptions.detailsare forwarded to the failure.
The qualifier always wraps — even anApplicationFailurerejection — so the
declaredtypeis guaranteed for retry policies. -
d3e71fc: Upgrade the
unthrownpeer dependency to^4(from^3).unthrown 4 is not compatible with unthrown 3 — most notably,
TaggedError
now reservesnameandmessageas payload fields (they are set via
Error, not passed as structured data). The client and worker error classes
were migrated accordingly; their public shape is unchanged (_tag,name,
message, and the typed payload fields are all still present and behave
identically). Consumers must be onunthrown@4.Released as a minor rather than a major: these packages have no external
consumers pinned tounthrown@3, so the peer-range change carries no
real-world break. If you depend on@temporal-contract/{contract,client,worker},
bumpunthrownto^4alongside this release.
Patch Changes
-
3b88b3f: Audit fixes across the published packages.
@temporal-contract/testing:@temporalio/clientand@temporalio/worker
moved fromdependenciestopeerDependencies(^1). Both packages' types are
exposed through the publicitfixture (Connection/NativeConnection), so
consumers must resolve them to a single instance to avoid disjoint nominal
types. Package managers that auto-install peers (npm 7+, pnpm with
autoInstallPeers) are unaffected; other setups must add the two packages
explicitly — any project using this testing helper already depends on them in
practice. Because that install-shape change can require consumer action, this is
released as a minor for@temporal-contract/testing. The staleconfig
entry was also dropped fromfiles.All packages:
sideEffects: falseis now declared, enabling bundler
tree-shaking. The worker package'screateTypedChildHandleno longer uses
anyinternally, and JSDoc examples were fixed to use ESM-correct imports
(.jsextensions,workflowsPathFromURLinstead ofrequire.resolve). -
Updated dependencies [3b88b3f]
-
Updated dependencies [d3e71fc]
- @temporal-contract/contract@6.1.0