@nwire/forge 0.7.0 → 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.
- package/README.md +104 -48
- package/dist/__tests__/action-hooks.test.d.ts +8 -0
- package/dist/__tests__/action-hooks.test.d.ts.map +1 -0
- package/dist/__tests__/action-hooks.test.js +95 -0
- package/dist/__tests__/action-hooks.test.js.map +1 -0
- package/dist/__tests__/actor-workflow-hooks.test.d.ts +8 -0
- package/dist/__tests__/actor-workflow-hooks.test.d.ts.map +1 -0
- package/dist/__tests__/actor-workflow-hooks.test.js +104 -0
- package/dist/__tests__/actor-workflow-hooks.test.js.map +1 -0
- package/dist/__tests__/lifecycle-logging.test.js +4 -2
- package/dist/__tests__/lifecycle-logging.test.js.map +1 -1
- package/dist/__tests__/plugin-stress.test.d.ts +21 -0
- package/dist/__tests__/plugin-stress.test.d.ts.map +1 -0
- package/dist/__tests__/plugin-stress.test.js +203 -0
- package/dist/__tests__/plugin-stress.test.js.map +1 -0
- package/dist/actor-store.d.ts +24 -0
- package/dist/actor-store.d.ts.map +1 -1
- package/dist/actor-store.js +29 -0
- package/dist/actor-store.js.map +1 -1
- package/dist/create-app.d.ts +7 -0
- package/dist/create-app.d.ts.map +1 -1
- package/dist/create-app.js +101 -10
- package/dist/create-app.js.map +1 -1
- package/dist/define-action.d.ts +4 -2
- package/dist/define-action.d.ts.map +1 -1
- package/dist/define-action.js +9 -6
- package/dist/define-action.js.map +1 -1
- package/dist/define-actor.d.ts +3 -1
- package/dist/define-actor.d.ts.map +1 -1
- package/dist/define-actor.js +11 -4
- package/dist/define-actor.js.map +1 -1
- package/dist/define-handler.d.ts +21 -2
- package/dist/define-handler.d.ts.map +1 -1
- package/dist/define-handler.js +3 -1
- package/dist/define-handler.js.map +1 -1
- package/dist/define-module.d.ts +3 -0
- package/dist/define-module.d.ts.map +1 -1
- package/dist/define-module.js +3 -0
- package/dist/define-module.js.map +1 -1
- package/dist/define-plugin.d.ts +4 -1
- package/dist/define-plugin.d.ts.map +1 -1
- package/dist/define-plugin.js +34 -14
- package/dist/define-plugin.js.map +1 -1
- package/dist/define-projection.d.ts +3 -1
- package/dist/define-projection.d.ts.map +1 -1
- package/dist/define-projection.js +3 -0
- package/dist/define-projection.js.map +1 -1
- package/dist/define-query.d.ts +3 -1
- package/dist/define-query.d.ts.map +1 -1
- package/dist/define-query.js +2 -0
- package/dist/define-query.js.map +1 -1
- package/dist/define-workflow.d.ts +19 -1
- package/dist/define-workflow.d.ts.map +1 -1
- package/dist/define-workflow.js +4 -0
- package/dist/define-workflow.js.map +1 -1
- package/dist/dev-logger.d.ts.map +1 -1
- package/dist/dev-logger.js +19 -1
- package/dist/dev-logger.js.map +1 -1
- package/dist/framework-events.d.ts +1 -64
- package/dist/framework-events.d.ts.map +1 -1
- package/dist/framework-events.js +3 -0
- package/dist/framework-events.js.map +1 -1
- package/dist/idempotency-store.d.ts +35 -0
- package/dist/idempotency-store.d.ts.map +1 -0
- package/dist/idempotency-store.js +32 -0
- package/dist/idempotency-store.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/runtime.d.ts +197 -3
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +495 -44
- package/dist/runtime.js.map +1 -1
- package/package.json +14 -11
|
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gBAAgB,EAChB,YAAY,GAEb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QAKrF,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACpD,IAAI,CAAgB,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAqC,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE;YACvC,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE;gBAClB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAgB,gBAAgB,CAAC,CAAC,CAAC;YAChE,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC;YACpB,SAAS,EAAE,IAAI,iBAAiB,EAAE;YAClC,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;YAC3B,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,QAAQ,GAAG,GAAG,CAAC;QACrB,MAAM,YAAY,GAAG,GAAG,CAAC;QAEzB,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,EAAE;YACrC,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;YACtE,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC;YACpB,SAAS,EAAE,IAAI,iBAAiB,EAAE;YAClC,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAC,IAAI,CAAC;YACf,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAgD,EAAE,CAAC;QACjE,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE;YACvD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAChE,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,UAAW,CAAC,UAAU,CAAC,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE;YAChC,IAAI,EAAE,GAAG,EAAE;gBACT,cAAc;YAChB,CAAC;SACF,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE;YAChC,IAAI,EAAE,GAAG,EAAE;gBACT,MAAM,OAAO,CAAC;YAChB,CAAC;SACF,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE;YAChC,IAAI,EAAE,GAAG,EAAE;gBACT,gDAAgD;YAClD,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC;YACpB,SAAS,EAAE,IAAI,iBAAiB,EAAE;YAClC,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;YACpC,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE;YACvD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,oEAAoE;QACpE,+CAA+C;QAC/C,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;YACzC,IAAI,GAAG,CAAC,SAAS,KAAK,uBAAuB,EAAE,CAAC;gBAC9C,MAAM,CAAC,GAAG,GAAG,CAAC,OAAiC,CAAC;gBAChD,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEhD,qDAAqD;QACrD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEvC,oEAAoE;QACpE,sEAAsE;QACtE,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,sEAAsE;QACtE,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACrC,6DAA6D;QAC7D,iEAAiE;QACjE,mDAAmD;QACnD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,mEAAmE;YACnE,6CAA6C;YAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mGAAmG,EAAE,KAAK,IAAI,EAAE;QACjH,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACtD,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE;YAChC,QAAQ,EAAE,GAAG,EAAE;gBACb,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC/B,MAAM,OAAO,CAAC;YAChB,CAAC;SACF,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE;YAChC,QAAQ,EAAE,GAAG,EAAE;gBACb,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC;YACpB,SAAS,EAAE,IAAI,iBAAiB,EAAE;YAClC,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;YAC3B,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAElB,oEAAoE;QACpE,qEAAqE;QACrE,qCAAqC;QACrC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE/C,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,YAAY,CAAC,IAAI,EAAE;gBACxB,IAAI,EAAE,GAAG,EAAE;oBACT,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;gBACD,QAAQ,EAAE,GAAG,EAAE;oBACb,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC;YACpB,SAAS,EAAE,IAAI,iBAAiB,EAAE;YAClC,OAAO,EAAE,EAAE;YACX,OAAO;YACP,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACpF,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wGAAwG,EAAE,KAAK,IAAI,EAAE;QAGtH,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAE3C,MAAM,GAAG,GAAG,SAAS,CAAC;YACpB,SAAS,EAAE,IAAI,iBAAiB,EAAE;YAClC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;YAC3B,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;YAC3B,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,MAAM,aAAa,GAAmB,EAAE,CAAC;QACzC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE;YAC3D,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC;YAC5B,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvC,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvC,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxC,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;SACzC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/actor-store.d.ts
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"actor-store.d.ts","sourceRoot":"","sources":["../src/actor-store.ts"],"names":[],"mappings":"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"}
|
package/dist/actor-store.js
CHANGED
|
@@ -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;
|
package/dist/actor-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actor-store.js","sourceRoot":"","sources":["../src/actor-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"actor-store.js","sourceRoot":"","sources":["../src/actor-store.ts"],"names":[],"mappings":"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"}
|
package/dist/create-app.d.ts
CHANGED
|
@@ -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>;
|
package/dist/create-app.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/create-app.js
CHANGED
|
@@ -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
|
|
233
|
-
//
|
|
234
|
-
//
|
|
235
|
-
//
|
|
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
|
-
|
|
275
|
-
|
|
276
|
-
|
|
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 (
|
|
280
|
-
|
|
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()
|
package/dist/create-app.js.map
CHANGED
|
@@ -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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"}
|