@temporal-contract/client 0.1.0 → 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/dist/index.cjs +43 -78
- package/dist/index.d.cts +6 -7
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +6 -7
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +44 -79
- package/dist/index.mjs.map +1 -0
- package/package.json +11 -9
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
|
|
98
|
-
*
|
|
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
|
-
|
|
151
|
+
return _swan_io_boxed.Result.Ok(typedHandle);
|
|
159
152
|
} catch (error) {
|
|
160
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
255
|
+
return _swan_io_boxed.Result.Ok(void 0);
|
|
282
256
|
} catch (error) {
|
|
283
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
@@ -146,7 +146,7 @@ type TypedWorkflowStartOptions<TContract extends ContractDefinition, TWorkflowNa
|
|
|
146
146
|
/**
|
|
147
147
|
* Typed workflow handle with validated results using Result/Future pattern
|
|
148
148
|
*/
|
|
149
|
-
|
|
149
|
+
type TypedWorkflowHandle<TWorkflow extends WorkflowDefinition> = {
|
|
150
150
|
workflowId: string;
|
|
151
151
|
/**
|
|
152
152
|
* Type-safe queries based on workflow definition with Result pattern
|
|
@@ -183,7 +183,7 @@ interface TypedWorkflowHandle<TWorkflow extends WorkflowDefinition> {
|
|
|
183
183
|
* Fetch the workflow execution history
|
|
184
184
|
*/
|
|
185
185
|
fetchHistory: () => Future<Result<Awaited<ReturnType<WorkflowHandle["fetchHistory"]>>, RuntimeClientError>>;
|
|
186
|
-
}
|
|
186
|
+
};
|
|
187
187
|
/**
|
|
188
188
|
* Typed Temporal client with Result/Future pattern based on a contract
|
|
189
189
|
*
|
|
@@ -200,10 +200,8 @@ declare class TypedClient<TContract extends ContractDefinition> {
|
|
|
200
200
|
* @example
|
|
201
201
|
* ```ts
|
|
202
202
|
* const connection = await Connection.connect();
|
|
203
|
-
* const
|
|
204
|
-
*
|
|
205
|
-
* namespace: 'default',
|
|
206
|
-
* });
|
|
203
|
+
* const temporalClient = new Client({ connection });
|
|
204
|
+
* const client = TypedClient.create(myContract, temporalClient);
|
|
207
205
|
*
|
|
208
206
|
* const result = await client.executeWorkflow('processOrder', {
|
|
209
207
|
* workflowId: 'order-123',
|
|
@@ -283,4 +281,5 @@ declare class TypedClient<TContract extends ContractDefinition> {
|
|
|
283
281
|
private createTypedHandle;
|
|
284
282
|
}
|
|
285
283
|
//#endregion
|
|
286
|
-
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
|
@@ -146,7 +146,7 @@ type TypedWorkflowStartOptions<TContract extends ContractDefinition, TWorkflowNa
|
|
|
146
146
|
/**
|
|
147
147
|
* Typed workflow handle with validated results using Result/Future pattern
|
|
148
148
|
*/
|
|
149
|
-
|
|
149
|
+
type TypedWorkflowHandle<TWorkflow extends WorkflowDefinition> = {
|
|
150
150
|
workflowId: string;
|
|
151
151
|
/**
|
|
152
152
|
* Type-safe queries based on workflow definition with Result pattern
|
|
@@ -183,7 +183,7 @@ interface TypedWorkflowHandle<TWorkflow extends WorkflowDefinition> {
|
|
|
183
183
|
* Fetch the workflow execution history
|
|
184
184
|
*/
|
|
185
185
|
fetchHistory: () => Future<Result<Awaited<ReturnType<WorkflowHandle["fetchHistory"]>>, RuntimeClientError>>;
|
|
186
|
-
}
|
|
186
|
+
};
|
|
187
187
|
/**
|
|
188
188
|
* Typed Temporal client with Result/Future pattern based on a contract
|
|
189
189
|
*
|
|
@@ -200,10 +200,8 @@ declare class TypedClient<TContract extends ContractDefinition> {
|
|
|
200
200
|
* @example
|
|
201
201
|
* ```ts
|
|
202
202
|
* const connection = await Connection.connect();
|
|
203
|
-
* const
|
|
204
|
-
*
|
|
205
|
-
* namespace: 'default',
|
|
206
|
-
* });
|
|
203
|
+
* const temporalClient = new Client({ connection });
|
|
204
|
+
* const client = TypedClient.create(myContract, temporalClient);
|
|
207
205
|
*
|
|
208
206
|
* const result = await client.executeWorkflow('processOrder', {
|
|
209
207
|
* workflowId: 'order-123',
|
|
@@ -283,4 +281,5 @@ declare class TypedClient<TContract extends ContractDefinition> {
|
|
|
283
281
|
private createTypedHandle;
|
|
284
282
|
}
|
|
285
283
|
//#endregion
|
|
286
|
-
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
|
|
98
|
-
*
|
|
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
|
-
|
|
150
|
+
return Result.Ok(typedHandle);
|
|
159
151
|
} catch (error) {
|
|
160
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
254
|
+
return Result.Ok(void 0);
|
|
282
255
|
} catch (error) {
|
|
283
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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,20 +44,22 @@
|
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@standard-schema/spec": "1.1.0",
|
|
46
46
|
"@swan-io/boxed": "3.2.1",
|
|
47
|
-
"@temporal-contract/contract": "0.
|
|
47
|
+
"@temporal-contract/contract": "0.2.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@temporalio/client": "1.14.1",
|
|
51
51
|
"@temporalio/worker": "1.14.1",
|
|
52
52
|
"@temporalio/workflow": "1.14.1",
|
|
53
|
-
"@types/node": "25.
|
|
54
|
-
"@vitest/coverage-v8": "4.0.
|
|
55
|
-
"tsdown": "0.20.
|
|
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.
|
|
58
|
-
"zod": "4.3.
|
|
59
|
-
"@temporal-contract/testing": "0.
|
|
60
|
-
"@temporal-contract/tsconfig": "0.
|
|
59
|
+
"vitest": "4.0.18",
|
|
60
|
+
"zod": "4.3.6",
|
|
61
|
+
"@temporal-contract/testing": "0.2.0",
|
|
62
|
+
"@temporal-contract/tsconfig": "0.2.0",
|
|
61
63
|
"@temporal-contract/typedoc": "0.1.0"
|
|
62
64
|
},
|
|
63
65
|
"peerDependencies": {
|