@nwire/endpoint 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -20,13 +20,11 @@ import { createApp } from "@nwire/forge";
20
20
  import { httpInterface, get } from "@nwire/http";
21
21
 
22
22
  const app = createApp({ modules: [stations] });
23
- const api = httpInterface({ prefix: "/api" }).wire(
24
- get("/health"), async () => ({ ok: true }),
25
- );
23
+ const api = httpInterface({ prefix: "/api" }).wire(get("/health"), async () => ({ ok: true }));
26
24
 
27
25
  await endpoint("api", { port: 3000 })
28
- .serve(app) // boots container first
29
- .serve(api) // attaches HTTP routes
26
+ .serve(app) // boots container first
27
+ .serve(api) // attaches HTTP routes
30
28
  .run();
31
29
  ```
32
30
 
@@ -45,35 +43,40 @@ await endpoint("legacy", { port: 3000 }).serve(app).run();
45
43
 
46
44
  ## Surface
47
45
 
48
- | Export | Role |
49
- | ---------------------------- | ------------------------------------------------------------------- |
50
- | `endpoint(name, config)` | Builder entry. Chain `.serve(target)`, `.run()`. |
51
- | `EndpointBuilder` | The chainable type returned by `endpoint()`. |
52
- | `attachLifecycle(opts)` | Low-level escape hatch when you already own a Node `Server`. |
53
- | `defineCheck(name, fn)` | Readiness probe contributor; aggregated into `/ready`. |
54
- | `isNwireServable` / `isAppServable` / `isForeignServable` | Type guards for `.serve()` discrimination. |
55
- | `RunningEndpoint` | Resolved value from `.run()` — exposes `shutdown(reason)`. |
46
+ | Export | Role |
47
+ | --------------------------------------------------------- | ------------------------------------------------------------ |
48
+ | `endpoint(name, config)` | Builder entry. Chain `.serve(target)`, `.run()`. |
49
+ | `EndpointBuilder` | The chainable type returned by `endpoint()`. |
50
+ | `attachLifecycle(opts)` | Low-level escape hatch when you already own a Node `Server`. |
51
+ | `defineCheck(name, fn)` | Readiness probe contributor; aggregated into `/ready`. |
52
+ | `isNwireServable` / `isAppServable` / `isForeignServable` | Type guards for `.serve()` discrimination. |
53
+ | `RunningEndpoint` | Resolved value from `.run()` — exposes `shutdown(reason)`. |
56
54
 
57
55
  ### Config
58
56
 
59
57
  ```ts
60
58
  endpoint("api", {
61
- port: 3000, // omit for queue/cron-only endpoints
62
- host: "0.0.0.0",
63
- banner: true, // boot banner on stdout
64
- probes: { port: 9_400, checks: [redisProbe] },
65
- shutdown: { timeoutMs: 30_000, onShutdown: async () => {/* … */} },
66
- exitOnShutdown: true, // test seam — skip process.exit()
59
+ port: 3000, // omit for queue/cron-only endpoints
60
+ host: "0.0.0.0",
61
+ banner: true, // boot banner on stdout
62
+ probes: { port: 9_400, checks: [redisProbe] },
63
+ shutdown: {
64
+ timeoutMs: 30_000,
65
+ onShutdown: async () => {
66
+ /* … */
67
+ },
68
+ },
69
+ exitOnShutdown: true, // test seam — skip process.exit()
67
70
  });
68
71
  ```
69
72
 
70
73
  ### What `.serve()` accepts
71
74
 
72
- | Target | Detection | Behavior |
73
- | ------------------------------------- | ------------------------------------ | ----------------------------------------- |
74
- | Nwire interface (e.g. `httpInterface()`) | `$nwireServable === true` | Attached to a host (HTTP / queue / …). |
75
- | Nwire app (`createApp`) | `$nwireApp === true` | Booted first; its container fulfils interfaces. |
76
- | Express / Fastify / Koa / Nest | Has `.listen(port, …)` | Wrapped with terminator + probes. |
75
+ | Target | Detection | Behavior |
76
+ | ---------------------------------------- | ------------------------- | ----------------------------------------------- |
77
+ | Nwire interface (e.g. `httpInterface()`) | `$nwireServable === true` | Attached to a host (HTTP / queue / …). |
78
+ | Nwire app (`createApp`) | `$nwireApp === true` | Booted first; its container fulfils interfaces. |
79
+ | Express / Fastify / Koa / Nest | Has `.listen(port, …)` | Wrapped with terminator + probes. |
77
80
 
78
81
  Multiple `.serve()` calls compose: apps boot in declaration order;
79
82
  interfaces attach after; shutdown runs in reverse.
@@ -11,6 +11,7 @@
11
11
  * real K8s probes + http-terminator timing.
12
12
  */
13
13
  import { describe, it, expect } from "vitest";
14
+ import { createContainer } from "@nwire/container";
14
15
  import { endpoint, isAppServable, isForeignServable, isNwireServable, } from "../endpoint.js";
15
16
  describe("endpoint() — type guards", () => {
16
17
  it("identifies a NwireServable by the $nwireServable marker", () => {
@@ -26,12 +27,7 @@ describe("endpoint() — type guards", () => {
26
27
  it("identifies an AppServable by the $nwireApp marker", () => {
27
28
  const app = {
28
29
  $nwireApp: true,
29
- container: {
30
- resolve: () => undefined,
31
- has: () => false,
32
- register: () => undefined,
33
- createScope: () => app.container,
34
- },
30
+ container: createContainer(),
35
31
  boot: async () => undefined,
36
32
  shutdown: async () => undefined,
37
33
  };
@@ -57,6 +53,16 @@ describe("endpoint() — type guards", () => {
57
53
  expect(isAppServable(garbage)).toBe(false);
58
54
  expect(isForeignServable(garbage)).toBe(false);
59
55
  });
56
+ it("accepts a CALLABLE app value with .listen — Express 5's app is a function", () => {
57
+ // Regression: Express 5 returns a callable (typeof === "function") with
58
+ // a .listen property. A previous typeof === "object" check rejected it.
59
+ const expressLikeApp = Object.assign(() => undefined, { listen: () => ({}) });
60
+ expect(isForeignServable(expressLikeApp)).toBe(true);
61
+ });
62
+ it("rejects null + arrow fns without .listen", () => {
63
+ expect(isForeignServable(null)).toBe(false);
64
+ expect(isForeignServable(() => undefined)).toBe(false);
65
+ });
60
66
  });
61
67
  describe("endpoint() — builder", () => {
62
68
  it("accepts each Servable shape via .serve() in any order", () => {
@@ -66,12 +72,7 @@ describe("endpoint() — builder", () => {
66
72
  */
67
73
  const app = {
68
74
  $nwireApp: true,
69
- container: {
70
- resolve: () => undefined,
71
- has: () => false,
72
- register: () => undefined,
73
- createScope: () => undefined,
74
- },
75
+ container: createContainer(),
75
76
  boot: async () => undefined,
76
77
  shutdown: async () => undefined,
77
78
  };
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.test.js","sourceRoot":"","sources":["../../src/__tests__/endpoint.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"endpoint.test.js","sourceRoot":"","sources":["../../src/__tests__/endpoint.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Direct tests for `attachLifecycle()` — the graceful-shutdown wrapper
3
+ * that sits between any Node http.Server and http-terminator + lightship.
4
+ *
5
+ * Specifically covers the edge cases that previously broke real boot
6
+ * paths but were only surfaced by interop examples:
7
+ *
8
+ * - shutdown completes promptly when probes are disabled (no LB to wait for)
9
+ * - shutdown waits drainDelay when probes are enabled (LB needs time)
10
+ * - shutdown is idempotent
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=lifecycle.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/lifecycle.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Direct tests for `attachLifecycle()` — the graceful-shutdown wrapper
3
+ * that sits between any Node http.Server and http-terminator + lightship.
4
+ *
5
+ * Specifically covers the edge cases that previously broke real boot
6
+ * paths but were only surfaced by interop examples:
7
+ *
8
+ * - shutdown completes promptly when probes are disabled (no LB to wait for)
9
+ * - shutdown waits drainDelay when probes are enabled (LB needs time)
10
+ * - shutdown is idempotent
11
+ */
12
+ import { describe, it, expect } from "vitest";
13
+ import { createServer } from "node:http";
14
+ import { attachLifecycle } from "../lifecycle.js";
15
+ async function listenEphemeral() {
16
+ const server = createServer((_req, res) => {
17
+ res.statusCode = 200;
18
+ res.end("ok");
19
+ });
20
+ await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
21
+ return server;
22
+ }
23
+ describe("attachLifecycle — shutdown timing edges", () => {
24
+ it("shutdown returns promptly with probes disabled (no drainDelay)", async () => {
25
+ const server = await listenEphemeral();
26
+ const mgr = await attachLifecycle({
27
+ server,
28
+ health: { enabled: false },
29
+ shutdown: { drainDelay: 10_000 }, // would be 10s if it ran
30
+ exitOnShutdown: false,
31
+ });
32
+ const t = performance.now();
33
+ await mgr.shutdown("test");
34
+ const ms = performance.now() - t;
35
+ expect(ms).toBeLessThan(500); // would be > 10_000 with the old bug
36
+ expect(server.listening).toBe(false);
37
+ });
38
+ it("shutdown is idempotent — second call is a no-op", async () => {
39
+ const server = await listenEphemeral();
40
+ const mgr = await attachLifecycle({
41
+ server,
42
+ health: { enabled: false },
43
+ exitOnShutdown: false,
44
+ });
45
+ await mgr.shutdown("first");
46
+ await mgr.shutdown("second"); // doesn't throw, doesn't try to close again
47
+ await mgr.shutdown("third");
48
+ expect(server.listening).toBe(false);
49
+ });
50
+ it("probeHandler: /livez 200 when live, 503 when shutting down", async () => {
51
+ const server = await listenEphemeral();
52
+ const mgr = await attachLifecycle({
53
+ server,
54
+ health: { enabled: false },
55
+ exitOnShutdown: false,
56
+ });
57
+ let status = 0;
58
+ let body = "";
59
+ const res = {
60
+ statusCode: 0,
61
+ setHeader: () => { },
62
+ end: (b) => {
63
+ status = res.statusCode;
64
+ body = b;
65
+ },
66
+ };
67
+ await mgr.probeHandler({}, res, "live");
68
+ expect(status).toBe(200);
69
+ expect(JSON.parse(body)).toEqual({ status: "live" });
70
+ // Don't await shutdown completion — kick it off and check probes flip
71
+ void mgr.shutdown("test");
72
+ await new Promise((r) => setTimeout(r, 5));
73
+ await mgr.probeHandler({}, res, "live");
74
+ expect(status).toBe(503);
75
+ });
76
+ it("probeHandler: /readyz runs registered checks; 503 if any fail", async () => {
77
+ const server = await listenEphemeral();
78
+ const mgr = await attachLifecycle({
79
+ server,
80
+ health: { enabled: false },
81
+ exitOnShutdown: false,
82
+ });
83
+ let status = 0;
84
+ let body = "";
85
+ const res = {
86
+ statusCode: 0,
87
+ setHeader: () => { },
88
+ end: (b) => {
89
+ status = res.statusCode;
90
+ body = b;
91
+ },
92
+ };
93
+ // No checks → ready
94
+ await mgr.probeHandler({}, res, "ready");
95
+ expect(status).toBe(200);
96
+ expect(JSON.parse(body).status).toBe("ready");
97
+ mgr.addCheck({ name: "db", check: async () => undefined });
98
+ mgr.addCheck({
99
+ name: "redis",
100
+ check: async () => {
101
+ throw new Error("redis down");
102
+ },
103
+ });
104
+ await mgr.probeHandler({}, res, "ready");
105
+ expect(status).toBe(503);
106
+ const parsed = JSON.parse(body);
107
+ expect(parsed.status).toBe("unready");
108
+ expect(parsed.checks.db).toBe("ok");
109
+ expect(parsed.checks.redis).toBe("redis down");
110
+ await mgr.shutdown("done");
111
+ });
112
+ it("shutdown completes before signal handlers can race in", async () => {
113
+ // The lifecycle installs SIGTERM/SIGINT handlers via process.once;
114
+ // manual shutdown() during tests must not deadlock with them.
115
+ const server = await listenEphemeral();
116
+ const mgr = await attachLifecycle({
117
+ server,
118
+ health: { enabled: false },
119
+ exitOnShutdown: false,
120
+ });
121
+ await expect(mgr.shutdown("manual")).resolves.toBeUndefined();
122
+ });
123
+ });
124
+ //# sourceMappingURL=lifecycle.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.test.js","sourceRoot":"","sources":["../../src/__tests__/lifecycle.test.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,7 @@
36
36
  */
37
37
  import type { Server } from "node:http";
38
38
  import type { Container } from "@nwire/container";
39
+ import type { AttachBindings, NwireInterface } from "@nwire/interface";
39
40
  import { type HealthConfig, type HealthCheck, type LifecycleManager, type ShutdownConfig } from "./lifecycle.js";
40
41
  /**
41
42
  * Per-endpoint lifecycle hook context. The same shape flows through all
@@ -74,17 +75,9 @@ export type Servable = NwireServable | ForeignServable | AppServable;
74
75
  * it wants to be mounted: which transport, what handler shape, what
75
76
  * health checks it contributes.
76
77
  */
77
- export interface NwireServable {
78
- readonly $nwireServable: true;
78
+ export interface NwireServable extends NwireInterface {
79
79
  /** Which transport this interface uses. Decides what listener spins up. */
80
80
  readonly transport: "http" | "graphql" | "queue" | "cron" | "ws" | "mcp" | "custom";
81
- /**
82
- * Attach to a host that owns the transport. For HTTP-class transports
83
- * the endpoint provides a Koa/raw http server and the interface mounts
84
- * its router. For queue-class transports the endpoint spins up the
85
- * consumer loop.
86
- */
87
- attach(host: HostBindings): void | Promise<void>;
88
81
  /** Optional health checks contributed by the interface itself. */
89
82
  readonly checks?: readonly HealthCheck[];
90
83
  /** Run during shutdown — disconnect from broker, flush, etc. */
@@ -134,20 +127,7 @@ export interface AppServable {
134
127
  dispatchFrameworkEvent?(eventName: string, payload: unknown): Promise<boolean>;
135
128
  }
136
129
  /** What the endpoint hands to each NwireServable.attach() call. */
137
- export interface HostBindings {
138
- /**
139
- * Container of the served app, or `undefined` if no app was served.
140
- * When undefined, the interface should preserve its own `.provide()`
141
- * container (the L2 standalone case).
142
- */
143
- readonly container: Container | undefined;
144
- /**
145
- * Register a HealthCheck on the endpoint's lifecycle. Interfaces that
146
- * need readiness verification (queue connected, NATS subscribed) call
147
- * this so the K8s probes reflect real state.
148
- */
149
- addCheck(check: HealthCheck): void;
150
- }
130
+ export type HostBindings = AttachBindings;
151
131
  export interface EndpointConfig {
152
132
  /** Port for HTTP-class transports. Omit for queue-only / cron-only endpoints. */
153
133
  readonly port?: number;
@@ -233,7 +213,14 @@ export declare class EndpointBuilder {
233
213
  export declare function isNwireServable(x: unknown): x is NwireServable;
234
214
  /** True when the target is a Nwire app (container + lifecycle). */
235
215
  export declare function isAppServable(x: unknown): x is AppServable;
236
- /** True when the target looks like a framework app — has `.listen(port, ...)`. */
216
+ /**
217
+ * True when the target looks like a framework app — has `.listen(port, ...)`.
218
+ *
219
+ * Some hosts (Express, Connect) return a callable function as their app
220
+ * value; others return an object (Fastify, Koa). We accept both — a
221
+ * function with a `.listen` method counts. NwireServables are excluded
222
+ * by the `$nwireServable` check at the call site.
223
+ */
237
224
  export declare function isForeignServable(x: unknown): x is ForeignServable;
238
225
  /**
239
226
  * Per-transport host factory shape (provided by interface packages like
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"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"}
package/dist/endpoint.js CHANGED
@@ -89,9 +89,15 @@ export class EndpointBuilder {
89
89
  // Each hook gets exactly one no-op chain step named for its phase so
90
90
  // tap observations emit start/end on every run. Plugins layer more
91
91
  // `.use()` on top — these defaults are the floor, not the ceiling.
92
- this.bootHook.use(async (_ctx, next) => { await next(); }, { name: "boot" });
93
- this.serveHook.use(async (_ctx, next) => { await next(); }, { name: "serve" });
94
- this.shutdownHook.use(async (_ctx, next) => { await next(); }, { name: "shutdown" });
92
+ this.bootHook.use(async (_ctx, next) => {
93
+ await next();
94
+ }, { name: "boot" });
95
+ this.serveHook.use(async (_ctx, next) => {
96
+ await next();
97
+ }, { name: "serve" });
98
+ this.shutdownHook.use(async (_ctx, next) => {
99
+ await next();
100
+ }, { name: "shutdown" });
95
101
  }
96
102
  /**
97
103
  * Add something to serve. Multiple calls compose. Apps are booted first
@@ -214,7 +220,6 @@ export class EndpointBuilder {
214
220
  host: this.config.host,
215
221
  nwireServables: this.nwireServables,
216
222
  foreignServables: this.foreignServables,
217
- container,
218
223
  });
219
224
  // Post-attach: every wire is now attached. Fire WireMounted.
220
225
  for (const s of this.nwireServables) {
@@ -236,7 +241,7 @@ export class EndpointBuilder {
236
241
  if (!ok) {
237
242
  throw new Error(`endpoint("${this.name}").serve(): wire "${s.transport}" mount prevented by a WireMounting subscriber.`);
238
243
  }
239
- await s.attach({ container, addCheck: () => undefined });
244
+ await s.attach({ addCheck: () => undefined });
240
245
  await fireLifecycle("nwire.wire.mounted", {
241
246
  appName: this.apps[0]?.appName ?? this.name,
242
247
  transport: s.transport,
@@ -350,9 +355,18 @@ export function isNwireServable(x) {
350
355
  export function isAppServable(x) {
351
356
  return typeof x === "object" && x !== null && x.$nwireApp === true;
352
357
  }
353
- /** True when the target looks like a framework app — has `.listen(port, ...)`. */
358
+ /**
359
+ * True when the target looks like a framework app — has `.listen(port, ...)`.
360
+ *
361
+ * Some hosts (Express, Connect) return a callable function as their app
362
+ * value; others return an object (Fastify, Koa). We accept both — a
363
+ * function with a `.listen` method counts. NwireServables are excluded
364
+ * by the `$nwireServable` check at the call site.
365
+ */
354
366
  export function isForeignServable(x) {
355
- return (typeof x === "object" && x !== null && typeof x.listen === "function");
367
+ return (x !== null &&
368
+ (typeof x === "object" || typeof x === "function") &&
369
+ typeof x.listen === "function");
356
370
  }
357
371
  // ─── Internal helpers ─────────────────────────────────────────────────────
358
372
  /**
@@ -381,7 +395,7 @@ async function startListener(opts) {
381
395
  // the foreign framework's router automatically without knowing the
382
396
  // framework. Future: detect Express/Fastify/Koa and auto-mount.
383
397
  for (const s of opts.nwireServables) {
384
- await s.attach({ container: opts.container, addCheck: () => undefined });
398
+ await s.attach({ addCheck: () => undefined });
385
399
  }
386
400
  return server;
387
401
  }
@@ -403,7 +417,7 @@ async function startListener(opts) {
403
417
  }
404
418
  const built = hostFactory();
405
419
  for (const s of opts.nwireServables) {
406
- await s.attach({ container: opts.container, addCheck: built.addCheck });
420
+ await s.attach({ addCheck: built.addCheck });
407
421
  }
408
422
  return await built.listen(opts.port, opts.host ?? "0.0.0.0");
409
423
  }
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"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"}
@@ -103,6 +103,18 @@ export interface LifecycleManager {
103
103
  * providers/plugins to register their own probes.
104
104
  */
105
105
  addCheck(check: HealthCheck): void;
106
+ /**
107
+ * Bare Node http handler for probes-on-main deployments. Mount on your
108
+ * own HTTP server's /livez and /readyz routes; the third arg picks which.
109
+ * No framework lock-in — works with Express, Fastify, Koa, raw http.
110
+ */
111
+ probeHandler(req: {
112
+ url?: string;
113
+ }, res: {
114
+ statusCode: number;
115
+ setHeader: (k: string, v: string) => void;
116
+ end: (body: string) => void;
117
+ }, kind?: "live" | "ready"): Promise<void>;
106
118
  /** The lightship instance, if enabled — for advanced/test access. */
107
119
  readonly lightship?: Lightship;
108
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3C,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;CAC1C;AAED,uFAAuF;AACvF,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EACjC,IAAI,GAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAM,GAC7C,WAAW,CAEb;AAED,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClD;AAED,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;CAC1C;AAED,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,KAAK,IAAI,IAAI,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IACnC,qEAAqE;IACrE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgJ5B"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3C,8CAA8C;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;CAC1C;AAED,uFAAuF;AACvF,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EACjC,IAAI,GAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAM,GAC7C,WAAW,CAEb;AAED,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClD;AAED,0EAA0E;AAC1E,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;CAC1C;AAED,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,KAAK,IAAI,IAAI,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IACnC;;;;OAIG;IACH,YAAY,CACV,GAAG,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,EACrB,GAAG,EAAE;QACH,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAC1C,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;KAC7B,EACD,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GACtB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,qEAAqE;IACrE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4M5B"}
package/dist/lifecycle.js CHANGED
@@ -139,8 +139,11 @@ export async function attachLifecycle(opts) {
139
139
  if (lightship) {
140
140
  lightship.signalNotReady();
141
141
  console.log(`[lifecycle] /readyz → 503; waiting ${shutdownCfg.drainDelay}ms for LB to catch up`);
142
+ // The drain delay exists to give the LB time to redirect traffic
143
+ // after /readyz flips to 503. Without lightship, there's no probe
144
+ // for an LB to poll — waiting would just stall shutdown.
145
+ await new Promise((r) => setTimeout(r, shutdownCfg.drainDelay));
142
146
  }
143
- await new Promise((r) => setTimeout(r, shutdownCfg.drainDelay));
144
147
  console.log(`[lifecycle] draining in-flight requests`);
145
148
  await terminator.terminate();
146
149
  console.log(`[lifecycle] running onShutdown`);
@@ -162,12 +165,63 @@ export async function attachLifecycle(opts) {
162
165
  };
163
166
  process.once("SIGTERM", () => void shutdown("SIGTERM"));
164
167
  process.once("SIGINT", () => void shutdown("SIGINT"));
168
+ /**
169
+ * Bare Node http handler for `/livez` / `/readyz` on the MAIN port. Use
170
+ * when probes-on-main is the deployment shape (Cloud Run, Lambda Function
171
+ * URLs, simple K8s sidecar-free setups).
172
+ *
173
+ * const probeHandler = lifecycle.probeHandler;
174
+ * expressApp.get("/livez", (req, res) => probeHandler(req, res, "live"));
175
+ * expressApp.get("/readyz", (req, res) => probeHandler(req, res, "ready"));
176
+ *
177
+ * `live` is always 200 unless the process is shutting down.
178
+ * `ready` is 200 only when all checks pass AND we're not shutting down.
179
+ * Both return 503 otherwise. Returns JSON body with check results.
180
+ */
181
+ const probeHandler = async (_req, res, kind = "ready") => {
182
+ res.setHeader("content-type", "application/json");
183
+ if (kind === "live") {
184
+ if (shuttingDown) {
185
+ res.statusCode = 503;
186
+ res.end(JSON.stringify({ status: "shutting-down" }));
187
+ return;
188
+ }
189
+ res.statusCode = 200;
190
+ res.end(JSON.stringify({ status: "live" }));
191
+ return;
192
+ }
193
+ // ready: run every registered check
194
+ if (shuttingDown) {
195
+ res.statusCode = 503;
196
+ res.end(JSON.stringify({ status: "shutting-down" }));
197
+ return;
198
+ }
199
+ const results = {};
200
+ let ok = true;
201
+ for (const c of dynamicChecks) {
202
+ const timeout = c.timeout ?? 5_000;
203
+ try {
204
+ await Promise.race([
205
+ Promise.resolve(c.check()),
206
+ new Promise((_, reject) => setTimeout(() => reject(new Error(`timed out after ${timeout}ms`)), timeout)),
207
+ ]);
208
+ results[c.name] = "ok";
209
+ }
210
+ catch (err) {
211
+ results[c.name] = err.message;
212
+ ok = false;
213
+ }
214
+ }
215
+ res.statusCode = ok ? 200 : 503;
216
+ res.end(JSON.stringify({ status: ok ? "ready" : "unready", checks: results }));
217
+ };
165
218
  return {
166
219
  ready,
167
220
  shutdown,
168
221
  addCheck: (c) => {
169
222
  dynamicChecks.push(c);
170
223
  },
224
+ probeHandler,
171
225
  get lightship() {
172
226
  return lightship;
173
227
  },
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nwire/endpoint",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "Nwire — production process lifecycle. Wraps any Node server (Express, Fastify, Koa, Nest, Nwire interfaces) with K8s-grade graceful shutdown, http-terminator drain, and lightship readiness/liveness probes. Standalone — no framework dependency beyond @nwire/container.",
5
5
  "keywords": [
6
6
  "endpoint",
@@ -32,8 +32,9 @@
32
32
  "dependencies": {
33
33
  "http-terminator": "^3.2.0",
34
34
  "lightship": "^9.0.4",
35
- "@nwire/container": "0.8.0",
36
- "@nwire/hooks": "0.8.0"
35
+ "@nwire/container": "0.8.17",
36
+ "@nwire/interface": "0.9.0",
37
+ "@nwire/hooks": "0.8.17"
37
38
  },
38
39
  "devDependencies": {
39
40
  "@types/node": "^22.19.9",