@powersync/common 1.7.1 → 1.8.0

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,6 +1,4 @@
1
- /// <reference types="node" />
2
1
  import { ILogger } from 'js-logger';
3
- import { StreamingSyncLine, StreamingSyncRequest } from './streaming-sync-types';
4
2
  import { AbstractRemote } from './AbstractRemote';
5
3
  import { BucketStorageAdapter } from '../bucket/BucketStorageAdapter';
6
4
  import { SyncStatus, SyncStatusOptions } from '../../../db/crud/SyncStatus';
@@ -9,6 +7,10 @@ export declare enum LockType {
9
7
  CRUD = "crud",
10
8
  SYNC = "sync"
11
9
  }
10
+ export declare enum SyncStreamConnectionMethod {
11
+ HTTP = "http",
12
+ WEB_SOCKET = "web-socket"
13
+ }
12
14
  /**
13
15
  * Abstract Lock to be implemented by various JS environments
14
16
  */
@@ -41,11 +43,23 @@ export interface StreamingSyncImplementationListener extends BaseListener {
41
43
  */
42
44
  statusChanged?: ((status: SyncStatus) => void) | undefined;
43
45
  }
46
+ /**
47
+ * Configurable options to be used when connecting to the PowerSync
48
+ * backend instance.
49
+ */
50
+ export interface PowerSyncConnectionOptions {
51
+ /**
52
+ * The connection method to use when streaming updates from
53
+ * the PowerSync backend instance.
54
+ * Defaults to a HTTP streaming connection.
55
+ */
56
+ connectionMethod?: SyncStreamConnectionMethod;
57
+ }
44
58
  export interface StreamingSyncImplementation extends BaseObserver<StreamingSyncImplementationListener>, Disposable {
45
59
  /**
46
60
  * Connects to the sync service
47
61
  */
48
- connect(): Promise<void>;
62
+ connect(options?: PowerSyncConnectionOptions): Promise<void>;
49
63
  /**
50
64
  * Disconnects from the sync services.
51
65
  * @throws if not connected or if abort is not controlled internally
@@ -66,6 +80,7 @@ export declare const DEFAULT_STREAMING_SYNC_OPTIONS: {
66
80
  logger: ILogger;
67
81
  crudUploadThrottleMs: number;
68
82
  };
83
+ export declare const DEFAULT_STREAM_CONNECTION_OPTIONS: Required<PowerSyncConnectionOptions>;
69
84
  export declare abstract class AbstractStreamingSyncImplementation extends BaseObserver<StreamingSyncImplementationListener> implements StreamingSyncImplementation {
70
85
  protected _lastSyncedAt: Date | null;
71
86
  protected options: AbstractStreamingSyncImplementationOptions;
@@ -86,16 +101,15 @@ export declare abstract class AbstractStreamingSyncImplementation extends BaseOb
86
101
  getWriteCheckpoint(): Promise<string>;
87
102
  protected _uploadAllCrud(): Promise<void>;
88
103
  protected uploadCrudBatch(): Promise<boolean>;
89
- connect(): Promise<void>;
104
+ connect(options?: PowerSyncConnectionOptions): Promise<void>;
90
105
  disconnect(): Promise<void>;
91
106
  /**
92
107
  * @deprecated use [connect instead]
93
108
  */
94
- streamingSync(signal?: AbortSignal): Promise<void>;
95
- protected streamingSyncIteration(signal: AbortSignal, progress?: () => void): Promise<{
109
+ streamingSync(signal?: AbortSignal, options?: PowerSyncConnectionOptions): Promise<void>;
110
+ protected streamingSyncIteration(signal: AbortSignal, options?: PowerSyncConnectionOptions): Promise<{
96
111
  retry?: boolean;
97
112
  }>;
98
- protected streamingSyncRequest(req: StreamingSyncRequest, signal?: AbortSignal): AsyncGenerator<StreamingSyncLine>;
99
113
  protected updateSyncStatus(options: SyncStatusOptions): void;
100
114
  private delayRetry;
101
115
  }
@@ -1,7 +1,6 @@
1
1
  import throttle from 'lodash/throttle';
2
2
  import Logger from 'js-logger';
3
3
  import { isStreamingKeepalive, isStreamingSyncCheckpoint, isStreamingSyncCheckpointComplete, isStreamingSyncCheckpointDiff, isStreamingSyncData } from './streaming-sync-types';
4
- import ndjsonStream from 'can-ndjson-stream';
5
4
  import { SyncStatus } from '../../../db/crud/SyncStatus';
6
5
  import { SyncDataBucket } from '../bucket/SyncDataBucket';
7
6
  import { BaseObserver } from '../../../utils/BaseObserver';
@@ -11,12 +10,20 @@ export var LockType;
11
10
  LockType["CRUD"] = "crud";
12
11
  LockType["SYNC"] = "sync";
13
12
  })(LockType || (LockType = {}));
13
+ export var SyncStreamConnectionMethod;
14
+ (function (SyncStreamConnectionMethod) {
15
+ SyncStreamConnectionMethod["HTTP"] = "http";
16
+ SyncStreamConnectionMethod["WEB_SOCKET"] = "web-socket";
17
+ })(SyncStreamConnectionMethod || (SyncStreamConnectionMethod = {}));
14
18
  export const DEFAULT_CRUD_UPLOAD_THROTTLE_MS = 1000;
15
19
  export const DEFAULT_STREAMING_SYNC_OPTIONS = {
16
20
  retryDelayMs: 5000,
17
21
  logger: Logger.get('PowerSyncStream'),
18
22
  crudUploadThrottleMs: DEFAULT_CRUD_UPLOAD_THROTTLE_MS
19
23
  };
24
+ export const DEFAULT_STREAM_CONNECTION_OPTIONS = {
25
+ connectionMethod: SyncStreamConnectionMethod.HTTP
26
+ };
20
27
  export class AbstractStreamingSyncImplementation extends BaseObserver {
21
28
  _lastSyncedAt;
22
29
  options;
@@ -139,12 +146,12 @@ export class AbstractStreamingSyncImplementation extends BaseObserver {
139
146
  return true;
140
147
  }
141
148
  }
142
- async connect() {
149
+ async connect(options) {
143
150
  if (this.abortController) {
144
151
  await this.disconnect();
145
152
  }
146
153
  this.abortController = new AbortController();
147
- this.streamingSyncPromise = this.streamingSync(this.abortController.signal);
154
+ this.streamingSyncPromise = this.streamingSync(this.abortController.signal, options);
148
155
  // Return a promise that resolves when the connection status is updated
149
156
  return new Promise((resolve) => {
150
157
  const l = this.registerListener({
@@ -189,7 +196,7 @@ export class AbstractStreamingSyncImplementation extends BaseObserver {
189
196
  /**
190
197
  * @deprecated use [connect instead]
191
198
  */
192
- async streamingSync(signal) {
199
+ async streamingSync(signal, options) {
193
200
  if (!signal) {
194
201
  this.abortController = new AbortController();
195
202
  signal = this.abortController.signal;
@@ -231,7 +238,7 @@ export class AbstractStreamingSyncImplementation extends BaseObserver {
231
238
  if (signal?.aborted) {
232
239
  break;
233
240
  }
234
- const { retry } = await this.streamingSyncIteration(nestedAbortController.signal);
241
+ const { retry } = await this.streamingSyncIteration(nestedAbortController.signal, options);
235
242
  if (!retry) {
236
243
  /**
237
244
  * A sync error ocurred that we cannot recover from here.
@@ -273,11 +280,15 @@ export class AbstractStreamingSyncImplementation extends BaseObserver {
273
280
  // Mark as disconnected if here
274
281
  this.updateSyncStatus({ connected: false });
275
282
  }
276
- async streamingSyncIteration(signal, progress) {
283
+ async streamingSyncIteration(signal, options) {
277
284
  return await this.obtainLock({
278
285
  type: LockType.SYNC,
279
286
  signal,
280
287
  callback: async () => {
288
+ const resolvedOptions = {
289
+ ...DEFAULT_STREAM_CONNECTION_OPTIONS,
290
+ ...(options ?? {})
291
+ };
281
292
  this.logger.debug('Streaming sync iteration started');
282
293
  this.options.adapter.startSession();
283
294
  const bucketEntries = await this.options.adapter.getBucketStates();
@@ -294,11 +305,34 @@ export class AbstractStreamingSyncImplementation extends BaseObserver {
294
305
  let validatedCheckpoint = null;
295
306
  let appliedCheckpoint = null;
296
307
  let bucketSet = new Set(initialBuckets.keys());
297
- for await (const line of this.streamingSyncRequest({
298
- buckets: req,
299
- include_checksum: true,
300
- raw_data: true
301
- }, signal)) {
308
+ this.logger.debug('Requesting stream from server');
309
+ const syncOptions = {
310
+ path: '/sync/stream',
311
+ abortSignal: signal,
312
+ data: {
313
+ buckets: req,
314
+ include_checksum: true,
315
+ raw_data: true
316
+ }
317
+ };
318
+ const stream = resolvedOptions?.connectionMethod == SyncStreamConnectionMethod.HTTP
319
+ ? await this.options.remote.postStream(syncOptions)
320
+ : await this.options.remote.socketStream(syncOptions);
321
+ this.logger.debug('Stream established. Processing events');
322
+ while (!stream.closed) {
323
+ const line = await stream.read();
324
+ if (!line) {
325
+ // The stream has closed while waiting
326
+ return { retry: true };
327
+ }
328
+ // A connection is active and messages are being received
329
+ if (!this.syncStatus.connected) {
330
+ // There is a connection now
331
+ Promise.resolve().then(() => this.triggerCrudUpload());
332
+ this.updateSyncStatus({
333
+ connected: true
334
+ });
335
+ }
302
336
  if (isStreamingSyncCheckpoint(line)) {
303
337
  targetCheckpoint = line.checkpoint;
304
338
  const bucketsToDelete = new Set(bucketSet);
@@ -385,6 +419,11 @@ export class AbstractStreamingSyncImplementation extends BaseObserver {
385
419
  if (remaining_seconds == 0) {
386
420
  // Connection would be closed automatically right after this
387
421
  this.logger.debug('Token expiring; reconnect');
422
+ /**
423
+ * For a rare case where the backend connector does not update the token
424
+ * (uses the same one), this should have some delay.
425
+ */
426
+ await this.delayRetry();
388
427
  return { retry: true };
389
428
  }
390
429
  this.triggerCrudUpload();
@@ -421,7 +460,6 @@ export class AbstractStreamingSyncImplementation extends BaseObserver {
421
460
  }
422
461
  }
423
462
  }
424
- progress?.();
425
463
  }
426
464
  this.logger.debug('Stream input empty');
427
465
  // Connection closed. Likely due to auth issue.
@@ -429,31 +467,6 @@ export class AbstractStreamingSyncImplementation extends BaseObserver {
429
467
  }
430
468
  });
431
469
  }
432
- async *streamingSyncRequest(req, signal) {
433
- const body = await this.options.remote.postStreaming('/sync/stream', req, {}, signal);
434
- // A connection is active
435
- // There is a connection now
436
- Promise.resolve().then(() => this.triggerCrudUpload());
437
- this.updateSyncStatus({
438
- connected: true
439
- });
440
- const stream = ndjsonStream(body);
441
- const reader = stream.getReader();
442
- try {
443
- while (true) {
444
- // Read from the stream
445
- const { done, value } = await reader.read();
446
- // Exit if we're done
447
- if (done)
448
- return;
449
- // Else yield the chunk
450
- yield value;
451
- }
452
- }
453
- finally {
454
- reader.releaseLock();
455
- }
456
- }
457
470
  updateSyncStatus(options) {
458
471
  const updatedStatus = new SyncStatus({
459
472
  connected: options.connected ?? this.syncStatus.connected,
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractStreamingSyncImplementation.js","sourceRoot":"","sources":["../../../../src/client/sync/stream/AbstractStreamingSyncImplementation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractStreamingSyncImplementation.js","sourceRoot":"","sources":["../../../../src/client/sync/stream/AbstractStreamingSyncImplementation.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -28,5 +28,6 @@ export * from './db/schema/TableV2';
28
28
  export * from './utils/AbortOperation';
29
29
  export * from './utils/BaseObserver';
30
30
  export * from './utils/strings';
31
+ export * from './utils/DataStream';
31
32
  export * from './utils/parseQuery';
32
33
  export * from './types/types';
package/lib/index.js CHANGED
@@ -28,6 +28,7 @@ export * from './db/schema/TableV2';
28
28
  export * from './utils/AbortOperation';
29
29
  export * from './utils/BaseObserver';
30
30
  export * from './utils/strings';
31
+ export * from './utils/DataStream';
31
32
  export * from './utils/parseQuery';
32
33
  export * from './types/types';
33
34
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,0CAA0C,CAAC;AACzD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0DAA0D,CAAC;AACzE,cAAc,2CAA2C,CAAC;AAE1D,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AAEpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,0CAA0C,CAAC;AACzD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,0DAA0D,CAAC;AACzE,cAAc,2CAA2C,CAAC;AAE1D,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AAEpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,eAAe,CAAC"}
@@ -8,13 +8,12 @@ export type BaseListener = {
8
8
  [key: string]: ((...event: any) => any) | undefined;
9
9
  };
10
10
  export declare class BaseObserver<T extends BaseListener = BaseListener> implements BaseObserverInterface<T> {
11
- protected listeners: {
12
- [id: string]: Partial<T>;
13
- };
11
+ protected listeners: Set<Partial<T>>;
14
12
  constructor();
15
13
  /**
16
14
  * Register a listener for updates to the PowerSync client.
17
15
  */
18
16
  registerListener(listener: Partial<T>): () => void;
19
17
  iterateListeners(cb: (listener: Partial<T>) => any): void;
18
+ iterateAsyncListeners(cb: (listener: Partial<T>) => Promise<any>): Promise<void>;
20
19
  }
@@ -1,22 +1,23 @@
1
- import { v4 } from 'uuid';
2
1
  export class BaseObserver {
3
- listeners;
4
- constructor() {
5
- this.listeners = {};
6
- }
2
+ listeners = new Set();
3
+ constructor() { }
7
4
  /**
8
5
  * Register a listener for updates to the PowerSync client.
9
6
  */
10
7
  registerListener(listener) {
11
- const id = v4();
12
- this.listeners[id] = listener;
8
+ this.listeners.add(listener);
13
9
  return () => {
14
- delete this.listeners[id];
10
+ this.listeners.delete(listener);
15
11
  };
16
12
  }
17
13
  iterateListeners(cb) {
18
- for (const i in this.listeners) {
19
- cb(this.listeners[i]);
14
+ for (const listener of this.listeners) {
15
+ cb(listener);
16
+ }
17
+ }
18
+ async iterateAsyncListeners(cb) {
19
+ for (let i of Array.from(this.listeners.values())) {
20
+ await cb(i);
20
21
  }
21
22
  }
22
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BaseObserver.js","sourceRoot":"","sources":["../../src/utils/BaseObserver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAc1B,MAAM,OAAO,YAAY;IACb,SAAS,CAA+B;IAElD;QACE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,QAAoB;QACnC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;QAC9B,OAAO,GAAG,EAAE;YACV,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,EAAiC;QAChD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"BaseObserver.js","sourceRoot":"","sources":["../../src/utils/BaseObserver.ts"],"names":[],"mappings":"AAYA,MAAM,OAAO,YAAY;IACb,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IAE5C,gBAAe,CAAC;IAEhB;;OAEG;IACH,gBAAgB,CAAC,QAAoB;QACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,EAAiC;QAChD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,EAA0C;QACpE,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;YAClD,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,63 @@
1
+ import { ILogger } from 'js-logger';
2
+ import { BaseListener, BaseObserver } from './BaseObserver';
3
+ export type DataStreamOptions = {
4
+ /**
5
+ * Close the stream if any consumer throws an error
6
+ */
7
+ closeOnError?: boolean;
8
+ pressure?: {
9
+ highWaterMark?: number;
10
+ lowWaterMark?: number;
11
+ };
12
+ logger?: ILogger;
13
+ };
14
+ export type DataStreamCallback<Data extends any = any> = (data: Data) => Promise<void>;
15
+ export interface DataStreamListener<Data extends any = any> extends BaseListener {
16
+ data: (data: Data) => Promise<void>;
17
+ closed: () => void;
18
+ error: (error: Error) => void;
19
+ highWater: () => Promise<void>;
20
+ lowWater: () => Promise<void>;
21
+ }
22
+ export declare const DEFAULT_PRESSURE_LIMITS: {
23
+ highWater: number;
24
+ lowWater: number;
25
+ };
26
+ /**
27
+ * A very basic implementation of a data stream with backpressure support which does not use
28
+ * native JS streams or async iterators.
29
+ * This is handy for environments such as React Native which need polyfills for the above.
30
+ */
31
+ export declare class DataStream<Data extends any = any> extends BaseObserver<DataStreamListener<Data>> {
32
+ protected options?: DataStreamOptions | undefined;
33
+ dataQueue: Data[];
34
+ protected isClosed: boolean;
35
+ protected processingPromise: Promise<void> | null;
36
+ protected logger: ILogger;
37
+ constructor(options?: DataStreamOptions | undefined);
38
+ get highWatermark(): number;
39
+ get lowWatermark(): number;
40
+ get closed(): boolean;
41
+ close(): Promise<void>;
42
+ /**
43
+ * Enqueues data for the consumers to read
44
+ */
45
+ enqueueData(data: Data): void;
46
+ /**
47
+ * Reads data once from the data stream
48
+ * @returns a Data payload or Null if the stream closed.
49
+ */
50
+ read(): Promise<Data | null>;
51
+ /**
52
+ * Executes a callback for each data item in the stream
53
+ */
54
+ forEach(callback: DataStreamCallback<Data>): () => void;
55
+ protected processQueue(): Promise<void>;
56
+ /**
57
+ * Creates a new data stream which is a map of the original
58
+ */
59
+ map<ReturnData>(callback: (data: Data) => ReturnData): DataStream<ReturnData>;
60
+ protected hasDataReader(): boolean;
61
+ protected _processQueue(): Promise<void>;
62
+ protected iterateAsyncErrored(cb: (l: BaseListener) => Promise<void>): Promise<void>;
63
+ }
@@ -0,0 +1,163 @@
1
+ import Logger from 'js-logger';
2
+ import { BaseObserver } from './BaseObserver';
3
+ export const DEFAULT_PRESSURE_LIMITS = {
4
+ highWater: 10,
5
+ lowWater: 0
6
+ };
7
+ /**
8
+ * A very basic implementation of a data stream with backpressure support which does not use
9
+ * native JS streams or async iterators.
10
+ * This is handy for environments such as React Native which need polyfills for the above.
11
+ */
12
+ export class DataStream extends BaseObserver {
13
+ options;
14
+ dataQueue;
15
+ isClosed;
16
+ processingPromise;
17
+ logger;
18
+ constructor(options) {
19
+ super();
20
+ this.options = options;
21
+ this.processingPromise = null;
22
+ this.isClosed = false;
23
+ this.dataQueue = [];
24
+ this.logger = options?.logger ?? Logger.get('DataStream');
25
+ if (options?.closeOnError) {
26
+ const l = this.registerListener({
27
+ error: (ex) => {
28
+ l?.();
29
+ this.close();
30
+ }
31
+ });
32
+ }
33
+ }
34
+ get highWatermark() {
35
+ return this.options?.pressure?.highWaterMark ?? DEFAULT_PRESSURE_LIMITS.highWater;
36
+ }
37
+ get lowWatermark() {
38
+ return this.options?.pressure?.lowWaterMark ?? DEFAULT_PRESSURE_LIMITS.lowWater;
39
+ }
40
+ get closed() {
41
+ return this.isClosed;
42
+ }
43
+ async close() {
44
+ this.isClosed = true;
45
+ await this.processingPromise;
46
+ this.iterateListeners((l) => l.closed?.());
47
+ // Discard any data in the queue
48
+ this.dataQueue = [];
49
+ this.listeners.clear();
50
+ }
51
+ /**
52
+ * Enqueues data for the consumers to read
53
+ */
54
+ enqueueData(data) {
55
+ if (this.isClosed) {
56
+ throw new Error('Cannot enqueue data into closed stream.');
57
+ }
58
+ this.dataQueue.push(data);
59
+ this.processQueue();
60
+ }
61
+ /**
62
+ * Reads data once from the data stream
63
+ * @returns a Data payload or Null if the stream closed.
64
+ */
65
+ async read() {
66
+ if (this.dataQueue.length <= this.lowWatermark) {
67
+ await this.iterateAsyncErrored(async (l) => l.lowWater?.());
68
+ }
69
+ if (this.closed) {
70
+ return null;
71
+ }
72
+ return new Promise((resolve, reject) => {
73
+ const l = this.registerListener({
74
+ data: async (data) => {
75
+ resolve(data);
76
+ // Remove the listener
77
+ l?.();
78
+ },
79
+ closed: () => {
80
+ resolve(null);
81
+ l?.();
82
+ },
83
+ error: (ex) => {
84
+ reject(ex);
85
+ l?.();
86
+ }
87
+ });
88
+ this.processQueue();
89
+ });
90
+ }
91
+ /**
92
+ * Executes a callback for each data item in the stream
93
+ */
94
+ forEach(callback) {
95
+ if (this.dataQueue.length <= this.lowWatermark) {
96
+ this.iterateAsyncErrored(async (l) => l.lowWater?.());
97
+ }
98
+ return this.registerListener({
99
+ data: callback
100
+ });
101
+ }
102
+ async processQueue() {
103
+ if (this.processingPromise) {
104
+ return;
105
+ }
106
+ /**
107
+ * Allow listeners to mutate the queue before processing.
108
+ * This allows for operations such as dropping or compressing data
109
+ * on high water or requesting more data on low water.
110
+ */
111
+ if (this.dataQueue.length >= this.highWatermark) {
112
+ await this.iterateAsyncErrored(async (l) => l.highWater?.());
113
+ }
114
+ return (this.processingPromise = this._processQueue());
115
+ }
116
+ /**
117
+ * Creates a new data stream which is a map of the original
118
+ */
119
+ map(callback) {
120
+ const stream = new DataStream(this.options);
121
+ const l = this.registerListener({
122
+ data: async (data) => {
123
+ stream.enqueueData(callback(data));
124
+ },
125
+ closed: () => {
126
+ stream.close();
127
+ l?.();
128
+ }
129
+ });
130
+ return stream;
131
+ }
132
+ hasDataReader() {
133
+ return Array.from(this.listeners.values()).some((l) => !!l.data);
134
+ }
135
+ async _processQueue() {
136
+ if (!this.dataQueue.length || this.isClosed || !this.hasDataReader()) {
137
+ Promise.resolve().then(() => (this.processingPromise = null));
138
+ return;
139
+ }
140
+ const data = this.dataQueue.shift();
141
+ await this.iterateAsyncErrored(async (l) => l.data?.(data));
142
+ if (this.dataQueue.length <= this.lowWatermark) {
143
+ await this.iterateAsyncErrored(async (l) => l.lowWater?.());
144
+ }
145
+ this.processingPromise = null;
146
+ if (this.dataQueue.length) {
147
+ // Next tick
148
+ setTimeout(() => this.processQueue());
149
+ }
150
+ }
151
+ async iterateAsyncErrored(cb) {
152
+ for (let i of Array.from(this.listeners.values())) {
153
+ try {
154
+ await cb(i);
155
+ }
156
+ catch (ex) {
157
+ this.logger.error(ex);
158
+ this.iterateListeners((l) => l.error?.(ex));
159
+ }
160
+ }
161
+ }
162
+ }
163
+ //# sourceMappingURL=DataStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataStream.js","sourceRoot":"","sources":["../../src/utils/DataStream.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powersync/common",
3
- "version": "1.7.1",
3
+ "version": "1.8.0",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -23,11 +23,15 @@
23
23
  "homepage": "https://docs.powersync.com/resources/api-reference",
24
24
  "dependencies": {
25
25
  "async-mutex": "^0.4.0",
26
+ "bson": "^6.6.0",
27
+ "buffer": "^6.0.3",
26
28
  "can-ndjson-stream": "^1.0.2",
29
+ "cross-fetch": "^4.0.0",
27
30
  "event-iterator": "^2.0.0",
28
31
  "js-logger": "^1.6.1",
29
32
  "lodash": "^4.17.21",
30
- "uuid": "^9.0.1"
33
+ "rsocket-core": "1.0.0-alpha.3",
34
+ "rsocket-websocket-client": "1.0.0-alpha.3"
31
35
  },
32
36
  "devDependencies": {
33
37
  "@types/lodash": "^4.14.197",