gemi 0.129.0 → 0.130.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-wmkrb1qv.js → chunk-13agap7z.js} +1 -1
- package/dist/{chunk-zw5z1k84.js → chunk-7ynnce4b.js} +1 -1
- package/dist/{chunk-sbdm4enk.js → chunk-xtqhagxz.js} +2 -2
- package/dist/{chunk-sbdm4enk.js.map → chunk-xtqhagxz.js.map} +1 -1
- package/dist/chunks/MutationError-DuKqBW8o.js +199 -0
- package/dist/chunks/MutationError-DuKqBW8o.js.map +1 -0
- package/dist/chunks/{RealtimeClient-CqGve6h8.js → RealtimeClient-DsWbFRC7.js} +11 -3
- package/dist/chunks/RealtimeClient-DsWbFRC7.js.map +1 -0
- package/dist/chunks/{ThemeProvider-DaX0eyqs.js → ThemeProvider-gWqXjGh-.js} +70 -91
- package/dist/chunks/ThemeProvider-gWqXjGh-.js.map +1 -0
- package/dist/chunks/channelKey-CIhHpX6x.js +10 -0
- package/dist/chunks/channelKey-CIhHpX6x.js.map +1 -0
- package/dist/chunks/fetchFileRequest-BSrgYnAy.js +57 -0
- package/dist/chunks/fetchFileRequest-BSrgYnAy.js.map +1 -0
- package/dist/chunks/{live-DIUDdLrA.js → live-CUdMhXHL.js} +22 -3
- package/dist/chunks/live-CUdMhXHL.js.map +1 -0
- package/dist/chunks/mutationExtras-CtY-X9m7.js +115 -0
- package/dist/chunks/mutationExtras-CtY-X9m7.js.map +1 -0
- package/dist/client/MutationError.d.ts +7 -9
- package/dist/client/MutationError.d.ts.map +1 -1
- package/dist/client/QueryResource.d.ts +3 -11
- package/dist/client/QueryResource.d.ts.map +1 -1
- package/dist/client/fetchFile.d.ts +4 -7
- package/dist/client/fetchFile.d.ts.map +1 -1
- package/dist/client/fetchFileRequest.d.ts +14 -0
- package/dist/client/fetchFileRequest.d.ts.map +1 -0
- package/dist/client/index.js +88 -339
- package/dist/client/index.js.map +1 -1
- package/dist/client/lazyModule.d.ts +32 -0
- package/dist/client/lazyModule.d.ts.map +1 -0
- package/dist/client/mutationErrorHelpers.d.ts +11 -0
- package/dist/client/mutationErrorHelpers.d.ts.map +1 -0
- package/dist/client/mutationExtras.d.ts +3 -0
- package/dist/client/mutationExtras.d.ts.map +1 -0
- package/dist/client/mutationModules.d.ts +17 -0
- package/dist/client/mutationModules.d.ts.map +1 -0
- package/dist/client/queryUpdates.d.ts +22 -0
- package/dist/client/queryUpdates.d.ts.map +1 -0
- package/dist/client/realtime/RealtimeClient.d.ts +5 -0
- package/dist/client/realtime/RealtimeClient.d.ts.map +1 -1
- package/dist/client/realtime/channelKey.d.ts +4 -0
- package/dist/client/realtime/channelKey.d.ts.map +1 -0
- package/dist/client/realtime/live.d.ts +6 -0
- package/dist/client/realtime/live.d.ts.map +1 -1
- package/dist/client/realtime/loader.d.ts +20 -23
- package/dist/client/realtime/loader.d.ts.map +1 -1
- package/dist/client/realtime/useChannelSubscription.d.ts.map +1 -1
- package/dist/client/useMutation.d.ts +1 -1
- package/dist/client/useMutation.d.ts.map +1 -1
- package/dist/client/useSetQueryData.d.ts +4 -17
- package/dist/client/useSetQueryData.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/testing/index.js +4 -3
- package/dist/testing/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/RealtimeClient-CqGve6h8.js.map +0 -1
- package/dist/chunks/ThemeProvider-DaX0eyqs.js.map +0 -1
- package/dist/chunks/live-DIUDdLrA.js.map +0 -1
- /package/dist/{chunk-wmkrb1qv.js.map → chunk-13agap7z.js.map} +0 -0
- /package/dist/{chunk-zw5z1k84.js.map → chunk-7ynnce4b.js.map} +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a lazy `import()` resolved to, or a thrown error when it is missing.
|
|
3
|
+
* Vite's preload helper resolves the `import()` to `undefined` instead of
|
|
4
|
+
* rejecting when a `vite:preloadError` listener handled the failure (`init`'s
|
|
5
|
+
* chunk-load recovery does, as it starts a reload): treated as a failed load.
|
|
6
|
+
*/
|
|
7
|
+
export declare function loadedModule<T>(module: T | undefined): T;
|
|
8
|
+
/**
|
|
9
|
+
* A module of `gemi/client` loaded with `import()` on first use (#891,
|
|
10
|
+
* #915). An app's bundler places a module by what reaches it statically, and
|
|
11
|
+
* every route's entry chunk reaches all of `gemi/client`, so code that only
|
|
12
|
+
* some pages need stays out of the entry this way.
|
|
13
|
+
*
|
|
14
|
+
* `current` is the module once it has loaded, for callers that must not wait
|
|
15
|
+
* when it is there; `load` is replaceable in tests. Declared as an object
|
|
16
|
+
* literal, never through a call: an app's bundler drops an unused literal and
|
|
17
|
+
* its `import()` with it, while an unused call's `import()` can still emit an
|
|
18
|
+
* orphaned chunk that changes how the app is split.
|
|
19
|
+
*/
|
|
20
|
+
export interface LazyModule<M> {
|
|
21
|
+
current: M | null;
|
|
22
|
+
load: () => Promise<M | undefined>;
|
|
23
|
+
/** The load in flight, shared by every caller until it settles. */
|
|
24
|
+
loading?: Promise<M> | null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The module, loading it if it is not there yet. Callers while it loads share
|
|
28
|
+
* one load, so their callbacks run in call order. A failed load is not kept:
|
|
29
|
+
* the next call runs `import()` again.
|
|
30
|
+
*/
|
|
31
|
+
export declare function loadLazy<M>(lazy: LazyModule<M>): Promise<M>;
|
|
32
|
+
//# sourceMappingURL=lazyModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazyModule.d.ts","sourceRoot":"","sources":["../../client/lazyModule.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,CAGxD;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACnC,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAY3D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type WithMutationErrorHelpers } from "./MutationError";
|
|
2
|
+
/**
|
|
3
|
+
* Puts `list` and `field` on an error the hooks hand over, as non-enumerable
|
|
4
|
+
* properties, so `toEqual`, a spread and `JSON.stringify` see the same object
|
|
5
|
+
* as before. A key the error already has is left alone; a primitive or a
|
|
6
|
+
* frozen value is returned as it is.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export declare function withMutationErrorHelpers<T>(error: T): WithMutationErrorHelpers<T>;
|
|
11
|
+
//# sourceMappingURL=mutationErrorHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutationErrorHelpers.d.ts","sourceRoot":"","sources":["../../client/mutationErrorHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,wBAAwB,EAC9B,MAAM,iBAAiB,CAAC;AA6DzB;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAkBjF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutationExtras.d.ts","sourceRoot":"","sources":["../../client/mutationExtras.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type LazyModule } from "./lazyModule";
|
|
2
|
+
/**
|
|
3
|
+
* `./mutationExtras`, which a page only needs once it mutates: loaded when the
|
|
4
|
+
* first mutation hook, or `useSetQueryData()`, mounts (#915), so no route's
|
|
5
|
+
* entry chunk carries it. By the time a request settles it is normally there;
|
|
6
|
+
* one that settles first waits for it.
|
|
7
|
+
*
|
|
8
|
+
* Keep this module out of `gemi/testing`'s imports. Shared with that entry, it
|
|
9
|
+
* moves into the chunk both entries import, and there an app's bundler can
|
|
10
|
+
* emit `./mutationExtras` even for an app that never mutates, which splits the
|
|
11
|
+
* app's entry chunk ("needs no chunk besides the entry to start" in
|
|
12
|
+
* `packaging.test.ts`).
|
|
13
|
+
*/
|
|
14
|
+
export declare const mutationExtras: LazyModule<typeof import("./mutationExtras")>;
|
|
15
|
+
/** Starts loading `./mutationExtras`: the hooks' mount effect. */
|
|
16
|
+
export declare function preloadMutationExtras(): void;
|
|
17
|
+
//# sourceMappingURL=mutationModules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutationModules.d.ts","sourceRoot":"","sources":["../../client/mutationModules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,EAAE,UAAU,CAAC,cAAc,kBAAkB,CAAC,CAGxE,CAAC;AAEF,kEAAkE;AAClE,wBAAgB,qBAAqB,SAEpC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { QueryResource } from "./QueryResource";
|
|
2
|
+
import type { QueryTarget, QueryUpdate } from "./useSetQueryData";
|
|
3
|
+
type Resolve = (key: string) => QueryResource;
|
|
4
|
+
/** The value to write, or a function of the cached one. */
|
|
5
|
+
export type WriteQueryNext = {
|
|
6
|
+
value: unknown;
|
|
7
|
+
} | {
|
|
8
|
+
update: (current: any) => unknown;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Write into every variant `target` names. `next` is the value to write, or
|
|
12
|
+
* a function of the cached value; a function skips a variant with nothing
|
|
13
|
+
* cached. A value seeds a single variant that is not cached yet; a predicate
|
|
14
|
+
* only ever reaches variants that are.
|
|
15
|
+
*/
|
|
16
|
+
export declare function writeQueryData(getResource: Resolve, routeParams: Record<string, any>, target: QueryTarget<any>, next: WriteQueryNext): void;
|
|
17
|
+
/**
|
|
18
|
+
* Write a mutation's `updates` with its answer.
|
|
19
|
+
*/
|
|
20
|
+
export declare function applyQueryUpdates(getResource: Resolve, routeParams: Record<string, any>, updates: ReadonlyArray<QueryUpdate<any>> | undefined, answer: unknown): void;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=queryUpdates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryUpdates.d.ts","sourceRoot":"","sources":["../../client/queryUpdates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQlE,KAAK,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,aAAa,CAAC;AAmB9C,2DAA2D;AAC3D,MAAM,MAAM,cAAc,GAAG;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAA;CAAE,CAAC;AAExF;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,OAAO,EACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,EACxB,IAAI,EAAE,cAAc,QAsBrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,OAAO,EACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,EACpD,MAAM,EAAE,OAAO,QAWhB"}
|
|
@@ -149,5 +149,10 @@ export declare class RealtimeClient implements RealtimeSocket {
|
|
|
149
149
|
}
|
|
150
150
|
/** Full jitter, 1 to 30 s: `max(1 s, random × min(30 s, 1 s × 2^attempt))`. */
|
|
151
151
|
export declare function backoffDelay(attempt: number, random: number): number;
|
|
152
|
+
/**
|
|
153
|
+
* The tab's client, created on first use with the options `configureRealtime`
|
|
154
|
+
* set. `loadRealtimeClient` in `./loader` calls it once this module is loaded.
|
|
155
|
+
*/
|
|
156
|
+
export declare function tabClient(): RealtimeClient;
|
|
152
157
|
export {};
|
|
153
158
|
//# sourceMappingURL=RealtimeClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealtimeClient.d.ts","sourceRoot":"","sources":["../../../client/realtime/RealtimeClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,UAAU,EAEhB,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"RealtimeClient.d.ts","sourceRoot":"","sources":["../../../client/realtime/RealtimeClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ChannelParamValues } from "./RealtimeClient";
|
|
2
|
+
/** `pattern` and its params, canonical: two hooks on one channel share a `sub`. */
|
|
3
|
+
export declare function channelKey(pattern: string, params: ChannelParamValues): string;
|
|
4
|
+
//# sourceMappingURL=channelKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channelKey.d.ts","sourceRoot":"","sources":["../../../client/realtime/channelKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAM3D,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAK9E"}
|
|
@@ -22,4 +22,10 @@ export declare function resolveLiveChannel(live: LiveChannel | null | undefined
|
|
|
22
22
|
* the channel is open, which pauses the query's polling.
|
|
23
23
|
*/
|
|
24
24
|
export declare function subscribeLive(socket: RealtimeSocket, live: LiveChannel, resource: () => QueryResource, setOpen: (open: boolean) => void): () => void;
|
|
25
|
+
/**
|
|
26
|
+
* What `followLive` in `./loader` hands over to once this module is loaded:
|
|
27
|
+
* subscribes on the provided socket, or the tab's client, loading that first
|
|
28
|
+
* when it is not there yet. Returns the function that stops it.
|
|
29
|
+
*/
|
|
30
|
+
export declare function followLive(provided: RealtimeSocket | null, live: LiveChannel, resource: () => QueryResource, setOpen: (open: boolean) => void): () => void;
|
|
25
31
|
//# sourceMappingURL=live.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAI3E;;;;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;AAED;;;;GAIG;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,CAmBZ"}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
import { type LazyModule } from "../lazyModule";
|
|
1
2
|
import type { QueryResource } from "../QueryResource";
|
|
2
3
|
import type { LiveChannel } from "./live";
|
|
3
|
-
import type {
|
|
4
|
-
/**
|
|
5
|
-
|
|
4
|
+
import type { RealtimeClient, RealtimeOptions, RealtimeSocket } from "./RealtimeClient";
|
|
5
|
+
/**
|
|
6
|
+
* The tab's client, once loaded and created (`tabClient` in
|
|
7
|
+
* `./RealtimeClient` creates it), and the options it is created with.
|
|
8
|
+
*/
|
|
9
|
+
export declare const realtime: {
|
|
10
|
+
client: RealtimeClient | null;
|
|
11
|
+
options: RealtimeOptions;
|
|
12
|
+
};
|
|
6
13
|
/**
|
|
7
14
|
* Sets the socket options (`init({ realtime })` calls it). Takes effect on
|
|
8
15
|
* the next connection.
|
|
@@ -10,18 +17,16 @@ export declare function channelKey(pattern: string, params: ChannelParamValues):
|
|
|
10
17
|
export declare function configureRealtime(options?: RealtimeOptions): void;
|
|
11
18
|
/** The tab's client if it is already loaded, else `null`. Never loads it. */
|
|
12
19
|
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. */
|
|
20
|
+
/** The lazily loaded client. Replaceable in tests, to simulate a failed load. */
|
|
21
21
|
export declare const lazyModules: {
|
|
22
22
|
client: () => Promise<typeof import("./RealtimeClient")>;
|
|
23
|
-
live: () => Promise<typeof import("./live")>;
|
|
24
23
|
};
|
|
24
|
+
/**
|
|
25
|
+
* `./live`, loaded by the first live query. `<Page>` in `gemi/testing` sets
|
|
26
|
+
* `current` up front, so a live query on a provided socket subscribes during
|
|
27
|
+
* its effect, as it did before the module was split out.
|
|
28
|
+
*/
|
|
29
|
+
export declare const liveModule: LazyModule<Pick<typeof import("./live"), "followLive">>;
|
|
25
30
|
/**
|
|
26
31
|
* The tab's client, loading its module and creating it on first use. `null`
|
|
27
32
|
* on the server. A failed load (a chunk gone after a deploy, the network) is
|
|
@@ -30,18 +35,11 @@ export declare const lazyModules: {
|
|
|
30
35
|
* reload.
|
|
31
36
|
*/
|
|
32
37
|
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
38
|
/**
|
|
41
39
|
* Follows `useQuery`'s `live` channel until the returned function is called.
|
|
42
|
-
* `./live`
|
|
43
|
-
*
|
|
44
|
-
*
|
|
40
|
+
* `./live` loads on first use and does the rest, loading the socket client
|
|
41
|
+
* in turn, so `useQuery` carries only this. `setOpen` reports `false` until
|
|
42
|
+
* the channel is open.
|
|
45
43
|
*/
|
|
46
44
|
export declare function followLive(provided: RealtimeSocket | null, live: LiveChannel, resource: () => QueryResource, setOpen: (open: boolean) => void): () => void;
|
|
47
45
|
/**
|
|
@@ -55,5 +53,4 @@ export declare function reconnectRealtime(): void;
|
|
|
55
53
|
* loads or creates the client.
|
|
56
54
|
*/
|
|
57
55
|
export declare function currentSocketId(): string | null;
|
|
58
|
-
export {};
|
|
59
56
|
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../client/realtime/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAYxF;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE;IAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAG/E,CAAC;AAEF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,eAAoB,QAG9D;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,IAAI,cAAc,GAAG,IAAI,CAE5D;AAID,iFAAiF;AACjF,eAAO,MAAM,WAAW;;CAEvB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,EAAE,YAAY,CAAC,CAG9E,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAWnE;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,CAcZ;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,SAEhC;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C"}
|
|
@@ -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,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,
|
|
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,CAqDd;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"}
|
|
@@ -3,7 +3,7 @@ import type { ApiRouterHandler } from "../http/ApiRouter";
|
|
|
3
3
|
import type { UnwrapPromise } from "../utils/type";
|
|
4
4
|
import type { UrlParser } from "./types";
|
|
5
5
|
import { type MutationError, type WithMutationErrorHelpers } from "./MutationError";
|
|
6
|
-
import {
|
|
6
|
+
import type { QueryUpdate } from "./useSetQueryData";
|
|
7
7
|
type Methods = {
|
|
8
8
|
POST: {
|
|
9
9
|
[K in keyof RPC as K extends `POST:${infer P}` ? P : never]: RPC[K];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMutation.d.ts","sourceRoot":"","sources":["../../client/useMutation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC9B,MAAM,iBAAiB,CAAC;AAIzB,OAAO,
|
|
1
|
+
{"version":3,"file":"useMutation.d.ts","sourceRoot":"","sources":["../../client/useMutation.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@ import type { ApiRouterHandler } from "../http/ApiRouter";
|
|
|
2
2
|
import type { NestedPrettify, UnwrapPromise } from "../utils/type";
|
|
3
3
|
import type { RPC } from "./rpc";
|
|
4
4
|
import type { UrlParser } from "./types";
|
|
5
|
-
import type { QueryResource } from "./QueryResource";
|
|
6
5
|
type GetRPC = {
|
|
7
6
|
[K in keyof RPC as K extends `GET:${infer P}` ? P : never]: RPC[K];
|
|
8
7
|
};
|
|
@@ -33,22 +32,6 @@ export type QueryUpdate<T> = {
|
|
|
33
32
|
data: (answer: T, current: QueryData<P>) => QueryData<P>;
|
|
34
33
|
});
|
|
35
34
|
}[keyof GetRPC];
|
|
36
|
-
type Resolve = (key: string) => QueryResource;
|
|
37
|
-
/**
|
|
38
|
-
* Write into every variant `target` names. `next` is the value to write, or
|
|
39
|
-
* a function of the cached value; a function skips a variant with nothing
|
|
40
|
-
* cached. A value seeds a single variant that is not cached yet; a predicate
|
|
41
|
-
* only ever reaches variants that are.
|
|
42
|
-
*/
|
|
43
|
-
export declare function writeQueryData(getResource: Resolve, routeParams: Record<string, any>, target: QueryTarget<any>, next: {
|
|
44
|
-
value: unknown;
|
|
45
|
-
} | {
|
|
46
|
-
update: (current: any) => unknown;
|
|
47
|
-
}): void;
|
|
48
|
-
/**
|
|
49
|
-
* Write a mutation's `updates` with its answer.
|
|
50
|
-
*/
|
|
51
|
-
export declare function applyQueryUpdates(getResource: Resolve, routeParams: Record<string, any>, updates: ReadonlyArray<QueryUpdate<any>> | undefined, answer: unknown): void;
|
|
52
35
|
/**
|
|
53
36
|
* Returns a function that writes into any query's cache by path, with no
|
|
54
37
|
* refetch: for data the server already answered with. `useMutate` is the
|
|
@@ -63,6 +46,10 @@ export declare function applyQueryUpdates(getResource: Resolve, routeParams: Rec
|
|
|
63
46
|
* A value replaces the variant's data, and seeds it when nothing is cached
|
|
64
47
|
* yet. A function updates what is cached and skips a variant with nothing
|
|
65
48
|
* cached. A predicate `search` reaches every cached variant it accepts.
|
|
49
|
+
*
|
|
50
|
+
* The code behind the writes is loaded when the hook mounts. A call made
|
|
51
|
+
* before it has arrived (during the first render, say) is written once it
|
|
52
|
+
* has, in order.
|
|
66
53
|
*/
|
|
67
54
|
export declare function useSetQueryData(): <P extends keyof GetRPC>(target: QueryTarget<P>, next: QueryData<P> | ((current: QueryData<P>) => QueryData<P>)) => void;
|
|
68
55
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSetQueryData.d.ts","sourceRoot":"","sources":["../../client/useSetQueryData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"useSetQueryData.d.ts","sourceRoot":"","sources":["../../client/useSetQueryData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAOzC,KAAK,MAAM,GAAG;KACX,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,OAAO,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;CACnE,CAAC;AAEF,gDAAgD;AAChD,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,MAAM,IAAI,cAAc,CACrD,MAAM,CAAC,CAAC,CAAC,SAAS,gBAAgB,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CACvF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,MAAM,IAAI;IAChD,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC;CACvE,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GACjC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GACvB;QAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAA;KAAE,GAC7D;QAAE,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;CACpE,CAAC,MAAM,MAAM,CAAC,CAAC;AAEhB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,KAOL,CAAC,SAAS,MAAM,MAAM,UAClC,WAAW,CAAC,CAAC,CAAC,QAChB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAmBnE"}
|
package/dist/server/index.js
CHANGED
|
@@ -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-
|
|
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-13agap7z.js");this.server=await J(this.app,I)}else{f();let{httpDev:J}=await import("../chunk-7ynnce4b.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
|
package/dist/testing/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
import { A as ServerDataContext, F as ProgressManager, I as Action, K as toVariantKey, L as createMemoryHistory, R as RealtimeContext,
|
|
1
|
+
import { t as followLive } from "../chunks/live-CUdMhXHL.js";
|
|
2
|
+
import { A as ServerDataContext, F as ProgressManager, I as Action, K as toVariantKey, L as createMemoryHistory, R as RealtimeContext, V as liveModule, X as QueryManagerProvider, Y as QueryManagerContext, at as Subject, c as ClientRouterContext, i as RouteTransitionProvider, k as I18nProvider, q as applyParams, r as m, t as ThemeProvider } from "../chunks/ThemeProvider-gWqXjGh-.js";
|
|
3
3
|
import { r as RouteStateProvider } from "../chunks/useParams-BN3XXfmG.js";
|
|
4
|
+
import { t as channelKey } from "../chunks/channelKey-CIhHpX6x.js";
|
|
4
5
|
import { Suspense, createElement, useContext, useMemo, useRef, useState } from "react";
|
|
5
6
|
import { jsx } from "react/jsx-runtime";
|
|
6
7
|
import { hydrateRoot } from "react-dom/client";
|
|
@@ -167,7 +168,7 @@ function fakeSocket() {
|
|
|
167
168
|
}
|
|
168
169
|
//#endregion
|
|
169
170
|
//#region testing/Page.tsx
|
|
170
|
-
|
|
171
|
+
liveModule.current = { followLive };
|
|
171
172
|
/** `"?a=b"` (or `""`) from any of the shapes `searchParams` accepts. */
|
|
172
173
|
function toSearchString(search) {
|
|
173
174
|
if (!search) return "";
|