ugly-app 0.1.443 → 0.1.444

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.
@@ -1,2 +1,2 @@
1
- export declare const CLI_VERSION = "0.1.443";
1
+ export declare const CLI_VERSION = "0.1.444";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.443";
2
+ export const CLI_VERSION = "0.1.444";
3
3
  //# sourceMappingURL=version.js.map
@@ -36,6 +36,13 @@ export declare function getNatsConnection(): never;
36
36
  * Close the NATS connection. No-op — managed by data-proxy.
37
37
  */
38
38
  export declare function closeNats(): Promise<void>;
39
+ /**
40
+ * Diagnostic snapshot of the underlying NatsProxy state. Useful for
41
+ * /health endpoints and post-mortem dumps when push delivery looks
42
+ * stuck. Re-export of `natsProxyDiagSnapshot` so callers don't have
43
+ * to reach through to the proxy module.
44
+ */
45
+ export { natsProxyDiagSnapshot } from './NatsProxyClient.js';
39
46
  /**
40
47
  * Ensure a JetStream stream exists (idempotent).
41
48
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Nats.d.ts","sourceRoot":"","sources":["../../src/server/Nats.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAaL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAS9B,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAID;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAEnE;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,GAAG,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACzE,OAAO,CAAC,MAAM,IAAI,CAAC,CASrB;AAID,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AAEH,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,KAAK,CAKzC;AAED;;GAEG;AAEH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAE/C;AAID;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOhB;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,GACrC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAE/B;AAED,wBAAsB,cAAc,CAAC,UAAU,SAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtE;AAID,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC7C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC3B;AAID,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAenB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAOlD;AAED,YAAY,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"Nats.d.ts","sourceRoot":"","sources":["../../src/server/Nats.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAaL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAS9B,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAID;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAEnE;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,GAAG,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACzE,OAAO,CAAC,MAAM,IAAI,CAAC,CASrB;AAID,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AAEH,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,KAAK,CAKzC;AAED;;GAEG;AAEH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;;;;GAKG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAI7D;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOhB;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACzD,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,GACrC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAE/B;AAED,wBAAsB,cAAc,CAAC,UAAU,SAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtE;AAID,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAC7C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC3B;AAID,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAenB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAOlD;AAED,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -59,6 +59,13 @@ export function getNatsConnection() {
59
59
  export async function closeNats() {
60
60
  // No-op
61
61
  }
62
+ /**
63
+ * Diagnostic snapshot of the underlying NatsProxy state. Useful for
64
+ * /health endpoints and post-mortem dumps when push delivery looks
65
+ * stuck. Re-export of `natsProxyDiagSnapshot` so callers don't have
66
+ * to reach through to the proxy module.
67
+ */
68
+ export { natsProxyDiagSnapshot } from './NatsProxyClient.js';
62
69
  // ── JetStream ─────────────────────────────────────────────────────────────
63
70
  /**
64
71
  * Ensure a JetStream stream exists (idempotent).
@@ -1 +1 @@
1
- {"version":3,"file":"Nats.js","sourceRoot":"","sources":["../../src/server/Nats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Nats.js","sourceRoot":"","sources":["../../src/server/Nats.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,GAEhB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,6EAA6E;AAE7E,IAAI,WAAW,GAAG,EAAE,CAAC;AAErB,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,WAAW,GAAG,MAAM,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,6EAA6E;AAE7E;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,OAAgB;IAC3D,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,OAA0E;IAE1E,OAAO,kBAAkB,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAY,CAAC;YAC/D,KAAK,OAAO,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AASD;;GAEG;AACH,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,sDAAsD;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,IAAI,KAAK,CACb,qDAAqD;QACrD,wCAAwC,CACzC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,QAAQ;AACV,CAAC;AAED;;;;;GAKG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,6EAA6E;AAE7E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAGlC;IACC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAC7E,MAAM,YAAY,GAAG,WAAW;QAC9B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,IAAI,CAAC,EAAE,CAAC;QACjD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAEpB,MAAM,qBAAqB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAe,EAAE,OAAmB;IAClE,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAAkB,EAClB,MAA0D;IAE1D,MAAM,yBAAyB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAkB,EAClB,YAAoB,EACpB,OAAsC;IAEtC,OAAO,0BAA0B,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAU,GAAG,KAAK;IACrD,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAWD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,IAA8B;IAE9B,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAExC,MAAM,MAAM,GAAa;QACvB,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC;QAC3C,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC;QACzD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC;QACjD,IAAI,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC;KACtC,CAAC;IACF,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,iDAAiD,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -5,9 +5,23 @@
5
5
  * Shares the WebSocket connection with DataProxyClient (JSON-RPC).
6
6
  */
7
7
  import WebSocket from 'ws';
8
+ /** Public: snapshot for tests / diagnostic dumps. */
9
+ export declare function natsProxyDiagSnapshot(): {
10
+ wsState: string;
11
+ pending: number;
12
+ activeSubs: number;
13
+ jsConsumers: number;
14
+ droppedFrames: number;
15
+ lastResponseAgeMs: number;
16
+ };
8
17
  /**
9
18
  * Initialize the NATS proxy client. Must be called after the WebSocket is open.
10
19
  * The WebSocket must be the same one used by DataProxyClient.
20
+ *
21
+ * Called every time DataProxyClient (re)establishes its WS — including
22
+ * after a heartbeat-driven `terminate()`. We log the rotation so a
23
+ * surge of `[NatsProxy] Request timed out` errors can be correlated
24
+ * with a fresh connection that hasn't re-registered the subscriptions.
11
25
  */
12
26
  export declare function initNatsProxy(ws: WebSocket): void;
13
27
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"NatsProxyClient.d.ts","sourceRoot":"","sources":["../../src/server/NatsProxyClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,SAAS,MAAM,IAAI,CAAC;AA8E3B;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAEjD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CA+C7D;AA2BD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAS3E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAC/C,OAAO,CAAC,MAAM,IAAI,CAAC,CAerB;AAID,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIrE;AAID,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1F;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5F;AAED,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,GACrC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CA6C/B;AAID,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAGrF"}
1
+ {"version":3,"file":"NatsProxyClient.d.ts","sourceRoot":"","sources":["../../src/server/NatsProxyClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,SAAS,MAAM,IAAI,CAAC;AA0F3B,qDAAqD;AACrD,wBAAgB,qBAAqB,IAAI;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CASA;AAkCD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAcjD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgD7D;AAmED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAuB3E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAC/C,OAAO,CAAC,MAAM,IAAI,CAAC,CAerB;AAID,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIrE;AAID,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1F;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5F;AAED,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,GACrC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CA6C/B;AAID,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAGrF"}
@@ -31,8 +31,54 @@ let _requestId = 0;
31
31
  const _pending = new Map();
32
32
  const _subHandlers = new Map();
33
33
  const _jsConsumerHandlers = new Map();
34
- // Track active subscriptions for resubscription on reconnect
34
+ // Track active subscriptions for resubscription on reconnect.
35
+ // NOTE (2026-05-05): this map is populated in `natsProxySubscribe` but
36
+ // no code path actually re-registers these subs with the data-proxy
37
+ // after a WS reconnect. Symptom: long-lived push subscriptions stop
38
+ // delivering after a transient WS drop; clients see "[NatsProxy]
39
+ // Request timed out" without realizing their sub is orphaned. Worth
40
+ // fixing alongside any deeper NatsProxy work; for now the diagnostic
41
+ // logging below at least surfaces the failure mode.
35
42
  const _activeSubs = new Map();
43
+ // ── Diagnostics state ─────────────────────────────────────────────────────
44
+ /**
45
+ * Wall-clock of the most recent successful response (any opcode).
46
+ * Read by the timeout-context logger so a stale connection — one that
47
+ * accepts new sends but never responds — is visible at a glance.
48
+ */
49
+ let _lastResponseAt = Date.now();
50
+ /**
51
+ * Count of frames `sendBinary` silently dropped because `_ws` wasn't
52
+ * OPEN. The drop itself logs at warn level; this counter is for
53
+ * post-mortem inspection (e.g. via `natsProxyDiagSnapshot()`).
54
+ */
55
+ let _droppedFrames = 0;
56
+ /**
57
+ * Throttle for the "WS not OPEN, dropping frame" warn. A burst of
58
+ * 100 dropped frames during a reconnect window would otherwise spam
59
+ * the log; one warn per second is enough to trace the failure.
60
+ */
61
+ let _lastDropWarnAt = 0;
62
+ function readyStateName(state) {
63
+ switch (state) {
64
+ case WebSocket.CONNECTING: return 'CONNECTING';
65
+ case WebSocket.OPEN: return 'OPEN';
66
+ case WebSocket.CLOSING: return 'CLOSING';
67
+ case WebSocket.CLOSED: return 'CLOSED';
68
+ default: return state === undefined ? 'NULL' : `UNKNOWN(${state})`;
69
+ }
70
+ }
71
+ /** Public: snapshot for tests / diagnostic dumps. */
72
+ export function natsProxyDiagSnapshot() {
73
+ return {
74
+ wsState: readyStateName(_ws?.readyState),
75
+ pending: _pending.size,
76
+ activeSubs: _activeSubs.size,
77
+ jsConsumers: _jsConsumerHandlers.size,
78
+ droppedFrames: _droppedFrames,
79
+ lastResponseAgeMs: Date.now() - _lastResponseAt,
80
+ };
81
+ }
36
82
  const textEncoder = new TextEncoder();
37
83
  const textDecoder = new TextDecoder();
38
84
  // ── Frame encoding/decoding ───────────────────────────────────────────────
@@ -59,9 +105,24 @@ function encodeKeyPayload(key, value) {
59
105
  /**
60
106
  * Initialize the NATS proxy client. Must be called after the WebSocket is open.
61
107
  * The WebSocket must be the same one used by DataProxyClient.
108
+ *
109
+ * Called every time DataProxyClient (re)establishes its WS — including
110
+ * after a heartbeat-driven `terminate()`. We log the rotation so a
111
+ * surge of `[NatsProxy] Request timed out` errors can be correlated
112
+ * with a fresh connection that hasn't re-registered the subscriptions.
62
113
  */
63
114
  export function initNatsProxy(ws) {
115
+ const previous = _ws;
64
116
  _ws = ws;
117
+ _lastResponseAt = Date.now();
118
+ if (previous !== null && previous !== ws) {
119
+ console.warn(`[NatsProxy] WS rotated (was=${readyStateName(previous.readyState)}, ` +
120
+ `new=${readyStateName(ws.readyState)}, pending=${_pending.size}, ` +
121
+ `activeSubs=${_activeSubs.size}, jsConsumers=${_jsConsumerHandlers.size}, ` +
122
+ `droppedFrames=${_droppedFrames}). ` +
123
+ `Note: existing subs/consumers are NOT auto-resubscribed; orphaned subs ` +
124
+ `will silently stop delivering until the caller re-subscribes.`);
125
+ }
65
126
  }
66
127
  /**
67
128
  * Handle a binary message from the data-proxy WebSocket.
@@ -102,6 +163,7 @@ export function handleNatsBinaryMessage(data) {
102
163
  const pending = _pending.get(requestId);
103
164
  if (pending) {
104
165
  _pending.delete(requestId);
166
+ _lastResponseAt = Date.now();
105
167
  if (status === STATUS_OK) {
106
168
  pending.resolve(payload);
107
169
  }
@@ -112,24 +174,61 @@ export function handleNatsBinaryMessage(data) {
112
174
  }
113
175
  return false;
114
176
  }
177
+ /**
178
+ * Try to send a binary frame on the current WebSocket. Returns true
179
+ * if the frame was actually written, false if the WS wasn't OPEN and
180
+ * the frame was silently dropped. Callers in `request()` use the
181
+ * return value to mark `pending.framed = false` so the timeout
182
+ * diagnostic can distinguish "frame sent, server ignored" from
183
+ * "frame never sent because WS was down."
184
+ */
115
185
  function sendBinary(buf) {
116
186
  if (_ws?.readyState === WebSocket.OPEN) {
117
187
  _ws.send(buf);
188
+ return true;
189
+ }
190
+ // Silently dropped frame — log throttled so a reconnect burst
191
+ // doesn't flood. The accompanying timeout (10s later) will surface
192
+ // the user-visible error; this warn surfaces the cause.
193
+ _droppedFrames += 1;
194
+ const now = Date.now();
195
+ if (now - _lastDropWarnAt > 1000) {
196
+ _lastDropWarnAt = now;
197
+ console.warn(`[NatsProxy] Frame dropped (WS not OPEN: state=${readyStateName(_ws?.readyState)}, ` +
198
+ `droppedFrames=${_droppedFrames} cumulative). Subsequent requests will time out.`);
118
199
  }
200
+ return false;
119
201
  }
120
202
  function request(opcode, subject, payload = new Uint8Array(0), timeoutMs = 10_000) {
121
203
  const id = ++_requestId;
122
204
  const frame = encodeRequest(id, opcode, subject, payload);
123
205
  return new Promise((resolve, reject) => {
206
+ const queuedAt = Date.now();
124
207
  const timer = setTimeout(() => {
208
+ const entry = _pending.get(id);
125
209
  _pending.delete(id);
126
- reject(new Error(`[NatsProxy] Request timed out after ${timeoutMs}ms (op=${opcode}, subject=${subject})`));
210
+ // Diagnostic context for the timeout answers "why did this
211
+ // hang?". The four most useful signals:
212
+ // 1. Was the frame ever written? (entry.framed)
213
+ // 2. WS state at timeout (vs at queue time, captured in framed)
214
+ // 3. How long since ANY response landed? (lastResponseAge)
215
+ // 4. Are we backed up? (pending count + dropped-frame count)
216
+ const ctx = ` [framed=${entry?.framed ?? false}, ` +
217
+ `wsState=${readyStateName(_ws?.readyState)}, ` +
218
+ `pending=${_pending.size}, ` +
219
+ `lastResponseAgeMs=${Date.now() - _lastResponseAt}, ` +
220
+ `droppedFramesCumulative=${_droppedFrames}, ` +
221
+ `activeSubs=${_activeSubs.size}]`;
222
+ reject(new Error(`[NatsProxy] Request timed out after ${timeoutMs}ms (op=${opcode}, subject=${subject})${ctx}`));
127
223
  }, timeoutMs);
128
- _pending.set(id, {
224
+ const pending = {
129
225
  resolve: (val) => { clearTimeout(timer); resolve(val); },
130
226
  reject: (err) => { clearTimeout(timer); reject(err); },
131
- });
132
- sendBinary(frame);
227
+ queuedAt,
228
+ framed: false,
229
+ };
230
+ _pending.set(id, pending);
231
+ pending.framed = sendBinary(frame);
133
232
  });
134
233
  }
135
234
  // ── Public API: Pub/Sub ───────────────────────────────────────────────────
@@ -137,15 +236,26 @@ function request(opcode, subject, payload = new Uint8Array(0), timeoutMs = 10_00
137
236
  * Publish a message to a NATS subject (fire-and-forget).
138
237
  */
139
238
  export function natsProxyPublish(subject, payload) {
140
- if (_ws?.readyState !== WebSocket.OPEN)
239
+ if (_ws?.readyState !== WebSocket.OPEN) {
240
+ // Even fire-and-forget publishes get the dropped-frame counter
241
+ // bump for diagnostic parity. Without this a publish-heavy
242
+ // workload during a WS outage would silently lose all events
243
+ // with no trace; the next request-style call would surface
244
+ // `droppedFrames` in its timeout context anyway, but we count
245
+ // them here too so the picture is complete.
246
+ _droppedFrames += 1;
247
+ const now = Date.now();
248
+ if (now - _lastDropWarnAt > 1000) {
249
+ _lastDropWarnAt = now;
250
+ console.warn(`[NatsProxy] Publish dropped (WS not OPEN: state=${readyStateName(_ws?.readyState)}, ` +
251
+ `subject=${subject}, droppedFrames=${_droppedFrames} cumulative).`);
252
+ }
141
253
  return;
254
+ }
142
255
  const id = ++_requestId;
143
256
  sendBinary(encodeRequest(id, OP_PUBLISH, subject, payload));
144
257
  // Fire and forget — don't wait for response
145
- _pending.set(id, {
146
- resolve: () => { },
147
- reject: () => { },
148
- });
258
+ _pending.set(id, { resolve: () => { }, reject: () => { }, queuedAt: Date.now(), framed: true });
149
259
  }
150
260
  /**
151
261
  * Subscribe to a NATS subject. Returns an unsubscribe function.
@@ -162,7 +272,7 @@ export async function natsProxySubscribe(subject, handler) {
162
272
  unsubPayload.writeUInt16BE(subId, 0);
163
273
  const id = ++_requestId;
164
274
  sendBinary(encodeRequest(id, OP_UNSUBSCRIBE, '', unsubPayload));
165
- _pending.set(id, { resolve: () => { }, reject: () => { } });
275
+ _pending.set(id, { resolve: () => { }, reject: () => { }, queuedAt: Date.now(), framed: false });
166
276
  };
167
277
  }
168
278
  // ── Public API: KV ────────────────────────────────────────────────────────
@@ -208,7 +318,7 @@ export async function natsProxyJsConsumerConsume(streamName, consumerName, handl
208
318
  payload.writeUInt32BE(msgId, 2);
209
319
  const id = ++_requestId;
210
320
  sendBinary(encodeRequest(id, OP_JS_ACK, '', payload));
211
- _pending.set(id, { resolve: () => { }, reject: () => { } });
321
+ _pending.set(id, { resolve: () => { }, reject: () => { }, queuedAt: Date.now(), framed: false });
212
322
  },
213
323
  nak: (delayMs = 0) => {
214
324
  const payload = Buffer.allocUnsafe(10);
@@ -217,7 +327,7 @@ export async function natsProxyJsConsumerConsume(streamName, consumerName, handl
217
327
  payload.writeUInt32BE(delayMs, 6);
218
328
  const id = ++_requestId;
219
329
  sendBinary(encodeRequest(id, OP_JS_NAK, '', payload));
220
- _pending.set(id, { resolve: () => { }, reject: () => { } });
330
+ _pending.set(id, { resolve: () => { }, reject: () => { }, queuedAt: Date.now(), framed: false });
221
331
  },
222
332
  working: () => {
223
333
  const payload = Buffer.allocUnsafe(6);
@@ -225,7 +335,7 @@ export async function natsProxyJsConsumerConsume(streamName, consumerName, handl
225
335
  payload.writeUInt32BE(msgId, 2);
226
336
  const id = ++_requestId;
227
337
  sendBinary(encodeRequest(id, OP_JS_WORKING, '', payload));
228
- _pending.set(id, { resolve: () => { }, reject: () => { } });
338
+ _pending.set(id, { resolve: () => { }, reject: () => { }, queuedAt: Date.now(), framed: false });
229
339
  },
230
340
  });
231
341
  });
@@ -1 +1 @@
1
- {"version":3,"file":"NatsProxyClient.js","sourceRoot":"","sources":["../../src/server/NatsProxyClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NatsProxyClient.js","sourceRoot":"","sources":["../../src/server/NatsProxyClient.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugly-app",
3
- "version": "0.1.443",
3
+ "version": "0.1.444",
4
4
  "type": "module",
5
5
  "main": "./dist/server/index.js",
6
6
  "exports": {
@@ -1,2 +1,2 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.443";
2
+ export const CLI_VERSION = "0.1.444";
@@ -97,6 +97,14 @@ export async function closeNats(): Promise<void> {
97
97
  // No-op
98
98
  }
99
99
 
100
+ /**
101
+ * Diagnostic snapshot of the underlying NatsProxy state. Useful for
102
+ * /health endpoints and post-mortem dumps when push delivery looks
103
+ * stuck. Re-export of `natsProxyDiagSnapshot` so callers don't have
104
+ * to reach through to the proxy module.
105
+ */
106
+ export { natsProxyDiagSnapshot } from './NatsProxyClient.js';
107
+
100
108
  // ── JetStream ─────────────────────────────────────────────────────────────
101
109
 
102
110
  /**
@@ -42,15 +42,78 @@ let _requestId = 0;
42
42
  interface PendingBinaryRequest {
43
43
  resolve: (payload: Buffer) => void;
44
44
  reject: (error: Error) => void;
45
+ /** Wall-clock when the request was queued; used by timeout diag. */
46
+ queuedAt: number;
47
+ /** Whether `sendBinary` actually wrote the frame to the WS (vs silently dropped because WS wasn't OPEN). */
48
+ framed: boolean;
45
49
  }
46
50
 
47
51
  const _pending = new Map<number, PendingBinaryRequest>();
48
52
  const _subHandlers = new Map<number, (subject: string, data: Buffer) => void>();
49
53
  const _jsConsumerHandlers = new Map<number, (msgId: number, deliveryCount: number, data: Buffer) => void>();
50
54
 
51
- // Track active subscriptions for resubscription on reconnect
55
+ // Track active subscriptions for resubscription on reconnect.
56
+ // NOTE (2026-05-05): this map is populated in `natsProxySubscribe` but
57
+ // no code path actually re-registers these subs with the data-proxy
58
+ // after a WS reconnect. Symptom: long-lived push subscriptions stop
59
+ // delivering after a transient WS drop; clients see "[NatsProxy]
60
+ // Request timed out" without realizing their sub is orphaned. Worth
61
+ // fixing alongside any deeper NatsProxy work; for now the diagnostic
62
+ // logging below at least surfaces the failure mode.
52
63
  const _activeSubs = new Map<number, { subject: string; handler: (subject: string, data: Buffer) => void }>();
53
64
 
65
+ // ── Diagnostics state ─────────────────────────────────────────────────────
66
+
67
+ /**
68
+ * Wall-clock of the most recent successful response (any opcode).
69
+ * Read by the timeout-context logger so a stale connection — one that
70
+ * accepts new sends but never responds — is visible at a glance.
71
+ */
72
+ let _lastResponseAt: number = Date.now();
73
+
74
+ /**
75
+ * Count of frames `sendBinary` silently dropped because `_ws` wasn't
76
+ * OPEN. The drop itself logs at warn level; this counter is for
77
+ * post-mortem inspection (e.g. via `natsProxyDiagSnapshot()`).
78
+ */
79
+ let _droppedFrames = 0;
80
+
81
+ /**
82
+ * Throttle for the "WS not OPEN, dropping frame" warn. A burst of
83
+ * 100 dropped frames during a reconnect window would otherwise spam
84
+ * the log; one warn per second is enough to trace the failure.
85
+ */
86
+ let _lastDropWarnAt = 0;
87
+
88
+ function readyStateName(state: number | undefined): string {
89
+ switch (state) {
90
+ case WebSocket.CONNECTING: return 'CONNECTING';
91
+ case WebSocket.OPEN: return 'OPEN';
92
+ case WebSocket.CLOSING: return 'CLOSING';
93
+ case WebSocket.CLOSED: return 'CLOSED';
94
+ default: return state === undefined ? 'NULL' : `UNKNOWN(${state})`;
95
+ }
96
+ }
97
+
98
+ /** Public: snapshot for tests / diagnostic dumps. */
99
+ export function natsProxyDiagSnapshot(): {
100
+ wsState: string;
101
+ pending: number;
102
+ activeSubs: number;
103
+ jsConsumers: number;
104
+ droppedFrames: number;
105
+ lastResponseAgeMs: number;
106
+ } {
107
+ return {
108
+ wsState: readyStateName(_ws?.readyState),
109
+ pending: _pending.size,
110
+ activeSubs: _activeSubs.size,
111
+ jsConsumers: _jsConsumerHandlers.size,
112
+ droppedFrames: _droppedFrames,
113
+ lastResponseAgeMs: Date.now() - _lastResponseAt,
114
+ };
115
+ }
116
+
54
117
  const textEncoder = new TextEncoder();
55
118
  const textDecoder = new TextDecoder();
56
119
 
@@ -86,9 +149,26 @@ function encodeKeyPayload(key: string, value?: Uint8Array): Buffer {
86
149
  /**
87
150
  * Initialize the NATS proxy client. Must be called after the WebSocket is open.
88
151
  * The WebSocket must be the same one used by DataProxyClient.
152
+ *
153
+ * Called every time DataProxyClient (re)establishes its WS — including
154
+ * after a heartbeat-driven `terminate()`. We log the rotation so a
155
+ * surge of `[NatsProxy] Request timed out` errors can be correlated
156
+ * with a fresh connection that hasn't re-registered the subscriptions.
89
157
  */
90
158
  export function initNatsProxy(ws: WebSocket): void {
159
+ const previous = _ws;
91
160
  _ws = ws;
161
+ _lastResponseAt = Date.now();
162
+ if (previous !== null && previous !== ws) {
163
+ console.warn(
164
+ `[NatsProxy] WS rotated (was=${readyStateName(previous.readyState)}, ` +
165
+ `new=${readyStateName(ws.readyState)}, pending=${_pending.size}, ` +
166
+ `activeSubs=${_activeSubs.size}, jsConsumers=${_jsConsumerHandlers.size}, ` +
167
+ `droppedFrames=${_droppedFrames}). ` +
168
+ `Note: existing subs/consumers are NOT auto-resubscribed; orphaned subs ` +
169
+ `will silently stop delivering until the caller re-subscribes.`,
170
+ );
171
+ }
92
172
  }
93
173
 
94
174
  /**
@@ -133,6 +213,7 @@ export function handleNatsBinaryMessage(data: Buffer): boolean {
133
213
  const pending = _pending.get(requestId);
134
214
  if (pending) {
135
215
  _pending.delete(requestId);
216
+ _lastResponseAt = Date.now();
136
217
  if (status === STATUS_OK) {
137
218
  pending.resolve(payload);
138
219
  } else {
@@ -144,10 +225,32 @@ export function handleNatsBinaryMessage(data: Buffer): boolean {
144
225
  return false;
145
226
  }
146
227
 
147
- function sendBinary(buf: Buffer): void {
228
+ /**
229
+ * Try to send a binary frame on the current WebSocket. Returns true
230
+ * if the frame was actually written, false if the WS wasn't OPEN and
231
+ * the frame was silently dropped. Callers in `request()` use the
232
+ * return value to mark `pending.framed = false` so the timeout
233
+ * diagnostic can distinguish "frame sent, server ignored" from
234
+ * "frame never sent because WS was down."
235
+ */
236
+ function sendBinary(buf: Buffer): boolean {
148
237
  if (_ws?.readyState === WebSocket.OPEN) {
149
238
  _ws.send(buf);
239
+ return true;
150
240
  }
241
+ // Silently dropped frame — log throttled so a reconnect burst
242
+ // doesn't flood. The accompanying timeout (10s later) will surface
243
+ // the user-visible error; this warn surfaces the cause.
244
+ _droppedFrames += 1;
245
+ const now = Date.now();
246
+ if (now - _lastDropWarnAt > 1000) {
247
+ _lastDropWarnAt = now;
248
+ console.warn(
249
+ `[NatsProxy] Frame dropped (WS not OPEN: state=${readyStateName(_ws?.readyState)}, ` +
250
+ `droppedFrames=${_droppedFrames} cumulative). Subsequent requests will time out.`,
251
+ );
252
+ }
253
+ return false;
151
254
  }
152
255
 
153
256
  function request(opcode: number, subject: string, payload: Uint8Array = new Uint8Array(0), timeoutMs = 10_000): Promise<Buffer> {
@@ -155,15 +258,33 @@ function request(opcode: number, subject: string, payload: Uint8Array = new Uint
155
258
  const frame = encodeRequest(id, opcode, subject, payload);
156
259
 
157
260
  return new Promise<Buffer>((resolve, reject) => {
261
+ const queuedAt = Date.now();
158
262
  const timer = setTimeout(() => {
263
+ const entry = _pending.get(id);
159
264
  _pending.delete(id);
160
- reject(new Error(`[NatsProxy] Request timed out after ${timeoutMs}ms (op=${opcode}, subject=${subject})`));
265
+ // Diagnostic context for the timeout answers "why did this
266
+ // hang?". The four most useful signals:
267
+ // 1. Was the frame ever written? (entry.framed)
268
+ // 2. WS state at timeout (vs at queue time, captured in framed)
269
+ // 3. How long since ANY response landed? (lastResponseAge)
270
+ // 4. Are we backed up? (pending count + dropped-frame count)
271
+ const ctx =
272
+ ` [framed=${entry?.framed ?? false}, ` +
273
+ `wsState=${readyStateName(_ws?.readyState)}, ` +
274
+ `pending=${_pending.size}, ` +
275
+ `lastResponseAgeMs=${Date.now() - _lastResponseAt}, ` +
276
+ `droppedFramesCumulative=${_droppedFrames}, ` +
277
+ `activeSubs=${_activeSubs.size}]`;
278
+ reject(new Error(`[NatsProxy] Request timed out after ${timeoutMs}ms (op=${opcode}, subject=${subject})${ctx}`));
161
279
  }, timeoutMs);
162
- _pending.set(id, {
280
+ const pending: PendingBinaryRequest = {
163
281
  resolve: (val) => { clearTimeout(timer); resolve(val); },
164
282
  reject: (err) => { clearTimeout(timer); reject(err); },
165
- });
166
- sendBinary(frame);
283
+ queuedAt,
284
+ framed: false,
285
+ };
286
+ _pending.set(id, pending);
287
+ pending.framed = sendBinary(frame);
167
288
  });
168
289
  }
169
290
 
@@ -173,14 +294,28 @@ function request(opcode: number, subject: string, payload: Uint8Array = new Uint
173
294
  * Publish a message to a NATS subject (fire-and-forget).
174
295
  */
175
296
  export function natsProxyPublish(subject: string, payload: Uint8Array): void {
176
- if (_ws?.readyState !== WebSocket.OPEN) return;
297
+ if (_ws?.readyState !== WebSocket.OPEN) {
298
+ // Even fire-and-forget publishes get the dropped-frame counter
299
+ // bump for diagnostic parity. Without this a publish-heavy
300
+ // workload during a WS outage would silently lose all events
301
+ // with no trace; the next request-style call would surface
302
+ // `droppedFrames` in its timeout context anyway, but we count
303
+ // them here too so the picture is complete.
304
+ _droppedFrames += 1;
305
+ const now = Date.now();
306
+ if (now - _lastDropWarnAt > 1000) {
307
+ _lastDropWarnAt = now;
308
+ console.warn(
309
+ `[NatsProxy] Publish dropped (WS not OPEN: state=${readyStateName(_ws?.readyState)}, ` +
310
+ `subject=${subject}, droppedFrames=${_droppedFrames} cumulative).`,
311
+ );
312
+ }
313
+ return;
314
+ }
177
315
  const id = ++_requestId;
178
316
  sendBinary(encodeRequest(id, OP_PUBLISH, subject, payload));
179
317
  // Fire and forget — don't wait for response
180
- _pending.set(id, {
181
- resolve: () => {},
182
- reject: () => {},
183
- });
318
+ _pending.set(id, { resolve: () => {}, reject: () => {}, queuedAt: Date.now(), framed: true });
184
319
  }
185
320
 
186
321
  /**
@@ -202,7 +337,7 @@ export async function natsProxySubscribe(
202
337
  unsubPayload.writeUInt16BE(subId, 0);
203
338
  const id = ++_requestId;
204
339
  sendBinary(encodeRequest(id, OP_UNSUBSCRIBE, '', unsubPayload));
205
- _pending.set(id, { resolve: () => {}, reject: () => {} });
340
+ _pending.set(id, { resolve: () => {}, reject: () => {}, queuedAt: Date.now(), framed: false });
206
341
  };
207
342
  }
208
343
 
@@ -291,7 +426,7 @@ export async function natsProxyJsConsumerConsume(
291
426
  payload.writeUInt32BE(msgId, 2);
292
427
  const id = ++_requestId;
293
428
  sendBinary(encodeRequest(id, OP_JS_ACK, '', payload));
294
- _pending.set(id, { resolve: () => {}, reject: () => {} });
429
+ _pending.set(id, { resolve: () => {}, reject: () => {}, queuedAt: Date.now(), framed: false });
295
430
  },
296
431
  nak: (delayMs = 0) => {
297
432
  const payload = Buffer.allocUnsafe(10);
@@ -300,7 +435,7 @@ export async function natsProxyJsConsumerConsume(
300
435
  payload.writeUInt32BE(delayMs, 6);
301
436
  const id = ++_requestId;
302
437
  sendBinary(encodeRequest(id, OP_JS_NAK, '', payload));
303
- _pending.set(id, { resolve: () => {}, reject: () => {} });
438
+ _pending.set(id, { resolve: () => {}, reject: () => {}, queuedAt: Date.now(), framed: false });
304
439
  },
305
440
  working: () => {
306
441
  const payload = Buffer.allocUnsafe(6);
@@ -308,7 +443,7 @@ export async function natsProxyJsConsumerConsume(
308
443
  payload.writeUInt32BE(msgId, 2);
309
444
  const id = ++_requestId;
310
445
  sendBinary(encodeRequest(id, OP_JS_WORKING, '', payload));
311
- _pending.set(id, { resolve: () => {}, reject: () => {} });
446
+ _pending.set(id, { resolve: () => {}, reject: () => {}, queuedAt: Date.now(), framed: false });
312
447
  },
313
448
  });
314
449
  });