@temporal-contract/client 0.0.7 → 0.2.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/README.md CHANGED
@@ -13,16 +13,17 @@ pnpm add @temporal-contract/client @temporal-contract/contract @temporalio/clien
13
13
  ## Quick Example
14
14
 
15
15
  ```typescript
16
- import { TypedClient } from '@temporal-contract/client';
17
- import { Connection } from '@temporalio/client';
16
+ import { TypedClient } from "@temporal-contract/client";
17
+ import { Connection, Client } from "@temporalio/client";
18
18
 
19
- const connection = await Connection.connect({ address: 'localhost:7233' });
20
- const client = TypedClient.create(myContract, { connection });
19
+ const connection = await Connection.connect({ address: "localhost:7233" });
20
+ const temporalClient = new Client({ connection });
21
+ const client = TypedClient.create(myContract, temporalClient);
21
22
 
22
23
  // Execute workflow (fully typed!)
23
- const result = await client.executeWorkflow('processOrder', {
24
- workflowId: 'order-123',
25
- args: { orderId: 'ORD-123' }
24
+ const result = await client.executeWorkflow("processOrder", {
25
+ workflowId: "order-123",
26
+ args: { orderId: "ORD-123" },
26
27
  });
27
28
  ```
28
29
 
package/dist/index.cjs CHANGED
@@ -1,3 +1,4 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1
2
  let _swan_io_boxed = require("@swan-io/boxed");
2
3
 
3
4
  //#region src/errors.ts
@@ -94,10 +95,8 @@ var TypedClient = class TypedClient {
94
95
  * @example
95
96
  * ```ts
96
97
  * const connection = await Connection.connect();
97
- * const client = TypedClient.create(myContract, {
98
- * connection,
99
- * namespace: 'default',
100
- * });
98
+ * const temporalClient = new Client({ connection });
99
+ * const client = TypedClient.create(myContract, temporalClient);
101
100
  *
102
101
  * const result = await client.executeWorkflow('processOrder', {
103
102
  * workflowId: 'order-123',
@@ -138,15 +137,9 @@ var TypedClient = class TypedClient {
138
137
  return _swan_io_boxed.Future.make((resolve) => {
139
138
  (async () => {
140
139
  const definition = this.contract.workflows[workflowName];
141
- if (!definition) {
142
- resolve(_swan_io_boxed.Result.Error(createWorkflowNotFoundError(workflowName, this.contract)));
143
- return;
144
- }
140
+ if (!definition) return _swan_io_boxed.Result.Error(createWorkflowNotFoundError(workflowName, this.contract));
145
141
  const inputResult = await definition.input["~standard"].validate(args);
146
- if (inputResult.issues) {
147
- resolve(_swan_io_boxed.Result.Error(createWorkflowValidationError(workflowName, "input", inputResult.issues)));
148
- return;
149
- }
142
+ if (inputResult.issues) return _swan_io_boxed.Result.Error(createWorkflowValidationError(workflowName, "input", inputResult.issues));
150
143
  const validatedInput = inputResult.value;
151
144
  try {
152
145
  const handle = await this.client.workflow.start(workflowName, {
@@ -155,11 +148,11 @@ var TypedClient = class TypedClient {
155
148
  args: [validatedInput]
156
149
  });
157
150
  const typedHandle = this.createTypedHandle(handle, definition);
158
- resolve(_swan_io_boxed.Result.Ok(typedHandle));
151
+ return _swan_io_boxed.Result.Ok(typedHandle);
159
152
  } catch (error) {
160
- resolve(_swan_io_boxed.Result.Error(createRuntimeClientError("startWorkflow", error)));
153
+ return _swan_io_boxed.Result.Error(createRuntimeClientError("startWorkflow", error));
161
154
  }
162
- })();
155
+ })().then(resolve).catch((e) => resolve(_swan_io_boxed.Result.Error(createRuntimeClientError("unexpected", e))));
163
156
  });
164
157
  }
165
158
  /**
@@ -184,15 +177,9 @@ var TypedClient = class TypedClient {
184
177
  return _swan_io_boxed.Future.make((resolve) => {
185
178
  (async () => {
186
179
  const definition = this.contract.workflows[workflowName];
187
- if (!definition) {
188
- resolve(_swan_io_boxed.Result.Error(createWorkflowNotFoundError(workflowName, this.contract)));
189
- return;
190
- }
180
+ if (!definition) return _swan_io_boxed.Result.Error(createWorkflowNotFoundError(workflowName, this.contract));
191
181
  const inputResult = await definition.input["~standard"].validate(args);
192
- if (inputResult.issues) {
193
- resolve(_swan_io_boxed.Result.Error(createWorkflowValidationError(workflowName, "input", inputResult.issues)));
194
- return;
195
- }
182
+ if (inputResult.issues) return _swan_io_boxed.Result.Error(createWorkflowValidationError(workflowName, "input", inputResult.issues));
196
183
  const validatedInput = inputResult.value;
197
184
  try {
198
185
  const result = await this.client.workflow.execute(workflowName, {
@@ -201,15 +188,12 @@ var TypedClient = class TypedClient {
201
188
  args: [validatedInput]
202
189
  });
203
190
  const outputResult = await definition.output["~standard"].validate(result);
204
- if (outputResult.issues) {
205
- resolve(_swan_io_boxed.Result.Error(createWorkflowValidationError(workflowName, "output", outputResult.issues)));
206
- return;
207
- }
208
- resolve(_swan_io_boxed.Result.Ok(outputResult.value));
191
+ if (outputResult.issues) return _swan_io_boxed.Result.Error(createWorkflowValidationError(workflowName, "output", outputResult.issues));
192
+ return _swan_io_boxed.Result.Ok(outputResult.value);
209
193
  } catch (error) {
210
- resolve(_swan_io_boxed.Result.Error(createRuntimeClientError("executeWorkflow", error)));
194
+ return _swan_io_boxed.Result.Error(createRuntimeClientError("executeWorkflow", error));
211
195
  }
212
- })();
196
+ })().then(resolve).catch((e) => resolve(_swan_io_boxed.Result.Error(createRuntimeClientError("unexpected", e))));
213
197
  });
214
198
  }
215
199
  /**
@@ -229,18 +213,17 @@ var TypedClient = class TypedClient {
229
213
  */
230
214
  getHandle(workflowName, workflowId) {
231
215
  return _swan_io_boxed.Future.make((resolve) => {
232
- const definition = this.contract.workflows[workflowName];
233
- if (!definition) {
234
- resolve(_swan_io_boxed.Result.Error(createWorkflowNotFoundError(workflowName, this.contract)));
235
- return;
236
- }
237
- try {
238
- const handle = this.client.workflow.getHandle(workflowId);
239
- const typedHandle = this.createTypedHandle(handle, definition);
240
- resolve(_swan_io_boxed.Result.Ok(typedHandle));
241
- } catch (error) {
242
- resolve(_swan_io_boxed.Result.Error(createRuntimeClientError("getHandle", error)));
243
- }
216
+ (async () => {
217
+ const definition = this.contract.workflows[workflowName];
218
+ if (!definition) return _swan_io_boxed.Result.Error(createWorkflowNotFoundError(workflowName, this.contract));
219
+ try {
220
+ const handle = this.client.workflow.getHandle(workflowId);
221
+ const typedHandle = this.createTypedHandle(handle, definition);
222
+ return _swan_io_boxed.Result.Ok(typedHandle);
223
+ } catch (error) {
224
+ return _swan_io_boxed.Result.Error(createRuntimeClientError("getHandle", error));
225
+ }
226
+ })().then(resolve).catch((e) => resolve(_swan_io_boxed.Result.Error(createRuntimeClientError("unexpected", e))));
244
227
  });
245
228
  }
246
229
  createTypedHandle(workflowHandle, definition) {
@@ -249,22 +232,16 @@ var TypedClient = class TypedClient {
249
232
  return _swan_io_boxed.Future.make((resolve) => {
250
233
  (async () => {
251
234
  const inputResult = await queryDef.input["~standard"].validate(args);
252
- if (inputResult.issues) {
253
- resolve(_swan_io_boxed.Result.Error(new QueryValidationError(queryName, "input", inputResult.issues)));
254
- return;
255
- }
235
+ if (inputResult.issues) return _swan_io_boxed.Result.Error(new QueryValidationError(queryName, "input", inputResult.issues));
256
236
  try {
257
237
  const result = await workflowHandle.query(queryName, inputResult.value);
258
238
  const outputResult = await queryDef.output["~standard"].validate(result);
259
- if (outputResult.issues) {
260
- resolve(_swan_io_boxed.Result.Error(new QueryValidationError(queryName, "output", outputResult.issues)));
261
- return;
262
- }
263
- resolve(_swan_io_boxed.Result.Ok(outputResult.value));
239
+ if (outputResult.issues) return _swan_io_boxed.Result.Error(new QueryValidationError(queryName, "output", outputResult.issues));
240
+ return _swan_io_boxed.Result.Ok(outputResult.value);
264
241
  } catch (error) {
265
- resolve(_swan_io_boxed.Result.Error(createRuntimeClientError("query", error)));
242
+ return _swan_io_boxed.Result.Error(createRuntimeClientError("query", error));
266
243
  }
267
- })();
244
+ })().then(resolve).catch((e) => resolve(_swan_io_boxed.Result.Error(createRuntimeClientError("unexpected", e))));
268
245
  });
269
246
  };
270
247
  const signals = {};
@@ -272,17 +249,14 @@ var TypedClient = class TypedClient {
272
249
  return _swan_io_boxed.Future.make((resolve) => {
273
250
  (async () => {
274
251
  const inputResult = await signalDef.input["~standard"].validate(args);
275
- if (inputResult.issues) {
276
- resolve(_swan_io_boxed.Result.Error(new SignalValidationError(signalName, inputResult.issues)));
277
- return;
278
- }
252
+ if (inputResult.issues) return _swan_io_boxed.Result.Error(new SignalValidationError(signalName, inputResult.issues));
279
253
  try {
280
254
  await workflowHandle.signal(signalName, inputResult.value);
281
- resolve(_swan_io_boxed.Result.Ok(void 0));
255
+ return _swan_io_boxed.Result.Ok(void 0);
282
256
  } catch (error) {
283
- resolve(_swan_io_boxed.Result.Error(createRuntimeClientError("signal", error)));
257
+ return _swan_io_boxed.Result.Error(createRuntimeClientError("signal", error));
284
258
  }
285
- })();
259
+ })().then(resolve).catch((e) => resolve(_swan_io_boxed.Result.Error(createRuntimeClientError("unexpected", e))));
286
260
  });
287
261
  };
288
262
  const updates = {};
@@ -290,22 +264,16 @@ var TypedClient = class TypedClient {
290
264
  return _swan_io_boxed.Future.make((resolve) => {
291
265
  (async () => {
292
266
  const inputResult = await updateDef.input["~standard"].validate(args);
293
- if (inputResult.issues) {
294
- resolve(_swan_io_boxed.Result.Error(new UpdateValidationError(updateName, "input", inputResult.issues)));
295
- return;
296
- }
267
+ if (inputResult.issues) return _swan_io_boxed.Result.Error(new UpdateValidationError(updateName, "input", inputResult.issues));
297
268
  try {
298
269
  const result = await workflowHandle.executeUpdate(updateName, { args: [inputResult.value] });
299
270
  const outputResult = await updateDef.output["~standard"].validate(result);
300
- if (outputResult.issues) {
301
- resolve(_swan_io_boxed.Result.Error(new UpdateValidationError(updateName, "output", outputResult.issues)));
302
- return;
303
- }
304
- resolve(_swan_io_boxed.Result.Ok(outputResult.value));
271
+ if (outputResult.issues) return _swan_io_boxed.Result.Error(new UpdateValidationError(updateName, "output", outputResult.issues));
272
+ return _swan_io_boxed.Result.Ok(outputResult.value);
305
273
  } catch (error) {
306
- resolve(_swan_io_boxed.Result.Error(createRuntimeClientError("update", error)));
274
+ return _swan_io_boxed.Result.Error(createRuntimeClientError("update", error));
307
275
  }
308
- })();
276
+ })().then(resolve).catch((e) => resolve(_swan_io_boxed.Result.Error(createRuntimeClientError("unexpected", e))));
309
277
  });
310
278
  };
311
279
  return {
@@ -319,15 +287,12 @@ var TypedClient = class TypedClient {
319
287
  try {
320
288
  const result = await workflowHandle.result();
321
289
  const outputResult = await definition.output["~standard"].validate(result);
322
- if (outputResult.issues) {
323
- resolve(_swan_io_boxed.Result.Error(new WorkflowValidationError(workflowHandle.workflowId, "output", outputResult.issues)));
324
- return;
325
- }
326
- resolve(_swan_io_boxed.Result.Ok(outputResult.value));
290
+ if (outputResult.issues) return _swan_io_boxed.Result.Error(new WorkflowValidationError(workflowHandle.workflowId, "output", outputResult.issues));
291
+ return _swan_io_boxed.Result.Ok(outputResult.value);
327
292
  } catch (error) {
328
- resolve(_swan_io_boxed.Result.Error(createRuntimeClientError("result", error)));
293
+ return _swan_io_boxed.Result.Error(createRuntimeClientError("result", error));
329
294
  }
330
- })();
295
+ })().then(resolve).catch((e) => resolve(_swan_io_boxed.Result.Error(createRuntimeClientError("unexpected", e))));
331
296
  });
332
297
  },
333
298
  terminate: (reason) => {
package/dist/index.d.cts CHANGED
@@ -4,7 +4,6 @@ import { StandardSchemaV1 } from "@standard-schema/spec";
4
4
  import { Future, Result } from "@swan-io/boxed";
5
5
 
6
6
  //#region src/types.d.ts
7
-
8
7
  /**
9
8
  * Infer input type from a definition (client perspective)
10
9
  * Client sends the input type (before input schema parsing/transformation)
@@ -147,7 +146,7 @@ type TypedWorkflowStartOptions<TContract extends ContractDefinition, TWorkflowNa
147
146
  /**
148
147
  * Typed workflow handle with validated results using Result/Future pattern
149
148
  */
150
- interface TypedWorkflowHandle<TWorkflow extends WorkflowDefinition> {
149
+ type TypedWorkflowHandle<TWorkflow extends WorkflowDefinition> = {
151
150
  workflowId: string;
152
151
  /**
153
152
  * Type-safe queries based on workflow definition with Result pattern
@@ -184,7 +183,7 @@ interface TypedWorkflowHandle<TWorkflow extends WorkflowDefinition> {
184
183
  * Fetch the workflow execution history
185
184
  */
186
185
  fetchHistory: () => Future<Result<Awaited<ReturnType<WorkflowHandle["fetchHistory"]>>, RuntimeClientError>>;
187
- }
186
+ };
188
187
  /**
189
188
  * Typed Temporal client with Result/Future pattern based on a contract
190
189
  *
@@ -201,10 +200,8 @@ declare class TypedClient<TContract extends ContractDefinition> {
201
200
  * @example
202
201
  * ```ts
203
202
  * const connection = await Connection.connect();
204
- * const client = TypedClient.create(myContract, {
205
- * connection,
206
- * namespace: 'default',
207
- * });
203
+ * const temporalClient = new Client({ connection });
204
+ * const client = TypedClient.create(myContract, temporalClient);
208
205
  *
209
206
  * const result = await client.executeWorkflow('processOrder', {
210
207
  * workflowId: 'order-123',
@@ -284,4 +281,5 @@ declare class TypedClient<TContract extends ContractDefinition> {
284
281
  private createTypedHandle;
285
282
  }
286
283
  //#endregion
287
- 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 };
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 };
285
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/errors.ts","../src/client.ts"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -4,7 +4,6 @@ import { ActivityDefinition, AnySchema, ContractDefinition, QueryDefinition, Sig
4
4
  import { StandardSchemaV1 } from "@standard-schema/spec";
5
5
 
6
6
  //#region src/types.d.ts
7
-
8
7
  /**
9
8
  * Infer input type from a definition (client perspective)
10
9
  * Client sends the input type (before input schema parsing/transformation)
@@ -147,7 +146,7 @@ type TypedWorkflowStartOptions<TContract extends ContractDefinition, TWorkflowNa
147
146
  /**
148
147
  * Typed workflow handle with validated results using Result/Future pattern
149
148
  */
150
- interface TypedWorkflowHandle<TWorkflow extends WorkflowDefinition> {
149
+ type TypedWorkflowHandle<TWorkflow extends WorkflowDefinition> = {
151
150
  workflowId: string;
152
151
  /**
153
152
  * Type-safe queries based on workflow definition with Result pattern
@@ -184,7 +183,7 @@ interface TypedWorkflowHandle<TWorkflow extends WorkflowDefinition> {
184
183
  * Fetch the workflow execution history
185
184
  */
186
185
  fetchHistory: () => Future<Result<Awaited<ReturnType<WorkflowHandle["fetchHistory"]>>, RuntimeClientError>>;
187
- }
186
+ };
188
187
  /**
189
188
  * Typed Temporal client with Result/Future pattern based on a contract
190
189
  *
@@ -201,10 +200,8 @@ declare class TypedClient<TContract extends ContractDefinition> {
201
200
  * @example
202
201
  * ```ts
203
202
  * const connection = await Connection.connect();
204
- * const client = TypedClient.create(myContract, {
205
- * connection,
206
- * namespace: 'default',
207
- * });
203
+ * const temporalClient = new Client({ connection });
204
+ * const client = TypedClient.create(myContract, temporalClient);
208
205
  *
209
206
  * const result = await client.executeWorkflow('processOrder', {
210
207
  * workflowId: 'order-123',
@@ -284,4 +281,5 @@ declare class TypedClient<TContract extends ContractDefinition> {
284
281
  private createTypedHandle;
285
282
  }
286
283
  //#endregion
287
- 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 };
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 };
285
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/errors.ts","../src/client.ts"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -94,10 +94,8 @@ var TypedClient = class TypedClient {
94
94
  * @example
95
95
  * ```ts
96
96
  * const connection = await Connection.connect();
97
- * const client = TypedClient.create(myContract, {
98
- * connection,
99
- * namespace: 'default',
100
- * });
97
+ * const temporalClient = new Client({ connection });
98
+ * const client = TypedClient.create(myContract, temporalClient);
101
99
  *
102
100
  * const result = await client.executeWorkflow('processOrder', {
103
101
  * workflowId: 'order-123',
@@ -138,15 +136,9 @@ var TypedClient = class TypedClient {
138
136
  return Future.make((resolve) => {
139
137
  (async () => {
140
138
  const definition = this.contract.workflows[workflowName];
141
- if (!definition) {
142
- resolve(Result.Error(createWorkflowNotFoundError(workflowName, this.contract)));
143
- return;
144
- }
139
+ if (!definition) return Result.Error(createWorkflowNotFoundError(workflowName, this.contract));
145
140
  const inputResult = await definition.input["~standard"].validate(args);
146
- if (inputResult.issues) {
147
- resolve(Result.Error(createWorkflowValidationError(workflowName, "input", inputResult.issues)));
148
- return;
149
- }
141
+ if (inputResult.issues) return Result.Error(createWorkflowValidationError(workflowName, "input", inputResult.issues));
150
142
  const validatedInput = inputResult.value;
151
143
  try {
152
144
  const handle = await this.client.workflow.start(workflowName, {
@@ -155,11 +147,11 @@ var TypedClient = class TypedClient {
155
147
  args: [validatedInput]
156
148
  });
157
149
  const typedHandle = this.createTypedHandle(handle, definition);
158
- resolve(Result.Ok(typedHandle));
150
+ return Result.Ok(typedHandle);
159
151
  } catch (error) {
160
- resolve(Result.Error(createRuntimeClientError("startWorkflow", error)));
152
+ return Result.Error(createRuntimeClientError("startWorkflow", error));
161
153
  }
162
- })();
154
+ })().then(resolve).catch((e) => resolve(Result.Error(createRuntimeClientError("unexpected", e))));
163
155
  });
164
156
  }
165
157
  /**
@@ -184,15 +176,9 @@ var TypedClient = class TypedClient {
184
176
  return Future.make((resolve) => {
185
177
  (async () => {
186
178
  const definition = this.contract.workflows[workflowName];
187
- if (!definition) {
188
- resolve(Result.Error(createWorkflowNotFoundError(workflowName, this.contract)));
189
- return;
190
- }
179
+ if (!definition) return Result.Error(createWorkflowNotFoundError(workflowName, this.contract));
191
180
  const inputResult = await definition.input["~standard"].validate(args);
192
- if (inputResult.issues) {
193
- resolve(Result.Error(createWorkflowValidationError(workflowName, "input", inputResult.issues)));
194
- return;
195
- }
181
+ if (inputResult.issues) return Result.Error(createWorkflowValidationError(workflowName, "input", inputResult.issues));
196
182
  const validatedInput = inputResult.value;
197
183
  try {
198
184
  const result = await this.client.workflow.execute(workflowName, {
@@ -201,15 +187,12 @@ var TypedClient = class TypedClient {
201
187
  args: [validatedInput]
202
188
  });
203
189
  const outputResult = await definition.output["~standard"].validate(result);
204
- if (outputResult.issues) {
205
- resolve(Result.Error(createWorkflowValidationError(workflowName, "output", outputResult.issues)));
206
- return;
207
- }
208
- resolve(Result.Ok(outputResult.value));
190
+ if (outputResult.issues) return Result.Error(createWorkflowValidationError(workflowName, "output", outputResult.issues));
191
+ return Result.Ok(outputResult.value);
209
192
  } catch (error) {
210
- resolve(Result.Error(createRuntimeClientError("executeWorkflow", error)));
193
+ return Result.Error(createRuntimeClientError("executeWorkflow", error));
211
194
  }
212
- })();
195
+ })().then(resolve).catch((e) => resolve(Result.Error(createRuntimeClientError("unexpected", e))));
213
196
  });
214
197
  }
215
198
  /**
@@ -229,18 +212,17 @@ var TypedClient = class TypedClient {
229
212
  */
230
213
  getHandle(workflowName, workflowId) {
231
214
  return Future.make((resolve) => {
232
- const definition = this.contract.workflows[workflowName];
233
- if (!definition) {
234
- resolve(Result.Error(createWorkflowNotFoundError(workflowName, this.contract)));
235
- return;
236
- }
237
- try {
238
- const handle = this.client.workflow.getHandle(workflowId);
239
- const typedHandle = this.createTypedHandle(handle, definition);
240
- resolve(Result.Ok(typedHandle));
241
- } catch (error) {
242
- resolve(Result.Error(createRuntimeClientError("getHandle", error)));
243
- }
215
+ (async () => {
216
+ const definition = this.contract.workflows[workflowName];
217
+ if (!definition) return Result.Error(createWorkflowNotFoundError(workflowName, this.contract));
218
+ try {
219
+ const handle = this.client.workflow.getHandle(workflowId);
220
+ const typedHandle = this.createTypedHandle(handle, definition);
221
+ return Result.Ok(typedHandle);
222
+ } catch (error) {
223
+ return Result.Error(createRuntimeClientError("getHandle", error));
224
+ }
225
+ })().then(resolve).catch((e) => resolve(Result.Error(createRuntimeClientError("unexpected", e))));
244
226
  });
245
227
  }
246
228
  createTypedHandle(workflowHandle, definition) {
@@ -249,22 +231,16 @@ var TypedClient = class TypedClient {
249
231
  return Future.make((resolve) => {
250
232
  (async () => {
251
233
  const inputResult = await queryDef.input["~standard"].validate(args);
252
- if (inputResult.issues) {
253
- resolve(Result.Error(new QueryValidationError(queryName, "input", inputResult.issues)));
254
- return;
255
- }
234
+ if (inputResult.issues) return Result.Error(new QueryValidationError(queryName, "input", inputResult.issues));
256
235
  try {
257
236
  const result = await workflowHandle.query(queryName, inputResult.value);
258
237
  const outputResult = await queryDef.output["~standard"].validate(result);
259
- if (outputResult.issues) {
260
- resolve(Result.Error(new QueryValidationError(queryName, "output", outputResult.issues)));
261
- return;
262
- }
263
- resolve(Result.Ok(outputResult.value));
238
+ if (outputResult.issues) return Result.Error(new QueryValidationError(queryName, "output", outputResult.issues));
239
+ return Result.Ok(outputResult.value);
264
240
  } catch (error) {
265
- resolve(Result.Error(createRuntimeClientError("query", error)));
241
+ return Result.Error(createRuntimeClientError("query", error));
266
242
  }
267
- })();
243
+ })().then(resolve).catch((e) => resolve(Result.Error(createRuntimeClientError("unexpected", e))));
268
244
  });
269
245
  };
270
246
  const signals = {};
@@ -272,17 +248,14 @@ var TypedClient = class TypedClient {
272
248
  return Future.make((resolve) => {
273
249
  (async () => {
274
250
  const inputResult = await signalDef.input["~standard"].validate(args);
275
- if (inputResult.issues) {
276
- resolve(Result.Error(new SignalValidationError(signalName, inputResult.issues)));
277
- return;
278
- }
251
+ if (inputResult.issues) return Result.Error(new SignalValidationError(signalName, inputResult.issues));
279
252
  try {
280
253
  await workflowHandle.signal(signalName, inputResult.value);
281
- resolve(Result.Ok(void 0));
254
+ return Result.Ok(void 0);
282
255
  } catch (error) {
283
- resolve(Result.Error(createRuntimeClientError("signal", error)));
256
+ return Result.Error(createRuntimeClientError("signal", error));
284
257
  }
285
- })();
258
+ })().then(resolve).catch((e) => resolve(Result.Error(createRuntimeClientError("unexpected", e))));
286
259
  });
287
260
  };
288
261
  const updates = {};
@@ -290,22 +263,16 @@ var TypedClient = class TypedClient {
290
263
  return Future.make((resolve) => {
291
264
  (async () => {
292
265
  const inputResult = await updateDef.input["~standard"].validate(args);
293
- if (inputResult.issues) {
294
- resolve(Result.Error(new UpdateValidationError(updateName, "input", inputResult.issues)));
295
- return;
296
- }
266
+ if (inputResult.issues) return Result.Error(new UpdateValidationError(updateName, "input", inputResult.issues));
297
267
  try {
298
268
  const result = await workflowHandle.executeUpdate(updateName, { args: [inputResult.value] });
299
269
  const outputResult = await updateDef.output["~standard"].validate(result);
300
- if (outputResult.issues) {
301
- resolve(Result.Error(new UpdateValidationError(updateName, "output", outputResult.issues)));
302
- return;
303
- }
304
- resolve(Result.Ok(outputResult.value));
270
+ if (outputResult.issues) return Result.Error(new UpdateValidationError(updateName, "output", outputResult.issues));
271
+ return Result.Ok(outputResult.value);
305
272
  } catch (error) {
306
- resolve(Result.Error(createRuntimeClientError("update", error)));
273
+ return Result.Error(createRuntimeClientError("update", error));
307
274
  }
308
- })();
275
+ })().then(resolve).catch((e) => resolve(Result.Error(createRuntimeClientError("unexpected", e))));
309
276
  });
310
277
  };
311
278
  return {
@@ -319,15 +286,12 @@ var TypedClient = class TypedClient {
319
286
  try {
320
287
  const result = await workflowHandle.result();
321
288
  const outputResult = await definition.output["~standard"].validate(result);
322
- if (outputResult.issues) {
323
- resolve(Result.Error(new WorkflowValidationError(workflowHandle.workflowId, "output", outputResult.issues)));
324
- return;
325
- }
326
- resolve(Result.Ok(outputResult.value));
289
+ if (outputResult.issues) return Result.Error(new WorkflowValidationError(workflowHandle.workflowId, "output", outputResult.issues));
290
+ return Result.Ok(outputResult.value);
327
291
  } catch (error) {
328
- resolve(Result.Error(createRuntimeClientError("result", error)));
292
+ return Result.Error(createRuntimeClientError("result", error));
329
293
  }
330
- })();
294
+ })().then(resolve).catch((e) => resolve(Result.Error(createRuntimeClientError("unexpected", e))));
331
295
  });
332
296
  },
333
297
  terminate: (reason) => {
@@ -356,4 +320,5 @@ function createWorkflowValidationError(workflowName, direction, issues) {
356
320
  }
357
321
 
358
322
  //#endregion
359
- export { QueryValidationError, SignalValidationError, TypedClient, UpdateValidationError, WorkflowNotFoundError, WorkflowValidationError };
323
+ export { QueryValidationError, SignalValidationError, TypedClient, UpdateValidationError, WorkflowNotFoundError, WorkflowValidationError };
324
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/errors.ts","../src/client.ts"],"sourcesContent":["import type { StandardSchemaV1 } from \"@standard-schema/spec\";\n\n/**\n * Base class for all typed client errors with boxed pattern\n */\nabstract class TypedClientError extends Error {\n protected constructor(message: string) {\n super(message);\n this.name = this.constructor.name;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n\n/**\n * Generic runtime failure wrapper when no specific error type applies\n */\nexport class RuntimeClientError extends TypedClientError {\n constructor(\n public readonly operation: string,\n public override readonly cause?: unknown,\n ) {\n super(\n `Operation \"${operation}\" failed: ${\n cause instanceof Error ? cause.message : String(cause ?? \"unknown error\")\n }`,\n );\n }\n}\n\n/**\n * Thrown when a workflow is not found in the contract\n */\nexport class WorkflowNotFoundError extends TypedClientError {\n constructor(\n public readonly workflowName: string,\n public readonly availableWorkflows: string[],\n ) {\n super(\n `Workflow \"${workflowName}\" not found in contract. Available workflows: ${availableWorkflows.join(\", \")}`,\n );\n }\n}\n\n/**\n * Thrown when workflow input or output validation fails\n */\nexport class WorkflowValidationError extends TypedClientError {\n constructor(\n public readonly workflowName: string,\n public readonly direction: \"input\" | \"output\",\n public readonly issues: ReadonlyArray<StandardSchemaV1.Issue>,\n ) {\n super(\n `Validation failed for workflow \"${workflowName}\" ${direction}: ${JSON.stringify(issues)}`,\n );\n }\n}\n\n/**\n * Thrown when query input or output validation fails\n */\nexport class QueryValidationError extends TypedClientError {\n constructor(\n public readonly queryName: string,\n public readonly direction: \"input\" | \"output\",\n public readonly issues: ReadonlyArray<StandardSchemaV1.Issue>,\n ) {\n super(`Validation failed for query \"${queryName}\" ${direction}: ${JSON.stringify(issues)}`);\n }\n}\n\n/**\n * Thrown when signal input validation fails\n */\nexport class SignalValidationError extends TypedClientError {\n constructor(\n public readonly signalName: string,\n public readonly issues: ReadonlyArray<StandardSchemaV1.Issue>,\n ) {\n super(`Validation failed for signal \"${signalName}\": ${JSON.stringify(issues)}`);\n }\n}\n\n/**\n * Thrown when update input or output validation fails\n */\nexport class UpdateValidationError extends TypedClientError {\n constructor(\n public readonly updateName: string,\n public readonly direction: \"input\" | \"output\",\n public readonly issues: ReadonlyArray<StandardSchemaV1.Issue>,\n ) {\n super(`Validation failed for update \"${updateName}\" ${direction}: ${JSON.stringify(issues)}`);\n }\n}\n","import { Client, WorkflowHandle } from \"@temporalio/client\";\nimport type { WorkflowStartOptions } from \"@temporalio/client\";\nimport type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport type {\n ContractDefinition,\n WorkflowDefinition,\n QueryDefinition,\n SignalDefinition,\n UpdateDefinition,\n} from \"@temporal-contract/contract\";\nimport type {\n ClientInferInput,\n ClientInferOutput,\n ClientInferWorkflowQueries,\n ClientInferWorkflowSignals,\n ClientInferWorkflowUpdates,\n} from \"./types.js\";\nimport { Future, Result } from \"@swan-io/boxed\";\nimport {\n WorkflowNotFoundError,\n WorkflowValidationError,\n QueryValidationError,\n SignalValidationError,\n UpdateValidationError,\n RuntimeClientError,\n} from \"./errors.js\";\n\nexport type TypedWorkflowStartOptions<\n TContract extends ContractDefinition,\n TWorkflowName extends keyof TContract[\"workflows\"],\n> = Omit<WorkflowStartOptions, \"taskQueue\" | \"args\"> & {\n args: ClientInferInput<TContract[\"workflows\"][TWorkflowName]>;\n};\n\n/**\n * Typed workflow handle with validated results using Result/Future pattern\n */\nexport type TypedWorkflowHandle<TWorkflow extends WorkflowDefinition> = {\n workflowId: string;\n\n /**\n * Type-safe queries based on workflow definition with Result pattern\n * Each query returns Future<Result<T, Error>> instead of Promise<T>\n */\n queries: {\n [K in keyof ClientInferWorkflowQueries<TWorkflow>]: ClientInferWorkflowQueries<TWorkflow>[K] extends (\n ...args: infer Args\n ) => Future<Result<infer R, Error>>\n ? (...args: Args) => Future<Result<R, QueryValidationError | RuntimeClientError>>\n : never;\n };\n\n /**\n * Type-safe signals based on workflow definition with Result pattern\n * Each signal returns Future<Result<void, Error>> instead of Promise<void>\n */\n signals: {\n [K in keyof ClientInferWorkflowSignals<TWorkflow>]: ClientInferWorkflowSignals<TWorkflow>[K] extends (\n ...args: infer Args\n ) => Future<Result<void, Error>>\n ? (...args: Args) => Future<Result<void, SignalValidationError | RuntimeClientError>>\n : never;\n };\n\n /**\n * Type-safe updates based on workflow definition with Result pattern\n * Each update returns Future<Result<T, Error>> instead of Promise<T>\n */\n updates: {\n [K in keyof ClientInferWorkflowUpdates<TWorkflow>]: ClientInferWorkflowUpdates<TWorkflow>[K] extends (\n ...args: infer Args\n ) => Future<Result<infer R, Error>>\n ? (...args: Args) => Future<Result<R, UpdateValidationError | RuntimeClientError>>\n : never;\n };\n\n /**\n * Get workflow result with Result pattern\n */\n result: () => Future<\n Result<ClientInferOutput<TWorkflow>, WorkflowValidationError | RuntimeClientError>\n >;\n\n /**\n * Terminate workflow with Result pattern\n */\n terminate: (reason?: string) => Future<Result<void, RuntimeClientError>>;\n\n /**\n * Cancel workflow with Result pattern\n */\n cancel: () => Future<Result<void, RuntimeClientError>>;\n\n /**\n * Get workflow execution description including status and metadata\n */\n describe: () => Future<\n Result<Awaited<ReturnType<WorkflowHandle[\"describe\"]>>, RuntimeClientError>\n >;\n\n /**\n * Fetch the workflow execution history\n */\n fetchHistory: () => Future<\n Result<Awaited<ReturnType<WorkflowHandle[\"fetchHistory\"]>>, RuntimeClientError>\n >;\n};\n\n/**\n * Typed Temporal client with Result/Future pattern based on a contract\n *\n * Provides type-safe methods to start and execute workflows\n * defined in the contract, with explicit error handling using Result pattern.\n */\nexport class TypedClient<TContract extends ContractDefinition> {\n private constructor(\n private readonly contract: TContract,\n private readonly client: Client,\n ) {}\n\n /**\n * Create a typed Temporal client with boxed pattern from a contract\n *\n * @example\n * ```ts\n * const connection = await Connection.connect();\n * const temporalClient = new Client({ connection });\n * const client = TypedClient.create(myContract, temporalClient);\n *\n * const result = await client.executeWorkflow('processOrder', {\n * workflowId: 'order-123',\n * args: { ... },\n * });\n *\n * result.match({\n * Ok: (output) => console.log('Success:', output),\n * Error: (error) => console.error('Failed:', error),\n * });\n * ```\n */\n static create<TContract extends ContractDefinition>(\n contract: TContract,\n client: Client,\n ): TypedClient<TContract> {\n return new TypedClient(contract, client);\n }\n\n /**\n * Start a workflow and return a typed handle with Future pattern\n *\n * @example\n * ```ts\n * const handleResult = await client.startWorkflow('processOrder', {\n * workflowId: 'order-123',\n * args: { orderId: 'ORD-123' },\n * workflowExecutionTimeout: '1 day',\n * retry: { maximumAttempts: 3 },\n * });\n *\n * handleResult.match({\n * Ok: async (handle) => {\n * const result = await handle.result();\n * // ... handle result\n * },\n * Error: (error) => console.error('Failed to start:', error),\n * });\n * ```\n */\n startWorkflow<TWorkflowName extends keyof TContract[\"workflows\"]>(\n workflowName: TWorkflowName,\n { args, ...temporalOptions }: TypedWorkflowStartOptions<TContract, TWorkflowName>,\n ): Future<\n Result<\n TypedWorkflowHandle<TContract[\"workflows\"][TWorkflowName]>,\n WorkflowNotFoundError | WorkflowValidationError | RuntimeClientError\n >\n > {\n return Future.make((resolve) => {\n (async () => {\n const definition = this.contract.workflows[workflowName as string];\n\n if (!definition) {\n return Result.Error(createWorkflowNotFoundError(workflowName, this.contract));\n }\n\n const inputResult = await definition.input[\"~standard\"].validate(args);\n if (inputResult.issues) {\n return Result.Error(\n createWorkflowValidationError(workflowName, \"input\", inputResult.issues),\n );\n }\n\n const validatedInput = inputResult.value as ClientInferInput<\n TContract[\"workflows\"][TWorkflowName]\n >;\n\n // Start workflow (Temporal expects args as array, so wrap single parameter)\n try {\n const handle = await this.client.workflow.start(workflowName as string, {\n ...temporalOptions,\n taskQueue: this.contract.taskQueue,\n args: [validatedInput],\n });\n const typedHandle = this.createTypedHandle(handle, definition) as TypedWorkflowHandle<\n TContract[\"workflows\"][TWorkflowName]\n >;\n return Result.Ok(typedHandle);\n } catch (error) {\n return Result.Error(createRuntimeClientError(\"startWorkflow\", error));\n }\n })()\n .then(resolve)\n .catch((e: unknown) => resolve(Result.Error(createRuntimeClientError(\"unexpected\", e))));\n });\n }\n\n /**\n * Execute a workflow (start and wait for result) with Future/Result pattern\n *\n * @example\n * ```ts\n * const result = await client.executeWorkflow('processOrder', {\n * workflowId: 'order-123',\n * args: { orderId: 'ORD-123' },\n * workflowExecutionTimeout: '1 day',\n * retry: { maximumAttempts: 3 },\n * });\n *\n * result.match({\n * Ok: (output) => console.log('Order processed:', output.status),\n * Error: (error) => console.error('Processing failed:', error),\n * });\n * ```\n */\n executeWorkflow<TWorkflowName extends keyof TContract[\"workflows\"]>(\n workflowName: TWorkflowName,\n { args, ...temporalOptions }: TypedWorkflowStartOptions<TContract, TWorkflowName>,\n ): Future<\n Result<\n ClientInferOutput<TContract[\"workflows\"][TWorkflowName]>,\n WorkflowNotFoundError | WorkflowValidationError | RuntimeClientError\n >\n > {\n return Future.make((resolve) => {\n (async () => {\n const definition = this.contract.workflows[workflowName as string];\n\n if (!definition) {\n return Result.Error(createWorkflowNotFoundError(workflowName, this.contract));\n }\n\n const inputResult = await definition.input[\"~standard\"].validate(args);\n if (inputResult.issues) {\n return Result.Error(\n createWorkflowValidationError(workflowName, \"input\", inputResult.issues),\n );\n }\n\n const validatedInput = inputResult.value as ClientInferInput<\n TContract[\"workflows\"][TWorkflowName]\n >;\n\n // Execute workflow (Temporal expects args as array, so wrap single parameter)\n try {\n const result = await this.client.workflow.execute(workflowName as string, {\n ...temporalOptions,\n taskQueue: this.contract.taskQueue,\n args: [validatedInput],\n });\n\n // Validate output with Standard Schema\n const outputResult = await definition.output[\"~standard\"].validate(result);\n if (outputResult.issues) {\n return Result.Error(\n createWorkflowValidationError(workflowName, \"output\", outputResult.issues),\n );\n }\n\n return Result.Ok(\n outputResult.value as ClientInferOutput<TContract[\"workflows\"][TWorkflowName]>,\n );\n } catch (error) {\n return Result.Error(createRuntimeClientError(\"executeWorkflow\", error));\n }\n })()\n .then(resolve)\n .catch((e: unknown) => resolve(Result.Error(createRuntimeClientError(\"unexpected\", e))));\n });\n }\n\n /**\n * Get a handle to an existing workflow with Future/Result pattern\n *\n * @example\n * ```ts\n * const handleResult = await client.getHandle('processOrder', 'order-123');\n * handleResult.match({\n * Ok: async (handle) => {\n * const result = await handle.result();\n * // ... handle result\n * },\n * Error: (error) => console.error('Failed to get handle:', error),\n * });\n * ```\n */\n getHandle<TWorkflowName extends keyof TContract[\"workflows\"]>(\n workflowName: TWorkflowName,\n workflowId: string,\n ): Future<\n Result<\n TypedWorkflowHandle<TContract[\"workflows\"][TWorkflowName]>,\n WorkflowNotFoundError | RuntimeClientError\n >\n > {\n return Future.make((resolve) => {\n (async () => {\n const definition = this.contract.workflows[workflowName as string];\n\n if (!definition) {\n return Result.Error(createWorkflowNotFoundError(workflowName, this.contract));\n }\n\n try {\n const handle = this.client.workflow.getHandle(workflowId);\n const typedHandle = this.createTypedHandle(handle, definition) as TypedWorkflowHandle<\n TContract[\"workflows\"][TWorkflowName]\n >;\n return Result.Ok(typedHandle);\n } catch (error) {\n return Result.Error(createRuntimeClientError(\"getHandle\", error));\n }\n })()\n .then(resolve)\n .catch((e: unknown) => resolve(Result.Error(createRuntimeClientError(\"unexpected\", e))));\n });\n }\n\n private createTypedHandle<TWorkflow extends WorkflowDefinition>(\n workflowHandle: WorkflowHandle,\n definition: TWorkflow,\n ): TypedWorkflowHandle<TWorkflow> {\n // Create typed queries proxy with Future/Result\n const queries = {} as TypedWorkflowHandle<TWorkflow>[\"queries\"];\n for (const [queryName, queryDef] of Object.entries(definition.queries ?? {}) as Array<\n [string, QueryDefinition]\n >) {\n (queries as Record<string, unknown>)[queryName] = (\n args: ClientInferInput<typeof queryDef>,\n ): Future<Result<unknown, QueryValidationError | RuntimeClientError>> => {\n return Future.make((resolve) => {\n (async () => {\n const inputResult = await queryDef.input[\"~standard\"].validate(args);\n if (inputResult.issues) {\n return Result.Error(new QueryValidationError(queryName, \"input\", inputResult.issues));\n }\n\n try {\n const result = await workflowHandle.query(queryName as string, inputResult.value);\n\n const outputResult = await queryDef.output[\"~standard\"].validate(result);\n if (outputResult.issues) {\n return Result.Error(\n new QueryValidationError(queryName, \"output\", outputResult.issues),\n );\n }\n\n return Result.Ok(outputResult.value);\n } catch (error) {\n return Result.Error(createRuntimeClientError(\"query\", error));\n }\n })()\n .then(resolve)\n .catch((e: unknown) =>\n resolve(Result.Error(createRuntimeClientError(\"unexpected\", e))),\n );\n });\n };\n }\n\n // Create typed signals proxy with Future/Result\n const signals = {} as TypedWorkflowHandle<TWorkflow>[\"signals\"];\n for (const [signalName, signalDef] of Object.entries(definition.signals ?? {}) as Array<\n [string, SignalDefinition]\n >) {\n (signals as Record<string, unknown>)[signalName] = (\n args: ClientInferInput<typeof signalDef>,\n ): Future<Result<void, SignalValidationError | RuntimeClientError>> => {\n return Future.make((resolve) => {\n (async () => {\n const inputResult = await signalDef.input[\"~standard\"].validate(args);\n if (inputResult.issues) {\n return Result.Error(new SignalValidationError(signalName, inputResult.issues));\n }\n\n try {\n await workflowHandle.signal(signalName as string, inputResult.value);\n return Result.Ok(undefined);\n } catch (error) {\n return Result.Error(createRuntimeClientError(\"signal\", error));\n }\n })()\n .then(resolve)\n .catch((e: unknown) =>\n resolve(Result.Error(createRuntimeClientError(\"unexpected\", e))),\n );\n });\n };\n }\n\n // Create typed updates proxy with Future/Result\n const updates = {} as TypedWorkflowHandle<TWorkflow>[\"updates\"];\n for (const [updateName, updateDef] of Object.entries(definition.updates ?? {}) as Array<\n [string, UpdateDefinition]\n >) {\n (updates as Record<string, unknown>)[updateName] = (\n args: ClientInferInput<typeof updateDef>,\n ): Future<Result<unknown, UpdateValidationError | RuntimeClientError>> => {\n return Future.make((resolve) => {\n (async () => {\n const inputResult = await updateDef.input[\"~standard\"].validate(args);\n if (inputResult.issues) {\n return Result.Error(\n new UpdateValidationError(updateName, \"input\", inputResult.issues),\n );\n }\n\n try {\n const result = await workflowHandle.executeUpdate(updateName as string, {\n args: [inputResult.value],\n });\n\n const outputResult = await updateDef.output[\"~standard\"].validate(result);\n if (outputResult.issues) {\n return Result.Error(\n new UpdateValidationError(updateName, \"output\", outputResult.issues),\n );\n }\n\n return Result.Ok(outputResult.value);\n } catch (error) {\n return Result.Error(createRuntimeClientError(\"update\", error));\n }\n })()\n .then(resolve)\n .catch((e: unknown) =>\n resolve(Result.Error(createRuntimeClientError(\"unexpected\", e))),\n );\n });\n };\n }\n\n return {\n workflowId: workflowHandle.workflowId,\n queries,\n signals,\n updates,\n result: (): Future<\n Result<ClientInferOutput<TWorkflow>, WorkflowValidationError | RuntimeClientError>\n > => {\n return Future.make((resolve) => {\n (async () => {\n try {\n const result = await workflowHandle.result();\n const outputResult = await definition.output[\"~standard\"].validate(result);\n if (outputResult.issues) {\n return Result.Error(\n new WorkflowValidationError(\n workflowHandle.workflowId,\n \"output\",\n outputResult.issues,\n ),\n );\n }\n return Result.Ok(outputResult.value as ClientInferOutput<TWorkflow>);\n } catch (error) {\n return Result.Error(createRuntimeClientError(\"result\", error));\n }\n })()\n .then(resolve)\n .catch((e: unknown) =>\n resolve(Result.Error(createRuntimeClientError(\"unexpected\", e))),\n );\n });\n },\n terminate: (reason?: string): Future<Result<void, RuntimeClientError>> => {\n return Future.fromPromise(workflowHandle.terminate(reason))\n .mapError((error) => createRuntimeClientError(\"terminate\", error))\n .mapOk(() => undefined);\n },\n cancel: (): Future<Result<void, RuntimeClientError>> => {\n return Future.fromPromise(workflowHandle.cancel())\n .mapError((error) => createRuntimeClientError(\"cancel\", error))\n .mapOk(() => undefined);\n },\n describe: (): Future<\n Result<Awaited<ReturnType<WorkflowHandle[\"describe\"]>>, RuntimeClientError>\n > => {\n return Future.fromPromise(workflowHandle.describe()).mapError((error) =>\n createRuntimeClientError(\"describe\", error),\n );\n },\n fetchHistory: (): Future<\n Result<Awaited<ReturnType<WorkflowHandle[\"fetchHistory\"]>>, RuntimeClientError>\n > => {\n return Future.fromPromise(workflowHandle.fetchHistory()).mapError((error) =>\n createRuntimeClientError(\"fetchHistory\", error),\n );\n },\n };\n }\n}\n\nfunction createRuntimeClientError(operation: string, error: unknown): RuntimeClientError {\n return new RuntimeClientError(operation, error);\n}\n\nfunction createWorkflowNotFoundError(\n workflowName: string | number | symbol,\n contract: ContractDefinition,\n): WorkflowNotFoundError {\n return new WorkflowNotFoundError(String(workflowName), Object.keys(contract.workflows));\n}\n\nfunction createWorkflowValidationError(\n workflowName: string | number | symbol,\n direction: \"input\" | \"output\",\n issues: ReadonlyArray<StandardSchemaV1.Issue>,\n): WorkflowValidationError {\n return new WorkflowValidationError(String(workflowName), direction, issues);\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@temporal-contract/client",
3
- "version": "0.0.7",
3
+ "version": "0.2.0",
4
4
  "description": "Client utilities with Result/Future pattern for consuming temporal-contract workflows",
5
5
  "keywords": [
6
6
  "client",
@@ -44,26 +44,30 @@
44
44
  "dependencies": {
45
45
  "@standard-schema/spec": "1.1.0",
46
46
  "@swan-io/boxed": "3.2.1",
47
- "@temporal-contract/contract": "0.0.7"
47
+ "@temporal-contract/contract": "0.2.0"
48
48
  },
49
49
  "devDependencies": {
50
- "@temporalio/client": "1.14.0",
51
- "@temporalio/worker": "1.14.0",
52
- "@temporalio/workflow": "1.14.0",
53
- "@types/node": "25.0.3",
54
- "@vitest/coverage-v8": "4.0.16",
55
- "tsdown": "0.18.1",
50
+ "@temporalio/client": "1.14.1",
51
+ "@temporalio/worker": "1.14.1",
52
+ "@temporalio/workflow": "1.14.1",
53
+ "@types/node": "25.2.3",
54
+ "@vitest/coverage-v8": "4.0.18",
55
+ "tsdown": "0.20.3",
56
+ "typedoc": "0.28.17",
57
+ "typedoc-plugin-markdown": "4.10.0",
56
58
  "typescript": "5.9.3",
57
- "vitest": "4.0.16",
58
- "zod": "4.2.1",
59
- "@temporal-contract/testing": "0.0.7",
60
- "@temporal-contract/tsconfig": "0.0.7"
59
+ "vitest": "4.0.18",
60
+ "zod": "4.3.6",
61
+ "@temporal-contract/testing": "0.2.0",
62
+ "@temporal-contract/tsconfig": "0.2.0",
63
+ "@temporal-contract/typedoc": "0.1.0"
61
64
  },
62
65
  "peerDependencies": {
63
66
  "@temporalio/client": "^1"
64
67
  },
65
68
  "scripts": {
66
69
  "build": "tsdown src/index.ts --format cjs,esm --dts --clean",
70
+ "build:docs": "typedoc",
67
71
  "dev": "tsdown src/index.ts --format cjs,esm --dts --watch",
68
72
  "test": "vitest run --project unit",
69
73
  "test:integration": "vitest run --project integration",