@rindle/react 0.2.0 → 0.4.2
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/index.d.ts +57 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +131 -13
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +166 -12
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
|
-
import
|
|
2
|
+
import { Store } from "@rindle/client";
|
|
3
|
+
import type { AnyQuery, ColsMap, DehydratedState, Fragment, FragmentData, FragmentRef, NamedQuery, QueryLocalData, ResultType, Schema } from "@rindle/client";
|
|
3
4
|
type AnyFragment = Fragment<any, any, any, any>;
|
|
4
5
|
export type QueryData<Q extends AnyQuery> = ReturnType<Q["materialize"]>["data"];
|
|
5
6
|
export type RootData<Q extends AnyQuery> = QueryLocalData<Q>;
|
|
@@ -24,6 +25,9 @@ interface SyncLease {
|
|
|
24
25
|
id: number;
|
|
25
26
|
coverageKey: string;
|
|
26
27
|
}
|
|
28
|
+
interface QueryCacheOptions {
|
|
29
|
+
releaseDelayMs?: number;
|
|
30
|
+
}
|
|
27
31
|
declare class RindleContextValue {
|
|
28
32
|
readonly store: Store<ColsMap>;
|
|
29
33
|
readonly cache: QueryCache;
|
|
@@ -33,6 +37,38 @@ declare class RindleContextValue {
|
|
|
33
37
|
export declare function Rindle<S extends ColsMap>({ store, children }: RindleProps<S>): import("react").FunctionComponentElement<import("react").ProviderProps<RindleContextValue | null>>;
|
|
34
38
|
export declare const RindleProvider: typeof Rindle;
|
|
35
39
|
export declare function useRindleStore<S extends ColsMap = ColsMap>(): Store<S>;
|
|
40
|
+
export interface RindleSSRProps<S extends ColsMap = ColsMap> {
|
|
41
|
+
/** The app schema — used to build the transport-less seed {@link Store} that backs the server
|
|
42
|
+
* render and the matching client hydration pass. */
|
|
43
|
+
schema: Schema<S>;
|
|
44
|
+
/** The dehydrated first-paint cache from the route loader (`ServerStore.dehydrate()`), embedded in
|
|
45
|
+
* the HTML. Read on BOTH the server render and the client's first (hydration) render. */
|
|
46
|
+
ssrState: DehydratedState;
|
|
47
|
+
/** Boots the live (wasm-backed) client in the BROWSER — the app's `bootClient`. Called once, after
|
|
48
|
+
* hydration, and must resolve to the live optimistic store. Never invoked during the server
|
|
49
|
+
* render (SSR seeds are a first-paint concern only). */
|
|
50
|
+
boot: () => Promise<{
|
|
51
|
+
store: Store<S>;
|
|
52
|
+
}>;
|
|
53
|
+
children?: ReactNode;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The SSR→SPA store handoff (SSR-DESIGN.md §6.1). Renders `<Rindle>` with a store that swaps from a
|
|
57
|
+
* transport-less SSR seed to the live engine WITHOUT changing a single `useQuery` caller — bind the
|
|
58
|
+
* app's `schema` + `bootClient` and drop it in above the tree:
|
|
59
|
+
*
|
|
60
|
+
* - Server render + browser HYDRATION: a seed {@link Store} over a {@link OneShotBackend}, hydrated
|
|
61
|
+
* from `ssrState`. `useQuery` reads its seed via `getServerSnapshot`, so the server and the
|
|
62
|
+
* client's first render produce identical markup with NO engine on either side — first paint is
|
|
63
|
+
* the server-rendered data, never a "Starting…" splash that would break hydration.
|
|
64
|
+
* - After hydration: `boot()` starts the wasm IVM engine (browser only), its views are seeded from
|
|
65
|
+
* the SAME snapshot (so the swap shows the SSR rows with no flash), and the live `subscribe`
|
|
66
|
+
* reconciles — the page is now a live SPA.
|
|
67
|
+
*
|
|
68
|
+
* Framework-agnostic of the app: everything but `schema`/`boot`/`ssrState` is owned here (previously
|
|
69
|
+
* hand-rolled per app as `src/RindleApp.tsx`).
|
|
70
|
+
*/
|
|
71
|
+
export declare function RindleSSR<S extends ColsMap>({ schema, ssrState, boot, children }: RindleSSRProps<S>): import("react").FunctionComponentElement<RindleProps<S>>;
|
|
36
72
|
export declare function useQuery<Q extends AnyQuery>(query: Q): QueryData<Q>;
|
|
37
73
|
/** The SERVER-CHANNEL state of a query's view (`@rindle/client` {@link ResultType}): `unknown` while
|
|
38
74
|
* it loads (not yet server-authoritative), `complete` once the server has answered. A pending
|
|
@@ -67,23 +103,39 @@ export declare function useRoot<Args, Ctx extends readonly unknown[], Q extends
|
|
|
67
103
|
* lease retained while mounted. Passing a legacy projected data object is unsupported.
|
|
68
104
|
*/
|
|
69
105
|
export declare function useFragment<F extends Fragment<any, any, any, any>>(fragment: F, ref: FragmentRef<F> | null | undefined): FragmentData<F> | null;
|
|
106
|
+
/**
|
|
107
|
+
* Render-prop sugar over {@link useFragment}: does the `null` check once. `from` is a fragment ref
|
|
108
|
+
* (or null/undefined — an absent to-one relationship, an emptied `.one()`, or a row deleted out from
|
|
109
|
+
* under a live read); when the row is present `children(data)` renders, otherwise `fallback` (default
|
|
110
|
+
* nothing). Keeps the per-row subscription isolation — a child-only edit re-renders just this read.
|
|
111
|
+
*/
|
|
112
|
+
export declare function Frag<F extends AnyFragment>({ of, from, fallback, children }: {
|
|
113
|
+
of: F;
|
|
114
|
+
from: FragmentRef<F> | null | undefined;
|
|
115
|
+
fallback?: ReactNode;
|
|
116
|
+
children: (data: FragmentData<F>) => ReactNode;
|
|
117
|
+
}): ReactNode;
|
|
70
118
|
export declare class SyncQueryCache {
|
|
71
119
|
private readonly entries;
|
|
72
120
|
private nextLeaseId;
|
|
73
121
|
private readonly store;
|
|
74
|
-
|
|
122
|
+
private readonly releaseDelayMs;
|
|
123
|
+
constructor(store: Store<ColsMap>, opts?: QueryCacheOptions);
|
|
75
124
|
retain(coverageKey: string, query: AnyQuery): SyncLease;
|
|
76
125
|
release(lease: SyncLease): void;
|
|
77
126
|
subscribe(coverageKey: string, listener: () => void): () => void;
|
|
78
127
|
resultType(coverageKey: string): ResultType;
|
|
79
128
|
size(): number;
|
|
80
129
|
private createHandle;
|
|
130
|
+
private scheduleRelease;
|
|
131
|
+
private finalizeRelease;
|
|
81
132
|
}
|
|
82
133
|
export declare class QueryCache {
|
|
83
134
|
private readonly entries;
|
|
84
135
|
private nextLeaseId;
|
|
85
136
|
private readonly store;
|
|
86
|
-
|
|
137
|
+
private readonly releaseDelayMs;
|
|
138
|
+
constructor(store: Store<ColsMap>, opts?: QueryCacheOptions);
|
|
87
139
|
retain<Q extends AnyQuery>(viewKey: string, query: Q): QueryLease;
|
|
88
140
|
release(lease: QueryLease): void;
|
|
89
141
|
subscribe(viewKey: string, listener: () => void): () => void;
|
|
@@ -104,6 +156,8 @@ export declare class QueryCache {
|
|
|
104
156
|
private createMaterializedLease;
|
|
105
157
|
private chooseCanonical;
|
|
106
158
|
private setCanonical;
|
|
159
|
+
private scheduleSplitRelease;
|
|
160
|
+
private finalizeSplitRelease;
|
|
107
161
|
}
|
|
108
162
|
export declare function queryCacheKey(query: AnyQuery): string;
|
|
109
163
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAWL,KAAK,EAEN,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,QAAQ,EAGR,OAAO,EACP,eAAe,EACf,QAAQ,EACR,YAAY,EAEZ,WAAW,EAGX,UAAU,EACV,cAAc,EACd,UAAU,EACV,MAAM,EACP,MAAM,gBAAgB,CAAC;AAGxB,KAAK,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAGhD,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACjF,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,QAAQ,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;AAC7D,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAChF,SAAS,CAAC,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAC9F,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AACD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAChG,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAClF,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAE3D,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO;IACtD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAQD,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACrB;AA0CD,UAAU,iBAAiB;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAQD,cAAM,kBAAkB;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;gBAEvB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;CAKlC;AAID,wBAAgB,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,sGAG5E;AAED,eAAO,MAAM,cAAc,eAAS,CAAC;AAErC,wBAAgB,cAAc,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAEtE;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO;IACzD;yDACqD;IACrD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAClB;8FAC0F;IAC1F,QAAQ,EAAE,eAAe,CAAC;IAC1B;;6DAEyD;IACzD,IAAI,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,4DAgCnG;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAgCnE;AAED;;;;;0BAK0B;AAC1B,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,CA2B1D;AAED;;yEAEyE;AACzE,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,CA6BxD;AAED;;gFAEgF;AAChF,wBAAgB,OAAO,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACrE,wBAAgB,OAAO,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,WAAW,EAC/D,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,GACV,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,wBAAgB,OAAO,CAAC,CAAC,SAAS,QAAQ,EACxC,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,GAC7B,UAAU,CAAC,CAAC,CAAC,CAAC;AACjB,wBAAgB,OAAO,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,WAAW,EAC/D,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAC9B,QAAQ,EAAE,CAAC,GACV,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvB,wBAAgB,OAAO,CAAC,IAAI,EAAE,GAAG,SAAS,SAAS,OAAO,EAAE,EAAE,CAAC,SAAS,QAAQ,EAC9E,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAC/B,IAAI,EAAE,IAAI,EACV,GAAG,GAAG,EAAE,GAAG,GACV,UAAU,CAAC,CAAC,CAAC,CAAC;AACjB,wBAAgB,OAAO,CAAC,IAAI,EAAE,GAAG,SAAS,SAAS,OAAO,EAAE,EAAE,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,WAAW,EACrG,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAC/B,IAAI,EAAE,IAAI,EACV,GAAG,cAAc,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,GAC5C,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAmJvB;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAChE,QAAQ,EAAE,CAAC,EACX,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GACrC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAExB;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,WAAW,EACxC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAe,EAAE,QAAQ,EAAE,EAAE;IACvC,EAAE,EAAE,CAAC,CAAC;IACN,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;CAChD,GACA,SAAS,CAGX;AA4SD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAE5B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,GAAE,iBAAsB;IAK/D,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,SAAS;IAwBvD,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAU/B,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAUhE,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU;IAI3C,IAAI,IAAI,MAAM;IAId,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;CAOxB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAE5B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,GAAE,iBAAsB;IAK/D,MAAM,CAAC,CAAC,SAAS,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,UAAU;IAqBjE,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAkChC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAU5D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO;IAMhD,gGAAgG;IAChG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAMvC;;8DAE0D;IAC1D,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO;IAMtD;0BACsB;IACtB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAI7C,IAAI,IAAI,MAAM;IAId,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,oBAAoB;CAU7B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAErD"}
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
import { createContext, createElement, useCallback, useContext, useMemo, useRef, useSyncExternalStore, } from "react";
|
|
2
|
-
import { createLocalFragmentRefForTable, fragmentAst, isFragment, isFragmentRelationship, localQueryReadAst, localFragmentReadAst, localRootFragmentRefsAst, queryFromAst, stableKey, tableMeta, } from "@rindle/client";
|
|
1
|
+
import { createContext, createElement, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore, } from "react";
|
|
2
|
+
import { createLocalFragmentRefForTable, fragmentAst, isFragment, isFragmentRelationship, localQueryReadAst, localFragmentReadAst, localRootFragmentRefsAst, OneShotBackend, queryFromAst, stableKey, Store, tableMeta, } from "@rindle/client";
|
|
3
3
|
export { fragmentKey } from "@rindle/client";
|
|
4
4
|
const EMPTY_ARRAY = Object.freeze([]);
|
|
5
|
+
// Keep just-released coverage alive briefly so a changed filter/limit can re-materialize from the
|
|
6
|
+
// local base synchronously while the replacement server lease is still streaming its first answer.
|
|
7
|
+
const REACT_CACHE_RELEASE_DELAY_MS = 2_000;
|
|
8
|
+
function setReleaseTimeout(fn, ms) {
|
|
9
|
+
const timer = setTimeout(fn, ms);
|
|
10
|
+
timer.unref?.();
|
|
11
|
+
return timer;
|
|
12
|
+
}
|
|
5
13
|
class RindleContextValue {
|
|
6
14
|
store;
|
|
7
15
|
cache;
|
|
8
16
|
syncCache;
|
|
9
17
|
constructor(store) {
|
|
10
18
|
this.store = store;
|
|
11
|
-
this.cache = new QueryCache(store);
|
|
12
|
-
this.syncCache = new SyncQueryCache(store);
|
|
19
|
+
this.cache = new QueryCache(store, { releaseDelayMs: REACT_CACHE_RELEASE_DELAY_MS });
|
|
20
|
+
this.syncCache = new SyncQueryCache(store, { releaseDelayMs: REACT_CACHE_RELEASE_DELAY_MS });
|
|
13
21
|
}
|
|
14
22
|
}
|
|
15
23
|
const RindleContext = createContext(null);
|
|
@@ -21,6 +29,54 @@ export const RindleProvider = Rindle;
|
|
|
21
29
|
export function useRindleStore() {
|
|
22
30
|
return useRindleContext().store;
|
|
23
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* The SSR→SPA store handoff (SSR-DESIGN.md §6.1). Renders `<Rindle>` with a store that swaps from a
|
|
34
|
+
* transport-less SSR seed to the live engine WITHOUT changing a single `useQuery` caller — bind the
|
|
35
|
+
* app's `schema` + `bootClient` and drop it in above the tree:
|
|
36
|
+
*
|
|
37
|
+
* - Server render + browser HYDRATION: a seed {@link Store} over a {@link OneShotBackend}, hydrated
|
|
38
|
+
* from `ssrState`. `useQuery` reads its seed via `getServerSnapshot`, so the server and the
|
|
39
|
+
* client's first render produce identical markup with NO engine on either side — first paint is
|
|
40
|
+
* the server-rendered data, never a "Starting…" splash that would break hydration.
|
|
41
|
+
* - After hydration: `boot()` starts the wasm IVM engine (browser only), its views are seeded from
|
|
42
|
+
* the SAME snapshot (so the swap shows the SSR rows with no flash), and the live `subscribe`
|
|
43
|
+
* reconciles — the page is now a live SPA.
|
|
44
|
+
*
|
|
45
|
+
* Framework-agnostic of the app: everything but `schema`/`boot`/`ssrState` is owned here (previously
|
|
46
|
+
* hand-rolled per app as `src/RindleApp.tsx`).
|
|
47
|
+
*/
|
|
48
|
+
export function RindleSSR({ schema, ssrState, boot, children }) {
|
|
49
|
+
// Built ONCE from the first-render snapshot (SSR seeds are an initial-load concern only — after
|
|
50
|
+
// hydration the live store owns every read). Backs the server render AND the matching client
|
|
51
|
+
// hydration pass — same seeds in, same markup out.
|
|
52
|
+
const [seedStore] = useState(() => {
|
|
53
|
+
const store = new Store(schema, new OneShotBackend());
|
|
54
|
+
store.hydrate(ssrState);
|
|
55
|
+
return store;
|
|
56
|
+
});
|
|
57
|
+
// The live wasm store — booted only in the browser, only after hydration.
|
|
58
|
+
const [liveStore, setLiveStore] = useState(null);
|
|
59
|
+
// Pin `ssrState`/`boot` through refs so the boot effect runs EXACTLY once (empty deps) yet always
|
|
60
|
+
// sees the latest values — a caller may pass an inline `boot`, which as a dep would re-boot the
|
|
61
|
+
// client every render.
|
|
62
|
+
const ssrStateRef = useRef(ssrState);
|
|
63
|
+
ssrStateRef.current = ssrState;
|
|
64
|
+
const bootRef = useRef(boot);
|
|
65
|
+
bootRef.current = boot;
|
|
66
|
+
useEffect(() => {
|
|
67
|
+
let alive = true;
|
|
68
|
+
void bootRef.current().then((app) => {
|
|
69
|
+
if (!alive)
|
|
70
|
+
return;
|
|
71
|
+
app.store.hydrate(ssrStateRef.current); // seed the live views so the swap doesn't flash empty
|
|
72
|
+
setLiveStore(app.store);
|
|
73
|
+
});
|
|
74
|
+
return () => {
|
|
75
|
+
alive = false;
|
|
76
|
+
};
|
|
77
|
+
}, []);
|
|
78
|
+
return createElement((Rindle), { store: liveStore ?? seedStore }, children);
|
|
79
|
+
}
|
|
24
80
|
export function useQuery(query) {
|
|
25
81
|
const ctx = useRindleContext();
|
|
26
82
|
const descriptor = useMemo(() => describeQuery(query), [query]);
|
|
@@ -197,6 +253,16 @@ function useRootRefData(query, fragment) {
|
|
|
197
253
|
export function useFragment(fragment, ref) {
|
|
198
254
|
return useLocalFragment(fragment, ref);
|
|
199
255
|
}
|
|
256
|
+
/**
|
|
257
|
+
* Render-prop sugar over {@link useFragment}: does the `null` check once. `from` is a fragment ref
|
|
258
|
+
* (or null/undefined — an absent to-one relationship, an emptied `.one()`, or a row deleted out from
|
|
259
|
+
* under a live read); when the row is present `children(data)` renders, otherwise `fallback` (default
|
|
260
|
+
* nothing). Keeps the per-row subscription isolation — a child-only edit re-renders just this read.
|
|
261
|
+
*/
|
|
262
|
+
export function Frag({ of, from, fallback = null, children }) {
|
|
263
|
+
const data = useFragment(of, from);
|
|
264
|
+
return data == null ? fallback : children(data);
|
|
265
|
+
}
|
|
200
266
|
function useLocalFragment(fragment, ref) {
|
|
201
267
|
const ctx = useRindleContext();
|
|
202
268
|
const coverage = ref?.coverage;
|
|
@@ -445,8 +511,10 @@ export class SyncQueryCache {
|
|
|
445
511
|
entries = new Map();
|
|
446
512
|
nextLeaseId = 1;
|
|
447
513
|
store;
|
|
448
|
-
|
|
514
|
+
releaseDelayMs;
|
|
515
|
+
constructor(store, opts = {}) {
|
|
449
516
|
this.store = store;
|
|
517
|
+
this.releaseDelayMs = opts.releaseDelayMs ?? 0;
|
|
450
518
|
}
|
|
451
519
|
retain(coverageKey, query) {
|
|
452
520
|
let entry = this.entries.get(coverageKey);
|
|
@@ -457,6 +525,7 @@ export class SyncQueryCache {
|
|
|
457
525
|
leases: [],
|
|
458
526
|
listeners: new Set(),
|
|
459
527
|
unsubscribe: () => { },
|
|
528
|
+
releaseTimer: undefined,
|
|
460
529
|
};
|
|
461
530
|
entry.unsubscribe = handle.subscribe(() => {
|
|
462
531
|
for (const listener of entry.listeners)
|
|
@@ -464,6 +533,10 @@ export class SyncQueryCache {
|
|
|
464
533
|
});
|
|
465
534
|
this.entries.set(coverageKey, entry);
|
|
466
535
|
}
|
|
536
|
+
else if (entry.releaseTimer !== undefined) {
|
|
537
|
+
clearTimeout(entry.releaseTimer);
|
|
538
|
+
entry.releaseTimer = undefined;
|
|
539
|
+
}
|
|
467
540
|
const lease = { id: this.nextLeaseId++, coverageKey };
|
|
468
541
|
entry.leases.push(lease);
|
|
469
542
|
return lease;
|
|
@@ -478,15 +551,14 @@ export class SyncQueryCache {
|
|
|
478
551
|
entry.leases.splice(index, 1);
|
|
479
552
|
if (entry.leases.length > 0)
|
|
480
553
|
return;
|
|
481
|
-
|
|
482
|
-
entry.handle.release();
|
|
483
|
-
this.entries.delete(lease.coverageKey);
|
|
554
|
+
this.scheduleRelease(lease.coverageKey, entry);
|
|
484
555
|
}
|
|
485
556
|
subscribe(coverageKey, listener) {
|
|
486
557
|
const entry = this.entries.get(coverageKey);
|
|
487
558
|
if (!entry)
|
|
488
559
|
return () => { };
|
|
489
560
|
entry.listeners.add(listener);
|
|
561
|
+
listener();
|
|
490
562
|
return () => {
|
|
491
563
|
entry.listeners.delete(listener);
|
|
492
564
|
};
|
|
@@ -509,13 +581,30 @@ export class SyncQueryCache {
|
|
|
509
581
|
release: () => view.destroy(),
|
|
510
582
|
};
|
|
511
583
|
}
|
|
584
|
+
scheduleRelease(coverageKey, entry) {
|
|
585
|
+
if (this.releaseDelayMs <= 0) {
|
|
586
|
+
this.finalizeRelease(coverageKey, entry);
|
|
587
|
+
return;
|
|
588
|
+
}
|
|
589
|
+
entry.releaseTimer = setReleaseTimeout(() => this.finalizeRelease(coverageKey, entry), this.releaseDelayMs);
|
|
590
|
+
}
|
|
591
|
+
finalizeRelease(coverageKey, entry) {
|
|
592
|
+
if (this.entries.get(coverageKey) !== entry || entry.leases.length > 0)
|
|
593
|
+
return;
|
|
594
|
+
entry.releaseTimer = undefined;
|
|
595
|
+
entry.unsubscribe();
|
|
596
|
+
entry.handle.release();
|
|
597
|
+
this.entries.delete(coverageKey);
|
|
598
|
+
}
|
|
512
599
|
}
|
|
513
600
|
export class QueryCache {
|
|
514
601
|
entries = new Map();
|
|
515
602
|
nextLeaseId = 1;
|
|
516
603
|
store;
|
|
517
|
-
|
|
604
|
+
releaseDelayMs;
|
|
605
|
+
constructor(store, opts = {}) {
|
|
518
606
|
this.store = store;
|
|
607
|
+
this.releaseDelayMs = opts.releaseDelayMs ?? 0;
|
|
519
608
|
}
|
|
520
609
|
retain(viewKey, query) {
|
|
521
610
|
let entry = this.entries.get(viewKey);
|
|
@@ -547,12 +636,20 @@ export class QueryCache {
|
|
|
547
636
|
return;
|
|
548
637
|
if (entry.mode === "split") {
|
|
549
638
|
const [released] = entry.leases.splice(index, 1);
|
|
550
|
-
|
|
639
|
+
if (entry.leases.length > 0 || this.releaseDelayMs <= 0) {
|
|
640
|
+
released.releaseRemote();
|
|
641
|
+
}
|
|
642
|
+
else {
|
|
643
|
+
entry.pendingReleases.push(released);
|
|
644
|
+
this.scheduleSplitRelease(lease.viewKey, entry);
|
|
645
|
+
}
|
|
551
646
|
if (entry.leases.length > 0)
|
|
552
647
|
return;
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
648
|
+
if (this.releaseDelayMs <= 0) {
|
|
649
|
+
entry.canonicalUnsubscribe();
|
|
650
|
+
entry.handle.destroy();
|
|
651
|
+
this.entries.delete(lease.viewKey);
|
|
652
|
+
}
|
|
556
653
|
return;
|
|
557
654
|
}
|
|
558
655
|
const [released] = entry.leases.splice(index, 1);
|
|
@@ -573,6 +670,7 @@ export class QueryCache {
|
|
|
573
670
|
if (!entry)
|
|
574
671
|
return () => { };
|
|
575
672
|
entry.listeners.add(listener);
|
|
673
|
+
listener();
|
|
576
674
|
return () => {
|
|
577
675
|
entry.listeners.delete(listener);
|
|
578
676
|
};
|
|
@@ -613,6 +711,8 @@ export class QueryCache {
|
|
|
613
711
|
mode: "split",
|
|
614
712
|
handle,
|
|
615
713
|
leases: [],
|
|
714
|
+
pendingReleases: [],
|
|
715
|
+
releaseTimer: undefined,
|
|
616
716
|
canonicalUnsubscribe: () => { },
|
|
617
717
|
listeners: new Set(),
|
|
618
718
|
};
|
|
@@ -657,6 +757,24 @@ export class QueryCache {
|
|
|
657
757
|
listener();
|
|
658
758
|
});
|
|
659
759
|
}
|
|
760
|
+
scheduleSplitRelease(viewKey, entry) {
|
|
761
|
+
if (entry.releaseTimer !== undefined)
|
|
762
|
+
clearTimeout(entry.releaseTimer);
|
|
763
|
+
entry.releaseTimer = setReleaseTimeout(() => this.finalizeSplitRelease(viewKey, entry), this.releaseDelayMs);
|
|
764
|
+
}
|
|
765
|
+
finalizeSplitRelease(viewKey, entry) {
|
|
766
|
+
if (this.entries.get(viewKey) !== entry)
|
|
767
|
+
return;
|
|
768
|
+
entry.releaseTimer = undefined;
|
|
769
|
+
const pending = entry.pendingReleases.splice(0);
|
|
770
|
+
for (const lease of pending)
|
|
771
|
+
lease.releaseRemote();
|
|
772
|
+
if (entry.leases.length > 0)
|
|
773
|
+
return;
|
|
774
|
+
entry.canonicalUnsubscribe();
|
|
775
|
+
entry.handle.destroy();
|
|
776
|
+
this.entries.delete(viewKey);
|
|
777
|
+
}
|
|
660
778
|
}
|
|
661
779
|
export function queryCacheKey(query) {
|
|
662
780
|
return describeQuery(query).viewKey;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rindle/react",
|
|
3
|
-
"version": "0.2
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"README.md"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@rindle/client": "0.2
|
|
28
|
+
"@rindle/client": "0.4.2"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"react": ">=18.0.0"
|
package/src/index.ts
CHANGED
|
@@ -3,8 +3,10 @@ import {
|
|
|
3
3
|
createElement,
|
|
4
4
|
useCallback,
|
|
5
5
|
useContext,
|
|
6
|
+
useEffect,
|
|
6
7
|
useMemo,
|
|
7
8
|
useRef,
|
|
9
|
+
useState,
|
|
8
10
|
useSyncExternalStore,
|
|
9
11
|
} from "react";
|
|
10
12
|
import type { ReactNode } from "react";
|
|
@@ -16,8 +18,10 @@ import {
|
|
|
16
18
|
localQueryReadAst,
|
|
17
19
|
localFragmentReadAst,
|
|
18
20
|
localRootFragmentRefsAst,
|
|
21
|
+
OneShotBackend,
|
|
19
22
|
queryFromAst,
|
|
20
23
|
stableKey,
|
|
24
|
+
Store,
|
|
21
25
|
tableMeta,
|
|
22
26
|
} from "@rindle/client";
|
|
23
27
|
import type {
|
|
@@ -25,6 +29,7 @@ import type {
|
|
|
25
29
|
Ast,
|
|
26
30
|
CachedQueryView,
|
|
27
31
|
ColsMap,
|
|
32
|
+
DehydratedState,
|
|
28
33
|
Fragment,
|
|
29
34
|
FragmentData,
|
|
30
35
|
FragmentCoverage,
|
|
@@ -34,7 +39,7 @@ import type {
|
|
|
34
39
|
NamedQuery,
|
|
35
40
|
QueryLocalData,
|
|
36
41
|
ResultType,
|
|
37
|
-
|
|
42
|
+
Schema,
|
|
38
43
|
} from "@rindle/client";
|
|
39
44
|
|
|
40
45
|
type AnyView = ReturnType<AnyQuery["materialize"]>;
|
|
@@ -98,6 +103,8 @@ interface SplitCacheEntry extends BaseCacheEntry {
|
|
|
98
103
|
mode: "split";
|
|
99
104
|
handle: CachedQueryView<AnyQuery>;
|
|
100
105
|
leases: SplitLease[];
|
|
106
|
+
pendingReleases: SplitLease[];
|
|
107
|
+
releaseTimer: ReleaseTimer | undefined;
|
|
101
108
|
}
|
|
102
109
|
|
|
103
110
|
interface MaterializedCacheEntry extends BaseCacheEntry {
|
|
@@ -109,6 +116,21 @@ interface MaterializedCacheEntry extends BaseCacheEntry {
|
|
|
109
116
|
type CacheEntry = SplitCacheEntry | MaterializedCacheEntry;
|
|
110
117
|
|
|
111
118
|
const EMPTY_ARRAY: readonly never[] = Object.freeze([]);
|
|
119
|
+
// Keep just-released coverage alive briefly so a changed filter/limit can re-materialize from the
|
|
120
|
+
// local base synchronously while the replacement server lease is still streaming its first answer.
|
|
121
|
+
const REACT_CACHE_RELEASE_DELAY_MS = 2_000;
|
|
122
|
+
|
|
123
|
+
type ReleaseTimer = ReturnType<typeof setTimeout>;
|
|
124
|
+
|
|
125
|
+
interface QueryCacheOptions {
|
|
126
|
+
releaseDelayMs?: number;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function setReleaseTimeout(fn: () => void, ms: number): ReleaseTimer {
|
|
130
|
+
const timer = setTimeout(fn, ms);
|
|
131
|
+
(timer as { unref?: () => void }).unref?.();
|
|
132
|
+
return timer;
|
|
133
|
+
}
|
|
112
134
|
|
|
113
135
|
class RindleContextValue {
|
|
114
136
|
readonly store: Store<ColsMap>;
|
|
@@ -117,8 +139,8 @@ class RindleContextValue {
|
|
|
117
139
|
|
|
118
140
|
constructor(store: Store<ColsMap>) {
|
|
119
141
|
this.store = store;
|
|
120
|
-
this.cache = new QueryCache(store);
|
|
121
|
-
this.syncCache = new SyncQueryCache(store);
|
|
142
|
+
this.cache = new QueryCache(store, { releaseDelayMs: REACT_CACHE_RELEASE_DELAY_MS });
|
|
143
|
+
this.syncCache = new SyncQueryCache(store, { releaseDelayMs: REACT_CACHE_RELEASE_DELAY_MS });
|
|
122
144
|
}
|
|
123
145
|
}
|
|
124
146
|
|
|
@@ -135,6 +157,70 @@ export function useRindleStore<S extends ColsMap = ColsMap>(): Store<S> {
|
|
|
135
157
|
return useRindleContext().store as unknown as Store<S>;
|
|
136
158
|
}
|
|
137
159
|
|
|
160
|
+
export interface RindleSSRProps<S extends ColsMap = ColsMap> {
|
|
161
|
+
/** The app schema — used to build the transport-less seed {@link Store} that backs the server
|
|
162
|
+
* render and the matching client hydration pass. */
|
|
163
|
+
schema: Schema<S>;
|
|
164
|
+
/** The dehydrated first-paint cache from the route loader (`ServerStore.dehydrate()`), embedded in
|
|
165
|
+
* the HTML. Read on BOTH the server render and the client's first (hydration) render. */
|
|
166
|
+
ssrState: DehydratedState;
|
|
167
|
+
/** Boots the live (wasm-backed) client in the BROWSER — the app's `bootClient`. Called once, after
|
|
168
|
+
* hydration, and must resolve to the live optimistic store. Never invoked during the server
|
|
169
|
+
* render (SSR seeds are a first-paint concern only). */
|
|
170
|
+
boot: () => Promise<{ store: Store<S> }>;
|
|
171
|
+
children?: ReactNode;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* The SSR→SPA store handoff (SSR-DESIGN.md §6.1). Renders `<Rindle>` with a store that swaps from a
|
|
176
|
+
* transport-less SSR seed to the live engine WITHOUT changing a single `useQuery` caller — bind the
|
|
177
|
+
* app's `schema` + `bootClient` and drop it in above the tree:
|
|
178
|
+
*
|
|
179
|
+
* - Server render + browser HYDRATION: a seed {@link Store} over a {@link OneShotBackend}, hydrated
|
|
180
|
+
* from `ssrState`. `useQuery` reads its seed via `getServerSnapshot`, so the server and the
|
|
181
|
+
* client's first render produce identical markup with NO engine on either side — first paint is
|
|
182
|
+
* the server-rendered data, never a "Starting…" splash that would break hydration.
|
|
183
|
+
* - After hydration: `boot()` starts the wasm IVM engine (browser only), its views are seeded from
|
|
184
|
+
* the SAME snapshot (so the swap shows the SSR rows with no flash), and the live `subscribe`
|
|
185
|
+
* reconciles — the page is now a live SPA.
|
|
186
|
+
*
|
|
187
|
+
* Framework-agnostic of the app: everything but `schema`/`boot`/`ssrState` is owned here (previously
|
|
188
|
+
* hand-rolled per app as `src/RindleApp.tsx`).
|
|
189
|
+
*/
|
|
190
|
+
export function RindleSSR<S extends ColsMap>({ schema, ssrState, boot, children }: RindleSSRProps<S>) {
|
|
191
|
+
// Built ONCE from the first-render snapshot (SSR seeds are an initial-load concern only — after
|
|
192
|
+
// hydration the live store owns every read). Backs the server render AND the matching client
|
|
193
|
+
// hydration pass — same seeds in, same markup out.
|
|
194
|
+
const [seedStore] = useState(() => {
|
|
195
|
+
const store = new Store(schema, new OneShotBackend());
|
|
196
|
+
store.hydrate(ssrState);
|
|
197
|
+
return store;
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
// The live wasm store — booted only in the browser, only after hydration.
|
|
201
|
+
const [liveStore, setLiveStore] = useState<Store<S> | null>(null);
|
|
202
|
+
// Pin `ssrState`/`boot` through refs so the boot effect runs EXACTLY once (empty deps) yet always
|
|
203
|
+
// sees the latest values — a caller may pass an inline `boot`, which as a dep would re-boot the
|
|
204
|
+
// client every render.
|
|
205
|
+
const ssrStateRef = useRef(ssrState);
|
|
206
|
+
ssrStateRef.current = ssrState;
|
|
207
|
+
const bootRef = useRef(boot);
|
|
208
|
+
bootRef.current = boot;
|
|
209
|
+
useEffect(() => {
|
|
210
|
+
let alive = true;
|
|
211
|
+
void bootRef.current().then((app) => {
|
|
212
|
+
if (!alive) return;
|
|
213
|
+
app.store.hydrate(ssrStateRef.current); // seed the live views so the swap doesn't flash empty
|
|
214
|
+
setLiveStore(app.store);
|
|
215
|
+
});
|
|
216
|
+
return () => {
|
|
217
|
+
alive = false;
|
|
218
|
+
};
|
|
219
|
+
}, []);
|
|
220
|
+
|
|
221
|
+
return createElement(Rindle<S>, { store: liveStore ?? seedStore }, children);
|
|
222
|
+
}
|
|
223
|
+
|
|
138
224
|
export function useQuery<Q extends AnyQuery>(query: Q): QueryData<Q> {
|
|
139
225
|
const ctx = useRindleContext();
|
|
140
226
|
const descriptor = useMemo(() => describeQuery(query), [query]);
|
|
@@ -428,6 +514,24 @@ export function useFragment<F extends Fragment<any, any, any, any>>(
|
|
|
428
514
|
return useLocalFragment(fragment, ref);
|
|
429
515
|
}
|
|
430
516
|
|
|
517
|
+
/**
|
|
518
|
+
* Render-prop sugar over {@link useFragment}: does the `null` check once. `from` is a fragment ref
|
|
519
|
+
* (or null/undefined — an absent to-one relationship, an emptied `.one()`, or a row deleted out from
|
|
520
|
+
* under a live read); when the row is present `children(data)` renders, otherwise `fallback` (default
|
|
521
|
+
* nothing). Keeps the per-row subscription isolation — a child-only edit re-renders just this read.
|
|
522
|
+
*/
|
|
523
|
+
export function Frag<F extends AnyFragment>(
|
|
524
|
+
{ of, from, fallback = null, children }: {
|
|
525
|
+
of: F;
|
|
526
|
+
from: FragmentRef<F> | null | undefined;
|
|
527
|
+
fallback?: ReactNode;
|
|
528
|
+
children: (data: FragmentData<F>) => ReactNode;
|
|
529
|
+
},
|
|
530
|
+
): ReactNode {
|
|
531
|
+
const data = useFragment(of, from);
|
|
532
|
+
return data == null ? fallback : children(data);
|
|
533
|
+
}
|
|
534
|
+
|
|
431
535
|
function useLocalFragment<F extends Fragment<any, any, any, any>>(
|
|
432
536
|
fragment: F,
|
|
433
537
|
ref: LocalFragmentRef<F> | null | undefined,
|
|
@@ -717,6 +821,7 @@ interface SyncCacheEntry {
|
|
|
717
821
|
leases: SyncLease[];
|
|
718
822
|
listeners: Set<() => void>;
|
|
719
823
|
unsubscribe: () => void;
|
|
824
|
+
releaseTimer: ReleaseTimer | undefined;
|
|
720
825
|
}
|
|
721
826
|
|
|
722
827
|
interface SyncQueryHandle {
|
|
@@ -729,9 +834,11 @@ export class SyncQueryCache {
|
|
|
729
834
|
private readonly entries = new Map<string, SyncCacheEntry>();
|
|
730
835
|
private nextLeaseId = 1;
|
|
731
836
|
private readonly store: Store<ColsMap>;
|
|
837
|
+
private readonly releaseDelayMs: number;
|
|
732
838
|
|
|
733
|
-
constructor(store: Store<ColsMap
|
|
839
|
+
constructor(store: Store<ColsMap>, opts: QueryCacheOptions = {}) {
|
|
734
840
|
this.store = store;
|
|
841
|
+
this.releaseDelayMs = opts.releaseDelayMs ?? 0;
|
|
735
842
|
}
|
|
736
843
|
|
|
737
844
|
retain(coverageKey: string, query: AnyQuery): SyncLease {
|
|
@@ -743,11 +850,15 @@ export class SyncQueryCache {
|
|
|
743
850
|
leases: [],
|
|
744
851
|
listeners: new Set(),
|
|
745
852
|
unsubscribe: () => {},
|
|
853
|
+
releaseTimer: undefined,
|
|
746
854
|
};
|
|
747
855
|
entry.unsubscribe = handle.subscribe(() => {
|
|
748
856
|
for (const listener of entry!.listeners) listener();
|
|
749
857
|
});
|
|
750
858
|
this.entries.set(coverageKey, entry);
|
|
859
|
+
} else if (entry.releaseTimer !== undefined) {
|
|
860
|
+
clearTimeout(entry.releaseTimer);
|
|
861
|
+
entry.releaseTimer = undefined;
|
|
751
862
|
}
|
|
752
863
|
const lease = { id: this.nextLeaseId++, coverageKey };
|
|
753
864
|
entry.leases.push(lease);
|
|
@@ -761,15 +872,14 @@ export class SyncQueryCache {
|
|
|
761
872
|
if (index < 0) return;
|
|
762
873
|
entry.leases.splice(index, 1);
|
|
763
874
|
if (entry.leases.length > 0) return;
|
|
764
|
-
|
|
765
|
-
entry.handle.release();
|
|
766
|
-
this.entries.delete(lease.coverageKey);
|
|
875
|
+
this.scheduleRelease(lease.coverageKey, entry);
|
|
767
876
|
}
|
|
768
877
|
|
|
769
878
|
subscribe(coverageKey: string, listener: () => void): () => void {
|
|
770
879
|
const entry = this.entries.get(coverageKey);
|
|
771
880
|
if (!entry) return () => {};
|
|
772
881
|
entry.listeners.add(listener);
|
|
882
|
+
listener();
|
|
773
883
|
return () => {
|
|
774
884
|
entry.listeners.delete(listener);
|
|
775
885
|
};
|
|
@@ -794,15 +904,33 @@ export class SyncQueryCache {
|
|
|
794
904
|
release: () => view.destroy(),
|
|
795
905
|
};
|
|
796
906
|
}
|
|
907
|
+
|
|
908
|
+
private scheduleRelease(coverageKey: string, entry: SyncCacheEntry): void {
|
|
909
|
+
if (this.releaseDelayMs <= 0) {
|
|
910
|
+
this.finalizeRelease(coverageKey, entry);
|
|
911
|
+
return;
|
|
912
|
+
}
|
|
913
|
+
entry.releaseTimer = setReleaseTimeout(() => this.finalizeRelease(coverageKey, entry), this.releaseDelayMs);
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
private finalizeRelease(coverageKey: string, entry: SyncCacheEntry): void {
|
|
917
|
+
if (this.entries.get(coverageKey) !== entry || entry.leases.length > 0) return;
|
|
918
|
+
entry.releaseTimer = undefined;
|
|
919
|
+
entry.unsubscribe();
|
|
920
|
+
entry.handle.release();
|
|
921
|
+
this.entries.delete(coverageKey);
|
|
922
|
+
}
|
|
797
923
|
}
|
|
798
924
|
|
|
799
925
|
export class QueryCache {
|
|
800
926
|
private readonly entries = new Map<string, CacheEntry>();
|
|
801
927
|
private nextLeaseId = 1;
|
|
802
928
|
private readonly store: Store<ColsMap>;
|
|
929
|
+
private readonly releaseDelayMs: number;
|
|
803
930
|
|
|
804
|
-
constructor(store: Store<ColsMap
|
|
931
|
+
constructor(store: Store<ColsMap>, opts: QueryCacheOptions = {}) {
|
|
805
932
|
this.store = store;
|
|
933
|
+
this.releaseDelayMs = opts.releaseDelayMs ?? 0;
|
|
806
934
|
}
|
|
807
935
|
|
|
808
936
|
retain<Q extends AnyQuery>(viewKey: string, query: Q): QueryLease {
|
|
@@ -833,11 +961,18 @@ export class QueryCache {
|
|
|
833
961
|
if (index < 0) return;
|
|
834
962
|
if (entry.mode === "split") {
|
|
835
963
|
const [released] = entry.leases.splice(index, 1);
|
|
836
|
-
|
|
964
|
+
if (entry.leases.length > 0 || this.releaseDelayMs <= 0) {
|
|
965
|
+
released.releaseRemote();
|
|
966
|
+
} else {
|
|
967
|
+
entry.pendingReleases.push(released);
|
|
968
|
+
this.scheduleSplitRelease(lease.viewKey, entry);
|
|
969
|
+
}
|
|
837
970
|
if (entry.leases.length > 0) return;
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
971
|
+
if (this.releaseDelayMs <= 0) {
|
|
972
|
+
entry.canonicalUnsubscribe();
|
|
973
|
+
entry.handle.destroy();
|
|
974
|
+
this.entries.delete(lease.viewKey);
|
|
975
|
+
}
|
|
841
976
|
return;
|
|
842
977
|
}
|
|
843
978
|
const [released] = entry.leases.splice(index, 1);
|
|
@@ -857,6 +992,7 @@ export class QueryCache {
|
|
|
857
992
|
const entry = this.entries.get(viewKey);
|
|
858
993
|
if (!entry) return () => {};
|
|
859
994
|
entry.listeners.add(listener);
|
|
995
|
+
listener();
|
|
860
996
|
return () => {
|
|
861
997
|
entry.listeners.delete(listener);
|
|
862
998
|
};
|
|
@@ -900,6 +1036,8 @@ export class QueryCache {
|
|
|
900
1036
|
mode: "split",
|
|
901
1037
|
handle,
|
|
902
1038
|
leases: [],
|
|
1039
|
+
pendingReleases: [],
|
|
1040
|
+
releaseTimer: undefined,
|
|
903
1041
|
canonicalUnsubscribe: () => {},
|
|
904
1042
|
listeners: new Set(),
|
|
905
1043
|
};
|
|
@@ -951,6 +1089,22 @@ export class QueryCache {
|
|
|
951
1089
|
for (const listener of entry.listeners) listener();
|
|
952
1090
|
});
|
|
953
1091
|
}
|
|
1092
|
+
|
|
1093
|
+
private scheduleSplitRelease(viewKey: string, entry: SplitCacheEntry): void {
|
|
1094
|
+
if (entry.releaseTimer !== undefined) clearTimeout(entry.releaseTimer);
|
|
1095
|
+
entry.releaseTimer = setReleaseTimeout(() => this.finalizeSplitRelease(viewKey, entry), this.releaseDelayMs);
|
|
1096
|
+
}
|
|
1097
|
+
|
|
1098
|
+
private finalizeSplitRelease(viewKey: string, entry: SplitCacheEntry): void {
|
|
1099
|
+
if (this.entries.get(viewKey) !== entry) return;
|
|
1100
|
+
entry.releaseTimer = undefined;
|
|
1101
|
+
const pending = entry.pendingReleases.splice(0);
|
|
1102
|
+
for (const lease of pending) lease.releaseRemote();
|
|
1103
|
+
if (entry.leases.length > 0) return;
|
|
1104
|
+
entry.canonicalUnsubscribe();
|
|
1105
|
+
entry.handle.destroy();
|
|
1106
|
+
this.entries.delete(viewKey);
|
|
1107
|
+
}
|
|
954
1108
|
}
|
|
955
1109
|
|
|
956
1110
|
export function queryCacheKey(query: AnyQuery): string {
|