@siglo/fastify 1.0.1 → 1.1.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 +51 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +13 -4
package/README.md
CHANGED
|
@@ -13,6 +13,7 @@ flowchart TD
|
|
|
13
13
|
Req["Fastify HTTP Request"] --> Handler["sigloFastifyHandler<br/>• Extract request.body / query<br/>• Extract request.raw.signal (Native AbortSignal)<br/>• Mirror X-Correlation-Id<br/>• Resolve Tenant Namespace"]
|
|
14
14
|
Handler --> WF["Siglo Workflow<br/>• Typed Input Parameters<br/>• Timeout Deadlines<br/>• Subgraph Step Execution"]
|
|
15
15
|
WF -->|Success| Success["Set Stack ID<br/>Return JSON"]
|
|
16
|
+
WF -->|Waiting| Waiting["Set Stack ID<br/>202 Accepted / Suspension JSON"]
|
|
16
17
|
WF -->|Error| Error["getErrorStatusCode(err)<br/>reply.status(code).send()"]
|
|
17
18
|
```
|
|
18
19
|
|
|
@@ -54,12 +55,15 @@ function sigloFastifyHandler<TInput = any, TOutput = any, TReq = any>(
|
|
|
54
55
|
| `input` | `(req: TReq) => Promise<TInput> \| TInput` | `request.body \|\| request.query` | Function transforming incoming Fastify request into workflow parameters. |
|
|
55
56
|
| `output` | `(result: TOutput, reply: FastifyReply) => Promise<any> \| any` | `result` | Function formatting the final response. If omitted, Fastify serializes the clean result. |
|
|
56
57
|
| `timeout` | `number` | `undefined` | Execution timeout in milliseconds. |
|
|
58
|
+
| `durable` | `boolean \| ((req: TReq) => boolean)` | `undefined` | Enables durable suspension, either for every request or through a request-specific resolver. |
|
|
57
59
|
| `namespace` | `string \| ((req: TReq) => string \| undefined)` | `undefined` | Namespace identifier or extractor function for tenant partitioning. |
|
|
58
60
|
| `allowHeaderNamespace` | `boolean` | `false` | When true, permits extracting tenant namespace from incoming `x-namespace` headers. Keep disabled when client requests are untrusted. |
|
|
59
61
|
| `exposeErrorDetails` | `boolean` | `process.env.NODE_ENV !== 'production'` | Controls whether 500 error messages expose internal details. In production, a generic `'Internal workflow execution error'` is returned. |
|
|
60
62
|
| `onError` | `(err: any, reply: FastifyReply) => Promise<any> \| any` | Default JSON error handler | Custom error responder. If omitted, maps status codes and returns sanitized `{ error: message }`. |
|
|
61
63
|
| `correlationIdHeader` | `string` | `'x-correlation-id'` | Header name for correlation propagation. |
|
|
62
64
|
|
|
65
|
+
Without a custom `output` callback, a workflow result with `status: 'waiting'` returns **202 Accepted** with the suspension descriptor as JSON. Completed workflows use the normal **200 OK** response. Suspension is a successful result and does not invoke `onError`. A custom `output` callback controls both the response body and status.
|
|
66
|
+
|
|
63
67
|
---
|
|
64
68
|
|
|
65
69
|
## 5. Status Code Resolution & Error Semantics
|
|
@@ -185,3 +189,50 @@ const start = async () => {
|
|
|
185
189
|
|
|
186
190
|
start();
|
|
187
191
|
```
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## 8. Durable Workflows and Automatic HTTP Responses
|
|
197
|
+
|
|
198
|
+
Enable `durable: true` so `waitForEvent()` or `wait()` can suspend execution. The adapter automatically returns **202 Accepted** when the result has `status: 'waiting'`, including the suspension descriptor and `X-Workflow-Stack-Id` header. A workflow that completes uses **200 OK** by default.
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
import Fastify from 'fastify';
|
|
202
|
+
import { Step, flow, waitForEvent, resumeWorkflow } from '@siglo/core';
|
|
203
|
+
import { sigloFastifyHandler } from '@siglo/fastify';
|
|
204
|
+
|
|
205
|
+
const app = Fastify();
|
|
206
|
+
|
|
207
|
+
const approvalWorkflow = flow(
|
|
208
|
+
waitForEvent('order.approved', {
|
|
209
|
+
correlationKey: (input: { orderId: string }) => `order:${input.orderId}`,
|
|
210
|
+
timeout: '24h'
|
|
211
|
+
}),
|
|
212
|
+
Step.create('confirmOrder', () => ({ status: 'confirmed' }))
|
|
213
|
+
);
|
|
214
|
+
|
|
215
|
+
// POST JSON: { "orderId": "order-5001" }
|
|
216
|
+
// Returns 202 with status: 'waiting'; no output callback is required.
|
|
217
|
+
app.post('/api/orders', sigloFastifyHandler(approvalWorkflow, {
|
|
218
|
+
durable: true,
|
|
219
|
+
namespace: 'orders'
|
|
220
|
+
}));
|
|
221
|
+
|
|
222
|
+
// In a separate approval webhook handler, resume the existing execution:
|
|
223
|
+
// await resumeWorkflow(approvalWorkflow, 'order:order-5001', { approved: true });
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
The waiting JSON includes `status`, `stackId`, `stepId`, `correlationKey`, `eventName`, `expiresAt` (a Unix timestamp in milliseconds when a timeout is set), and `continuationStepIndex`. Suspension is a successful result, so it does not invoke `onError`. Calling the submission handler again starts a new execution; approval webhooks must call `resumeWorkflow()` to continue the suspended one.
|
|
227
|
+
|
|
228
|
+
For request-specific control, replace `durable: true` with `durable: (req) => req.headers['x-durable'] === 'true'`. Headers, query parameters, and JSON fields do not automatically enable durable mode in this adapter. Explicit `durable: false` disables suspension; wait nodes then use their non-durable behavior.
|
|
229
|
+
|
|
230
|
+
| Workflow outcome | Default HTTP response |
|
|
231
|
+
| :--- | :--- |
|
|
232
|
+
| Suspended at `waitForEvent()` or `wait()` | `202 Accepted` with the waiting descriptor |
|
|
233
|
+
| Completed | `200 OK` with the clean workflow result |
|
|
234
|
+
| Failed | Existing error-to-status mapping, or custom `onError` |
|
|
235
|
+
|
|
236
|
+
A custom `output` callback takes full control of the response body and status, including for waiting results. If you supply one, handle `result.status === 'waiting'` explicitly when you want to preserve the `202` response.
|
|
237
|
+
|
|
238
|
+
The HTTP adapter does not supply persistence. Configure a shared storage adapter that supports checkpoints and wait records to survive process restarts and resume across replicas. Timer waits also need a scheduler to resume them when due. See [Durable Workflows](../../docs/06-durable-workflows.md), [Storage and Adapters](../../docs/07-storage-and-adapters.md), and [the distributed checkout tutorial](../../docs/durable-distributed-checkout.md).
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export interface SigloFastifyOptions<TReq = any, TInput = any, TOutput = any> {
|
|
|
3
3
|
input?: (req: TReq) => Promise<TInput> | TInput;
|
|
4
4
|
output?: (result: TOutput, reply: any) => Promise<any> | any;
|
|
5
5
|
timeout?: number;
|
|
6
|
+
durable?: boolean | ((req: TReq) => boolean);
|
|
6
7
|
namespace?: string | ((req: TReq) => string | undefined);
|
|
7
8
|
onError?: (err: any, reply: any) => Promise<any> | any;
|
|
8
9
|
correlationIdHeader?: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAoB,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,mBAAmB,CAAC,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG;IACxE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAChD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;IACzD,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACvD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAoBnD;AAiBD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,EACvE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAM,aAEjC,GAAG,SAAS,GAAG,KAAG,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAoB,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,mBAAmB,CAAC,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG;IACxE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAChD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;IACzD,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACvD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAoBnD;AAiBD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,EACvE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAM,aAEjC,GAAG,SAAS,GAAG,KAAG,OAAO,CAAC,GAAG,CAAC,CAoExD;AAGD,MAAM,MAAM,qBAAqB,CAAC,IAAI,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACxH,eAAO,MAAM,qBAAqB,4BAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -74,6 +74,7 @@ function sigloFastifyHandler(workflow, options = {}) {
|
|
|
74
74
|
signal: abortSignal,
|
|
75
75
|
timeout: options.timeout,
|
|
76
76
|
namespace,
|
|
77
|
+
durable: typeof options.durable === 'function' ? options.durable(request) : options.durable,
|
|
77
78
|
};
|
|
78
79
|
const rawResult = await workflow.run(inputData, execOptions);
|
|
79
80
|
const stackId = typeof rawResult?.$stackId === 'function'
|
|
@@ -86,6 +87,9 @@ function sigloFastifyHandler(workflow, options = {}) {
|
|
|
86
87
|
if (options.output) {
|
|
87
88
|
return await options.output(cleanResult, reply);
|
|
88
89
|
}
|
|
90
|
+
if (cleanResult?.status === 'waiting') {
|
|
91
|
+
reply.status(202);
|
|
92
|
+
}
|
|
89
93
|
return cleanResult;
|
|
90
94
|
}
|
|
91
95
|
catch (err) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@siglo/fastify",
|
|
3
|
-
"version": "1.0
|
|
4
|
-
"description": "Fastify route handler adapter for
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Fastify route handler adapter for running Siglo TypeScript workflows in Node.js.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"bugs": {
|
|
38
38
|
"url": "https://github.com/jsoftgem/siglo/issues"
|
|
39
39
|
},
|
|
40
|
-
"homepage": "https://github.com/jsoftgem/siglo#readme",
|
|
40
|
+
"homepage": "https://github.com/jsoftgem/siglo/tree/main/packages/fastify#readme",
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@siglo/core": "^1.0.0"
|
|
43
43
|
},
|
|
@@ -57,5 +57,14 @@
|
|
|
57
57
|
"mocha": "^12.0.3",
|
|
58
58
|
"tsx": "^4.23.15",
|
|
59
59
|
"typescript": "~5.7.0"
|
|
60
|
-
}
|
|
60
|
+
},
|
|
61
|
+
"keywords": [
|
|
62
|
+
"siglo",
|
|
63
|
+
"workflow",
|
|
64
|
+
"typescript",
|
|
65
|
+
"fastify",
|
|
66
|
+
"http",
|
|
67
|
+
"nodejs",
|
|
68
|
+
"route-handler"
|
|
69
|
+
]
|
|
61
70
|
}
|