@nwire/forge 0.8.0 → 0.9.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 +132 -71
- package/dist/__tests__/actor-workflow-hooks.test.js +3 -1
- package/dist/__tests__/actor-workflow-hooks.test.js.map +1 -1
- package/dist/__tests__/lifecycle-logging.test.js.map +1 -1
- package/dist/__tests__/plugin-app-narrow.test.d.ts +12 -0
- package/dist/__tests__/plugin-app-narrow.test.d.ts.map +1 -0
- package/dist/__tests__/plugin-app-narrow.test.js +77 -0
- package/dist/__tests__/plugin-app-narrow.test.js.map +1 -0
- package/dist/__tests__/plugin-stress.test.js +9 -9
- package/dist/__tests__/plugin-stress.test.js.map +1 -1
- package/dist/__tests__/public-marker.test.js +7 -3
- package/dist/__tests__/public-marker.test.js.map +1 -1
- package/dist/__tests__/workflow-saga.test.js +26 -0
- package/dist/__tests__/workflow-saga.test.js.map +1 -1
- package/dist/actor-store.d.ts +20 -2
- package/dist/actor-store.d.ts.map +1 -1
- package/dist/actor-store.js +30 -2
- package/dist/actor-store.js.map +1 -1
- package/dist/create-app.d.ts +10 -2
- package/dist/create-app.d.ts.map +1 -1
- package/dist/create-app.js +36 -17
- package/dist/create-app.js.map +1 -1
- package/dist/define-action.d.ts +85 -9
- package/dist/define-action.d.ts.map +1 -1
- package/dist/define-action.js +101 -27
- package/dist/define-action.js.map +1 -1
- package/dist/define-actor.js.map +1 -1
- package/dist/define-handler.d.ts +21 -4
- package/dist/define-handler.d.ts.map +1 -1
- package/dist/define-handler.js +7 -0
- package/dist/define-handler.js.map +1 -1
- package/dist/define-plugin.d.ts +21 -0
- package/dist/define-plugin.d.ts.map +1 -1
- package/dist/define-plugin.js +66 -0
- package/dist/define-plugin.js.map +1 -1
- package/dist/define-query.d.ts +70 -12
- package/dist/define-query.d.ts.map +1 -1
- package/dist/define-query.js +49 -18
- package/dist/define-query.js.map +1 -1
- package/dist/define-upcaster.d.ts +25 -0
- package/dist/define-upcaster.d.ts.map +1 -0
- package/dist/define-upcaster.js +31 -0
- package/dist/define-upcaster.js.map +1 -0
- package/dist/define-workflow.d.ts +4 -4
- package/dist/define-workflow.d.ts.map +1 -1
- package/dist/define-workflow.js +40 -10
- package/dist/define-workflow.js.map +1 -1
- package/dist/dev-logger.d.ts.map +1 -1
- package/dist/dev-logger.js +5 -2
- package/dist/dev-logger.js.map +1 -1
- package/dist/event-message.d.ts +9 -2
- package/dist/event-message.d.ts.map +1 -1
- package/dist/event-message.js +10 -3
- package/dist/event-message.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/runtime.d.ts +53 -123
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +166 -289
- package/dist/runtime.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-action.d.ts","sourceRoot":"","sources":["../src/define-action.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"define-action.d.ts","sourceRoot":"","sources":["../src/define-action.ts"],"names":[],"mappings":"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"}
|
package/dist/define-action.js
CHANGED
|
@@ -11,45 +11,119 @@
|
|
|
11
11
|
* })
|
|
12
12
|
*
|
|
13
13
|
* An action carries a `name` (its routing key) and a `schema` (input type).
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* It is BOTH a meta record (`.name`, `.schema`, …) AND a callable factory:
|
|
15
|
+
*
|
|
16
|
+
* execute(submitAnswer({ studentId, attemptId, choice })) // dispatch
|
|
17
|
+
* defineHandler(submitAnswer, fn) // bind handler
|
|
18
|
+
* ctx.send(submitAnswer, input) // also valid
|
|
19
|
+
*
|
|
20
|
+
* Calling the action mints a typed `CommandMessage` with input validated
|
|
21
|
+
* against the zod schema — the dispatch site can't pass bad data. Mirrors
|
|
22
|
+
* the `defineEvent → EventMessage` pattern (Phase 41.9).
|
|
17
23
|
*
|
|
18
24
|
* Inline shorthand: `defineAction({ ..., handler })` synthesizes a handler
|
|
19
25
|
* alongside the contract. For cross-module orchestration where the handler
|
|
20
26
|
* lives elsewhere, leave `handler` undefined and wire via `defineHandler`.
|
|
21
27
|
*/
|
|
22
28
|
import { captureSourceLocation } from "@nwire/messages";
|
|
23
|
-
import { defineHandler } from "./define-handler.js";
|
|
24
|
-
import { markable } from "./public-marker.js";
|
|
29
|
+
import { defineHandler, } from "./define-handler.js";
|
|
25
30
|
export function defineAction(nameOrMeta, maybeMeta) {
|
|
26
31
|
const $source = captureSourceLocation();
|
|
27
32
|
const meta = typeof nameOrMeta === "string"
|
|
28
33
|
? { ...(maybeMeta ?? {}), name: nameOrMeta }
|
|
29
34
|
: nameOrMeta;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
35
|
+
return buildAction(meta, $source, false);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Internal — build the callable action with all meta props attached.
|
|
39
|
+
* Separated so `.public()` can re-build a clone with `$public: true` while
|
|
40
|
+
* sharing one construction path (avoids drift between fresh-defined and
|
|
41
|
+
* cloned actions).
|
|
42
|
+
*/
|
|
43
|
+
function buildAction(meta, $source, isPublic) {
|
|
44
|
+
const factory = (input) => ({
|
|
45
|
+
$kind: "command",
|
|
46
|
+
actionName: meta.name,
|
|
47
|
+
input: meta.schema.parse(input),
|
|
48
|
+
});
|
|
49
|
+
// Inline handler — delegate to `defineHandler` so there is a single
|
|
50
|
+
// construction path for HandlerDefinition.
|
|
51
|
+
let handler;
|
|
52
|
+
if (meta.handler) {
|
|
53
|
+
// Will be patched onto `factory` below; build the handler def first so it
|
|
54
|
+
// references the action contract (factory itself, post-property-attach).
|
|
55
|
+
handler = undefined; // placeholder, set after props attach
|
|
56
|
+
}
|
|
57
|
+
Object.defineProperties(factory, {
|
|
58
|
+
$kind: { value: "action", enumerable: true },
|
|
59
|
+
name: { value: meta.name, enumerable: true, configurable: true },
|
|
60
|
+
description: { value: meta.description, enumerable: true },
|
|
61
|
+
schema: { value: meta.schema, enumerable: true },
|
|
62
|
+
retry: { value: meta.retry, enumerable: true },
|
|
63
|
+
policy: { value: meta.policy, enumerable: true },
|
|
64
|
+
persona: { value: meta.persona, enumerable: true },
|
|
65
|
+
journeyStep: { value: meta.journeyStep, enumerable: true },
|
|
66
|
+
capability: { value: meta.capability, enumerable: true },
|
|
67
|
+
slo: { value: meta.slo, enumerable: true },
|
|
68
|
+
tags: { value: meta.tags, enumerable: true },
|
|
69
|
+
emits: { value: meta.emits, enumerable: true },
|
|
70
|
+
toString: { value: () => meta.name, enumerable: false },
|
|
71
|
+
$source: { value: $source, enumerable: false, configurable: true },
|
|
72
|
+
});
|
|
73
|
+
if (isPublic) {
|
|
74
|
+
Object.defineProperty(factory, "$public", {
|
|
75
|
+
value: true,
|
|
76
|
+
enumerable: false,
|
|
77
|
+
configurable: true,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
// Now that `factory` carries all action metadata, defineHandler can bind
|
|
81
|
+
// to it as a proper ActionDefinition reference.
|
|
45
82
|
if (meta.handler) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
83
|
+
handler = defineHandler(factory, meta.handler);
|
|
84
|
+
Object.defineProperty(factory, "handler", {
|
|
85
|
+
value: handler,
|
|
86
|
+
enumerable: true,
|
|
87
|
+
configurable: true,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
Object.defineProperty(factory, "public", {
|
|
91
|
+
value: function publicMarker() {
|
|
92
|
+
return buildAction(meta, $source, true);
|
|
93
|
+
},
|
|
94
|
+
enumerable: false,
|
|
95
|
+
configurable: true,
|
|
96
|
+
});
|
|
97
|
+
return factory;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Type guard for `CommandMessage`. Runtime accepts either `(action, input)`
|
|
101
|
+
* positional or `command` shorthand; transports + execute() use this to
|
|
102
|
+
* disambiguate.
|
|
103
|
+
*/
|
|
104
|
+
export function isCommandMessage(x) {
|
|
105
|
+
return (typeof x === "object" &&
|
|
106
|
+
x !== null &&
|
|
107
|
+
x.$kind === "command" &&
|
|
108
|
+
typeof x.actionName === "string");
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Resolve either dispatch form into `(action, input)`. Centralised so every
|
|
112
|
+
* transport surface (execute, send, ctx.request) accepts both call shapes
|
|
113
|
+
* with one helper. When the caller passes a `CommandMessage`, the resolver
|
|
114
|
+
* looks up the action by name on the runtime; when they pass an
|
|
115
|
+
* `ActionDefinition` + input, it short-circuits.
|
|
116
|
+
*/
|
|
117
|
+
export function resolveDispatch(actionOrCmd, input, lookup) {
|
|
118
|
+
if (isCommandMessage(actionOrCmd)) {
|
|
119
|
+
const action = lookup(actionOrCmd.actionName);
|
|
120
|
+
if (!action) {
|
|
121
|
+
throw new Error(`dispatch: action "${actionOrCmd.actionName}" is not registered. ` +
|
|
122
|
+
`If you used the callable form (\`execute(myAction(input))\`), make ` +
|
|
123
|
+
`sure the action is included in a module's \`actions\` array.`);
|
|
124
|
+
}
|
|
125
|
+
return { action, input: actionOrCmd.input };
|
|
52
126
|
}
|
|
53
|
-
return
|
|
127
|
+
return { action: actionOrCmd, input };
|
|
54
128
|
}
|
|
55
129
|
//# sourceMappingURL=define-action.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-action.js","sourceRoot":"","sources":["../src/define-action.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"define-action.js","sourceRoot":"","sources":["../src/define-action.ts"],"names":[],"mappings":"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"}
|
package/dist/define-actor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-actor.js","sourceRoot":"","sources":["../src/define-actor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAKH,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAyB,MAAM,iBAAiB,CAAC;AAuT5E,MAAM,UAAU,WAAW;AACzB,8DAA8D;AAC9D,GAAG,IAAW;IAEd,MAAM,OAAO,GAAG,qBAAqB,EAAE,CAAC;IACxC,oBAAoB;IACpB,qFAAqF;IACrF,uGAAuG;IACvG,0FAA0F;IAC1F,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IAEpC,MAAM,MAAM,GAAG,CAAC,GAAoB,EAAmB,EAAE,CACvD,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE;QACpC,KAAK,
|
|
1
|
+
{"version":3,"file":"define-actor.js","sourceRoot":"","sources":["../src/define-actor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAKH,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAyB,MAAM,iBAAiB,CAAC;AAuT5E,MAAM,UAAU,WAAW;AACzB,8DAA8D;AAC9D,GAAG,IAAW;IAEd,MAAM,OAAO,GAAG,qBAAqB,EAAE,CAAC;IACxC,oBAAoB;IACpB,qFAAqF;IACrF,uGAAuG;IACvG,0FAA0F;IAC1F,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IAEpC,MAAM,MAAM,GAAG,CAAC,GAAoB,EAAmB,EAAE,CACvD,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE;QACpC,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEL,uEAAuE;IACvE,IAAI,kBAAkB,CAAC,KAAK,CAAC,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QAC9D,OAAO,MAAM,CACX,kBAAkB,CAChB,KAA+D;QAC/D,8DAA8D;QAC9D,MAAa,EACb,CAAC,KAAK,IAAI,EAAE,CAAwB,CACrC,CACF,CAAC;IACJ,CAAC;IAED,gFAAgF;IAChF,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,kBAAkB,CAAE,KAA8B,CAAC,MAAM,CAAC,EAC1D,CAAC;QACD,OAAO,MAAM,CACX,gBAAgB,CAAC,KAAgE,CAAC,CACnF,CAAC;IACJ,CAAC;IAED,gBAAgB;IAChB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAkC,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,kBAAkB,CACzB,MAAiC,EACjC,IAEyD,EACzD,OAA4B;IAI5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;IACzC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IAEnC,wEAAwE;IACxE,MAAM,SAAS,GAA6B,EAAE,CAAC;IAC/C,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAClD,SAAS,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAoB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACvF,mFAAmF;QACnF,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAChF,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,SAAS,CAAE,CAAC;IACpE,CAAC;IAOD,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAE1C,MAAM,aAAa,GAAgC;QACjD,IAAI,EAAE,IAAI,KAAK,CAAC,EAAY,EAAE;YAC5B,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS;YACpB,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK;SACjB,CAAC;QACF,EAAE,EAAE,EAAE;QACN,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;QAClB,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC;QACpB,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YAClB,QAAQ,CAAC,IAAI,CAAC;gBACZ,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,8DAA8D;gBAC9D,EAAE,EAAE,EAAS;aACd,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;KACtB,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACnD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAElD,oEAAoE;IACpE,oEAAoE;IACpE,yEAAyE;IACzE,sDAAsD;IACtD,MAAM,YAAY,GAA6C,EAAE,CAAC;IAElE,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAClE,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAC1C,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAmD,EAAE,CAAC;QACrE,KAAK,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,QAAQ,EAAE,CAAC;YACzC,kEAAkE;YAClE,iEAAiE;YACjE,IAAI,MAA0B,CAAC;YAC/B,IAAI,KAAK,GAAoB,EAAE,CAAC;YAChC,SAAS,CAAC,SAAS,CAAC,GAAG;gBACrB,MAAM,EAAE,CAAC,aAAqB,EAAE,KAAc,EAAE,EAAE;oBAChD,MAAM,GAAG,SAAS,CAAC;oBACnB,KAAK,GAAG,EAAE,CAAC;oBACX,MAAM,QAAQ,GAAG;wBACf,MAAM,EAAE,CAAC,CAAkB,EAAE,EAAE;4BAC7B,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;wBAC7B,CAAC;qBACF,CAAC;oBACF,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACnC,IACE,MAAM;wBACN,OAAO,MAAM,KAAK,QAAQ;wBAC1B,OAAO,IAAI,MAAM;wBAChB,MAA4B,CAAC,KAAK,KAAK,WAAW,EACnD,CAAC;wBACD,MAAM,GAAI,MAAmB,CAAC,IAAI,CAAC;oBACrC,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,IAAI,MAAM;oBACR,OAAO,MAAM,CAAC;gBAChB,CAAC;aAC2C,CAAC;QACjD,CAAC;QACD,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;IAC9C,CAAC;IAED,oEAAoE;IACpE,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAU,EAAE,EAAE;QAClD,MAAM,QAAQ,GAAmD,EAAE,CAAC;QACpE,MAAM,OAAO,GAAgC;YAC3C,IAAI,EAAE,KAAK;YACX,EAAE;YACF,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;gBACxC,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAC9B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;oBAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAI,KAAK,CAAC,CAAC;oBACzC,IAAI,CAAC,KAAK,IAAI;wBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;gBAChF,CAAC;gBACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACjE,GAAgD,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACtE,GAAG,CAAC,IAAI,GAAG,gBAAgB,CAAC;oBAC5B,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;YACD,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;gBACpB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YACD,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,mBAAmB;YACnC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;SACtB,CAAC;QACF,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAiD,CAAC;QACzF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IAC3C,CAAC,CAAC;IAEF,8EAA8E;IAC9E,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAqC,CAAC;IAEpF,OAAO;QACL,KAAK,EAAE,OAAO;QACd,IAAI;QACJ,MAAM,EAAE,aAAa;QACrB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,YAAY;QACpB,sEAAsE;QACtE,OAAO,EAAE,SAAS;QAClB,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC;QACzC,aAAa;QACb,8DAA8D;KAG/D,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAGzB,IAAY,EAAE,OAAwC;IACtD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,gBAAgB,IAAI,sBAAsB,OAAO,CAAC,OAAO,8BAA8B,CACxF,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACtE,IAAI,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,gBAAgB,IAAI,oBAAoB,SAAS,kEAAkE,CACpH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,OAAO;QACd,IAAI;QACJ,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAGvB,OAA6C;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IACjD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IAEzC,mEAAmE;IACnE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,CAAC,SAAS,IAAI,YAAY,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,gBAAgB,IAAI,cAAc,SAAS,gCAAgC,OAAO,CAAC,MAAM,CAAC,IAAI,WAAW,CAC1G,CAAC;QACJ,CAAC;QACD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CACb,gBAAgB,IAAI,cAAc,SAAS,yBAAyB,OAAO,CAAC,MAAM,CAAC,IAAI,yCAAyC,CACjI,CAAC;QACJ,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,mEAAmE;IACnE,MAAM,YAAY,GAAqE,EAAE,CAAC;IAC1F,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAClE,MAAM,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACjC,YAAY,CAAC,SAAS,CAAC,GAAG;YACxB,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACZ,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED,kEAAkE;IAClE,wEAAwE;IACxE,uEAAuE;IACvE,mEAAmE;IACnE,qEAAqE;IACrE,iCAAiC;IACjC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAqC,CAAC;IAE5F,OAAO;QACL,KAAK,EAAE,OAAO;QACd,IAAI;QACJ,MAAM,EAAE,aAAa;QACrB,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;QACvB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO;QAC/B,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,MAAwD;IAExD,MAAM,UAAU,GAAG,IAAI,GAAG,EAGvB,CAAC;IACJ,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC,WAAW,CAAC,EAAE;YAAE,SAAS;QAC9B,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC1C,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAsB;IAC7C,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC"}
|
package/dist/define-handler.d.ts
CHANGED
|
@@ -18,13 +18,20 @@
|
|
|
18
18
|
* returned events route to actors + workflows and commit atomically.
|
|
19
19
|
*
|
|
20
20
|
* If the handler does pure side effects (no events to commit), return `void`.
|
|
21
|
+
*
|
|
22
|
+
* For CRUD-style handlers that don't emit events but want to surface a small
|
|
23
|
+
* record to the caller (e.g. `{ userId }` for the HTTP layer to echo back),
|
|
24
|
+
* return a plain object. The runtime treats it as a non-event return: nothing
|
|
25
|
+
* is published, and the value flows through `runtime.dispatch`'s return + the
|
|
26
|
+
* `ActionCompleted` framework event. Events vs records are disambiguated by
|
|
27
|
+
* the `eventName` + `payload` shape — plain objects pass straight through.
|
|
21
28
|
*/
|
|
22
29
|
import type { z } from "zod";
|
|
23
30
|
import type { ZodTypeAny, SourceLocation } from "@nwire/messages";
|
|
24
31
|
import type { Container } from "@nwire/container";
|
|
25
32
|
import type { MessageEnvelope } from "@nwire/envelope";
|
|
26
33
|
import type { EventMessage } from "./event-message.js";
|
|
27
|
-
import type { ActionDefinition } from "./define-action.js";
|
|
34
|
+
import type { ActionDefinition, ActionInput, ActionResult } from "./define-action.js";
|
|
28
35
|
import type { ActorDefinition, ActorInstanceView } from "./define-actor.js";
|
|
29
36
|
import type { QueryDefinition } from "./define-query.js";
|
|
30
37
|
import type { ExternalCallDefinition } from "./define-external-call.js";
|
|
@@ -64,7 +71,7 @@ export interface HandlerContext {
|
|
|
64
71
|
* result. The framework derives a child envelope (same correlationId,
|
|
65
72
|
* causationId = this handler's messageId) and handles transport routing.
|
|
66
73
|
*/
|
|
67
|
-
request<
|
|
74
|
+
request<A extends ActionDefinition>(action: A, input: ActionInput<A>): Promise<ActionResult<A>>;
|
|
68
75
|
/**
|
|
69
76
|
* Read-during-handler — invoke a query (projection-backed read function)
|
|
70
77
|
* scoped to the envelope's tenant. Used by reactions that need to look up
|
|
@@ -79,7 +86,7 @@ export interface HandlerContext {
|
|
|
79
86
|
* Fire-and-forget dispatch of another action. Returns when the message is
|
|
80
87
|
* accepted by the transport, not when the handler completes.
|
|
81
88
|
*/
|
|
82
|
-
send<
|
|
89
|
+
send<A extends ActionDefinition>(action: A, input: ActionInput<A>): Promise<void>;
|
|
83
90
|
/**
|
|
84
91
|
* Load an actor instance by id (envelope.tenant-scoped) and return a view
|
|
85
92
|
* with `state`, `stateName`, `key`, plus every method declared on the actor
|
|
@@ -105,7 +112,17 @@ export interface HandlerContext {
|
|
|
105
112
|
*/
|
|
106
113
|
externalCall<TRequest extends ZodTypeAny, TResponse extends ZodTypeAny>(call: ExternalCallDefinition<TRequest, TResponse>, request: z.output<TRequest>): Promise<z.output<TResponse>>;
|
|
107
114
|
}
|
|
108
|
-
|
|
115
|
+
/**
|
|
116
|
+
* What a handler may return.
|
|
117
|
+
*
|
|
118
|
+
* - `void` / `null` / `undefined` — pure side-effect handler, nothing to publish.
|
|
119
|
+
* - `EventMessage` / `EventMessage[]` — events the runtime publishes atomically.
|
|
120
|
+
* - `Record<string, unknown>` — a plain data record (e.g. `{ userId }`) that
|
|
121
|
+
* is NOT published. It flows out via `runtime.dispatch`'s return value and
|
|
122
|
+
* the `ActionCompleted` framework event. Distinguished from `EventMessage`
|
|
123
|
+
* at runtime by the missing `eventName` + `payload` shape.
|
|
124
|
+
*/
|
|
125
|
+
export type HandlerReturn = void | EventMessage | EventMessage[] | Record<string, unknown> | null;
|
|
109
126
|
export interface HandlerDefinition<TSchema extends ZodTypeAny = ZodTypeAny> {
|
|
110
127
|
readonly $kind: "handler";
|
|
111
128
|
readonly action: ActionDefinition<TSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-handler.d.ts","sourceRoot":"","sources":["../src/define-handler.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"define-handler.d.ts","sourceRoot":"","sources":["../src/define-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/define-handler.js
CHANGED
|
@@ -18,6 +18,13 @@
|
|
|
18
18
|
* returned events route to actors + workflows and commit atomically.
|
|
19
19
|
*
|
|
20
20
|
* If the handler does pure side effects (no events to commit), return `void`.
|
|
21
|
+
*
|
|
22
|
+
* For CRUD-style handlers that don't emit events but want to surface a small
|
|
23
|
+
* record to the caller (e.g. `{ userId }` for the HTTP layer to echo back),
|
|
24
|
+
* return a plain object. The runtime treats it as a non-event return: nothing
|
|
25
|
+
* is published, and the value flows through `runtime.dispatch`'s return + the
|
|
26
|
+
* `ActionCompleted` framework event. Events vs records are disambiguated by
|
|
27
|
+
* the `eventName` + `payload` shape — plain objects pass straight through.
|
|
21
28
|
*/
|
|
22
29
|
import { captureSourceLocation } from "@nwire/messages";
|
|
23
30
|
export function defineHandler(action, handler) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-handler.js","sourceRoot":"","sources":["../src/define-handler.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"define-handler.js","sourceRoot":"","sources":["../src/define-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAwHxD,MAAM,UAAU,aAAa,CAC3B,MAAiC,EACjC,OAA8C;IAE9C,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,MAAM;QACN,OAAO;QACP,OAAO,EAAE,qBAAqB,EAAE;KACjC,CAAC;AACJ,CAAC"}
|
package/dist/define-plugin.d.ts
CHANGED
|
@@ -53,6 +53,7 @@ import type { ActorDefinition } from "./define-actor.js";
|
|
|
53
53
|
import type { MessageEnvelope } from "@nwire/envelope";
|
|
54
54
|
import type { FrameworkEventDefinition } from "./framework-events.js";
|
|
55
55
|
import type { FrameworkEventHandler } from "./framework-event-bus.js";
|
|
56
|
+
import type { AppPluginDefinition } from "@nwire/app";
|
|
56
57
|
/** Hook fired by the runtime after an actor transitions to a new state. */
|
|
57
58
|
export type ActorTransitionHook = (actor: ActorDefinition, key: string, fromState: string, toState: string, event: EventMessage, envelope: MessageEnvelope) => Promise<void> | void;
|
|
58
59
|
export interface PluginActorHooks {
|
|
@@ -171,4 +172,24 @@ export declare function buildPluginContext(container: Container, runtime: Runtim
|
|
|
171
172
|
readonly boots: Array<() => Promise<void> | void>;
|
|
172
173
|
readonly shutdowns: Array<() => Promise<void> | void>;
|
|
173
174
|
};
|
|
175
|
+
/**
|
|
176
|
+
* Adapt a narrow `@nwire/app` plugin into the rich forge `PluginDefinition`
|
|
177
|
+
* createApp expects. The narrow shape (provide / on / boot / shutdown) is a
|
|
178
|
+
* strict subset of the rich shape, so the adaptation is straight forwarding:
|
|
179
|
+
*
|
|
180
|
+
* - `provide(name, lifecycle)` becomes a `bind` whose factory invokes the
|
|
181
|
+
* lifecycle's `boot()` once, plus a shutdown step that runs
|
|
182
|
+
* `lifecycle.shutdown(value)` against the resolved value if it was ever
|
|
183
|
+
* materialized. Lazy resolution matches the rich `bind` contract — a
|
|
184
|
+
* value nobody asks for is never booted (and therefore never torn down).
|
|
185
|
+
* - `on(FrameworkEvent, handler, prio?)` maps 1:1 onto `runtime.onFramework`,
|
|
186
|
+
* which is what the rich `api.on` already does internally.
|
|
187
|
+
* - `boot(fn)` / `shutdown(fn)` map 1:1.
|
|
188
|
+
*
|
|
189
|
+
* The narrow plugin's `setup` may be async; we honor that by returning a
|
|
190
|
+
* Promise from the rich setup. createApp's sync register loop rejects async
|
|
191
|
+
* rich setups today, so app-plugin authors who need async work should put it
|
|
192
|
+
* inside `api.boot(...)` — same rule as forge's closure form.
|
|
193
|
+
*/
|
|
194
|
+
export declare function adaptAppPlugin(app: AppPluginDefinition): PluginDefinition;
|
|
174
195
|
//# sourceMappingURL=define-plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-plugin.d.ts","sourceRoot":"","sources":["../src/define-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"define-plugin.d.ts","sourceRoot":"","sources":["../src/define-plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/define-plugin.js
CHANGED
|
@@ -151,4 +151,70 @@ config, pluginName = "anonymous") {
|
|
|
151
151
|
};
|
|
152
152
|
return { api, boots, shutdowns };
|
|
153
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Adapt a narrow `@nwire/app` plugin into the rich forge `PluginDefinition`
|
|
156
|
+
* createApp expects. The narrow shape (provide / on / boot / shutdown) is a
|
|
157
|
+
* strict subset of the rich shape, so the adaptation is straight forwarding:
|
|
158
|
+
*
|
|
159
|
+
* - `provide(name, lifecycle)` becomes a `bind` whose factory invokes the
|
|
160
|
+
* lifecycle's `boot()` once, plus a shutdown step that runs
|
|
161
|
+
* `lifecycle.shutdown(value)` against the resolved value if it was ever
|
|
162
|
+
* materialized. Lazy resolution matches the rich `bind` contract — a
|
|
163
|
+
* value nobody asks for is never booted (and therefore never torn down).
|
|
164
|
+
* - `on(FrameworkEvent, handler, prio?)` maps 1:1 onto `runtime.onFramework`,
|
|
165
|
+
* which is what the rich `api.on` already does internally.
|
|
166
|
+
* - `boot(fn)` / `shutdown(fn)` map 1:1.
|
|
167
|
+
*
|
|
168
|
+
* The narrow plugin's `setup` may be async; we honor that by returning a
|
|
169
|
+
* Promise from the rich setup. createApp's sync register loop rejects async
|
|
170
|
+
* rich setups today, so app-plugin authors who need async work should put it
|
|
171
|
+
* inside `api.boot(...)` — same rule as forge's closure form.
|
|
172
|
+
*/
|
|
173
|
+
export function adaptAppPlugin(app) {
|
|
174
|
+
return {
|
|
175
|
+
$kind: "plugin",
|
|
176
|
+
name: app.name,
|
|
177
|
+
$source: app.$source,
|
|
178
|
+
setup(ctx) {
|
|
179
|
+
// bus is exposed on the narrow context for advanced cases (the rich
|
|
180
|
+
// `on` only covers framework events). runtime.frameworkEvents is the
|
|
181
|
+
// same bus the rich api.on writes to, so passing it through is safe.
|
|
182
|
+
const narrow = {
|
|
183
|
+
container: ctx.container,
|
|
184
|
+
bus: ctx.runtime.frameworkEvents,
|
|
185
|
+
provide(name, lifecycle) {
|
|
186
|
+
let booted = false;
|
|
187
|
+
let value;
|
|
188
|
+
ctx.bind(name, () => {
|
|
189
|
+
// The narrow contract permits async boot; bind's factory is
|
|
190
|
+
// sync. We synchronously kick the promise (if any) — consumers
|
|
191
|
+
// resolving an async-provided binding get the Promise back,
|
|
192
|
+
// mirroring what they'd get if they implemented `bind` directly.
|
|
193
|
+
const result = lifecycle.boot();
|
|
194
|
+
booted = true;
|
|
195
|
+
value = result;
|
|
196
|
+
return result;
|
|
197
|
+
});
|
|
198
|
+
if (lifecycle.shutdown) {
|
|
199
|
+
ctx.shutdown(async () => {
|
|
200
|
+
if (!booted)
|
|
201
|
+
return;
|
|
202
|
+
await lifecycle.shutdown(value);
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
on(event, handler, priority) {
|
|
207
|
+
ctx.on(event, handler, priority);
|
|
208
|
+
},
|
|
209
|
+
boot(fn) {
|
|
210
|
+
ctx.boot(fn);
|
|
211
|
+
},
|
|
212
|
+
shutdown(fn) {
|
|
213
|
+
ctx.shutdown(fn);
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
return app.setup(narrow);
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
}
|
|
154
220
|
//# sourceMappingURL=define-plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-plugin.js","sourceRoot":"","sources":["../src/define-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAGH,OAAO,EAAE,qBAAqB,EAAuB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"define-plugin.js","sourceRoot":"","sources":["../src/define-plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/define-query.d.ts
CHANGED
|
@@ -1,20 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `defineQuery` — read function over a projection
|
|
2
|
+
* `defineQuery` — read function over a projection or a direct adapter (DB,
|
|
3
|
+
* cache, search index). Two forms:
|
|
3
4
|
*
|
|
5
|
+
* // Projection-driven — runtime hands you `state` + validated input.
|
|
4
6
|
* export const submissionsByStudent = defineQuery(SubmissionsByStudent, {
|
|
5
7
|
* name: 'submissions.by-student',
|
|
6
|
-
* schema: z.object({ studentId: StudentId
|
|
7
|
-
* execute: (state, { studentId
|
|
8
|
-
* Object.values(state).filter(s => s.studentId === studentId
|
|
9
|
-
* (!status || s.status === status))
|
|
8
|
+
* schema: z.object({ studentId: StudentId }),
|
|
9
|
+
* execute: (state, { studentId }) =>
|
|
10
|
+
* Object.values(state).filter(s => s.studentId === studentId),
|
|
10
11
|
* })
|
|
11
12
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* // Handler form — no projection, you reach into the container yourself.
|
|
14
|
+
* export const usersById = defineQuery({
|
|
15
|
+
* name: 'users.by-id',
|
|
16
|
+
* schema: z.object({ id: UserId }),
|
|
17
|
+
* handler: async ({ id }, { resolve }) => {
|
|
18
|
+
* const db = resolve<DrizzleDb>('db');
|
|
19
|
+
* return db.select().from(users).where(eq(users.id, id)).limit(1);
|
|
20
|
+
* },
|
|
21
|
+
* })
|
|
22
|
+
*
|
|
23
|
+
* Pick projection form when the read is "eventually-consistent over events
|
|
24
|
+
* I publish in-process." Pick handler form when reading from any external
|
|
25
|
+
* source of truth (Postgres rows, Redis, OpenSearch) — no projection layer
|
|
26
|
+
* needed. Queries are always direct calls: no envelope, no bus, no commit.
|
|
15
27
|
*
|
|
16
|
-
* Naming follows actions: `<domain>.<verb-noun>` so a query is addressable
|
|
17
|
-
* the same routing keyspace as actions when transports need it (HTTP GET
|
|
28
|
+
* Naming follows actions: `<domain>.<verb-noun>` so a query is addressable
|
|
29
|
+
* on the same routing keyspace as actions when transports need it (HTTP GET
|
|
18
30
|
* routes wire queries; HTTP POST routes wire actions).
|
|
19
31
|
*/
|
|
20
32
|
import type { z } from "zod";
|
|
@@ -26,27 +38,73 @@ export interface QuerySlo {
|
|
|
26
38
|
/** Declared p95 latency target in milliseconds. */
|
|
27
39
|
readonly p95LatencyMs?: number;
|
|
28
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Context handed to a handler-form query. Mirrors `HandlerContext` but read-
|
|
43
|
+
* only: no `request`, no `send`, no `recordThat`. The query may load other
|
|
44
|
+
* projections, resolve DI bindings (typically a DB handle), and read its
|
|
45
|
+
* envelope (request-id, tenant, signal) when one is in play.
|
|
46
|
+
*/
|
|
47
|
+
export interface QueryContext {
|
|
48
|
+
/** Resolve a DI binding (db connection, http client, etc.). */
|
|
49
|
+
resolve: <T = unknown>(name: string) => T;
|
|
50
|
+
/** Tenant scope, if the calling transport set one. */
|
|
51
|
+
readonly tenant?: string;
|
|
52
|
+
/** Abort signal — wired from the caller's request when available. */
|
|
53
|
+
readonly signal?: AbortSignal;
|
|
54
|
+
}
|
|
29
55
|
export interface QueryOptions<TState, TSchema extends ZodTypeAny, TResult> {
|
|
30
56
|
readonly name: string;
|
|
31
57
|
readonly description?: string;
|
|
58
|
+
/** Input schema — `input` is an alias accepted for docs parity with actions. */
|
|
32
59
|
readonly schema: TSchema;
|
|
60
|
+
readonly input?: TSchema;
|
|
33
61
|
readonly execute: (state: TState, input: z.output<TSchema>) => TResult | Promise<TResult>;
|
|
34
62
|
/** Studio-aware: declared latency target. */
|
|
35
63
|
readonly slo?: QuerySlo;
|
|
36
64
|
/** Studio-aware: hint that this query is safe to cache. */
|
|
37
65
|
readonly cacheable?: boolean;
|
|
38
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Options for handler-form `defineQuery({ name, schema, handler })`. No
|
|
69
|
+
* projection, no state — you read from whatever source you care to via
|
|
70
|
+
* `ctx.resolve<DbType>("db")` (or any registered binding).
|
|
71
|
+
*/
|
|
72
|
+
export interface QueryHandlerOptions<TSchema extends ZodTypeAny, TResult> {
|
|
73
|
+
readonly name: string;
|
|
74
|
+
readonly description?: string;
|
|
75
|
+
/** Input schema — `input` is an alias accepted for docs parity with actions. */
|
|
76
|
+
readonly schema: TSchema;
|
|
77
|
+
readonly input?: TSchema;
|
|
78
|
+
readonly handler: (input: z.output<TSchema>, ctx: QueryContext) => TResult | Promise<TResult>;
|
|
79
|
+
readonly slo?: QuerySlo;
|
|
80
|
+
readonly cacheable?: boolean;
|
|
81
|
+
}
|
|
39
82
|
export interface QueryDefinition<TState = unknown, TSchema extends ZodTypeAny = ZodTypeAny, TResult = unknown> extends PublicMarker {
|
|
40
83
|
readonly $kind: "query";
|
|
41
84
|
readonly name: string;
|
|
42
85
|
readonly description?: string;
|
|
43
86
|
readonly schema: TSchema;
|
|
44
|
-
|
|
45
|
-
|
|
87
|
+
/**
|
|
88
|
+
* Backing projection. `undefined` for handler-form queries — runtime
|
|
89
|
+
* detects this and routes through `handler` directly (no state load).
|
|
90
|
+
*/
|
|
91
|
+
readonly projection?: ProjectionDefinition<TState>;
|
|
92
|
+
/**
|
|
93
|
+
* Projection-form executor. Called with the projection's full state + the
|
|
94
|
+
* validated input. Present iff `projection` is present.
|
|
95
|
+
*/
|
|
96
|
+
readonly execute?: (state: TState, input: z.output<TSchema>) => TResult | Promise<TResult>;
|
|
97
|
+
/**
|
|
98
|
+
* Handler-form executor. Called with the validated input + a
|
|
99
|
+
* `QueryContext` (DI resolution, tenant, abort signal). Present iff
|
|
100
|
+
* `projection` is absent.
|
|
101
|
+
*/
|
|
102
|
+
readonly handler?: (input: z.output<TSchema>, ctx: QueryContext) => TResult | Promise<TResult>;
|
|
46
103
|
readonly slo?: QuerySlo;
|
|
47
104
|
readonly cacheable?: boolean;
|
|
48
105
|
/** Where the query was declared. Studio uses this for IDE-open links. */
|
|
49
106
|
readonly $source?: SourceLocation;
|
|
50
107
|
}
|
|
51
108
|
export declare function defineQuery<TState, TSchema extends ZodTypeAny, TResult>(projection: ProjectionDefinition<TState>, options: QueryOptions<TState, TSchema, TResult>): QueryDefinition<TState, TSchema, TResult>;
|
|
109
|
+
export declare function defineQuery<TSchema extends ZodTypeAny, TResult>(options: QueryHandlerOptions<TSchema, TResult>): QueryDefinition<any, TSchema, TResult>;
|
|
52
110
|
//# sourceMappingURL=define-query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-query.d.ts","sourceRoot":"","sources":["../src/define-query.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"define-query.d.ts","sourceRoot":"","sources":["../src/define-query.ts"],"names":[],"mappings":"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"}
|