gemi 0.128.0 → 0.129.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.
Files changed (58) hide show
  1. package/dist/{chunk-0mp9tck6.js → chunk-0ryswty9.js} +20 -20
  2. package/dist/{chunk-0mp9tck6.js.map → chunk-0ryswty9.js.map} +5 -4
  3. package/dist/{chunk-wzfvwvz0.js → chunk-jj1ppnnk.js} +2 -2
  4. package/dist/{chunk-wzfvwvz0.js.map → chunk-jj1ppnnk.js.map} +1 -1
  5. package/dist/{chunk-tchte4dv.js → chunk-sbdm4enk.js} +2 -2
  6. package/dist/{chunk-tchte4dv.js.map → chunk-sbdm4enk.js.map} +1 -1
  7. package/dist/{chunk-df0mekds.js → chunk-wmkrb1qv.js} +1 -1
  8. package/dist/{chunk-qz0da20r.js → chunk-zw5z1k84.js} +1 -1
  9. package/dist/chunks/RealtimeClient-CqGve6h8.js +545 -0
  10. package/dist/chunks/RealtimeClient-CqGve6h8.js.map +1 -0
  11. package/dist/chunks/{ThemeProvider-BIrCSrFY.js → ThemeProvider-DaX0eyqs.js} +155 -539
  12. package/dist/chunks/ThemeProvider-DaX0eyqs.js.map +1 -0
  13. package/dist/chunks/live-DIUDdLrA.js +69 -0
  14. package/dist/chunks/live-DIUDdLrA.js.map +1 -0
  15. package/dist/chunks/subscriptionStream-CULcRbx0.js +166 -0
  16. package/dist/chunks/subscriptionStream-CULcRbx0.js.map +1 -0
  17. package/dist/client/index.d.ts +1 -1
  18. package/dist/client/index.d.ts.map +1 -1
  19. package/dist/client/index.js +118 -330
  20. package/dist/client/index.js.map +1 -1
  21. package/dist/client/init.d.ts +1 -1
  22. package/dist/client/init.d.ts.map +1 -1
  23. package/dist/client/realtime/FakeSocket.d.ts +1 -1
  24. package/dist/client/realtime/FakeSocket.d.ts.map +1 -1
  25. package/dist/client/realtime/RealtimeClient.d.ts +4 -20
  26. package/dist/client/realtime/RealtimeClient.d.ts.map +1 -1
  27. package/dist/client/realtime/live.d.ts +25 -0
  28. package/dist/client/realtime/live.d.ts.map +1 -0
  29. package/dist/client/realtime/loader.d.ts +59 -0
  30. package/dist/client/realtime/loader.d.ts.map +1 -0
  31. package/dist/client/realtime/useChannelSubscription.d.ts +1 -1
  32. package/dist/client/realtime/useChannelSubscription.d.ts.map +1 -1
  33. package/dist/client/subscriptionStream.d.ts +36 -0
  34. package/dist/client/subscriptionStream.d.ts.map +1 -0
  35. package/dist/client/useChannel.d.ts +1 -13
  36. package/dist/client/useChannel.d.ts.map +1 -1
  37. package/dist/client/useQuery.d.ts +1 -1
  38. package/dist/client/useQuery.d.ts.map +1 -1
  39. package/dist/client/useSubscription.d.ts +5 -10
  40. package/dist/client/useSubscription.d.ts.map +1 -1
  41. package/dist/facades/index.js +1 -1
  42. package/dist/http/index.js +1 -1
  43. package/dist/i18n/index.js +1 -1
  44. package/dist/kernel/index.js +1 -1
  45. package/dist/server/index.js +1 -1
  46. package/dist/services/broadcast/protocol.d.ts +1 -2
  47. package/dist/services/broadcast/protocol.d.ts.map +1 -1
  48. package/dist/services/broadcast/socketHeader.d.ts +9 -0
  49. package/dist/services/broadcast/socketHeader.d.ts.map +1 -0
  50. package/dist/services/index.js +2 -2
  51. package/dist/services/index.js.map +1 -1
  52. package/dist/testing/Page.d.ts.map +1 -1
  53. package/dist/testing/index.js +3 -1
  54. package/dist/testing/index.js.map +1 -1
  55. package/package.json +1 -1
  56. package/dist/chunks/ThemeProvider-BIrCSrFY.js.map +0 -1
  57. /package/dist/{chunk-df0mekds.js.map → chunk-wmkrb1qv.js.map} +0 -0
  58. /package/dist/{chunk-qz0da20r.js.map → chunk-zw5z1k84.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { type ComponentType } from "react";
2
2
  import type { QueryConfig } from "./QueryManagerContext";
3
3
  import { type ChunkLoadRecoveryOptions } from "./chunkLoadRecovery";
4
- import { type RealtimeOptions } from "./realtime/RealtimeClient";
4
+ import type { RealtimeOptions } from "./realtime/RealtimeClient";
5
5
  export interface InitOptions {
6
6
  /**
7
7
  * App-wide `useQuery` defaults (per-call config always wins). Mirror the
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../client/init.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAItD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEpF,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,wBAAwB,GAAG,KAAK,CAAC;IACrD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAmCD,wBAAgB,IAAI,CAClB,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,EAC9B,OAAO,GAAE,WAAgB,QA6B1B;AAoCD,wBAAgB,MAAM,CACpB,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,EAC9B,EACE,aAAa,EACb,OAAO,EACP,aAAa,EACb,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,cAAc,EACd,aAAa,GACd,EAAE,GAAG,QAiBP"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../client/init.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAItD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,wBAAwB,GAAG,KAAK,CAAC;IACrD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAmCD,wBAAgB,IAAI,CAClB,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,EAC9B,OAAO,GAAE,WAAgB,QA6B1B;AAoCD,wBAAgB,MAAM,CACpB,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,EAC9B,EACE,aAAa,EACb,OAAO,EACP,aAAa,EACb,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,cAAc,EACd,aAAa,GACd,EAAE,GAAG,QAiBP"}
@@ -1,5 +1,5 @@
1
1
  import type { DeniedCode } from "../../services/broadcast/protocol";
2
- import { type ChannelListener, type ChannelParamValues, type ChannelStatus, type RealtimeSocket } from "./RealtimeClient";
2
+ import type { ChannelListener, ChannelParamValues, ChannelStatus, RealtimeSocket } from "./RealtimeClient";
3
3
  export interface FakeSubscription {
4
4
  pattern: string;
5
5
  params: ChannelParamValues;
@@ -1 +1 @@
1
- {"version":3,"file":"FakeSocket.d.ts","sourceRoot":"","sources":["../../../client/realtime/FakeSocket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CACzB;AAOD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,UAAW,YAAW,cAAc;IAC/C,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,MAAM,CAAyB;IAEvC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI;IAsB7F,4CAA4C;IAC5C,IAAI,aAAa,IAAI,gBAAgB,EAAE,CAOtC;IAED;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAOvF,kFAAkF;IAClF,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAO3D,2EAA2E;IAC3E,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAKtC,sDAAsD;IACtD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,UAAqB,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAIrF,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,QAAQ;CAiBjB;AAED,gDAAgD;AAChD,wBAAgB,UAAU,IAAI,UAAU,CAEvC"}
1
+ {"version":3,"file":"FakeSocket.d.ts","sourceRoot":"","sources":["../../../client/realtime/FakeSocket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAEpE,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,cAAc,EACf,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CACzB;AAOD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,UAAW,YAAW,cAAc;IAC/C,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,MAAM,CAAyB;IAEvC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,GAAG,MAAM,IAAI;IAsB7F,4CAA4C;IAC5C,IAAI,aAAa,IAAI,gBAAgB,EAAE,CAOtC;IAED;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAOvF,kFAAkF;IAClF,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAO3D,2EAA2E;IAC3E,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAKtC,sDAAsD;IACtD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,UAAqB,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAIrF,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,QAAQ;CAiBjB;AAED,gDAAgD;AAChD,wBAAgB,UAAU,IAAI,UAAU,CAEvC"}
@@ -59,8 +59,6 @@ export declare const RELEASE_LINGER_MS = 1500;
59
59
  * lives. Past it the subscription waits for the next connection.
60
60
  */
61
61
  export declare const MAX_LIMIT_RETRIES = 5;
62
- /** `pattern` and its params, canonical: two hooks on one channel share a `sub`. */
63
- export declare function channelKey(pattern: string, params: ChannelParamValues): string;
64
62
  /**
65
63
  * The tab's one WebSocket to the app (`gemi.v1`), multiplexing every channel
66
64
  * the mounted hooks subscribe to.
@@ -72,6 +70,10 @@ export declare function channelKey(pattern: string, params: ChannelParamValues):
72
70
  * when shown. Every `subscribed` ack and every `gap` resyncs the
73
71
  * subscription (coalesced to one per 2 s), because events are volatile: a
74
72
  * client that may have missed one refetches over HTTP.
73
+ *
74
+ * Loaded on first use (#891): import this module as a type only, and reach
75
+ * the tab's instance through `./loader`, or it lands in every route's entry
76
+ * chunk.
75
77
  */
76
78
  export declare class RealtimeClient implements RealtimeSocket {
77
79
  private options;
@@ -147,23 +149,5 @@ export declare class RealtimeClient implements RealtimeSocket {
147
149
  }
148
150
  /** Full jitter, 1 to 30 s: `max(1 s, random × min(30 s, 1 s × 2^attempt))`. */
149
151
  export declare function backoffDelay(attempt: number, random: number): number;
150
- /**
151
- * Sets the socket options (`init({ realtime })` calls it). Takes effect on
152
- * the next connection.
153
- */
154
- export declare function configureRealtime(options?: RealtimeOptions): void;
155
- /** The tab's client, created on first use. `null` on the server. */
156
- export declare function getRealtimeClient(): RealtimeClient | null;
157
- /**
158
- * Reconnects the tab's socket, if it has one, so its channels are authorized
159
- * as the current session. The auth hooks call it after signing in or out.
160
- * Never creates the client.
161
- */
162
- export declare function reconnectRealtime(): void;
163
- /**
164
- * The open socket's id, for the `X-Gemi-Socket` header, or `null`. Never
165
- * creates the client.
166
- */
167
- export declare function currentSocketId(): string | null;
168
152
  export {};
169
153
  //# sourceMappingURL=RealtimeClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RealtimeClient.d.ts","sourceRoot":"","sources":["../../../client/realtime/RealtimeClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RealtimeClient.d.ts","sourceRoot":"","sources":["../../../client/realtime/RealtimeClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { QueryResource } from "../QueryResource";
2
+ import type { ChannelPattern } from "../useChannel";
3
+ import type { ChannelParamValues, RealtimeSocket } from "./RealtimeClient";
4
+ /**
5
+ * `useQuery`'s `live` option: the channel whose events and resyncs refetch
6
+ * the query. A pattern without params (`"user"`), `[pattern, params]`, or
7
+ * `{ channel, params }`.
8
+ */
9
+ export type LiveChannel = ChannelPattern | readonly [ChannelPattern, ChannelParamValues] | {
10
+ channel: ChannelPattern;
11
+ params?: ChannelParamValues;
12
+ };
13
+ export declare function resolveLiveChannel(live: LiveChannel | null | undefined | false): {
14
+ pattern: string;
15
+ params: ChannelParamValues;
16
+ } | null;
17
+ /**
18
+ * `useQuery`'s `live` subscription, loaded on first use by `followLive` in
19
+ * `./loader` (#891). The channel's events refetch every cached variant of the
20
+ * query (the rendered ones now), a burst of them once per
21
+ * `EVENT_COALESCE_MS`; a resync refetches at once. `setOpen` follows whether
22
+ * the channel is open, which pauses the query's polling.
23
+ */
24
+ export declare function subscribeLive(socket: RealtimeSocket, live: LiveChannel, resource: () => QueryResource, setOpen: (open: boolean) => void): () => void;
25
+ //# sourceMappingURL=live.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../../client/realtime/live.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB,cAAc,GACd,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,GAC7C;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAE7D,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,GAC3C;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAAG,IAAI,CAMxD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,aAAa,EAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAC/B,MAAM,IAAI,CAuBZ"}
@@ -0,0 +1,59 @@
1
+ import type { QueryResource } from "../QueryResource";
2
+ import type { LiveChannel } from "./live";
3
+ import type { ChannelParamValues, RealtimeClient, RealtimeOptions, RealtimeSocket } from "./RealtimeClient";
4
+ /** `pattern` and its params, canonical: two hooks on one channel share a `sub`. */
5
+ export declare function channelKey(pattern: string, params: ChannelParamValues): string;
6
+ /**
7
+ * Sets the socket options (`init({ realtime })` calls it). Takes effect on
8
+ * the next connection.
9
+ */
10
+ export declare function configureRealtime(options?: RealtimeOptions): void;
11
+ /** The tab's client if it is already loaded, else `null`. Never loads it. */
12
+ export declare function loadedRealtimeClient(): RealtimeClient | null;
13
+ /**
14
+ * What a lazy `import()` resolved to, or a thrown error when it is missing.
15
+ * Vite's preload helper resolves the `import()` to `undefined` instead of
16
+ * rejecting when a `vite:preloadError` listener handled the failure (`init`'s
17
+ * chunk-load recovery does, as it starts a reload): treated as a failed load.
18
+ */
19
+ export declare function loadedModule<T>(module: T | undefined): T;
20
+ /** The lazily loaded modules. Replaceable in tests, to simulate a failed load. */
21
+ export declare const lazyModules: {
22
+ client: () => Promise<typeof import("./RealtimeClient")>;
23
+ live: () => Promise<typeof import("./live")>;
24
+ };
25
+ /**
26
+ * The tab's client, loading its module and creating it on first use. `null`
27
+ * on the server. A failed load (a chunk gone after a deploy, the network) is
28
+ * not kept, so a later subscription calls `import()` again; whether that
29
+ * fetches anew is up to the browser, and the usual recovery is `init`'s
30
+ * reload.
31
+ */
32
+ export declare function loadRealtimeClient(): Promise<RealtimeClient> | null;
33
+ type LiveModule = typeof import("./live");
34
+ /**
35
+ * Makes `./live` available without loading it: `<Page>` in `gemi/testing`
36
+ * passes it, so a live query on a provided socket subscribes during its
37
+ * effect, as it did before the module was split out.
38
+ */
39
+ export declare function provideLiveModule(module: LiveModule): void;
40
+ /**
41
+ * Follows `useQuery`'s `live` channel until the returned function is called.
42
+ * `./live` and the socket client are loaded on first use, so `useQuery`
43
+ * carries only this; once both are loaded later queries subscribe at once.
44
+ * `setOpen` reports `false` until the channel is open.
45
+ */
46
+ export declare function followLive(provided: RealtimeSocket | null, live: LiveChannel, resource: () => QueryResource, setOpen: (open: boolean) => void): () => void;
47
+ /**
48
+ * Reconnects the tab's socket, if it has one, so its channels are authorized
49
+ * as the current session. The auth hooks call it after signing in or out.
50
+ * Never loads or creates the client.
51
+ */
52
+ export declare function reconnectRealtime(): void;
53
+ /**
54
+ * The open socket's id, for the `X-Gemi-Socket` header, or `null`. Never
55
+ * loads or creates the client.
56
+ */
57
+ export declare function currentSocketId(): string | null;
58
+ export {};
59
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../client/realtime/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,cAAc,EACf,MAAM,kBAAkB,CAAC;AAY1B,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAK9E;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,eAAoB,QAG9D;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,IAAI,cAAc,GAAG,IAAI,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,CAGxD;AAED,kFAAkF;AAClF,eAAO,MAAM,WAAW;;;CAGvB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAWnE;AAED,KAAK,UAAU,GAAG,cAAc,QAAQ,CAAC,CAAC;AAG1C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,QAEnD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,cAAc,GAAG,IAAI,EAC/B,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,aAAa,EAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAC/B,MAAM,IAAI,CAqBZ;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,SAEhC;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C"}
@@ -1,5 +1,5 @@
1
1
  import type { DeniedCode } from "../../services/broadcast/protocol";
2
- import { type ChannelParamValues, type ChannelStatus } from "./RealtimeClient";
2
+ import type { ChannelParamValues, ChannelStatus } from "./RealtimeClient";
3
3
  export interface ChannelState {
4
4
  status: ChannelStatus;
5
5
  /** Why the subscription was refused, while `status` is `denied`. */
@@ -1 +1 @@
1
- {"version":3,"file":"useChannelSubscription.d.ts","sourceRoot":"","sources":["../../../client/realtime/useChannelSubscription.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,oEAAoE;IACpE,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAKD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,OAAO,GACf,YAAY,CAmCd;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,GAAE,MAA0B,GAAG,MAAM,IAAI,CAoBvF"}
1
+ {"version":3,"file":"useChannelSubscription.d.ts","sourceRoot":"","sources":["../../../client/realtime/useChannelSubscription.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAkB,MAAM,kBAAkB,CAAC;AAI1F,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,oEAAoE;IACpE,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAKD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,OAAO,GACf,YAAY,CAmDd;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,GAAE,MAA0B,GAAG,MAAM,IAAI,CAoBvF"}
@@ -0,0 +1,36 @@
1
+ import type { Dispatch, SetStateAction } from "react";
2
+ import type { ChangeFeedMessage } from "../services/change-feed/wire";
3
+ import type { SubscriptionConfig, SubscriptionStatus } from "./useSubscription";
4
+ export interface SubscriptionState {
5
+ status: SubscriptionStatus;
6
+ cursor: string | null;
7
+ error: Error | null;
8
+ }
9
+ export interface FollowOptions {
10
+ endpoint: string;
11
+ pauseWhenHidden: boolean;
12
+ /** Where to resume; advanced as events arrive. */
13
+ cursor: {
14
+ current: string | null;
15
+ };
16
+ callbacks: {
17
+ current: SubscriptionConfig<unknown>;
18
+ };
19
+ setState: Dispatch<SetStateAction<SubscriptionState>>;
20
+ }
21
+ /**
22
+ * Follows `endpoint` until the returned function is called: connects,
23
+ * reconnects with backoff, pauses while the tab is hidden, and reports
24
+ * through `setState` and `callbacks`.
25
+ */
26
+ export declare function follow({ endpoint, pauseWhenHidden, cursor, callbacks, setState, }: FollowOptions): () => void;
27
+ /**
28
+ * The events of an SSE body: `id` and the JSON `data`. Comments (keepalives)
29
+ * and events without data are skipped; an event whose data is not JSON is
30
+ * dropped rather than ending the stream.
31
+ */
32
+ export declare function readEvents(body: ReadableStream<Uint8Array>): AsyncGenerator<{
33
+ id?: string;
34
+ message: ChangeFeedMessage;
35
+ }>;
36
+ //# sourceMappingURL=subscriptionStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptionStream.d.ts","sourceRoot":"","sources":["../../client/subscriptionStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAiBhF,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,kDAAkD;IAClD,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACnC,SAAS,EAAE;QAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IACpD,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;CACvD;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,EACrB,QAAQ,EACR,eAAe,EACf,MAAM,EACN,SAAS,EACT,QAAQ,GACT,EAAE,aAAa,GAAG,MAAM,IAAI,CAyF5B;AAED;;;;GAIG;AACH,wBAAuB,UAAU,CAC/B,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,GAC/B,cAAc,CAAC;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAqC7D"}
@@ -71,17 +71,5 @@ export type InvalidatePath = GetPath | {
71
71
  export declare function useChannelInvalidate<P extends ChannelPattern>(pattern: P, params: ChannelParamsFor<P> | undefined, paths: readonly InvalidatePath[], config?: {
72
72
  enabled?: boolean;
73
73
  }): ChannelState;
74
- /**
75
- * `useQuery`'s `live` option: the channel whose events and resyncs refetch
76
- * the query. A pattern without params (`"user"`), `[pattern, params]`, or
77
- * `{ channel, params }`.
78
- */
79
- export type LiveChannel = ChannelPattern | readonly [ChannelPattern, ChannelParamValues] | {
80
- channel: ChannelPattern;
81
- params?: ChannelParamValues;
82
- };
83
- export declare function resolveLiveChannel(live: LiveChannel | null | undefined | false): {
84
- pattern: string;
85
- params: ChannelParamValues;
86
- } | null;
74
+ export type { LiveChannel } from "./realtime/live";
87
75
  //# sourceMappingURL=useChannel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useChannel.d.ts","sourceRoot":"","sources":["../../client/useChannel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useChannel.d.ts","sourceRoot":"","sources":["../../client/useChannel.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import type { ApiRouterHandler } from "../http/ApiRouter";
4
4
  import type { UnwrapPromise } from "../utils/type";
5
5
  import type { UrlParser } from "./types";
6
6
  import { type RetryDelayOption, type RetryOption } from "./retryPolicy";
7
- import { type LiveChannel } from "./useChannel";
7
+ import type { LiveChannel } from "./realtime/live";
8
8
  export interface Config<T> {
9
9
  fallbackData?: T;
10
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"useQuery.d.ts","sourceRoot":"","sources":["../../client/useQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useQuery.d.ts","sourceRoot":"","sources":["../../client/useQuery.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { ChangeFeedEvent } from "../services/change-feed/ChangeFeedDriver";
2
- import type { ChangeFeedMessage, ChangeFeedResponse } from "../services/change-feed/wire";
2
+ import type { ChangeFeedResponse } from "../services/change-feed/wire";
3
3
  import type { UrlParser } from "./types";
4
4
  import type { Data, GetRPC } from "./useQuery";
5
5
  /** The `data` a route's `ChangeFeed.stream<T>()` publishes, or `unknown`. */
@@ -35,6 +35,10 @@ export type SubscriptionConfig<D> = {
35
35
  */
36
36
  pauseWhenHidden?: boolean;
37
37
  };
38
+ /** `./subscriptionStream`, loaded on first use. Replaceable in tests. */
39
+ export declare const streamModule: {
40
+ load: () => Promise<typeof import("./subscriptionStream")>;
41
+ };
38
42
  /**
39
43
  * Follows a route that answers with `ChangeFeed.stream`, as long as the
40
44
  * component is mounted: each change reaches `onChange`, in order, exactly
@@ -58,13 +62,4 @@ export declare function useSubscription<T extends keyof GetRPC>(url: T, options?
58
62
  cursor: string | null;
59
63
  error: Error | null;
60
64
  };
61
- /**
62
- * The events of an SSE body: `id` and the JSON `data`. Comments (keepalives)
63
- * and events without data are skipped; an event whose data is not JSON is
64
- * dropped rather than ending the stream.
65
- */
66
- export declare function readEvents(body: ReadableStream<Uint8Array>): AsyncGenerator<{
67
- id?: string;
68
- message: ChangeFeedMessage;
69
- }>;
70
65
  //# sourceMappingURL=useSubscription.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSubscription.d.ts","sourceRoot":"","sources":["../../client/useSubscription.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAE1F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAG/C,6EAA6E;AAC7E,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,MAAM,IACjD,IAAI,CAAC,CAAC,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;AAE5D,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7E,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,MAAM,IAAI;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI;IAClC,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;IAC5E;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;IAC1E;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAYF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,MAAM,EACpD,GAAG,EAAE,CAAC,EACN,OAAO,GAAE,mBAAmB,CAAC,CAAC,CAAM,EACpC,MAAM,GAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAM,GACnD;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CA+H5E;AAED;;;;GAIG;AACH,wBAAuB,UAAU,CAC/B,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,GAC/B,cAAc,CAAC;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAqC7D"}
1
+ {"version":3,"file":"useSubscription.d.ts","sourceRoot":"","sources":["../../client/useSubscription.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAG/C,6EAA6E;AAC7E,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,MAAM,IACjD,IAAI,CAAC,CAAC,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;AAE5D,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7E,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,MAAM,IAAI;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI;IAClC,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;IAC5E;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;IAC1E;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,YAAY;;CAExB,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,MAAM,EACpD,GAAG,EAAE,CAAC,EACN,OAAO,GAAE,mBAAmB,CAAC,CAAC,CAAM,EACpC,MAAM,GAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAM,GACnD;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAiE5E"}
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{Ce as a,Gf as r,He as c,Hf as s,Ie as e,If as t,Je as f,Jf as u,Ke as h,Le as i,Me as j,Te as k,Ue as l,Ve as m,We as n,Xe as o,ff as p,kg as v,vf as q}from"../chunk-0mp9tck6.js";import"../chunk-2869cbhd.js";import"../chunk-vjpby5sf.js";import{Ih as b,fi as d,hi as g}from"../chunk-2bmk0fzm.js";import"../chunk-fezaxj28.js";import"../chunk-gzaaspe7.js";import"../chunk-wv3nnq8c.js";import"../chunk-v09w6pr2.js";import"../chunk-mc8mxx2a.js";import"../chunk-pgh7gsag.js";import"../chunk-2z1gd231.js";import"../chunk-4yp84g2y.js";import"../chunk-peng31np.js";import"../chunk-1yttk239.js";import"../chunk-p528pvmm.js";import"../chunk-b7wmssj5.js";import"../chunk-cp84b0ev.js";import"../chunk-njaxnv6c.js";import"../chunk-f8ce6e9c.js";import"../chunk-np73p641.js";import"../chunk-ty5sp1ym.js";import"../chunk-0vxwrc4t.js";import"../chunk-xtnbcbkf.js";export{f as Url,d as Storage,r as Runs,j as Redis,a as Redirect,l as RateLimiter,e as Query,h as Meta,g as Log,m as Lock,c as Lang,s as Features,b as Facade,u as DB,n as Crypt,i as Cookie,o as Connections,t as ConnectionQueries,p as ChangeFeed,k as Cache,q as Broadcast,v as Auth};
2
+ import{Ce as a,Gf as r,He as c,Hf as s,Ie as e,If as t,Je as f,Jf as u,Ke as h,Le as i,Me as j,Te as k,Ue as l,Ve as m,We as n,Xe as o,ff as p,kg as v,vf as q}from"../chunk-0ryswty9.js";import"../chunk-2869cbhd.js";import"../chunk-vjpby5sf.js";import{Ih as b,fi as d,hi as g}from"../chunk-2bmk0fzm.js";import"../chunk-fezaxj28.js";import"../chunk-gzaaspe7.js";import"../chunk-wv3nnq8c.js";import"../chunk-v09w6pr2.js";import"../chunk-mc8mxx2a.js";import"../chunk-pgh7gsag.js";import"../chunk-2z1gd231.js";import"../chunk-4yp84g2y.js";import"../chunk-peng31np.js";import"../chunk-1yttk239.js";import"../chunk-p528pvmm.js";import"../chunk-b7wmssj5.js";import"../chunk-cp84b0ev.js";import"../chunk-njaxnv6c.js";import"../chunk-f8ce6e9c.js";import"../chunk-np73p641.js";import"../chunk-ty5sp1ym.js";import"../chunk-0vxwrc4t.js";import"../chunk-xtnbcbkf.js";export{f as Url,d as Storage,r as Runs,j as Redis,a as Redirect,l as RateLimiter,e as Query,h as Meta,g as Log,m as Lock,c as Lang,s as Features,b as Facade,u as DB,n as Crypt,i as Cookie,o as Connections,t as ConnectionQueries,p as ChangeFeed,k as Cache,q as Broadcast,v as Auth};
3
3
 
4
4
  //# debugId=DFD9FACEB5A990BB64756E2164756E21
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{$d as E,Ae as G,Ag as ma,Be as H,Bg as na,Cg as oa,De as I,Dg as pa,Ee as J,Eg as qa,Fe as K,Fg as ra,Ge as L,Gg as sa,Hg as ta,Od as q,Pd as r,Qd as s,Rd as t,Rf as _,Sd as u,Td as B,Yd as C,_d as D,ae as F,lg as $,mg as aa,ng as ba,qg as ca,rg as da,sg as ea,tg as fa,ug as ga,vg as ha,wg as ia,xg as ja,yg as ka,zg as la}from"../chunk-0mp9tck6.js";import"../chunk-2869cbhd.js";import"../chunk-vjpby5sf.js";import{$h as W,Bh as p,Ch as v,Dh as w,Eh as x,Fh as y,Gh as z,Hh as A,Rh as M,Sh as N,Th as O,Uh as P,Vh as Q,Wh as R,Xh as S,Yh as T,Zh as U,_h as V,ai as X,bi as Y,ci as Z,fh as a,gh as b,hh as d,mh as e,nh as f,oh as g,ph as h,qh as i,rh as j,wh as n,xh as o}from"../chunk-2bmk0fzm.js";import{pi as c}from"../chunk-fezaxj28.js";import{ui as k,vi as l,wi as m}from"../chunk-gzaaspe7.js";import"../chunk-wv3nnq8c.js";import"../chunk-v09w6pr2.js";import"../chunk-mc8mxx2a.js";import"../chunk-pgh7gsag.js";import"../chunk-2z1gd231.js";import"../chunk-4yp84g2y.js";import"../chunk-peng31np.js";import"../chunk-1yttk239.js";import"../chunk-p528pvmm.js";import"../chunk-b7wmssj5.js";import"../chunk-cp84b0ev.js";import"../chunk-njaxnv6c.js";import"../chunk-f8ce6e9c.js";import"../chunk-np73p641.js";import"../chunk-ty5sp1ym.js";import"../chunk-0vxwrc4t.js";import"../chunk-xtnbcbkf.js";export{g as toRangeHeaderValue,q as toMiddlewareList,k as stateKey,Z as safeFetch,f as resolveRange,e as parseRangeHeader,h as parseContentRange,u as parseByteSize,ha as middlewareConfigDefaults,J as httpError,d as getCookies,j as formatUnsatisfiedContentRange,i as formatContentRange,pa as defineResourcePolicy,ga as defineMiddlewareConfig,r as createUnsatisfiableResponse,s as createStreamResponse,K as createFileResponse,F as clientIp,X as classifyAddress,ba as authorizeChannel,L as ViewRouter,n as ValidationError,U as TooManyRedirectsError,S as TooLargeError,R as TimeoutError,qa as SitemapError,ra as Sitemap,H as SameSiteBounceMiddleware,Y as SafeResponse,M as SafeFetchError,G as SAME_SITE_BOUNCE_PARAM,sa as RobotsTxt,ta as Robots,oa as ResourcePolicy,b as ResourceController,m as RequestState,c as RequestBreakerError,E as RateLimitMiddleware,C as RateLimitExceededError,x as RangeNotSatisfiableError,ma as PoliciesServiceProvider,na as Policies,t as PayloadTooLargeError,y as NotFoundError,V as NetworkError,l as MissingRequestStateError,D as Middleware,ea as McpToolDeclaration,fa as McpRouter,da as McpRouteDeclaration,ca as McpModelParam,o as InvalidValidationRuleError,N as InvalidUrlError,w as InsufficientPermissionsError,W as HttpStatusError,I as HttpResponse,p as HttpRequest,z as FileNotFoundError,Q as DnsError,ka as CorsMiddleware,a as Controller,T as ContentTypeError,aa as ChannelRouter,$ as ChannelDeclaration,ja as CacheMiddleware,la as CSRFMiddleware,_ as BodyLimitMiddleware,O as BlockedHostError,P as BlockedAddressError,v as AuthorizationError,ia as AuthenticationMiddleware,A as AuthenticationError,B as ApiRouter};
2
+ import{$d as E,Ae as G,Ag as ma,Be as H,Bg as na,Cg as oa,De as I,Dg as pa,Ee as J,Eg as qa,Fe as K,Fg as ra,Ge as L,Gg as sa,Hg as ta,Od as q,Pd as r,Qd as s,Rd as t,Rf as _,Sd as u,Td as B,Yd as C,_d as D,ae as F,lg as $,mg as aa,ng as ba,qg as ca,rg as da,sg as ea,tg as fa,ug as ga,vg as ha,wg as ia,xg as ja,yg as ka,zg as la}from"../chunk-0ryswty9.js";import"../chunk-2869cbhd.js";import"../chunk-vjpby5sf.js";import{$h as W,Bh as p,Ch as v,Dh as w,Eh as x,Fh as y,Gh as z,Hh as A,Rh as M,Sh as N,Th as O,Uh as P,Vh as Q,Wh as R,Xh as S,Yh as T,Zh as U,_h as V,ai as X,bi as Y,ci as Z,fh as a,gh as b,hh as d,mh as e,nh as f,oh as g,ph as h,qh as i,rh as j,wh as n,xh as o}from"../chunk-2bmk0fzm.js";import{pi as c}from"../chunk-fezaxj28.js";import{ui as k,vi as l,wi as m}from"../chunk-gzaaspe7.js";import"../chunk-wv3nnq8c.js";import"../chunk-v09w6pr2.js";import"../chunk-mc8mxx2a.js";import"../chunk-pgh7gsag.js";import"../chunk-2z1gd231.js";import"../chunk-4yp84g2y.js";import"../chunk-peng31np.js";import"../chunk-1yttk239.js";import"../chunk-p528pvmm.js";import"../chunk-b7wmssj5.js";import"../chunk-cp84b0ev.js";import"../chunk-njaxnv6c.js";import"../chunk-f8ce6e9c.js";import"../chunk-np73p641.js";import"../chunk-ty5sp1ym.js";import"../chunk-0vxwrc4t.js";import"../chunk-xtnbcbkf.js";export{g as toRangeHeaderValue,q as toMiddlewareList,k as stateKey,Z as safeFetch,f as resolveRange,e as parseRangeHeader,h as parseContentRange,u as parseByteSize,ha as middlewareConfigDefaults,J as httpError,d as getCookies,j as formatUnsatisfiedContentRange,i as formatContentRange,pa as defineResourcePolicy,ga as defineMiddlewareConfig,r as createUnsatisfiableResponse,s as createStreamResponse,K as createFileResponse,F as clientIp,X as classifyAddress,ba as authorizeChannel,L as ViewRouter,n as ValidationError,U as TooManyRedirectsError,S as TooLargeError,R as TimeoutError,qa as SitemapError,ra as Sitemap,H as SameSiteBounceMiddleware,Y as SafeResponse,M as SafeFetchError,G as SAME_SITE_BOUNCE_PARAM,sa as RobotsTxt,ta as Robots,oa as ResourcePolicy,b as ResourceController,m as RequestState,c as RequestBreakerError,E as RateLimitMiddleware,C as RateLimitExceededError,x as RangeNotSatisfiableError,ma as PoliciesServiceProvider,na as Policies,t as PayloadTooLargeError,y as NotFoundError,V as NetworkError,l as MissingRequestStateError,D as Middleware,ea as McpToolDeclaration,fa as McpRouter,da as McpRouteDeclaration,ca as McpModelParam,o as InvalidValidationRuleError,N as InvalidUrlError,w as InsufficientPermissionsError,W as HttpStatusError,I as HttpResponse,p as HttpRequest,z as FileNotFoundError,Q as DnsError,ka as CorsMiddleware,a as Controller,T as ContentTypeError,aa as ChannelRouter,$ as ChannelDeclaration,ja as CacheMiddleware,la as CSRFMiddleware,_ as BodyLimitMiddleware,O as BlockedHostError,P as BlockedAddressError,v as AuthorizationError,ia as AuthenticationMiddleware,A as AuthenticationError,B as ApiRouter};
3
3
 
4
4
  //# debugId=DA99690AEE74AFA364756E2164756E21
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{ca as T}from"../chunk-wf3qe12c.js";import"../chunk-epvpmakp.js";import{ab as D}from"../chunk-pqn9j5s8.js";import{Ld as b,Md as w}from"../chunk-2epj17ac.js";import"../chunk-py1twqh8.js";import{He as j}from"../chunk-0mp9tck6.js";import"../chunk-2869cbhd.js";import"../chunk-vjpby5sf.js";import"../chunk-2bmk0fzm.js";import"../chunk-fezaxj28.js";import"../chunk-gzaaspe7.js";import"../chunk-wv3nnq8c.js";import"../chunk-v09w6pr2.js";import"../chunk-mc8mxx2a.js";import"../chunk-pgh7gsag.js";import"../chunk-2z1gd231.js";import"../chunk-4yp84g2y.js";import"../chunk-peng31np.js";import"../chunk-1yttk239.js";import"../chunk-p528pvmm.js";import{Ak as S,vk as V,wk as X,xk as E,yk as L,zk as R}from"../chunk-b7wmssj5.js";import"../chunk-cp84b0ev.js";import"../chunk-njaxnv6c.js";import"../chunk-f8ce6e9c.js";import"../chunk-np73p641.js";import"../chunk-ty5sp1ym.js";import"../chunk-0vxwrc4t.js";import"../chunk-xtnbcbkf.js";import{createElement as J,Fragment as M,isValidElement as U}from"react";function $(q,B){let G=Object.values(B).some((z)=>typeof z==="function"&&U(z(""))),Q=/{{([^{}]+?)(?::([^{}\[\]]+?))?(?:\[(.*?)\])?}}/g;if(!G)return q.replace(Q,(W,O,_,Z)=>{let C=O.includes(":")?O.split(":")[0]:O,H=B[C];if(H===void 0)return W;if(typeof H==="function"){let K=H(Z!==void 0?Z:"");if(U(K))throw Error("JSX returned in string context");return String(K)}if(_)switch(_.toLowerCase()){case"number":return Number(H).toString();case"string":return String(H);case"boolean":return Boolean(H).toString();default:return String(H)}return String(H)});else{let z=[],W=0,O=null;while((O=Q.exec(q))!==null){let[_,Z,C,H]=O,F=O.index,K=Z.includes(":")?Z.split(":")[0]:Z;if(F>W)z.push(q.substring(W,F));let Y=B[K];if(Y===void 0)z.push(_);else if(typeof Y==="function"){let A=Y(H!==void 0?H:"");z.push(A)}else if(C)switch(C.toLowerCase()){case"number":z.push(Number(Y).toString());break;case"string":z.push(String(Y));break;case"boolean":z.push(Boolean(Y).toString());break;default:z.push(String(Y))}else z.push(String(Y));W=F+_.length}if(W<q.length)z.push(q.substring(W));return J(M,{},...z)}}class P{name;dictionary;constructor(q,B){this.name=q;this.dictionary=B}reference(q){if(typeof window<"u")throw Error("Cannot use reference in the browser");if(!this.dictionary?.[q])throw Error(`Translation not found for ${String(q)}`);return this.dictionary[q]}render(q,...B){let{locale:G=j.locale(),params:Q}={params:{},...B[0]};if(typeof window<"u")throw Error("Cannot use render in the browser");if(!this.dictionary?.[q]?.[G])throw Error(`Translation not found for ${String(q)} in ${String(G)}`);return $(this.dictionary[q][G],Q??{})}static create(q,B){return new P(q,B)}static text(q,...B){let{locale:G=j.locale(),params:Q}={params:{},...B?.[0]};if(!q?.[G])throw Error(`Translation not found for ${String(G)}`);return $(q[G],Q??{})}}async function N(q,B,...G){let{locale:Q=j.locale(),params:z}={params:{},...G[0]},O=(await q.load(String(Q)))[B];if(typeof O!=="string")throw Error(`Translation not found for "${B}" in "${String(Q)}" (dictionary ${q.id})`);return $(O,z??{})}export{w as translationConfigDefaults,N as translate,V as resolveLocale,X as negotiateLocale,L as isValidTimeZone,b as defineTranslationConfig,T as defineDictionary,R as createFormatter,S as Translator,D as TranslationServiceProvider,P as Dictionary,E as DEFAULT_TIME_ZONE};
2
+ import{ca as T}from"../chunk-wf3qe12c.js";import"../chunk-epvpmakp.js";import{ab as D}from"../chunk-pqn9j5s8.js";import{Ld as b,Md as w}from"../chunk-2epj17ac.js";import"../chunk-py1twqh8.js";import{He as j}from"../chunk-0ryswty9.js";import"../chunk-2869cbhd.js";import"../chunk-vjpby5sf.js";import"../chunk-2bmk0fzm.js";import"../chunk-fezaxj28.js";import"../chunk-gzaaspe7.js";import"../chunk-wv3nnq8c.js";import"../chunk-v09w6pr2.js";import"../chunk-mc8mxx2a.js";import"../chunk-pgh7gsag.js";import"../chunk-2z1gd231.js";import"../chunk-4yp84g2y.js";import"../chunk-peng31np.js";import"../chunk-1yttk239.js";import"../chunk-p528pvmm.js";import{Ak as S,vk as V,wk as X,xk as E,yk as L,zk as R}from"../chunk-b7wmssj5.js";import"../chunk-cp84b0ev.js";import"../chunk-njaxnv6c.js";import"../chunk-f8ce6e9c.js";import"../chunk-np73p641.js";import"../chunk-ty5sp1ym.js";import"../chunk-0vxwrc4t.js";import"../chunk-xtnbcbkf.js";import{createElement as J,Fragment as M,isValidElement as U}from"react";function $(q,B){let G=Object.values(B).some((z)=>typeof z==="function"&&U(z(""))),Q=/{{([^{}]+?)(?::([^{}\[\]]+?))?(?:\[(.*?)\])?}}/g;if(!G)return q.replace(Q,(W,O,_,Z)=>{let C=O.includes(":")?O.split(":")[0]:O,H=B[C];if(H===void 0)return W;if(typeof H==="function"){let K=H(Z!==void 0?Z:"");if(U(K))throw Error("JSX returned in string context");return String(K)}if(_)switch(_.toLowerCase()){case"number":return Number(H).toString();case"string":return String(H);case"boolean":return Boolean(H).toString();default:return String(H)}return String(H)});else{let z=[],W=0,O=null;while((O=Q.exec(q))!==null){let[_,Z,C,H]=O,F=O.index,K=Z.includes(":")?Z.split(":")[0]:Z;if(F>W)z.push(q.substring(W,F));let Y=B[K];if(Y===void 0)z.push(_);else if(typeof Y==="function"){let A=Y(H!==void 0?H:"");z.push(A)}else if(C)switch(C.toLowerCase()){case"number":z.push(Number(Y).toString());break;case"string":z.push(String(Y));break;case"boolean":z.push(Boolean(Y).toString());break;default:z.push(String(Y))}else z.push(String(Y));W=F+_.length}if(W<q.length)z.push(q.substring(W));return J(M,{},...z)}}class P{name;dictionary;constructor(q,B){this.name=q;this.dictionary=B}reference(q){if(typeof window<"u")throw Error("Cannot use reference in the browser");if(!this.dictionary?.[q])throw Error(`Translation not found for ${String(q)}`);return this.dictionary[q]}render(q,...B){let{locale:G=j.locale(),params:Q}={params:{},...B[0]};if(typeof window<"u")throw Error("Cannot use render in the browser");if(!this.dictionary?.[q]?.[G])throw Error(`Translation not found for ${String(q)} in ${String(G)}`);return $(this.dictionary[q][G],Q??{})}static create(q,B){return new P(q,B)}static text(q,...B){let{locale:G=j.locale(),params:Q}={params:{},...B?.[0]};if(!q?.[G])throw Error(`Translation not found for ${String(G)}`);return $(q[G],Q??{})}}async function N(q,B,...G){let{locale:Q=j.locale(),params:z}={params:{},...G[0]},O=(await q.load(String(Q)))[B];if(typeof O!=="string")throw Error(`Translation not found for "${B}" in "${String(Q)}" (dictionary ${q.id})`);return $(O,z??{})}export{w as translationConfigDefaults,N as translate,V as resolveLocale,X as negotiateLocale,L as isValidTimeZone,b as defineTranslationConfig,T as defineDictionary,R as createFormatter,S as Translator,D as TranslationServiceProvider,P as Dictionary,E as DEFAULT_TIME_ZONE};
3
3
 
4
4
  //# debugId=7DA53835058BB35D64756E2164756E21
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Ea as E}from"../chunk-9122838b.js";import{$a as p}from"../chunk-1rq53cb0.js";import{ab as H}from"../chunk-pqn9j5s8.js";import{Bb as L,Cb as Q,Db as T,Hb as U,Ib as y,Jb as F,Kb as C,Nb as D,Ob as I,Rb as b,Ub as f,Vb as k,Wb as m,nb as g,ob as W,pb as _,qb as l,rb as P,sb as u,tb as $,ub as V,vb as q,wb as B,xb as K}from"../chunk-wzfvwvz0.js";import"../chunk-vc5kpxdk.js";import"../chunk-87rtxv9n.js";import"../chunk-qpwb3gnh.js";import{Fd as h}from"../chunk-t7gvgz20.js";import"../chunk-2epj17ac.js";import"../chunk-py1twqh8.js";import{dg as w,fe as a,ge as d,hg as A,ig as R,ye as n,ze as v}from"../chunk-0mp9tck6.js";import"../chunk-2869cbhd.js";import"../chunk-vjpby5sf.js";import"../chunk-2bmk0fzm.js";import"../chunk-fezaxj28.js";import"../chunk-gzaaspe7.js";import"../chunk-wv3nnq8c.js";import{Ki as M}from"../chunk-v09w6pr2.js";import"../chunk-mc8mxx2a.js";import"../chunk-pgh7gsag.js";import"../chunk-2z1gd231.js";import"../chunk-4yp84g2y.js";import"../chunk-peng31np.js";import"../chunk-1yttk239.js";import"../chunk-p528pvmm.js";import"../chunk-sh39q44t.js";import"../chunk-b7wmssj5.js";import{Bk as O,Dk as z}from"../chunk-cp84b0ev.js";import"../chunk-njaxnv6c.js";import"../chunk-f8ce6e9c.js";import"../chunk-np73p641.js";import"../chunk-ty5sp1ym.js";import"../chunk-0vxwrc4t.js";import"../chunk-xtnbcbkf.js";var N=[C,I,E,T,L,k,B,Q,D,y,_,U,f,V,F,H,b,K,q,m,$];class S{config={};providers=[];services=[];serviceInstances=[];serviceTokens=new Set;servicesBooted=!1;models=[];app=new z;boot(){if(this.models.length>0)p(...this.models);else s();this.app.config.merge(this.config),z.setInstance(this.app),this.app.registerMany([...N,...this.providers]),this.registerServices()}registerServices(){let j=this.serviceTokens;this.serviceInstances=[],this.serviceTokens=new Set,this.servicesBooted=!1;let X=new Map;for(let G of this.services){let J=typeof G==="function"?new G:G,x=J.constructor;if(!x.token)throw Error(`Service [${x.name}] is listed in \`services\` but does not declare a \`static token\`.`);let Y=X.get(x.token);if(Y)throw Error(`Services [${Y}] and [${x.name}] both declare the token "${x.token}". Tokens are the container's keys, so they must be unique.`);X.set(x.token,x.name);let Z=x;if(!j.has(x.token)&&this.app.bound(Z))throw Error(`Service [${x.name}] declares the token "${x.token}", which is already bound in the container by the framework or a provider. Binding it would replace that service everywhere, so pick a token nothing else owns.`);this.app.instance(Z,J),this.serviceInstances.push(J),this.serviceTokens.add(x.token)}}async waitForBoot(){await this.app.boot(),await this.bootServices(),l(this.app)}async bootServices(){if(this.servicesBooted)return;for(let j of this.serviceInstances)await j.boot();this.servicesBooted=!0}shutdown(j){return this.run(()=>this.app.shutdown(j))}run(j){return O.run(this.app,j)}resolve(j){return this.app.make(j)}apiRoutes(){return this.app.make(A)}viewRoutes(){return this.app.make(w)}domains(){return this.app.make(R)}queue(){return this.app.make(h)}mcpHttp(){return this.app.config.get("route.mcp.remote.enabled")===!0?this.app.make(g):null}sockets(){return this.app.config.get("route.channels")?this.app.make(u):null}globalMiddleware(j){return P(j)}destroy(){if(this.app.resolved(W))this.app.make(W).stop();if(this.app.flush(),z.getInstance()===this.app)z.setInstance(void 0);O.disable()}}function s(){if(Bun.env.NODE_ENV==="production")return;let j=M();if(j.length===0)return;console.warn(`[gemi] ${j.length} model${j.length===1?" is":"s are"} registered, but Kernel.models is empty.
2
+ import{Ea as E}from"../chunk-9122838b.js";import{$a as p}from"../chunk-1rq53cb0.js";import{ab as H}from"../chunk-pqn9j5s8.js";import{Bb as L,Cb as Q,Db as T,Hb as U,Ib as y,Jb as F,Kb as C,Nb as D,Ob as I,Rb as b,Ub as f,Vb as k,Wb as m,nb as g,ob as W,pb as _,qb as l,rb as P,sb as u,tb as $,ub as V,vb as q,wb as B,xb as K}from"../chunk-jj1ppnnk.js";import"../chunk-vc5kpxdk.js";import"../chunk-87rtxv9n.js";import"../chunk-qpwb3gnh.js";import{Fd as h}from"../chunk-t7gvgz20.js";import"../chunk-2epj17ac.js";import"../chunk-py1twqh8.js";import{dg as w,fe as a,ge as d,hg as A,ig as R,ye as n,ze as v}from"../chunk-0ryswty9.js";import"../chunk-2869cbhd.js";import"../chunk-vjpby5sf.js";import"../chunk-2bmk0fzm.js";import"../chunk-fezaxj28.js";import"../chunk-gzaaspe7.js";import"../chunk-wv3nnq8c.js";import{Ki as M}from"../chunk-v09w6pr2.js";import"../chunk-mc8mxx2a.js";import"../chunk-pgh7gsag.js";import"../chunk-2z1gd231.js";import"../chunk-4yp84g2y.js";import"../chunk-peng31np.js";import"../chunk-1yttk239.js";import"../chunk-p528pvmm.js";import"../chunk-sh39q44t.js";import"../chunk-b7wmssj5.js";import{Bk as O,Dk as z}from"../chunk-cp84b0ev.js";import"../chunk-njaxnv6c.js";import"../chunk-f8ce6e9c.js";import"../chunk-np73p641.js";import"../chunk-ty5sp1ym.js";import"../chunk-0vxwrc4t.js";import"../chunk-xtnbcbkf.js";var N=[C,I,E,T,L,k,B,Q,D,y,_,U,f,V,F,H,b,K,q,m,$];class S{config={};providers=[];services=[];serviceInstances=[];serviceTokens=new Set;servicesBooted=!1;models=[];app=new z;boot(){if(this.models.length>0)p(...this.models);else s();this.app.config.merge(this.config),z.setInstance(this.app),this.app.registerMany([...N,...this.providers]),this.registerServices()}registerServices(){let j=this.serviceTokens;this.serviceInstances=[],this.serviceTokens=new Set,this.servicesBooted=!1;let X=new Map;for(let G of this.services){let J=typeof G==="function"?new G:G,x=J.constructor;if(!x.token)throw Error(`Service [${x.name}] is listed in \`services\` but does not declare a \`static token\`.`);let Y=X.get(x.token);if(Y)throw Error(`Services [${Y}] and [${x.name}] both declare the token "${x.token}". Tokens are the container's keys, so they must be unique.`);X.set(x.token,x.name);let Z=x;if(!j.has(x.token)&&this.app.bound(Z))throw Error(`Service [${x.name}] declares the token "${x.token}", which is already bound in the container by the framework or a provider. Binding it would replace that service everywhere, so pick a token nothing else owns.`);this.app.instance(Z,J),this.serviceInstances.push(J),this.serviceTokens.add(x.token)}}async waitForBoot(){await this.app.boot(),await this.bootServices(),l(this.app)}async bootServices(){if(this.servicesBooted)return;for(let j of this.serviceInstances)await j.boot();this.servicesBooted=!0}shutdown(j){return this.run(()=>this.app.shutdown(j))}run(j){return O.run(this.app,j)}resolve(j){return this.app.make(j)}apiRoutes(){return this.app.make(A)}viewRoutes(){return this.app.make(w)}domains(){return this.app.make(R)}queue(){return this.app.make(h)}mcpHttp(){return this.app.config.get("route.mcp.remote.enabled")===!0?this.app.make(g):null}sockets(){return this.app.config.get("route.channels")?this.app.make(u):null}globalMiddleware(j){return P(j)}destroy(){if(this.app.resolved(W))this.app.make(W).stop();if(this.app.flush(),z.getInstance()===this.app)z.setInstance(void 0);O.disable()}}function s(){if(Bun.env.NODE_ENV==="production")return;let j=M();if(j.length===0)return;console.warn(`[gemi] ${j.length} model${j.length===1?" is":"s are"} registered, but Kernel.models is empty.
3
3
  Nested relation reads resolve a model by name, so a policy on a subclass that does not own its
4
4
  `+" name is skipped inside every include \u2014 scoped at the root, "+`unscoped in an include, with nothing
5
5
  to notice it. Declaring the modules registers each class under its own name and audits the set:
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{Ca as f}from"../chunk-kk18xqgc.js";import{Da as S}from"../chunk-bnp6wpzd.js";import{Nk as Q,Pk as Z,Qk as P,Rk as y,Sk as U,Tk as A}from"../chunk-np73p641.js";import{Xk as H}from"../chunk-ty5sp1ym.js";import"../chunk-0vxwrc4t.js";import{cl as F}from"../chunk-xtnbcbkf.js";var x="/__gemi__/health",$=Symbol.for("gemi.server.health");function V(){let z=globalThis;return z[$]??={lagMs:0,consecutiveBreaches:0,degraded:!1,timer:void 0},z[$]}function W(){let z=V(),B=Q();return{healthy:!B&&!z.degraded,shuttingDown:B,lagMs:z.lagMs,consecutiveBreaches:z.consecutiveBreaches}}function E(z,B){let I=V();I.lagMs=z,I.consecutiveBreaches=z>B.maxLagMs?I.consecutiveBreaches+1:0;let J=I.consecutiveBreaches>=B.breaches;if(J&&!I.degraded)console.warn(`[gemi] Health: degraded (event-loop lag ${Math.round(z)}ms, ${I.consecutiveBreaches} samples in a row over ${B.maxLagMs}ms).`);else if(!J&&I.degraded)console.log(`[gemi] Health: recovered (event-loop lag ${Math.round(z)}ms).`);I.degraded=J}function G(z){let B=V();if(B.timer)return;let I=performance.now()+z.intervalMs;B.timer=setInterval(()=>{let J=performance.now();E(Math.max(0,J-I),z),I=J+z.intervalMs},z.intervalMs),B.timer.unref?.()}function _(z=process.env){return{paths:D(z.GEMI_HEALTH_PATH),intervalMs:O("GEMI_HEALTH_INTERVAL_MS",z.GEMI_HEALTH_INTERVAL_MS,500),maxLagMs:O("GEMI_HEALTH_MAX_LAG_MS",z.GEMI_HEALTH_MAX_LAG_MS,1000),breaches:Math.ceil(O("GEMI_HEALTH_BREACHES",z.GEMI_HEALTH_BREACHES,3))}}function D(z){if(z===void 0||z.trim()==="")return[x];if(z.trim().toLowerCase()==="off")return[];let B=z.split(",").map((J)=>J.trim()).filter(Boolean);if(B.filter((J)=>!J.startsWith("/")).length>0)throw Error(`GEMI_HEALTH_PATH: expected comma-separated paths starting with "/", or "off"; got ${JSON.stringify(z)}.`);return B}function O(z,B,I){if(B===void 0||B.trim()==="")return I;let J=Number(B);if(Number.isFinite(J)&&J>0)return J;return console.warn(`[gemi] Ignoring ${z}="${B}": expected a positive number.`),I}function j(z,B){if(B.length===0)return z;let I=new Set(B);return async(J,K)=>{if(!B.some((b)=>J.url.includes(b))||!I.has(new URL(J.url).pathname))return z(J,K);return y(R(J.method))}}function R(z){let B={"Cache-Control":"no-store","Content-Type":"text/plain; charset=utf-8"};if(z!=="GET"&&z!=="HEAD")return new Response("Method Not Allowed",{status:405,headers:{...B,Allow:"GET, HEAD"}});let{healthy:I,shuttingDown:J}=W();return new Response(z==="HEAD"?null:I?"ok":J?"shutting down":"degraded",{status:I?200:503,headers:B})}var L=Symbol.for("gemi.server.devGeneration"),X={graceMs:1e4,providerTimeoutMs:5000};class Y{app;inFlight=0;waiters=new Set;constructor(z){this.app=z}track(z){return async(B,I)=>{this.inFlight++;try{return await z(B,I)}finally{if(this.inFlight--,this.inFlight===0)this.wake()}}}get pending(){return this.inFlight}async retire({graceMs:z,providerTimeoutMs:B}){try{await this.idle(z),await Promise.resolve().then(()=>this.app.shutdown({timeoutMs:B}))}catch(I){C(I)}}idle(z){if(this.inFlight===0)return Promise.resolve();return new Promise((B)=>{let I=()=>{clearTimeout(J),this.waiters.delete(I),B()},J=setTimeout(I,z);this.waiters.add(I)})}wake(){for(let z of this.waiters)z()}}function N(z,B=X){let I=globalThis,J=I[L];if(I[L]=z,!J||J===z||typeof J.retire!=="function")return Promise.resolve();let K=J.retire.bind(J);return Promise.resolve().then(()=>K(B)).catch(C)}function C(z){console.error("[gemi] Shutting down the application a reload replaced failed:",z)}class k{app;instrumentation;handleSignals;server;stopping;settings;constructor(z){this.app=new S({kernel:z.kernel}),this.handleSignals=z.handleSignals??!0,this.instrumentation=U(z.instrumentation??((B,I)=>I(B)))}async start(){process.env.ROOT_DIR=H();let z=Bun.env.NODE_ENV==="production",B=_();if(z)G(B);let I=j(this.instrumentation,B.paths);if(z){if(this.handleSignals)A(()=>this.stop());this.settings=Z()}try{await this.app.waitForBoot()}catch(J){if(!z)this.app.shutdown({timeoutMs:X.providerTimeoutMs});throw J}if(z){let{httpProd:J}=await import("../chunk-df0mekds.js");this.server=await J(this.app,I)}else{f();let{httpDev:J}=await import("../chunk-qz0da20r.js"),K=new Y(this.app);this.server=await J(this.app,K.track(I)),N(K)}return this.server}stop(z={}){let B=this.app.sockets();return this.stopping??=P({server:this.server,closeSockets:B?()=>B.shutdown():void 0,shutdownProviders:(I)=>this.app.shutdown(I),settings:{...this.settings??Z(),...z}}),this.stopping}}export{W as liveness,Q as isShuttingDown,k as Server};
2
+ import{Ca as f}from"../chunk-kk18xqgc.js";import{Da as S}from"../chunk-bnp6wpzd.js";import{Nk as Q,Pk as Z,Qk as P,Rk as y,Sk as U,Tk as A}from"../chunk-np73p641.js";import{Xk as H}from"../chunk-ty5sp1ym.js";import"../chunk-0vxwrc4t.js";import{cl as F}from"../chunk-xtnbcbkf.js";var x="/__gemi__/health",$=Symbol.for("gemi.server.health");function V(){let z=globalThis;return z[$]??={lagMs:0,consecutiveBreaches:0,degraded:!1,timer:void 0},z[$]}function W(){let z=V(),B=Q();return{healthy:!B&&!z.degraded,shuttingDown:B,lagMs:z.lagMs,consecutiveBreaches:z.consecutiveBreaches}}function E(z,B){let I=V();I.lagMs=z,I.consecutiveBreaches=z>B.maxLagMs?I.consecutiveBreaches+1:0;let J=I.consecutiveBreaches>=B.breaches;if(J&&!I.degraded)console.warn(`[gemi] Health: degraded (event-loop lag ${Math.round(z)}ms, ${I.consecutiveBreaches} samples in a row over ${B.maxLagMs}ms).`);else if(!J&&I.degraded)console.log(`[gemi] Health: recovered (event-loop lag ${Math.round(z)}ms).`);I.degraded=J}function G(z){let B=V();if(B.timer)return;let I=performance.now()+z.intervalMs;B.timer=setInterval(()=>{let J=performance.now();E(Math.max(0,J-I),z),I=J+z.intervalMs},z.intervalMs),B.timer.unref?.()}function _(z=process.env){return{paths:D(z.GEMI_HEALTH_PATH),intervalMs:O("GEMI_HEALTH_INTERVAL_MS",z.GEMI_HEALTH_INTERVAL_MS,500),maxLagMs:O("GEMI_HEALTH_MAX_LAG_MS",z.GEMI_HEALTH_MAX_LAG_MS,1000),breaches:Math.ceil(O("GEMI_HEALTH_BREACHES",z.GEMI_HEALTH_BREACHES,3))}}function D(z){if(z===void 0||z.trim()==="")return[x];if(z.trim().toLowerCase()==="off")return[];let B=z.split(",").map((J)=>J.trim()).filter(Boolean);if(B.filter((J)=>!J.startsWith("/")).length>0)throw Error(`GEMI_HEALTH_PATH: expected comma-separated paths starting with "/", or "off"; got ${JSON.stringify(z)}.`);return B}function O(z,B,I){if(B===void 0||B.trim()==="")return I;let J=Number(B);if(Number.isFinite(J)&&J>0)return J;return console.warn(`[gemi] Ignoring ${z}="${B}": expected a positive number.`),I}function j(z,B){if(B.length===0)return z;let I=new Set(B);return async(J,K)=>{if(!B.some((b)=>J.url.includes(b))||!I.has(new URL(J.url).pathname))return z(J,K);return y(R(J.method))}}function R(z){let B={"Cache-Control":"no-store","Content-Type":"text/plain; charset=utf-8"};if(z!=="GET"&&z!=="HEAD")return new Response("Method Not Allowed",{status:405,headers:{...B,Allow:"GET, HEAD"}});let{healthy:I,shuttingDown:J}=W();return new Response(z==="HEAD"?null:I?"ok":J?"shutting down":"degraded",{status:I?200:503,headers:B})}var L=Symbol.for("gemi.server.devGeneration"),X={graceMs:1e4,providerTimeoutMs:5000};class Y{app;inFlight=0;waiters=new Set;constructor(z){this.app=z}track(z){return async(B,I)=>{this.inFlight++;try{return await z(B,I)}finally{if(this.inFlight--,this.inFlight===0)this.wake()}}}get pending(){return this.inFlight}async retire({graceMs:z,providerTimeoutMs:B}){try{await this.idle(z),await Promise.resolve().then(()=>this.app.shutdown({timeoutMs:B}))}catch(I){C(I)}}idle(z){if(this.inFlight===0)return Promise.resolve();return new Promise((B)=>{let I=()=>{clearTimeout(J),this.waiters.delete(I),B()},J=setTimeout(I,z);this.waiters.add(I)})}wake(){for(let z of this.waiters)z()}}function N(z,B=X){let I=globalThis,J=I[L];if(I[L]=z,!J||J===z||typeof J.retire!=="function")return Promise.resolve();let K=J.retire.bind(J);return Promise.resolve().then(()=>K(B)).catch(C)}function C(z){console.error("[gemi] Shutting down the application a reload replaced failed:",z)}class k{app;instrumentation;handleSignals;server;stopping;settings;constructor(z){this.app=new S({kernel:z.kernel}),this.handleSignals=z.handleSignals??!0,this.instrumentation=U(z.instrumentation??((B,I)=>I(B)))}async start(){process.env.ROOT_DIR=H();let z=Bun.env.NODE_ENV==="production",B=_();if(z)G(B);let I=j(this.instrumentation,B.paths);if(z){if(this.handleSignals)A(()=>this.stop());this.settings=Z()}try{await this.app.waitForBoot()}catch(J){if(!z)this.app.shutdown({timeoutMs:X.providerTimeoutMs});throw J}if(z){let{httpProd:J}=await import("../chunk-wmkrb1qv.js");this.server=await J(this.app,I)}else{f();let{httpDev:J}=await import("../chunk-zw5z1k84.js"),K=new Y(this.app);this.server=await J(this.app,K.track(I)),N(K)}return this.server}stop(z={}){let B=this.app.sockets();return this.stopping??=P({server:this.server,closeSockets:B?()=>B.shutdown():void 0,shutdownProviders:(I)=>this.app.shutdown(I),settings:{...this.settings??Z(),...z}}),this.stopping}}export{W as liveness,Q as isShuttingDown,k as Server};
3
3
 
4
4
  //# debugId=EDD25C650124A74464756E2164756E21
@@ -36,8 +36,7 @@
36
36
  export declare const BROADCAST_PROTOCOL = "gemi.v1";
37
37
  /** The default endpoint, `defineBroadcastConfig({ path })`. */
38
38
  export declare const DEFAULT_SOCKET_PATH = "/__gemi/socket";
39
- /** The request header a client sends its socket id in, for `toOthers`. */
40
- export declare const SOCKET_ID_HEADER = "x-gemi-socket";
39
+ export { SOCKET_ID_HEADER } from "./socketHeader";
41
40
  /** What a subscription id may look like. */
42
41
  export declare const SUBSCRIPTION_ID: RegExp;
43
42
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../services/broadcast/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,iCAAiC;AACjC,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,4CAA4C;AAC5C,eAAO,MAAM,eAAe,QAA0B,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,SAAS;IACpB,0DAA0D;;IAE1D,yDAAyD;;IAEzD,uDAAuD;;IAEvD,8DAA8D;;IAE9D,4DAA4D;;IAE5D,8DAA8D;;CAEtD,CAAC;AAEX,sCAAsC;AACtC,MAAM,MAAM,UAAU;AACpB,+CAA+C;AAC7C,iBAAiB;AACnB,qDAAqD;GACnD,gBAAgB;AAClB,2CAA2C;GACzC,QAAQ;AACV,uEAAuE;GACrE,OAAO;AACT,mEAAmE;GACjE,OAAO;AACT,kDAAkD;GAChD,cAAc;AAChB,0DAA0D;GACxD,SAAS;AACX,4DAA4D;GAC1D,SAAS,CAAC;AAEd,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;CAAE,GAC1E;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnB,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,EAAE,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC9C;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,GACb;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GACd;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAE3D"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../services/broadcast/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,iCAAiC;AACjC,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,4CAA4C;AAC5C,eAAO,MAAM,eAAe,QAA0B,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,SAAS;IACpB,0DAA0D;;IAE1D,yDAAyD;;IAEzD,uDAAuD;;IAEvD,8DAA8D;;IAE9D,4DAA4D;;IAE5D,8DAA8D;;CAEtD,CAAC;AAEX,sCAAsC;AACtC,MAAM,MAAM,UAAU;AACpB,+CAA+C;AAC7C,iBAAiB;AACnB,qDAAqD;GACnD,gBAAgB;AAClB,2CAA2C;GACzC,QAAQ;AACV,uEAAuE;GACrE,OAAO;AACT,mEAAmE;GACjE,OAAO;AACT,kDAAkD;GAChD,cAAc;AAChB,0DAA0D;GACxD,SAAS;AACX,4DAA4D;GAC1D,SAAS,CAAC;AAEd,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;CAAE,GAC1E;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnB,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACnE;IAAE,EAAE,EAAE,YAAY,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC9C;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,GACb;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GACd;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAE3D"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The request header a client sends its socket id in, for `toOthers`.
3
+ *
4
+ * A module of its own, re-exported by `./protocol`: every mutation in the
5
+ * browser reads it, and anything else in `./protocol` it pulled along would
6
+ * land in every route's entry chunk instead of the lazily loaded socket's.
7
+ */
8
+ export declare const SOCKET_ID_HEADER = "x-gemi-socket";
9
+ //# sourceMappingURL=socketHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socketHeader.d.ts","sourceRoot":"","sources":["../../../services/broadcast/socketHeader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,kBAAkB,CAAC"}