@powersync/common 0.0.0-dev-20251209082930 → 0.0.0-dev-20260120150240
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 +366 -2142
- package/dist/bundle.cjs.map +1 -1
- package/dist/bundle.mjs +365 -2143
- package/dist/bundle.mjs.map +1 -1
- package/dist/bundle.node.cjs +153 -100
- package/dist/bundle.node.cjs.map +1 -1
- package/dist/bundle.node.mjs +152 -101
- package/dist/bundle.node.mjs.map +1 -1
- package/dist/index.d.cts +26 -3
- package/lib/client/AbstractPowerSyncDatabase.d.ts +1 -1
- package/lib/client/AbstractPowerSyncDatabase.js +2 -2
- package/lib/client/AbstractPowerSyncDatabase.js.map +1 -1
- package/lib/client/sync/stream/AbstractRemote.js +41 -32
- package/lib/client/sync/stream/AbstractRemote.js.map +1 -1
- package/lib/client/sync/stream/AbstractStreamingSyncImplementation.d.ts +4 -0
- package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js +8 -0
- package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js.map +1 -1
- package/lib/client/sync/stream/streaming-sync-types.d.ts +4 -0
- package/lib/client/sync/stream/streaming-sync-types.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 +4 -0
- package/lib/db/crud/SyncStatus.js +4 -0
- package/lib/db/crud/SyncStatus.js.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/utils/DataStream.js +11 -2
- package/lib/utils/DataStream.js.map +1 -1
- package/package.json +4 -3
- package/src/client/AbstractPowerSyncDatabase.ts +2 -2
- package/src/client/sync/stream/AbstractRemote.ts +47 -35
- package/src/client/sync/stream/AbstractStreamingSyncImplementation.ts +19 -2
- package/src/client/sync/stream/streaming-sync-types.ts +5 -0
- package/src/db/ConnectionClosedError.ts +23 -0
- package/src/db/crud/SyncStatus.ts +4 -0
- package/src/index.ts +2 -0
- package/src/utils/DataStream.ts +13 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionClosedError.js","sourceRoot":"","sources":["../../src/db/ConnectionClosedError.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,MAAM,CAAC,IAAI,GAAG,uBAAuB,CAAC;IAEtC,MAAM,CAAC,OAAO,CAAC,KAAU;QACvB;;;;WAIG;QACH,OAAO,CACL,KAAK,YAAY,qBAAqB,IAAI,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAC/G,CAAC;IACJ,CAAC;IACD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC;IACzC,CAAC"}
|
|
@@ -174,6 +174,10 @@ export declare class SyncStatus {
|
|
|
174
174
|
* @returns {SyncStatusOptions} A plain object representation of the sync status
|
|
175
175
|
*/
|
|
176
176
|
toJSON(): SyncStatusOptions;
|
|
177
|
+
/**
|
|
178
|
+
* Not all errors are serializable over a MessagePort. E.g. some `DomExceptions` fail to be passed across workers.
|
|
179
|
+
* This explicitly serializes errors in the SyncStatus.
|
|
180
|
+
*/
|
|
177
181
|
protected serializeError(error?: Error): {
|
|
178
182
|
name: string;
|
|
179
183
|
message: string;
|
|
@@ -198,6 +198,10 @@ export class SyncStatus {
|
|
|
198
198
|
priorityStatusEntries: this.priorityStatusEntries
|
|
199
199
|
};
|
|
200
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
|
+
*/
|
|
201
205
|
serializeError(error) {
|
|
202
206
|
if (typeof error == 'undefined') {
|
|
203
207
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncStatus.js","sourceRoot":"","sources":["../../../src/db/crud/SyncStatus.ts"],"names":[],"mappings":"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
|
|
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';
|
|
@@ -30,6 +31,7 @@ export * from './db/schema/IndexedColumn.js';
|
|
|
30
31
|
export * from './db/schema/Schema.js';
|
|
31
32
|
export * from './db/schema/Table.js';
|
|
32
33
|
export * from './db/schema/TableV2.js';
|
|
34
|
+
export * from './db/schema/RawTable.js';
|
|
33
35
|
export * from './client/Query.js';
|
|
34
36
|
export * from './client/triggers/sanitizeSQL.js';
|
|
35
37
|
export * from './client/triggers/TriggerManager.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';
|
|
@@ -30,6 +31,7 @@ export * from './db/schema/IndexedColumn.js';
|
|
|
30
31
|
export * from './db/schema/Schema.js';
|
|
31
32
|
export * from './db/schema/Table.js';
|
|
32
33
|
export * from './db/schema/TableV2.js';
|
|
34
|
+
export * from './db/schema/RawTable.js';
|
|
33
35
|
export * from './client/Query.js';
|
|
34
36
|
export * from './client/triggers/sanitizeSQL.js';
|
|
35
37
|
export * from './client/triggers/TriggerManager.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;
|
|
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;AACvC,cAAc,yBAAyB,CAAC;AAExC,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/lib/utils/DataStream.js
CHANGED
|
@@ -67,6 +67,16 @@ export class DataStream extends BaseObserver {
|
|
|
67
67
|
* @returns a Data payload or Null if the stream closed.
|
|
68
68
|
*/
|
|
69
69
|
async read() {
|
|
70
|
+
if (this.closed) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
// Wait for any pending processing to complete first.
|
|
74
|
+
// This ensures we register our listener before calling processQueue(),
|
|
75
|
+
// avoiding a race where processQueue() sees no reader and returns early.
|
|
76
|
+
if (this.processingPromise) {
|
|
77
|
+
await this.processingPromise;
|
|
78
|
+
}
|
|
79
|
+
// Re-check after await - stream may have closed while we were waiting
|
|
70
80
|
if (this.closed) {
|
|
71
81
|
return null;
|
|
72
82
|
}
|
|
@@ -106,7 +116,7 @@ export class DataStream extends BaseObserver {
|
|
|
106
116
|
}
|
|
107
117
|
const promise = (this.processingPromise = this._processQueue());
|
|
108
118
|
promise.finally(() => {
|
|
109
|
-
|
|
119
|
+
this.processingPromise = null;
|
|
110
120
|
});
|
|
111
121
|
return promise;
|
|
112
122
|
}
|
|
@@ -138,7 +148,6 @@ export class DataStream extends BaseObserver {
|
|
|
138
148
|
this.notifyDataAdded = null;
|
|
139
149
|
}
|
|
140
150
|
if (this.dataQueue.length > 0) {
|
|
141
|
-
// Next tick
|
|
142
151
|
setTimeout(() => this.processQueue());
|
|
143
152
|
}
|
|
144
153
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataStream.js","sourceRoot":"","sources":["../../src/utils/DataStream.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"DataStream.js","sourceRoot":"","sources":["../../src/utils/DataStream.ts"],"names":[],"mappings":"AAAA,OAAO,MAAmB,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAgB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AA0B/D,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,CAAC;CACZ,CAAC;AAEF;;;;GAIG;AACH,MAAM,OAAO,UAAyC,SAAQ,YAA4C;IAYlF;IAXtB,SAAS,CAAe;IAEd,QAAQ,CAAU;IAElB,iBAAiB,CAAuB;IACxC,eAAe,CAAsB;IAErC,MAAM,CAAU;IAEhB,OAAO,CAAmC;IAEpD,YAAsB,OAAmD;QACvE,KAAK,EAAE,CAAC;QADY,YAAO,GAAP,OAAO,CAA4C;QAEvE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAW,CAAC,CAAC;QAE3D,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE1D,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAC9B,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;oBACZ,CAAC,EAAE,EAAE,CAAC;oBACN,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,CAAC;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,IAAI,uBAAuB,CAAC,SAAS,CAAC;IACpF,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,IAAI,uBAAuB,CAAC,QAAQ,CAAC;IAClF,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,IAAI,CAAC,iBAAiB,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3C,gCAAgC;QAChC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAgB;QAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QAEzB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,qDAAqD;QACrD,uEAAuE;QACvE,yEAAyE;QACzE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,iBAAiB,CAAC;QAC/B,CAAC;QAED,sEAAsE;QACtE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAC9B,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oBACnB,OAAO,CAAC,IAAI,CAAC,CAAC;oBACd,sBAAsB;oBACtB,CAAC,EAAE,EAAE,CAAC;gBACR,CAAC;gBACD,MAAM,EAAE,GAAG,EAAE;oBACX,OAAO,CAAC,IAAI,CAAC,CAAC;oBACd,CAAC,EAAE,EAAE,CAAC;gBACR,CAAC;gBACD,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;oBACZ,MAAM,CAAC,EAAE,CAAC,CAAC;oBACX,CAAC,EAAE,EAAE,CAAC;gBACR,CAAC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,QAAwC;QAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC/C,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC;YAC3B,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IAES,YAAY;QACpB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;YACnB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,aAAa;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC;IAES,KAAK,CAAC,aAAa;QAC3B;;;;WAIG;QACH,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAG,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC/C,MAAM,SAAS,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAC9C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;YACvF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAES,KAAK,CAAC,mBAAmB,CAAC,EAAiE;QACnG,iGAAiG;QACjG,yCAAyC;QACzC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QACtD,KAAK,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YACd,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;gBACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACtB,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powersync/common",
|
|
3
|
-
"version": "0.0.0-dev-
|
|
3
|
+
"version": "0.0.0-dev-20260120150240",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"registry": "https://registry.npmjs.org/",
|
|
6
6
|
"access": "public"
|
|
@@ -56,10 +56,11 @@
|
|
|
56
56
|
"@rollup/plugin-inject": "^5.0.5",
|
|
57
57
|
"@rollup/plugin-json": "^6.1.0",
|
|
58
58
|
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
59
|
-
"@types/node": "^
|
|
60
|
-
"@types/uuid": "^9.0.
|
|
59
|
+
"@types/node": "^24.0.0",
|
|
60
|
+
"@types/uuid": "^9.0.6",
|
|
61
61
|
"buffer": "^6.0.3",
|
|
62
62
|
"rollup": "^4.52.5",
|
|
63
|
+
"rollup-plugin-dts": "^6.2.1",
|
|
63
64
|
"cross-fetch": "^4.1.0",
|
|
64
65
|
"js-logger": "^1.6.1",
|
|
65
66
|
"rsocket-core": "1.0.0-alpha.3",
|
|
@@ -416,7 +416,7 @@ export abstract class AbstractPowerSyncDatabase extends BaseObserver<PowerSyncDB
|
|
|
416
416
|
protected async initialize() {
|
|
417
417
|
await this._initialize();
|
|
418
418
|
await this.bucketStorageAdapter.init();
|
|
419
|
-
await this.
|
|
419
|
+
await this.loadVersion();
|
|
420
420
|
await this.updateSchema(this.options.schema);
|
|
421
421
|
await this.resolveOfflineSyncStatus();
|
|
422
422
|
await this.database.execute('PRAGMA RECURSIVE_TRIGGERS=TRUE');
|
|
@@ -424,7 +424,7 @@ export abstract class AbstractPowerSyncDatabase extends BaseObserver<PowerSyncDB
|
|
|
424
424
|
this.iterateListeners((cb) => cb.initialized?.());
|
|
425
425
|
}
|
|
426
426
|
|
|
427
|
-
|
|
427
|
+
protected async loadVersion() {
|
|
428
428
|
try {
|
|
429
429
|
const { version } = await this.database.get<{ version: string }>('SELECT powersync_rs_version() as version');
|
|
430
430
|
this.sdkVersion = version;
|
|
@@ -573,7 +573,11 @@ export abstract class AbstractRemote {
|
|
|
573
573
|
|
|
574
574
|
const stream = new DataStream<T, string>({
|
|
575
575
|
logger: this.logger,
|
|
576
|
-
mapLine: mapLine
|
|
576
|
+
mapLine: mapLine,
|
|
577
|
+
pressure: {
|
|
578
|
+
highWaterMark: 20,
|
|
579
|
+
lowWaterMark: 10
|
|
580
|
+
}
|
|
577
581
|
});
|
|
578
582
|
|
|
579
583
|
abortSignal?.addEventListener('abort', () => {
|
|
@@ -585,46 +589,54 @@ export abstract class AbstractRemote {
|
|
|
585
589
|
let buffer = '';
|
|
586
590
|
|
|
587
591
|
|
|
592
|
+
const consumeStream = async () => {
|
|
593
|
+
while (!stream.closed && !abortSignal?.aborted && !readerReleased) {
|
|
594
|
+
const { done, value } = await reader.read();
|
|
595
|
+
if (done) {
|
|
596
|
+
const remaining = buffer.trim();
|
|
597
|
+
if (remaining.length != 0) {
|
|
598
|
+
stream.enqueueData(remaining);
|
|
599
|
+
}
|
|
588
600
|
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
}
|
|
594
|
-
try {
|
|
595
|
-
let didCompleteLine = false;
|
|
596
|
-
while (!didCompleteLine) {
|
|
597
|
-
const { done, value } = await reader.read();
|
|
598
|
-
if (done) {
|
|
599
|
-
const remaining = buffer.trim();
|
|
600
|
-
if (remaining.length != 0) {
|
|
601
|
-
stream.enqueueData(remaining);
|
|
602
|
-
}
|
|
601
|
+
stream.close();
|
|
602
|
+
await closeReader();
|
|
603
|
+
return;
|
|
604
|
+
}
|
|
603
605
|
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
return;
|
|
607
|
-
}
|
|
606
|
+
const data = decoder.decode(value, { stream: true });
|
|
607
|
+
buffer += data;
|
|
608
608
|
|
|
609
|
-
|
|
610
|
-
|
|
609
|
+
const lines = buffer.split('\n');
|
|
610
|
+
for (var i = 0; i < lines.length - 1; i++) {
|
|
611
|
+
var l = lines[i].trim();
|
|
612
|
+
if (l.length > 0) {
|
|
613
|
+
stream.enqueueData(l);
|
|
614
|
+
}
|
|
615
|
+
}
|
|
611
616
|
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
617
|
+
buffer = lines[lines.length - 1];
|
|
618
|
+
|
|
619
|
+
// Implement backpressure by waiting for the low water mark to be reached
|
|
620
|
+
if (stream.dataQueue.length > stream.highWatermark) {
|
|
621
|
+
await new Promise<void>((resolve) => {
|
|
622
|
+
const dispose = stream.registerListener({
|
|
623
|
+
lowWater: async () => {
|
|
624
|
+
resolve();
|
|
625
|
+
dispose();
|
|
626
|
+
},
|
|
627
|
+
closed: () => {
|
|
628
|
+
resolve();
|
|
629
|
+
dispose();
|
|
618
630
|
}
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
buffer = lines[lines.length - 1];
|
|
622
|
-
}
|
|
623
|
-
} catch (ex) {
|
|
624
|
-
stream.close();
|
|
625
|
-
throw ex;
|
|
631
|
+
})
|
|
632
|
+
})
|
|
626
633
|
}
|
|
627
|
-
}
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
consumeStream().catch(ex => this.logger.error('Error consuming stream', ex));
|
|
638
|
+
|
|
639
|
+
const l = stream.registerListener({
|
|
628
640
|
closed: () => {
|
|
629
641
|
closeReader();
|
|
630
642
|
l?.();
|
|
@@ -129,6 +129,11 @@ export interface InternalConnectionOptions extends BaseConnectionOptions, Additi
|
|
|
129
129
|
|
|
130
130
|
/** @internal */
|
|
131
131
|
export interface BaseConnectionOptions {
|
|
132
|
+
/**
|
|
133
|
+
* A set of metadata to be included in service logs.
|
|
134
|
+
*/
|
|
135
|
+
appMetadata?: Record<string, string>;
|
|
136
|
+
|
|
132
137
|
/**
|
|
133
138
|
* Whether to use a JavaScript implementation to handle received sync lines from the sync
|
|
134
139
|
* service, or whether this work should be offloaded to the PowerSync core extension.
|
|
@@ -189,8 +194,7 @@ export interface RequiredAdditionalConnectionOptions extends Required<Additional
|
|
|
189
194
|
}
|
|
190
195
|
|
|
191
196
|
export interface StreamingSyncImplementation
|
|
192
|
-
extends BaseObserverInterface<StreamingSyncImplementationListener>,
|
|
193
|
-
Disposable {
|
|
197
|
+
extends BaseObserverInterface<StreamingSyncImplementationListener>, Disposable {
|
|
194
198
|
/**
|
|
195
199
|
* Connects to the sync service
|
|
196
200
|
*/
|
|
@@ -223,6 +227,7 @@ export const DEFAULT_STREAMING_SYNC_OPTIONS = {
|
|
|
223
227
|
export type RequiredPowerSyncConnectionOptions = Required<BaseConnectionOptions>;
|
|
224
228
|
|
|
225
229
|
export const DEFAULT_STREAM_CONNECTION_OPTIONS: RequiredPowerSyncConnectionOptions = {
|
|
230
|
+
appMetadata: {},
|
|
226
231
|
connectionMethod: SyncStreamConnectionMethod.WEB_SOCKET,
|
|
227
232
|
clientImplementation: DEFAULT_SYNC_CLIENT_IMPLEMENTATION,
|
|
228
233
|
fetchStrategy: FetchStrategy.Buffered,
|
|
@@ -658,6 +663,16 @@ The next upload iteration will be delayed.`);
|
|
|
658
663
|
...DEFAULT_STREAM_CONNECTION_OPTIONS,
|
|
659
664
|
...(options ?? {})
|
|
660
665
|
};
|
|
666
|
+
|
|
667
|
+
// Validate app metadata
|
|
668
|
+
const invalidMetadata = Object.entries(resolvedOptions.appMetadata).filter(
|
|
669
|
+
([_, value]) => typeof value != 'string'
|
|
670
|
+
);
|
|
671
|
+
if (invalidMetadata.length > 0) {
|
|
672
|
+
throw new Error(
|
|
673
|
+
`Invalid appMetadata provided. Only string values are allowed. Invalid values: ${invalidMetadata.map(([key, value]) => `${key}: ${value}`).join(', ')}`
|
|
674
|
+
);
|
|
675
|
+
}
|
|
661
676
|
const clientImplementation = resolvedOptions.clientImplementation;
|
|
662
677
|
this.updateSyncStatus({ clientImplementation });
|
|
663
678
|
|
|
@@ -699,6 +714,7 @@ The next upload iteration will be delayed.`);
|
|
|
699
714
|
include_checksum: true,
|
|
700
715
|
raw_data: true,
|
|
701
716
|
parameters: resolvedOptions.params,
|
|
717
|
+
app_metadata: resolvedOptions.appMetadata,
|
|
702
718
|
client_id: clientId
|
|
703
719
|
}
|
|
704
720
|
};
|
|
@@ -1088,6 +1104,7 @@ The next upload iteration will be delayed.`);
|
|
|
1088
1104
|
try {
|
|
1089
1105
|
const options: any = {
|
|
1090
1106
|
parameters: resolvedOptions.params,
|
|
1107
|
+
app_metadata: resolvedOptions.appMetadata,
|
|
1091
1108
|
active_streams: this.activeStreams,
|
|
1092
1109
|
include_defaults: resolvedOptions.includeDefaultStreams
|
|
1093
1110
|
};
|
|
@@ -90,6 +90,11 @@ export interface StreamingSyncRequest {
|
|
|
90
90
|
*/
|
|
91
91
|
parameters?: Record<string, StreamingSyncRequestParameterType>;
|
|
92
92
|
|
|
93
|
+
/**
|
|
94
|
+
* Application metadata to be included in service logs.
|
|
95
|
+
*/
|
|
96
|
+
app_metadata?: Record<string, string>;
|
|
97
|
+
|
|
93
98
|
client_id?: string;
|
|
94
99
|
}
|
|
95
100
|
|
|
@@ -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
|
+
}
|
|
@@ -261,6 +261,10 @@ export class SyncStatus {
|
|
|
261
261
|
};
|
|
262
262
|
}
|
|
263
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
|
+
*/
|
|
264
268
|
protected serializeError(error?: Error) {
|
|
265
269
|
if (typeof error == 'undefined') {
|
|
266
270
|
return undefined;
|
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';
|
|
@@ -31,6 +32,7 @@ export * from './db/schema/IndexedColumn.js';
|
|
|
31
32
|
export * from './db/schema/Schema.js';
|
|
32
33
|
export * from './db/schema/Table.js';
|
|
33
34
|
export * from './db/schema/TableV2.js';
|
|
35
|
+
export * from './db/schema/RawTable.js';
|
|
34
36
|
|
|
35
37
|
export * from './client/Query.js';
|
|
36
38
|
export * from './client/triggers/sanitizeSQL.js';
|
package/src/utils/DataStream.ts
CHANGED
|
@@ -110,6 +110,18 @@ export class DataStream<ParsedData, SourceData = any> extends BaseObserver<DataS
|
|
|
110
110
|
return null;
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
+
// Wait for any pending processing to complete first.
|
|
114
|
+
// This ensures we register our listener before calling processQueue(),
|
|
115
|
+
// avoiding a race where processQueue() sees no reader and returns early.
|
|
116
|
+
if (this.processingPromise) {
|
|
117
|
+
await this.processingPromise;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Re-check after await - stream may have closed while we were waiting
|
|
121
|
+
if (this.closed) {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
|
|
113
125
|
return new Promise((resolve, reject) => {
|
|
114
126
|
const l = this.registerListener({
|
|
115
127
|
data: async (data) => {
|
|
@@ -151,7 +163,7 @@ export class DataStream<ParsedData, SourceData = any> extends BaseObserver<DataS
|
|
|
151
163
|
|
|
152
164
|
const promise = (this.processingPromise = this._processQueue());
|
|
153
165
|
promise.finally(() => {
|
|
154
|
-
|
|
166
|
+
this.processingPromise = null;
|
|
155
167
|
});
|
|
156
168
|
return promise;
|
|
157
169
|
}
|
|
@@ -190,7 +202,6 @@ export class DataStream<ParsedData, SourceData = any> extends BaseObserver<DataS
|
|
|
190
202
|
}
|
|
191
203
|
|
|
192
204
|
if (this.dataQueue.length > 0) {
|
|
193
|
-
// Next tick
|
|
194
205
|
setTimeout(() => this.processQueue());
|
|
195
206
|
}
|
|
196
207
|
}
|