@syncular/client 0.0.6-206 → 0.0.6-210

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.
@@ -1 +1 @@
1
- {"version":3,"file":"pull-engine.d.ts","sourceRoot":"","sources":["../src/pull-engine.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAGV,UAAU,EACV,eAAe,EACf,gBAAgB,EAGhB,uBAAuB,EACvB,aAAa,EACd,MAAM,gBAAgB,CAAC;AASxB,OAAO,EAAE,KAAK,MAAM,EAAO,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AA0kBzE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B;;;OAGG;IACH,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACtD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,SAAS,YAAY,EAC5D,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAuC/B;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,oBAAoB,EAC/B,QAAQ,EAAE,gBAAgB,GACzB,oBAAoB,CA2DtB;AAED,wBAAsB,6BAA6B,CAAC,EAAE,SAAS,YAAY,EACzE,QAAQ,EAAE,uBAAuB,CAAC,EAAE,CAAC,EACrC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC,EACpB,IAAI,EAAE;IACJ,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GACA,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,SAAS,YAAY,EAC7D,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,uBAAuB,CAAC,EAAE,CAAC,EACrC,OAAO,EAAE,mBAAmB,EAC5B,SAAS,EAAE,oBAAoB,EAC/B,WAAW,EAAE,gBAAgB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAyQ3B;AAED,wBAAsB,YAAY,CAAC,EAAE,SAAS,YAAY,EACxD,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,uBAAuB,CAAC,EAAE,CAAC,EACrC,OAAO,EAAE,mBAAmB,EAC5B,iBAAiB,CAAC,EAAE,oBAAoB,GACvC,OAAO,CAAC,gBAAgB,CAAC,CAe3B"}
1
+ {"version":3,"file":"pull-engine.d.ts","sourceRoot":"","sources":["../src/pull-engine.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAGV,UAAU,EACV,eAAe,EACf,gBAAgB,EAGhB,uBAAuB,EACvB,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,MAAM,EAAO,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAC;AA4oBzE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B;;;OAGG;IACH,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACtD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,SAAS,YAAY,EAC5D,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAuC/B;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,oBAAoB,EAC/B,QAAQ,EAAE,gBAAgB,GACzB,oBAAoB,CA2DtB;AAED,wBAAsB,6BAA6B,CAAC,EAAE,SAAS,YAAY,EACzE,QAAQ,EAAE,uBAAuB,CAAC,EAAE,CAAC,EACrC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC,EACpB,IAAI,EAAE;IACJ,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GACA,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,SAAS,YAAY,EAC7D,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,uBAAuB,CAAC,EAAE,CAAC,EACrC,OAAO,EAAE,mBAAmB,EAC5B,SAAS,EAAE,oBAAoB,EAC/B,WAAW,EAAE,gBAAgB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAyQ3B;AAED,wBAAsB,YAAY,CAAC,EAAE,SAAS,YAAY,EACxD,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,uBAAuB,CAAC,EAAE,CAAC,EACrC,OAAO,EAAE,mBAAmB,EAC5B,iBAAiB,CAAC,EAAE,oBAAoB,GACvC,OAAO,CAAC,gBAAgB,CAAC,CAe3B"}
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * @syncular/client - Sync pull engine
3
3
  */
4
- import { bytesToReadableStream, readAllBytesFromStream, SYNC_SNAPSHOT_CHUNK_COMPRESSION, SYNC_SNAPSHOT_CHUNK_ENCODING, SYNC_SNAPSHOT_CHUNK_MAGIC, sha256Hex, } from '@syncular/core';
5
4
  import { sql } from 'kysely';
6
5
  import { getClientHandlerOrThrow, } from './handlers/collection.js';
7
6
  // Simple JSON serialization cache to avoid repeated stringification
@@ -9,6 +8,7 @@ import { getClientHandlerOrThrow, } from './handlers/collection.js';
9
8
  const jsonCache = new WeakMap();
10
9
  const jsonCacheStats = { hits: 0, misses: 0 };
11
10
  const SNAPSHOT_APPLY_BATCH_ROWS = 500;
11
+ const SNAPSHOT_ROW_FRAME_MAGIC = new Uint8Array([0x53, 0x52, 0x46, 0x31]); // "SRF1"
12
12
  const FRAME_LENGTH_BYTES = 4;
13
13
  function serializeJsonCached(obj) {
14
14
  if (obj === null || typeof obj !== 'object') {
@@ -27,6 +27,32 @@ function serializeJsonCached(obj) {
27
27
  }
28
28
  return serialized;
29
29
  }
30
+ function isGzipBytes(bytes) {
31
+ return bytes.length >= 2 && bytes[0] === 0x1f && bytes[1] === 0x8b;
32
+ }
33
+ function bytesToReadableStream(bytes) {
34
+ return new ReadableStream({
35
+ start(controller) {
36
+ controller.enqueue(bytes);
37
+ controller.close();
38
+ },
39
+ });
40
+ }
41
+ function concatBytes(chunks) {
42
+ if (chunks.length === 1) {
43
+ return chunks[0] ?? new Uint8Array();
44
+ }
45
+ let total = 0;
46
+ for (const chunk of chunks)
47
+ total += chunk.length;
48
+ const out = new Uint8Array(total);
49
+ let offset = 0;
50
+ for (const chunk of chunks) {
51
+ out.set(chunk, offset);
52
+ offset += chunk.length;
53
+ }
54
+ return out;
55
+ }
30
56
  function appendBytes(base, next) {
31
57
  if (base.length === 0)
32
58
  return next;
@@ -37,43 +63,55 @@ function appendBytes(base, next) {
37
63
  out.set(next, base.length);
38
64
  return out;
39
65
  }
40
- function toHex(bytes) {
41
- return Array.from(bytes)
42
- .map((byte) => byte.toString(16).padStart(2, '0'))
43
- .join('');
44
- }
45
- function getDigestStreamConstructor() {
46
- if (typeof crypto === 'undefined')
47
- return null;
48
- const cryptoWithDigestStream = crypto;
49
- return cryptoWithDigestStream.DigestStream ?? null;
50
- }
51
- async function decodeSnapshotChunkStream(args) {
52
- if (args.encoding !== SYNC_SNAPSHOT_CHUNK_ENCODING) {
53
- throw new Error(`Unexpected snapshot chunk encoding: ${args.encoding}`);
54
- }
55
- if (args.compression !== SYNC_SNAPSHOT_CHUNK_COMPRESSION) {
56
- throw new Error(`Unexpected snapshot chunk compression: ${args.compression}`);
57
- }
58
- if (typeof DecompressionStream === 'undefined') {
59
- throw new Error('Snapshot chunk gzip decompression is not available in this runtime');
60
- }
61
- return args.stream.pipeThrough(new DecompressionStream('gzip'));
66
+ function toOwnedUint8Array(chunk) {
67
+ const out = new ArrayBuffer(chunk.byteLength);
68
+ const bytes = new Uint8Array(out);
69
+ bytes.set(chunk);
70
+ return bytes;
62
71
  }
63
- async function computeSha256HexFromStream(stream, sha256Override) {
64
- if (sha256Override) {
65
- const bytes = await readAllBytesFromStream(stream);
66
- return sha256Override(bytes);
72
+ async function maybeGunzipStream(stream) {
73
+ const reader = stream.getReader();
74
+ const prefetched = [];
75
+ let prefetchedBytes = 0;
76
+ while (prefetchedBytes < 2) {
77
+ const { done, value } = await reader.read();
78
+ if (done)
79
+ break;
80
+ if (!value || value.length === 0)
81
+ continue;
82
+ prefetched.push(value);
83
+ prefetchedBytes += value.length;
67
84
  }
68
- const DigestStream = getDigestStreamConstructor();
69
- if (DigestStream) {
70
- const digester = new DigestStream('SHA-256');
71
- await stream.pipeTo(digester);
72
- const digest = await digester.digest;
73
- return toHex(new Uint8Array(digest));
85
+ const prefetchedCombined = concatBytes(prefetched);
86
+ const gzip = isGzipBytes(prefetchedCombined);
87
+ const replayStream = new ReadableStream({
88
+ start(controller) {
89
+ if (prefetchedCombined.length > 0) {
90
+ controller.enqueue(toOwnedUint8Array(prefetchedCombined));
91
+ }
92
+ },
93
+ async pull(controller) {
94
+ const { done, value } = await reader.read();
95
+ if (done) {
96
+ controller.close();
97
+ reader.releaseLock();
98
+ return;
99
+ }
100
+ if (!value || value.length === 0)
101
+ return;
102
+ controller.enqueue(toOwnedUint8Array(value));
103
+ },
104
+ async cancel(reason) {
105
+ await reader.cancel(reason);
106
+ reader.releaseLock();
107
+ },
108
+ });
109
+ if (!gzip)
110
+ return replayStream;
111
+ if (typeof DecompressionStream !== 'undefined') {
112
+ return replayStream.pipeThrough(new DecompressionStream('gzip'));
74
113
  }
75
- const bytes = await readAllBytesFromStream(stream);
76
- return sha256Hex(bytes);
114
+ throw new Error('Snapshot chunk appears gzip-compressed but gzip decompression is not available in this runtime');
77
115
  }
78
116
  async function* decodeSnapshotRowStreamBatches(stream, batchSize) {
79
117
  const reader = stream.getReader();
@@ -90,15 +128,15 @@ async function* decodeSnapshotRowStreamBatches(stream, batchSize) {
90
128
  continue;
91
129
  pending = appendBytes(pending, value);
92
130
  if (!headerValidated) {
93
- if (pending.length < SYNC_SNAPSHOT_CHUNK_MAGIC.length) {
131
+ if (pending.length < SNAPSHOT_ROW_FRAME_MAGIC.length) {
94
132
  continue;
95
133
  }
96
- for (let index = 0; index < SYNC_SNAPSHOT_CHUNK_MAGIC.length; index++) {
97
- if (pending[index] !== SYNC_SNAPSHOT_CHUNK_MAGIC[index]) {
134
+ for (let index = 0; index < SNAPSHOT_ROW_FRAME_MAGIC.length; index++) {
135
+ if (pending[index] !== SNAPSHOT_ROW_FRAME_MAGIC[index]) {
98
136
  throw new Error('Unexpected snapshot chunk format');
99
137
  }
100
138
  }
101
- pending = pending.subarray(SYNC_SNAPSHOT_CHUNK_MAGIC.length);
139
+ pending = pending.subarray(SNAPSHOT_ROW_FRAME_MAGIC.length);
102
140
  headerValidated = true;
103
141
  }
104
142
  while (pending.length >= FRAME_LENGTH_BYTES) {
@@ -108,11 +146,7 @@ async function* decodeSnapshotRowStreamBatches(stream, batchSize) {
108
146
  break;
109
147
  }
110
148
  const payload = pending.subarray(FRAME_LENGTH_BYTES, FRAME_LENGTH_BYTES + payloadLength);
111
- const parsed = JSON.parse(decoder.decode(payload));
112
- if (!Array.isArray(parsed)) {
113
- throw new Error('Snapshot chunk frame payload must be a JSON array');
114
- }
115
- rows.push(...parsed);
149
+ rows.push(JSON.parse(decoder.decode(payload)));
116
150
  pending = pending.subarray(FRAME_LENGTH_BYTES + payloadLength);
117
151
  if (rows.length >= batchSize) {
118
152
  yield rows;
@@ -139,11 +173,7 @@ async function* decodeSnapshotRowStreamBatches(stream, batchSize) {
139
173
  break;
140
174
  }
141
175
  const payload = pending.subarray(FRAME_LENGTH_BYTES, FRAME_LENGTH_BYTES + nextLength);
142
- const parsed = JSON.parse(decoder.decode(payload));
143
- if (!Array.isArray(parsed)) {
144
- throw new Error('Snapshot chunk frame payload must be a JSON array');
145
- }
146
- rows.push(...parsed);
176
+ rows.push(JSON.parse(decoder.decode(payload)));
147
177
  pending = pending.subarray(FRAME_LENGTH_BYTES + nextLength);
148
178
  if (rows.length >= batchSize) {
149
179
  yield rows;
@@ -162,6 +192,23 @@ async function* decodeSnapshotRowStreamBatches(stream, batchSize) {
162
192
  reader.releaseLock();
163
193
  }
164
194
  }
195
+ async function computeSha256Hex(bytes, sha256Override) {
196
+ // Use injected implementation if provided (e.g. expo-crypto on React Native)
197
+ if (sha256Override) {
198
+ return sha256Override(bytes);
199
+ }
200
+ // Use crypto.subtle if available (browsers, modern Node/Bun)
201
+ if (typeof crypto !== 'undefined' && crypto.subtle) {
202
+ // Create a fresh ArrayBuffer to satisfy crypto.subtle's type requirements
203
+ const buffer = new ArrayBuffer(bytes.length);
204
+ new Uint8Array(buffer).set(bytes);
205
+ const hashBuffer = await crypto.subtle.digest('SHA-256', buffer);
206
+ const hashArray = new Uint8Array(hashBuffer);
207
+ return Array.from(hashArray, (b) => b.toString(16).padStart(2, '0')).join('');
208
+ }
209
+ throw new Error('No crypto implementation available for SHA-256. ' +
210
+ 'Provide a sha256 function via options or ensure crypto.subtle is available.');
211
+ }
165
212
  async function fetchSnapshotChunkStream(transport, request) {
166
213
  if (transport.fetchSnapshotChunkStream) {
167
214
  return transport.fetchSnapshotChunkStream(request);
@@ -169,19 +216,48 @@ async function fetchSnapshotChunkStream(transport, request) {
169
216
  const bytes = await transport.fetchSnapshotChunk(request);
170
217
  return bytesToReadableStream(bytes);
171
218
  }
172
- async function materializeSnapshotChunkRows(transport, request, chunk, sha256Override) {
219
+ async function readAllBytesFromStream(stream) {
220
+ const reader = stream.getReader();
221
+ const chunks = [];
222
+ let totalLength = 0;
223
+ try {
224
+ while (true) {
225
+ // eslint-disable-next-line no-await-in-loop
226
+ const { done, value } = await reader.read();
227
+ if (done)
228
+ break;
229
+ if (!value)
230
+ continue;
231
+ chunks.push(value);
232
+ totalLength += value.byteLength;
233
+ }
234
+ }
235
+ finally {
236
+ reader.releaseLock();
237
+ }
238
+ if (chunks.length === 0) {
239
+ return new Uint8Array();
240
+ }
241
+ if (chunks.length === 1) {
242
+ return chunks[0];
243
+ }
244
+ const bytes = new Uint8Array(totalLength);
245
+ let offset = 0;
246
+ for (const chunk of chunks) {
247
+ bytes.set(chunk, offset);
248
+ offset += chunk.byteLength;
249
+ }
250
+ return bytes;
251
+ }
252
+ async function materializeSnapshotChunkRows(transport, request, expectedHash, sha256Override) {
173
253
  const rawStream = await fetchSnapshotChunkStream(transport, request);
174
- const decodedStream = await decodeSnapshotChunkStream({
175
- stream: rawStream,
176
- compression: chunk.compression,
177
- encoding: chunk.encoding,
178
- });
254
+ const decodedStream = await maybeGunzipStream(rawStream);
179
255
  let streamForDecode = decodedStream;
180
256
  let chunkHashPromise = null;
181
- if (chunk.sha256) {
257
+ if (expectedHash) {
182
258
  const [hashStream, decodeStream] = decodedStream.tee();
183
259
  streamForDecode = decodeStream;
184
- chunkHashPromise = computeSha256HexFromStream(hashStream, sha256Override);
260
+ chunkHashPromise = readAllBytesFromStream(hashStream).then((bytes) => computeSha256Hex(bytes, sha256Override));
185
261
  }
186
262
  const rows = [];
187
263
  let materializeError = null;
@@ -196,8 +272,8 @@ async function materializeSnapshotChunkRows(transport, request, chunk, sha256Ove
196
272
  if (chunkHashPromise) {
197
273
  try {
198
274
  const actualHash = await chunkHashPromise;
199
- if (!materializeError && actualHash !== chunk.sha256) {
200
- materializeError = new Error(`Snapshot chunk integrity check failed: expected sha256 ${chunk.sha256}, got ${actualHash}`);
275
+ if (!materializeError && actualHash !== expectedHash) {
276
+ materializeError = new Error(`Snapshot chunk integrity check failed: expected sha256 ${expectedHash}, got ${actualHash}`);
201
277
  }
202
278
  }
203
279
  catch (hashError) {
@@ -230,7 +306,7 @@ async function materializeChunkedSnapshots(transport, response, sha256Override)
230
306
  const chunkRows = await materializeSnapshotChunkRows(transport, {
231
307
  chunkId: chunk.id,
232
308
  scopeValues: sub.scopes,
233
- }, chunk, sha256Override);
309
+ }, chunk.sha256, sha256Override);
234
310
  rows.push(...chunkRows);
235
311
  }
236
312
  snapshots.push({
@@ -261,17 +337,13 @@ async function applyChunkedSnapshot(transport, handler, trx, snapshot, scopeValu
261
337
  chunkId: chunk.id,
262
338
  scopeValues,
263
339
  });
264
- const decodedStream = await decodeSnapshotChunkStream({
265
- stream: rawStream,
266
- compression: chunk.compression,
267
- encoding: chunk.encoding,
268
- });
340
+ const decodedStream = await maybeGunzipStream(rawStream);
269
341
  let streamForDecode = decodedStream;
270
342
  let chunkHashPromise = null;
271
343
  if (chunk.sha256) {
272
344
  const [hashStream, decodeStream] = decodedStream.tee();
273
345
  streamForDecode = decodeStream;
274
- chunkHashPromise = computeSha256HexFromStream(hashStream, sha256Override);
346
+ chunkHashPromise = readAllBytesFromStream(hashStream).then((bytes) => computeSha256Hex(bytes, sha256Override));
275
347
  }
276
348
  const rowBatchIterator = decodeSnapshotRowStreamBatches(streamForDecode, SNAPSHOT_APPLY_BATCH_ROWS);
277
349
  let pendingBatch = null;
@@ -1 +1 @@
1
- {"version":3,"file":"pull-engine.js","sourceRoot":"","sources":["../src/pull-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pull-engine.js","sourceRoot":"","sources":["../src/pull-engine.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syncular/client",
3
- "version": "0.0.6-206",
3
+ "version": "0.0.6-210",
4
4
  "description": "Client-side sync engine with offline-first support, outbox, and conflict resolution",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Benjamin Kniffler",
@@ -119,8 +119,8 @@
119
119
  "release": "bunx syncular-publish"
120
120
  },
121
121
  "dependencies": {
122
- "@syncular/core": "0.0.6-206",
123
- "@syncular/transport-http": "0.0.6-206"
122
+ "@syncular/core": "0.0.6-210",
123
+ "@syncular/transport-http": "0.0.6-210"
124
124
  },
125
125
  "peerDependencies": {
126
126
  "kysely": "*"
@@ -1130,7 +1130,7 @@ describe('SyncEngine WS inline apply', () => {
1130
1130
  id: 'chunk-retry-1',
1131
1131
  byteLength: payload.length,
1132
1132
  sha256: '',
1133
- encoding: 'json-row-batch-frame-v2',
1133
+ encoding: 'json-row-frame-v1',
1134
1134
  compression: 'gzip',
1135
1135
  },
1136
1136
  ],
@@ -133,7 +133,7 @@ describe('applyPullResponse chunk streaming', () => {
133
133
  id: 'chunk-1',
134
134
  byteLength: compressed.length,
135
135
  sha256: '',
136
- encoding: 'json-row-batch-frame-v2',
136
+ encoding: 'json-row-frame-v1',
137
137
  compression: 'gzip',
138
138
  },
139
139
  ],
@@ -258,14 +258,14 @@ describe('applyPullResponse chunk streaming', () => {
258
258
  id: 'chunk-1',
259
259
  byteLength: firstChunk.length,
260
260
  sha256: '',
261
- encoding: 'json-row-batch-frame-v2',
261
+ encoding: 'json-row-frame-v1',
262
262
  compression: 'gzip',
263
263
  },
264
264
  {
265
265
  id: 'chunk-2',
266
266
  byteLength: secondChunk.length,
267
267
  sha256: '',
268
- encoding: 'json-row-batch-frame-v2',
268
+ encoding: 'json-row-frame-v1',
269
269
  compression: 'gzip',
270
270
  },
271
271
  ],
@@ -374,14 +374,14 @@ describe('applyPullResponse chunk streaming', () => {
374
374
  id: 'chunk-1',
375
375
  byteLength: firstChunk.length,
376
376
  sha256: '',
377
- encoding: 'json-row-batch-frame-v2',
377
+ encoding: 'json-row-frame-v1',
378
378
  compression: 'gzip',
379
379
  },
380
380
  {
381
381
  id: 'chunk-2',
382
382
  byteLength: secondChunk.length,
383
383
  sha256: '',
384
- encoding: 'json-row-batch-frame-v2',
384
+ encoding: 'json-row-frame-v1',
385
385
  compression: 'gzip',
386
386
  },
387
387
  ],
@@ -497,7 +497,7 @@ describe('applyPullResponse chunk streaming', () => {
497
497
  id: 'chunk-1',
498
498
  byteLength: chunk.length,
499
499
  sha256: 'deadbeef',
500
- encoding: 'json-row-batch-frame-v2',
500
+ encoding: 'json-row-frame-v1',
501
501
  compression: 'gzip',
502
502
  },
503
503
  ],
@@ -592,7 +592,7 @@ describe('applyPullResponse chunk streaming', () => {
592
592
  id: 'chunk-1',
593
593
  byteLength: chunk.length,
594
594
  sha256: 'expected-hash',
595
- encoding: 'json-row-batch-frame-v2',
595
+ encoding: 'json-row-frame-v1',
596
596
  compression: 'gzip',
597
597
  },
598
598
  ],
@@ -700,14 +700,14 @@ describe('applyPullResponse chunk streaming', () => {
700
700
  id: 'chunk-1',
701
701
  byteLength: firstChunk.length,
702
702
  sha256: 'hash-1',
703
- encoding: 'json-row-batch-frame-v2',
703
+ encoding: 'json-row-frame-v1',
704
704
  compression: 'gzip',
705
705
  },
706
706
  {
707
707
  id: 'chunk-2',
708
708
  byteLength: secondChunk.length,
709
709
  sha256: 'hash-2',
710
- encoding: 'json-row-batch-frame-v2',
710
+ encoding: 'json-row-frame-v1',
711
711
  compression: 'gzip',
712
712
  },
713
713
  ],
@@ -804,7 +804,7 @@ describe('applyPullResponse chunk streaming', () => {
804
804
  id: 'chunk-1',
805
805
  byteLength: chunk.length,
806
806
  sha256: '',
807
- encoding: 'json-row-batch-frame-v2',
807
+ encoding: 'json-row-frame-v1',
808
808
  compression: 'gzip',
809
809
  },
810
810
  ],
@@ -13,14 +13,6 @@ import type {
13
13
  SyncSubscriptionRequest,
14
14
  SyncTransport,
15
15
  } from '@syncular/core';
16
- import {
17
- bytesToReadableStream,
18
- readAllBytesFromStream,
19
- SYNC_SNAPSHOT_CHUNK_COMPRESSION,
20
- SYNC_SNAPSHOT_CHUNK_ENCODING,
21
- SYNC_SNAPSHOT_CHUNK_MAGIC,
22
- sha256Hex,
23
- } from '@syncular/core';
24
16
  import { type Kysely, sql, type Transaction } from 'kysely';
25
17
  import {
26
18
  type ClientHandlerCollection,
@@ -38,16 +30,9 @@ import type { SyncClientDb, SyncSubscriptionStateTable } from './schema';
38
30
  const jsonCache = new WeakMap<object, string>();
39
31
  const jsonCacheStats = { hits: 0, misses: 0 };
40
32
  const SNAPSHOT_APPLY_BATCH_ROWS = 500;
33
+ const SNAPSHOT_ROW_FRAME_MAGIC = new Uint8Array([0x53, 0x52, 0x46, 0x31]); // "SRF1"
41
34
  const FRAME_LENGTH_BYTES = 4;
42
35
 
43
- interface DigestStreamLike extends WritableStream<Uint8Array> {
44
- readonly digest: Promise<ArrayBuffer>;
45
- }
46
-
47
- interface CryptoWithDigestStream extends Crypto {
48
- DigestStream?: new (algorithm: 'SHA-256') => DigestStreamLike;
49
- }
50
-
51
36
  function serializeJsonCached(obj: object): string {
52
37
  if (obj === null || typeof obj !== 'object') {
53
38
  return JSON.stringify(obj);
@@ -66,6 +51,34 @@ function serializeJsonCached(obj: object): string {
66
51
  return serialized;
67
52
  }
68
53
 
54
+ function isGzipBytes(bytes: Uint8Array): boolean {
55
+ return bytes.length >= 2 && bytes[0] === 0x1f && bytes[1] === 0x8b;
56
+ }
57
+
58
+ function bytesToReadableStream(bytes: Uint8Array): ReadableStream<Uint8Array> {
59
+ return new ReadableStream<Uint8Array>({
60
+ start(controller) {
61
+ controller.enqueue(bytes);
62
+ controller.close();
63
+ },
64
+ });
65
+ }
66
+
67
+ function concatBytes(chunks: readonly Uint8Array[]): Uint8Array {
68
+ if (chunks.length === 1) {
69
+ return chunks[0] ?? new Uint8Array();
70
+ }
71
+ let total = 0;
72
+ for (const chunk of chunks) total += chunk.length;
73
+ const out = new Uint8Array(total);
74
+ let offset = 0;
75
+ for (const chunk of chunks) {
76
+ out.set(chunk, offset);
77
+ offset += chunk.length;
78
+ }
79
+ return out;
80
+ }
81
+
69
82
  function appendBytes(base: Uint8Array, next: Uint8Array): Uint8Array {
70
83
  if (base.length === 0) return next;
71
84
  if (next.length === 0) return base;
@@ -75,64 +88,62 @@ function appendBytes(base: Uint8Array, next: Uint8Array): Uint8Array {
75
88
  return out;
76
89
  }
77
90
 
78
- function toHex(bytes: Uint8Array): string {
79
- return Array.from(bytes)
80
- .map((byte) => byte.toString(16).padStart(2, '0'))
81
- .join('');
82
- }
83
-
84
- function getDigestStreamConstructor():
85
- | (new (
86
- algorithm: 'SHA-256'
87
- ) => DigestStreamLike)
88
- | null {
89
- if (typeof crypto === 'undefined') return null;
90
- const cryptoWithDigestStream: CryptoWithDigestStream = crypto;
91
- return cryptoWithDigestStream.DigestStream ?? null;
91
+ function toOwnedUint8Array(chunk: Uint8Array): Uint8Array<ArrayBuffer> {
92
+ const out = new ArrayBuffer(chunk.byteLength);
93
+ const bytes = new Uint8Array(out);
94
+ bytes.set(chunk);
95
+ return bytes;
92
96
  }
93
97
 
94
- async function decodeSnapshotChunkStream(args: {
95
- stream: ReadableStream<Uint8Array>;
96
- compression: string;
97
- encoding: string;
98
- }): Promise<ReadableStream<Uint8Array>> {
99
- if (args.encoding !== SYNC_SNAPSHOT_CHUNK_ENCODING) {
100
- throw new Error(`Unexpected snapshot chunk encoding: ${args.encoding}`);
101
- }
102
- if (args.compression !== SYNC_SNAPSHOT_CHUNK_COMPRESSION) {
103
- throw new Error(
104
- `Unexpected snapshot chunk compression: ${args.compression}`
105
- );
106
- }
107
- if (typeof DecompressionStream === 'undefined') {
108
- throw new Error(
109
- 'Snapshot chunk gzip decompression is not available in this runtime'
110
- );
98
+ async function maybeGunzipStream(
99
+ stream: ReadableStream<Uint8Array>
100
+ ): Promise<ReadableStream<Uint8Array>> {
101
+ const reader = stream.getReader();
102
+ const prefetched: Uint8Array[] = [];
103
+ let prefetchedBytes = 0;
104
+
105
+ while (prefetchedBytes < 2) {
106
+ const { done, value } = await reader.read();
107
+ if (done) break;
108
+ if (!value || value.length === 0) continue;
109
+ prefetched.push(value);
110
+ prefetchedBytes += value.length;
111
111
  }
112
- return args.stream.pipeThrough(
113
- new DecompressionStream('gzip') as TransformStream<Uint8Array, Uint8Array>
114
- );
115
- }
116
112
 
117
- async function computeSha256HexFromStream(
118
- stream: ReadableStream<Uint8Array>,
119
- sha256Override?: (bytes: Uint8Array) => Promise<string>
120
- ): Promise<string> {
121
- if (sha256Override) {
122
- const bytes = await readAllBytesFromStream(stream);
123
- return sha256Override(bytes);
124
- }
113
+ const prefetchedCombined = concatBytes(prefetched);
114
+ const gzip = isGzipBytes(prefetchedCombined);
125
115
 
126
- const DigestStream = getDigestStreamConstructor();
127
- if (DigestStream) {
128
- const digester = new DigestStream('SHA-256');
129
- await stream.pipeTo(digester);
130
- const digest = await digester.digest;
131
- return toHex(new Uint8Array(digest));
116
+ const replayStream = new ReadableStream<Uint8Array<ArrayBuffer>>({
117
+ start(controller) {
118
+ if (prefetchedCombined.length > 0) {
119
+ controller.enqueue(toOwnedUint8Array(prefetchedCombined));
120
+ }
121
+ },
122
+ async pull(controller) {
123
+ const { done, value } = await reader.read();
124
+ if (done) {
125
+ controller.close();
126
+ reader.releaseLock();
127
+ return;
128
+ }
129
+ if (!value || value.length === 0) return;
130
+ controller.enqueue(toOwnedUint8Array(value));
131
+ },
132
+ async cancel(reason) {
133
+ await reader.cancel(reason);
134
+ reader.releaseLock();
135
+ },
136
+ });
137
+
138
+ if (!gzip) return replayStream;
139
+
140
+ if (typeof DecompressionStream !== 'undefined') {
141
+ return replayStream.pipeThrough(new DecompressionStream('gzip'));
132
142
  }
133
143
 
134
- const bytes = await readAllBytesFromStream(stream);
135
- return sha256Hex(bytes);
144
+ throw new Error(
145
+ 'Snapshot chunk appears gzip-compressed but gzip decompression is not available in this runtime'
146
+ );
136
147
  }
137
148
 
138
149
  async function* decodeSnapshotRowStreamBatches(
@@ -153,15 +164,15 @@ async function* decodeSnapshotRowStreamBatches(
153
164
  pending = appendBytes(pending, value);
154
165
 
155
166
  if (!headerValidated) {
156
- if (pending.length < SYNC_SNAPSHOT_CHUNK_MAGIC.length) {
167
+ if (pending.length < SNAPSHOT_ROW_FRAME_MAGIC.length) {
157
168
  continue;
158
169
  }
159
- for (let index = 0; index < SYNC_SNAPSHOT_CHUNK_MAGIC.length; index++) {
160
- if (pending[index] !== SYNC_SNAPSHOT_CHUNK_MAGIC[index]) {
170
+ for (let index = 0; index < SNAPSHOT_ROW_FRAME_MAGIC.length; index++) {
171
+ if (pending[index] !== SNAPSHOT_ROW_FRAME_MAGIC[index]) {
161
172
  throw new Error('Unexpected snapshot chunk format');
162
173
  }
163
174
  }
164
- pending = pending.subarray(SYNC_SNAPSHOT_CHUNK_MAGIC.length);
175
+ pending = pending.subarray(SNAPSHOT_ROW_FRAME_MAGIC.length);
165
176
  headerValidated = true;
166
177
  }
167
178
 
@@ -180,11 +191,7 @@ async function* decodeSnapshotRowStreamBatches(
180
191
  FRAME_LENGTH_BYTES,
181
192
  FRAME_LENGTH_BYTES + payloadLength
182
193
  );
183
- const parsed = JSON.parse(decoder.decode(payload));
184
- if (!Array.isArray(parsed)) {
185
- throw new Error('Snapshot chunk frame payload must be a JSON array');
186
- }
187
- rows.push(...parsed);
194
+ rows.push(JSON.parse(decoder.decode(payload)));
188
195
  pending = pending.subarray(FRAME_LENGTH_BYTES + payloadLength);
189
196
 
190
197
  if (rows.length >= batchSize) {
@@ -225,11 +232,7 @@ async function* decodeSnapshotRowStreamBatches(
225
232
  FRAME_LENGTH_BYTES,
226
233
  FRAME_LENGTH_BYTES + nextLength
227
234
  );
228
- const parsed = JSON.parse(decoder.decode(payload));
229
- if (!Array.isArray(parsed)) {
230
- throw new Error('Snapshot chunk frame payload must be a JSON array');
231
- }
232
- rows.push(...parsed);
235
+ rows.push(JSON.parse(decoder.decode(payload)));
233
236
  pending = pending.subarray(FRAME_LENGTH_BYTES + nextLength);
234
237
  if (rows.length >= batchSize) {
235
238
  yield rows;
@@ -249,6 +252,33 @@ async function* decodeSnapshotRowStreamBatches(
249
252
  }
250
253
  }
251
254
 
255
+ async function computeSha256Hex(
256
+ bytes: Uint8Array,
257
+ sha256Override?: (bytes: Uint8Array) => Promise<string>
258
+ ): Promise<string> {
259
+ // Use injected implementation if provided (e.g. expo-crypto on React Native)
260
+ if (sha256Override) {
261
+ return sha256Override(bytes);
262
+ }
263
+
264
+ // Use crypto.subtle if available (browsers, modern Node/Bun)
265
+ if (typeof crypto !== 'undefined' && crypto.subtle) {
266
+ // Create a fresh ArrayBuffer to satisfy crypto.subtle's type requirements
267
+ const buffer = new ArrayBuffer(bytes.length);
268
+ new Uint8Array(buffer).set(bytes);
269
+ const hashBuffer = await crypto.subtle.digest('SHA-256', buffer);
270
+ const hashArray = new Uint8Array(hashBuffer);
271
+ return Array.from(hashArray, (b) => b.toString(16).padStart(2, '0')).join(
272
+ ''
273
+ );
274
+ }
275
+
276
+ throw new Error(
277
+ 'No crypto implementation available for SHA-256. ' +
278
+ 'Provide a sha256 function via options or ensure crypto.subtle is available.'
279
+ );
280
+ }
281
+
252
282
  async function fetchSnapshotChunkStream(
253
283
  transport: SyncTransport,
254
284
  request: {
@@ -263,32 +293,62 @@ async function fetchSnapshotChunkStream(
263
293
  return bytesToReadableStream(bytes);
264
294
  }
265
295
 
296
+ async function readAllBytesFromStream(
297
+ stream: ReadableStream<Uint8Array>
298
+ ): Promise<Uint8Array> {
299
+ const reader = stream.getReader();
300
+ const chunks: Uint8Array[] = [];
301
+ let totalLength = 0;
302
+
303
+ try {
304
+ while (true) {
305
+ // eslint-disable-next-line no-await-in-loop
306
+ const { done, value } = await reader.read();
307
+ if (done) break;
308
+ if (!value) continue;
309
+ chunks.push(value);
310
+ totalLength += value.byteLength;
311
+ }
312
+ } finally {
313
+ reader.releaseLock();
314
+ }
315
+
316
+ if (chunks.length === 0) {
317
+ return new Uint8Array();
318
+ }
319
+ if (chunks.length === 1) {
320
+ return chunks[0]!;
321
+ }
322
+
323
+ const bytes = new Uint8Array(totalLength);
324
+ let offset = 0;
325
+ for (const chunk of chunks) {
326
+ bytes.set(chunk, offset);
327
+ offset += chunk.byteLength;
328
+ }
329
+ return bytes;
330
+ }
331
+
266
332
  async function materializeSnapshotChunkRows(
267
333
  transport: SyncTransport,
268
334
  request: {
269
335
  chunkId: string;
270
336
  scopeValues?: ScopeValues;
271
337
  },
272
- chunk: {
273
- sha256: string;
274
- compression: string;
275
- encoding: string;
276
- },
338
+ expectedHash: string | undefined,
277
339
  sha256Override?: (bytes: Uint8Array) => Promise<string>
278
340
  ): Promise<unknown[]> {
279
341
  const rawStream = await fetchSnapshotChunkStream(transport, request);
280
- const decodedStream = await decodeSnapshotChunkStream({
281
- stream: rawStream,
282
- compression: chunk.compression,
283
- encoding: chunk.encoding,
284
- });
342
+ const decodedStream = await maybeGunzipStream(rawStream);
285
343
  let streamForDecode = decodedStream;
286
344
  let chunkHashPromise: Promise<string> | null = null;
287
345
 
288
- if (chunk.sha256) {
346
+ if (expectedHash) {
289
347
  const [hashStream, decodeStream] = decodedStream.tee();
290
348
  streamForDecode = decodeStream;
291
- chunkHashPromise = computeSha256HexFromStream(hashStream, sha256Override);
349
+ chunkHashPromise = readAllBytesFromStream(hashStream).then((bytes) =>
350
+ computeSha256Hex(bytes, sha256Override)
351
+ );
292
352
  }
293
353
 
294
354
  const rows: unknown[] = [];
@@ -308,9 +368,9 @@ async function materializeSnapshotChunkRows(
308
368
  if (chunkHashPromise) {
309
369
  try {
310
370
  const actualHash = await chunkHashPromise;
311
- if (!materializeError && actualHash !== chunk.sha256) {
371
+ if (!materializeError && actualHash !== expectedHash) {
312
372
  materializeError = new Error(
313
- `Snapshot chunk integrity check failed: expected sha256 ${chunk.sha256}, got ${actualHash}`
373
+ `Snapshot chunk integrity check failed: expected sha256 ${expectedHash}, got ${actualHash}`
314
374
  );
315
375
  }
316
376
  } catch (hashError) {
@@ -356,7 +416,7 @@ async function materializeChunkedSnapshots(
356
416
  chunkId: chunk.id,
357
417
  scopeValues: sub.scopes,
358
418
  },
359
- chunk,
419
+ chunk.sha256,
360
420
  sha256Override
361
421
  );
362
422
  rows.push(...chunkRows);
@@ -402,18 +462,16 @@ async function applyChunkedSnapshot<DB extends SyncClientDb>(
402
462
  chunkId: chunk.id,
403
463
  scopeValues,
404
464
  });
405
- const decodedStream = await decodeSnapshotChunkStream({
406
- stream: rawStream,
407
- compression: chunk.compression,
408
- encoding: chunk.encoding,
409
- });
465
+ const decodedStream = await maybeGunzipStream(rawStream);
410
466
  let streamForDecode = decodedStream;
411
467
  let chunkHashPromise: Promise<string> | null = null;
412
468
 
413
469
  if (chunk.sha256) {
414
470
  const [hashStream, decodeStream] = decodedStream.tee();
415
471
  streamForDecode = decodeStream;
416
- chunkHashPromise = computeSha256HexFromStream(hashStream, sha256Override);
472
+ chunkHashPromise = readAllBytesFromStream(hashStream).then((bytes) =>
473
+ computeSha256Hex(bytes, sha256Override)
474
+ );
417
475
  }
418
476
 
419
477
  const rowBatchIterator = decodeSnapshotRowStreamBatches(