@rotorsoft/act-http 1.11.1 → 1.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +2 -5
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/@types/api/actor.d.ts +4 -6
  4. package/dist/@types/api/actor.d.ts.map +1 -1
  5. package/dist/@types/api/dispatch.d.ts +46 -1
  6. package/dist/@types/api/dispatch.d.ts.map +1 -1
  7. package/dist/@types/api/index.d.ts +3 -3
  8. package/dist/@types/api/sse-wiring.d.ts +4 -4
  9. package/dist/@types/api/sse-wiring.d.ts.map +1 -1
  10. package/dist/@types/hono/index.d.ts +80 -13
  11. package/dist/@types/hono/index.d.ts.map +1 -1
  12. package/dist/@types/openapi/index.d.ts.map +1 -1
  13. package/dist/@types/receiver/extract.d.ts +4 -4
  14. package/dist/@types/receiver/hono/index.d.ts +1 -1
  15. package/dist/@types/receiver/verify.d.ts +2 -2
  16. package/dist/@types/sse/apply-patch.d.ts.map +1 -1
  17. package/dist/@types/sse/broadcast.d.ts +6 -24
  18. package/dist/@types/sse/broadcast.d.ts.map +1 -1
  19. package/dist/@types/sse/state-cache.d.ts +1 -1
  20. package/dist/@types/sse/types.d.ts +4 -5
  21. package/dist/@types/sse/types.d.ts.map +1 -1
  22. package/dist/@types/trpc/index.d.ts +107 -35
  23. package/dist/@types/trpc/index.d.ts.map +1 -1
  24. package/dist/@types/webhook/index.d.ts +1 -1
  25. package/dist/@types/webhook/index.d.ts.map +1 -1
  26. package/dist/@types/webhook/types.d.ts +1 -1
  27. package/dist/api/index.cjs +1 -3
  28. package/dist/api/index.cjs.map +1 -1
  29. package/dist/api/index.js +2 -2
  30. package/dist/{chunk-MKD3SM3N.js → chunk-BOJG4555.js} +1 -1
  31. package/dist/chunk-BOJG4555.js.map +1 -0
  32. package/dist/{chunk-EERALS5E.js → chunk-CVCTDLJA.js} +1 -1
  33. package/dist/chunk-CVCTDLJA.js.map +1 -0
  34. package/dist/{chunk-G5FNOSDX.js → chunk-ET2PACPO.js} +1 -1
  35. package/dist/chunk-ET2PACPO.js.map +1 -0
  36. package/dist/{chunk-TTVMQYNN.js → chunk-OEMQP5ZM.js} +2 -2
  37. package/dist/chunk-OEMQP5ZM.js.map +1 -0
  38. package/dist/{chunk-5KZI37IT.js → chunk-QSH2Y3YR.js} +3 -3
  39. package/dist/chunk-QSH2Y3YR.js.map +1 -0
  40. package/dist/{chunk-FSN52BXM.js → chunk-YEDAY2PC.js} +3 -5
  41. package/dist/chunk-YEDAY2PC.js.map +1 -0
  42. package/dist/hono/index.cjs +1 -3
  43. package/dist/hono/index.cjs.map +1 -1
  44. package/dist/hono/index.js +4 -4
  45. package/dist/hono/index.js.map +1 -1
  46. package/dist/openapi/index.cjs +103 -35
  47. package/dist/openapi/index.cjs.map +1 -1
  48. package/dist/openapi/index.js +104 -36
  49. package/dist/openapi/index.js.map +1 -1
  50. package/dist/receiver/express/index.cjs.map +1 -1
  51. package/dist/receiver/express/index.js +1 -1
  52. package/dist/receiver/fastify/index.cjs.map +1 -1
  53. package/dist/receiver/fastify/index.js +1 -1
  54. package/dist/receiver/hono/index.cjs.map +1 -1
  55. package/dist/receiver/hono/index.js +2 -2
  56. package/dist/receiver/index.cjs.map +1 -1
  57. package/dist/receiver/index.js +3 -3
  58. package/dist/receiver/index.js.map +1 -1
  59. package/dist/receiver/trpc/index.cjs.map +1 -1
  60. package/dist/receiver/trpc/index.js +1 -1
  61. package/dist/sse/index.cjs +7 -25
  62. package/dist/sse/index.cjs.map +1 -1
  63. package/dist/sse/index.js +8 -26
  64. package/dist/sse/index.js.map +1 -1
  65. package/dist/trpc/index.cjs +2 -8
  66. package/dist/trpc/index.cjs.map +1 -1
  67. package/dist/trpc/index.js +5 -9
  68. package/dist/trpc/index.js.map +1 -1
  69. package/dist/webhook/index.cjs.map +1 -1
  70. package/dist/webhook/index.js.map +1 -1
  71. package/package.json +2 -2
  72. package/dist/chunk-5KZI37IT.js.map +0 -1
  73. package/dist/chunk-EERALS5E.js.map +0 -1
  74. package/dist/chunk-FSN52BXM.js.map +0 -1
  75. package/dist/chunk-G5FNOSDX.js.map +0 -1
  76. package/dist/chunk-MKD3SM3N.js.map +0 -1
  77. package/dist/chunk-TTVMQYNN.js.map +0 -1
@@ -6,15 +6,13 @@ import type { Actor } from "@rotorsoft/act";
6
6
  * for this single closure that every transport (tRPC, Hono, OpenAPI
7
7
  * docs) composes against.
8
8
  *
9
- * The `request` argument is intentionally generic. Each transport
10
- * narrows it at the call site (`IncomingMessage` for Hono, the tRPC
11
- * context object for tRPC, etc.) — keeping the contract here
12
- * transport-agnostic means one extractor implementation plugs into
13
- * every adapter unchanged.
9
+ * Each transport types `request` as what it hands over: the Hono
10
+ * `Context`, or the host's tRPC context. An extractor that takes
11
+ * `unknown` still plugs into every transport unchanged.
14
12
  *
15
13
  * Async is allowed so the extractor can verify a JWT against a
16
14
  * remote JWKS endpoint without forcing every host to synchronously
17
15
  * cache.
18
16
  */
19
- export type ActorExtractor = (request: unknown) => Actor | Promise<Actor>;
17
+ export type ActorExtractor<TRequest = unknown> = (request: TRequest) => Actor | Promise<Actor>;
20
18
  //# sourceMappingURL=actor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"actor.d.ts","sourceRoot":"","sources":["../../../src/api/actor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"actor.d.ts","sourceRoot":"","sources":["../../../src/api/actor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,cAAc,CAAC,QAAQ,GAAG,OAAO,IAAI,CAC/C,OAAO,EAAE,QAAQ,KACd,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -1,5 +1,6 @@
1
- import type { Actor, Target } from "@rotorsoft/act";
1
+ import type { Act, Actor, Registry, Schema, Schemas, Snapshot, Target } from "@rotorsoft/act";
2
2
  import type { IdempotencyStore } from "@rotorsoft/act-ops/idempotency";
3
+ import type { ZodType } from "zod";
3
4
  /**
4
5
  * The Act surface the generated transports walk: the registry's action
5
6
  * name → owning-state map and `do(...)`. A structural bound lets `TApp`
@@ -11,10 +12,54 @@ export type ActSurface = {
11
12
  actions: Record<string, {
12
13
  readonly name: string;
13
14
  readonly actions: Record<string, unknown>;
15
+ /** The state's schema and its events', which the OpenAPI doc describes responses with. */
16
+ readonly state?: ZodType;
17
+ readonly events?: Readonly<Record<string, ZodType>>;
14
18
  }>;
15
19
  };
16
20
  do(action: string, target: Target, payload: unknown): Promise<unknown>;
17
21
  };
22
+ /**
23
+ * The registry types of a built app, read back so a generated API keeps
24
+ * them: each action's payload, the state it leaves, the events, and the
25
+ * state names. A bare {@link ActSurface} has none, so its actions take and
26
+ * return `unknown`.
27
+ */
28
+ type AppRegistry<TApp> = TApp extends {
29
+ readonly registry: Registry<infer S, infer E, infer A, infer N>;
30
+ } ? {
31
+ states: S;
32
+ events: E;
33
+ actions: A;
34
+ names: N;
35
+ } : {
36
+ states: Record<string, Schema>;
37
+ events: Schemas;
38
+ actions: Record<string, unknown>;
39
+ names: string;
40
+ };
41
+ /** The payload each action of `TApp` takes, by action name. */
42
+ export type AppActions<TApp> = AppRegistry<TApp>["actions"];
43
+ /** The state names of `TApp`. */
44
+ export type AppStateNames<TApp> = AppRegistry<TApp>["names"];
45
+ /** The state named `N` in `TApp`, as the SSE channel carries it. */
46
+ export type AppState<TApp, N> = (TApp extends Act<any, any, any, infer M, any> ? N extends keyof M ? M[N] : Schema : Schema) & {
47
+ _v: number;
48
+ };
49
+ /** What `app.do` returns for action `K` of `TApp`. */
50
+ export type ActionResult<TApp, K> = Snapshot<K extends keyof AppRegistry<TApp>["states"] ? AppRegistry<TApp>["states"][K] : Schema, AppRegistry<TApp>["events"]>[];
51
+ /**
52
+ * What a `stream` or `expectedVersion` resolver receives: the action's
53
+ * name, its parsed payload and the transport's context, as one tuple per
54
+ * action, so checking the name narrows the payload.
55
+ */
56
+ export type ResolverArgs<TApp, C> = {
57
+ [K in keyof AppActions<TApp> & string]: [
58
+ action_name: K,
59
+ input: AppActions<TApp>[K],
60
+ ctx: C
61
+ ];
62
+ }[keyof AppActions<TApp> & string];
18
63
  /** The target resolvers a generated transport takes, over its own context. */
19
64
  type TargetResolvers<C> = {
20
65
  readonly stream: (action_name: string, input: unknown, ctx: C) => string | Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/api/dispatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIvE;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE;QACjB,OAAO,EAAE,MAAM,CACb,MAAM,EACN;YACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SAC3C,CACF,CAAC;KACH,CAAC;IACF,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxE,CAAC;AAEF,8EAA8E;AAC9E,KAAK,eAAe,CAAC,CAAC,IAAI;IACxB,QAAQ,CAAC,MAAM,EAAE,CACf,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,CAAC,KACH,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,CACzB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,CAAC,KACH,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACvD,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAEzB;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,EAC7B,KAAK,EAAE,gBAAgB,GAAG,SAAS,iBAKpB,MAAM,SACZ,OAAO,WACL,OAAO,OACX,CAAC,SACC,KAAK,OACP,MAAM,MAAM,GAAG,SAAS,KAC5B,OAAO,CAAC,UAAU,CAAC,CAevB"}
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/api/dispatch.ts"],"names":[],"mappings":"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"}
@@ -23,9 +23,9 @@
23
23
  *
24
24
  * Sibling subpaths in the same package consume the utilities here:
25
25
  *
26
- * - `@rotorsoft/act-http/trpc` — tRPC adapter (#843).
27
- * - `@rotorsoft/act-http/hono` — Hono adapter (#844).
28
- * - `@rotorsoft/act-http/openapi` — OpenAPI emitter (#845).
26
+ * - `@rotorsoft/act-http/trpc` — tRPC adapter.
27
+ * - `@rotorsoft/act-http/hono` — Hono adapter.
28
+ * - `@rotorsoft/act-http/openapi` — OpenAPI emitter.
29
29
  *
30
30
  * Existing siblings unrelated to the generated-API work:
31
31
  *
@@ -1,5 +1,5 @@
1
1
  import type { BroadcastChannel } from "../sse/broadcast.js";
2
- import { type BroadcastState } from "../sse/types.js";
2
+ import { type BroadcastState, type PatchMessage } from "../sse/types.js";
3
3
  /**
4
4
  * SSE wiring options shared by the auto-generated `trpc` and `hono`
5
5
  * transports. When supplied, each transport emits one streaming
@@ -61,7 +61,7 @@ export type SseOptions = {
61
61
  *
62
62
  * Version-neutral frames (`_overlay`, `_resync`) are never dropped
63
63
  * silently — they create no gap to notice, so a backlog made only of
64
- * them collapses into a single `_resync` instead (#1649).
64
+ * them collapses into a single `_resync` instead.
65
65
  *
66
66
  * Default `256`. Validated range `[1, 100_000]`.
67
67
  */
@@ -101,7 +101,7 @@ export declare const DEFAULT_SSE_HEARTBEAT_MS = 30000;
101
101
  * version-keyed patch, so the consumer sees the gap and converges on
102
102
  * current state regardless of which intermediate versions it missed.
103
103
  * Version-neutral frames create no gap, so they collapse into a
104
- * `_resync` rather than being dropped silently (#1649).
104
+ * `_resync` rather than being dropped silently.
105
105
  */
106
106
  export declare const DEFAULT_SSE_MAX_PENDING_PER_CONNECTION = 256;
107
107
  /**
@@ -165,7 +165,7 @@ export type SseSubscriptionFrame<S> = {
165
165
  readonly data: S;
166
166
  } | {
167
167
  readonly kind: "patch";
168
- readonly data: unknown;
168
+ readonly data: S extends BroadcastState ? PatchMessage<S> : unknown;
169
169
  };
170
170
  /**
171
171
  * Subscription accounting hook. Implementations have a chance to
@@ -1 +1 @@
1
- {"version":3,"file":"sse-wiring.d.ts","sourceRoot":"","sources":["../../../src/api/sse-wiring.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;;;;OAKG;IAEH,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAC3C,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACnD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C;;;;;;;;;GASG;AACH,eAAO,MAAM,sCAAsC,MAAM,CAAC;AA+B1D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAY/D;AAED;;;;;;;;;GASG;AACH,qBAAa,oBAAoB;IAC/B,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,KAAK,CAAK;IAElB,YAAY,KAAK,EAAE,MAAM,EAExB;IAED;;;;OAIG;IACH,OAAO,IAAI,OAAO,CAIjB;IAED;;;;OAIG;IACH,OAAO,IAAI,IAAI,CAEd;IAED,qDAAqD;IACrD,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAE7E;AAED;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC5C;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,IAAI,OAAO,CAAC;IACnB,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,KAAK,CAAC;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;;;;;;;GAUG;AAEH,wBAAuB,kBAAkB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,EACtE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,aAAa,GAAG,SAAS,EACrC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,OAAO,CAAC,EAAE,aAAa,GACtB,cAAc,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CA4EzC"}
1
+ {"version":3,"file":"sse-wiring.d.ts","sourceRoot":"","sources":["../../../src/api/sse-wiring.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,YAAY,EAElB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;;;;OAKG;IAEH,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACxC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAC3C,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACnD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C;;;;;;;;;GASG;AACH,eAAO,MAAM,sCAAsC,MAAM,CAAC;AA+B1D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAY/D;AAED;;;;;;;;;GASG;AACH,qBAAa,oBAAoB;IAC/B,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,KAAK,CAAK;IAElB,YAAY,KAAK,EAAE,MAAM,EAExB;IAED;;;;OAIG;IACH,OAAO,IAAI,OAAO,CAIjB;IAED;;;;OAIG;IACH,OAAO,IAAI,IAAI,CAEd;IAED,qDAAqD;IACrD,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAE7E;AAED;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC5C;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,CAAC,SAAS,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CACrE,CAAC;AAEN;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,IAAI,OAAO,CAAC;IACnB,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,KAAK,CAAC;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;;;;;;;GAUG;AAEH,wBAAuB,kBAAkB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,EACtE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,aAAa,GAAG,SAAS,EACrC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,OAAO,CAAC,EAAE,aAAa,GACtB,cAAc,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CA2EzC"}
@@ -2,8 +2,10 @@ import type { Actor } from "@rotorsoft/act";
2
2
  import type { IdempotencyStore } from "@rotorsoft/act-ops/idempotency";
3
3
  import type { Context, MiddlewareHandler } from "hono";
4
4
  import { Hono } from "hono";
5
- import { type ActSurface } from "../api/dispatch.js";
6
- import { type ActorExtractor, type SseOptions } from "../api/index.js";
5
+ import type { MergePath, TypedResponse } from "hono/types";
6
+ import type { JSONParsed } from "hono/utils/types";
7
+ import { type ActionResult, type ActSurface, type AppActions, type AppStateNames, type ResolverArgs } from "../api/dispatch.js";
8
+ import { type ActorExtractor, type ApiError, type SseOptions } from "../api/index.js";
7
9
  /**
8
10
  * Hono context variables this subpath contributes. The generic on
9
11
  * the returned middleware threads it through so routes downstream
@@ -27,8 +29,8 @@ export type ActMiddlewareVariables = {
27
29
  * - `expectedVersion` (optional) — optimistic-concurrency resolver.
28
30
  * Hosts typically read it from an `If-Match` header on the
29
31
  * request, or from the client's last-known snapshot. Returning
30
- * `undefined` skips the check for that call — handy when only
31
- * some actions are concurrency-sensitive.
32
+ * `undefined` leaves the call to the version the action loads; a
33
+ * number pins it, and a pinned conflict is never retried.
32
34
  * - `idempotency` (optional) — when set, the route honors
33
35
  * `Idempotency-Key` via {@link withIdempotency}. The host
34
36
  * supplies the `IdempotencyStore`; `keyFrom` defaults to reading
@@ -42,10 +44,10 @@ export type ActMiddlewareVariables = {
42
44
  * - `basePath` (optional, default `"/api"`) — Hono basePath the
43
45
  * routes mount under.
44
46
  */
45
- export type HonoOptions = {
46
- readonly actor: ActorExtractor;
47
- readonly stream: (action_name: string, input: unknown, c: Context) => string | Promise<string>;
48
- readonly expectedVersion?: (action_name: string, input: unknown, c: Context) => number | undefined | Promise<number | undefined>;
47
+ export type HonoOptions<TApp = ActSurface> = {
48
+ readonly actor: ActorExtractor<Context>;
49
+ readonly stream: (...args: ResolverArgs<TApp, Context>) => string | Promise<string>;
50
+ readonly expectedVersion?: (...args: ResolverArgs<TApp, Context>) => number | undefined | Promise<number | undefined>;
49
51
  readonly idempotency?: {
50
52
  readonly store: IdempotencyStore;
51
53
  readonly keyFrom?: (c: Context) => string | undefined;
@@ -88,11 +90,13 @@ export type HonoOptions = {
88
90
  * ```
89
91
  *
90
92
  * Errors thrown by the extractor surface as `401 Unauthorized` with
91
- * the shared {@link ApiError} envelope.
93
+ * the shared {@link ApiError} envelope. Mounted on a route
94
+ * (`api.get("/me", authenticated(extract), handler)`), the `401` is in
95
+ * the route's type, so `hc` and `testClient` see it.
92
96
  */
93
- export declare function authenticated(extractor: ActorExtractor): MiddlewareHandler<{
97
+ export declare function authenticated(extractor: ActorExtractor<Context>): MiddlewareHandler<{
94
98
  Variables: ActMiddlewareVariables;
95
- }>;
99
+ }, string, {}, Response & TypedResponse<JSONParsed<ApiError>, 401, "json">>;
96
100
  /**
97
101
  * Build a typed Hono REST surface from a built `Act` instance.
98
102
  *
@@ -125,7 +129,70 @@ export declare function authenticated(extractor: ActorExtractor): MiddlewareHand
125
129
  * @returns A Hono app covering every registered action under
126
130
  * `<basePath>/actions/<name>`.
127
131
  */
128
- export declare function hono<TApp extends ActSurface = ActSurface>(app: TApp, options: HonoOptions): Hono<{
132
+ export declare function hono<TApp extends ActSurface = ActSurface, TBase extends string = "/api">(app: TApp, options: HonoOptions<TApp> & {
133
+ readonly basePath?: TBase;
134
+ readonly sse: NonNullable<HonoOptions["sse"]>;
135
+ }): Hono<{
129
136
  Variables: ActMiddlewareVariables;
130
- }>;
137
+ }, ActionRoutes<TApp, TBase> & SseRoutes<TApp, TBase>, TBase>;
138
+ export declare function hono<TApp extends ActSurface = ActSurface, TBase extends string = "/api">(app: TApp, options: HonoOptions<TApp> & {
139
+ readonly basePath?: TBase;
140
+ }): Hono<{
141
+ Variables: ActMiddlewareVariables;
142
+ }, ActionRoutes<TApp, TBase>, TBase>;
143
+ /**
144
+ * One `GET <basePath>/sse/<state>?stream=<id>` per state of `TApp`, with
145
+ * `sse`: an event stream on `200`, {@link ApiError} on an error status.
146
+ */
147
+ export type SseRoutes<TApp, TBase extends string> = {
148
+ [N in AppStateNames<TApp> as MergePath<TBase, `/sse/${N}`>]: {
149
+ $get: {
150
+ input: {
151
+ query: {
152
+ stream: string;
153
+ };
154
+ };
155
+ output: {};
156
+ outputFormat: "body";
157
+ status: 200;
158
+ } | {
159
+ input: {
160
+ query: {
161
+ stream: string;
162
+ };
163
+ };
164
+ output: ApiError;
165
+ outputFormat: "json";
166
+ status: 400 | 401 | 503;
167
+ };
168
+ };
169
+ };
170
+ /** Every status a generated action route answers with the error envelope. */
171
+ type ErrorStatus = 400 | 401 | 409 | 410 | 412 | 422 | 500 | 503;
172
+ /**
173
+ * The routes {@link hono} builds, one `POST <basePath>/actions/<name>` per
174
+ * action of `TApp`: the action's payload as the JSON body, the snapshots
175
+ * `app.do` returns (as JSON) on `200`, and {@link ApiError} on an error
176
+ * status. `hc<typeof api>` and `testClient(api)` read it.
177
+ */
178
+ export type ActionRoutes<TApp, TBase extends string> = {
179
+ [K in keyof AppActions<TApp> & string as MergePath<TBase, `/actions/${K}`>]: {
180
+ $post: {
181
+ input: {
182
+ json: AppActions<TApp>[K];
183
+ };
184
+ output: JSONParsed<ActionResult<TApp, K>>;
185
+ outputFormat: "json";
186
+ status: 200;
187
+ } | {
188
+ input: {
189
+ json: AppActions<TApp>[K];
190
+ };
191
+ output: ApiError;
192
+ outputFormat: "json";
193
+ status: ErrorStatus;
194
+ };
195
+ };
196
+ };
197
+ export {};
131
198
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hono/index.ts"],"names":[],"mappings":"AAiDA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,KAAK,cAAc,EAMnB,KAAK,UAAU,EAEhB,MAAM,iBAAiB,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,CACf,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,EACd,CAAC,EAAE,OAAO,KACP,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,CACzB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,EACd,CAAC,EAAE,OAAO,KACP,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtD,QAAQ,CAAC,WAAW,CAAC,EAAE;QACrB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;QACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;KACvD,CAAC;IACF;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,cAAc,GACxB,iBAAiB,CAAC;IAAE,SAAS,EAAE,sBAAsB,CAAA;CAAE,CAAC,CAe1D;AAKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,IAAI,CAAC,IAAI,SAAS,UAAU,GAAG,UAAU,EACvD,GAAG,EAAE,IAAI,EACT,OAAO,EAAE,WAAW,GACnB,IAAI,CAAC;IAAE,SAAS,EAAE,sBAAsB,CAAA;CAAE,CAAC,CA2K7C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hono/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/openapi/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/openapi/index.ts"],"names":[],"mappings":"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"}
@@ -12,13 +12,13 @@
12
12
  * Pair with `IdempotencyStore.claim` from
13
13
  * `@rotorsoft/act-ops/idempotency`: extract the key from the inbound
14
14
  * request, claim it on the store, return a `deduped` marker when the
15
- * claim fails. The framework-agnostic middleware that wires these
16
- * together lands in #744.
15
+ * claim fails. The receiver subpaths' `webhookMiddleware` wires these
16
+ * together.
17
17
  *
18
18
  * Validation beyond "is there a usable key?" (length bounds, format
19
19
  * checks, normalization) is intentionally out of scope. Receivers
20
- * picking a policy can layer it on top — or, when #744 ships, opt
21
- * into the middleware's opinionated defaults.
20
+ * picking a policy can layer it on top, or use the middleware's
21
+ * defaults.
22
22
  */
23
23
  export declare function extractIdempotencyKey(headers: Record<string, string | string[] | undefined>): string | undefined;
24
24
  //# sourceMappingURL=extract.d.ts.map
@@ -36,7 +36,7 @@
36
36
  * finalizes the claim automatically after `await next()`: a downstream
37
37
  * 2xx/3xx **commits** the key (later retries dedup); any **4xx or 5xx**
38
38
  * (or a thrown handler) **releases** it, so the sender's corrected retry
39
- * re-processes instead of being silently dropped (#1364). Fail-safe is
39
+ * re-processes instead of being silently dropped. Fail-safe is
40
40
  * toward reprocessing: releasing a deterministic 4xx costs bounded
41
41
  * re-delivery, while committing it would lose a delivery the handler
42
42
  * never accepted (the shipped `receiver()` returns 422 on a schema
@@ -47,8 +47,8 @@ export type VerifyOptions = {
47
47
  * The signed payload is `${timestamp}.${body}`, so `body` must be
48
48
  * the **raw request body bytes**. Any pre-parse normalization
49
49
  * (whitespace trimming, JSON re-stringification) would change the
50
- * hash and reject every otherwise-valid request. Framework adapters
51
- * in #744 will provide the raw body alongside the parsed one.
50
+ * hash and reject every otherwise-valid request. The receiver
51
+ * subpaths' adapters pass the raw body alongside the parsed one.
52
52
  *
53
53
  * Uses Node's `crypto.timingSafeEqual` for the final comparison to
54
54
  * avoid signature-equality timing attacks.
@@ -1 +1 @@
1
- {"version":3,"file":"apply-patch.d.ts","sourceRoot":"","sources":["../../../src/sse/apply-patch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAC7D;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,CAAA;CAAE,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EACxD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,EACpB,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAC3B,WAAW,CAAC,CAAC,CAAC,CAuEhB"}
1
+ {"version":3,"file":"apply-patch.d.ts","sourceRoot":"","sources":["../../../src/sse/apply-patch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAC7D;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,CAAA;CAAE,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EACxD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,EACpB,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GAC3B,WAAW,CAAC,CAAC,CAAC,CA8DhB"}
@@ -78,34 +78,16 @@ export declare class BroadcastChannel<S extends BroadcastState = BroadcastState>
78
78
  */
79
79
  private broadcast_resync;
80
80
  /**
81
- * The LRU dropped an entry. If it carried overlay-contributed keys, that
82
- * data existed only in the cache and is now gone: a later `publish()` has
83
- * no baseline to carry it from, and the reseed a reconnecting client gets
84
- * would silently lack presence a live client is still showing (#1648).
85
- *
86
- * `overlay()` was hardened for the same loss on its own path (#1423);
87
- * catching it here covers `publish()` too, and does it at the moment the
88
- * data is lost rather than at a later commit that may never come. Reading
89
- * the marker off the entry being evicted is what avoids the parallel
90
- * bookkeeping structure the `OVERLAY_KEYS` design explicitly rejected.
81
+ * The LRU dropped an entry. Overlay-contributed keys lived only in the
82
+ * cache, so their loss is reported now, when it happens, rather than at a
83
+ * later commit that may never come.
91
84
  */
92
85
  private on_cache_evict;
93
86
  /**
94
87
  * Overlay-contributed state for `streamId` is gone. Recover first, report
95
- * second.
96
- *
97
- * The resync goes out before the host hook runs, and the hook is contained
98
- * the way `fan_out` contains subscribers: a bad consumer must not break the
99
- * publisher (#1423), and the same applies to a bad observer. Without this,
100
- * a throwing `onOverlayMiss` escapes on the eviction path — which runs
101
- * inside `publish()`, before that stream's own `fan_out` — so one host bug
102
- * costs the evicted stream its recovery frame *and* an unrelated stream the
103
- * frame for a version already written to the cache. The evicted stream's
104
- * clients never self-heal from that, which is the silent loss #1648 exists
105
- * to end.
106
- *
107
- * Routing the throw to `onSubscriberError` rather than swallowing it keeps
108
- * it wherever the host already reads framework delivery failures.
88
+ * second: the resync goes out before the host hook, and a throwing hook is
89
+ * routed to `onSubscriberError`. Eviction runs inside `publish()` for
90
+ * another stream, so an escaping throw would cost that stream its frame.
109
91
  */
110
92
  private report_overlay_miss;
111
93
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../../src/sse/broadcast.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,YAAY,EAEjB,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AA0IpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IACrE,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,mBAAmB,CAA6C;IACxE,OAAO,CAAC,eAAe,CAA6B;IAEpD,YAAY,OAAO,CAAC,EAAE;QACpB,sEAAsE;QACtE,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB;;;;;;;;;;;;;;WAcG;QACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QAC3C;;;;;WAKG;QACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QAC/D;;;;WAIG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,EAQA;IAED;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,cAAc;IAKtB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;;;;;;OAOG;IACH,OAAO,CACL,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,OAAO,CAAC,CAAC,CAAC,EAAO,GACzB,YAAY,CAAC,CAAC,CAAC,CAwCjB;IAED;;;;OAIG;IACH,OAAO,CACL,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,GACxB,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CA6C7B;IAED;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CASzD;IAED,kDAAkD;IAClD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExC;IAED,8EAA8E;IAC9E,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAErC;IAED,4DAA4D;IAC5D,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,GACxB,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAE7B;IAED,oEAAoE;IACpE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7C;IAED,0DAA0D;IAC1D,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAEzC;IAED,+EAA+E;IAC/E,IAAI,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,CAEzB;CACF"}
1
+ {"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../../src/sse/broadcast.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,YAAY,EAEjB,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AA0GpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,gBAAgB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IACrE,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,mBAAmB,CAA6C;IACxE,OAAO,CAAC,eAAe,CAA6B;IAEpD,YAAY,OAAO,CAAC,EAAE;QACpB,sEAAsE;QACtE,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB;;;;;;;;;;;;;;WAcG;QACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QAC3C;;;;;WAKG;QACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QAC/D;;;;WAIG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,EAQA;IAED;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAKtB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;;;;;;OAOG;IACH,OAAO,CACL,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,OAAO,CAAC,CAAC,CAAC,EAAO,GACzB,YAAY,CAAC,CAAC,CAAC,CAkCjB;IAED;;;;OAIG;IACH,OAAO,CACL,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,GACxB,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CA8B7B;IAED;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CASzD;IAED,kDAAkD;IAClD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExC;IAED,8EAA8E;IAC9E,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAErC;IAED,4DAA4D;IAC5D,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,GACxB,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAE7B;IAED,oEAAoE;IACpE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7C;IAED,0DAA0D;IAC1D,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAEzC;IAED,+EAA+E;IAC/E,IAAI,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,CAEzB;CACF"}
@@ -17,7 +17,7 @@ export declare class StateCache<S extends BroadcastState = BroadcastState> {
17
17
  * @param maxSize - Max entries before the LRU drops its oldest.
18
18
  * @param onEvict - Called with the entry the LRU just dropped. Eviction is
19
19
  * the moment cached-only data is lost, so it is the only place a caller
20
- * can still see what went (#1648).
20
+ * can still see what went.
21
21
  */
22
22
  constructor(maxSize?: number, onEvict?: (key: string, state: S) => void);
23
23
  /** Get a cached state, promoting it to MRU position. */
@@ -20,11 +20,10 @@ export type BroadcastState = Record<string, unknown> & {
20
20
  * stale). Ordinary version-bumping patches from `publish()` omit it.
21
21
  *
22
22
  * `_resync` carries no versions at all. The server emits it when it cannot
23
- * construct a patch — today, when `overlay()` finds the stream's baseline
24
- * evicted from the LRU. A client that receives one always reports `behind`
25
- * and refetches. Without it the server had nothing to say in that case, so
26
- * live subscribers silently stopped receiving presence updates and had no
27
- * way to notice (#1423).
23
+ * construct a patch: when overlay-contributed state is lost, because
24
+ * `overlay()` finds no cached baseline or the LRU evicts an entry that
25
+ * carried overlay keys. A client that receives one always reports `behind`
26
+ * and refetches, so live subscribers don't silently miss updates.
28
27
  */
29
28
  export type PatchMessage<S extends BroadcastState = BroadcastState> = Record<number, DeepPartial<S>> & {
30
29
  readonly _overlay?: true;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sse/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACrD,sFAAsF;IACtF,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,MAAM,CAC1E,MAAM,EACN,WAAW,CAAC,CAAC,CAAC,CACf,GAAG;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,CAClE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,KACjB,IAAI,CAAC;AAEV;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,cAAc,OAAK,YAAY,CAAC,CAAC,CAChC,CAAC;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,cAAc,OACpD,YAAY,CAAC,CAAC,CAAC,KACnB,OAAwD,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sse/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACrD,sFAAsF;IACtF,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,MAAM,CAC1E,MAAM,EACN,WAAW,CAAC,CAAC,CAAC,CACf,GAAG;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI,CAClE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,KACjB,IAAI,CAAC;AAEV;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,cAAc,OAAK,YAAY,CAAC,CAAC,CAChC,CAAC;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,cAAc,OACpD,YAAY,CAAC,CAAC,CAAC,KACnB,OAAwD,CAAC"}