@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.
Files changed (259) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +77 -0
  3. package/dist/__tests__/actor-methods.test.d.ts +9 -0
  4. package/dist/__tests__/actor-methods.test.d.ts.map +1 -0
  5. package/dist/__tests__/actor-methods.test.js +210 -0
  6. package/dist/__tests__/actor-methods.test.js.map +1 -0
  7. package/dist/__tests__/actor-schema-bound.test.d.ts +6 -0
  8. package/dist/__tests__/actor-schema-bound.test.d.ts.map +1 -0
  9. package/dist/__tests__/actor-schema-bound.test.js +112 -0
  10. package/dist/__tests__/actor-schema-bound.test.js.map +1 -0
  11. package/dist/__tests__/app-capabilities.test.d.ts +19 -0
  12. package/dist/__tests__/app-capabilities.test.d.ts.map +1 -0
  13. package/dist/__tests__/app-capabilities.test.js +57 -0
  14. package/dist/__tests__/app-capabilities.test.js.map +1 -0
  15. package/dist/__tests__/cli-runner.test.d.ts +6 -0
  16. package/dist/__tests__/cli-runner.test.d.ts.map +1 -0
  17. package/dist/__tests__/cli-runner.test.js +158 -0
  18. package/dist/__tests__/cli-runner.test.js.map +1 -0
  19. package/dist/__tests__/create-app.test.d.ts +18 -0
  20. package/dist/__tests__/create-app.test.d.ts.map +1 -0
  21. package/dist/__tests__/create-app.test.js +189 -0
  22. package/dist/__tests__/create-app.test.js.map +1 -0
  23. package/dist/__tests__/cross-service-bus.test.d.ts +8 -0
  24. package/dist/__tests__/cross-service-bus.test.d.ts.map +1 -0
  25. package/dist/__tests__/cross-service-bus.test.js +139 -0
  26. package/dist/__tests__/cross-service-bus.test.js.map +1 -0
  27. package/dist/__tests__/define-schema.test.d.ts +5 -0
  28. package/dist/__tests__/define-schema.test.d.ts.map +1 -0
  29. package/dist/__tests__/define-schema.test.js +83 -0
  30. package/dist/__tests__/define-schema.test.js.map +1 -0
  31. package/dist/__tests__/dev-logger.test.d.ts +9 -0
  32. package/dist/__tests__/dev-logger.test.d.ts.map +1 -0
  33. package/dist/__tests__/dev-logger.test.js +126 -0
  34. package/dist/__tests__/dev-logger.test.js.map +1 -0
  35. package/dist/__tests__/external-call.test.d.ts +14 -0
  36. package/dist/__tests__/external-call.test.d.ts.map +1 -0
  37. package/dist/__tests__/external-call.test.js +99 -0
  38. package/dist/__tests__/external-call.test.js.map +1 -0
  39. package/dist/__tests__/framework-events.test.d.ts +13 -0
  40. package/dist/__tests__/framework-events.test.d.ts.map +1 -0
  41. package/dist/__tests__/framework-events.test.js +204 -0
  42. package/dist/__tests__/framework-events.test.js.map +1 -0
  43. package/dist/__tests__/inline-handler.test.d.ts +8 -0
  44. package/dist/__tests__/inline-handler.test.d.ts.map +1 -0
  45. package/dist/__tests__/inline-handler.test.js +101 -0
  46. package/dist/__tests__/inline-handler.test.js.map +1 -0
  47. package/dist/__tests__/lifecycle-logging.test.d.ts +12 -0
  48. package/dist/__tests__/lifecycle-logging.test.d.ts.map +1 -0
  49. package/dist/__tests__/lifecycle-logging.test.js +112 -0
  50. package/dist/__tests__/lifecycle-logging.test.js.map +1 -0
  51. package/dist/__tests__/middleware.test.d.ts +7 -0
  52. package/dist/__tests__/middleware.test.d.ts.map +1 -0
  53. package/dist/__tests__/middleware.test.js +109 -0
  54. package/dist/__tests__/middleware.test.js.map +1 -0
  55. package/dist/__tests__/module-needs.test.d.ts +10 -0
  56. package/dist/__tests__/module-needs.test.d.ts.map +1 -0
  57. package/dist/__tests__/module-needs.test.js +77 -0
  58. package/dist/__tests__/module-needs.test.js.map +1 -0
  59. package/dist/__tests__/module-topo-sort.test.d.ts +15 -0
  60. package/dist/__tests__/module-topo-sort.test.d.ts.map +1 -0
  61. package/dist/__tests__/module-topo-sort.test.js +105 -0
  62. package/dist/__tests__/module-topo-sort.test.js.map +1 -0
  63. package/dist/__tests__/multi-tenancy.test.d.ts +10 -0
  64. package/dist/__tests__/multi-tenancy.test.d.ts.map +1 -0
  65. package/dist/__tests__/multi-tenancy.test.js +122 -0
  66. package/dist/__tests__/multi-tenancy.test.js.map +1 -0
  67. package/dist/__tests__/needs-topology.test.d.ts +11 -0
  68. package/dist/__tests__/needs-topology.test.d.ts.map +1 -0
  69. package/dist/__tests__/needs-topology.test.js +82 -0
  70. package/dist/__tests__/needs-topology.test.js.map +1 -0
  71. package/dist/__tests__/plugin-closure.test.d.ts +15 -0
  72. package/dist/__tests__/plugin-closure.test.d.ts.map +1 -0
  73. package/dist/__tests__/plugin-closure.test.js +140 -0
  74. package/dist/__tests__/plugin-closure.test.js.map +1 -0
  75. package/dist/__tests__/plugin.test.d.ts +10 -0
  76. package/dist/__tests__/plugin.test.d.ts.map +1 -0
  77. package/dist/__tests__/plugin.test.js +225 -0
  78. package/dist/__tests__/plugin.test.js.map +1 -0
  79. package/dist/__tests__/primitives.test.d.ts +9 -0
  80. package/dist/__tests__/primitives.test.d.ts.map +1 -0
  81. package/dist/__tests__/primitives.test.js +434 -0
  82. package/dist/__tests__/primitives.test.js.map +1 -0
  83. package/dist/__tests__/production-readiness.test.d.ts +22 -0
  84. package/dist/__tests__/production-readiness.test.d.ts.map +1 -0
  85. package/dist/__tests__/production-readiness.test.js +196 -0
  86. package/dist/__tests__/production-readiness.test.js.map +1 -0
  87. package/dist/__tests__/provider.test.d.ts +6 -0
  88. package/dist/__tests__/provider.test.d.ts.map +1 -0
  89. package/dist/__tests__/provider.test.js +122 -0
  90. package/dist/__tests__/provider.test.js.map +1 -0
  91. package/dist/__tests__/public-marker.test.d.ts +7 -0
  92. package/dist/__tests__/public-marker.test.d.ts.map +1 -0
  93. package/dist/__tests__/public-marker.test.js +54 -0
  94. package/dist/__tests__/public-marker.test.js.map +1 -0
  95. package/dist/__tests__/retry-dlq.test.d.ts +6 -0
  96. package/dist/__tests__/retry-dlq.test.d.ts.map +1 -0
  97. package/dist/__tests__/retry-dlq.test.js +68 -0
  98. package/dist/__tests__/retry-dlq.test.js.map +1 -0
  99. package/dist/__tests__/validate.test.d.ts +5 -0
  100. package/dist/__tests__/validate.test.d.ts.map +1 -0
  101. package/dist/__tests__/validate.test.js +53 -0
  102. package/dist/__tests__/validate.test.js.map +1 -0
  103. package/dist/__tests__/workflow-saga.test.d.ts +7 -0
  104. package/dist/__tests__/workflow-saga.test.d.ts.map +1 -0
  105. package/dist/__tests__/workflow-saga.test.js +239 -0
  106. package/dist/__tests__/workflow-saga.test.js.map +1 -0
  107. package/dist/actor-store.d.ts +83 -0
  108. package/dist/actor-store.d.ts.map +1 -0
  109. package/dist/actor-store.js +85 -0
  110. package/dist/actor-store.js.map +1 -0
  111. package/dist/cli-runner.d.ts +46 -0
  112. package/dist/cli-runner.d.ts.map +1 -0
  113. package/dist/cli-runner.js +164 -0
  114. package/dist/cli-runner.js.map +1 -0
  115. package/dist/create-app.d.ts +131 -0
  116. package/dist/create-app.d.ts.map +1 -0
  117. package/dist/create-app.js +593 -0
  118. package/dist/create-app.js.map +1 -0
  119. package/dist/define-action.d.ts +148 -0
  120. package/dist/define-action.d.ts.map +1 -0
  121. package/dist/define-action.js +52 -0
  122. package/dist/define-action.js.map +1 -0
  123. package/dist/define-actor.d.ts +302 -0
  124. package/dist/define-actor.d.ts.map +1 -0
  125. package/dist/define-actor.js +294 -0
  126. package/dist/define-actor.js.map +1 -0
  127. package/dist/define-app.d.ts +104 -0
  128. package/dist/define-app.d.ts.map +1 -0
  129. package/dist/define-app.js +49 -0
  130. package/dist/define-app.js.map +1 -0
  131. package/dist/define-cron.d.ts +50 -0
  132. package/dist/define-cron.d.ts.map +1 -0
  133. package/dist/define-cron.js +34 -0
  134. package/dist/define-cron.js.map +1 -0
  135. package/dist/define-error.d.ts +10 -0
  136. package/dist/define-error.d.ts.map +1 -0
  137. package/dist/define-error.js +10 -0
  138. package/dist/define-error.js.map +1 -0
  139. package/dist/define-external-call.d.ts +85 -0
  140. package/dist/define-external-call.d.ts.map +1 -0
  141. package/dist/define-external-call.js +38 -0
  142. package/dist/define-external-call.js.map +1 -0
  143. package/dist/define-handler.d.ts +98 -0
  144. package/dist/define-handler.d.ts.map +1 -0
  145. package/dist/define-handler.js +29 -0
  146. package/dist/define-handler.js.map +1 -0
  147. package/dist/define-inbound-webhook.d.ts +82 -0
  148. package/dist/define-inbound-webhook.d.ts.map +1 -0
  149. package/dist/define-inbound-webhook.js +42 -0
  150. package/dist/define-inbound-webhook.js.map +1 -0
  151. package/dist/define-inbox.d.ts +40 -0
  152. package/dist/define-inbox.d.ts.map +1 -0
  153. package/dist/define-inbox.js +31 -0
  154. package/dist/define-inbox.js.map +1 -0
  155. package/dist/define-initializer.d.ts +54 -0
  156. package/dist/define-initializer.d.ts.map +1 -0
  157. package/dist/define-initializer.js +38 -0
  158. package/dist/define-initializer.js.map +1 -0
  159. package/dist/define-middleware.d.ts +8 -0
  160. package/dist/define-middleware.d.ts.map +1 -0
  161. package/dist/define-middleware.js +8 -0
  162. package/dist/define-middleware.js.map +1 -0
  163. package/dist/define-model.d.ts +10 -0
  164. package/dist/define-model.d.ts.map +1 -0
  165. package/dist/define-model.js +13 -0
  166. package/dist/define-model.js.map +1 -0
  167. package/dist/define-module.d.ts +157 -0
  168. package/dist/define-module.d.ts.map +1 -0
  169. package/dist/define-module.js +60 -0
  170. package/dist/define-module.js.map +1 -0
  171. package/dist/define-outbox.d.ts +47 -0
  172. package/dist/define-outbox.d.ts.map +1 -0
  173. package/dist/define-outbox.js +36 -0
  174. package/dist/define-outbox.js.map +1 -0
  175. package/dist/define-plugin.d.ts +171 -0
  176. package/dist/define-plugin.d.ts.map +1 -0
  177. package/dist/define-plugin.js +134 -0
  178. package/dist/define-plugin.js.map +1 -0
  179. package/dist/define-projection.d.ts +56 -0
  180. package/dist/define-projection.d.ts.map +1 -0
  181. package/dist/define-projection.js +44 -0
  182. package/dist/define-projection.js.map +1 -0
  183. package/dist/define-provider.d.ts +49 -0
  184. package/dist/define-provider.d.ts.map +1 -0
  185. package/dist/define-provider.js +45 -0
  186. package/dist/define-provider.js.map +1 -0
  187. package/dist/define-query.d.ts +50 -0
  188. package/dist/define-query.d.ts.map +1 -0
  189. package/dist/define-query.js +33 -0
  190. package/dist/define-query.js.map +1 -0
  191. package/dist/define-resolver.d.ts +111 -0
  192. package/dist/define-resolver.d.ts.map +1 -0
  193. package/dist/define-resolver.js +146 -0
  194. package/dist/define-resolver.js.map +1 -0
  195. package/dist/define-schema.d.ts +88 -0
  196. package/dist/define-schema.d.ts.map +1 -0
  197. package/dist/define-schema.js +72 -0
  198. package/dist/define-schema.js.map +1 -0
  199. package/dist/define-workflow.d.ts +193 -0
  200. package/dist/define-workflow.d.ts.map +1 -0
  201. package/dist/define-workflow.js +345 -0
  202. package/dist/define-workflow.js.map +1 -0
  203. package/dist/dev-logger.d.ts +41 -0
  204. package/dist/dev-logger.d.ts.map +1 -0
  205. package/dist/dev-logger.js +135 -0
  206. package/dist/dev-logger.js.map +1 -0
  207. package/dist/event-message.d.ts +37 -0
  208. package/dist/event-message.d.ts.map +1 -0
  209. package/dist/event-message.js +51 -0
  210. package/dist/event-message.js.map +1 -0
  211. package/dist/foundation.d.ts +14 -0
  212. package/dist/foundation.d.ts.map +1 -0
  213. package/dist/foundation.js +14 -0
  214. package/dist/foundation.js.map +1 -0
  215. package/dist/framework-event-bus.d.ts +13 -0
  216. package/dist/framework-event-bus.d.ts.map +1 -0
  217. package/dist/framework-event-bus.js +13 -0
  218. package/dist/framework-event-bus.js.map +1 -0
  219. package/dist/framework-events.d.ts +121 -0
  220. package/dist/framework-events.d.ts.map +1 -0
  221. package/dist/framework-events.js +67 -0
  222. package/dist/framework-events.js.map +1 -0
  223. package/dist/index.d.ts +53 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +61 -0
  226. package/dist/index.js.map +1 -0
  227. package/dist/module-surface.d.ts +47 -0
  228. package/dist/module-surface.d.ts.map +1 -0
  229. package/dist/module-surface.js +65 -0
  230. package/dist/module-surface.js.map +1 -0
  231. package/dist/projection-store.d.ts +26 -0
  232. package/dist/projection-store.d.ts.map +1 -0
  233. package/dist/projection-store.js +28 -0
  234. package/dist/projection-store.js.map +1 -0
  235. package/dist/public-marker.d.ts +35 -0
  236. package/dist/public-marker.d.ts.map +1 -0
  237. package/dist/public-marker.js +45 -0
  238. package/dist/public-marker.js.map +1 -0
  239. package/dist/response.d.ts +8 -0
  240. package/dist/response.d.ts.map +1 -0
  241. package/dist/response.js +8 -0
  242. package/dist/response.js.map +1 -0
  243. package/dist/runtime.d.ts +497 -0
  244. package/dist/runtime.d.ts.map +1 -0
  245. package/dist/runtime.js +1083 -0
  246. package/dist/runtime.js.map +1 -0
  247. package/dist/validate.d.ts +33 -0
  248. package/dist/validate.d.ts.map +1 -0
  249. package/dist/validate.js +48 -0
  250. package/dist/validate.js.map +1 -0
  251. package/dist/when.d.ts +101 -0
  252. package/dist/when.d.ts.map +1 -0
  253. package/dist/when.js +57 -0
  254. package/dist/when.js.map +1 -0
  255. package/dist/workflow-timer-store.d.ts +78 -0
  256. package/dist/workflow-timer-store.d.ts.map +1 -0
  257. package/dist/workflow-timer-store.js +56 -0
  258. package/dist/workflow-timer-store.js.map +1 -0
  259. package/package.json +60 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-handler.test.js","sourceRoot":"","sources":["../../src/__tests__/inline-handler.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Lifecycle events flow into the telemetry stream and through to the dev
3
+ * logger. Every framework-event firing becomes a `kind: "lifecycle"`
4
+ * record with a `namespace` derived from the event's dotted name
5
+ * (`nwire.app.booting` → `namespace: "app"`).
6
+ *
7
+ * This is the substrate behind `nwire dev`'s lifecycle logs in the CLI
8
+ * console + Studio Live's "Lifecycle" panel — both subscribe to the
9
+ * same telemetry stream the dev logger writes to.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=lifecycle-logging.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-logging.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/lifecycle-logging.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Lifecycle events flow into the telemetry stream and through to the dev
3
+ * logger. Every framework-event firing becomes a `kind: "lifecycle"`
4
+ * record with a `namespace` derived from the event's dotted name
5
+ * (`nwire.app.booting` → `namespace: "app"`).
6
+ *
7
+ * This is the substrate behind `nwire dev`'s lifecycle logs in the CLI
8
+ * console + Studio Live's "Lifecycle" panel — both subscribe to the
9
+ * same telemetry stream the dev logger writes to.
10
+ */
11
+ import { describe, it, expect } from "vitest";
12
+ import { createApp, defineModule, definePlugin } from "../foundation.js";
13
+ import { attachDevLogger, formatTelemetry } from "../dev-logger.js";
14
+ import { AppRegistering } from "../framework-events.js";
15
+ describe("framework events → telemetry → dev logger", () => {
16
+ it("app start fires PluginRegistered + PluginBooting + PluginBooted + AppBooting + AppBooted as lifecycle records", async () => {
17
+ const records = [];
18
+ const app = createApp({
19
+ modules: [defineModule("m", {})],
20
+ plugins: [definePlugin("audit", { boot: async () => undefined })],
21
+ });
22
+ app.runtime.onTelemetry((r) => {
23
+ if (r.kind === "lifecycle")
24
+ records.push(r);
25
+ });
26
+ await app.start();
27
+ await app.stop();
28
+ const eventNames = records.map((r) => (r.kind === "lifecycle" ? r.event : "")).filter(Boolean);
29
+ // Every lifecycle event we care about should be present.
30
+ expect(eventNames).toContain("nwire.plugin.registered");
31
+ expect(eventNames).toContain("nwire.app.registering");
32
+ expect(eventNames).toContain("nwire.app.booting");
33
+ expect(eventNames).toContain("nwire.plugin.booting");
34
+ expect(eventNames).toContain("nwire.plugin.booted");
35
+ expect(eventNames).toContain("nwire.app.booted");
36
+ expect(eventNames).toContain("nwire.app.shutting-down");
37
+ expect(eventNames).toContain("nwire.plugin.shutting-down");
38
+ expect(eventNames).toContain("nwire.plugin.shutdown");
39
+ expect(eventNames).toContain("nwire.app.shutdown");
40
+ });
41
+ it("namespace is derived from the second dotted segment", async () => {
42
+ const records = [];
43
+ const app = createApp({
44
+ modules: [defineModule("m", {})],
45
+ plugins: [definePlugin("audit", {})],
46
+ });
47
+ app.runtime.onTelemetry((r) => {
48
+ if (r.kind === "lifecycle")
49
+ records.push(r);
50
+ });
51
+ await app.start();
52
+ await app.stop();
53
+ const namespaces = new Set(records
54
+ .filter((r) => r.kind === "lifecycle")
55
+ .map((r) => r.namespace));
56
+ expect(namespaces.has("app")).toBe(true);
57
+ expect(namespaces.has("plugin")).toBe(true);
58
+ });
59
+ it("dev logger formats lifecycle records with namespace + name", async () => {
60
+ const lines = [];
61
+ const app = createApp({
62
+ modules: [defineModule("m", {})],
63
+ plugins: [definePlugin("trace", { boot: async () => undefined })],
64
+ devLogs: false, // disable auto-attach; we'll attach manually with a buffer
65
+ });
66
+ attachDevLogger(app.runtime, {
67
+ write: (line) => lines.push(line),
68
+ });
69
+ await app.start();
70
+ await app.stop();
71
+ // Multiple lifecycle lines should be present.
72
+ const lifecycleLines = lines.filter((l) => l.includes("nwire:"));
73
+ expect(lifecycleLines.length).toBeGreaterThan(5);
74
+ // Plugin-booted line should include the plugin name (`trace`).
75
+ const booted = lifecycleLines.find((l) => l.includes("plugin.booted"));
76
+ expect(booted).toBeTruthy();
77
+ expect(booted).toContain("trace");
78
+ });
79
+ it("formatTelemetry handles lifecycle records standalone", () => {
80
+ const rec = {
81
+ kind: "lifecycle",
82
+ event: "nwire.wire.mounted",
83
+ namespace: "wire",
84
+ payload: { transport: "http" },
85
+ phase: "fired",
86
+ appName: "test",
87
+ ts: new Date().toISOString(),
88
+ };
89
+ const line = formatTelemetry(rec);
90
+ expect(line).toContain("nwire:wire");
91
+ expect(line).toContain("wire.mounted");
92
+ expect(line).toContain("http");
93
+ });
94
+ it("series-bail veto fires lifecycle with phase=prevented", async () => {
95
+ const records = [];
96
+ const blocker = definePlugin("blocker", ({ on }) => {
97
+ on(AppRegistering, () => false);
98
+ });
99
+ const app = createApp({
100
+ modules: [defineModule("m", {})],
101
+ plugins: [blocker],
102
+ });
103
+ app.runtime.onTelemetry((r) => {
104
+ if (r.kind === "lifecycle")
105
+ records.push(r);
106
+ });
107
+ await expect(app.start()).rejects.toThrow(/Boot prevented/);
108
+ const prevented = records.find((r) => r.event === "nwire.app.registering");
109
+ expect(prevented?.phase).toBe("prevented");
110
+ });
111
+ });
112
+ //# sourceMappingURL=lifecycle-logging.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-logging.test.js","sourceRoot":"","sources":["../../src/__tests__/lifecycle-logging.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Dispatch middleware contract — onion-style layers around action dispatch.
3
+ * Layers run outside the retry loop (one pass per dispatch). Registration
4
+ * order is execution order: the first `use(m)` is the outermost layer.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=middleware.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/middleware.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Dispatch middleware contract — onion-style layers around action dispatch.
3
+ * Layers run outside the retry loop (one pass per dispatch). Registration
4
+ * order is execution order: the first `use(m)` is the outermost layer.
5
+ */
6
+ import { describe, it, expect } from "vitest";
7
+ import { z } from "zod";
8
+ import * as forge from "../foundation.js";
9
+ const { defineAction, defineHandler, Runtime } = forge;
10
+ describe("runtime middleware", () => {
11
+ it("wraps the handler call exactly once per dispatch", async () => {
12
+ const action = defineAction({ name: "mw.simple", schema: z.object({}) });
13
+ const handler = defineHandler(action, async () => undefined);
14
+ const calls = [];
15
+ const runtime = new Runtime();
16
+ runtime.registerHandler(handler);
17
+ runtime.use(async (next) => {
18
+ calls.push("before");
19
+ const result = await next();
20
+ calls.push("after");
21
+ return result;
22
+ });
23
+ await runtime.dispatch(action, {});
24
+ expect(calls).toEqual(["before", "after"]);
25
+ });
26
+ it("runs middlewares in registration order (outermost first)", async () => {
27
+ const action = defineAction({ name: "mw.order", schema: z.object({}) });
28
+ const handler = defineHandler(action, async () => undefined);
29
+ const trace = [];
30
+ const runtime = new Runtime();
31
+ runtime.registerHandler(handler);
32
+ runtime.use(async (next) => {
33
+ trace.push("outer:before");
34
+ await next();
35
+ trace.push("outer:after");
36
+ });
37
+ runtime.use(async (next) => {
38
+ trace.push("inner:before");
39
+ await next();
40
+ trace.push("inner:after");
41
+ });
42
+ await runtime.dispatch(action, {});
43
+ expect(trace).toEqual(["outer:before", "inner:before", "inner:after", "outer:after"]);
44
+ });
45
+ it("middleware can short-circuit without calling next", async () => {
46
+ const action = defineAction({ name: "mw.shortcircuit", schema: z.object({}) });
47
+ let handlerRan = false;
48
+ const handler = defineHandler(action, async () => {
49
+ handlerRan = true;
50
+ return undefined;
51
+ });
52
+ const runtime = new Runtime();
53
+ runtime.registerHandler(handler);
54
+ runtime.use(async () => {
55
+ // intentionally do not call next()
56
+ return undefined;
57
+ });
58
+ await runtime.dispatch(action, {});
59
+ expect(handlerRan).toBe(false);
60
+ });
61
+ it("middleware sees the action definition, validated input, and envelope-scoped ctx", async () => {
62
+ const action = defineAction({
63
+ name: "mw.inspect",
64
+ schema: z.object({ studentId: z.string() }),
65
+ });
66
+ const handler = defineHandler(action, async () => undefined);
67
+ let seenName = "";
68
+ let seenInput;
69
+ let seenTenant;
70
+ const runtime = new Runtime();
71
+ runtime.registerHandler(handler);
72
+ runtime.use(async (next, def, input, ctx) => {
73
+ seenName = def.name;
74
+ seenInput = input;
75
+ seenTenant = ctx.envelope.tenant;
76
+ return next();
77
+ });
78
+ await runtime.dispatch(action, { studentId: "avi-1" });
79
+ expect(seenName).toBe("mw.inspect");
80
+ expect(seenInput).toEqual({ studentId: "avi-1" });
81
+ // dispatch without a parent envelope seeds a fresh one with no tenant
82
+ expect(seenTenant).toBeUndefined();
83
+ });
84
+ it("middleware runs once per dispatch even when the handler retries internally", async () => {
85
+ const action = defineAction({
86
+ name: "mw.retry",
87
+ schema: z.object({}),
88
+ retry: { max: 2, backoff: "fixed", baseDelayMs: 1 },
89
+ });
90
+ let handlerCalls = 0;
91
+ const handler = defineHandler(action, async () => {
92
+ handlerCalls++;
93
+ if (handlerCalls < 3)
94
+ throw new Error(`flake ${handlerCalls}`);
95
+ return undefined;
96
+ });
97
+ let mwCalls = 0;
98
+ const runtime = new Runtime();
99
+ runtime.registerHandler(handler);
100
+ runtime.use(async (next) => {
101
+ mwCalls++;
102
+ return next();
103
+ });
104
+ await runtime.dispatch(action, {});
105
+ expect(handlerCalls).toBe(3);
106
+ expect(mwCalls).toBe(1);
107
+ });
108
+ });
109
+ //# sourceMappingURL=middleware.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.test.js","sourceRoot":"","sources":["../../src/__tests__/middleware.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Module `needs` — explicit cross-module dep graph validated at createApp.
3
+ *
4
+ * Each module's `events: [...]` and `actions: [...]` arrays are its implicit
5
+ * provides. `needs: { events?, actions? }` lists what this module consumes
6
+ * from OTHER modules. createApp validates that every need has a provider,
7
+ * with visibility checks for events.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=module-needs.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-needs.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/module-needs.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Module `needs` — explicit cross-module dep graph validated at createApp.
3
+ *
4
+ * Each module's `events: [...]` and `actions: [...]` arrays are its implicit
5
+ * provides. `needs: { events?, actions? }` lists what this module consumes
6
+ * from OTHER modules. createApp validates that every need has a provider,
7
+ * with visibility checks for events.
8
+ */
9
+ import { describe, it, expect } from "vitest";
10
+ import { z } from "zod";
11
+ import { defineEvent } from "@nwire/messages";
12
+ import { defineAction, defineModule, createApp } from "../foundation.js";
13
+ const PublishedEvent = defineEvent({
14
+ name: "test.published",
15
+ schema: z.object({ id: z.string() }),
16
+ });
17
+ const InternalEvent = defineEvent({
18
+ name: "test.internal",
19
+ schema: z.object({ id: z.string() }),
20
+ visibility: "internal",
21
+ });
22
+ const publicAction = defineAction({
23
+ name: "test.public-action",
24
+ schema: z.object({}),
25
+ });
26
+ describe("module needs / provides dep graph", () => {
27
+ it("passes when every needed event/action is provided + .public() by another module", () => {
28
+ const producer = defineModule("producer", {
29
+ events: [PublishedEvent.public()],
30
+ actions: [publicAction.public()],
31
+ });
32
+ const consumer = defineModule("consumer", {
33
+ needs: {
34
+ events: [PublishedEvent],
35
+ actions: [publicAction],
36
+ },
37
+ });
38
+ // Should not throw.
39
+ createApp({ modules: [producer, consumer] });
40
+ });
41
+ it("throws when a needed event has no provider and no bus", () => {
42
+ const consumer = defineModule("consumer", {
43
+ needs: { events: [PublishedEvent] },
44
+ });
45
+ expect(() => createApp({ modules: [consumer] })).toThrow(/needs event "test\.published" but no module in this app provides it and no bus is configured/);
46
+ });
47
+ it("throws when a needed action has no provider", () => {
48
+ const consumer = defineModule("consumer", {
49
+ needs: { actions: [publicAction] },
50
+ });
51
+ expect(() => createApp({ modules: [consumer] })).toThrow(/needs action "test\.public-action" but no module provides it/);
52
+ });
53
+ it("throws on self-reference (a module needing its own event)", () => {
54
+ const selfish = defineModule("selfish", {
55
+ events: [PublishedEvent.public()],
56
+ needs: { events: [PublishedEvent] },
57
+ });
58
+ expect(() => createApp({ modules: [selfish] })).toThrow(/provides it itself/);
59
+ });
60
+ it("throws when a needed event was not marked .public() in its owning module", () => {
61
+ const producer = defineModule("producer", {
62
+ events: [InternalEvent], // no .public() → internal
63
+ });
64
+ const consumer = defineModule("consumer", {
65
+ needs: { events: [InternalEvent] },
66
+ });
67
+ expect(() => createApp({ modules: [producer, consumer] })).toThrow(/marks it as visibility: 'internal'/);
68
+ });
69
+ it("a module without `needs` is unaffected (back-compat)", () => {
70
+ const lonely = defineModule("lonely", {
71
+ events: [PublishedEvent],
72
+ });
73
+ // Should not throw — no needs declared.
74
+ createApp({ modules: [lonely] });
75
+ });
76
+ });
77
+ //# sourceMappingURL=module-needs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-needs.test.js","sourceRoot":"","sources":["../../src/__tests__/module-needs.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `createApp` topologically sorts modules by `needs.events` /
3
+ * `needs.actions` before registering them with the runtime. Producers
4
+ * register before consumers regardless of declaration order. Cycles
5
+ * throw a readable error naming every module on the loop.
6
+ *
7
+ * Registration order is observable through `runtime.frameworkEvents`
8
+ * (PluginRegistered fires in topo order for plugins, and we use the
9
+ * module loop's order via the same lens here by registering a probe
10
+ * plugin that records each module's name as it's seen — but for a
11
+ * leaner test we just construct two modules and assert no throw +
12
+ * cycle detection.
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=module-topo-sort.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-topo-sort.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/module-topo-sort.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * `createApp` topologically sorts modules by `needs.events` /
3
+ * `needs.actions` before registering them with the runtime. Producers
4
+ * register before consumers regardless of declaration order. Cycles
5
+ * throw a readable error naming every module on the loop.
6
+ *
7
+ * Registration order is observable through `runtime.frameworkEvents`
8
+ * (PluginRegistered fires in topo order for plugins, and we use the
9
+ * module loop's order via the same lens here by registering a probe
10
+ * plugin that records each module's name as it's seen — but for a
11
+ * leaner test we just construct two modules and assert no throw +
12
+ * cycle detection.
13
+ */
14
+ import { describe, it, expect } from "vitest";
15
+ import { z } from "zod";
16
+ import { defineEvent } from "@nwire/messages";
17
+ import { defineAction, defineModule, createApp } from "../foundation.js";
18
+ describe("createApp topological module sort", () => {
19
+ it("producer-first order is preserved when declared producer-first", async () => {
20
+ const SubmittedEvent = defineEvent({
21
+ name: "submissions.submitted",
22
+ schema: z.object({ submissionId: z.string() }),
23
+ }).public();
24
+ const submitAction = defineAction({
25
+ name: "submissions.submit",
26
+ schema: z.object({ id: z.string() }),
27
+ handler: async () => undefined,
28
+ });
29
+ const submissions = defineModule("submissions", {
30
+ events: [SubmittedEvent],
31
+ actions: [submitAction],
32
+ });
33
+ const mastery = defineModule("mastery", {
34
+ needs: { events: [SubmittedEvent] },
35
+ });
36
+ const app = createApp({ modules: [submissions, mastery] });
37
+ expect(app.modules.map((m) => m.name)).toEqual(["submissions", "mastery"]);
38
+ await app.start();
39
+ await app.stop();
40
+ });
41
+ it("reverse-declared order is FIXED — consumer first → topo flips to producer first", async () => {
42
+ const PaymentChargedEvent = defineEvent({
43
+ name: "payments.charged",
44
+ schema: z.object({ paymentId: z.string() }),
45
+ }).public();
46
+ const chargeAction = defineAction({
47
+ name: "payments.charge",
48
+ schema: z.object({ amount: z.number() }),
49
+ handler: async () => undefined,
50
+ });
51
+ const payments = defineModule("payments", {
52
+ events: [PaymentChargedEvent],
53
+ actions: [chargeAction],
54
+ });
55
+ const ledger = defineModule("ledger", {
56
+ needs: { events: [PaymentChargedEvent] },
57
+ });
58
+ // Declared consumer-first; topo sort must reorder to producer-first.
59
+ const app = createApp({ modules: [ledger, payments] });
60
+ expect(app.modules.map((m) => m.name)).toEqual(["ledger", "payments"]); // declared modules are preserved
61
+ // The actual REGISTRATION pass uses the sorted order under the hood.
62
+ // We can't observe that order without a more invasive probe; the
63
+ // primary contract is "no error + start() works." The cycle test
64
+ // below proves the sort logic is actually consulting needs.
65
+ await app.start();
66
+ await app.stop();
67
+ });
68
+ it("throws a readable error when modules form a cycle", () => {
69
+ const FooEvent = defineEvent({
70
+ name: "foo.happened",
71
+ schema: z.object({ id: z.string() }),
72
+ }).public();
73
+ const BarEvent = defineEvent({
74
+ name: "bar.happened",
75
+ schema: z.object({ id: z.string() }),
76
+ }).public();
77
+ const foo = defineModule("foo", {
78
+ events: [FooEvent],
79
+ needs: { events: [BarEvent] },
80
+ });
81
+ const bar = defineModule("bar", {
82
+ events: [BarEvent],
83
+ needs: { events: [FooEvent] },
84
+ });
85
+ expect(() => createApp({ modules: [foo, bar] })).toThrow(/cycle detected in module needs graph among: bar, foo/);
86
+ });
87
+ it("three-module chain orders correctly regardless of declaration order", async () => {
88
+ const AEvent = defineEvent({
89
+ name: "a.happened",
90
+ schema: z.object({ id: z.string() }),
91
+ }).public();
92
+ const BEvent = defineEvent({
93
+ name: "b.happened",
94
+ schema: z.object({ id: z.string() }),
95
+ }).public();
96
+ const a = defineModule("a", { events: [AEvent] });
97
+ const b = defineModule("b", { events: [BEvent], needs: { events: [AEvent] } });
98
+ const c = defineModule("c", { needs: { events: [BEvent] } });
99
+ // Declared c → a → b; topo order should produce a → b → c.
100
+ const app = createApp({ modules: [c, a, b] });
101
+ await app.start();
102
+ await app.stop();
103
+ });
104
+ });
105
+ //# sourceMappingURL=module-topo-sort.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-topo-sort.test.js","sourceRoot":"","sources":["../../src/__tests__/module-topo-sort.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Multi-tenancy contract — same actor key in two tenants stays fully isolated.
3
+ *
4
+ * The envelope's `tenant` field flows through every store operation. Two
5
+ * tenants can submit, transition, and read with the same id without
6
+ * leakage. Cross-tenant scans require explicit code (the timer scheduler
7
+ * does this; nothing else should).
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=multi-tenancy.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-tenancy.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/multi-tenancy.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}