@nwire/forge 0.7.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/LICENSE +21 -0
- package/README.md +77 -0
- package/dist/__tests__/actor-methods.test.d.ts +9 -0
- package/dist/__tests__/actor-methods.test.d.ts.map +1 -0
- package/dist/__tests__/actor-methods.test.js +210 -0
- package/dist/__tests__/actor-methods.test.js.map +1 -0
- package/dist/__tests__/actor-schema-bound.test.d.ts +6 -0
- package/dist/__tests__/actor-schema-bound.test.d.ts.map +1 -0
- package/dist/__tests__/actor-schema-bound.test.js +112 -0
- package/dist/__tests__/actor-schema-bound.test.js.map +1 -0
- package/dist/__tests__/app-capabilities.test.d.ts +19 -0
- package/dist/__tests__/app-capabilities.test.d.ts.map +1 -0
- package/dist/__tests__/app-capabilities.test.js +57 -0
- package/dist/__tests__/app-capabilities.test.js.map +1 -0
- package/dist/__tests__/cli-runner.test.d.ts +6 -0
- package/dist/__tests__/cli-runner.test.d.ts.map +1 -0
- package/dist/__tests__/cli-runner.test.js +158 -0
- package/dist/__tests__/cli-runner.test.js.map +1 -0
- package/dist/__tests__/create-app.test.d.ts +18 -0
- package/dist/__tests__/create-app.test.d.ts.map +1 -0
- package/dist/__tests__/create-app.test.js +189 -0
- package/dist/__tests__/create-app.test.js.map +1 -0
- package/dist/__tests__/cross-service-bus.test.d.ts +8 -0
- package/dist/__tests__/cross-service-bus.test.d.ts.map +1 -0
- package/dist/__tests__/cross-service-bus.test.js +139 -0
- package/dist/__tests__/cross-service-bus.test.js.map +1 -0
- package/dist/__tests__/define-schema.test.d.ts +5 -0
- package/dist/__tests__/define-schema.test.d.ts.map +1 -0
- package/dist/__tests__/define-schema.test.js +83 -0
- package/dist/__tests__/define-schema.test.js.map +1 -0
- package/dist/__tests__/dev-logger.test.d.ts +9 -0
- package/dist/__tests__/dev-logger.test.d.ts.map +1 -0
- package/dist/__tests__/dev-logger.test.js +126 -0
- package/dist/__tests__/dev-logger.test.js.map +1 -0
- package/dist/__tests__/external-call.test.d.ts +14 -0
- package/dist/__tests__/external-call.test.d.ts.map +1 -0
- package/dist/__tests__/external-call.test.js +99 -0
- package/dist/__tests__/external-call.test.js.map +1 -0
- package/dist/__tests__/framework-events.test.d.ts +13 -0
- package/dist/__tests__/framework-events.test.d.ts.map +1 -0
- package/dist/__tests__/framework-events.test.js +204 -0
- package/dist/__tests__/framework-events.test.js.map +1 -0
- package/dist/__tests__/inline-handler.test.d.ts +8 -0
- package/dist/__tests__/inline-handler.test.d.ts.map +1 -0
- package/dist/__tests__/inline-handler.test.js +101 -0
- package/dist/__tests__/inline-handler.test.js.map +1 -0
- package/dist/__tests__/lifecycle-logging.test.d.ts +12 -0
- package/dist/__tests__/lifecycle-logging.test.d.ts.map +1 -0
- package/dist/__tests__/lifecycle-logging.test.js +112 -0
- package/dist/__tests__/lifecycle-logging.test.js.map +1 -0
- package/dist/__tests__/middleware.test.d.ts +7 -0
- package/dist/__tests__/middleware.test.d.ts.map +1 -0
- package/dist/__tests__/middleware.test.js +109 -0
- package/dist/__tests__/middleware.test.js.map +1 -0
- package/dist/__tests__/module-needs.test.d.ts +10 -0
- package/dist/__tests__/module-needs.test.d.ts.map +1 -0
- package/dist/__tests__/module-needs.test.js +77 -0
- package/dist/__tests__/module-needs.test.js.map +1 -0
- package/dist/__tests__/module-topo-sort.test.d.ts +15 -0
- package/dist/__tests__/module-topo-sort.test.d.ts.map +1 -0
- package/dist/__tests__/module-topo-sort.test.js +105 -0
- package/dist/__tests__/module-topo-sort.test.js.map +1 -0
- package/dist/__tests__/multi-tenancy.test.d.ts +10 -0
- package/dist/__tests__/multi-tenancy.test.d.ts.map +1 -0
- package/dist/__tests__/multi-tenancy.test.js +122 -0
- package/dist/__tests__/multi-tenancy.test.js.map +1 -0
- package/dist/__tests__/needs-topology.test.d.ts +11 -0
- package/dist/__tests__/needs-topology.test.d.ts.map +1 -0
- package/dist/__tests__/needs-topology.test.js +82 -0
- package/dist/__tests__/needs-topology.test.js.map +1 -0
- package/dist/__tests__/plugin-closure.test.d.ts +15 -0
- package/dist/__tests__/plugin-closure.test.d.ts.map +1 -0
- package/dist/__tests__/plugin-closure.test.js +140 -0
- package/dist/__tests__/plugin-closure.test.js.map +1 -0
- package/dist/__tests__/plugin.test.d.ts +10 -0
- package/dist/__tests__/plugin.test.d.ts.map +1 -0
- package/dist/__tests__/plugin.test.js +225 -0
- package/dist/__tests__/plugin.test.js.map +1 -0
- package/dist/__tests__/primitives.test.d.ts +9 -0
- package/dist/__tests__/primitives.test.d.ts.map +1 -0
- package/dist/__tests__/primitives.test.js +434 -0
- package/dist/__tests__/primitives.test.js.map +1 -0
- package/dist/__tests__/production-readiness.test.d.ts +22 -0
- package/dist/__tests__/production-readiness.test.d.ts.map +1 -0
- package/dist/__tests__/production-readiness.test.js +196 -0
- package/dist/__tests__/production-readiness.test.js.map +1 -0
- package/dist/__tests__/provider.test.d.ts +6 -0
- package/dist/__tests__/provider.test.d.ts.map +1 -0
- package/dist/__tests__/provider.test.js +122 -0
- package/dist/__tests__/provider.test.js.map +1 -0
- package/dist/__tests__/public-marker.test.d.ts +7 -0
- package/dist/__tests__/public-marker.test.d.ts.map +1 -0
- package/dist/__tests__/public-marker.test.js +54 -0
- package/dist/__tests__/public-marker.test.js.map +1 -0
- package/dist/__tests__/retry-dlq.test.d.ts +6 -0
- package/dist/__tests__/retry-dlq.test.d.ts.map +1 -0
- package/dist/__tests__/retry-dlq.test.js +68 -0
- package/dist/__tests__/retry-dlq.test.js.map +1 -0
- package/dist/__tests__/validate.test.d.ts +5 -0
- package/dist/__tests__/validate.test.d.ts.map +1 -0
- package/dist/__tests__/validate.test.js +53 -0
- package/dist/__tests__/validate.test.js.map +1 -0
- package/dist/__tests__/workflow-saga.test.d.ts +7 -0
- package/dist/__tests__/workflow-saga.test.d.ts.map +1 -0
- package/dist/__tests__/workflow-saga.test.js +239 -0
- package/dist/__tests__/workflow-saga.test.js.map +1 -0
- package/dist/actor-store.d.ts +83 -0
- package/dist/actor-store.d.ts.map +1 -0
- package/dist/actor-store.js +85 -0
- package/dist/actor-store.js.map +1 -0
- package/dist/cli-runner.d.ts +46 -0
- package/dist/cli-runner.d.ts.map +1 -0
- package/dist/cli-runner.js +164 -0
- package/dist/cli-runner.js.map +1 -0
- package/dist/create-app.d.ts +131 -0
- package/dist/create-app.d.ts.map +1 -0
- package/dist/create-app.js +593 -0
- package/dist/create-app.js.map +1 -0
- package/dist/define-action.d.ts +148 -0
- package/dist/define-action.d.ts.map +1 -0
- package/dist/define-action.js +52 -0
- package/dist/define-action.js.map +1 -0
- package/dist/define-actor.d.ts +302 -0
- package/dist/define-actor.d.ts.map +1 -0
- package/dist/define-actor.js +294 -0
- package/dist/define-actor.js.map +1 -0
- package/dist/define-app.d.ts +104 -0
- package/dist/define-app.d.ts.map +1 -0
- package/dist/define-app.js +49 -0
- package/dist/define-app.js.map +1 -0
- package/dist/define-cron.d.ts +50 -0
- package/dist/define-cron.d.ts.map +1 -0
- package/dist/define-cron.js +34 -0
- package/dist/define-cron.js.map +1 -0
- package/dist/define-error.d.ts +10 -0
- package/dist/define-error.d.ts.map +1 -0
- package/dist/define-error.js +10 -0
- package/dist/define-error.js.map +1 -0
- package/dist/define-external-call.d.ts +85 -0
- package/dist/define-external-call.d.ts.map +1 -0
- package/dist/define-external-call.js +38 -0
- package/dist/define-external-call.js.map +1 -0
- package/dist/define-handler.d.ts +98 -0
- package/dist/define-handler.d.ts.map +1 -0
- package/dist/define-handler.js +29 -0
- package/dist/define-handler.js.map +1 -0
- package/dist/define-inbound-webhook.d.ts +82 -0
- package/dist/define-inbound-webhook.d.ts.map +1 -0
- package/dist/define-inbound-webhook.js +42 -0
- package/dist/define-inbound-webhook.js.map +1 -0
- package/dist/define-inbox.d.ts +40 -0
- package/dist/define-inbox.d.ts.map +1 -0
- package/dist/define-inbox.js +31 -0
- package/dist/define-inbox.js.map +1 -0
- package/dist/define-initializer.d.ts +54 -0
- package/dist/define-initializer.d.ts.map +1 -0
- package/dist/define-initializer.js +38 -0
- package/dist/define-initializer.js.map +1 -0
- package/dist/define-middleware.d.ts +8 -0
- package/dist/define-middleware.d.ts.map +1 -0
- package/dist/define-middleware.js +8 -0
- package/dist/define-middleware.js.map +1 -0
- package/dist/define-model.d.ts +10 -0
- package/dist/define-model.d.ts.map +1 -0
- package/dist/define-model.js +13 -0
- package/dist/define-model.js.map +1 -0
- package/dist/define-module.d.ts +157 -0
- package/dist/define-module.d.ts.map +1 -0
- package/dist/define-module.js +60 -0
- package/dist/define-module.js.map +1 -0
- package/dist/define-outbox.d.ts +47 -0
- package/dist/define-outbox.d.ts.map +1 -0
- package/dist/define-outbox.js +36 -0
- package/dist/define-outbox.js.map +1 -0
- package/dist/define-plugin.d.ts +171 -0
- package/dist/define-plugin.d.ts.map +1 -0
- package/dist/define-plugin.js +134 -0
- package/dist/define-plugin.js.map +1 -0
- package/dist/define-projection.d.ts +56 -0
- package/dist/define-projection.d.ts.map +1 -0
- package/dist/define-projection.js +44 -0
- package/dist/define-projection.js.map +1 -0
- package/dist/define-provider.d.ts +49 -0
- package/dist/define-provider.d.ts.map +1 -0
- package/dist/define-provider.js +45 -0
- package/dist/define-provider.js.map +1 -0
- package/dist/define-query.d.ts +50 -0
- package/dist/define-query.d.ts.map +1 -0
- package/dist/define-query.js +33 -0
- package/dist/define-query.js.map +1 -0
- package/dist/define-resolver.d.ts +111 -0
- package/dist/define-resolver.d.ts.map +1 -0
- package/dist/define-resolver.js +146 -0
- package/dist/define-resolver.js.map +1 -0
- package/dist/define-schema.d.ts +88 -0
- package/dist/define-schema.d.ts.map +1 -0
- package/dist/define-schema.js +72 -0
- package/dist/define-schema.js.map +1 -0
- package/dist/define-workflow.d.ts +193 -0
- package/dist/define-workflow.d.ts.map +1 -0
- package/dist/define-workflow.js +345 -0
- package/dist/define-workflow.js.map +1 -0
- package/dist/dev-logger.d.ts +41 -0
- package/dist/dev-logger.d.ts.map +1 -0
- package/dist/dev-logger.js +135 -0
- package/dist/dev-logger.js.map +1 -0
- package/dist/event-message.d.ts +37 -0
- package/dist/event-message.d.ts.map +1 -0
- package/dist/event-message.js +51 -0
- package/dist/event-message.js.map +1 -0
- package/dist/foundation.d.ts +14 -0
- package/dist/foundation.d.ts.map +1 -0
- package/dist/foundation.js +14 -0
- package/dist/foundation.js.map +1 -0
- package/dist/framework-event-bus.d.ts +13 -0
- package/dist/framework-event-bus.d.ts.map +1 -0
- package/dist/framework-event-bus.js +13 -0
- package/dist/framework-event-bus.js.map +1 -0
- package/dist/framework-events.d.ts +121 -0
- package/dist/framework-events.d.ts.map +1 -0
- package/dist/framework-events.js +67 -0
- package/dist/framework-events.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/module-surface.d.ts +47 -0
- package/dist/module-surface.d.ts.map +1 -0
- package/dist/module-surface.js +65 -0
- package/dist/module-surface.js.map +1 -0
- package/dist/projection-store.d.ts +26 -0
- package/dist/projection-store.d.ts.map +1 -0
- package/dist/projection-store.js +28 -0
- package/dist/projection-store.js.map +1 -0
- package/dist/public-marker.d.ts +35 -0
- package/dist/public-marker.d.ts.map +1 -0
- package/dist/public-marker.js +45 -0
- package/dist/public-marker.js.map +1 -0
- package/dist/response.d.ts +8 -0
- package/dist/response.d.ts.map +1 -0
- package/dist/response.js +8 -0
- package/dist/response.js.map +1 -0
- package/dist/runtime.d.ts +497 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1083 -0
- package/dist/runtime.js.map +1 -0
- package/dist/validate.d.ts +33 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +48 -0
- package/dist/validate.js.map +1 -0
- package/dist/when.d.ts +101 -0
- package/dist/when.d.ts.map +1 -0
- package/dist/when.js +57 -0
- package/dist/when.js.map +1 -0
- package/dist/workflow-timer-store.d.ts +78 -0
- package/dist/workflow-timer-store.d.ts.map +1 -0
- package/dist/workflow-timer-store.js +56 -0
- package/dist/workflow-timer-store.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `validate(input, [predicates])` — run a list of invariant predicates over an
|
|
3
|
+
* input (optionally bound to actor state) and throw if any fail.
|
|
4
|
+
*
|
|
5
|
+
* Predicates return `true | string`. The string IS the failure message — no
|
|
6
|
+
* cute encoding, no error types per failure, no class hierarchies. If any
|
|
7
|
+
* predicate fails, `validate` throws an `InvariantError` whose `.failures`
|
|
8
|
+
* carries every failure message.
|
|
9
|
+
*
|
|
10
|
+
* const hasAnswer = (input) => input.answer?.length > 0 || "Answer required"
|
|
11
|
+
* const isModerator = (_i, state) => state.role === "moderator" || "Must be moderator"
|
|
12
|
+
* const notAlreadyOpen = (_i, state) => !state.isOpen || "Already open"
|
|
13
|
+
*
|
|
14
|
+
* validate(input, [hasAnswer, isModerator, notAlreadyOpen], submission.state)
|
|
15
|
+
*
|
|
16
|
+
* Why this shape:
|
|
17
|
+
* - Predicates are plain functions — no decorators, no framework magic.
|
|
18
|
+
* - Returning the message inline keeps the test where the invariant lives.
|
|
19
|
+
* - One throw with aggregated failures lets the UI show every problem at
|
|
20
|
+
* once instead of revealing them one by one across retries.
|
|
21
|
+
*
|
|
22
|
+
* Use in actions OR in actor methods — same signature in both places.
|
|
23
|
+
*/
|
|
24
|
+
export declare class InvariantError extends Error {
|
|
25
|
+
readonly failures: readonly string[];
|
|
26
|
+
constructor(failures: readonly string[]);
|
|
27
|
+
}
|
|
28
|
+
/** A predicate: returns `true` if the invariant holds, or a failure message string. */
|
|
29
|
+
export type Invariant<TInput, TState = unknown> = (input: TInput, state: TState) => true | string;
|
|
30
|
+
export declare function validate<TInput, TState = unknown>(input: TInput, predicates: ReadonlyArray<Invariant<TInput, TState>>, state?: TState): void;
|
|
31
|
+
/** Type-narrowing predicate. */
|
|
32
|
+
export declare function isInvariantError(x: unknown): x is InvariantError;
|
|
33
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;gBAEzB,QAAQ,EAAE,SAAS,MAAM,EAAE;CAKxC;AAED,uFAAuF;AACvF,MAAM,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,CAAC;AAElG,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EAC/C,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACpD,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAWN;AAED,gCAAgC;AAChC,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,cAAc,CAEhE"}
|
package/dist/validate.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `validate(input, [predicates])` — run a list of invariant predicates over an
|
|
3
|
+
* input (optionally bound to actor state) and throw if any fail.
|
|
4
|
+
*
|
|
5
|
+
* Predicates return `true | string`. The string IS the failure message — no
|
|
6
|
+
* cute encoding, no error types per failure, no class hierarchies. If any
|
|
7
|
+
* predicate fails, `validate` throws an `InvariantError` whose `.failures`
|
|
8
|
+
* carries every failure message.
|
|
9
|
+
*
|
|
10
|
+
* const hasAnswer = (input) => input.answer?.length > 0 || "Answer required"
|
|
11
|
+
* const isModerator = (_i, state) => state.role === "moderator" || "Must be moderator"
|
|
12
|
+
* const notAlreadyOpen = (_i, state) => !state.isOpen || "Already open"
|
|
13
|
+
*
|
|
14
|
+
* validate(input, [hasAnswer, isModerator, notAlreadyOpen], submission.state)
|
|
15
|
+
*
|
|
16
|
+
* Why this shape:
|
|
17
|
+
* - Predicates are plain functions — no decorators, no framework magic.
|
|
18
|
+
* - Returning the message inline keeps the test where the invariant lives.
|
|
19
|
+
* - One throw with aggregated failures lets the UI show every problem at
|
|
20
|
+
* once instead of revealing them one by one across retries.
|
|
21
|
+
*
|
|
22
|
+
* Use in actions OR in actor methods — same signature in both places.
|
|
23
|
+
*/
|
|
24
|
+
export class InvariantError extends Error {
|
|
25
|
+
failures;
|
|
26
|
+
constructor(failures) {
|
|
27
|
+
super(`Invariant failed: ${failures.join("; ")}`);
|
|
28
|
+
this.name = "InvariantError";
|
|
29
|
+
this.failures = failures;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function validate(input, predicates, state) {
|
|
33
|
+
const failures = [];
|
|
34
|
+
for (const pred of predicates) {
|
|
35
|
+
const result = pred(input, state);
|
|
36
|
+
if (result !== true) {
|
|
37
|
+
failures.push(typeof result === "string" ? result : "invariant failed");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (failures.length > 0) {
|
|
41
|
+
throw new InvariantError(failures);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Type-narrowing predicate. */
|
|
45
|
+
export function isInvariantError(x) {
|
|
46
|
+
return x instanceof InvariantError;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,QAAQ,CAAoB;IAErC,YAAY,QAA2B;QACrC,KAAK,CAAC,qBAAqB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAKD,MAAM,UAAU,QAAQ,CACtB,KAAa,EACb,UAAoD,EACpD,KAAc;IAEd,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAe,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,gBAAgB,CAAC,CAAU;IACzC,OAAO,CAAC,YAAY,cAAc,CAAC;AACrC,CAAC"}
|
package/dist/when.d.ts
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 `when(Event, fn)` — declarative cross-cutting reaction.
|
|
3
|
+
*
|
|
4
|
+
* when(AnswerFlaggedEvent, async (event, { send }) => {
|
|
5
|
+
* await send(sendNotification, { to: event.studentId, template: 'flagged' })
|
|
6
|
+
* })
|
|
7
|
+
*
|
|
8
|
+
* when(AnswerSubmittedEvent, async (event, { request }) => {
|
|
9
|
+
* await request(gradeSubmission, { ... })
|
|
10
|
+
* }, { dispatches: [gradeSubmission] })
|
|
11
|
+
*
|
|
12
|
+
* Reacts to an event from any source (per ADR-006 — actors react to events
|
|
13
|
+
* about themselves; `when` reactions react to anyone's events). Used for
|
|
14
|
+
* notifications, projections, audit, external syncs.
|
|
15
|
+
*
|
|
16
|
+
* The optional `dispatches` declares which actions this reaction is intended
|
|
17
|
+
* to dispatch — the *intent* edge in the EventStorming canvas. Runtime
|
|
18
|
+
* observation validates the intent: declared-but-never-fired or
|
|
19
|
+
* fired-but-not-declared rings the drift alarm.
|
|
20
|
+
*
|
|
21
|
+
* Returns a `WhenDefinition` that the runtime registers via `registerWhen`.
|
|
22
|
+
*/
|
|
23
|
+
import type { EventDefinition, EventPayload } from "@nwire/messages";
|
|
24
|
+
import type { HandlerContext } from "./define-handler.js";
|
|
25
|
+
import type { EventMessage } from "./event-message.js";
|
|
26
|
+
import type { ActionDefinition } from "./define-action.js";
|
|
27
|
+
/**
|
|
28
|
+
* Idempotency-key extractor — given a triggering event, returns a string
|
|
29
|
+
* uniquely identifying the work this reaction would do. Studio + future
|
|
30
|
+
* runtime dedup use it: if a key is observed twice within a window, the
|
|
31
|
+
* second run is skipped. Pure function of the event payload.
|
|
32
|
+
*/
|
|
33
|
+
export type IdempotencyKeyFn<E extends EventDefinition> = (payload: EventPayload<E>) => string;
|
|
34
|
+
export interface ReactionRetryPolicy {
|
|
35
|
+
readonly max: number;
|
|
36
|
+
readonly backoff?: "exponential" | "fixed";
|
|
37
|
+
readonly baseDelayMs?: number;
|
|
38
|
+
readonly maxDelayMs?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface WhenDefinition<E extends EventDefinition = EventDefinition> {
|
|
41
|
+
readonly $kind: "when";
|
|
42
|
+
readonly eventName: string;
|
|
43
|
+
readonly handler: (event: EventMessage<E>, ctx: HandlerContext) => Promise<void> | void;
|
|
44
|
+
/**
|
|
45
|
+
* Declared actions this reaction intends to dispatch. Names only — the
|
|
46
|
+
* scanner reads them into the static graph (event → policy → command).
|
|
47
|
+
*/
|
|
48
|
+
readonly dispatches?: readonly {
|
|
49
|
+
readonly name: string;
|
|
50
|
+
}[];
|
|
51
|
+
/** Free-form description (Studio-aware). */
|
|
52
|
+
readonly description?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Reaction-level retry policy. Independent from the action.retry that
|
|
55
|
+
* applies to the *dispatched* action — this one applies to the reaction
|
|
56
|
+
* body itself (e.g. network call inside a `when` handler).
|
|
57
|
+
*/
|
|
58
|
+
readonly retry?: ReactionRetryPolicy;
|
|
59
|
+
/**
|
|
60
|
+
* True if the reaction declared an idempotency-key extractor. Scanner
|
|
61
|
+
* surfaces this as a Studio badge ("dedup'd"); future runtime dedup uses
|
|
62
|
+
* the closure carried in `idempotencyKey`.
|
|
63
|
+
*/
|
|
64
|
+
readonly hasIdempotencyKey?: boolean;
|
|
65
|
+
/** The closure itself — kept on the runtime definition, not serialized. */
|
|
66
|
+
readonly idempotencyKey?: IdempotencyKeyFn<E>;
|
|
67
|
+
}
|
|
68
|
+
export interface WhenOptions<E extends EventDefinition = EventDefinition> {
|
|
69
|
+
/** Declared actions this reaction intends to dispatch. */
|
|
70
|
+
readonly dispatches?: readonly ActionDefinition[];
|
|
71
|
+
/** Free-form description for Studio. */
|
|
72
|
+
readonly description?: string;
|
|
73
|
+
/**
|
|
74
|
+
* Pure key extractor for idempotency — Studio surfaces it as the
|
|
75
|
+
* deduplication identity; future runtime dedup will short-circuit
|
|
76
|
+
* repeated keys within a window.
|
|
77
|
+
*/
|
|
78
|
+
readonly idempotencyKey?: IdempotencyKeyFn<E>;
|
|
79
|
+
/** Reaction-body retry policy. */
|
|
80
|
+
readonly retry?: ReactionRetryPolicy;
|
|
81
|
+
}
|
|
82
|
+
export declare function when<E extends EventDefinition>(event: E, handler: (eventPayload: EventPayload<E>, ctx: HandlerContext) => Promise<void> | void, options?: WhenOptions<E>): WhenDefinition<E>;
|
|
83
|
+
/**
|
|
84
|
+
* `defineReaction(name, Event, handler, opts?)` — named reaction.
|
|
85
|
+
*
|
|
86
|
+
* Thin wrapper over `when(Event, handler, opts)` that also sets the reaction's
|
|
87
|
+
* name (Studio displays it; the scanner emits it as one row per reaction in
|
|
88
|
+
* `.nwire/reactions.json`). The name should be `<module>.<verb-noun>`:
|
|
89
|
+
*
|
|
90
|
+
* defineReaction(
|
|
91
|
+
* "notifications.notify-on-approval",
|
|
92
|
+
* PostWasApproved,
|
|
93
|
+
* async (event, { send }) => {
|
|
94
|
+
* await send(recordNotification, { ... });
|
|
95
|
+
* },
|
|
96
|
+
* )
|
|
97
|
+
*/
|
|
98
|
+
export declare function defineReaction<E extends EventDefinition>(name: string, event: E, handler: (eventPayload: EventPayload<E>, ctx: HandlerContext) => Promise<void> | void, options?: WhenOptions<E>): WhenDefinition<E> & {
|
|
99
|
+
readonly name: string;
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=when.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when.d.ts","sourceRoot":"","sources":["../src/when.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI3D;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,eAAe,IAAI,CACxD,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KACrB,MAAM,CAAC;AAEZ,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACxF;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3D,4CAA4C;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,2EAA2E;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe;IACtE,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAClD,wCAAwC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC9C,kCAAkC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC;CACtC;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,eAAe,EAC5C,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EACrF,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,cAAc,CAAC,CAAC,CAAC,CAanB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,eAAe,EACtD,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EACrF,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GACvB,cAAc,CAAC,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAI/C"}
|
package/dist/when.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 `when(Event, fn)` — declarative cross-cutting reaction.
|
|
3
|
+
*
|
|
4
|
+
* when(AnswerFlaggedEvent, async (event, { send }) => {
|
|
5
|
+
* await send(sendNotification, { to: event.studentId, template: 'flagged' })
|
|
6
|
+
* })
|
|
7
|
+
*
|
|
8
|
+
* when(AnswerSubmittedEvent, async (event, { request }) => {
|
|
9
|
+
* await request(gradeSubmission, { ... })
|
|
10
|
+
* }, { dispatches: [gradeSubmission] })
|
|
11
|
+
*
|
|
12
|
+
* Reacts to an event from any source (per ADR-006 — actors react to events
|
|
13
|
+
* about themselves; `when` reactions react to anyone's events). Used for
|
|
14
|
+
* notifications, projections, audit, external syncs.
|
|
15
|
+
*
|
|
16
|
+
* The optional `dispatches` declares which actions this reaction is intended
|
|
17
|
+
* to dispatch — the *intent* edge in the EventStorming canvas. Runtime
|
|
18
|
+
* observation validates the intent: declared-but-never-fired or
|
|
19
|
+
* fired-but-not-declared rings the drift alarm.
|
|
20
|
+
*
|
|
21
|
+
* Returns a `WhenDefinition` that the runtime registers via `registerWhen`.
|
|
22
|
+
*/
|
|
23
|
+
export function when(event, handler, options) {
|
|
24
|
+
return {
|
|
25
|
+
$kind: "when",
|
|
26
|
+
eventName: event.name,
|
|
27
|
+
handler: async (msg, ctx) => {
|
|
28
|
+
await handler(msg.payload, ctx);
|
|
29
|
+
},
|
|
30
|
+
dispatches: options?.dispatches?.map((a) => ({ name: a.name })),
|
|
31
|
+
description: options?.description,
|
|
32
|
+
retry: options?.retry,
|
|
33
|
+
hasIdempotencyKey: !!options?.idempotencyKey,
|
|
34
|
+
idempotencyKey: options?.idempotencyKey,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* `defineReaction(name, Event, handler, opts?)` — named reaction.
|
|
39
|
+
*
|
|
40
|
+
* Thin wrapper over `when(Event, handler, opts)` that also sets the reaction's
|
|
41
|
+
* name (Studio displays it; the scanner emits it as one row per reaction in
|
|
42
|
+
* `.nwire/reactions.json`). The name should be `<module>.<verb-noun>`:
|
|
43
|
+
*
|
|
44
|
+
* defineReaction(
|
|
45
|
+
* "notifications.notify-on-approval",
|
|
46
|
+
* PostWasApproved,
|
|
47
|
+
* async (event, { send }) => {
|
|
48
|
+
* await send(recordNotification, { ... });
|
|
49
|
+
* },
|
|
50
|
+
* )
|
|
51
|
+
*/
|
|
52
|
+
export function defineReaction(name, event, handler, options) {
|
|
53
|
+
const w = when(event, handler, { description: name, ...(options ?? {}) });
|
|
54
|
+
// Attach name as an additional own field so the manifest can pick it up.
|
|
55
|
+
return Object.assign(w, { name });
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=when.js.map
|
package/dist/when.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"when.js","sourceRoot":"","sources":["../src/when.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAoEH,MAAM,UAAU,IAAI,CAClB,KAAQ,EACR,OAAqF,EACrF,OAAwB;IAExB,OAAO;QACL,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YAC1B,MAAM,OAAO,CAAC,GAAG,CAAC,OAA0B,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC;QACD,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/D,WAAW,EAAE,OAAO,EAAE,WAAW;QACjC,KAAK,EAAE,OAAO,EAAE,KAAK;QACrB,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,cAAc;QAC5C,cAAc,EAAE,OAAO,EAAE,cAAc;KACxC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,KAAQ,EACR,OAAqF,EACrF,OAAwB;IAExB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1E,yEAAyE;IACzE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,EAAW,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pluggable saga timer infrastructure.
|
|
3
|
+
*
|
|
4
|
+
* A workflow's `schedule(timer)` call enqueues a `WorkflowTimer` into a
|
|
5
|
+
* `WorkflowTimerStore`. The runtime periodically asks the store for due
|
|
6
|
+
* timers and routes each as a synthetic event into the originating
|
|
7
|
+
* workflow.
|
|
8
|
+
*
|
|
9
|
+
* The default store is in-memory (`InMemoryWorkflowTimerStore`) — fine for
|
|
10
|
+
* development, single-process apps, and tests. For production sagas that
|
|
11
|
+
* must survive process restarts, plug in a different adapter via
|
|
12
|
+
* `createApp({ workflowTimerStore: new MongoWorkflowTimerStore(db) })`.
|
|
13
|
+
* Same contract; same closure surface; only the backing changes.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* A scheduled saga timer. Carries enough context for the runtime to route
|
|
17
|
+
* the fire event back to the right workflow instance.
|
|
18
|
+
*/
|
|
19
|
+
export interface WorkflowTimer {
|
|
20
|
+
/** Unique handle id (random by default; durable adapters can use this for dedup). */
|
|
21
|
+
readonly id: string;
|
|
22
|
+
/** Workflow name (`defineWorkflow("subscription.renewal", …)`). */
|
|
23
|
+
readonly workflowName: string;
|
|
24
|
+
/** Correlation key (the saga instance the timer belongs to). */
|
|
25
|
+
readonly correlationKey: string;
|
|
26
|
+
/**
|
|
27
|
+
* Timer's logical name — declared via `timeout("payment-overdue", "7d")`.
|
|
28
|
+
* When the timer fires the runtime synthesizes an event whose name is
|
|
29
|
+
* `__nwire/timer/<workflowName>/<timerName>` and routes it into the
|
|
30
|
+
* workflow as if it had been a normal `on(timer, …)` event.
|
|
31
|
+
*/
|
|
32
|
+
readonly timerName: string;
|
|
33
|
+
/** When the timer should fire (ISO 8601 string for adapter portability). */
|
|
34
|
+
readonly fireAt: string;
|
|
35
|
+
/** Optional payload to thread through to the handler. */
|
|
36
|
+
readonly payload?: unknown;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The contract every saga timer store implements. Three methods make a
|
|
40
|
+
* store: schedule, cancel, and drainDue. Adapters add their own boot/
|
|
41
|
+
* shutdown hooks as needed.
|
|
42
|
+
*/
|
|
43
|
+
export interface WorkflowTimerStore {
|
|
44
|
+
/** Persist a timer. Idempotent on `id` if the adapter supports it. */
|
|
45
|
+
schedule(timer: WorkflowTimer): Promise<void>;
|
|
46
|
+
/** Cancel a previously-scheduled timer by id. */
|
|
47
|
+
cancel(timerId: string): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Yield every timer whose `fireAt` is <= `now`. The runtime is
|
|
50
|
+
* responsible for routing each fire back into its workflow. Adapters
|
|
51
|
+
* SHOULD remove yielded timers atomically (so a crash mid-loop doesn't
|
|
52
|
+
* re-fire them next tick).
|
|
53
|
+
*/
|
|
54
|
+
drainDue(now: Date): AsyncIterable<WorkflowTimer>;
|
|
55
|
+
/** Optional: list all scheduled timers for one workflow instance. */
|
|
56
|
+
list?(workflowName: string, correlationKey: string): Promise<readonly WorkflowTimer[]>;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Default in-memory store. Lives in the runtime by default; swap to
|
|
60
|
+
* `MongoWorkflowTimerStore` / `RedisWorkflowTimerStore` / your own adapter
|
|
61
|
+
* via `createApp({ workflowTimerStore })` for durable sagas.
|
|
62
|
+
*/
|
|
63
|
+
export declare class InMemoryWorkflowTimerStore implements WorkflowTimerStore {
|
|
64
|
+
private readonly timers;
|
|
65
|
+
schedule(timer: WorkflowTimer): Promise<void>;
|
|
66
|
+
cancel(timerId: string): Promise<void>;
|
|
67
|
+
drainDue(now: Date): AsyncIterable<WorkflowTimer>;
|
|
68
|
+
list(workflowName: string, correlationKey: string): Promise<readonly WorkflowTimer[]>;
|
|
69
|
+
/** Test helper — observe what's currently scheduled. */
|
|
70
|
+
snapshot(): readonly WorkflowTimer[];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Synthesize the event name a fired timer arrives as. Workflows subscribe
|
|
74
|
+
* via `on(timer, handler)` where `timer` is the `TimerDefinition` returned
|
|
75
|
+
* by `timeout("foo", "7d")`; both sides agree on the same canonical name.
|
|
76
|
+
*/
|
|
77
|
+
export declare function timerEventName(workflowName: string, timerName: string): string;
|
|
78
|
+
//# sourceMappingURL=workflow-timer-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-timer-store.d.ts","sourceRoot":"","sources":["../src/workflow-timer-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,gEAAgE;IAChE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,iDAAiD;IACjD,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;IAClD,qEAAqE;IACrE,IAAI,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAAC;CACxF;AAED;;;;GAIG;AACH,qBAAa,0BAA2B,YAAW,kBAAkB;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAErD,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,QAAQ,CAAC,GAAG,EAAE,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC;IAYlD,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC;IAM3F,wDAAwD;IACxD,QAAQ,IAAI,SAAS,aAAa,EAAE;CAGrC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9E"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pluggable saga timer infrastructure.
|
|
3
|
+
*
|
|
4
|
+
* A workflow's `schedule(timer)` call enqueues a `WorkflowTimer` into a
|
|
5
|
+
* `WorkflowTimerStore`. The runtime periodically asks the store for due
|
|
6
|
+
* timers and routes each as a synthetic event into the originating
|
|
7
|
+
* workflow.
|
|
8
|
+
*
|
|
9
|
+
* The default store is in-memory (`InMemoryWorkflowTimerStore`) — fine for
|
|
10
|
+
* development, single-process apps, and tests. For production sagas that
|
|
11
|
+
* must survive process restarts, plug in a different adapter via
|
|
12
|
+
* `createApp({ workflowTimerStore: new MongoWorkflowTimerStore(db) })`.
|
|
13
|
+
* Same contract; same closure surface; only the backing changes.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Default in-memory store. Lives in the runtime by default; swap to
|
|
17
|
+
* `MongoWorkflowTimerStore` / `RedisWorkflowTimerStore` / your own adapter
|
|
18
|
+
* via `createApp({ workflowTimerStore })` for durable sagas.
|
|
19
|
+
*/
|
|
20
|
+
export class InMemoryWorkflowTimerStore {
|
|
21
|
+
timers = new Map();
|
|
22
|
+
async schedule(timer) {
|
|
23
|
+
this.timers.set(timer.id, timer);
|
|
24
|
+
}
|
|
25
|
+
async cancel(timerId) {
|
|
26
|
+
this.timers.delete(timerId);
|
|
27
|
+
}
|
|
28
|
+
async *drainDue(now) {
|
|
29
|
+
const cutoff = now.getTime();
|
|
30
|
+
const due = [];
|
|
31
|
+
for (const [id, timer] of this.timers) {
|
|
32
|
+
if (Date.parse(timer.fireAt) <= cutoff) {
|
|
33
|
+
due.push(timer);
|
|
34
|
+
this.timers.delete(id);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
for (const timer of due)
|
|
38
|
+
yield timer;
|
|
39
|
+
}
|
|
40
|
+
async list(workflowName, correlationKey) {
|
|
41
|
+
return [...this.timers.values()].filter((t) => t.workflowName === workflowName && t.correlationKey === correlationKey);
|
|
42
|
+
}
|
|
43
|
+
/** Test helper — observe what's currently scheduled. */
|
|
44
|
+
snapshot() {
|
|
45
|
+
return [...this.timers.values()];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Synthesize the event name a fired timer arrives as. Workflows subscribe
|
|
50
|
+
* via `on(timer, handler)` where `timer` is the `TimerDefinition` returned
|
|
51
|
+
* by `timeout("foo", "7d")`; both sides agree on the same canonical name.
|
|
52
|
+
*/
|
|
53
|
+
export function timerEventName(workflowName, timerName) {
|
|
54
|
+
return `__nwire/timer/${workflowName}/${timerName}`;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=workflow-timer-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-timer-store.js","sourceRoot":"","sources":["../src/workflow-timer-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA+CH;;;;GAIG;AACH,MAAM,OAAO,0BAA0B;IACpB,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE3D,KAAK,CAAC,QAAQ,CAAC,KAAoB;QACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAS;QACvB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAoB,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,GAAG;YAAE,MAAM,KAAK,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,YAAoB,EAAE,cAAsB;QACrD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,YAAY,IAAI,CAAC,CAAC,cAAc,KAAK,cAAc,CAC9E,CAAC;IACJ,CAAC;IAED,wDAAwD;IACxD,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACnC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,YAAoB,EAAE,SAAiB;IACpE,OAAO,iBAAiB,YAAY,IAAI,SAAS,EAAE,CAAC;AACtD,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nwire/forge",
|
|
3
|
+
"version": "0.7.0",
|
|
4
|
+
"description": "Nwire — the framework's core primitives. defineAction, defineEvent, defineHandler, defineActor, defineProjection, defineQuery, defineWorkflow, defineModule, defineApp, definePlugin, createApp. MessageEnvelope with correlation/causation. The runtime is the bus.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"actions",
|
|
7
|
+
"actors",
|
|
8
|
+
"cqrs",
|
|
9
|
+
"events",
|
|
10
|
+
"forge",
|
|
11
|
+
"framework",
|
|
12
|
+
"nwire"
|
|
13
|
+
],
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md"
|
|
17
|
+
],
|
|
18
|
+
"type": "module",
|
|
19
|
+
"main": "./dist/foundation.js",
|
|
20
|
+
"types": "./dist/foundation.d.ts",
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"import": "./dist/foundation.js",
|
|
24
|
+
"types": "./dist/foundation.d.ts"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@koa/router": "^15.3.0",
|
|
32
|
+
"emittery": "1.0.1",
|
|
33
|
+
"koa": "^2.16.4",
|
|
34
|
+
"zod": "^4.0.0",
|
|
35
|
+
"@nwire/container": "0.7.0",
|
|
36
|
+
"@nwire/envelope": "0.7.0",
|
|
37
|
+
"@nwire/handler": "0.7.0",
|
|
38
|
+
"@nwire/bus": "0.7.0",
|
|
39
|
+
"@nwire/logger": "0.7.0",
|
|
40
|
+
"@nwire/interface": "0.7.0",
|
|
41
|
+
"@nwire/dead-letter": "0.7.0",
|
|
42
|
+
"@nwire/app": "0.7.0",
|
|
43
|
+
"@nwire/messages": "0.7.0"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@types/koa": "^2.15.0",
|
|
47
|
+
"@types/koa-bodyparser": "^4.3.13",
|
|
48
|
+
"@types/koa__router": "^12.0.5",
|
|
49
|
+
"@types/node": "^22.19.9",
|
|
50
|
+
"@types/supertest": "^6.0.3",
|
|
51
|
+
"koa-bodyparser": "^4.4.1",
|
|
52
|
+
"supertest": "^7.2.2",
|
|
53
|
+
"typescript": "^5.9.3"
|
|
54
|
+
},
|
|
55
|
+
"scripts": {
|
|
56
|
+
"build": "tsc && node ../../scripts/fix-dist-extensions.mjs dist",
|
|
57
|
+
"dev": "tsc --watch",
|
|
58
|
+
"typecheck": "tsc --noEmit"
|
|
59
|
+
}
|
|
60
|
+
}
|