Releases: btravstack/temporal-contract
Release list
@temporal-contract/worker@7.0.0
Major Changes
-
dc4a0cd: Cross-project DNA alignment with amqp-contract (#301, #302, #303, #304).
Breaking — AsyncResult-returning creation (#301). The runtime factories now model creation failures on the
Errchannel instead of throwing, matching the org-wideTyped*.create()shape:TypedClient.create({ contract, client, interceptors? })→AsyncResult<TypedClient, TechnicalError>(single options object; surfaces a missing Schedule API and eager-connection failures viaconnection.ensureConnected).createWorker(options)→AsyncResult<Worker, TechnicalError>(bundling/connection failures modeled).TechnicalError(tag@temporal-contract/TechnicalError) is exported from@temporal-contract/contract/errorsand re-exported by client and worker.- Migration: deprecated throwing aliases
TypedClient.createOrThrow(contract, client)andcreateWorkerOrThrow(options)preserve the old behavior and will be removed in a future major.
Breaking — unified context model (#302).
declareActivitiesHandler's middleware option now takes a single middleware (compose chains withcomposeActivityMiddleware(...), outermost-first) instead of an array, andnexttakes an object patch:next({ context })extends the typed context flowing downstream (shallow-merged; bounded genericsTContextOut extends TContextInaccumulate acrosscomposeActivityMiddleware's overloads — amqp-contract's model).defineActivityMiddlewarepins a middleware's context types;EmptyContextis the empty seed.next({ input })replaces the positionalnext(input)substitution (still re-validated against the contract schema).createContextnow seeds the accumulated context;helpers.contextis the seed plus every middleware injection (an empty object when unconfigured, no longerundefined).- Client interceptors:
TypedClient.create({ interceptors })wrapsstartWorkflow/executeWorkflow/signalWithStartand handle-levelsignal/query/update, outermost-first, outside validation — patch args vianext({ input }), retry by callingnextagain, short-circuit by returning without callingnext. - The demesne
Layer.forkScoperecipe is documented as the recommendedcreateContextengine for scoped, resource-releasing contexts.
Testing — in-process story (#303). New
@temporal-contract/testing/time-skippingentry point: a Vitest fixture (itwith a worker-scopedtestEnv) pluscreateTimeSkippingEnvironment()wrapping Temporal's time-skippingTestWorkflowEnvironment— full contract-pipeline tests (validation, middleware, typed errors, rehydration) without Docker.@temporalio/testing ^1is a new peer dependency of the testing package.Consistency cleanup (#304).
activityOptionsondeclareWorkflowis now optional when every reachable activity carries contract-leveldefaultOptions(or anactivityOptionsByNameentry) — a descriptive declaration-time error lists uncovered activities otherwise. The direction-aware inference primitives (ClientInferInput/ClientInferOutput/WorkerInferInput/WorkerInferOutput) are centralized in@temporal-contract/contract(worker/client re-export them unchanged). The obsoletemigrating-to-neverthrowguide is removed, stale JSDoc fixed, and docs/examples adopt the composition-first rule (define resources first, then reference them indefineContract).
Minor Changes
-
52d4c01: Contract-declared typed domain errors, activity middleware + typed dependency context, and contract-level default activity options.
- Typed domain errors —
defineActivity/defineWorkflowaccept anerrorsmap ({ data?: StandardSchema, message?, nonRetryable? }per name). Activity implementations receive typed constructors via a new helpers argument ((args, { errors }) => Err(errors.PaymentDeclined({ reason }))); the worker serializes them asApplicationFailure(type= error name,details[0]= validated payload,nonRetryablefrom the contract). On the workflow side, errors-declaring activities now returnAsyncResult<Output, ContractError union | ActivityError | ActivityCancelledError>(mirroring the child-workflow API); activities without declared errors keep the throwingPromiseshape. Workflows can declare their own errors and fail withthrow context.errors.X(data); the typed client rehydrates matching failures intoContractErroronexecuteWorkflowandhandle.result(). New@temporal-contract/contract/errorsentry point exportsContractErrorand the supporting types. - Activity middleware + typed context —
declareActivitiesHandleracceptscreateContext(typed dependency injection, surfaced to implementations ashelpers.context) andmiddleware(contract-aware chain running inside the validation boundary, operating on the unthrownAsyncResult). - Contract-level activity option defaults —
defineActivityacceptsdefaultOptions(timeouts, retry policy). Merge precedence at the worker:declareWorkflowactivityOptions< contractdefaultOptions<activityOptionsByName.
- Typed domain errors —
Patch Changes
-
1ec704a: Require unthrown >= 4.1.0 (peer range
^4→^4.1.0).unthrown 4.1 renames several operators and deprecates the old aliases (
orElse→flatMapErr,recover→recoverErr,unwrap/unwrapErr/unwrapOr/unwrapOrElse→get/getErr/getOr/getOrElse). The packages' own code never used the deprecated names, so no runtime behavior changes — the docs and guides now reference the new names, and raising the peer minimum guarantees the renamed operators exist for consumers following them. -
Updated dependencies [dc4a0cd]
-
Updated dependencies [52d4c01]
-
Updated dependencies [1ec704a]
- @temporal-contract/contract@7.0.0
@temporal-contract/testing@7.0.0
Minor Changes
-
dc4a0cd: Cross-project DNA alignment with amqp-contract (#301, #302, #303, #304).
Breaking — AsyncResult-returning creation (#301). The runtime factories now model creation failures on the
Errchannel instead of throwing, matching the org-wideTyped*.create()shape:TypedClient.create({ contract, client, interceptors? })→AsyncResult<TypedClient, TechnicalError>(single options object; surfaces a missing Schedule API and eager-connection failures viaconnection.ensureConnected).createWorker(options)→AsyncResult<Worker, TechnicalError>(bundling/connection failures modeled).TechnicalError(tag@temporal-contract/TechnicalError) is exported from@temporal-contract/contract/errorsand re-exported by client and worker.- Migration: deprecated throwing aliases
TypedClient.createOrThrow(contract, client)andcreateWorkerOrThrow(options)preserve the old behavior and will be removed in a future major.
Breaking — unified context model (#302).
declareActivitiesHandler's middleware option now takes a single middleware (compose chains withcomposeActivityMiddleware(...), outermost-first) instead of an array, andnexttakes an object patch:next({ context })extends the typed context flowing downstream (shallow-merged; bounded genericsTContextOut extends TContextInaccumulate acrosscomposeActivityMiddleware's overloads — amqp-contract's model).defineActivityMiddlewarepins a middleware's context types;EmptyContextis the empty seed.next({ input })replaces the positionalnext(input)substitution (still re-validated against the contract schema).createContextnow seeds the accumulated context;helpers.contextis the seed plus every middleware injection (an empty object when unconfigured, no longerundefined).- Client interceptors:
TypedClient.create({ interceptors })wrapsstartWorkflow/executeWorkflow/signalWithStartand handle-levelsignal/query/update, outermost-first, outside validation — patch args vianext({ input }), retry by callingnextagain, short-circuit by returning without callingnext. - The demesne
Layer.forkScoperecipe is documented as the recommendedcreateContextengine for scoped, resource-releasing contexts.
Testing — in-process story (#303). New
@temporal-contract/testing/time-skippingentry point: a Vitest fixture (itwith a worker-scopedtestEnv) pluscreateTimeSkippingEnvironment()wrapping Temporal's time-skippingTestWorkflowEnvironment— full contract-pipeline tests (validation, middleware, typed errors, rehydration) without Docker.@temporalio/testing ^1is a new peer dependency of the testing package.Consistency cleanup (#304).
activityOptionsondeclareWorkflowis now optional when every reachable activity carries contract-leveldefaultOptions(or anactivityOptionsByNameentry) — a descriptive declaration-time error lists uncovered activities otherwise. The direction-aware inference primitives (ClientInferInput/ClientInferOutput/WorkerInferInput/WorkerInferOutput) are centralized in@temporal-contract/contract(worker/client re-export them unchanged). The obsoletemigrating-to-neverthrowguide is removed, stale JSDoc fixed, and docs/examples adopt the composition-first rule (define resources first, then reference them indefineContract).
@temporal-contract/contract@7.0.0
Minor Changes
-
dc4a0cd: Cross-project DNA alignment with amqp-contract (#301, #302, #303, #304).
Breaking — AsyncResult-returning creation (#301). The runtime factories now model creation failures on the
Errchannel instead of throwing, matching the org-wideTyped*.create()shape:TypedClient.create({ contract, client, interceptors? })→AsyncResult<TypedClient, TechnicalError>(single options object; surfaces a missing Schedule API and eager-connection failures viaconnection.ensureConnected).createWorker(options)→AsyncResult<Worker, TechnicalError>(bundling/connection failures modeled).TechnicalError(tag@temporal-contract/TechnicalError) is exported from@temporal-contract/contract/errorsand re-exported by client and worker.- Migration: deprecated throwing aliases
TypedClient.createOrThrow(contract, client)andcreateWorkerOrThrow(options)preserve the old behavior and will be removed in a future major.
Breaking — unified context model (#302).
declareActivitiesHandler's middleware option now takes a single middleware (compose chains withcomposeActivityMiddleware(...), outermost-first) instead of an array, andnexttakes an object patch:next({ context })extends the typed context flowing downstream (shallow-merged; bounded genericsTContextOut extends TContextInaccumulate acrosscomposeActivityMiddleware's overloads — amqp-contract's model).defineActivityMiddlewarepins a middleware's context types;EmptyContextis the empty seed.next({ input })replaces the positionalnext(input)substitution (still re-validated against the contract schema).createContextnow seeds the accumulated context;helpers.contextis the seed plus every middleware injection (an empty object when unconfigured, no longerundefined).- Client interceptors:
TypedClient.create({ interceptors })wrapsstartWorkflow/executeWorkflow/signalWithStartand handle-levelsignal/query/update, outermost-first, outside validation — patch args vianext({ input }), retry by callingnextagain, short-circuit by returning without callingnext. - The demesne
Layer.forkScoperecipe is documented as the recommendedcreateContextengine for scoped, resource-releasing contexts.
Testing — in-process story (#303). New
@temporal-contract/testing/time-skippingentry point: a Vitest fixture (itwith a worker-scopedtestEnv) pluscreateTimeSkippingEnvironment()wrapping Temporal's time-skippingTestWorkflowEnvironment— full contract-pipeline tests (validation, middleware, typed errors, rehydration) without Docker.@temporalio/testing ^1is a new peer dependency of the testing package.Consistency cleanup (#304).
activityOptionsondeclareWorkflowis now optional when every reachable activity carries contract-leveldefaultOptions(or anactivityOptionsByNameentry) — a descriptive declaration-time error lists uncovered activities otherwise. The direction-aware inference primitives (ClientInferInput/ClientInferOutput/WorkerInferInput/WorkerInferOutput) are centralized in@temporal-contract/contract(worker/client re-export them unchanged). The obsoletemigrating-to-neverthrowguide is removed, stale JSDoc fixed, and docs/examples adopt the composition-first rule (define resources first, then reference them indefineContract). -
52d4c01: Contract-declared typed domain errors, activity middleware + typed dependency context, and contract-level default activity options.
- Typed domain errors —
defineActivity/defineWorkflowaccept anerrorsmap ({ data?: StandardSchema, message?, nonRetryable? }per name). Activity implementations receive typed constructors via a new helpers argument ((args, { errors }) => Err(errors.PaymentDeclined({ reason }))); the worker serializes them asApplicationFailure(type= error name,details[0]= validated payload,nonRetryablefrom the contract). On the workflow side, errors-declaring activities now returnAsyncResult<Output, ContractError union | ActivityError | ActivityCancelledError>(mirroring the child-workflow API); activities without declared errors keep the throwingPromiseshape. Workflows can declare their own errors and fail withthrow context.errors.X(data); the typed client rehydrates matching failures intoContractErroronexecuteWorkflowandhandle.result(). New@temporal-contract/contract/errorsentry point exportsContractErrorand the supporting types. - Activity middleware + typed context —
declareActivitiesHandleracceptscreateContext(typed dependency injection, surfaced to implementations ashelpers.context) andmiddleware(contract-aware chain running inside the validation boundary, operating on the unthrownAsyncResult). - Contract-level activity option defaults —
defineActivityacceptsdefaultOptions(timeouts, retry policy). Merge precedence at the worker:declareWorkflowactivityOptions< contractdefaultOptions<activityOptionsByName.
- Typed domain errors —
Patch Changes
-
1ec704a: Require unthrown >= 4.1.0 (peer range
^4→^4.1.0).unthrown 4.1 renames several operators and deprecates the old aliases (
orElse→flatMapErr,recover→recoverErr,unwrap/unwrapErr/unwrapOr/unwrapOrElse→get/getErr/getOr/getOrElse). The packages' own code never used the deprecated names, so no runtime behavior changes — the docs and guides now reference the new names, and raising the peer minimum guarantees the renamed operators exist for consumers following them.
@temporal-contract/client@7.0.0
Major Changes
-
dc4a0cd: Cross-project DNA alignment with amqp-contract (#301, #302, #303, #304).
Breaking — AsyncResult-returning creation (#301). The runtime factories now model creation failures on the
Errchannel instead of throwing, matching the org-wideTyped*.create()shape:TypedClient.create({ contract, client, interceptors? })→AsyncResult<TypedClient, TechnicalError>(single options object; surfaces a missing Schedule API and eager-connection failures viaconnection.ensureConnected).createWorker(options)→AsyncResult<Worker, TechnicalError>(bundling/connection failures modeled).TechnicalError(tag@temporal-contract/TechnicalError) is exported from@temporal-contract/contract/errorsand re-exported by client and worker.- Migration: deprecated throwing aliases
TypedClient.createOrThrow(contract, client)andcreateWorkerOrThrow(options)preserve the old behavior and will be removed in a future major.
Breaking — unified context model (#302).
declareActivitiesHandler's middleware option now takes a single middleware (compose chains withcomposeActivityMiddleware(...), outermost-first) instead of an array, andnexttakes an object patch:next({ context })extends the typed context flowing downstream (shallow-merged; bounded genericsTContextOut extends TContextInaccumulate acrosscomposeActivityMiddleware's overloads — amqp-contract's model).defineActivityMiddlewarepins a middleware's context types;EmptyContextis the empty seed.next({ input })replaces the positionalnext(input)substitution (still re-validated against the contract schema).createContextnow seeds the accumulated context;helpers.contextis the seed plus every middleware injection (an empty object when unconfigured, no longerundefined).- Client interceptors:
TypedClient.create({ interceptors })wrapsstartWorkflow/executeWorkflow/signalWithStartand handle-levelsignal/query/update, outermost-first, outside validation — patch args vianext({ input }), retry by callingnextagain, short-circuit by returning without callingnext. - The demesne
Layer.forkScoperecipe is documented as the recommendedcreateContextengine for scoped, resource-releasing contexts.
Testing — in-process story (#303). New
@temporal-contract/testing/time-skippingentry point: a Vitest fixture (itwith a worker-scopedtestEnv) pluscreateTimeSkippingEnvironment()wrapping Temporal's time-skippingTestWorkflowEnvironment— full contract-pipeline tests (validation, middleware, typed errors, rehydration) without Docker.@temporalio/testing ^1is a new peer dependency of the testing package.Consistency cleanup (#304).
activityOptionsondeclareWorkflowis now optional when every reachable activity carries contract-leveldefaultOptions(or anactivityOptionsByNameentry) — a descriptive declaration-time error lists uncovered activities otherwise. The direction-aware inference primitives (ClientInferInput/ClientInferOutput/WorkerInferInput/WorkerInferOutput) are centralized in@temporal-contract/contract(worker/client re-export them unchanged). The obsoletemigrating-to-neverthrowguide is removed, stale JSDoc fixed, and docs/examples adopt the composition-first rule (define resources first, then reference them indefineContract).
Minor Changes
-
52d4c01: Contract-declared typed domain errors, activity middleware + typed dependency context, and contract-level default activity options.
- Typed domain errors —
defineActivity/defineWorkflowaccept anerrorsmap ({ data?: StandardSchema, message?, nonRetryable? }per name). Activity implementations receive typed constructors via a new helpers argument ((args, { errors }) => Err(errors.PaymentDeclined({ reason }))); the worker serializes them asApplicationFailure(type= error name,details[0]= validated payload,nonRetryablefrom the contract). On the workflow side, errors-declaring activities now returnAsyncResult<Output, ContractError union | ActivityError | ActivityCancelledError>(mirroring the child-workflow API); activities without declared errors keep the throwingPromiseshape. Workflows can declare their own errors and fail withthrow context.errors.X(data); the typed client rehydrates matching failures intoContractErroronexecuteWorkflowandhandle.result(). New@temporal-contract/contract/errorsentry point exportsContractErrorand the supporting types. - Activity middleware + typed context —
declareActivitiesHandleracceptscreateContext(typed dependency injection, surfaced to implementations ashelpers.context) andmiddleware(contract-aware chain running inside the validation boundary, operating on the unthrownAsyncResult). - Contract-level activity option defaults —
defineActivityacceptsdefaultOptions(timeouts, retry policy). Merge precedence at the worker:declareWorkflowactivityOptions< contractdefaultOptions<activityOptionsByName.
- Typed domain errors —
Patch Changes
-
1ec704a: Require unthrown >= 4.1.0 (peer range
^4→^4.1.0).unthrown 4.1 renames several operators and deprecates the old aliases (
orElse→flatMapErr,recover→recoverErr,unwrap/unwrapErr/unwrapOr/unwrapOrElse→get/getErr/getOr/getOrElse). The packages' own code never used the deprecated names, so no runtime behavior changes — the docs and guides now reference the new names, and raising the peer minimum guarantees the renamed operators exist for consumers following them. -
Updated dependencies [dc4a0cd]
-
Updated dependencies [52d4c01]
-
Updated dependencies [1ec704a]
- @temporal-contract/contract@7.0.0
@temporal-contract/worker@6.1.0
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
@temporal-contract/testing@6.1.0
Minor 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).
@temporal-contract/contract@6.1.0
Minor Changes
-
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).
@temporal-contract/client@6.1.0
Minor Changes
-
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
@temporal-contract/worker@6.0.0
Major Changes
-
6c79004: Upgrade to
unthrown3.0.0.The published packages'
unthrownpeer-dependency range moves to^3. unthrown 3.0.0's breaking change — removing the standaloneDefectconstructor in favour of adefectargument passed intofromPromise/fromThrowable'squalifycallback — does not affect temporal-contract, which never constructs defects (every boundary maps rejections to a modeled error). Everything else we use (Ok/Err,TaggedError,matchTags,fromPromise/fromSafePromise,result.match({ ok, err, defect }),.toAsync(), and theresult.isOk()/isErr()/isDefect()narrowing) is unchanged, so no source changes were required.Breaking for consumers: bump your own
unthrowninstall to^3.
Patch Changes
- Updated dependencies [6c79004]
- @temporal-contract/contract@6.0.0
@temporal-contract/worker@5.0.0
Major Changes
-
224e1ae: Upgrade to
unthrown2.0.0.The published packages'
unthrownpeer-dependency range moves to^2. unthrown 2.0.0 is API-compatible for everything temporal-contract uses — theOk/Err/Defectconstructors,TaggedError,matchTags,fromPromise/fromSafePromise,result.match({ ok, err, defect }),.toAsync(), andresult.isOk()/isErr()/isDefect()narrowing are all unchanged — so no source changes were required.Breaking for consumers: bump your own
unthrowninstall to^2. There are no other code changes.
Patch Changes
- Updated dependencies [224e1ae]
- @temporal-contract/contract@5.0.0