@temporal-contract/client 0.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +516 -159
- package/dist/index.d.cts +286 -47
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +286 -47
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +511 -158
- package/dist/index.mjs.map +1 -1
- package/package.json +30 -27
package/dist/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Client, WorkflowHandle, WorkflowStartOptions } from "@temporalio/client";
|
|
2
|
-
import { ActivityDefinition, AnySchema, ContractDefinition, QueryDefinition, SignalDefinition, UpdateDefinition, WorkflowDefinition } from "@temporal-contract/contract";
|
|
1
|
+
import { Client, ScheduleClient, ScheduleDescription, ScheduleOptions, ScheduleOptionsStartWorkflowAction, ScheduleOverlapPolicy, ScheduleSpec, WorkflowHandle, WorkflowSignalWithStartOptions, WorkflowStartOptions } from "@temporalio/client";
|
|
2
|
+
import { ActivityDefinition, AnySchema, ContractDefinition, QueryDefinition, SearchAttributeDefinition, SearchAttributeKindToType, SignalDefinition, UpdateDefinition, WorkflowDefinition } from "@temporal-contract/contract";
|
|
3
3
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
4
|
-
import {
|
|
4
|
+
import { ResultAsync } from "neverthrow";
|
|
5
5
|
|
|
6
6
|
//#region src/types.d.ts
|
|
7
7
|
/**
|
|
@@ -34,19 +34,19 @@ type ClientInferWorkflow<TWorkflow extends WorkflowDefinition> = (args: ClientIn
|
|
|
34
34
|
type ClientInferActivity<TActivity extends ActivityDefinition> = (args: ClientInferInput<TActivity>) => Promise<ClientInferOutput<TActivity>>;
|
|
35
35
|
/**
|
|
36
36
|
* Infer signal handler signature from client perspective
|
|
37
|
-
* Client sends z.output and returns
|
|
37
|
+
* Client sends z.output and returns ResultAsync<void, Error>
|
|
38
38
|
*/
|
|
39
|
-
type ClientInferSignal<TSignal extends SignalDefinition> = (args: ClientInferInput<TSignal>) =>
|
|
39
|
+
type ClientInferSignal<TSignal extends SignalDefinition> = (args: ClientInferInput<TSignal>) => ResultAsync<void, Error>;
|
|
40
40
|
/**
|
|
41
41
|
* Infer query handler signature from client perspective
|
|
42
|
-
* Client sends z.output and receives z.input wrapped in
|
|
42
|
+
* Client sends z.output and receives z.input wrapped in ResultAsync<T, Error>
|
|
43
43
|
*/
|
|
44
|
-
type ClientInferQuery<TQuery extends QueryDefinition> = (args: ClientInferInput<TQuery>) =>
|
|
44
|
+
type ClientInferQuery<TQuery extends QueryDefinition> = (args: ClientInferInput<TQuery>) => ResultAsync<ClientInferOutput<TQuery>, Error>;
|
|
45
45
|
/**
|
|
46
46
|
* Infer update handler signature from client perspective
|
|
47
|
-
* Client sends z.output and receives z.input wrapped in
|
|
47
|
+
* Client sends z.output and receives z.input wrapped in ResultAsync<T, Error>
|
|
48
48
|
*/
|
|
49
|
-
type ClientInferUpdate<TUpdate extends UpdateDefinition> = (args: ClientInferInput<TUpdate>) =>
|
|
49
|
+
type ClientInferUpdate<TUpdate extends UpdateDefinition> = (args: ClientInferInput<TUpdate>) => ResultAsync<ClientInferOutput<TUpdate>, Error>;
|
|
50
50
|
/**
|
|
51
51
|
* CLIENT PERSPECTIVE - Contract-level types
|
|
52
52
|
*/
|
|
@@ -103,6 +103,59 @@ declare class WorkflowNotFoundError extends TypedClientError {
|
|
|
103
103
|
readonly availableWorkflows: string[];
|
|
104
104
|
constructor(workflowName: string, availableWorkflows: string[]);
|
|
105
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Discriminated variant of {@link RuntimeClientError} surfaced when starting
|
|
108
|
+
* a workflow collides with an existing execution — Temporal's
|
|
109
|
+
* `WorkflowExecutionAlreadyStartedError`. The most common cause is a
|
|
110
|
+
* workflowId reuse policy that rejects duplicates while a previous run is
|
|
111
|
+
* still in retention.
|
|
112
|
+
*
|
|
113
|
+
* Distinguishing this from `RuntimeClientError` lets idempotent callers
|
|
114
|
+
* branch on it explicitly (e.g. fetch the existing handle and continue)
|
|
115
|
+
* without inspecting `error.cause` against a Temporal SDK class.
|
|
116
|
+
*/
|
|
117
|
+
declare class WorkflowAlreadyStartedError extends TypedClientError {
|
|
118
|
+
readonly workflowType: string;
|
|
119
|
+
readonly workflowId: string;
|
|
120
|
+
readonly cause?: unknown | undefined;
|
|
121
|
+
constructor(workflowType: string, workflowId: string, cause?: unknown | undefined);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Discriminated variant of {@link RuntimeClientError} surfaced when an
|
|
125
|
+
* operation targets a workflow execution that doesn't exist in the
|
|
126
|
+
* namespace — Temporal's `WorkflowNotFoundError` (distinct from this
|
|
127
|
+
* package's contract-level {@link WorkflowNotFoundError}).
|
|
128
|
+
*
|
|
129
|
+
* Returned from:
|
|
130
|
+
* - handle methods: `signal`, `query`, `executeUpdate`, `result`,
|
|
131
|
+
* `terminate`, `cancel`, `describe`, `fetchHistory`
|
|
132
|
+
* - `executeWorkflow` (when the underlying execute call hits a missing
|
|
133
|
+
* execution mid-flight)
|
|
134
|
+
*/
|
|
135
|
+
declare class WorkflowExecutionNotFoundError extends TypedClientError {
|
|
136
|
+
readonly workflowId: string;
|
|
137
|
+
readonly runId?: string | undefined;
|
|
138
|
+
readonly cause?: unknown | undefined;
|
|
139
|
+
constructor(workflowId: string, runId?: string | undefined, cause?: unknown | undefined);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Discriminated variant of {@link RuntimeClientError} surfaced when waiting
|
|
143
|
+
* on a workflow's result and the workflow completes with a failure —
|
|
144
|
+
* Temporal's `WorkflowFailedError`.
|
|
145
|
+
*
|
|
146
|
+
* `cause` is the *unwrapped* underlying failure (typically an
|
|
147
|
+
* `ApplicationFailure`, `CancelledFailure`, `TerminatedFailure`, or
|
|
148
|
+
* `TimeoutFailure`) lifted from Temporal's wrapper, so callers can branch
|
|
149
|
+
* on the failure category in one step (`err.cause instanceof
|
|
150
|
+
* ApplicationFailure`) instead of unwrapping twice via the SDK wrapper.
|
|
151
|
+
*
|
|
152
|
+
* Returned from `executeWorkflow` and `handle.result()`.
|
|
153
|
+
*/
|
|
154
|
+
declare class WorkflowFailedError extends TypedClientError {
|
|
155
|
+
readonly workflowId: string;
|
|
156
|
+
readonly cause?: unknown | undefined;
|
|
157
|
+
constructor(workflowId: string, cause?: unknown | undefined);
|
|
158
|
+
}
|
|
106
159
|
/**
|
|
107
160
|
* Thrown when workflow input or output validation fails
|
|
108
161
|
*/
|
|
@@ -139,53 +192,179 @@ declare class UpdateValidationError extends TypedClientError {
|
|
|
139
192
|
constructor(updateName: string, direction: "input" | "output", issues: ReadonlyArray<StandardSchemaV1.Issue>);
|
|
140
193
|
}
|
|
141
194
|
//#endregion
|
|
195
|
+
//#region src/schedule.d.ts
|
|
196
|
+
/**
|
|
197
|
+
* Workflow-action–level overrides forwarded to Temporal's
|
|
198
|
+
* `ScheduleOptionsStartWorkflowAction`. These live under a nested `action`
|
|
199
|
+
* field so the workflow-level `memo` (per-action workflow metadata) can be
|
|
200
|
+
* set independently from the schedule-level `memo` (metadata on the
|
|
201
|
+
* schedule itself) — Temporal honours both, and they have separate
|
|
202
|
+
* lifecycles.
|
|
203
|
+
*
|
|
204
|
+
* `workflowType` and `taskQueue` are owned by the contract and not exposed.
|
|
205
|
+
*/
|
|
206
|
+
type TypedScheduleActionOverrides = Pick<ScheduleOptionsStartWorkflowAction<never>, "workflowId" | "workflowExecutionTimeout" | "workflowRunTimeout" | "workflowTaskTimeout" | "retry" | "memo" | "staticDetails" | "staticSummary">;
|
|
207
|
+
/**
|
|
208
|
+
* Options for {@link TypedScheduleClient.create}.
|
|
209
|
+
*
|
|
210
|
+
* `scheduleId` and `spec` come from Temporal's `ScheduleOptions`. `args` is
|
|
211
|
+
* typed against the destination workflow's input schema. `policies`,
|
|
212
|
+
* `state`, and `memo` mirror Temporal's own schedule-level options.
|
|
213
|
+
* Workflow-action–level overrides nest under {@link action} so memo and
|
|
214
|
+
* other fields with the same name don't collide between the two scopes.
|
|
215
|
+
*/
|
|
216
|
+
type TypedScheduleCreateOptions<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"]> = {
|
|
217
|
+
/** Schedule ID. Recommended to use a meaningful business identifier. */scheduleId: string; /** When the schedule should fire (cron, interval, calendar). */
|
|
218
|
+
spec: ScheduleSpec; /** Workflow input — validated against the contract's input schema. */
|
|
219
|
+
args: ClientInferInput<TContract["workflows"][TWorkflowName]>; /** Temporal schedule policies (overlap, catchupWindow, pauseOnFailure, etc.). */
|
|
220
|
+
policies?: ScheduleOptions["policies"]; /** Temporal schedule state (paused, note, limited, etc.). */
|
|
221
|
+
state?: ScheduleOptions["state"]; /** Schedule-level memo (non-indexed metadata on the schedule itself). */
|
|
222
|
+
memo?: ScheduleOptions["memo"];
|
|
223
|
+
/**
|
|
224
|
+
* Workflow-action–level overrides. `workflowType` and `taskQueue` are
|
|
225
|
+
* derived from the contract, so they don't appear here. Note that
|
|
226
|
+
* `action.memo` is a *workflow-level* memo applied to each spawned run,
|
|
227
|
+
* distinct from the top-level `memo` (which is metadata on the schedule
|
|
228
|
+
* itself).
|
|
229
|
+
*/
|
|
230
|
+
action?: TypedScheduleActionOverrides;
|
|
231
|
+
};
|
|
232
|
+
/**
|
|
233
|
+
* Typed handle to a schedule. Mirrors Temporal's `ScheduleHandle` lifecycle
|
|
234
|
+
* methods (`pause`, `unpause`, `trigger`, `describe`, `delete`) wrapped in
|
|
235
|
+
* the neverthrow ResultAsync pattern so call sites match the rest of the
|
|
236
|
+
* typed client.
|
|
237
|
+
*/
|
|
238
|
+
type TypedScheduleHandle = {
|
|
239
|
+
/** This schedule's identifier. */readonly scheduleId: string; /** Pause the schedule. Optional note becomes part of the audit trail. */
|
|
240
|
+
pause: (note?: string) => ResultAsync<void, RuntimeClientError>; /** Resume a paused schedule. */
|
|
241
|
+
unpause: (note?: string) => ResultAsync<void, RuntimeClientError>; /** Fire the schedule's action immediately. */
|
|
242
|
+
trigger: (overlap?: ScheduleOverlapPolicy) => ResultAsync<void, RuntimeClientError>; /** Delete the schedule. */
|
|
243
|
+
delete: () => ResultAsync<void, RuntimeClientError>; /** Fetch the schedule's current description from the server. */
|
|
244
|
+
describe: () => ResultAsync<ScheduleDescription, RuntimeClientError>;
|
|
245
|
+
};
|
|
246
|
+
/**
|
|
247
|
+
* Typed wrapper around Temporal's `ScheduleClient`. Exposed as
|
|
248
|
+
* `typedClient.schedule` — keeps the typed-client surface organized the
|
|
249
|
+
* same way Temporal's own `Client.schedule` does.
|
|
250
|
+
*/
|
|
251
|
+
declare class TypedScheduleClient<TContract extends ContractDefinition> {
|
|
252
|
+
private readonly contract;
|
|
253
|
+
private readonly scheduleClient;
|
|
254
|
+
constructor(contract: TContract, scheduleClient: ScheduleClient);
|
|
255
|
+
/**
|
|
256
|
+
* Create a new schedule that, on each fire, starts the named contract
|
|
257
|
+
* workflow with validated args.
|
|
258
|
+
*
|
|
259
|
+
* Validates `args` against the workflow's input schema before dispatching
|
|
260
|
+
* the create request to Temporal. The workflow's `taskQueue` and
|
|
261
|
+
* `workflowType` are pulled from the contract automatically; the typed
|
|
262
|
+
* options shape omits them so call sites don't have to repeat themselves.
|
|
263
|
+
*/
|
|
264
|
+
create<TWorkflowName extends keyof TContract["workflows"]>(workflowName: TWorkflowName, options: TypedScheduleCreateOptions<TContract, TWorkflowName>): ResultAsync<TypedScheduleHandle, WorkflowNotFoundError | WorkflowValidationError | RuntimeClientError>;
|
|
265
|
+
/**
|
|
266
|
+
* Get a typed handle to an existing schedule. Does not validate that the
|
|
267
|
+
* schedule exists — handle methods (`describe`, `pause`, etc.) will
|
|
268
|
+
* surface a `RuntimeClientError` if the underlying ID is unknown.
|
|
269
|
+
*/
|
|
270
|
+
getHandle(scheduleId: string): TypedScheduleHandle;
|
|
271
|
+
}
|
|
272
|
+
//#endregion
|
|
142
273
|
//#region src/client.d.ts
|
|
143
|
-
|
|
274
|
+
/**
|
|
275
|
+
* Typed `searchAttributes` map for a workflow, derived from the workflow's
|
|
276
|
+
* declared `searchAttributes`. Each key is constrained to a declared
|
|
277
|
+
* attribute name; each value's type is determined by the attribute's `kind`
|
|
278
|
+
* (e.g. `KEYWORD` → `string`, `INT` → `number`, `DATETIME` → `Date`,
|
|
279
|
+
* `KEYWORD_LIST` → `string[]`).
|
|
280
|
+
*
|
|
281
|
+
* If the workflow declares no search attributes, this resolves to `never`,
|
|
282
|
+
* meaning the `searchAttributes` field is effectively absent from the start
|
|
283
|
+
* options for that workflow.
|
|
284
|
+
*/
|
|
285
|
+
type TypedSearchAttributeMap<TWorkflow extends WorkflowDefinition> = TWorkflow["searchAttributes"] extends Record<string, SearchAttributeDefinition> ? { [K in keyof TWorkflow["searchAttributes"]]?: SearchAttributeKindToType<TWorkflow["searchAttributes"][K]["kind"]> } : never;
|
|
286
|
+
type TypedWorkflowStartOptions<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"]> = Omit<WorkflowStartOptions, "taskQueue" | "args" | "searchAttributes" | "typedSearchAttributes"> & {
|
|
287
|
+
args: ClientInferInput<TContract["workflows"][TWorkflowName]>;
|
|
288
|
+
/**
|
|
289
|
+
* Indexed search attributes for the started workflow. Keys and value types
|
|
290
|
+
* are constrained to those declared on the workflow's contract via
|
|
291
|
+
* `defineSearchAttribute`. Translated to Temporal's `typedSearchAttributes`
|
|
292
|
+
* before the start request is dispatched.
|
|
293
|
+
*/
|
|
294
|
+
searchAttributes?: TypedSearchAttributeMap<TContract["workflows"][TWorkflowName]>;
|
|
295
|
+
};
|
|
296
|
+
/**
|
|
297
|
+
* Options for {@link TypedClient.signalWithStart} — typed against both the
|
|
298
|
+
* workflow's input schema and the named signal's input schema.
|
|
299
|
+
*/
|
|
300
|
+
type TypedSignalWithStartOptions<TContract extends ContractDefinition, TWorkflowName extends keyof TContract["workflows"], TSignalName extends keyof TContract["workflows"][TWorkflowName]["signals"] & string> = Omit<WorkflowSignalWithStartOptions, "taskQueue" | "args" | "signal" | "signalArgs" | "searchAttributes" | "typedSearchAttributes"> & {
|
|
144
301
|
args: ClientInferInput<TContract["workflows"][TWorkflowName]>;
|
|
302
|
+
signalName: TSignalName;
|
|
303
|
+
signalArgs: TContract["workflows"][TWorkflowName]["signals"][TSignalName] extends SignalDefinition ? ClientInferInput<TContract["workflows"][TWorkflowName]["signals"][TSignalName]> : never;
|
|
304
|
+
/**
|
|
305
|
+
* Indexed search attributes for the started workflow. Keys and value types
|
|
306
|
+
* are constrained to those declared on the workflow's contract via
|
|
307
|
+
* `defineSearchAttribute`. Translated to Temporal's `typedSearchAttributes`
|
|
308
|
+
* before the signalWithStart request is dispatched.
|
|
309
|
+
*/
|
|
310
|
+
searchAttributes?: TypedSearchAttributeMap<TContract["workflows"][TWorkflowName]>;
|
|
311
|
+
};
|
|
312
|
+
/**
|
|
313
|
+
* Typed workflow handle returned by `signalWithStart`. Adds `signaledRunId`
|
|
314
|
+
* to the standard handle so callers can correlate the signal with the
|
|
315
|
+
* (possibly pre-existing) workflow execution chain.
|
|
316
|
+
*/
|
|
317
|
+
type TypedWorkflowHandleWithSignaledRunId<TWorkflow extends WorkflowDefinition> = TypedWorkflowHandle<TWorkflow> & {
|
|
318
|
+
/**
|
|
319
|
+
* The Run Id of the bound Workflow at the time of `signalWithStart`. Since
|
|
320
|
+
* `signalWithStart` may have signaled an existing Workflow Chain, this is
|
|
321
|
+
* not necessarily the `firstExecutionRunId`.
|
|
322
|
+
*/
|
|
323
|
+
readonly signaledRunId: string;
|
|
145
324
|
};
|
|
146
325
|
/**
|
|
147
|
-
* Typed workflow handle with validated results using Result/
|
|
326
|
+
* Typed workflow handle with validated results using neverthrow Result/ResultAsync
|
|
148
327
|
*/
|
|
149
328
|
type TypedWorkflowHandle<TWorkflow extends WorkflowDefinition> = {
|
|
150
329
|
workflowId: string;
|
|
151
330
|
/**
|
|
152
331
|
* Type-safe queries based on workflow definition with Result pattern
|
|
153
|
-
* Each query returns
|
|
332
|
+
* Each query returns ResultAsync<T, Error> instead of Promise<T>
|
|
154
333
|
*/
|
|
155
|
-
queries: { [K in keyof ClientInferWorkflowQueries<TWorkflow>]: ClientInferWorkflowQueries<TWorkflow>[K] extends ((...args: infer Args) =>
|
|
334
|
+
queries: { [K in keyof ClientInferWorkflowQueries<TWorkflow>]: ClientInferWorkflowQueries<TWorkflow>[K] extends ((...args: infer Args) => ResultAsync<infer R, Error>) ? (...args: Args) => ResultAsync<R, QueryValidationError | WorkflowExecutionNotFoundError | RuntimeClientError> : never };
|
|
156
335
|
/**
|
|
157
336
|
* Type-safe signals based on workflow definition with Result pattern
|
|
158
|
-
* Each signal returns
|
|
337
|
+
* Each signal returns ResultAsync<void, Error> instead of Promise<void>
|
|
159
338
|
*/
|
|
160
|
-
signals: { [K in keyof ClientInferWorkflowSignals<TWorkflow>]: ClientInferWorkflowSignals<TWorkflow>[K] extends ((...args: infer Args) =>
|
|
339
|
+
signals: { [K in keyof ClientInferWorkflowSignals<TWorkflow>]: ClientInferWorkflowSignals<TWorkflow>[K] extends ((...args: infer Args) => ResultAsync<void, Error>) ? (...args: Args) => ResultAsync<void, SignalValidationError | WorkflowExecutionNotFoundError | RuntimeClientError> : never };
|
|
161
340
|
/**
|
|
162
341
|
* Type-safe updates based on workflow definition with Result pattern
|
|
163
|
-
* Each update returns
|
|
342
|
+
* Each update returns ResultAsync<T, Error> instead of Promise<T>
|
|
164
343
|
*/
|
|
165
|
-
updates: { [K in keyof ClientInferWorkflowUpdates<TWorkflow>]: ClientInferWorkflowUpdates<TWorkflow>[K] extends ((...args: infer Args) =>
|
|
344
|
+
updates: { [K in keyof ClientInferWorkflowUpdates<TWorkflow>]: ClientInferWorkflowUpdates<TWorkflow>[K] extends ((...args: infer Args) => ResultAsync<infer R, Error>) ? (...args: Args) => ResultAsync<R, UpdateValidationError | WorkflowExecutionNotFoundError | RuntimeClientError> : never };
|
|
166
345
|
/**
|
|
167
346
|
* Get workflow result with Result pattern
|
|
168
347
|
*/
|
|
169
|
-
result: () =>
|
|
348
|
+
result: () => ResultAsync<ClientInferOutput<TWorkflow>, WorkflowValidationError | WorkflowFailedError | WorkflowExecutionNotFoundError | RuntimeClientError>;
|
|
170
349
|
/**
|
|
171
350
|
* Terminate workflow with Result pattern
|
|
172
351
|
*/
|
|
173
|
-
terminate: (reason?: string) =>
|
|
352
|
+
terminate: (reason?: string) => ResultAsync<void, WorkflowExecutionNotFoundError | RuntimeClientError>;
|
|
174
353
|
/**
|
|
175
354
|
* Cancel workflow with Result pattern
|
|
176
355
|
*/
|
|
177
|
-
cancel: () =>
|
|
356
|
+
cancel: () => ResultAsync<void, WorkflowExecutionNotFoundError | RuntimeClientError>;
|
|
178
357
|
/**
|
|
179
358
|
* Get workflow execution description including status and metadata
|
|
180
359
|
*/
|
|
181
|
-
describe: () =>
|
|
360
|
+
describe: () => ResultAsync<Awaited<ReturnType<WorkflowHandle["describe"]>>, WorkflowExecutionNotFoundError | RuntimeClientError>;
|
|
182
361
|
/**
|
|
183
362
|
* Fetch the workflow execution history
|
|
184
363
|
*/
|
|
185
|
-
fetchHistory: () =>
|
|
364
|
+
fetchHistory: () => ResultAsync<Awaited<ReturnType<WorkflowHandle["fetchHistory"]>>, WorkflowExecutionNotFoundError | RuntimeClientError>;
|
|
186
365
|
};
|
|
187
366
|
/**
|
|
188
|
-
* Typed Temporal client with Result/
|
|
367
|
+
* Typed Temporal client with neverthrow Result/ResultAsync pattern based on a contract
|
|
189
368
|
*
|
|
190
369
|
* Provides type-safe methods to start and execute workflows
|
|
191
370
|
* defined in the contract, with explicit error handling using Result pattern.
|
|
@@ -193,9 +372,34 @@ type TypedWorkflowHandle<TWorkflow extends WorkflowDefinition> = {
|
|
|
193
372
|
declare class TypedClient<TContract extends ContractDefinition> {
|
|
194
373
|
private readonly contract;
|
|
195
374
|
private readonly client;
|
|
375
|
+
/**
|
|
376
|
+
* Typed wrapper around Temporal's `client.schedule.create(...)` and
|
|
377
|
+
* related lifecycle methods. Fires the underlying `startWorkflow` action
|
|
378
|
+
* with args validated against the contract's input schema.
|
|
379
|
+
*
|
|
380
|
+
* **Requires `@temporalio/client` 1.16+.** The Schedule API was added in
|
|
381
|
+
* 1.16; on older versions this property is unset and any access throws.
|
|
382
|
+
* The package's peer dep is pinned to `^1.16.0` so the standard install
|
|
383
|
+
* paths surface a peer-dependency warning rather than a runtime crash.
|
|
384
|
+
*
|
|
385
|
+
* @example
|
|
386
|
+
* ```ts
|
|
387
|
+
* const result = await client.schedule.create("processOrder", {
|
|
388
|
+
* scheduleId: "daily-sweep",
|
|
389
|
+
* spec: { cronExpressions: ["0 2 * * *"] },
|
|
390
|
+
* args: { orderId: "sweep" },
|
|
391
|
+
* });
|
|
392
|
+
*
|
|
393
|
+
* result.match(
|
|
394
|
+
* async (handle) => { await handle.pause("maintenance"); },
|
|
395
|
+
* (error) => console.error("schedule create failed", error),
|
|
396
|
+
* );
|
|
397
|
+
* ```
|
|
398
|
+
*/
|
|
399
|
+
readonly schedule: TypedScheduleClient<TContract>;
|
|
196
400
|
private constructor();
|
|
197
401
|
/**
|
|
198
|
-
* Create a typed Temporal client with
|
|
402
|
+
* Create a typed Temporal client with neverthrow pattern from a contract
|
|
199
403
|
*
|
|
200
404
|
* @example
|
|
201
405
|
* ```ts
|
|
@@ -208,15 +412,15 @@ declare class TypedClient<TContract extends ContractDefinition> {
|
|
|
208
412
|
* args: { ... },
|
|
209
413
|
* });
|
|
210
414
|
*
|
|
211
|
-
* result.match(
|
|
212
|
-
*
|
|
213
|
-
*
|
|
214
|
-
*
|
|
415
|
+
* result.match(
|
|
416
|
+
* (output) => console.log('Success:', output),
|
|
417
|
+
* (error) => console.error('Failed:', error),
|
|
418
|
+
* );
|
|
215
419
|
* ```
|
|
216
420
|
*/
|
|
217
421
|
static create<TContract extends ContractDefinition>(contract: TContract, client: Client): TypedClient<TContract>;
|
|
218
422
|
/**
|
|
219
|
-
* Start a workflow and return a typed handle with
|
|
423
|
+
* Start a workflow and return a typed handle with ResultAsync pattern
|
|
220
424
|
*
|
|
221
425
|
* @example
|
|
222
426
|
* ```ts
|
|
@@ -227,21 +431,55 @@ declare class TypedClient<TContract extends ContractDefinition> {
|
|
|
227
431
|
* retry: { maximumAttempts: 3 },
|
|
228
432
|
* });
|
|
229
433
|
*
|
|
230
|
-
* handleResult.match(
|
|
231
|
-
*
|
|
434
|
+
* handleResult.match(
|
|
435
|
+
* async (handle) => {
|
|
232
436
|
* const result = await handle.result();
|
|
233
437
|
* // ... handle result
|
|
234
438
|
* },
|
|
235
|
-
*
|
|
236
|
-
*
|
|
439
|
+
* (error) => console.error('Failed to start:', error),
|
|
440
|
+
* );
|
|
237
441
|
* ```
|
|
238
442
|
*/
|
|
239
443
|
startWorkflow<TWorkflowName extends keyof TContract["workflows"]>(workflowName: TWorkflowName, {
|
|
240
444
|
args,
|
|
445
|
+
searchAttributes,
|
|
446
|
+
...temporalOptions
|
|
447
|
+
}: TypedWorkflowStartOptions<TContract, TWorkflowName>): ResultAsync<TypedWorkflowHandle<TContract["workflows"][TWorkflowName]>, WorkflowNotFoundError | WorkflowValidationError | WorkflowAlreadyStartedError | RuntimeClientError>;
|
|
448
|
+
/**
|
|
449
|
+
* Send a signal to a workflow, starting it first if it doesn't already exist.
|
|
450
|
+
*
|
|
451
|
+
* Validates both halves of the call against the contract:
|
|
452
|
+
* - `args` against the workflow's input schema
|
|
453
|
+
* - `signalArgs` against the named signal's input schema
|
|
454
|
+
*
|
|
455
|
+
* Returns a `TypedWorkflowHandleWithSignaledRunId` — the same shape as
|
|
456
|
+
* `startWorkflow`'s handle, plus a `signaledRunId` field for correlating
|
|
457
|
+
* the signal with the (possibly pre-existing) workflow execution chain.
|
|
458
|
+
*
|
|
459
|
+
* @example
|
|
460
|
+
* ```ts
|
|
461
|
+
* const result = await client.signalWithStart('processOrder', {
|
|
462
|
+
* workflowId: 'order-123',
|
|
463
|
+
* args: { orderId: 'ORD-123', customerId: 'CUST-1' },
|
|
464
|
+
* signalName: 'cancel',
|
|
465
|
+
* signalArgs: { reason: 'duplicate' },
|
|
466
|
+
* });
|
|
467
|
+
*
|
|
468
|
+
* result.match(
|
|
469
|
+
* (handle) => console.log('signaled run', handle.signaledRunId),
|
|
470
|
+
* (error) => console.error('signalWithStart failed', error),
|
|
471
|
+
* );
|
|
472
|
+
* ```
|
|
473
|
+
*/
|
|
474
|
+
signalWithStart<TWorkflowName extends keyof TContract["workflows"], TSignalName extends keyof TContract["workflows"][TWorkflowName]["signals"] & string>(workflowName: TWorkflowName, {
|
|
475
|
+
args,
|
|
476
|
+
signalName,
|
|
477
|
+
signalArgs,
|
|
478
|
+
searchAttributes,
|
|
241
479
|
...temporalOptions
|
|
242
|
-
}:
|
|
480
|
+
}: TypedSignalWithStartOptions<TContract, TWorkflowName, TSignalName>): ResultAsync<TypedWorkflowHandleWithSignaledRunId<TContract["workflows"][TWorkflowName]>, WorkflowNotFoundError | WorkflowValidationError | SignalValidationError | WorkflowAlreadyStartedError | RuntimeClientError>;
|
|
243
481
|
/**
|
|
244
|
-
* Execute a workflow (start and wait for result) with
|
|
482
|
+
* Execute a workflow (start and wait for result) with ResultAsync pattern
|
|
245
483
|
*
|
|
246
484
|
* @example
|
|
247
485
|
* ```ts
|
|
@@ -252,34 +490,35 @@ declare class TypedClient<TContract extends ContractDefinition> {
|
|
|
252
490
|
* retry: { maximumAttempts: 3 },
|
|
253
491
|
* });
|
|
254
492
|
*
|
|
255
|
-
* result.match(
|
|
256
|
-
*
|
|
257
|
-
*
|
|
258
|
-
*
|
|
493
|
+
* result.match(
|
|
494
|
+
* (output) => console.log('Order processed:', output.status),
|
|
495
|
+
* (error) => console.error('Processing failed:', error),
|
|
496
|
+
* );
|
|
259
497
|
* ```
|
|
260
498
|
*/
|
|
261
499
|
executeWorkflow<TWorkflowName extends keyof TContract["workflows"]>(workflowName: TWorkflowName, {
|
|
262
500
|
args,
|
|
501
|
+
searchAttributes,
|
|
263
502
|
...temporalOptions
|
|
264
|
-
}: TypedWorkflowStartOptions<TContract, TWorkflowName>):
|
|
503
|
+
}: TypedWorkflowStartOptions<TContract, TWorkflowName>): ResultAsync<ClientInferOutput<TContract["workflows"][TWorkflowName]>, WorkflowNotFoundError | WorkflowValidationError | WorkflowAlreadyStartedError | WorkflowFailedError | WorkflowExecutionNotFoundError | RuntimeClientError>;
|
|
265
504
|
/**
|
|
266
|
-
* Get a handle to an existing workflow with
|
|
505
|
+
* Get a handle to an existing workflow with ResultAsync pattern
|
|
267
506
|
*
|
|
268
507
|
* @example
|
|
269
508
|
* ```ts
|
|
270
509
|
* const handleResult = await client.getHandle('processOrder', 'order-123');
|
|
271
|
-
* handleResult.match(
|
|
272
|
-
*
|
|
510
|
+
* handleResult.match(
|
|
511
|
+
* async (handle) => {
|
|
273
512
|
* const result = await handle.result();
|
|
274
513
|
* // ... handle result
|
|
275
514
|
* },
|
|
276
|
-
*
|
|
277
|
-
*
|
|
515
|
+
* (error) => console.error('Failed to get handle:', error),
|
|
516
|
+
* );
|
|
278
517
|
* ```
|
|
279
518
|
*/
|
|
280
|
-
getHandle<TWorkflowName extends keyof TContract["workflows"]>(workflowName: TWorkflowName, workflowId: string):
|
|
519
|
+
getHandle<TWorkflowName extends keyof TContract["workflows"]>(workflowName: TWorkflowName, workflowId: string): ResultAsync<TypedWorkflowHandle<TContract["workflows"][TWorkflowName]>, WorkflowNotFoundError | RuntimeClientError>;
|
|
281
520
|
private createTypedHandle;
|
|
282
521
|
}
|
|
283
522
|
//#endregion
|
|
284
|
-
export { type ClientInferActivities, type ClientInferActivity, type ClientInferInput, type ClientInferOutput, type ClientInferQuery, type ClientInferSignal, type ClientInferUpdate, type ClientInferWorkflow, type ClientInferWorkflowActivities, type ClientInferWorkflowContextActivities, type ClientInferWorkflowQueries, type ClientInferWorkflowSignals, type ClientInferWorkflowUpdates, type ClientInferWorkflows, QueryValidationError, SignalValidationError, TypedClient, type TypedWorkflowHandle, type TypedWorkflowStartOptions, UpdateValidationError, WorkflowNotFoundError, WorkflowValidationError };
|
|
523
|
+
export { type ClientInferActivities, type ClientInferActivity, type ClientInferInput, type ClientInferOutput, type ClientInferQuery, type ClientInferSignal, type ClientInferUpdate, type ClientInferWorkflow, type ClientInferWorkflowActivities, type ClientInferWorkflowContextActivities, type ClientInferWorkflowQueries, type ClientInferWorkflowSignals, type ClientInferWorkflowUpdates, type ClientInferWorkflows, QueryValidationError, RuntimeClientError, SignalValidationError, TypedClient, type TypedScheduleActionOverrides, TypedScheduleClient, type TypedScheduleCreateOptions, type TypedScheduleHandle, type TypedSignalWithStartOptions, type TypedWorkflowHandle, type TypedWorkflowHandleWithSignaledRunId, type TypedWorkflowStartOptions, UpdateValidationError, WorkflowAlreadyStartedError, WorkflowExecutionNotFoundError, WorkflowFailedError, WorkflowNotFoundError, WorkflowValidationError };
|
|
285
524
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/errors.ts","../src/client.ts"],"mappings":";;;;;;;;;AAgBA;KAAY,gBAAA;EAA6B,KAAA,EAAO,SAAA;AAAA,KAAe,gBAAA,CAAiB,UAAA,CAC9E,CAAA;;;;;KAOU,iBAAA;EAA8B,MAAA,EAAQ,SAAA;AAAA,KAAe,gBAAA,CAAiB,WAAA,CAChF,CAAA;;;;;;AADF;;;KAaY,mBAAA,mBAAsC,kBAAA,KAChD,IAAA,EAAM,gBAAA,CAAiB,SAAA,MACpB,OAAA,CAAQ,iBAAA,CAAkB,SAAA;;;;;KAMnB,mBAAA,mBAAsC,kBAAA,KAChD,IAAA,EAAM,gBAAA,CAAiB,SAAA,MACpB,OAAA,CAAQ,iBAAA,CAAkB,SAAA;;;;;KAMnB,iBAAA,iBAAkC,gBAAA,KAC5C,IAAA,EAAM,gBAAA,CAAiB,OAAA,MACpB,
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/errors.ts","../src/schedule.ts","../src/client.ts"],"mappings":"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"}
|