@powersync/common 1.44.0 → 1.45.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.
- package/dist/bundle.cjs +117 -77
- package/dist/bundle.cjs.map +1 -1
- package/dist/bundle.mjs +117 -78
- package/dist/bundle.mjs.map +1 -1
- package/dist/bundle.node.cjs +105 -65
- package/dist/bundle.node.cjs.map +1 -1
- package/dist/bundle.node.mjs +105 -66
- package/dist/bundle.node.mjs.map +1 -1
- package/dist/index.d.cts +170 -150
- package/lib/client/ConnectionManager.d.ts +1 -1
- package/lib/client/ConnectionManager.js.map +1 -1
- package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js.map +1 -1
- package/lib/db/ConnectionClosedError.d.ts +10 -0
- package/lib/db/ConnectionClosedError.js +21 -0
- package/lib/db/ConnectionClosedError.js.map +1 -0
- package/lib/db/crud/SyncStatus.d.ts +11 -2
- package/lib/db/crud/SyncStatus.js +19 -1
- package/lib/db/crud/SyncStatus.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
- package/src/client/ConnectionManager.ts +1 -1
- package/src/client/sync/stream/AbstractStreamingSyncImplementation.ts +0 -1
- package/src/db/ConnectionClosedError.ts +23 -0
- package/src/db/crud/SyncStatus.ts +22 -3
- package/src/index.ts +1 -0
|
@@ -188,12 +188,30 @@ export class SyncStatus {
|
|
|
188
188
|
return {
|
|
189
189
|
connected: this.connected,
|
|
190
190
|
connecting: this.connecting,
|
|
191
|
-
dataFlow:
|
|
191
|
+
dataFlow: {
|
|
192
|
+
...this.dataFlowStatus,
|
|
193
|
+
uploadError: this.serializeError(this.dataFlowStatus.uploadError),
|
|
194
|
+
downloadError: this.serializeError(this.dataFlowStatus.downloadError)
|
|
195
|
+
},
|
|
192
196
|
lastSyncedAt: this.lastSyncedAt,
|
|
193
197
|
hasSynced: this.hasSynced,
|
|
194
198
|
priorityStatusEntries: this.priorityStatusEntries
|
|
195
199
|
};
|
|
196
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* Not all errors are serializable over a MessagePort. E.g. some `DomExceptions` fail to be passed across workers.
|
|
203
|
+
* This explicitly serializes errors in the SyncStatus.
|
|
204
|
+
*/
|
|
205
|
+
serializeError(error) {
|
|
206
|
+
if (typeof error == 'undefined') {
|
|
207
|
+
return undefined;
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
name: error.name,
|
|
211
|
+
message: error.message,
|
|
212
|
+
stack: error.stack
|
|
213
|
+
};
|
|
214
|
+
}
|
|
197
215
|
static comparePriorities(a, b) {
|
|
198
216
|
return b.priority - a.priority; // Reverse because higher priorities have lower numbers
|
|
199
217
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncStatus.js","sourceRoot":"","sources":["../../../src/db/crud/SyncStatus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SyncStatus.js","sourceRoot":"","sources":["../../../src/db/crud/SyncStatus.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export * from './client/sync/stream/AbstractStreamingSyncImplementation.js';
|
|
|
20
20
|
export * from './client/sync/stream/streaming-sync-types.js';
|
|
21
21
|
export * from './client/sync/sync-streams.js';
|
|
22
22
|
export * from './client/ConnectionManager.js';
|
|
23
|
+
export * from './db/ConnectionClosedError.js';
|
|
23
24
|
export { ProgressWithOperations, SyncProgress } from './db/crud/SyncProgress.js';
|
|
24
25
|
export * from './db/crud/SyncStatus.js';
|
|
25
26
|
export * from './db/crud/UploadQueueStatus.js';
|
package/lib/index.js
CHANGED
|
@@ -20,6 +20,7 @@ export * from './client/sync/stream/AbstractStreamingSyncImplementation.js';
|
|
|
20
20
|
export * from './client/sync/stream/streaming-sync-types.js';
|
|
21
21
|
export * from './client/sync/sync-streams.js';
|
|
22
22
|
export * from './client/ConnectionManager.js';
|
|
23
|
+
export * from './db/ConnectionClosedError.js';
|
|
23
24
|
export { SyncProgress } from './db/crud/SyncProgress.js';
|
|
24
25
|
export * from './db/crud/SyncStatus.js';
|
|
25
26
|
export * from './db/crud/UploadQueueStatus.js';
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAA+B,MAAM,kCAAkC,CAAC;AACrG,cAAc,kDAAkD,CAAC;AACjE,cAAc,6CAA6C,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,SAAS,EAAQ,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAChF,cAAc,yCAAyC,CAAC;AACxD,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,6DAA6D,CAAC;AAC5E,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+BAA+B,CAAC;AAE9C,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAA0B,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACjF,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AAEvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uDAAuD,CAAC;AACtE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2DAA2D,CAAC;AAC1E,cAAc,uDAAuD,CAAC;AACtE,cAAc,kCAAkC,CAAC;AAEjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAA+B,MAAM,kCAAkC,CAAC;AACrG,cAAc,kDAAkD,CAAC;AACjE,cAAc,6CAA6C,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,SAAS,EAAQ,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAChF,cAAc,yCAAyC,CAAC;AACxD,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,6DAA6D,CAAC;AAC5E,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+BAA+B,CAAC;AAE9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAA0B,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACjF,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AAEvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uDAAuD,CAAC;AACtE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2DAA2D,CAAC;AAC1E,cAAc,uDAAuD,CAAC;AACtE,cAAc,kCAAkC,CAAC;AAEjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,kBAAkB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ILogger } from 'js-logger';
|
|
2
|
+
import { SyncStatus } from '../db/crud/SyncStatus.js';
|
|
2
3
|
import { BaseListener, BaseObserver } from '../utils/BaseObserver.js';
|
|
3
4
|
import { PowerSyncBackendConnector } from './connection/PowerSyncBackendConnector.js';
|
|
4
5
|
import {
|
|
@@ -13,7 +14,6 @@ import {
|
|
|
13
14
|
SyncStreamSubscribeOptions,
|
|
14
15
|
SyncStreamSubscription
|
|
15
16
|
} from './sync/sync-streams.js';
|
|
16
|
-
import { SyncStatus } from '../db/crud/SyncStatus.js';
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* @internal
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when an underlying database connection is closed.
|
|
3
|
+
* This is particularly relevant when worker connections are marked as closed while
|
|
4
|
+
* operations are still in progress.
|
|
5
|
+
*/
|
|
6
|
+
export class ConnectionClosedError extends Error {
|
|
7
|
+
static NAME = 'ConnectionClosedError';
|
|
8
|
+
|
|
9
|
+
static MATCHES(input: any) {
|
|
10
|
+
/**
|
|
11
|
+
* If there are weird package issues which cause multiple versions of classes to be present, the instanceof
|
|
12
|
+
* check might fail. This also performs a failsafe check.
|
|
13
|
+
* This might also happen if the Error is serialized and parsed over a bridging channel like a MessagePort.
|
|
14
|
+
*/
|
|
15
|
+
return (
|
|
16
|
+
input instanceof ConnectionClosedError || (input instanceof Error && input.name == ConnectionClosedError.NAME)
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
constructor(message: string) {
|
|
20
|
+
super(message);
|
|
21
|
+
this.name = ConnectionClosedError.NAME;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { CoreStreamSubscription } from '../../client/sync/stream/core-instruction.js';
|
|
2
1
|
import { SyncClientImplementation } from '../../client/sync/stream/AbstractStreamingSyncImplementation.js';
|
|
3
|
-
import {
|
|
2
|
+
import { CoreStreamSubscription } from '../../client/sync/stream/core-instruction.js';
|
|
4
3
|
import { SyncStreamDescription, SyncSubscriptionDescription } from '../../client/sync/sync-streams.js';
|
|
4
|
+
import { InternalProgressInformation, ProgressWithOperations, SyncProgress } from './SyncProgress.js';
|
|
5
5
|
|
|
6
6
|
export type SyncDataFlowStatus = Partial<{
|
|
7
7
|
downloading: boolean;
|
|
@@ -250,13 +250,32 @@ export class SyncStatus {
|
|
|
250
250
|
return {
|
|
251
251
|
connected: this.connected,
|
|
252
252
|
connecting: this.connecting,
|
|
253
|
-
dataFlow:
|
|
253
|
+
dataFlow: {
|
|
254
|
+
...this.dataFlowStatus,
|
|
255
|
+
uploadError: this.serializeError(this.dataFlowStatus.uploadError),
|
|
256
|
+
downloadError: this.serializeError(this.dataFlowStatus.downloadError)
|
|
257
|
+
},
|
|
254
258
|
lastSyncedAt: this.lastSyncedAt,
|
|
255
259
|
hasSynced: this.hasSynced,
|
|
256
260
|
priorityStatusEntries: this.priorityStatusEntries
|
|
257
261
|
};
|
|
258
262
|
}
|
|
259
263
|
|
|
264
|
+
/**
|
|
265
|
+
* Not all errors are serializable over a MessagePort. E.g. some `DomExceptions` fail to be passed across workers.
|
|
266
|
+
* This explicitly serializes errors in the SyncStatus.
|
|
267
|
+
*/
|
|
268
|
+
protected serializeError(error?: Error) {
|
|
269
|
+
if (typeof error == 'undefined') {
|
|
270
|
+
return undefined;
|
|
271
|
+
}
|
|
272
|
+
return {
|
|
273
|
+
name: error.name,
|
|
274
|
+
message: error.message,
|
|
275
|
+
stack: error.stack
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
|
|
260
279
|
private static comparePriorities(a: SyncPriorityStatus, b: SyncPriorityStatus) {
|
|
261
280
|
return b.priority - a.priority; // Reverse because higher priorities have lower numbers
|
|
262
281
|
}
|
package/src/index.ts
CHANGED
|
@@ -21,6 +21,7 @@ export * from './client/sync/stream/streaming-sync-types.js';
|
|
|
21
21
|
export * from './client/sync/sync-streams.js';
|
|
22
22
|
|
|
23
23
|
export * from './client/ConnectionManager.js';
|
|
24
|
+
export * from './db/ConnectionClosedError.js';
|
|
24
25
|
export { ProgressWithOperations, SyncProgress } from './db/crud/SyncProgress.js';
|
|
25
26
|
export * from './db/crud/SyncStatus.js';
|
|
26
27
|
export * from './db/crud/UploadQueueStatus.js';
|