@zveltio/sdk 3.0.0-beta.71 → 3.0.0-beta.74

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/README.md CHANGED
@@ -188,4 +188,16 @@ The engine exposes two endpoints for batch sync:
188
188
  - `POST /api/sync/push` — send offline operations to server
189
189
  - `POST /api/sync/pull` — pull changes since a timestamp
190
190
 
191
- These are used automatically by `SyncManager`. You can also call them directly for custom sync logic.
191
+ `SyncManager.pull()` uses `/api/sync/pull` and keeps its cursors in the local store. Both endpoints take a
192
+ session only: a client authenticated by an API key gets 403, and `pull()` then falls back to paging the
193
+ collections API, which cannot report deletes.
194
+
195
+ A pull returns at most 1000 rows per collection. Send `{ collections, since, cursors }`, merge the
196
+ response's `cursors` into yours, and pull again while `hasMore` is true. Keep `cursors` for the next
197
+ sync — a collection's cursor replaces `since` for it, and is the only position that pages through rows
198
+ sharing one `updated_at` (a bulk import).
199
+
200
+ A row deleted on the server comes back as `{ operation: 'delete', data: null }`; drop your copy. Deletes are
201
+ kept for 30 days: a cursor older than that gets `resync[collection] === true`, and the collection restarts
202
+ from the first row — drop your synced copies of it before applying the page. A first pull (no cursor) gets
203
+ no deletes, so start it from an empty copy.
@@ -1,4 +1,4 @@
1
- import type { Hono } from 'hono';
1
+ import type { Context, Hono } from 'hono';
2
2
  import type { Kysely, RawBuilder } from 'kysely';
3
3
  export { permissionGate } from './permission-gate.js';
4
4
  export { readMultipart, MULTIPART_REQUIRED } from './multipart.js';
@@ -16,6 +16,34 @@ export interface RlsFilter {
16
16
  readonly value?: unknown;
17
17
  };
18
18
  }
19
+ /** What the data API answered a `ctx.internals` write: its HTTP status and JSON body. */
20
+ export interface DataApiAnswer {
21
+ status: number;
22
+ body: Record<string, unknown>;
23
+ }
24
+ /** What `ctx.internals.readScope` resolves: one caller's read gate on one collection. */
25
+ export interface ReadScope {
26
+ /** The physical table the alters and entity checks are registered against. */
27
+ readonly table: string;
28
+ /** Row policies, for a reader that renders them itself. */
29
+ readonly rls: RlsFilter[];
30
+ readonly columns: {
31
+ hidden: Set<string>;
32
+ readOnly: Set<string>;
33
+ };
34
+ /** An extension alter changes what this caller reads (see `admits`). */
35
+ readonly altersRestrict: boolean;
36
+ /** Alters + row policies onto a SELECT builder. Not for UPDATE/DELETE. */
37
+ query<Q>(qb: Q): Q;
38
+ /** The fetched rows entity access lets the caller `view`. */
39
+ keep<R>(rows: R[]): Promise<R[]>;
40
+ /** One row that did not come through `query` (a write's RETURNING): all three row gates in memory. */
41
+ admits(row: Record<string, unknown>): boolean | Promise<boolean>;
42
+ /** Column permissions onto one row. */
43
+ shape<R extends Record<string, unknown>>(row: R): R;
44
+ /** Whether the caller may read — and so filter, sort or join on — this column. */
45
+ readable(column: string): boolean;
46
+ }
19
47
  /**
20
48
  * The filter operators the engine's query compiler understands — the vocabulary
21
49
  * `buildCondition` accepts.
@@ -452,6 +480,38 @@ export interface ExtensionInternals<DB = unknown> {
452
480
  id?: string;
453
481
  role?: string;
454
482
  }) => Promise<string>;
483
+ /**
484
+ * The engine's whole read gate for one caller on one collection: row policies,
485
+ * extension query alters, entity-access checks (`view`) and column
486
+ * permissions, resolved together — what every engine read path uses. Prefer it
487
+ * to composing `getRlsFilters` + `getColumnAccess`, which leaves out the alters
488
+ * and entity checks another extension registered.
489
+ *
490
+ * const scope = await ctx.internals.readScope(coll, user, 'session');
491
+ * const rows = await scope.keep(await scope.query(db.selectFrom(t).selectAll()).execute());
492
+ * return rows.map(scope.shape);
493
+ */
494
+ readScope: (collection: string, user: {
495
+ id: string;
496
+ email?: string;
497
+ role?: string;
498
+ rlsBypass?: boolean;
499
+ }, authType: 'session' | 'api_key') => Promise<ReadScope>;
500
+ /**
501
+ * Write one record exactly as `POST /api/data/:collection` does — access check,
502
+ * column permissions, hooks, then revision, webhooks, flows and realtime — and
503
+ * answer with that route's status and JSON body (201 and the row on success).
504
+ *
505
+ * Acts as the caller the engine authenticated for `c`, the handler's own
506
+ * request context: session or API key, with the key's scopes and authorship.
507
+ * There is no way to name another identity. Throws outside that request (a
508
+ * job, a listener, a context kept from an earlier request). Needs `data:write`.
509
+ */
510
+ createRecord: (c: Context, collection: string, data: Record<string, unknown>) => Promise<DataApiAnswer>;
511
+ /** `PATCH /api/data/:collection/:id`, as `createRecord`: 404 for a row the caller cannot see, 403 for one they may not change. */
512
+ updateRecord: (c: Context, collection: string, id: string, data: Record<string, unknown>) => Promise<DataApiAnswer>;
513
+ /** `DELETE /api/data/:collection/:id`, as `updateRecord`. */
514
+ deleteRecord: (c: Context, collection: string, id: string) => Promise<DataApiAnswer>;
455
515
  /** Is this user an administrator of the current tenant? */
456
516
  /**
457
517
  * The tenant to add as an explicit `tenant_id =` beside the RLS policy, or
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extension/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extension/index.ts"],"names":[],"mappings":"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"}
@@ -56,6 +56,14 @@ export declare class LocalStore {
56
56
  * `delete()` would queue one, echoing the server's own deletion back at it.
57
57
  */
58
58
  applyServerDelete(collection: string, id: string): Promise<void>;
59
+ /**
60
+ * Drop every copy the server confirmed, keeping local edits not yet pushed
61
+ * (`pending`) and unresolved `conflict`s. For a pull that restarts a
62
+ * collection from nothing: a synced row it does not send again is gone.
63
+ */
64
+ dropSynced(collection: string): Promise<void>;
65
+ getMeta<T>(key: string): Promise<T | undefined>;
66
+ setMeta(key: string, value: unknown): Promise<void>;
59
67
  /** Get records with conflicts for UI resolution */
60
68
  getConflicts(collection?: string): Promise<LocalRecord[]>;
61
69
  /** Resolve a conflict (user decides which version wins) */
@@ -1 +1 @@
1
- {"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../src/local-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../src/local-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAoD,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAG/F,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IAEnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAE1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD,qBAAa,UAAU;IACrB,OAAO,CAAC,EAAE,CAA6B;IACvC,OAAO,CAAC,KAAK,CAA6B;IAEpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAuCb,cAAc;IAK5B,iDAAiD;IAE3C,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IA0C1F,gDAAgD;IAC1C,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAO3E,6CAA6C;IACvC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAUtD,8CAA8C;IACxC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B3D,qDAAqD;IAC/C,aAAa,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAK/C,+EAA+E;IACzE,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAqBhB,mEAAmE;IAC7D,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE,qDAAqD;IAC/C,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EAEV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAmEhB;;;OAGG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtE;;;;OAIG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7C,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAK/C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD,mDAAmD;IAC7C,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAW/D,2DAA2D;IACrD,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EAEV,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC;IA4BhB,wEAAwE;IAClE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAehG,wCAAwC;IAClC,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAK/C,qDAAqD;IAC/C,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,2BAA2B;IACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B"}
@@ -228,6 +228,31 @@ export class LocalStore {
228
228
  throw new Error('LocalStore not opened');
229
229
  await this.db.delete('records', [collection, id]);
230
230
  }
231
+ /**
232
+ * Drop every copy the server confirmed, keeping local edits not yet pushed
233
+ * (`pending`) and unresolved `conflict`s. For a pull that restarts a
234
+ * collection from nothing: a synced row it does not send again is gone.
235
+ */
236
+ async dropSynced(collection) {
237
+ if (!this.db)
238
+ throw new Error('LocalStore not opened');
239
+ const tx = this.db.transaction('records', 'readwrite');
240
+ for (const r of (await tx.store.index('by-collection').getAll(collection))) {
241
+ if (r._syncStatus === 'synced')
242
+ await tx.store.delete([collection, r.id]);
243
+ }
244
+ await tx.done;
245
+ }
246
+ async getMeta(key) {
247
+ if (!this.db)
248
+ throw new Error('LocalStore not opened');
249
+ return (await this.db.get('meta', key))?.value;
250
+ }
251
+ async setMeta(key, value) {
252
+ if (!this.db)
253
+ throw new Error('LocalStore not opened');
254
+ await this.db.put('meta', { key, value });
255
+ }
231
256
  /** Get records with conflicts for UI resolution */
232
257
  async getConflicts(collection) {
233
258
  if (!this.db)
@@ -84,10 +84,21 @@ export declare class SyncManager {
84
84
  * a row was created never learns it exists: it missed the event and nothing
85
85
  * ever asks the server what it has. `syncNow()` is push-only despite the name.
86
86
  *
87
- * Pages through `list()` rather than asking for everything at once, and stops
88
- * on the first page that comes back empty or short.
87
+ * Reads `POST /api/sync/pull`, which returns what changed since the cursors
88
+ * kept in the local store, deletes included. Paging `list()` instead — what
89
+ * this did before — never removed anything: a row deleted on the server
90
+ * stayed in every local store that had pulled it.
91
+ *
92
+ * A collection pulled for the first time, or one the server answers with
93
+ * `resync`, loses its synced local rows before the page is applied; local
94
+ * edits not yet pushed stay. `/api/sync` takes sessions only, so a client
95
+ * authenticated by an API key (403) falls back to paging `list()`, without
96
+ * deletes.
89
97
  */
90
98
  pull(collections: string[], pageSize?: number): Promise<number>;
99
+ private pullChanges;
100
+ /** Pages through `list()`; stops on the first page that comes back short. */
101
+ private pullPages;
91
102
  /** Status: pending operations count, conflicts count */
92
103
  getStatus(): Promise<{
93
104
  pending: number;
@@ -1 +1 @@
1
- {"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../src/sync-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IAEpD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC;IAC9C,mHAAmH;IACnH,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;CAC7C;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,SAAS,CAAkB;IACnC,uEAAuE;IACvE,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGvB;IACF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAExB;IAEF,OAAO,CAAC,SAAS,CAAyD;gBAE9D,MAAM,EAAE,aAAa,EAAE,MAAM,GAAE,iBAAsB;IAY3D,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BhD;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM;QAEnB,2CAA2C;;;;;QAU3C,6CAA6C;kBAC7B,MAAM;;;;QAUtB,0CAA0C;uBAErB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;QAYxC,0CAA0C;qBAEvB,MAAM,QAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;QAapD,+CAA+C;qBAC5B,MAAM;QAMzB,qDAAqD;8BAE/B,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,IAAI;QA8C9C,8CAA8C;;QAK9C,kCAAkC;8BAEN,MAAM,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;IAQzE,oCAAoC;IAC9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAwGhB,eAAe;IAmB7B;;;;;;;;OAQG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;;;;;;;;;OAUG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,QAAQ,SAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBlE,wDAAwD;IAClD,SAAS,IAAI,OAAO,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IAUI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAY5B"}
1
+ {"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../src/sync-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAUjD,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IAEpD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC;IAC9C,mHAAmH;IACnH,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;CAC7C;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,SAAS,CAAkB;IACnC,uEAAuE;IACvE,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGvB;IACF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAExB;IAEF,OAAO,CAAC,SAAS,CAAyD;gBAE9D,MAAM,EAAE,aAAa,EAAE,MAAM,GAAE,iBAAsB;IAY3D,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BhD;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM;QAEnB,2CAA2C;;;;;QAU3C,6CAA6C;kBAC7B,MAAM;;;;QAUtB,0CAA0C;uBAErB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;QAYxC,0CAA0C;qBAEvB,MAAM,QAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;;;QAapD,+CAA+C;qBAC5B,MAAM;QAMzB,qDAAqD;8BAE/B,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,IAAI;QA8C9C,8CAA8C;;QAK9C,kCAAkC;8BAEN,MAAM,gBAAgB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;IAQzE,oCAAoC;IAC9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAwGhB,eAAe;IAmB7B;;;;;;;;OAQG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;;;;;;;;;;;;;;;;;OAkBG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,QAAQ,SAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAgBpD,WAAW;IAoCzB,6EAA6E;YAC/D,SAAS;IAsBvB,wDAAwD;IAClD,SAAS,IAAI,OAAO,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IAUI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAY5B"}
@@ -1,6 +1,9 @@
1
1
  import { LocalStore } from './local-store.js';
2
2
  import { mergeLWW, fromDocument } from './crdt.js';
3
3
  import { generateUUID } from './utils.js';
4
+ import { ZveltioApiError } from './errors.js';
5
+ /** Local-store meta key holding `/api/sync/pull` positions, per table. */
6
+ const PULL_CURSORS = 'sync_pull_cursors';
4
7
  export class SyncManager {
5
8
  store;
6
9
  client;
@@ -320,10 +323,67 @@ export class SyncManager {
320
323
  * a row was created never learns it exists: it missed the event and nothing
321
324
  * ever asks the server what it has. `syncNow()` is push-only despite the name.
322
325
  *
323
- * Pages through `list()` rather than asking for everything at once, and stops
324
- * on the first page that comes back empty or short.
326
+ * Reads `POST /api/sync/pull`, which returns what changed since the cursors
327
+ * kept in the local store, deletes included. Paging `list()` instead — what
328
+ * this did before — never removed anything: a row deleted on the server
329
+ * stayed in every local store that had pulled it.
330
+ *
331
+ * A collection pulled for the first time, or one the server answers with
332
+ * `resync`, loses its synced local rows before the page is applied; local
333
+ * edits not yet pushed stay. `/api/sync` takes sessions only, so a client
334
+ * authenticated by an API key (403) falls back to paging `list()`, without
335
+ * deletes.
325
336
  */
326
337
  async pull(collections, pageSize = 200) {
338
+ let applied = 0;
339
+ // The server takes at most 20 collections per pull.
340
+ for (let i = 0; i < collections.length; i += 20) {
341
+ const names = collections.slice(i, i + 20);
342
+ try {
343
+ applied += await this.pullChanges(names);
344
+ }
345
+ catch (err) {
346
+ if (!(err instanceof ZveltioApiError && err.status === 403))
347
+ throw err;
348
+ applied += await this.pullPages(names, pageSize);
349
+ }
350
+ for (const name of names)
351
+ await this.notifyListeners(name);
352
+ }
353
+ return applied;
354
+ }
355
+ async pullChanges(names) {
356
+ const byTable = new Map(names.map((n) => [n.startsWith('zvd_') ? n : `zvd_${n}`, n]));
357
+ const cursors = (await this.store.getMeta(PULL_CURSORS)) ?? {};
358
+ for (const [table, name] of byTable) {
359
+ if (!cursors[table])
360
+ await this.store.dropSynced(name);
361
+ }
362
+ let applied = 0;
363
+ for (;;) {
364
+ const res = await this.client.post('/api/sync/pull', { collections: [...byTable.keys()], since: 0, cursors });
365
+ for (const [table, flag] of Object.entries(res.resync ?? {})) {
366
+ const name = byTable.get(table);
367
+ if (flag && name)
368
+ await this.store.dropSynced(name);
369
+ }
370
+ for (const ch of res.changes) {
371
+ const name = byTable.get(ch.collection) ?? ch.collection;
372
+ if (ch.operation === 'delete')
373
+ await this.store.applyServerDelete(name, ch.id);
374
+ else
375
+ await this.store.applyServerUpdate(name, ch.id, ch.data ?? {}, Date.now());
376
+ applied++;
377
+ }
378
+ // Saved only after the page is applied: a pull cut short resumes here.
379
+ Object.assign(cursors, res.cursors);
380
+ await this.store.setMeta(PULL_CURSORS, cursors);
381
+ if (!res.hasMore)
382
+ return applied;
383
+ }
384
+ }
385
+ /** Pages through `list()`; stops on the first page that comes back short. */
386
+ async pullPages(collections, pageSize) {
327
387
  let applied = 0;
328
388
  for (const name of collections) {
329
389
  for (let page = 1;; page++) {
@@ -343,7 +403,6 @@ export class SyncManager {
343
403
  if (rows.length < pageSize)
344
404
  break;
345
405
  }
346
- await this.notifyListeners(name);
347
406
  }
348
407
  return applied;
349
408
  }
@@ -20,24 +20,66 @@ import { createOfflineProvider } from '../offline/index.js';
20
20
  const ENGINE = 'http://engine.test';
21
21
  /** Rows the fake engine holds, by collection. */
22
22
  let served = {};
23
+ /** Ids the fake engine reports deleted (tombstones), by collection. */
24
+ let tombstones = {};
25
+ /** Collections the next pull answers with `resync`. */
26
+ let resync = {};
27
+ /** `/api/sync/pull` answers 403, as it does to an API key. */
28
+ let pullForbidden = false;
29
+ /** Bodies `/api/sync/pull` received. */
30
+ let pullBodies = [];
23
31
  /** Every request the provider made, so "did it even ask" is answerable. */
24
32
  let requests = [];
25
33
  const realFetch = globalThis.fetch;
34
+ function json(body, status = 200) {
35
+ return new Response(JSON.stringify(body), {
36
+ status,
37
+ headers: { 'content-type': 'application/json' },
38
+ });
39
+ }
26
40
  beforeEach(async () => {
27
41
  served = {};
42
+ tombstones = {};
43
+ resync = {};
44
+ pullForbidden = false;
45
+ pullBodies = [];
28
46
  requests = [];
29
47
  globalThis.fetch = (async (input, init) => {
30
48
  const url = typeof input === 'string' ? input : input.toString();
31
49
  requests.push(`${init?.method ?? 'GET'} ${url.replace(ENGINE, '')}`);
50
+ if (url.endsWith('/api/sync/pull')) {
51
+ if (pullForbidden)
52
+ return json({ error: 'Session required' }, 403);
53
+ const body = JSON.parse(String(init?.body));
54
+ pullBodies.push(body);
55
+ const changes = [];
56
+ const cursors = {};
57
+ for (const table of body.collections) {
58
+ const name = table.replace(/^zvd_/, '');
59
+ // A cursor means rows already sent: only tombstones follow it, unless
60
+ // the collection restarts (`resync`) or has none.
61
+ if (body.cursors?.[table] && !resync[table]) {
62
+ for (const id of tombstones[name] ?? []) {
63
+ changes.push({ collection: table, id, data: null, operation: 'delete' });
64
+ }
65
+ }
66
+ else {
67
+ for (const row of served[name] ?? []) {
68
+ changes.push({ collection: table, id: row.id, data: row, operation: 'upsert' });
69
+ }
70
+ }
71
+ cursors[table] = `pos-${pullBodies.length}`;
72
+ }
73
+ const answer = { changes, hasMore: false, cursors, resync };
74
+ resync = {};
75
+ return json(answer);
76
+ }
32
77
  const match = url.match(/\/api\/data\/([^/?]+)/);
33
78
  const name = match?.[1] ?? '';
34
79
  const page = Number(new URL(url).searchParams.get('page') ?? '1');
35
80
  // One page only: page 2 comes back empty, which is how `pull` stops.
36
81
  const data = page === 1 ? (served[name] ?? []) : [];
37
- return new Response(JSON.stringify({ data, total: data.length, page, limit: 200 }), {
38
- status: 200,
39
- headers: { 'content-type': 'application/json' },
40
- });
82
+ return json({ data, total: data.length, page, limit: 200 });
41
83
  });
42
84
  const store = new LocalStore();
43
85
  await store.open();
@@ -73,7 +115,7 @@ describe('createOfflineProvider — the crdt path actually syncs', () => {
73
115
  expect(rows.find((r) => r.id === 'o-1')?.data.total).toBe(10);
74
116
  // The old implementation made no request at all. This is the assertion that
75
117
  // would have caught it.
76
- expect(requests.some((r) => r.startsWith('GET /api/data/orders'))).toBe(true);
118
+ expect(requests).toContain('POST /api/sync/pull');
77
119
  });
78
120
  it('pull refuses an empty table list instead of quietly doing nothing', async () => {
79
121
  // Silence here is exactly what the no-op was. A provider asked to replicate
@@ -116,4 +158,47 @@ describe('createOfflineProvider — the crdt path actually syncs', () => {
116
158
  expect(seen.length).toBe(countAtUnsubscribe);
117
159
  await p.close();
118
160
  });
161
+ it('a row deleted on the server leaves the local store on the next pull', async () => {
162
+ served.orders = [
163
+ { id: 'o-1', total: 10 },
164
+ { id: 'o-2', total: 20 },
165
+ ];
166
+ const p = await createOfflineProvider({ engineUrl: ENGINE, tables: ['orders'] });
167
+ await p.pull();
168
+ served.orders = [];
169
+ tombstones.orders = ['o-2'];
170
+ await p.pull();
171
+ await p.close();
172
+ // The second pull resumed from the cursor the first one saved.
173
+ expect(pullBodies[1]?.cursors).toEqual({ zvd_orders: 'pos-1' });
174
+ expect((await localRows('orders')).map((r) => r.id)).toEqual(['o-1']);
175
+ });
176
+ it('resync drops synced rows the server no longer sends, keeping unpushed edits', async () => {
177
+ served.orders = [
178
+ { id: 'o-1', total: 10 },
179
+ { id: 'o-2', total: 20 },
180
+ ];
181
+ const p = await createOfflineProvider({ engineUrl: ENGINE, tables: ['orders'] });
182
+ await p.pull();
183
+ const store = new LocalStore();
184
+ await store.open();
185
+ await store.put('orders', 'o-local', { total: 1 });
186
+ await store.close();
187
+ served.orders = [{ id: 'o-1', total: 11 }];
188
+ resync = { zvd_orders: true };
189
+ await p.pull();
190
+ await p.close();
191
+ const rows = await localRows('orders');
192
+ expect(rows.map((r) => r.id).sort()).toEqual(['o-1', 'o-local']);
193
+ expect(rows.find((r) => r.id === 'o-1')?.data.total).toBe(11);
194
+ });
195
+ it('a client the sync endpoint refuses (API key, 403) still pulls through the data API', async () => {
196
+ served.orders = [{ id: 'o-1', total: 10 }];
197
+ pullForbidden = true;
198
+ const p = await createOfflineProvider({ engineUrl: ENGINE, tables: ['orders'] });
199
+ await p.pull();
200
+ await p.close();
201
+ expect((await localRows('orders')).map((r) => r.id)).toEqual(['o-1']);
202
+ expect(requests.some((r) => r.startsWith('GET /api/data/orders'))).toBe(true);
203
+ });
119
204
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zveltio/sdk",
3
- "version": "3.0.0-beta.71",
3
+ "version": "3.0.0-beta.74",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",