@nwire/forge 0.7.1 → 0.8.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 (75) hide show
  1. package/README.md +88 -59
  2. package/dist/__tests__/action-hooks.test.d.ts +8 -0
  3. package/dist/__tests__/action-hooks.test.d.ts.map +1 -0
  4. package/dist/__tests__/action-hooks.test.js +95 -0
  5. package/dist/__tests__/action-hooks.test.js.map +1 -0
  6. package/dist/__tests__/actor-workflow-hooks.test.d.ts +8 -0
  7. package/dist/__tests__/actor-workflow-hooks.test.d.ts.map +1 -0
  8. package/dist/__tests__/actor-workflow-hooks.test.js +104 -0
  9. package/dist/__tests__/actor-workflow-hooks.test.js.map +1 -0
  10. package/dist/__tests__/lifecycle-logging.test.js +4 -2
  11. package/dist/__tests__/lifecycle-logging.test.js.map +1 -1
  12. package/dist/__tests__/plugin-stress.test.d.ts +21 -0
  13. package/dist/__tests__/plugin-stress.test.d.ts.map +1 -0
  14. package/dist/__tests__/plugin-stress.test.js +203 -0
  15. package/dist/__tests__/plugin-stress.test.js.map +1 -0
  16. package/dist/actor-store.d.ts +24 -0
  17. package/dist/actor-store.d.ts.map +1 -1
  18. package/dist/actor-store.js +29 -0
  19. package/dist/actor-store.js.map +1 -1
  20. package/dist/create-app.d.ts +7 -0
  21. package/dist/create-app.d.ts.map +1 -1
  22. package/dist/create-app.js +101 -10
  23. package/dist/create-app.js.map +1 -1
  24. package/dist/define-action.d.ts +4 -2
  25. package/dist/define-action.d.ts.map +1 -1
  26. package/dist/define-action.js +9 -6
  27. package/dist/define-action.js.map +1 -1
  28. package/dist/define-actor.d.ts +3 -1
  29. package/dist/define-actor.d.ts.map +1 -1
  30. package/dist/define-actor.js +11 -4
  31. package/dist/define-actor.js.map +1 -1
  32. package/dist/define-handler.d.ts +21 -2
  33. package/dist/define-handler.d.ts.map +1 -1
  34. package/dist/define-handler.js +3 -1
  35. package/dist/define-handler.js.map +1 -1
  36. package/dist/define-module.d.ts +3 -0
  37. package/dist/define-module.d.ts.map +1 -1
  38. package/dist/define-module.js +3 -0
  39. package/dist/define-module.js.map +1 -1
  40. package/dist/define-plugin.d.ts +4 -1
  41. package/dist/define-plugin.d.ts.map +1 -1
  42. package/dist/define-plugin.js +34 -14
  43. package/dist/define-plugin.js.map +1 -1
  44. package/dist/define-projection.d.ts +3 -1
  45. package/dist/define-projection.d.ts.map +1 -1
  46. package/dist/define-projection.js +3 -0
  47. package/dist/define-projection.js.map +1 -1
  48. package/dist/define-query.d.ts +3 -1
  49. package/dist/define-query.d.ts.map +1 -1
  50. package/dist/define-query.js +2 -0
  51. package/dist/define-query.js.map +1 -1
  52. package/dist/define-workflow.d.ts +19 -1
  53. package/dist/define-workflow.d.ts.map +1 -1
  54. package/dist/define-workflow.js +4 -0
  55. package/dist/define-workflow.js.map +1 -1
  56. package/dist/dev-logger.d.ts.map +1 -1
  57. package/dist/dev-logger.js +19 -1
  58. package/dist/dev-logger.js.map +1 -1
  59. package/dist/framework-events.d.ts +1 -64
  60. package/dist/framework-events.d.ts.map +1 -1
  61. package/dist/framework-events.js +3 -0
  62. package/dist/framework-events.js.map +1 -1
  63. package/dist/idempotency-store.d.ts +35 -0
  64. package/dist/idempotency-store.d.ts.map +1 -0
  65. package/dist/idempotency-store.js +32 -0
  66. package/dist/idempotency-store.js.map +1 -0
  67. package/dist/index.d.ts +2 -0
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +1 -0
  70. package/dist/index.js.map +1 -1
  71. package/dist/runtime.d.ts +197 -3
  72. package/dist/runtime.d.ts.map +1 -1
  73. package/dist/runtime.js +495 -44
  74. package/dist/runtime.js.map +1 -1
  75. package/package.json +11 -10
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Plugin + module lifecycle stress test.
3
+ *
4
+ * Covers the failure modes that aren't exercised by `plugin.test.ts` /
5
+ * `plugin-closure.test.ts` / `lifecycle-logging.test.ts`:
6
+ *
7
+ * 1. Cross-plugin DI — plugin B reads plugin A's binding in its boot.
8
+ * 2. Slow boot timing — PluginBooted carries a real `durationMs`.
9
+ * 3. Boot failure recovery — A boots, B throws, stop() still cleans A.
10
+ * 4. Shutdown isolation — first plugin's shutdown throws but second still runs;
11
+ * the error surfaces from app.stop().
12
+ * 5. Ordering at scale — 10 plugins boot in registration order, shutdown reverse.
13
+ * 6. Module + plugin mixed — PluginRegistered fires with `kind:"module"` for
14
+ * modules first (topo order) then `kind:"plugin"` for plugins.
15
+ *
16
+ * Style follows `lifecycle-logging.test.ts` — real `createApp`, real
17
+ * `app.start()/stop()`, observe via the runtime's framework event bus
18
+ * (`runtime.frameworkEvents.onFire(...)`) and per-event subscriptions.
19
+ */
20
+ import { describe, it, expect } from "vitest";
21
+ import { createApp, defineModule, definePlugin, } from "../foundation.js";
22
+ import { PluginRegistered, PluginBooted, } from "../framework-events.js";
23
+ import { InMemoryContainer } from "@nwire/container";
24
+ describe("plugin + module lifecycle stress", () => {
25
+ it("cross-plugin DI: plugin B's boot resolves a binding plugin A provided", async () => {
26
+ const pluginA = definePlugin("provider", ({ bind }) => {
27
+ bind("config-service", () => ({ name: "from-A" }));
28
+ });
29
+ const seen = [];
30
+ const pluginB = definePlugin("consumer", {
31
+ boot: (container) => {
32
+ seen.push(container.resolve("config-service"));
33
+ },
34
+ });
35
+ const app = createApp({
36
+ container: new InMemoryContainer(),
37
+ modules: [],
38
+ plugins: [pluginA, pluginB],
39
+ devLogs: false,
40
+ });
41
+ await app.start();
42
+ await app.stop();
43
+ expect(seen).toHaveLength(1);
44
+ expect(seen[0]).toEqual({ name: "from-A" });
45
+ });
46
+ it("slow boot timing: PluginBooted carries a durationMs >= the sleep", async () => {
47
+ const SLEEP_MS = 150;
48
+ const TOLERANCE_MS = 120;
49
+ const slow = definePlugin("slow-boot", {
50
+ boot: async () => {
51
+ await new Promise((resolve) => setTimeout(resolve, SLEEP_MS));
52
+ },
53
+ });
54
+ const app = createApp({
55
+ container: new InMemoryContainer(),
56
+ modules: [],
57
+ plugins: [slow],
58
+ devLogs: false,
59
+ });
60
+ const observed = [];
61
+ app.runtime.frameworkEvents.on(PluginBooted, (payload) => {
62
+ observed.push({ name: payload.pluginName, durationMs: payload.durationMs });
63
+ });
64
+ await app.start();
65
+ await app.stop();
66
+ const slowRecord = observed.find((r) => r.name === "slow-boot");
67
+ expect(slowRecord).toBeDefined();
68
+ expect(slowRecord.durationMs).toBeGreaterThanOrEqual(TOLERANCE_MS);
69
+ });
70
+ it("boot failure recovery: B throws, A booted, stop() still cleans up A", async () => {
71
+ const bootErr = new Error("plugin B boot exploded");
72
+ const pluginA = definePlugin("a", {
73
+ boot: () => {
74
+ /* succeeds */
75
+ },
76
+ });
77
+ const pluginB = definePlugin("b", {
78
+ boot: () => {
79
+ throw bootErr;
80
+ },
81
+ });
82
+ const pluginC = definePlugin("c", {
83
+ boot: () => {
84
+ /* should never run — B's failure aborts boot */
85
+ },
86
+ });
87
+ const app = createApp({
88
+ container: new InMemoryContainer(),
89
+ modules: [],
90
+ plugins: [pluginA, pluginB, pluginC],
91
+ devLogs: false,
92
+ });
93
+ const bootedNames = [];
94
+ app.runtime.frameworkEvents.on(PluginBooted, (payload) => {
95
+ bootedNames.push(payload.pluginName);
96
+ });
97
+ const shutdownNames = [];
98
+ // Use the catch-all observer the dev logger / Studio use, so we see
99
+ // every firing regardless of subscriber count.
100
+ app.runtime.frameworkEvents.onFire((rec) => {
101
+ if (rec.eventName === "nwire.plugin.shutdown") {
102
+ const p = rec.payload;
103
+ shutdownNames.push(p.pluginName);
104
+ }
105
+ });
106
+ await expect(app.start()).rejects.toBe(bootErr);
107
+ // A booted before B threw. C should NOT have booted.
108
+ expect(bootedNames).toContain("a");
109
+ expect(bootedNames).not.toContain("c");
110
+ // Now tear the app down — shutdown should still emit PluginShutdown
111
+ // events in reverse declaration order so observers see a clean close.
112
+ await app.stop();
113
+ // A must appear in the shutdown sweep regardless of B's boot failure.
114
+ expect(shutdownNames).toContain("a");
115
+ // Reverse order: C is iterated first, then B, then A. (Their
116
+ // shutdown callbacks are no-ops because none was registered, but
117
+ // the framework still fires the lifecycle events.)
118
+ const aIdx = shutdownNames.indexOf("a");
119
+ const cIdx = shutdownNames.indexOf("c");
120
+ if (cIdx >= 0) {
121
+ // When C appears (framework also fires shutdown events for plugins
122
+ // that never booted), it must come BEFORE A.
123
+ expect(cIdx).toBeLessThan(aIdx);
124
+ }
125
+ });
126
+ it("shutdown isolation: first plugin's shutdown throws, second still runs, error surfaces from stop()", async () => {
127
+ const shutErr = new Error("plugin A shutdown failed");
128
+ const cleanupRan = [];
129
+ const pluginA = definePlugin("a", {
130
+ shutdown: () => {
131
+ cleanupRan.push("a-attempted");
132
+ throw shutErr;
133
+ },
134
+ });
135
+ const pluginB = definePlugin("b", {
136
+ shutdown: () => {
137
+ cleanupRan.push("b-ran");
138
+ },
139
+ });
140
+ const app = createApp({
141
+ container: new InMemoryContainer(),
142
+ modules: [],
143
+ plugins: [pluginA, pluginB],
144
+ devLogs: false,
145
+ });
146
+ await app.start();
147
+ // Shutdown order is reverse: B first, then A. B should run cleanly;
148
+ // then A throws. The framework must surface A's error but only AFTER
149
+ // every other shutdown step has run.
150
+ await expect(app.stop()).rejects.toBe(shutErr);
151
+ expect(cleanupRan).toEqual(["b-ran", "a-attempted"]);
152
+ });
153
+ it("ordering at scale: 10 plugins boot in registration order, shutdown reverse", async () => {
154
+ const boots = [];
155
+ const shutdowns = [];
156
+ const plugins = Array.from({ length: 10 }, (_, i) => {
157
+ const name = `p${i}`;
158
+ return definePlugin(name, {
159
+ boot: () => {
160
+ boots.push(name);
161
+ },
162
+ shutdown: () => {
163
+ shutdowns.push(name);
164
+ },
165
+ });
166
+ });
167
+ const app = createApp({
168
+ container: new InMemoryContainer(),
169
+ modules: [],
170
+ plugins,
171
+ devLogs: false,
172
+ });
173
+ await app.start();
174
+ await app.stop();
175
+ expect(boots).toEqual(["p0", "p1", "p2", "p3", "p4", "p5", "p6", "p7", "p8", "p9"]);
176
+ expect(shutdowns).toEqual(["p9", "p8", "p7", "p6", "p5", "p4", "p3", "p2", "p1", "p0"]);
177
+ });
178
+ it("module + plugin mixed: PluginRegistered fires for modules first (topo) then plugins, with correct kind", async () => {
179
+ const moduleA = defineModule("mod-a", {});
180
+ const moduleB = defineModule("mod-b", {});
181
+ const pluginX = definePlugin("plug-x", {});
182
+ const pluginY = definePlugin("plug-y", {});
183
+ const app = createApp({
184
+ container: new InMemoryContainer(),
185
+ modules: [moduleA, moduleB],
186
+ plugins: [pluginX, pluginY],
187
+ devLogs: false,
188
+ });
189
+ const registrations = [];
190
+ app.runtime.frameworkEvents.on(PluginRegistered, (payload) => {
191
+ registrations.push({ pluginName: payload.pluginName, kind: payload.kind });
192
+ });
193
+ await app.start();
194
+ await app.stop();
195
+ expect(registrations).toEqual([
196
+ { pluginName: "mod-a", kind: "module" },
197
+ { pluginName: "mod-b", kind: "module" },
198
+ { pluginName: "plug-x", kind: "plugin" },
199
+ { pluginName: "plug-y", kind: "plugin" },
200
+ ]);
201
+ });
202
+ });
203
+ //# sourceMappingURL=plugin-stress.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-stress.test.js","sourceRoot":"","sources":["../../src/__tests__/plugin-stress.test.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,19 @@ export interface ActorStore {
50
50
  * index `activeTimers.fireAt` for efficient querying.
51
51
  */
52
52
  listInstances(actorName: string, tenant?: string): Promise<readonly ActorInstance[]>;
53
+ /**
54
+ * Acquire a per-(actor, key, tenant) lock; resolve when the lock is
55
+ * held and return an `unlock` function. The runtime takes the lock
56
+ * around `load → reduce → save` so concurrent dispatches against the
57
+ * same actor key serialize — invariant safety without depending on
58
+ * storage-native locking.
59
+ *
60
+ * Implementations backed by real databases should prefer row-level
61
+ * locking (`SELECT … FOR UPDATE`, Mongo `findOneAndUpdate`, etc.)
62
+ * and treat this method as a no-op; in-memory stores need an explicit
63
+ * per-key Promise chain to avoid last-write-wins under burst load.
64
+ */
65
+ lockKey?(actorName: string, key: string, tenant?: string): Promise<() => void>;
53
66
  }
54
67
  /**
55
68
  * Process-local in-memory store. Each save deep-clones the instance to prevent
@@ -57,12 +70,23 @@ export interface ActorStore {
57
70
  */
58
71
  export declare class InMemoryActorStore implements ActorStore {
59
72
  private readonly entries;
73
+ /**
74
+ * Per-(actor, key, tenant) lock chain. Each lock acquisition awaits the
75
+ * tail of the chain and replaces it with its own resolved-on-release
76
+ * Promise. Concurrent dispatches against the same actor key serialize
77
+ * cleanly; different keys (or different actors / tenants) stay
78
+ * independent. Without this, two simultaneous dispatches both load the
79
+ * same pre-state, both compute next state, and the second save wins —
80
+ * the first event's effect vanishes.
81
+ */
82
+ private readonly lockChain;
60
83
  /**
61
84
  * Storage key includes tenant first so prefix scans by `(actor, tenant)`
62
85
  * are O(matching tenant) — and across-tenant scans (no tenant) are O(N)
63
86
  * by intent.
64
87
  */
65
88
  private cacheKey;
89
+ lockKey(actorName: string, key: string, tenant?: string): Promise<() => void>;
66
90
  load(actorName: string, key: string, tenant?: string): Promise<ActorInstance | null>;
67
91
  save(instance: ActorInstance): Promise<void>;
68
92
  exists(actorName: string, key: string, tenant?: string): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"actor-store.d.ts","sourceRoot":"","sources":["../src/actor-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,WAAW,aAAa,CAAC,KAAK,GAAG,OAAO;IAC5C,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gEAAgE;IAChE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACrF,IAAI,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E;;;;;;OAMG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAAC;CACtF;AAED;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,UAAU;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAE5D;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAIV,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAKxF,IAAI,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7E,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC;IAW1F,+DAA+D;IAC/D,IAAI,IAAI,MAAM;IAId,+CAA+C;IAC/C,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,KAAK;CAYd;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAW,GAClB,aAAa,CAWf"}
1
+ {"version":3,"file":"actor-store.d.ts","sourceRoot":"","sources":["../src/actor-store.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,16 @@
15
15
  */
16
16
  export class InMemoryActorStore {
17
17
  entries = new Map();
18
+ /**
19
+ * Per-(actor, key, tenant) lock chain. Each lock acquisition awaits the
20
+ * tail of the chain and replaces it with its own resolved-on-release
21
+ * Promise. Concurrent dispatches against the same actor key serialize
22
+ * cleanly; different keys (or different actors / tenants) stay
23
+ * independent. Without this, two simultaneous dispatches both load the
24
+ * same pre-state, both compute next state, and the second save wins —
25
+ * the first event's effect vanishes.
26
+ */
27
+ lockChain = new Map();
18
28
  /**
19
29
  * Storage key includes tenant first so prefix scans by `(actor, tenant)`
20
30
  * are O(matching tenant) — and across-tenant scans (no tenant) are O(N)
@@ -23,6 +33,25 @@ export class InMemoryActorStore {
23
33
  cacheKey(actorName, key, tenant) {
24
34
  return `${tenant}::${actorName}::${key}`;
25
35
  }
36
+ async lockKey(actorName, key, tenant = "") {
37
+ const k = this.cacheKey(actorName, key, tenant);
38
+ const prev = this.lockChain.get(k) ?? Promise.resolve();
39
+ let release;
40
+ const next = new Promise((resolve) => {
41
+ release = resolve;
42
+ });
43
+ this.lockChain.set(k, next);
44
+ await prev;
45
+ return () => {
46
+ release();
47
+ // Clean up the chain entry IFF it's still ours — a later
48
+ // acquisition will have already replaced the value. Without this
49
+ // guard, slow chains keep `next` rooted indefinitely.
50
+ if (this.lockChain.get(k) === next) {
51
+ this.lockChain.delete(k);
52
+ }
53
+ };
54
+ }
26
55
  async load(actorName, key, tenant = "") {
27
56
  const stored = this.entries.get(this.cacheKey(actorName, key, tenant));
28
57
  return stored ? this.clone(stored) : null;
@@ -1 +1 @@
1
- {"version":3,"file":"actor-store.js","sourceRoot":"","sources":["../src/actor-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgDH;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACZ,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE5D;;;;OAIG;IACK,QAAQ,CAAC,SAAiB,EAAE,GAAW,EAAE,MAAc;QAC7D,OAAO,GAAG,MAAM,KAAK,SAAS,KAAK,GAAG,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,GAAW,EAAE,SAAiB,EAAE;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QACvE,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAuB;QAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,EAChE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CACrB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,GAAW,EAAE,SAAiB,EAAE;QAC9D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,MAAe;QACpD,MAAM,MAAM,GAAoB,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7C,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;gBAAE,SAAS;YAC5C,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;gBAAE,SAAS;YAC9D,KAAK,QAAQ,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,+DAA+D;IAC/D,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,+CAA+C;IAC/C,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,QAAuB;QACnC,OAAO;YACL,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,IAAI,EAAE,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;YACpC,YAAY,EAAE,eAAe,CAAC,QAAQ,CAAC,YAAY,CAElD;SACF,CAAC;IACJ,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAsB,EACtB,GAAW,EACX,SAAiB,EAAE;IAEnB,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,GAAG;QACH,MAAM;QACN,KAAK,EAAE,KAAK,CAAC,OAAO;QACpB,iEAAiE;QACjE,oDAAoD;QACpD,IAAI,EAAE,EAAa;QACnB,YAAY,EAAE,EAAE;KACjB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"actor-store.js","sourceRoot":"","sources":["../src/actor-store.ts"],"names":[],"mappings":"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"}
@@ -104,6 +104,13 @@ export interface App {
104
104
  readonly $nwireApp: true;
105
105
  readonly runtime: Runtime;
106
106
  readonly modules: readonly ModuleDefinition[];
107
+ /**
108
+ * Plugins registered into this app. Includes only proper plugins —
109
+ * modules participate in the SAME lifecycle event surface (PluginRegistered
110
+ * etc., with kind:"module") but appear in `modules`, not here. Scan +
111
+ * Studio consume both lists for the Plugins page.
112
+ */
113
+ readonly plugins: readonly PluginDefinition[];
107
114
  readonly container: Container;
108
115
  readonly appName: string;
109
116
  start(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"create-app.d.ts","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAoB5E,MAAM,WAAW,qBAAqB;IACpC,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C;;;OAGG;IAEH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;OASG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACvD;;;;;;;;;OASG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,iBAAiB,EAAE,gBAAgB,CAAC;CACzE;AAED,MAAM,WAAW,GAAG;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB;;;;;OAKG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,qDAAqD;IACrD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,oDAAoD;IACpD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;;;;;OAMG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG,CA+axD"}
1
+ {"version":3,"file":"create-app.d.ts","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAsB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAoB5E,MAAM,WAAW,qBAAqB;IACpC,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C;;;OAGG;IAEH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;OASG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACvD;;;;;;;;;OASG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,iBAAiB,EAAE,gBAAgB,CAAC;CACzE;AAED,MAAM,WAAW,GAAG;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB;;;;;OAKG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,qDAAqD;IACrD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,oDAAoD;IACpD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;;;;;OAMG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG,CA6gBxD"}
@@ -24,6 +24,7 @@
24
24
  */
25
25
  import { rootContainer } from "@nwire/container";
26
26
  import { seedEnvelope } from "@nwire/envelope";
27
+ import { hook } from "@nwire/hooks";
27
28
  import { Runtime } from "./runtime.js";
28
29
  import { buildPluginContext } from "./define-plugin.js";
29
30
  import { AppRegistering, AppBooting, AppBooted, AppShuttingDown, AppShutdown, PluginRegistered, PluginBooting, PluginBooted, PluginShuttingDown, PluginShutdown, builtInLifecycleEvents, } from "./framework-events.js";
@@ -152,6 +153,28 @@ export function createApp(options) {
152
153
  }
153
154
  // Routes are bound by transports, not by the runtime.
154
155
  }
156
+ // Pre-create per-module lifecycle hooks so `listHooks()` + scan see
157
+ // them even before start() runs. The hooks are adopted by the runtime
158
+ // immediately (so taps are wired); chain steps are attached in start().
159
+ const pluginBootHooks = new Map();
160
+ const pluginShutdownHooks = new Map();
161
+ for (const module of orderedModules) {
162
+ const bootH = hook(`plugin.boot:${module.name}`);
163
+ const shutdownH = hook(`plugin.shutdown:${module.name}`);
164
+ runtime.adoptHook(bootH);
165
+ runtime.adoptHook(shutdownH);
166
+ pluginBootHooks.set(module.name, bootH);
167
+ pluginShutdownHooks.set(module.name, shutdownH);
168
+ }
169
+ // Same for real plugins.
170
+ for (const plugin of options.plugins ?? []) {
171
+ const bootH = hook(`plugin.boot:${plugin.name}`);
172
+ const shutdownH = hook(`plugin.shutdown:${plugin.name}`);
173
+ runtime.adoptHook(bootH);
174
+ runtime.adoptHook(shutdownH);
175
+ pluginBootHooks.set(plugin.name, bootH);
176
+ pluginShutdownHooks.set(plugin.name, shutdownH);
177
+ }
155
178
  const container = options.container ?? rootContainer;
156
179
  /** Booted provider values, indexed by provider name. Populated in start(). */
157
180
  // Plugins: register synchronously up-front (before async boot) so they
@@ -175,7 +198,7 @@ export function createApp(options) {
175
198
  if (plugin.register)
176
199
  plugin.register(container);
177
200
  if (plugin.setup) {
178
- const { api, boots, shutdowns } = buildPluginContext(container, runtime, options.config ?? {});
201
+ const { api, boots, shutdowns } = buildPluginContext(container, runtime, options.config ?? {}, plugin.name);
179
202
  // The setup function may be async; we kick it off and await its
180
203
  // promise so the closure can use top-level `await` if it wants.
181
204
  const result = plugin.setup(api);
@@ -206,6 +229,7 @@ export function createApp(options) {
206
229
  $nwireApp: true,
207
230
  runtime,
208
231
  modules: options.modules,
232
+ plugins: options.plugins ?? [],
209
233
  container,
210
234
  get appName() {
211
235
  return runtime.appName;
@@ -229,14 +253,23 @@ export function createApp(options) {
229
253
  },
230
254
  async start() {
231
255
  const appName = runtime.appName;
232
- // Announce each plugin BEFORE any framework lifecycle fires. Lets
233
- // observers (dev logger, Studio) print the app's composition before
234
- // boot starts so "what's this app made of?" is answerable at first
235
- // log line.
256
+ // Announce composition BEFORE lifecycle fires. Modules first (in
257
+ // topological order same order they registered into the runtime),
258
+ // then plugins. Same `PluginRegistered` event with `kind: "module" |
259
+ // "plugin"` so observers can render them differently but read from
260
+ // one channel.
261
+ for (const module of orderedModules) {
262
+ await runtime.frameworkEvents.fire(PluginRegistered, {
263
+ appName,
264
+ pluginName: module.name,
265
+ kind: "module",
266
+ });
267
+ }
236
268
  for (const plugin of options.plugins ?? []) {
237
269
  await runtime.frameworkEvents.fire(PluginRegistered, {
238
270
  appName,
239
271
  pluginName: plugin.name,
272
+ kind: "plugin",
240
273
  });
241
274
  }
242
275
  // Framework event: AppRegistering — interceptable. Plugins that
@@ -252,6 +285,28 @@ export function createApp(options) {
252
285
  if (!bootingOk) {
253
286
  throw new Error(`Boot prevented by AppBooting subscriber (app: ${appName})`);
254
287
  }
288
+ // Modules first — same lifecycle event surface + per-name hooks as
289
+ // plugins. The hook was pre-created in createApp body so scan +
290
+ // listHooks() see it before start() runs.
291
+ for (const module of orderedModules) {
292
+ const bootHook = pluginBootHooks.get(module.name);
293
+ const t = Date.now();
294
+ const okBoot = await runtime.frameworkEvents.fire(PluginBooting, {
295
+ appName,
296
+ pluginName: module.name,
297
+ kind: "module",
298
+ });
299
+ if (!okBoot) {
300
+ throw new Error(`Boot of module "${module.name}" prevented by PluginBooting subscriber`);
301
+ }
302
+ await bootHook.run({ name: module.name, kind: "module" });
303
+ await runtime.frameworkEvents.fire(PluginBooted, {
304
+ appName,
305
+ pluginName: module.name,
306
+ durationMs: Date.now() - t,
307
+ kind: "module",
308
+ });
309
+ }
255
310
  // Plugins boot in declaration order. Each plugin is wrapped with
256
311
  // PluginBooting (interceptable) + PluginBooted (observable, with
257
312
  // duration) so logging/tracing/Studio can show per-plugin boot
@@ -267,22 +322,36 @@ export function createApp(options) {
267
322
  const okToBoot = await runtime.frameworkEvents.fire(PluginBooting, {
268
323
  appName,
269
324
  pluginName,
325
+ kind: "plugin",
270
326
  });
271
327
  if (!okToBoot) {
272
328
  throw new Error(`Boot of plugin "${pluginName}" prevented by PluginBooting subscriber`);
273
329
  }
274
- const startedAt = Date.now();
275
- if (plugin.boot)
276
- await plugin.boot(container);
330
+ // Per-plugin boot hook — pre-created in createApp body. Chain
331
+ // steps attach JIT so listHooks() sees an empty hook until start()
332
+ // runs (matches Studio's expected view of "what runs at boot").
333
+ const bootHook = pluginBootHooks.get(pluginName);
334
+ if (plugin.boot) {
335
+ bootHook.use(async (_c, next) => { await plugin.boot(container); await next(); }, {
336
+ name: "boot",
337
+ });
338
+ }
277
339
  const boots = closureBoots.get(i);
278
340
  if (boots) {
279
- for (const fn of boots)
280
- await fn();
341
+ for (let k = 0; k < boots.length; k++) {
342
+ const fn = boots[k];
343
+ bootHook.use(async (_c, next) => { await fn(); await next(); }, {
344
+ name: `closure[${k}]`,
345
+ });
346
+ }
281
347
  }
348
+ const startedAt = Date.now();
349
+ await bootHook.run({ name: pluginName, kind: "plugin" });
282
350
  await runtime.frameworkEvents.fire(PluginBooted, {
283
351
  appName,
284
352
  pluginName,
285
353
  durationMs: Date.now() - startedAt,
354
+ kind: "plugin",
286
355
  });
287
356
  }
288
357
  // Default dev console logger. Off when:
@@ -385,6 +454,7 @@ export function createApp(options) {
385
454
  const shutdownOkPerPlugin = await runtime.frameworkEvents.fire(PluginShuttingDown, {
386
455
  appName,
387
456
  pluginName,
457
+ kind: "plugin",
388
458
  });
389
459
  if (!shutdownOkPerPlugin) {
390
460
  // eslint-disable-next-line no-console
@@ -404,6 +474,27 @@ export function createApp(options) {
404
474
  appName,
405
475
  pluginName,
406
476
  durationMs: Date.now() - startedAt,
477
+ kind: "plugin",
478
+ });
479
+ }
480
+ // Symmetric module shutdown — emit lifecycle events for modules in
481
+ // REVERSE order. Modules don't have explicit shutdown callbacks; the
482
+ // events exist so observers see the full lifecycle close cleanly.
483
+ for (let i = orderedModules.length - 1; i >= 0; i--) {
484
+ const module = orderedModules[i];
485
+ const t = Date.now();
486
+ const ok = await runtime.frameworkEvents.fire(PluginShuttingDown, {
487
+ appName,
488
+ pluginName: module.name,
489
+ kind: "module",
490
+ });
491
+ if (!ok)
492
+ continue;
493
+ await runtime.frameworkEvents.fire(PluginShutdown, {
494
+ appName,
495
+ pluginName: module.name,
496
+ durationMs: Date.now() - t,
497
+ kind: "module",
407
498
  });
408
499
  }
409
500
  // Framework event: AppShutdown — observable. Awaited so stop()
@@ -1 +1 @@
1
- {"version":3,"file":"create-app.js","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-app.js","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":"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"}