@nwire/app 0.8.17 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Contract tests for the generic `createApp` — plugins + container +
3
+ * framework events, no forge concepts.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=create-app.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-app.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/create-app.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Contract tests for the generic `createApp` — plugins + container +
3
+ * framework events, no forge concepts.
4
+ */
5
+ import { describe, it, expect, vi } from "vitest";
6
+ import { createApp, definePlugin, AppBooted, AppShuttingDown, AppRegistering, } from "../app.js";
7
+ describe("createApp (generic) — boot + shutdown lifecycle", () => {
8
+ it("registers plugins, provides bindings on the container, fires AppBooted", async () => {
9
+ const logger = { log: (s) => out.push(s) };
10
+ const out = [];
11
+ const loggerPlugin = definePlugin("logger", ({ provide }) => {
12
+ provide("logger", { boot: () => logger });
13
+ });
14
+ const observerPlugin = definePlugin("observer", ({ on, boot }) => {
15
+ on(AppBooted, ({ appName }) => {
16
+ out.push(`booted:${appName}`);
17
+ });
18
+ boot(() => {
19
+ out.push("plugin.boot");
20
+ });
21
+ });
22
+ const app = createApp({
23
+ appName: "test-1",
24
+ plugins: [loggerPlugin, observerPlugin],
25
+ });
26
+ await app.start();
27
+ expect(app.container.has("logger")).toBe(true);
28
+ expect(app.container.resolve("logger")).toBe(logger);
29
+ expect(out).toContain("plugin.boot");
30
+ expect(out).toContain("booted:test-1");
31
+ });
32
+ it("shutdown fires AppShuttingDown, runs plugin shutdown in REVERSE order", async () => {
33
+ const order = [];
34
+ const p1 = definePlugin("p1", ({ shutdown }) => {
35
+ shutdown(() => {
36
+ order.push("p1.shutdown");
37
+ });
38
+ });
39
+ const p2 = definePlugin("p2", ({ shutdown }) => {
40
+ shutdown(() => {
41
+ order.push("p2.shutdown");
42
+ });
43
+ });
44
+ const p3 = definePlugin("p3", ({ shutdown, on }) => {
45
+ shutdown(() => {
46
+ order.push("p3.shutdown");
47
+ });
48
+ on(AppShuttingDown, ({ reason }) => {
49
+ order.push(`shutting:${reason}`);
50
+ });
51
+ });
52
+ const app = createApp({ appName: "rev", plugins: [p1, p2, p3] });
53
+ await app.start();
54
+ await app.stop("test-reason");
55
+ expect(order[0]).toBe("shutting:test-reason");
56
+ expect(order.slice(1)).toEqual([
57
+ "p3.shutdown",
58
+ "p2.shutdown",
59
+ "p1.shutdown",
60
+ ]);
61
+ });
62
+ it("AppRegistering veto aborts boot — start() throws", async () => {
63
+ const vetoer = definePlugin("vetoer", ({ on }) => {
64
+ on(AppRegistering, () => false);
65
+ });
66
+ const app = createApp({ appName: "veto", plugins: [vetoer] });
67
+ await expect(app.start()).rejects.toThrow(/AppRegistering vetoed/);
68
+ });
69
+ it("provided-binding shutdowns fire in REVERSE boot order", async () => {
70
+ const order = [];
71
+ const p1 = definePlugin("p1", ({ provide }) => {
72
+ provide("a", {
73
+ boot: () => "a-val",
74
+ shutdown: () => {
75
+ order.push("a.shutdown");
76
+ },
77
+ });
78
+ });
79
+ const p2 = definePlugin("p2", ({ provide }) => {
80
+ provide("b", {
81
+ boot: () => "b-val",
82
+ shutdown: () => {
83
+ order.push("b.shutdown");
84
+ },
85
+ });
86
+ });
87
+ const app = createApp({ appName: "providers", plugins: [p1, p2] });
88
+ await app.start();
89
+ await app.stop();
90
+ expect(order).toEqual(["b.shutdown", "a.shutdown"]);
91
+ });
92
+ it("idempotent: start() + stop() called twice is a no-op", async () => {
93
+ const bootSpy = vi.fn();
94
+ const p = definePlugin("p", ({ boot }) => {
95
+ boot(bootSpy);
96
+ });
97
+ const app = createApp({ appName: "idem", plugins: [p] });
98
+ await app.start();
99
+ await app.start();
100
+ expect(bootSpy).toHaveBeenCalledTimes(1);
101
+ const shutdownSpy = vi.fn();
102
+ const p2 = definePlugin("p2", ({ shutdown }) => {
103
+ shutdown(shutdownSpy);
104
+ });
105
+ const app2 = createApp({ appName: "idem2", plugins: [p2] });
106
+ await app2.start();
107
+ await app2.stop();
108
+ await app2.stop();
109
+ expect(shutdownSpy).toHaveBeenCalledTimes(1);
110
+ });
111
+ it("satisfies AppServable from @nwire/endpoint structurally", async () => {
112
+ const app = createApp({ appName: "endpoint-test", plugins: [] });
113
+ expect(app.$nwireApp).toBe(true);
114
+ expect(typeof app.boot).toBe("function");
115
+ expect(typeof app.shutdown).toBe("function");
116
+ expect(typeof app.dispatchFrameworkEvent).toBe("function");
117
+ });
118
+ it("dispatchFrameworkEvent fires built-in wire events by name", async () => {
119
+ const observed = [];
120
+ const p = definePlugin("o", ({ bus }) => {
121
+ bus.onFire((rec) => observed.push({ event: rec.eventName, payload: rec.payload }));
122
+ });
123
+ const app = createApp({ appName: "dispatch", plugins: [p] });
124
+ await app.start();
125
+ await app.dispatchFrameworkEvent("nwire.wire.mounted", { transport: "http" });
126
+ const mounted = observed.find((o) => o.event === "nwire.wire.mounted");
127
+ expect(mounted).toBeDefined();
128
+ });
129
+ });
130
+ //# sourceMappingURL=create-app.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-app.test.js","sourceRoot":"","sources":["../../src/__tests__/create-app.test.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@
13
13
  * lifecycle on top.
14
14
  */
15
15
  import { describe, it, expect } from "vitest";
16
- import { InMemoryContainer } from "@nwire/container";
16
+ import { createContainer } from "@nwire/container";
17
17
  import { NoopLogger } from "@nwire/logger";
18
18
  import { definePlugin, isAppPlugin, FrameworkEventBus, AppBooting, AppBooted, AppShuttingDown, } from "../app.js";
19
19
  /**
@@ -22,7 +22,7 @@ import { definePlugin, isAppPlugin, FrameworkEventBus, AppBooting, AppBooted, Ap
22
22
  * Phase 69 lands. For now, this proves the primitive's surface works.
23
23
  */
24
24
  async function runMinimalApp(plugins) {
25
- const container = new InMemoryContainer();
25
+ const container = createContainer();
26
26
  const bus = new FrameworkEventBus(new NoopLogger());
27
27
  /**
28
28
  * Accumulators — the plugin context's builders push into these.
@@ -1 +1 @@
1
- {"version":3,"file":"define-plugin.test.js","sourceRoot":"","sources":["../../src/__tests__/define-plugin.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define-plugin.test.js","sourceRoot":"","sources":["../../src/__tests__/define-plugin.test.ts"],"names":[],"mappings":"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"}
package/dist/app.d.ts CHANGED
@@ -22,4 +22,6 @@
22
22
  export { defineFrameworkEvent, AppRegistering, AppBooting, AppBooted, AppReady, AppShuttingDown, AppShutdown, PluginRegistered, PluginBooting, PluginBooted, PluginShuttingDown, PluginShutdown, WireMounting, WireMounted, WireUnmounted, builtInLifecycleEvents, type FrameworkEventDefinition, type FrameworkEventMode, } from "./framework-events.js";
23
23
  export { FrameworkEventBus, type FrameworkEventHandler, type FrameworkEventObserver, type FrameworkEventObservation, } from "./framework-event-bus.js";
24
24
  export { definePlugin, isAppPlugin, type AppPluginContext, type AppPluginDefinition, type BindingLifecycle, } from "./define-plugin.js";
25
+ export { createApp, type App, type CreateAppOptions } from "./create-app.js";
26
+ export { Runtime, serializeError, type DispatchHookCtx, type DispatchMiddleware, type HookStepTelemetry, type LifecycleTelemetry, type RuntimeOptions, type SerializedError, type Telemetry, type TelemetryListener, } from "./runtime.js";
25
27
  //# sourceMappingURL=app.d.ts.map
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,UAAU,EACV,SAAS,EACT,QAAQ,EACR,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,GAC/B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,UAAU,EACV,SAAS,EACT,QAAQ,EACR,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,GAC/B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE1E,OAAO,EACL,OAAO,EACP,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,iBAAiB,GACvB,MAAM,WAAW,CAAC"}
package/dist/app.js CHANGED
@@ -22,4 +22,6 @@
22
22
  export { defineFrameworkEvent, AppRegistering, AppBooting, AppBooted, AppReady, AppShuttingDown, AppShutdown, PluginRegistered, PluginBooting, PluginBooted, PluginShuttingDown, PluginShutdown, WireMounting, WireMounted, WireUnmounted, builtInLifecycleEvents, } from "./framework-events.js";
23
23
  export { FrameworkEventBus, } from "./framework-event-bus.js";
24
24
  export { definePlugin, isAppPlugin, } from "./define-plugin.js";
25
+ export { createApp } from "./create-app.js";
26
+ export { Runtime, serializeError, } from "./runtime.js";
25
27
  //# sourceMappingURL=app.js.map
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,UAAU,EACV,SAAS,EACT,QAAQ,EACR,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,GAGvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,iBAAiB,GAIlB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,WAAW,GAIZ,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,UAAU,EACV,SAAS,EACT,QAAQ,EACR,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,aAAa,EACb,sBAAsB,GAGvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,iBAAiB,GAIlB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,WAAW,GAIZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,SAAS,EAAmC,MAAM,cAAc,CAAC;AAE1E,OAAO,EACL,OAAO,EACP,cAAc,GASf,MAAM,WAAW,CAAC"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * `createApp` — generic plugin-lifecycle composition root.
3
+ *
4
+ * Boots a Container + a FrameworkEventBus with the supplied plugins.
5
+ * Lightweight: no forge concepts (no Runtime, no actors, no workflows,
6
+ * no module dep graph). For the full forge experience use `createApp`
7
+ * from `@nwire/forge`, which composes on top of this primitive.
8
+ *
9
+ * What this does, in order, during `start()`:
10
+ *
11
+ * 1. Register every plugin synchronously — `setup(ctx)` runs; bindings
12
+ * declared via `ctx.provide()` are collected; framework subscriptions
13
+ * via `ctx.on()` are wired on the bus; boot/shutdown callbacks are
14
+ * captured into ordered lists.
15
+ * 2. Fire `AppRegistering` (series-bail). A vetoing subscriber aborts.
16
+ * 3. Boot every provided binding: call `lifecycle.boot()`, register the
17
+ * value on the container under its declared name. Failures abort.
18
+ * 4. Fire `AppBooting` (series-bail). A vetoing subscriber aborts.
19
+ * 5. Run each plugin's accumulated `boot` callbacks in registration order.
20
+ * 6. Fire `AppBooted` (parallel).
21
+ *
22
+ * `stop(reason?)`:
23
+ *
24
+ * 1. Fire `AppShuttingDown` (series-bail).
25
+ * 2. Run plugin `shutdown` callbacks in REVERSE registration order.
26
+ * 3. Call `lifecycle.shutdown(value)` on each provided binding (reverse).
27
+ * 4. Fire `AppShutdown` (parallel).
28
+ *
29
+ * The returned `App` satisfies `AppServable` from `@nwire/endpoint`, so
30
+ * `endpoint("api").serve(app).run()` works without any glue.
31
+ */
32
+ import { type Container } from "@nwire/container";
33
+ import { type Logger } from "@nwire/logger";
34
+ import { FrameworkEventBus } from "./framework-event-bus.js";
35
+ import { type AppPluginDefinition } from "./define-plugin.js";
36
+ export interface CreateAppOptions {
37
+ /** App name — surfaces in framework-event payloads + dev logger output. */
38
+ readonly appName: string;
39
+ /** Plugin definitions to register. */
40
+ readonly plugins?: readonly AppPluginDefinition[];
41
+ /** Override the container — defaults to a fresh `createContainer()`. */
42
+ readonly container?: Container;
43
+ /** Override the framework-event bus — defaults to a fresh `FrameworkEventBus`. */
44
+ readonly bus?: FrameworkEventBus;
45
+ /** Logger for plugin lifecycle messages + framework-event errors. */
46
+ readonly logger?: Logger;
47
+ }
48
+ /**
49
+ * App handle — structurally `AppServable` for `@nwire/endpoint`. The
50
+ * `runtime` field is `undefined` here (no forge); `@nwire/forge`'s richer
51
+ * createApp returns the same shape with `runtime` populated.
52
+ */
53
+ export interface App {
54
+ readonly $nwireApp: true;
55
+ readonly appName: string;
56
+ readonly container: Container;
57
+ readonly bus: FrameworkEventBus;
58
+ readonly plugins: readonly AppPluginDefinition[];
59
+ start(): Promise<void>;
60
+ stop(reason?: string): Promise<void>;
61
+ /** AppServable conformance — alias for `start()`. */
62
+ boot(): Promise<void>;
63
+ /** AppServable conformance — alias for `stop()`. */
64
+ shutdown(): Promise<void>;
65
+ /**
66
+ * Dispatch a framework lifecycle event on the app's bus by name. The
67
+ * endpoint uses this to fire `nwire.wire.mounting / .mounted / .unmounted`
68
+ * and `nwire.app.ready` at the right serve-loop points. Returns `false`
69
+ * when a series-bail subscriber prevented; `true` otherwise.
70
+ */
71
+ dispatchFrameworkEvent(eventName: string, payload: unknown): Promise<boolean>;
72
+ }
73
+ /**
74
+ * Build a generic Nwire app from plugin definitions. No forge concepts —
75
+ * use `@nwire/forge`'s `createApp` for the rich CQRS / actor / workflow
76
+ * surface.
77
+ *
78
+ * const app = createApp({
79
+ * appName: "users",
80
+ * plugins: [authPlugin, dbPlugin],
81
+ * });
82
+ * await app.start();
83
+ * // app.container.cradle.db is now resolvable
84
+ * await app.stop();
85
+ */
86
+ export declare function createApp(options: CreateAppOptions): App;
87
+ //# sourceMappingURL=create-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-app.d.ts","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAexD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EACL,KAAK,mBAAmB,EAGzB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sCAAsC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,wEAAwE;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,kFAAkF;IAClF,QAAQ,CAAC,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACjC,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,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;;;;;OAKG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG,CAsMxD"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * `createApp` — generic plugin-lifecycle composition root.
3
+ *
4
+ * Boots a Container + a FrameworkEventBus with the supplied plugins.
5
+ * Lightweight: no forge concepts (no Runtime, no actors, no workflows,
6
+ * no module dep graph). For the full forge experience use `createApp`
7
+ * from `@nwire/forge`, which composes on top of this primitive.
8
+ *
9
+ * What this does, in order, during `start()`:
10
+ *
11
+ * 1. Register every plugin synchronously — `setup(ctx)` runs; bindings
12
+ * declared via `ctx.provide()` are collected; framework subscriptions
13
+ * via `ctx.on()` are wired on the bus; boot/shutdown callbacks are
14
+ * captured into ordered lists.
15
+ * 2. Fire `AppRegistering` (series-bail). A vetoing subscriber aborts.
16
+ * 3. Boot every provided binding: call `lifecycle.boot()`, register the
17
+ * value on the container under its declared name. Failures abort.
18
+ * 4. Fire `AppBooting` (series-bail). A vetoing subscriber aborts.
19
+ * 5. Run each plugin's accumulated `boot` callbacks in registration order.
20
+ * 6. Fire `AppBooted` (parallel).
21
+ *
22
+ * `stop(reason?)`:
23
+ *
24
+ * 1. Fire `AppShuttingDown` (series-bail).
25
+ * 2. Run plugin `shutdown` callbacks in REVERSE registration order.
26
+ * 3. Call `lifecycle.shutdown(value)` on each provided binding (reverse).
27
+ * 4. Fire `AppShutdown` (parallel).
28
+ *
29
+ * The returned `App` satisfies `AppServable` from `@nwire/endpoint`, so
30
+ * `endpoint("api").serve(app).run()` works without any glue.
31
+ */
32
+ import { createContainer } from "@nwire/container";
33
+ import { NoopLogger } from "@nwire/logger";
34
+ import { AppRegistering, AppBooting, AppBooted, AppReady, AppShuttingDown, AppShutdown, PluginRegistered, PluginBooting, PluginBooted, PluginShuttingDown, PluginShutdown, } from "./framework-events.js";
35
+ import { FrameworkEventBus } from "./framework-event-bus.js";
36
+ /**
37
+ * Build a generic Nwire app from plugin definitions. No forge concepts —
38
+ * use `@nwire/forge`'s `createApp` for the rich CQRS / actor / workflow
39
+ * surface.
40
+ *
41
+ * const app = createApp({
42
+ * appName: "users",
43
+ * plugins: [authPlugin, dbPlugin],
44
+ * });
45
+ * await app.start();
46
+ * // app.container.cradle.db is now resolvable
47
+ * await app.stop();
48
+ */
49
+ export function createApp(options) {
50
+ const appName = options.appName;
51
+ const container = options.container ?? createContainer();
52
+ const logger = options.logger ?? new NoopLogger();
53
+ const bus = options.bus ?? new FrameworkEventBus(logger);
54
+ const plugins = options.plugins ?? [];
55
+ /**
56
+ * Captured per plugin during setup. Indexed by the plugin's position in
57
+ * `plugins` so the start/stop loops can re-associate.
58
+ */
59
+ const provides = [];
60
+ const boots = [];
61
+ const shutdowns = [];
62
+ /** Booted provider values, indexed by their `name`. Populated in start(). */
63
+ const bootedValues = new Map();
64
+ // ─── 1. Synchronous register: run each plugin's setup closure now ─────
65
+ // Plugins contribute container bindings, framework subscriptions, and
66
+ // boot/shutdown callbacks via the captured-builder pattern.
67
+ plugins.forEach((plugin, pluginIdx) => {
68
+ const ctx = {
69
+ container,
70
+ bus,
71
+ provide(name, lifecycle) {
72
+ provides.push({
73
+ pluginIdx,
74
+ name,
75
+ lifecycle: lifecycle,
76
+ });
77
+ },
78
+ on(event, handler, priority) {
79
+ bus.on(event, handler, priority);
80
+ },
81
+ boot(fn) {
82
+ boots.push({ pluginIdx, fn });
83
+ },
84
+ shutdown(fn) {
85
+ shutdowns.push({ pluginIdx, fn });
86
+ },
87
+ };
88
+ // setup may be sync or async — we await during start(), not here, so
89
+ // the constructor returns immediately. Defer the call: setup returns
90
+ // a value/promise that start() awaits.
91
+ plugin.setup(ctx);
92
+ });
93
+ let started = false;
94
+ let stopped = false;
95
+ const start = async () => {
96
+ if (started)
97
+ return;
98
+ started = true;
99
+ // Per-plugin registered event — observable; no veto.
100
+ for (const plugin of plugins) {
101
+ await bus.fire(PluginRegistered, {
102
+ appName,
103
+ pluginName: plugin.name,
104
+ kind: "plugin",
105
+ });
106
+ }
107
+ // AppRegistering — interceptable.
108
+ const okReg = await bus.fire(AppRegistering, { appName });
109
+ if (!okReg) {
110
+ throw new Error(`createApp("${appName}"): AppRegistering vetoed by subscriber`);
111
+ }
112
+ // 2. Boot every provided binding; register the value on the container.
113
+ for (const { name, lifecycle } of provides) {
114
+ const value = await lifecycle.boot();
115
+ container.register(name, value);
116
+ bootedValues.set(name, value);
117
+ }
118
+ // 3. AppBooting — interceptable.
119
+ const okBoot = await bus.fire(AppBooting, { appName });
120
+ if (!okBoot) {
121
+ throw new Error(`createApp("${appName}"): AppBooting vetoed by subscriber`);
122
+ }
123
+ // 4. Per-plugin boot — interceptable + observed per plugin.
124
+ for (const { pluginIdx, fn } of boots) {
125
+ const plugin = plugins[pluginIdx];
126
+ const okPlug = await bus.fire(PluginBooting, {
127
+ appName,
128
+ pluginName: plugin.name,
129
+ kind: "plugin",
130
+ });
131
+ if (!okPlug) {
132
+ throw new Error(`createApp("${appName}"): plugin "${plugin.name}" boot vetoed by subscriber`);
133
+ }
134
+ const startedAt = performance.now();
135
+ await fn();
136
+ await bus.fire(PluginBooted, {
137
+ appName,
138
+ pluginName: plugin.name,
139
+ durationMs: performance.now() - startedAt,
140
+ kind: "plugin",
141
+ });
142
+ }
143
+ // 5. AppBooted — parallel observation.
144
+ await bus.fire(AppBooted, {
145
+ appName,
146
+ bootedAt: new Date().toISOString(),
147
+ });
148
+ // 6. AppReady — parallel observation. Endpoint fires this after the
149
+ // wire is listening; we fire here too for the standalone case.
150
+ await bus.fire(AppReady, {
151
+ appName,
152
+ readyAt: new Date().toISOString(),
153
+ });
154
+ };
155
+ const stop = async (reason) => {
156
+ if (stopped)
157
+ return;
158
+ stopped = true;
159
+ // AppShuttingDown — interceptable. Throwing fails the shutdown; the
160
+ // caller is responsible for hard-timeout SIGKILL via @nwire/endpoint.
161
+ await bus.fire(AppShuttingDown, { appName, reason });
162
+ // 1. Plugin shutdown callbacks (reverse registration order).
163
+ for (let i = shutdowns.length - 1; i >= 0; i--) {
164
+ const { pluginIdx, fn } = shutdowns[i];
165
+ const plugin = plugins[pluginIdx];
166
+ await bus.fire(PluginShuttingDown, {
167
+ appName,
168
+ pluginName: plugin.name,
169
+ kind: "plugin",
170
+ });
171
+ const startedAt = performance.now();
172
+ try {
173
+ await fn();
174
+ }
175
+ catch (err) {
176
+ logger.error?.(`plugin "${plugin.name}" shutdown threw`, {
177
+ error: err?.message ?? String(err),
178
+ });
179
+ }
180
+ await bus.fire(PluginShutdown, {
181
+ appName,
182
+ pluginName: plugin.name,
183
+ durationMs: performance.now() - startedAt,
184
+ kind: "plugin",
185
+ });
186
+ }
187
+ // 2. Provided-binding shutdowns (reverse boot order).
188
+ for (let i = provides.length - 1; i >= 0; i--) {
189
+ const { name, lifecycle } = provides[i];
190
+ if (!lifecycle.shutdown)
191
+ continue;
192
+ const value = bootedValues.get(name);
193
+ if (value === undefined)
194
+ continue;
195
+ try {
196
+ await lifecycle.shutdown(value);
197
+ }
198
+ catch (err) {
199
+ logger.error?.(`provider "${name}" shutdown threw`, {
200
+ error: err?.message ?? String(err),
201
+ });
202
+ }
203
+ }
204
+ // 3. AppShutdown — parallel observation.
205
+ await bus.fire(AppShutdown, { appName });
206
+ };
207
+ return {
208
+ $nwireApp: true,
209
+ appName,
210
+ container,
211
+ bus,
212
+ plugins,
213
+ start,
214
+ stop,
215
+ boot: start,
216
+ shutdown: () => stop(),
217
+ dispatchFrameworkEvent: async (eventName, payload) => {
218
+ // Generic dispatch by name — used by @nwire/endpoint to fire
219
+ // wire-lifecycle events the bus has built-ins for. We look up the
220
+ // event in builtInLifecycleEvents; unknown names fire as parallel.
221
+ const { builtInLifecycleEvents } = await import("./framework-events.js");
222
+ const def = builtInLifecycleEvents.find((e) => e.name === eventName);
223
+ if (def)
224
+ return bus.fire(def, payload);
225
+ // Unknown event name — fire as a synthetic parallel event so observers
226
+ // still see it on the bus.
227
+ return bus.fire({ $kind: "framework-event", name: eventName, mode: "parallel" }, payload);
228
+ },
229
+ };
230
+ }
231
+ //# sourceMappingURL=create-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-app.js","sourceRoot":"","sources":["../src/create-app.ts"],"names":[],"mappings":"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"}