@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 CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { ReactNode } from "react";
2
- import type { AnyQuery, ColsMap, Fragment, FragmentData, FragmentRef, NamedQuery, QueryLocalData, ResultType, Store } from "@rindle/client";
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
- constructor(store: Store<ColsMap>);
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
- constructor(store: Store<ColsMap>);
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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
- constructor(store) {
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
- entry.unsubscribe();
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
- constructor(store) {
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
- released.releaseRemote();
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
- entry.canonicalUnsubscribe();
554
- entry.handle.destroy();
555
- this.entries.delete(lease.viewKey);
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.0",
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.0"
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
- Store,
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
- entry.unsubscribe();
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
- released.releaseRemote();
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
- entry.canonicalUnsubscribe();
839
- entry.handle.destroy();
840
- this.entries.delete(lease.viewKey);
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 {