@spooky-sync/client-solid 0.0.1-canary.26 → 0.0.1-canary.261

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,4 +1,4 @@
1
- import { AuthService, BucketHandle, RunOptions, SpookyClient, SpookyConfig, SpookyQueryResultPromise, UpdateOptions } from "@spooky-sync/core";
1
+ import { AppReleaseOptions, AuthService, BucketHandle, BucketPutOptions, BucketPutResult, ConnectionState, ConnectionState as ConnectionState$1, CrdtField, FeatureFlagOptions, ImpersonationInfo, PreloadOptions, PreloadOptions as PreloadOptions$1, PreloadRefresh, ReconnectConfig, RunOptions, Sp00kyClient, Sp00kyConfig, Sp00kyQueryResultPromise, StorageHealth, StorageHealth as StorageHealth$1, StorageHealthStatus, StorageHealthStatus as StorageHealthStatus$1, SyncHealth, SyncHealth as SyncHealth$1, SyncHealthConfig, SyncHealthStatus, SyncHealthStatus as SyncHealthStatus$1, UpdateOptions } from "@spooky-sync/core";
2
2
  import { RecordId, RecordId as RecordId$1, Surreal, Uuid } from "surrealdb";
3
3
  import { Accessor, JSX } from "solid-js";
4
4
  import { GenericModel, GenericSchema, SchemaStructure } from "@spooky/query-builder";
@@ -37,14 +37,22 @@ type InferRelationshipsFromConst<S extends SchemaStructure$1, Schema extends Gen
37
37
  cardinality: Rel['cardinality'];
38
38
  } } };
39
39
  type Prettify<T> = { [K in keyof T]: T[K] } & {};
40
- type SyncedDbConfig<S extends SchemaStructure$1> = Prettify<SpookyConfig<S>>;
40
+ type SyncedDbConfig<S extends SchemaStructure$1> = Prettify<Sp00kyConfig<S>>;
41
41
  //#endregion
42
42
  //#region src/lib/use-query.d.ts
43
43
  type QueryArg<S extends SchemaStructure$1, TableName extends TableNames$1<S>, T extends {
44
44
  columns: Record<string, ColumnSchema>;
45
- }, RelatedFields extends Record<string, any>, IsOne extends boolean> = FinalQuery<S, TableName, T, RelatedFields, IsOne, SpookyQueryResultPromise> | (() => FinalQuery<S, TableName, T, RelatedFields, IsOne, SpookyQueryResultPromise> | null | undefined);
45
+ }, RelatedFields extends Record<string, any>, IsOne extends boolean> = FinalQuery<S, TableName, T, RelatedFields, IsOne, Sp00kyQueryResultPromise> | (() => FinalQuery<S, TableName, T, RelatedFields, IsOne, Sp00kyQueryResultPromise> | null | undefined);
46
46
  type QueryOptions = {
47
47
  enabled?: () => boolean;
48
+ /**
49
+ * Tear down the query (remote `_00_query` view + local WASM view) when this
50
+ * hook is disposed and no other subscriber remains, instead of keeping it
51
+ * resident for cheap re-subscription. Use for viewport-windowed lists that
52
+ * mount/unmount a query per scroll window and want off-screen windows
53
+ * cancelled. Trade-off: scrolling back to a torn-down window re-registers it.
54
+ */
55
+ deregisterOnCleanup?: boolean;
48
56
  };
49
57
  declare function useQuery<S extends SchemaStructure$1, TableName extends TableNames$1<S>, T extends {
50
58
  columns: Record<string, ColumnSchema>;
@@ -52,6 +60,8 @@ declare function useQuery<S extends SchemaStructure$1, TableName extends TableNa
52
60
  data: () => TData | undefined;
53
61
  error: () => Error | undefined;
54
62
  isLoading: () => boolean;
63
+ isFetching: () => boolean;
64
+ isSettled: () => boolean;
55
65
  };
56
66
  declare function useQuery<S extends SchemaStructure$1, TableName extends TableNames$1<S>, T extends {
57
67
  columns: Record<string, ColumnSchema>;
@@ -59,14 +69,188 @@ declare function useQuery<S extends SchemaStructure$1, TableName extends TableNa
59
69
  data: () => TData | undefined;
60
70
  error: () => Error | undefined;
61
71
  isLoading: () => boolean;
72
+ isFetching: () => boolean;
73
+ isSettled: () => boolean;
74
+ };
75
+ //#endregion
76
+ //#region src/lib/create-preload.d.ts
77
+ type PreloadArg<S extends SchemaStructure$1, TableName extends TableNames$1<S>, T extends {
78
+ columns: Record<string, ColumnSchema>;
79
+ }, RelatedFields extends Record<string, any>, IsOne extends boolean> = FinalQuery<S, TableName, T, RelatedFields, IsOne, Sp00kyQueryResultPromise> | (() => FinalQuery<S, TableName, T, RelatedFields, IsOne, Sp00kyQueryResultPromise> | null | undefined);
80
+ type PreloadOptions$2 = PreloadOptions$1 & {
81
+ /** Only preload while this returns true (defaults to always). */
82
+ enabled?: () => boolean;
62
83
  };
84
+ declare function createPreload<S extends SchemaStructure$1, TableName extends TableNames$1<S>, T extends {
85
+ columns: Record<string, ColumnSchema>;
86
+ }, RelatedFields extends Record<string, any>, IsOne extends boolean>(finalQuery: PreloadArg<S, TableName, T, RelatedFields, IsOne>, options?: PreloadOptions$2): void;
87
+ declare function createPreload<S extends SchemaStructure$1, TableName extends TableNames$1<S>, T extends {
88
+ columns: Record<string, ColumnSchema>;
89
+ }, RelatedFields extends Record<string, any>, IsOne extends boolean>(db: SyncedDb<S>, finalQuery: PreloadArg<S, TableName, T, RelatedFields, IsOne>, options?: PreloadOptions$2): void;
90
+ //#endregion
91
+ //#region src/lib/use-sync-status.d.ts
92
+ interface UseSyncStatus {
93
+ /** Full health snapshot; updates reactively on every transition. */
94
+ health: Accessor<SyncHealth$1>;
95
+ /** `'healthy'` | `'degraded'`. */
96
+ status: Accessor<SyncHealthStatus$1>;
97
+ isHealthy: Accessor<boolean>;
98
+ /** `true` once sync has failed for a sustained run — drive a banner off this. */
99
+ isDegraded: Accessor<boolean>;
100
+ /** `true` once at least one sync round has succeeded this session. */
101
+ everConnected: Accessor<boolean>;
102
+ /**
103
+ * `true` only for a real lost connection: degraded AFTER a first successful
104
+ * sync. Stays `false` during the initial "connecting" phase (degraded but
105
+ * never reached the server yet), so an indicator can show nothing until the
106
+ * app has actually connected once.
107
+ */
108
+ isOffline: Accessor<boolean>;
109
+ /**
110
+ * Transport state of the remote WebSocket. Flips the instant the socket
111
+ * drops, unlike `status`, which only degrades after a sustained run of failed
112
+ * sync rounds — so this is what to drive a "reconnecting…" affordance off.
113
+ */
114
+ connection: Accessor<ConnectionState$1>;
115
+ /**
116
+ * `true` while the connection is being re-established. Usually still
117
+ * `isHealthy()`: a short reconnect is invisible to sync, and writes made
118
+ * during it are queued locally and pushed once the socket is back.
119
+ */
120
+ isReconnecting: Accessor<boolean>;
121
+ }
122
+ /**
123
+ * Observe sync health for a "can't reach the server" banner / indicator.
124
+ *
125
+ * Backed by `db.subscribeToSyncHealth`. Individual sync failures (a transient
126
+ * remote 500 on query registration, a dropped socket) are absorbed by the
127
+ * retry and never flip this; `isDegraded()` only goes true once failures
128
+ * persist for the configured number of consecutive rounds (sp00ky core config
129
+ * `syncHealth.degradeAfterConsecutiveFailures`, default 3), and flips back on
130
+ * the next successful round. Must be used within a `<Sp00kyProvider>`.
131
+ */
132
+ declare function useSyncStatus(): UseSyncStatus;
133
+ //# sourceMappingURL=use-sync-status.d.ts.map
134
+ //#endregion
135
+ //#region src/lib/use-impersonation.d.ts
136
+ interface UseImpersonation {
137
+ /** The active impersonation, or `null`. */
138
+ impersonation: Accessor<ImpersonationInfo | null>;
139
+ isImpersonating: Accessor<boolean>;
140
+ /** Return to the admin session. */
141
+ stop: () => Promise<void>;
142
+ }
143
+ /**
144
+ * Observe admin impersonation (started from the DevTools). The client already
145
+ * shows its own warning bar with a Stop button; use this for anything extra,
146
+ * such as hiding actions an admin should not take on someone's behalf.
147
+ * Must be used within a `<Sp00kyProvider>`.
148
+ */
149
+ declare function useImpersonation(): UseImpersonation;
150
+ //# sourceMappingURL=use-impersonation.d.ts.map
151
+ //#endregion
152
+ //#region src/lib/use-storage-status.d.ts
153
+ interface UseStorageStatus {
154
+ /** Full durability snapshot; updates reactively. */
155
+ health: Accessor<StorageHealth$1>;
156
+ /** `'unknown'` | `'persistent'` | `'memory'`. */
157
+ status: Accessor<StorageHealthStatus$1>;
158
+ /** `true` when the local store survives a reload. */
159
+ isPersistent: Accessor<boolean>;
160
+ /**
161
+ * `true` only when durable storage was requested and could NOT be opened, so
162
+ * the dataset is sitting in RAM and local writes die on reload. Drive a
163
+ * warning off this, not off `status`: a store configured as in-memory reports
164
+ * `'memory'` too, and that is a choice rather than a problem.
165
+ */
166
+ isMemoryFallback: Accessor<boolean>;
167
+ }
168
+ /**
169
+ * Observe how durable the LOCAL cache is, for a "no local storage" warning.
170
+ *
171
+ * Under `localEngine: 'sqlite'` with `store: 'indexeddb'` the durable store is
172
+ * the OPFS SAHPool VFS, and only ONE client per bucket can hold it open: a
173
+ * second tab of the same app cannot get it and runs in memory instead (the
174
+ * engine retries first, so a closing tab's lock is usually waited out). Must be
175
+ * used within a `<Sp00kyProvider>`.
176
+ */
177
+ declare function useStorageStatus(): UseStorageStatus;
178
+ //# sourceMappingURL=use-storage-status.d.ts.map
179
+ //#endregion
180
+ //#region src/lib/use-crdt-field.d.ts
181
+ declare function useCrdtField(table: string, recordId: () => string | undefined, field: string, fallbackText?: () => string | undefined): Accessor<CrdtField | null>;
182
+ //# sourceMappingURL=use-crdt-field.d.ts.map
183
+ //#endregion
184
+ //#region src/lib/use-feature-flag.d.ts
185
+ interface UseFeatureFlag {
186
+ variant: Accessor<string | undefined>;
187
+ payload: Accessor<unknown | undefined>;
188
+ enabled: Accessor<boolean>;
189
+ }
190
+ /**
191
+ * Subscribe to a feature flag for the currently authenticated user.
192
+ *
193
+ * Returns three Solid accessors that update reactively whenever the
194
+ * server-materialized assignment in `_00_user_feature` changes. Backed by
195
+ * the same SSP + sync pipeline that powers `useQuery`, so toggling a flag
196
+ * via `spky flag enable <key>` propagates to the UI without a refresh.
197
+ *
198
+ * `enabled()` is `true` when the resolved variant exists and is not 'off'.
199
+ * For multi-variant flags, prefer `variant()` directly.
200
+ */
201
+ declare function useFeatureFlag(key: string, options?: FeatureFlagOptions): UseFeatureFlag;
202
+ //# sourceMappingURL=use-feature-flag.d.ts.map
203
+ //#endregion
204
+ //#region src/lib/use-app-release.d.ts
205
+ interface UseAppReleaseOptions extends AppReleaseOptions {
206
+ /** App name from sp00ky.yml, e.g. `web`. */
207
+ app: string;
208
+ /**
209
+ * The running build's version (X.Y.Z), typically baked in at build time
210
+ * (e.g. a vite `define` from package.json). `updateAvailable()` is true when
211
+ * the announced release is semver-newer than this.
212
+ */
213
+ currentVersion: string;
214
+ }
215
+ interface UseAppRelease {
216
+ /** Latest announced version for the app, or undefined when no row exists. */
217
+ latestVersion: Accessor<string | undefined>;
218
+ /** Announced version is semver-newer than the running build. */
219
+ updateAvailable: Accessor<boolean>;
220
+ /** The newer release asks clients to update/reload without prompting. */
221
+ mandatory: Accessor<boolean>;
222
+ /** The newer release asks reloads to clear service-worker caches first. */
223
+ cacheBust: Accessor<boolean>;
224
+ /**
225
+ * Reload onto the announced release. Plain `location.reload()` normally;
226
+ * when the release is flagged cache-bust, CacheStorage is cleared, the
227
+ * service-worker registration is nudged to update, and navigation carries a
228
+ * `?cb=` token to punch through intermediary caches. The service worker is
229
+ * deliberately NOT unregistered: navigating while still controlled by a
230
+ * just-unregistered worker strands subresource fetches on the dead worker
231
+ * and the page hangs until a manual reload.
232
+ */
233
+ reload: () => Promise<void>;
234
+ }
235
+ /**
236
+ * Observe the app's announced release (`_00_app_release:<app>`, written by
237
+ * `spky deploy` / `spky release`) and compare it against the running build.
238
+ *
239
+ * Typical use: mount a small "new version available — Reload" notification
240
+ * gated on `updateAvailable()`, auto-invoking `reload()` when `mandatory()`
241
+ * (guard the auto path against reload loops with a per-version marker, since
242
+ * a client can reload while the deploy is still rolling out and land on the
243
+ * old bundle again).
244
+ */
245
+ declare function useAppRelease(options: UseAppReleaseOptions): UseAppRelease;
246
+ //# sourceMappingURL=use-app-release.d.ts.map
63
247
  //#endregion
64
248
  //#region src/lib/use-file-upload.d.ts
65
249
  interface FileUploadResult {
66
250
  isUploading: () => boolean;
67
251
  error: () => Error | null;
68
252
  clearError: () => void;
69
- upload: (path: string, file: File | Blob) => Promise<void>;
253
+ upload: (path: string, file: File | Blob, options?: BucketPutOptions) => Promise<BucketPutResult | void>;
70
254
  download: (path: string) => Promise<string | null>;
71
255
  remove: (path: string) => Promise<void>;
72
256
  exists: (path: string) => Promise<boolean>;
@@ -77,7 +261,27 @@ declare function useFileUpload<S extends SchemaStructure$1>(db: SyncedDb<S>, buc
77
261
  //#endregion
78
262
  //#region src/lib/use-download-file.d.ts
79
263
  interface UseDownloadFileOptions {
264
+ /**
265
+ * Master switch, default `true`. `false` gives every hook instance its own
266
+ * private object URL fetched fresh from the bucket and revoked on unmount —
267
+ * no sharing, no persistence, no reuse.
268
+ */
80
269
  cache?: boolean;
270
+ /**
271
+ * Keep the bytes in OPFS so they survive a reload and are available offline.
272
+ * Default `true`. Turn off for one-shot or sensitive files; the in-tab object
273
+ * URL is still shared between components rendering the same path.
274
+ */
275
+ persist?: boolean;
276
+ /** Exempt this file from pressure eviction. Pinned bytes never expire. */
277
+ pin?: boolean;
278
+ /**
279
+ * `'never'` (default) treats a bucket path as immutable, which is how paths
280
+ * are written (`crypto.randomUUID() + ext`). `'head'` spends a remote `head()`
281
+ * to compare sizes before trusting the cached copy — for paths the app
282
+ * overwrites in place.
283
+ */
284
+ revalidate?: 'never' | 'head';
81
285
  }
82
286
  interface UseDownloadFileResult {
83
287
  url: Accessor<string | null>;
@@ -89,16 +293,138 @@ declare function useDownloadFile<S extends SchemaStructure$1>(bucketName: Bucket
89
293
  declare function useDownloadFile<S extends SchemaStructure$1>(db: SyncedDb<S>, bucketName: BucketNames<S>, path: Accessor<string | null | undefined>, options?: UseDownloadFileOptions): UseDownloadFileResult;
90
294
  //# sourceMappingURL=use-download-file.d.ts.map
91
295
  //#endregion
92
- //#region src/lib/SpookyProvider.d.ts
93
- interface SpookyProviderProps<S extends SchemaStructure> {
296
+ //#region src/lib/use-blurhash.d.ts
297
+ interface UseBlurhashResult {
298
+ /** The stored blurhash for the path, or null while loading / when none exists. */
299
+ hash: Accessor<string | null>;
300
+ isLoading: Accessor<boolean>;
301
+ }
302
+ /**
303
+ * The blurhash sidecar for a bucket image (written automatically by
304
+ * `bucket.put`, see `Sp00kyConfig.blurhash`). Resolves from OPFS instantly on
305
+ * warm clients; a miss is remembered per tab. Use this directly when the hash
306
+ * belongs to a different rendition than the displayed image; otherwise
307
+ * `useBucketImage` / `BucketImage` bundle it with the download.
308
+ */
309
+ declare function useBlurhash<S extends SchemaStructure$1>(bucketName: BucketNames<S>, path: Accessor<string | null | undefined>): UseBlurhashResult;
310
+ declare function useBlurhash<S extends SchemaStructure$1>(db: SyncedDb<S>, bucketName: BucketNames<S>, path: Accessor<string | null | undefined>): UseBlurhashResult;
311
+ //# sourceMappingURL=use-blurhash.d.ts.map
312
+ //#endregion
313
+ //#region src/lib/use-bucket-image.d.ts
314
+ interface UseBucketImageOptions extends UseDownloadFileOptions {
315
+ /**
316
+ * Also resolve the image's blurhash sidecar (see `Sp00kyConfig.blurhash`).
317
+ * Default `true`; the read is registered before the image bytes so the tiny
318
+ * sidecar tends to land first on the serialized remote chain.
319
+ */
320
+ blurhash?: boolean;
321
+ }
322
+ interface UseBucketImageResult extends UseDownloadFileResult {
323
+ /** Blurhash for the same path, or null (off, missing, still loading). */
324
+ blurhash: Accessor<string | null>;
325
+ /** True once the current `url()` has been decoded and is safe to paint. */
326
+ ready: Accessor<boolean>;
327
+ /**
328
+ * Ref callback for the `<img>` rendering `url()`: flips `ready` when the
329
+ * bitmap is decoded (resolves on failure too, so a broken blob degrades to
330
+ * paint-on-load instead of hiding the image forever). Re-arms itself when
331
+ * the url changes.
332
+ */
333
+ gate: (img: HTMLImageElement) => void;
334
+ }
335
+ /**
336
+ * Everything needed to render a bucket image without a pop-in: the refcounted
337
+ * object URL, the blurhash placeholder, and a decode gate so the real bitmap
338
+ * is only revealed once it can paint in full. `BucketImage` wraps this into a
339
+ * drop-in component; use the hook for custom markup.
340
+ */
341
+ declare function useBucketImage<S extends SchemaStructure$1>(bucketName: BucketNames<S>, path: Accessor<string | null | undefined>, options?: UseBucketImageOptions): UseBucketImageResult;
342
+ declare function useBucketImage<S extends SchemaStructure$1>(db: SyncedDb<S>, bucketName: BucketNames<S>, path: Accessor<string | null | undefined>, options?: UseBucketImageOptions): UseBucketImageResult;
343
+ //# sourceMappingURL=use-bucket-image.d.ts.map
344
+ //#endregion
345
+ //#region src/lib/Blurhash.d.ts
346
+ interface BlurhashProps {
347
+ /** The blurhash string. Nullish paints nothing (transparent canvas). */
348
+ hash: string | null | undefined;
349
+ /** Decode resolution. 32x32 is plenty: blurhash carries at most 9x9 DCT
350
+ * components, the canvas is meant to be CSS-scaled to fill. */
351
+ width?: number;
352
+ height?: number;
353
+ /** Contrast punch, see the blurhash reference decoder. Defaults to 1. */
354
+ punch?: number;
355
+ class?: string;
356
+ style?: string;
357
+ }
358
+ /**
359
+ * A blurhash painted onto a canvas, once per hash change. Size the canvas via
360
+ * `class`/`style` (e.g. `absolute inset-0 w-full h-full`); the internal decode
361
+ * resolution stays tiny regardless of the displayed size.
362
+ */
363
+ declare function Blurhash(props: BlurhashProps): JSX.Element;
364
+ //# sourceMappingURL=Blurhash.d.ts.map
365
+ //#endregion
366
+ //#region src/lib/BucketImage.d.ts
367
+ interface BucketImageProps {
368
+ /** Bucket name from the schema. */
369
+ bucket: string;
370
+ /** Path within the bucket. Nullish renders only the fallback layers. */
371
+ path: string | null | undefined;
372
+ alt?: string;
373
+ /** Classes for the container element (sizing/positioning). */
374
+ class?: string;
375
+ /** Classes for the inner `<img>` (the layout styles are inline). */
376
+ imgClass?: string;
377
+ /** `object-fit` for the image. Defaults to `cover`. */
378
+ fit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';
379
+ /**
380
+ * Bottom placeholder layer (your own plate/skeleton), shown until the image
381
+ * settles. The blurhash layer paints on top of it once the sidecar resolves.
382
+ */
383
+ fallback?: JSX.Element;
384
+ /** Crossfade duration in ms. Defaults to 300. */
385
+ transition?: number;
386
+ /** Crossfade easing. Defaults to an ease-out-expo curve. */
387
+ easing?: string;
388
+ /** Resolve the blurhash sidecar. Defaults to true. */
389
+ blurhash?: boolean;
390
+ /** Download tuning, forwarded to the underlying `useDownloadFile`. */
391
+ options?: UseBucketImageOptions;
392
+ }
393
+ /**
394
+ * A bucket image that never pops in: it layers (bottom to top) your `fallback`
395
+ * plate, the automatically stored blurhash, and the real image, which stays
396
+ * transparent until the bitmap is DECODED and then crossfades over the
397
+ * placeholders. Placeholder layers unmount once the fade settles. Respects
398
+ * prefers-reduced-motion (instant swap). The container is made
399
+ * `position: relative` unless your `class` positions it already.
400
+ *
401
+ * ```tsx
402
+ * <BucketImage bucket="covers" path={row.cover_key} class="absolute inset-0"
403
+ * fallback={<MyPlate />} alt="" />
404
+ * ```
405
+ */
406
+ declare function BucketImage(props: BucketImageProps): JSX.Element;
407
+ //# sourceMappingURL=BucketImage.d.ts.map
408
+ //#endregion
409
+ //#region src/lib/Sp00kyProvider.d.ts
410
+ interface Sp00kyProviderProps<S extends SchemaStructure> {
94
411
  config: SyncedDbConfig<S>;
95
412
  fallback?: JSX.Element;
96
413
  onError?: (error: Error) => void;
97
414
  onReady?: (db: SyncedDb<S>) => void;
415
+ /**
416
+ * Prewarm data into the local cache before revealing the UI. Runs after
417
+ * `init()`; the `fallback` stays visible until it resolves. Use awaitable
418
+ * `db.preload(...)` calls here to gate first-load on essential data (e.g.
419
+ * config). On warm loads preload returns instantly, so there's no perceptible
420
+ * gate after the first run. Best-effort: a rejection is caught and the UI is
421
+ * revealed anyway.
422
+ */
423
+ preload?: (db: SyncedDb<S>) => Promise<void>;
98
424
  children: JSX.Element;
99
425
  }
100
- declare function SpookyProvider<S extends SchemaStructure>(props: SpookyProviderProps<S>): JSX.Element;
101
- //# sourceMappingURL=SpookyProvider.d.ts.map
426
+ declare function Sp00kyProvider<S extends SchemaStructure>(props: Sp00kyProviderProps<S>): JSX.Element;
427
+ //# sourceMappingURL=Sp00kyProvider.d.ts.map
102
428
  //#endregion
103
429
  //#region src/lib/context.d.ts
104
430
  declare function useDb<S extends SchemaStructure>(): SyncedDb<S>;
@@ -106,13 +432,13 @@ declare function useDb<S extends SchemaStructure>(): SyncedDb<S>;
106
432
 
107
433
  //#endregion
108
434
  //#region src/index.d.ts
109
- type RelationshipField<Schema extends SchemaStructure$1, TableName extends TableNames$1<Schema>, Field extends RelationshipFieldsFromSchema<Schema, TableName>> = GetRelationship<Schema, TableName, Field>;
110
- type RelatedFieldsTableScoped<Schema extends SchemaStructure$1, TableName extends TableNames$1<Schema>, RelatedFields extends RelationshipFieldsFromSchema<Schema, TableName> = RelationshipFieldsFromSchema<Schema, TableName>> = { [K in RelatedFields]: {
435
+ type RelationshipField<Schema extends SchemaStructure$1, TableName extends TableNames<Schema>, Field extends RelationshipFieldsFromSchema<Schema, TableName>> = GetRelationship<Schema, TableName, Field>;
436
+ type RelatedFieldsTableScoped<Schema extends SchemaStructure$1, TableName extends TableNames<Schema>, RelatedFields extends RelationshipFieldsFromSchema<Schema, TableName> = RelationshipFieldsFromSchema<Schema, TableName>> = { [K in RelatedFields]: {
111
437
  to: RelationshipField<Schema, TableName, K>['to'];
112
438
  relatedFields: RelatedFieldsMap;
113
439
  cardinality: RelationshipField<Schema, TableName, K>['cardinality'];
114
440
  } };
115
- type InferModel<Schema extends SchemaStructure$1, TableName extends TableNames$1<Schema>, RelatedFields extends RelatedFieldsTableScoped<Schema, TableName>> = QueryResult$1<Schema, TableName, RelatedFields, true>;
441
+ type InferModel<Schema extends SchemaStructure$1, TableName extends TableNames<Schema>, RelatedFields extends RelatedFieldsTableScoped<Schema, TableName>> = QueryResult<Schema, TableName, RelatedFields, true>;
116
442
  type WithRelated<Field extends string, RelatedFields extends RelatedFieldsMap = {}> = { [K in Field]: Omit<RelatedFieldMapEntry, 'relatedFields'> & {
117
443
  relatedFields: RelatedFields;
118
444
  } };
@@ -122,19 +448,26 @@ type WithRelatedMany<Field extends string, RelatedFields extends RelatedFieldsMa
122
448
  cardinality: 'many';
123
449
  } };
124
450
  /**
125
- * SyncedDb - A thin wrapper around spooky-ts for Solid.js integration
126
- * Delegates all logic to the underlying spooky-ts instance
451
+ * SyncedDb - A thin wrapper around sp00ky-ts for Solid.js integration
452
+ * Delegates all logic to the underlying sp00ky-ts instance
127
453
  */
128
454
  declare class SyncedDb<S extends SchemaStructure$1> {
129
455
  private config;
130
- private spooky;
456
+ private sp00ky;
131
457
  private _initialized;
132
458
  constructor(config: SyncedDbConfig<S>);
133
- getSpooky(): SpookyClient<S>;
459
+ getSp00ky(): Sp00kyClient<S>;
134
460
  /**
135
- * Initialize the spooky-ts instance
461
+ * Initialize the sp00ky-ts instance
136
462
  */
137
463
  init(): Promise<void>;
464
+ /**
465
+ * Tear down the client: leaves the tabs broker, closes the local store and
466
+ * remote socket, and frees the wasm circuit. Without this a remounted provider
467
+ * (or an HMR reload) strands a whole client, and the abandoned wasm heaps stay
468
+ * resident because V8 cannot see how much wasm memory a dropped wrapper holds.
469
+ */
470
+ close(): Promise<void>;
138
471
  /**
139
472
  * Create a new record in the database
140
473
  */
@@ -142,15 +475,21 @@ declare class SyncedDb<S extends SchemaStructure$1> {
142
475
  /**
143
476
  * Update an existing record in the database
144
477
  */
145
- update<TName extends TableNames$1<S>>(tableName: TName, recordId: string, payload: Partial<TableModel$1<GetTable$1<S, TName>>>, options?: UpdateOptions): Promise<void>;
478
+ update<TName extends TableNames<S>>(tableName: TName, recordId: string, payload: Partial<TableModel<GetTable<S, TName>>>, options?: UpdateOptions): Promise<void>;
146
479
  /**
147
480
  * Delete an existing record in the database
148
481
  */
149
- delete<TName extends TableNames$1<S>>(tableName: TName, selector: string | InnerQuery<GetTable$1<S, TName>, boolean>): Promise<void>;
482
+ delete<TName extends TableNames<S>>(tableName: TName, selector: string | RecordId | InnerQuery<GetTable<S, TName>, boolean>): Promise<void>;
483
+ /**
484
+ * Preload/prewarm a built query into the local cache without registering a
485
+ * live view. Fetches once and stores the rows (+ embedded related children)
486
+ * locally so a later `useQuery` for the same data paints instantly. Best-effort.
487
+ */
488
+ preload(finalQuery: FinalQuery<S, any, any, any, any, Sp00kyQueryResultPromise>, options?: PreloadOptions$1): Promise<void>;
150
489
  /**
151
490
  * Query data from the database
152
491
  */
153
- query<TName extends TableNames$1<S>>(table: TName): QueryBuilder<S, TName, SpookyQueryResultPromise, {}, false>;
492
+ query<TName extends TableNames<S>>(table: TName): QueryBuilder<S, TName, Sp00kyQueryResultPromise, {}, false>;
154
493
  /**
155
494
  * Run a backend operation
156
495
  */
@@ -175,20 +514,38 @@ declare class SyncedDb<S extends SchemaStructure$1> {
175
514
  /**
176
515
  * Access the remote database service directly
177
516
  */
178
- get remote(): SpookyClient<S>['remoteClient'];
517
+ get remote(): Sp00kyClient<S>['remoteClient'];
179
518
  /**
180
519
  * Access the local database service directly
181
520
  */
182
- get local(): SpookyClient<S>['localClient'];
521
+ get local(): Sp00kyClient<S>['localClient'];
183
522
  /**
184
523
  * Access the auth service
185
524
  */
186
525
  get auth(): AuthService<S>;
187
526
  get pendingMutationCount(): number;
527
+ /** Diagnostic — see `Sp00kyClient.liveRetryCount`. */
528
+ get liveRetryCount(): number;
188
529
  subscribeToPendingMutations(cb: (count: number) => void): () => void;
530
+ /** Current sync-health snapshot. See {@link useSyncStatus}. */
531
+ get syncHealth(): SyncHealth$1;
532
+ /**
533
+ * Observe sync health. Fires immediately with the current status and again
534
+ * on every healthy↔degraded transition. Prefer the `useSyncStatus` hook in
535
+ * components; this is the imperative escape hatch.
536
+ */
537
+ subscribeToSyncHealth(cb: (health: SyncHealth$1) => void): () => void;
538
+ /** Current local-store durability snapshot. See {@link useStorageStatus}. */
539
+ get storageHealth(): StorageHealth$1;
540
+ /**
541
+ * Observe local-store durability. Fires immediately with the current snapshot
542
+ * and again on change. Prefer the `useStorageStatus` hook in components; this
543
+ * is the imperative escape hatch.
544
+ */
545
+ subscribeToStorageHealth(cb: (health: StorageHealth$1) => void): () => void;
189
546
  bucket<B extends BucketNames<S>>(name: B): BucketHandle;
190
547
  getBucketConfig(name: string): BucketDefinitionSchema | undefined;
191
548
  }
192
549
  //#endregion
193
- export { CacheStrategy, type FileUploadResult, type GenericModel, type GenericSchema, type GetCardinality, type GetTable, InferModel, type InferRelatedModelFromMetadata, InferRelationshipsFromConst, InferSchemaFromConst, type Model, type ModelPayload, ProvisionOptions, type QueryInfo, type QueryModifier, type QueryModifierBuilder, type QueryResult, RecordId, RelatedFieldsTableScoped, type RelationshipDefinition, RelationshipField, type RelationshipsMetadata, SpookyProvider, type SpookyProviderProps, SyncedDb, SyncedDbConfig, type TableModel, type TableNames, type UseDownloadFileOptions, type UseDownloadFileResult, Uuid, WithRelated, WithRelatedMany, useDb, useDownloadFile, useFileUpload, useQuery };
550
+ export { Blurhash, type BlurhashProps, BucketImage, type BucketImageProps, CacheStrategy, type ConnectionState, type FileUploadResult, type GenericModel, type GenericSchema, type GetCardinality, type GetTable, InferModel, type InferRelatedModelFromMetadata, InferRelationshipsFromConst, InferSchemaFromConst, type Model, type ModelPayload, type PreloadOptions, type PreloadRefresh, ProvisionOptions, type QueryInfo, type QueryModifier, type QueryModifierBuilder, type QueryResult, type ReconnectConfig, RecordId, RelatedFieldsTableScoped, type RelationshipDefinition, RelationshipField, type RelationshipsMetadata, Sp00kyProvider, type Sp00kyProviderProps, type StorageHealth, type StorageHealthStatus, type SyncHealth, type SyncHealthConfig, type SyncHealthStatus, SyncedDb, SyncedDbConfig, type TableModel, type TableNames, type UseAppRelease, type UseAppReleaseOptions, type UseBlurhashResult, type UseBucketImageOptions, type UseBucketImageResult, type UseDownloadFileOptions, type UseDownloadFileResult, type UseFeatureFlag, type UseImpersonation, type UseStorageStatus, type UseSyncStatus, Uuid, WithRelated, WithRelatedMany, createPreload, useAppRelease, useBlurhash, useBucketImage, useCrdtField, useDb, useDownloadFile, useFeatureFlag, useFileUpload, useImpersonation, useQuery, useStorageStatus, useSyncStatus };
194
551
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/lib/models.ts","../../../src/types/index.ts","../../../src/lib/use-query.ts","../../../src/lib/use-file-upload.ts","../../../src/lib/use-download-file.ts","../../../src/lib/SpookyProvider.ts","../../../src/lib/context.ts","../../../src/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/lib/models.ts","../../../src/types/index.ts","../../../src/lib/use-query.ts","../../../src/lib/create-preload.ts","../../../src/lib/use-sync-status.ts","../../../src/lib/use-impersonation.ts","../../../src/lib/use-storage-status.ts","../../../src/lib/use-crdt-field.ts","../../../src/lib/use-feature-flag.ts","../../../src/lib/use-app-release.ts","../../../src/lib/use-file-upload.ts","../../../src/lib/use-download-file.ts","../../../src/lib/use-blurhash.ts","../../../src/lib/use-bucket-image.ts","../../../src/lib/Blurhash.ts","../../../src/lib/BucketImage.ts","../../../src/lib/Sp00kyProvider.ts","../../../src/lib/context.ts","../../../src/index.ts"],"sourcesContent":[],"mappings":"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EnB,4BjB7EmB,CiB6EU,MjB7EV,EiB6EkB,SjB7ElB,CAAA,CAAA,GiB8E/B,ejB9E+B,CiB8Ef,MjB9Ee,EiB8EP,SjB9EO,EiB8EI,KjB9EJ,CAAA;AAAX,KiBgFZ,wBjBhFY,CAAA,eiBiFP,iBjBjFO,EAAA,kBiBkFJ,UjBlFI,CiBkFO,MjBlFP,CAAA,EAAA,sBiBmFA,4BjBnFA,CiBmF6B,MjBnF7B,EiBmFqC,SjBnFrC,CAAA,GiBoFpB,4BjBpFoB,CiBoFS,MjBpFT,EiBoFiB,SjBpFjB,CAAA,CAAA,GAAA,QiBsFhB,ajBtF0B,GAAA;EAOtB,EAAA,EiBgFJ,iBjBhFI,CiBgFc,MjBhFa,EiBgFL,SjBhFK,EiBgFM,CjBhFN,CAAA,CAAA,IAAA,CAAA;EAAA,aAAA,EiBiFpB,gBjBjFoB;EAAW,WAAA,EiBkFjC,iBjBlFiC,CiBkFf,MjBlFe,EiBkFP,SjBlFO,EiBkFI,CjBlFJ,CAAA,CAAA,aAAA,CAAA;;AAClC,KiBqFJ,UjBrFI,CAAA,eiBsFC,iBjBtFD,EAAA,kBiBuFI,UjBvFJ,CiBuFe,MjBvFf,CAAA,EAAA,sBiBwFQ,wBjBxFR,CiBwFiC,MjBxFjC,EiBwFyC,SjBxFzC,CAAA,CAAA,GiByFZ,WjBzFY,CiByFA,MjBzFA,EiByFQ,SjBzFR,EiByFmB,ajBzFnB,EAAA,IAAA,CAAA;AACI,KiB0FR,WjB1FQ,CAAA,cAAA,MAAA,EAAA,sBiB0FgD,gBjB1FhD,GAAA,CAAA,CAAA,CAAA,GAAA,QiB2FZ,KjB3FgD,GiB2FxC,IjB3FwC,CiB2FnC,oBjB3FmC,EAAA,eAAA,CAAA,GAAA;EAA5C,aAAA,EiB4FO,ajB5FP;;AACyB,KiB+FzB,ejB/FyB,CAAA,cAAA,MAAA,EAAA,sBiB+FmC,gBjB/FnC,GAAA,CAAA,CAAA,CAAA,GAAA,QiBgG7B,KjBhGsC,GAAA;EAAO,EAAA,EiBiG7C,KjBjG6C;EACxC,aAAA,EiBiGM,ajBjGN;EACM,WAAA,EAAA,MAAA;AAAG,CAAA,EAGpB;;;;;AAGsC,ciBmG3B,QjBnG2B,CAAA,UiBmGR,iBjBnGQ,CAAA,CAAA;EAE5B,QAAA,MAAA;EAA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"}