@t4h.framework/core 0.12.0 → 0.14.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.
@@ -215,4 +215,4 @@ Do **not** import `@t4h.framework/core/testing` in production app code.
215
215
 
216
216
  **Testing (`@t4h.framework/core/testing`):** `TestWorkflowEnvironment`, `TestClock`, `createTestEnv`, `createTestEnvEntries`, `NonDeterministicWorkflowError`.
217
217
 
218
- > Core also exports lower-level building blocks used to **author framework packages** themselves. Those are out of scope for building workflows and are not covered here — reach for the primitives above and the companion packages instead.
218
+ > Core also exports lower-level building blocks used to **author framework packages** and **hosts** themselves (e.g. the `AsyncActivityCallback` namespace with the callbacks route helpers `deriveToken`, `isTokenValid`, `authorize`, `parseBody`, `toEvent`, `flattenHeaders`; `pending({ correlationKey })` plus the optional `toCorrelationKey(event)` on `AsyncActivity` for third parties that emit to a fixed URL). Those are out of scope for building workflows and are not covered here — reach for the primitives above and the companion packages instead.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,84 @@
1
1
  # @t4h.framework/core
2
2
 
3
+ ## 0.14.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#170](https://github.com/tech4humans-brasil/framework/pull/170) [`aa72268`](https://github.com/tech4humans-brasil/framework/commit/aa72268d040a743743cac31cc14e26b8620b0e3f) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - Adds the `jwks` callback auth: a detached signature over the callback body,
8
+ verified with the public key the `kid` resolves to at a JWKS URL — the way Amber
9
+ signs its webhooks.
10
+
11
+ **core**: `AsyncActivityCallbackAuthJwks` joins `AsyncActivityCallbackAuth`
12
+ (`jwksUri`, `header`, `kid`/`kidHeader`, `algorithm`/`algorithmHeader`,
13
+ `signatureFormat`/`signatureFormatHeader`, `timestampHeader`,
14
+ `toleranceInSeconds`, `signedPayload` as a template over `{timestamp}` and
15
+ `{body}`).
16
+
17
+ **jwks**: `jwksCallback` (default of `@t4h.framework/jwks/callback`) now serves
18
+ both `jwt` and `jwks`. Hosts pass it as `{ jwt: jwksCallback, jwks: jwksCallback }`.
19
+
20
+ **dev**: loads `@t4h.framework/jwks` for the `jwks` type as well.
21
+
22
+ **webhook**: documents the new type.
23
+
24
+ ## 0.13.0
25
+
26
+ ### Minor Changes
27
+
28
+ - [#167](https://github.com/tech4humans-brasil/framework/pull/167) [`1b1509f`](https://github.com/tech4humans-brasil/framework/commit/1b1509f9b6d2554dfab1f7633c3d022249e4fa01) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - Lets a third party that emits to a fixed URL advance a waiting async activity,
29
+ without the callback URL the activity would otherwise hand out.
30
+
31
+ **core**: `pending({ correlationKey })` declares the key a wait answers to, and
32
+ the optional `toCorrelationKey(event)` on `AsyncActivity` maps an incoming event
33
+ (`AsyncActivityCallback.Event`: method, flattened headers, parsed body, raw body)
34
+ to that key, or `undefined` when the event is not for the activity. It runs on a
35
+ bare instance, outside any run. `AsyncActivityCallback.toEvent(request)` builds
36
+ the event for hosts.
37
+
38
+ **dev**: new public route `POST /projects/:projectId/workflows/:workflowId/events`.
39
+ Every registered activity implementing `toCorrelationKey` is asked for a key;
40
+ the pending of that type waiting on the key inside the workflow has its `auth`
41
+ verified and receives the event as a callback, through the same path as the
42
+ callback URL route. Answers `202 { id, activity }` with the stored callback,
43
+ `202` with an empty body when no activity claims the event or nothing is
44
+ waiting, `401` when the matched pending refused the auth, and `409` when the key
45
+ matches more than one pending, since a correlation key must identify one wait.
46
+
47
+ - [#167](https://github.com/tech4humans-brasil/framework/pull/167) [`1b1509f`](https://github.com/tech4humans-brasil/framework/commit/1b1509f9b6d2554dfab1f7633c3d022249e4fa01) Thanks [@gusteycamargo](https://github.com/gusteycamargo)! - Moves the callbacks route helpers from `@t4h.framework/webhook` to
48
+ `@t4h.framework/core`. The route advances any pending async activity, not only
49
+ `webhook()`, and the core already owned its contract (`AsyncActivityCallbackAuth`,
50
+ `GetActivityCallbackUrlClaim`, `AsyncActivityAdvanceContext`).
51
+
52
+ **core**: new `AsyncActivityCallback` namespace with `deriveToken`, `isTokenValid`,
53
+ `parseBody`, `getHeader`, `getBearerToken`, `flattenHeaders`, `authorize` and
54
+ the types `AsyncActivityCallback.Delivery`, `AsyncActivityCallback.Headers`, `AsyncActivityCallback.Json`,
55
+ `AsyncActivityCallback.AuthType`, `AsyncActivityCallback.Authorizer`, `AsyncActivityCallback.Authorizers`.
56
+ `AsyncActivityCallback.authorize(auth, request, authorizers?)` ships `basic`, `header` and
57
+ `bearer`; `hmac` and `jwt` are authorizers the host passes in, so the core does not
58
+ depend on `@t4h.framework/hmac` or `@t4h.framework/jwks`. A declared type without
59
+ a authorizer throws `AsyncActivityCallbackAuthorizerMissingException`; an unknown type throws
60
+ `AsyncActivityCallbackAuthUnsupportedException`.
61
+
62
+ **hmac**: new `@t4h.framework/hmac/callback` entry whose default export is the
63
+ `hmac` callback authorizer, `hmacCallback`.
64
+
65
+ **jwks**: new `@t4h.framework/jwks/callback` entry whose default export is the
66
+ `jwt` callback authorizer, `jwksCallback`.
67
+
68
+ **webhook**: no longer exports `deriveCallbackToken`, `isCallbackTokenValid`,
69
+ `verifyCallbackAuth`, `parseCallbackBody`, `getHeader`, `flattenHeaders` nor
70
+ `CallbackRequest`/`CallbackHeaders`, and no longer depends on `hmac` and `jwks`;
71
+ `WebhookJson` is now an alias of the core `AsyncActivityCallback.Json`. Hosts import the
72
+ helpers from the core `AsyncActivityCallback` namespace and the authorizers from the two entries.
73
+
74
+ **dev**: `@t4h.framework/webhook` becomes an optional peer like the other
75
+ integrations. Only `@t4h.framework/core` is required again, which fixes
76
+ `ERR_MODULE_NOT_FOUND: Cannot find package '@t4h.framework/webhook'` on
77
+ projects that never call `webhook()`. `hmac` and `jwt` callback authorizers are
78
+ loaded from the project when `@t4h.framework/hmac` / `@t4h.framework/jwks` are
79
+ installed; a callback whose declared `auth` needs a missing package answers 500
80
+ naming the package to install.
81
+
3
82
  ## 0.12.0
4
83
 
5
84
  ### Minor Changes
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Tech for humans
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -256,6 +256,83 @@ class WaitForApprovalActivity extends AsyncActivity<
256
256
  }
257
257
  ```
258
258
 
259
+ ### Callbacks (host side)
260
+
261
+ Every pending async activity can be advanced from outside through the host's
262
+ callbacks route (`POST .../activities/:activityId/callbacks?token=…`). The
263
+ route is the host's, but the pieces are core exports so every host behaves the
264
+ same:
265
+
266
+ | Export | What it's for |
267
+ | ------------------------------------------------ | ----------------------------------------------------------------------------- |
268
+ | `AsyncActivityCallback.deriveToken` | `HMAC-SHA256(secret, activityId)` as base64url: the token of a callback URL. |
269
+ | `AsyncActivityCallback.isTokenValid` | Constant-time check of a token against the derived one. |
270
+ | `AsyncActivityCallback.authorize` | Checks a delivery against the `auth` declared in `pending({ auth })`. |
271
+ | `AsyncActivityCallback.parseBody` | Turns content type + raw body into the payload `advance` receives. |
272
+ | `AsyncActivityCallback.getHeader` / `AsyncActivityCallback.flattenHeaders` | Case-insensitive lookup; lower-cased, joined headers for the advance context. |
273
+ | `GetActivityCallbackUrlClaim` | The claim an activity uses to learn its own callback URL. |
274
+
275
+ The namespace also carries the types `AsyncActivityCallback.Delivery`, `AsyncActivityCallback.Headers`,
276
+ `AsyncActivityCallback.Json`, `AsyncActivityCallback.Authorizer` and `AsyncActivityCallback.Authorizers`.
277
+
278
+ `AsyncActivityCallback.authorize` ships `basic`, `header` and `bearer`. `hmac` and `jwt`
279
+ are authorizers the host passes in, so the core never depends on the packages
280
+ that implement them:
281
+
282
+ ```typescript
283
+ import { AsyncActivityCallback } from '@t4h.framework/core'
284
+ import hmac from '@t4h.framework/hmac/callback'
285
+ import jwt from '@t4h.framework/jwks/callback'
286
+
287
+ const ok = await AsyncActivityCallback.authorize(
288
+ pending.auth,
289
+ { method, headers, rawBody },
290
+ { hmac, jwt },
291
+ )
292
+ ```
293
+
294
+ A declared type without a authorizer throws `AsyncActivityCallbackAuthorizerMissingException`.
295
+
296
+ ### Correlating events from a fixed URL
297
+
298
+ Some third parties cannot call a URL handed to them per request: they emit
299
+ every event to one URL configured on their side. For those, the host exposes a
300
+ fixed events route per workflow (`POST .../projects/:projectId/workflows/:workflowId/events`)
301
+ and the activity tells the host how to match an event to a wait:
302
+
303
+ ```typescript
304
+ class TransferTicketActivity extends AsyncActivity<...> {
305
+ public async bootstrap(input: { ticketId: string }) {
306
+ // ...asks the partner to transfer the ticket...
307
+ return this.pending({
308
+ schema,
309
+ correlationKey: input.ticketId,
310
+ auth: { type: 'hmac', secret: input.secret, header: 'x-signature' },
311
+ })
312
+ }
313
+
314
+ public override toCorrelationKey(event: AsyncActivityCallback.Event) {
315
+ const body = event.body as { type?: string; ticket?: { id?: string } }
316
+
317
+ if (body?.type !== 'ticket.transferred') return undefined
318
+
319
+ return body.ticket?.id
320
+ }
321
+
322
+ // toInput, advance, toOutput as usual
323
+ }
324
+ ```
325
+
326
+ On every event the host calls `toCorrelationKey` on each registered activity
327
+ that implements it, then looks up the pending of that activity type waiting on
328
+ the returned key inside the workflow, verifies its `auth` and delivers the
329
+ event as a callback, exactly as the callback URL route would. An event no
330
+ activity claims, or that nothing is waiting for, is accepted and dropped. A key
331
+ must identify one wait: when it matches more than one pending the host refuses
332
+ the event (409) and delivers to none, so compose the key (`ticketId:transferId`)
333
+ when one external id can have several waits. `toCorrelationKey` runs on a bare
334
+ instance, outside any run: no claims, no history, only the event.
335
+
259
336
  ### Activities with Claims (dependencies)
260
337
 
261
338
  A Claim is an abstract dependency that an Activity declares. For example, an activity that saves files declares it needs a "file storage" claim -- it doesn't know whether the implementation uses S3, local disk, or anything else. The runtime must provide a concrete implementation for each declared claim via `ClaimProvider`. This decouples the activity definition from the infrastructure.
package/dist/core.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './activities/StartWorkflowActivity.js';
2
2
  export * from './exceptions/ActivityException.js';
3
+ export * from './exceptions/AsyncActivityCallbackException.js';
3
4
  export * from './exceptions/ClaimException.js';
4
5
  export * from './models/Activity.js';
5
6
  export * from './models/Authorization.js';
@@ -22,6 +23,7 @@ export * from './models/Workflow.js';
22
23
  export * from './models/WorkflowBatchClaim.js';
23
24
  export * from './models/WorkflowBatchRef.js';
24
25
  export * from './models/WorkflowRef.js';
26
+ export * from './tools/AsyncActivityCallback.js';
25
27
  export * from './tools/Internals.js';
26
28
  export * from './typings/PromiseLikeType.js';
27
29
  export * from './typings/Serializable.js';
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAA;AAErD,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAE9C,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,wCAAwC,CAAA;AACtD,cAAc,oCAAoC,CAAA;AAClD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uCAAuC,CAAA;AACrD,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AAEvC,cAAc,sBAAsB,CAAA;AAEpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAA;AAErD,cAAc,mCAAmC,CAAA;AACjD,cAAc,gDAAgD,CAAA;AAC9D,cAAc,gCAAgC,CAAA;AAE9C,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,wCAAwC,CAAA;AACtD,cAAc,oCAAoC,CAAA;AAClD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uCAAuC,CAAA;AACrD,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AAEvC,cAAc,kCAAkC,CAAA;AAChD,cAAc,sBAAsB,CAAA;AAEpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA"}
package/dist/core.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './activities/StartWorkflowActivity.js';
2
2
  export * from './exceptions/ActivityException.js';
3
+ export * from './exceptions/AsyncActivityCallbackException.js';
3
4
  export * from './exceptions/ClaimException.js';
4
5
  export * from './models/Activity.js';
5
6
  export * from './models/Authorization.js';
@@ -22,6 +23,7 @@ export * from './models/Workflow.js';
22
23
  export * from './models/WorkflowBatchClaim.js';
23
24
  export * from './models/WorkflowBatchRef.js';
24
25
  export * from './models/WorkflowRef.js';
26
+ export * from './tools/AsyncActivityCallback.js';
25
27
  export * from './tools/Internals.js';
26
28
  export * from './typings/PromiseLikeType.js';
27
29
  export * from './typings/Serializable.js';
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAA;AAErD,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAE9C,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,wCAAwC,CAAA;AACtD,cAAc,oCAAoC,CAAA;AAClD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uCAAuC,CAAA;AACrD,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AAEvC,cAAc,sBAAsB,CAAA;AAEpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAA;AAErD,cAAc,mCAAmC,CAAA;AACjD,cAAc,gDAAgD,CAAA;AAC9D,cAAc,gCAAgC,CAAA;AAE9C,cAAc,sBAAsB,CAAA;AACpC,cAAc,2BAA2B,CAAA;AACzC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,wCAAwC,CAAA;AACtD,cAAc,oCAAoC,CAAA;AAClD,cAAc,oBAAoB,CAAA;AAClC,cAAc,uCAAuC,CAAA;AACrD,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA;AACpC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AAEvC,cAAc,kCAAkC,CAAA;AAChD,cAAc,sBAAsB,CAAA;AAEpC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,2BAA2B,CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { AsyncActivityCallbackAuth } from '../models/AsyncActivityCallbackAuth.js';
2
+ export declare class AsyncActivityCallbackException extends Error {
3
+ constructor(message: string, options?: ErrorOptions);
4
+ }
5
+ export declare class AsyncActivityCallbackAuthorizerMissingException extends AsyncActivityCallbackException {
6
+ readonly type: AsyncActivityCallbackAuth['type'];
7
+ constructor(type: AsyncActivityCallbackAuth['type']);
8
+ }
9
+ export declare class AsyncActivityCallbackAuthUnsupportedException extends AsyncActivityCallbackException {
10
+ readonly type: string;
11
+ constructor(type: string);
12
+ }
13
+ //# sourceMappingURL=AsyncActivityCallbackException.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncActivityCallbackException.d.ts","sourceRoot":"","sources":["../../src/exceptions/AsyncActivityCallbackException.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AAEvF,qBAAa,8BAA+B,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAG3D;AAED,qBAAa,+CAAgD,SAAQ,8BAA8B;IACjG,SAAgB,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;gBAEpC,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC;CAI3D;AAED,qBAAa,6CAA8C,SAAQ,8BAA8B;IAC/F,SAAgB,IAAI,EAAE,MAAM,CAAA;gBAET,IAAI,EAAE,MAAM;CAIhC"}
@@ -0,0 +1,20 @@
1
+ export class AsyncActivityCallbackException extends Error {
2
+ constructor(message, options) {
3
+ super(message, options);
4
+ }
5
+ }
6
+ export class AsyncActivityCallbackAuthorizerMissingException extends AsyncActivityCallbackException {
7
+ type;
8
+ constructor(type) {
9
+ super(`No authorizer registered for callback auth type "${type}"`);
10
+ this.type = type;
11
+ }
12
+ }
13
+ export class AsyncActivityCallbackAuthUnsupportedException extends AsyncActivityCallbackException {
14
+ type;
15
+ constructor(type) {
16
+ super(`Unsupported callback auth type: ${type}`);
17
+ this.type = type;
18
+ }
19
+ }
20
+ //# sourceMappingURL=AsyncActivityCallbackException.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncActivityCallbackException.js","sourceRoot":"","sources":["../../src/exceptions/AsyncActivityCallbackException.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD,YAAmB,OAAe,EAAE,OAAsB;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACzB,CAAC;CACF;AAED,MAAM,OAAO,+CAAgD,SAAQ,8BAA8B;IACjF,IAAI,CAAmC;IAEvD,YAAmB,IAAuC;QACxD,KAAK,CAAC,oDAAoD,IAAI,GAAG,CAAC,CAAA;QAClE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED,MAAM,OAAO,6CAA8C,SAAQ,8BAA8B;IAC/E,IAAI,CAAQ;IAE5B,YAAmB,IAAY;QAC7B,KAAK,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAA;QAChD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF"}
@@ -2,6 +2,7 @@ import type Type from 'typebox';
2
2
  import { AsyncActivityResultFulfilled, AsyncActivityResultPending, AsyncActivityResultRejected, type AsyncActivityResult, type AsyncActivityResultPendingOptions } from './AsyncActivityAdvanceResult.js';
3
3
  import { AsyncActivityAwaitable } from './AsyncActivityAwaitable.js';
4
4
  import type { IHistoryItemAsync } from './History.js';
5
+ import type { AsyncActivityCallback } from '../tools/AsyncActivityCallback.js';
5
6
  import type { Serializable } from '../typings/Serializable.js';
6
7
  export type AsyncActivityAdvanceContext = {
7
8
  method: string;
@@ -14,6 +15,7 @@ export declare abstract class AsyncActivity<TArgs extends readonly any[], TInput
14
15
  abstract bootstrap(input: TInput): AsyncActivityResult<TBootstrap, TSchema, TSerializableOutput> | Promise<AsyncActivityResult<TBootstrap, TSchema, TSerializableOutput>>;
15
16
  abstract advance(payload: Type.Static<TSchema>, bootstrap: AsyncActivityResultPending, context?: AsyncActivityAdvanceContext): AsyncActivityResult<Serializable, TSchema, TSerializableOutput> | Promise<AsyncActivityResult<Serializable, TSchema, TSerializableOutput>>;
16
17
  abstract toOutput(output: TSerializableOutput, ...args: TArgs): TOutput;
18
+ toCorrelationKey?(event: AsyncActivityCallback.Event): string | undefined | Promise<string | undefined>;
17
19
  onTimeout?(payload: AsyncActivityResultPending): AsyncActivityResult<Serializable, TSchema, TSerializableOutput> | Promise<AsyncActivityResult<Serializable, TSchema, TSerializableOutput>>;
18
20
  protected pending(options?: AsyncActivityResultPendingOptions<TBootstrap, TSchema>): AsyncActivityResultPending<TBootstrap, TSchema>;
19
21
  protected done(payload?: TSerializableOutput): AsyncActivityResultFulfilled<TSerializableOutput | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncActivity.d.ts","sourceRoot":"","sources":["../../src/models/AsyncActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAA;AAE/B,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,mBAAmB,EACxB,KAAK,iCAAiC,EACvC,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAC1C,SAAS,GAAG,EAAE,EACd,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,CACJ,CAAA;AAED,8BAAsB,aAAa,CACjC,KAAK,SAAS,SAAS,GAAG,EAAE,EAC5B,MAAM,SAAS,YAAY,EAC3B,mBAAmB,SAAS,YAAY,GAAG,IAAI,EAC/C,OAAO,EACP,UAAU,SAAS,YAAY,EAC/B,OAAO,SAAS,IAAI,CAAC,OAAO;IAErB,EAAE,EAAG,MAAM,CAAA;aAEF,OAAO,CAAC,GAAG,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAEjD,SAAS,CACvB,KAAK,EAAE,MAAM,GAEX,mBAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,mBAAmB,CAAC,GAC7D,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;aAE1D,OAAO,CACrB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAC7B,SAAS,EAAE,0BAA0B,EACrC,OAAO,CAAC,EAAE,2BAA2B,GAEnC,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,mBAAmB,CAAC,GAC/D,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;aAE5D,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,EAAE,KAAK,GAAG,OAAO;IAEvE,SAAS,CAAC,CAEf,OAAO,EAAE,0BAA0B,GAEjC,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,mBAAmB,CAAC,GAC/D,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAM5E,SAAS,CAAC,OAAO,CACf,OAAO,CAAC,EAAE,iCAAiC,CAAC,UAAU,EAAE,OAAO,CAAC;IAKlE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,mBAAmB;IAI5C,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAIzC,WAAW,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE;CAGjE"}
1
+ {"version":3,"file":"AsyncActivity.d.ts","sourceRoot":"","sources":["../../src/models/AsyncActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAA;AAE/B,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,mBAAmB,EACxB,KAAK,iCAAiC,EACvC,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAC1C,SAAS,GAAG,EAAE,EACd,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,CACJ,CAAA;AAED,8BAAsB,aAAa,CACjC,KAAK,SAAS,SAAS,GAAG,EAAE,EAC5B,MAAM,SAAS,YAAY,EAC3B,mBAAmB,SAAS,YAAY,GAAG,IAAI,EAC/C,OAAO,EACP,UAAU,SAAS,YAAY,EAC/B,OAAO,SAAS,IAAI,CAAC,OAAO;IAErB,EAAE,EAAG,MAAM,CAAA;aAEF,OAAO,CAAC,GAAG,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAEjD,SAAS,CACvB,KAAK,EAAE,MAAM,GAEX,mBAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,mBAAmB,CAAC,GAC7D,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;aAE1D,OAAO,CACrB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAC7B,SAAS,EAAE,0BAA0B,EACrC,OAAO,CAAC,EAAE,2BAA2B,GAEnC,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,mBAAmB,CAAC,GAC/D,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;aAE5D,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,EAAE,KAAK,GAAG,OAAO;IACvE,gBAAgB,CAAC,CACtB,KAAK,EAAE,qBAAqB,CAAC,KAAK,GACjC,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAE5C,SAAS,CAAC,CAEf,OAAO,EAAE,0BAA0B,GAEjC,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,mBAAmB,CAAC,GAC/D,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAM5E,SAAS,CAAC,OAAO,CACf,OAAO,CAAC,EAAE,iCAAiC,CAAC,UAAU,EAAE,OAAO,CAAC;IAKlE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,mBAAmB;IAI5C,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAIzC,WAAW,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE;CAGjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncActivity.js","sourceRoot":"","sources":["../../src/models/AsyncActivity.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAG5B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAkBpE,MAAM,OAAgB,aAAa;IAQ1B,EAAE,CAAS;IAoBX,SAAS;IACd,6DAA6D;IAC7D,OAAmC;QAInC,OAAO,IAAI,CAAC,QAAQ,CAAC;YACnB,MAAM,EAAE,SAAS;SAClB,CAAC,CAAA;IACJ,CAAC;IAES,OAAO,CACf,OAAgE;QAEhE,OAAO,IAAI,0BAA0B,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAES,IAAI,CAAC,OAA6B;QAC1C,OAAO,IAAI,4BAA4B,CAAC,OAAO,CAAC,CAAA;IAClD,CAAC;IAES,QAAQ,CAAC,OAA6B;QAC9C,OAAO,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAA;IACjD,CAAC;IAEM,WAAW,CAAC,IAAuB,EAAE,IAAoB;QAC9D,OAAO,IAAI,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IACrD,CAAC;CACF"}
1
+ {"version":3,"file":"AsyncActivity.js","sourceRoot":"","sources":["../../src/models/AsyncActivity.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAG5B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAmBpE,MAAM,OAAgB,aAAa;IAQ1B,EAAE,CAAS;IAuBX,SAAS;IACd,6DAA6D;IAC7D,OAAmC;QAInC,OAAO,IAAI,CAAC,QAAQ,CAAC;YACnB,MAAM,EAAE,SAAS;SAClB,CAAC,CAAA;IACJ,CAAC;IAES,OAAO,CACf,OAAgE;QAEhE,OAAO,IAAI,0BAA0B,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAES,IAAI,CAAC,OAA6B;QAC1C,OAAO,IAAI,4BAA4B,CAAC,OAAO,CAAC,CAAA;IAClD,CAAC;IAES,QAAQ,CAAC,OAA6B;QAC9C,OAAO,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAA;IACjD,CAAC;IAEM,WAAW,CAAC,IAAuB,EAAE,IAAoB;QAC9D,OAAO,IAAI,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IACrD,CAAC;CACF"}
@@ -6,6 +6,7 @@ export interface AsyncActivityResultPendingOptions<TPayload extends Serializable
6
6
  schema?: TSchema;
7
7
  timeoutAt?: Date | undefined;
8
8
  auth?: AsyncActivityCallbackAuth;
9
+ correlationKey?: string;
9
10
  }
10
11
  export type AsyncActivityResult<P extends Serializable, S extends Type.TSchema, O extends Serializable | void> = AsyncActivityResultPending<P, S> | AsyncActivityResultFulfilled<O> | AsyncActivityResultRejected<Serializable | void>;
11
12
  export declare class AsyncActivityResultPending<TPayload extends Serializable = Serializable, TSchema extends Type.TSchema = Type.TSchema> {
@@ -13,7 +14,8 @@ export declare class AsyncActivityResultPending<TPayload extends Serializable =
13
14
  readonly schema?: TSchema;
14
15
  readonly timeoutAt?: Date | undefined;
15
16
  readonly auth?: AsyncActivityCallbackAuth;
16
- constructor({ payload, schema, timeoutAt, auth, }?: AsyncActivityResultPendingOptions<TPayload, TSchema>);
17
+ readonly correlationKey?: string;
18
+ constructor({ payload, schema, timeoutAt, auth, correlationKey, }?: AsyncActivityResultPendingOptions<TPayload, TSchema>);
17
19
  }
18
20
  export declare class AsyncActivityResultFulfilled<T extends Serializable | void = void> {
19
21
  readonly payload: T;
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncActivityAdvanceResult.d.ts","sourceRoot":"","sources":["../../src/models/AsyncActivityAdvanceResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAA;AAE/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,WAAW,iCAAiC,CAChD,QAAQ,SAAS,YAAY,GAAG,YAAY,EAC5C,OAAO,SAAS,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;IAE3C,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;IAC5B,IAAI,CAAC,EAAE,yBAAyB,CAAA;CACjC;AAED,MAAM,MAAM,mBAAmB,CAC7B,CAAC,SAAS,YAAY,EACtB,CAAC,SAAS,IAAI,CAAC,OAAO,EACtB,CAAC,SAAS,YAAY,GAAG,IAAI,IAE3B,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,GAChC,4BAA4B,CAAC,CAAC,CAAC,GAC/B,2BAA2B,CAAC,YAAY,GAAG,IAAI,CAAC,CAAA;AAEpD,qBAAa,0BAA0B,CACrC,QAAQ,SAAS,YAAY,GAAG,YAAY,EAC5C,OAAO,SAAS,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;IAE3C,SAAgB,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClC,SAAgB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChC,SAAgB,SAAS,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;IAC5C,SAAgB,IAAI,CAAC,EAAE,yBAAyB,CAAA;gBAEpC,EACV,OAAO,EACP,MAAM,EACN,SAAS,EACT,IAAI,GACL,GAAE,iCAAiC,CAAC,QAAQ,EAAE,OAAO,CAAM;CAM7D;AAED,qBAAa,4BAA4B,CACvC,CAAC,SAAS,YAAY,GAAG,IAAI,GAAG,IAAI;aAER,OAAO,EAAE,CAAC;gBAAV,OAAO,EAAE,CAAC;CACvC;AAED,qBAAa,2BAA2B,CAAC,CAAC,SAAS,YAAY,GAAG,IAAI,GAAG,IAAI;aAC/C,OAAO,EAAE,CAAC;gBAAV,OAAO,EAAE,CAAC;CACvC"}
1
+ {"version":3,"file":"AsyncActivityAdvanceResult.d.ts","sourceRoot":"","sources":["../../src/models/AsyncActivityAdvanceResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAA;AAE/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,WAAW,iCAAiC,CAChD,QAAQ,SAAS,YAAY,GAAG,YAAY,EAC5C,OAAO,SAAS,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;IAE3C,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;IAC5B,IAAI,CAAC,EAAE,yBAAyB,CAAA;IAChC,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,MAAM,mBAAmB,CAC7B,CAAC,SAAS,YAAY,EACtB,CAAC,SAAS,IAAI,CAAC,OAAO,EACtB,CAAC,SAAS,YAAY,GAAG,IAAI,IAE3B,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,GAChC,4BAA4B,CAAC,CAAC,CAAC,GAC/B,2BAA2B,CAAC,YAAY,GAAG,IAAI,CAAC,CAAA;AAEpD,qBAAa,0BAA0B,CACrC,QAAQ,SAAS,YAAY,GAAG,YAAY,EAC5C,OAAO,SAAS,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;IAE3C,SAAgB,OAAO,CAAC,EAAE,QAAQ,CAAA;IAClC,SAAgB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChC,SAAgB,SAAS,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;IAC5C,SAAgB,IAAI,CAAC,EAAE,yBAAyB,CAAA;IAChD,SAAgB,cAAc,CAAC,EAAE,MAAM,CAAA;gBAE3B,EACV,OAAO,EACP,MAAM,EACN,SAAS,EACT,IAAI,EACJ,cAAc,GACf,GAAE,iCAAiC,CAAC,QAAQ,EAAE,OAAO,CAAM;CAO7D;AAED,qBAAa,4BAA4B,CACvC,CAAC,SAAS,YAAY,GAAG,IAAI,GAAG,IAAI;aAER,OAAO,EAAE,CAAC;gBAAV,OAAO,EAAE,CAAC;CACvC;AAED,qBAAa,2BAA2B,CAAC,CAAC,SAAS,YAAY,GAAG,IAAI,GAAG,IAAI;aAC/C,OAAO,EAAE,CAAC;gBAAV,OAAO,EAAE,CAAC;CACvC"}
@@ -3,11 +3,13 @@ export class AsyncActivityResultPending {
3
3
  schema;
4
4
  timeoutAt;
5
5
  auth;
6
- constructor({ payload, schema, timeoutAt, auth, } = {}) {
6
+ correlationKey;
7
+ constructor({ payload, schema, timeoutAt, auth, correlationKey, } = {}) {
7
8
  this.payload = payload;
8
9
  this.schema = schema;
9
10
  this.timeoutAt = timeoutAt;
10
11
  this.auth = auth;
12
+ this.correlationKey = correlationKey;
11
13
  }
12
14
  }
13
15
  export class AsyncActivityResultFulfilled {
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncActivityAdvanceResult.js","sourceRoot":"","sources":["../../src/models/AsyncActivityAdvanceResult.ts"],"names":[],"mappings":"AAwBA,MAAM,OAAO,0BAA0B;IAIrB,OAAO,CAAW;IAClB,MAAM,CAAU;IAChB,SAAS,CAAmB;IAC5B,IAAI,CAA4B;IAEhD,YAAY,EACV,OAAO,EACP,MAAM,EACN,SAAS,EACT,IAAI,MACoD,EAAE;QAC1D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED,MAAM,OAAO,4BAA4B;IAGX;IAA5B,YAA4B,OAAU;QAAV,YAAO,GAAP,OAAO,CAAG;IAAG,CAAC;CAC3C;AAED,MAAM,OAAO,2BAA2B;IACV;IAA5B,YAA4B,OAAU;QAAV,YAAO,GAAP,OAAO,CAAG;IAAG,CAAC;CAC3C"}
1
+ {"version":3,"file":"AsyncActivityAdvanceResult.js","sourceRoot":"","sources":["../../src/models/AsyncActivityAdvanceResult.ts"],"names":[],"mappings":"AAyBA,MAAM,OAAO,0BAA0B;IAIrB,OAAO,CAAW;IAClB,MAAM,CAAU;IAChB,SAAS,CAAmB;IAC5B,IAAI,CAA4B;IAChC,cAAc,CAAS;IAEvC,YAAY,EACV,OAAO,EACP,MAAM,EACN,SAAS,EACT,IAAI,EACJ,cAAc,MAC0C,EAAE;QAC1D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;IACtC,CAAC;CACF;AAED,MAAM,OAAO,4BAA4B;IAGX;IAA5B,YAA4B,OAAU;QAAV,YAAO,GAAP,OAAO,CAAG;IAAG,CAAC;CAC3C;AAED,MAAM,OAAO,2BAA2B;IACV;IAA5B,YAA4B,OAAU;QAAV,YAAO,GAAP,OAAO,CAAG;IAAG,CAAC;CAC3C"}
@@ -32,5 +32,19 @@ export type AsyncActivityCallbackAuthJwt = {
32
32
  audience?: string;
33
33
  header?: string;
34
34
  };
35
- export type AsyncActivityCallbackAuth = AsyncActivityCallbackAuthHmac | AsyncActivityCallbackAuthBasic | AsyncActivityCallbackAuthHeader | AsyncActivityCallbackAuthBearer | AsyncActivityCallbackAuthJwt;
35
+ export type AsyncActivityCallbackAuthJwks = {
36
+ type: 'jwks';
37
+ jwksUri: string;
38
+ header: string;
39
+ kid?: string;
40
+ kidHeader?: string;
41
+ algorithm?: string;
42
+ algorithmHeader?: string;
43
+ signatureFormat?: string;
44
+ signatureFormatHeader?: string;
45
+ timestampHeader?: string;
46
+ toleranceInSeconds?: number;
47
+ signedPayload?: string;
48
+ };
49
+ export type AsyncActivityCallbackAuth = AsyncActivityCallbackAuthHmac | AsyncActivityCallbackAuthBasic | AsyncActivityCallbackAuthHeader | AsyncActivityCallbackAuthBearer | AsyncActivityCallbackAuthJwt | AsyncActivityCallbackAuthJwks;
36
50
  //# sourceMappingURL=AsyncActivityCallbackAuth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AsyncActivityCallbackAuth.d.ts","sourceRoot":"","sources":["../../src/models/AsyncActivityCallbackAuth.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sCAAsC,GAC9C,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,QAAQ,CAAA;AAEZ,MAAM,MAAM,4CAA4C,GACpD,KAAK,GACL,QAAQ,GACR,WAAW,CAAA;AAEf,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,sCAAsC,CAAA;IAClD,eAAe,CAAC,EAAE,4CAA4C,CAAA;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG;IAC3C,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,KAAK,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,yBAAyB,GACjC,6BAA6B,GAC7B,8BAA8B,GAC9B,+BAA+B,GAC/B,+BAA+B,GAC/B,4BAA4B,CAAA"}
1
+ {"version":3,"file":"AsyncActivityCallbackAuth.d.ts","sourceRoot":"","sources":["../../src/models/AsyncActivityCallbackAuth.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sCAAsC,GAC9C,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,QAAQ,CAAA;AAEZ,MAAM,MAAM,4CAA4C,GACpD,KAAK,GACL,QAAQ,GACR,WAAW,CAAA;AAEf,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,sCAAsC,CAAA;IAClD,eAAe,CAAC,EAAE,4CAA4C,CAAA;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG;IAC3C,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,+BAA+B,GAAG;IAC5C,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,KAAK,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,yBAAyB,GACjC,6BAA6B,GAC7B,8BAA8B,GAC9B,+BAA+B,GAC/B,+BAA+B,GAC/B,4BAA4B,GAC5B,6BAA6B,CAAA"}
@@ -0,0 +1,32 @@
1
+ import type { AsyncActivityCallbackAuth } from '../models/AsyncActivityCallbackAuth.js';
2
+ export declare namespace AsyncActivityCallback {
3
+ type Headers = Record<string, string | string[] | undefined>;
4
+ interface Delivery {
5
+ method: string;
6
+ headers: Headers;
7
+ rawBody: string;
8
+ }
9
+ type Json = string | number | boolean | null | readonly Json[] | {
10
+ readonly [key: string]: Json | undefined;
11
+ };
12
+ interface Event {
13
+ method: string;
14
+ headers: Record<string, string>;
15
+ body: Json | undefined;
16
+ rawBody: string;
17
+ }
18
+ type AuthType = AsyncActivityCallbackAuth['type'];
19
+ type Authorizer<TAuth extends AsyncActivityCallbackAuth = AsyncActivityCallbackAuth> = (auth: TAuth, delivery: Delivery) => boolean | Promise<boolean>;
20
+ type Authorizers = {
21
+ [TAuth in AsyncActivityCallbackAuth as TAuth['type']]?: Authorizer<TAuth>;
22
+ };
23
+ function deriveToken(secret: string, activityId: string): string;
24
+ function isTokenValid(secret: string, activityId: string, token: string): boolean;
25
+ function getHeader(headers: Headers, name: string): string | undefined;
26
+ function getBearerToken(headers: Headers, name?: string): string | undefined;
27
+ function flattenHeaders(headers: Headers): Record<string, string>;
28
+ function parseBody(contentType: string | undefined, rawBody: string): Json | undefined;
29
+ function toEvent(delivery: Delivery): Event;
30
+ function authorize(auth: AsyncActivityCallbackAuth | undefined, delivery: Delivery, authorizers?: Authorizers): Promise<boolean>;
31
+ }
32
+ //# sourceMappingURL=AsyncActivityCallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncActivityCallback.d.ts","sourceRoot":"","sources":["../../src/tools/AsyncActivityCallback.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,yBAAyB,EAI1B,MAAM,wCAAwC,CAAA;AAE/C,yBAAiB,qBAAqB,CAAC;IACrC,KAAY,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;IAEnE,UAAiB,QAAQ;QACvB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;KAChB;IAED,KAAY,IAAI,GACZ,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,IAAI,EAAE,GACf;QAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAA;IAEhD,UAAiB,KAAK;QACpB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC/B,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;QACtB,OAAO,EAAE,MAAM,CAAA;KAChB;IAED,KAAY,QAAQ,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAExD,KAAY,UAAU,CACpB,KAAK,SAAS,yBAAyB,GAAG,yBAAyB,IACjE,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAEnE,KAAY,WAAW,GAAG;SACvB,KAAK,IAAI,yBAAyB,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC;KAC1E,CAAA;IAED,SAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAK7D;IAED,SAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,WASd;IAED,SAAgB,SAAS,CACvB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,SAAS,CAYpB;IAID,SAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,IAAI,SAAkB,GACrB,MAAM,GAAG,SAAS,CAMpB;IAED,SAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYvE;IAMD,SAAgB,SAAS,CACvB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,MAAM,GACd,IAAI,GAAG,SAAS,CA2BlB;IAED,SAAgB,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CASjD;IA+DD,SAAsB,SAAS,CAC7B,IAAI,EAAE,yBAAyB,GAAG,SAAS,EAC3C,QAAQ,EAAE,QAAQ,EAClB,WAAW,GAAE,WAAgB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAkBlB;CACF"}
@@ -0,0 +1,138 @@
1
+ import crypto from 'node:crypto';
2
+ import { AsyncActivityCallbackAuthUnsupportedException, AsyncActivityCallbackAuthorizerMissingException, } from '../exceptions/AsyncActivityCallbackException.js';
3
+ export var AsyncActivityCallback;
4
+ (function (AsyncActivityCallback) {
5
+ function deriveToken(secret, activityId) {
6
+ return crypto
7
+ .createHmac('sha256', secret)
8
+ .update(activityId)
9
+ .digest('base64url');
10
+ }
11
+ AsyncActivityCallback.deriveToken = deriveToken;
12
+ function isTokenValid(secret, activityId, token) {
13
+ const expected = Buffer.from(deriveToken(secret, activityId));
14
+ const candidate = Buffer.from(token);
15
+ return (expected.length === candidate.length &&
16
+ crypto.timingSafeEqual(expected, candidate));
17
+ }
18
+ AsyncActivityCallback.isTokenValid = isTokenValid;
19
+ function getHeader(headers, name) {
20
+ const wanted = name.toLowerCase();
21
+ for (const [key, value] of Object.entries(headers)) {
22
+ if (key.toLowerCase() !== wanted)
23
+ continue;
24
+ if (Array.isArray(value))
25
+ return value[0];
26
+ return value;
27
+ }
28
+ return undefined;
29
+ }
30
+ AsyncActivityCallback.getHeader = getHeader;
31
+ const BEARER = /^Bearer\s+(.+)$/i;
32
+ function getBearerToken(headers, name = 'authorization') {
33
+ const value = getHeader(headers, name);
34
+ if (!value)
35
+ return undefined;
36
+ return BEARER.exec(value)?.[1]?.trim();
37
+ }
38
+ AsyncActivityCallback.getBearerToken = getBearerToken;
39
+ function flattenHeaders(headers) {
40
+ const result = {};
41
+ for (const [name, value] of Object.entries(headers)) {
42
+ if (value === undefined)
43
+ continue;
44
+ result[name.toLowerCase()] = Array.isArray(value)
45
+ ? value.join(', ')
46
+ : value;
47
+ }
48
+ return result;
49
+ }
50
+ AsyncActivityCallback.flattenHeaders = flattenHeaders;
51
+ const JSON_CONTENT_TYPE = /^application\/([\w.-]+\+)?json$/i;
52
+ const FORM_CONTENT_TYPE = 'application/x-www-form-urlencoded';
53
+ function parseBody(contentType, rawBody) {
54
+ if (!rawBody.length)
55
+ return undefined;
56
+ const type = contentType?.split(';')[0]?.trim().toLowerCase() ?? '';
57
+ if (JSON_CONTENT_TYPE.test(type))
58
+ try {
59
+ return JSON.parse(rawBody);
60
+ }
61
+ catch {
62
+ return rawBody;
63
+ }
64
+ if (type === FORM_CONTENT_TYPE) {
65
+ const params = new URLSearchParams(rawBody);
66
+ const result = {};
67
+ for (const key of new Set(params.keys())) {
68
+ const values = params.getAll(key);
69
+ result[key] = values.length === 1 ? values[0] : values;
70
+ }
71
+ return result;
72
+ }
73
+ return rawBody;
74
+ }
75
+ AsyncActivityCallback.parseBody = parseBody;
76
+ function toEvent(delivery) {
77
+ const headers = flattenHeaders(delivery.headers);
78
+ return {
79
+ method: delivery.method,
80
+ headers,
81
+ body: parseBody(headers['content-type'], delivery.rawBody),
82
+ rawBody: delivery.rawBody,
83
+ };
84
+ }
85
+ AsyncActivityCallback.toEvent = toEvent;
86
+ function timingSafeEqualString(expected, candidate) {
87
+ const a = Buffer.from(expected, 'utf8');
88
+ const b = Buffer.from(candidate, 'utf8');
89
+ if (a.length !== b.length)
90
+ return false;
91
+ return crypto.timingSafeEqual(a, b);
92
+ }
93
+ function verifyBasic(auth, delivery) {
94
+ const value = getHeader(delivery.headers, 'authorization');
95
+ if (!value)
96
+ return false;
97
+ const expected = `Basic ${Buffer.from(`${auth.username}:${auth.password}`).toString('base64')}`;
98
+ return timingSafeEqualString(expected, value);
99
+ }
100
+ function verifyHeader(auth, delivery) {
101
+ const value = getHeader(delivery.headers, auth.name);
102
+ if (!value)
103
+ return false;
104
+ return timingSafeEqualString(auth.value, value);
105
+ }
106
+ function verifyBearer(auth, delivery) {
107
+ const token = getBearerToken(delivery.headers);
108
+ if (!token)
109
+ return false;
110
+ return timingSafeEqualString(auth.token, token);
111
+ }
112
+ const KNOWN_TYPES = [
113
+ 'hmac',
114
+ 'basic',
115
+ 'header',
116
+ 'bearer',
117
+ 'jwt',
118
+ 'jwks',
119
+ ];
120
+ const BUILT_IN = {
121
+ basic: verifyBasic,
122
+ header: verifyHeader,
123
+ bearer: verifyBearer,
124
+ };
125
+ async function authorize(auth, delivery, authorizers = {}) {
126
+ if (!auth)
127
+ return true;
128
+ const type = auth.type;
129
+ if (typeof type !== 'string' || !KNOWN_TYPES.includes(type))
130
+ throw new AsyncActivityCallbackAuthUnsupportedException(String(type));
131
+ const authorizer = { ...BUILT_IN, ...authorizers }[type];
132
+ if (!authorizer)
133
+ throw new AsyncActivityCallbackAuthorizerMissingException(type);
134
+ return authorizer(auth, delivery);
135
+ }
136
+ AsyncActivityCallback.authorize = authorize;
137
+ })(AsyncActivityCallback || (AsyncActivityCallback = {}));
138
+ //# sourceMappingURL=AsyncActivityCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncActivityCallback.js","sourceRoot":"","sources":["../../src/tools/AsyncActivityCallback.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t4h.framework/core",
3
- "version": "0.12.0",
3
+ "version": "0.14.0",
4
4
  "description": "Core module for the T4H Framework",
5
5
  "homepage": "https://github.com/tech4humans-brasil/framework/tree/main/packages/core",
6
6
  "bugs": "https://github.com/tech4humans-brasil/framework/issues",