@powersync/common 1.53.1 → 1.54.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 +560 -353
- package/dist/bundle.cjs.map +1 -1
- package/dist/bundle.mjs +560 -353
- package/dist/bundle.mjs.map +1 -1
- package/dist/bundle.node.cjs +560 -353
- package/dist/bundle.node.cjs.map +1 -1
- package/dist/bundle.node.mjs +560 -353
- package/dist/bundle.node.mjs.map +1 -1
- package/dist/index.d.cts +733 -198
- package/lib/attachments/AttachmentContext.d.ts +7 -6
- package/lib/attachments/AttachmentContext.js +2 -1
- package/lib/attachments/AttachmentContext.js.map +1 -1
- package/lib/attachments/AttachmentErrorHandler.d.ts +6 -6
- package/lib/attachments/AttachmentQueue.d.ts +61 -20
- package/lib/attachments/AttachmentQueue.js +16 -18
- package/lib/attachments/AttachmentQueue.js.map +1 -1
- package/lib/attachments/LocalStorageAdapter.d.ts +14 -8
- package/lib/attachments/LocalStorageAdapter.js +3 -0
- package/lib/attachments/LocalStorageAdapter.js.map +1 -1
- package/lib/attachments/RemoteStorageAdapter.d.ts +4 -4
- package/lib/attachments/Schema.d.ts +12 -4
- package/lib/attachments/Schema.js +8 -3
- package/lib/attachments/Schema.js.map +1 -1
- package/lib/attachments/WatchedAttachmentItem.d.ts +3 -1
- package/lib/client/AbstractPowerSyncDatabase.d.ts +110 -58
- package/lib/client/AbstractPowerSyncDatabase.js +59 -48
- package/lib/client/AbstractPowerSyncDatabase.js.map +1 -1
- package/lib/client/AbstractPowerSyncOpenFactory.d.ts +6 -0
- package/lib/client/AbstractPowerSyncOpenFactory.js +3 -0
- package/lib/client/AbstractPowerSyncOpenFactory.js.map +1 -1
- package/lib/client/ConnectionManager.d.ts +4 -1
- package/lib/client/ConnectionManager.js +1 -1
- package/lib/client/ConnectionManager.js.map +1 -1
- package/lib/client/Query.d.ts +9 -0
- package/lib/client/SQLOpenFactory.d.ts +12 -0
- package/lib/client/SQLOpenFactory.js +6 -0
- package/lib/client/SQLOpenFactory.js.map +1 -1
- package/lib/client/compilableQueryWatch.d.ts +6 -0
- package/lib/client/compilableQueryWatch.js +3 -0
- package/lib/client/compilableQueryWatch.js.map +1 -1
- package/lib/client/connection/PowerSyncBackendConnector.d.ts +3 -0
- package/lib/client/connection/PowerSyncCredentials.d.ts +3 -0
- package/lib/client/constants.d.ts +3 -0
- package/lib/client/constants.js +3 -0
- package/lib/client/constants.js.map +1 -1
- package/lib/client/runOnSchemaChange.d.ts +3 -0
- package/lib/client/runOnSchemaChange.js +3 -0
- package/lib/client/runOnSchemaChange.js.map +1 -1
- package/lib/client/sync/bucket/BucketStorageAdapter.d.ts +12 -0
- package/lib/client/sync/bucket/BucketStorageAdapter.js +6 -0
- package/lib/client/sync/bucket/BucketStorageAdapter.js.map +1 -1
- package/lib/client/sync/bucket/CrudBatch.d.ts +2 -0
- package/lib/client/sync/bucket/CrudBatch.js +2 -0
- package/lib/client/sync/bucket/CrudBatch.js.map +1 -1
- package/lib/client/sync/bucket/CrudEntry.d.ts +9 -0
- package/lib/client/sync/bucket/CrudEntry.js +4 -0
- package/lib/client/sync/bucket/CrudEntry.js.map +1 -1
- package/lib/client/sync/bucket/CrudTransaction.d.ts +3 -0
- package/lib/client/sync/bucket/CrudTransaction.js +3 -0
- package/lib/client/sync/bucket/CrudTransaction.js.map +1 -1
- package/lib/client/sync/bucket/SqliteBucketStorage.d.ts +3 -0
- package/lib/client/sync/bucket/SqliteBucketStorage.js +3 -0
- package/lib/client/sync/bucket/SqliteBucketStorage.js.map +1 -1
- package/lib/client/sync/stream/AbstractRemote.d.ts +30 -1
- package/lib/client/sync/stream/AbstractRemote.js +15 -1
- package/lib/client/sync/stream/AbstractRemote.js.map +1 -1
- package/lib/client/sync/stream/AbstractStreamingSyncImplementation.d.ts +61 -14
- package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js +60 -47
- package/lib/client/sync/stream/AbstractStreamingSyncImplementation.js.map +1 -1
- package/lib/client/sync/stream/JsonValue.d.ts +3 -0
- package/lib/client/sync/stream/WebsocketClientTransport.js +2 -1
- package/lib/client/sync/stream/WebsocketClientTransport.js.map +1 -1
- package/lib/client/sync/sync-streams.d.ts +22 -7
- package/lib/client/triggers/TriggerManager.d.ts +19 -18
- package/lib/client/triggers/TriggerManager.js +2 -1
- package/lib/client/triggers/TriggerManager.js.map +1 -1
- package/lib/client/triggers/TriggerManagerImpl.d.ts +1 -1
- package/lib/client/triggers/TriggerManagerImpl.js +3 -3
- package/lib/client/triggers/TriggerManagerImpl.js.map +1 -1
- package/lib/client/triggers/sanitizeSQL.d.ts +4 -0
- package/lib/client/triggers/sanitizeSQL.js +4 -0
- package/lib/client/triggers/sanitizeSQL.js.map +1 -1
- package/lib/client/watched/GetAllQuery.d.ts +4 -0
- package/lib/client/watched/GetAllQuery.js +2 -0
- package/lib/client/watched/GetAllQuery.js.map +1 -1
- package/lib/client/watched/WatchedQuery.d.ts +24 -2
- package/lib/client/watched/WatchedQuery.js +9 -0
- package/lib/client/watched/WatchedQuery.js.map +1 -1
- package/lib/client/watched/processors/AbstractQueryProcessor.d.ts +1 -1
- package/lib/client/watched/processors/AbstractQueryProcessor.js.map +1 -1
- package/lib/client/watched/processors/DifferentialQueryProcessor.d.ts +20 -0
- package/lib/client/watched/processors/DifferentialQueryProcessor.js +4 -0
- package/lib/client/watched/processors/DifferentialQueryProcessor.js.map +1 -1
- package/lib/client/watched/processors/OnChangeQueryProcessor.d.ts +4 -0
- package/lib/client/watched/processors/OnChangeQueryProcessor.js.map +1 -1
- package/lib/client/watched/processors/comparators.d.ts +8 -0
- package/lib/client/watched/processors/comparators.js +4 -0
- package/lib/client/watched/processors/comparators.js.map +1 -1
- package/lib/db/ConnectionClosedError.d.ts +2 -0
- package/lib/db/ConnectionClosedError.js +2 -0
- package/lib/db/ConnectionClosedError.js.map +1 -1
- package/lib/db/DBAdapter.d.ts +56 -6
- package/lib/db/DBAdapter.js +15 -3
- package/lib/db/DBAdapter.js.map +1 -1
- package/lib/db/crud/SyncProgress.d.ts +6 -1
- package/lib/db/crud/SyncProgress.js +2 -0
- package/lib/db/crud/SyncProgress.js.map +1 -1
- package/lib/db/crud/SyncStatus.d.ts +36 -38
- package/lib/db/crud/SyncStatus.js +19 -14
- package/lib/db/crud/SyncStatus.js.map +1 -1
- package/lib/db/crud/UploadQueueStatus.d.ts +3 -0
- package/lib/db/crud/UploadQueueStatus.js +3 -0
- package/lib/db/crud/UploadQueueStatus.js.map +1 -1
- package/lib/db/schema/Column.d.ts +28 -0
- package/lib/db/schema/Column.js +16 -3
- package/lib/db/schema/Column.js.map +1 -1
- package/lib/db/schema/Index.d.ts +9 -0
- package/lib/db/schema/Index.js +6 -0
- package/lib/db/schema/Index.js.map +1 -1
- package/lib/db/schema/IndexedColumn.d.ts +9 -0
- package/lib/db/schema/IndexedColumn.js +6 -0
- package/lib/db/schema/IndexedColumn.js.map +1 -1
- package/lib/db/schema/RawTable.d.ts +7 -1
- package/lib/db/schema/Schema.d.ts +6 -1
- package/lib/db/schema/Schema.js +3 -1
- package/lib/db/schema/Schema.js.map +1 -1
- package/lib/db/schema/Table.d.ts +27 -3
- package/lib/db/schema/Table.js +9 -0
- package/lib/db/schema/Table.js.map +1 -1
- package/lib/db/schema/TableV2.d.ts +2 -0
- package/lib/db/schema/TableV2.js +2 -0
- package/lib/db/schema/TableV2.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/types/types.d.ts +6 -0
- package/lib/utils/AbortOperation.d.ts +2 -0
- package/lib/utils/AbortOperation.js +2 -0
- package/lib/utils/AbortOperation.js.map +1 -1
- package/lib/utils/BaseObserver.d.ts +12 -0
- package/lib/utils/BaseObserver.js +3 -0
- package/lib/utils/BaseObserver.js.map +1 -1
- package/lib/utils/ControlledExecutor.d.ts +6 -0
- package/lib/utils/ControlledExecutor.js +3 -0
- package/lib/utils/ControlledExecutor.js.map +1 -1
- package/lib/utils/Logger.d.ts +9 -0
- package/lib/utils/Logger.js +6 -0
- package/lib/utils/Logger.js.map +1 -1
- package/lib/utils/async.d.ts +13 -7
- package/lib/utils/async.js +38 -24
- package/lib/utils/async.js.map +1 -1
- package/lib/utils/mutex.d.ts +8 -0
- package/lib/utils/mutex.js +3 -0
- package/lib/utils/mutex.js.map +1 -1
- package/lib/utils/parseQuery.d.ts +6 -0
- package/lib/utils/parseQuery.js +3 -0
- package/lib/utils/parseQuery.js.map +1 -1
- package/lib/utils/stream_transform.d.ts +3 -1
- package/lib/utils/stream_transform.js.map +1 -1
- package/package.json +3 -2
- package/src/attachments/AttachmentContext.ts +7 -6
- package/src/attachments/AttachmentErrorHandler.ts +6 -6
- package/src/attachments/AttachmentQueue.ts +71 -23
- package/src/attachments/LocalStorageAdapter.ts +14 -8
- package/src/attachments/README.md +2 -0
- package/src/attachments/RemoteStorageAdapter.ts +4 -4
- package/src/attachments/Schema.ts +12 -4
- package/src/attachments/WatchedAttachmentItem.ts +3 -1
- package/src/client/AbstractPowerSyncDatabase.ts +117 -62
- package/src/client/AbstractPowerSyncOpenFactory.ts +6 -0
- package/src/client/ConnectionManager.ts +4 -1
- package/src/client/Query.ts +9 -0
- package/src/client/SQLOpenFactory.ts +12 -0
- package/src/client/compilableQueryWatch.ts +6 -0
- package/src/client/connection/PowerSyncBackendConnector.ts +3 -0
- package/src/client/connection/PowerSyncCredentials.ts +3 -0
- package/src/client/constants.ts +3 -0
- package/src/client/runOnSchemaChange.ts +3 -0
- package/src/client/sync/bucket/BucketStorageAdapter.ts +12 -0
- package/src/client/sync/bucket/CrudBatch.ts +2 -0
- package/src/client/sync/bucket/CrudEntry.ts +9 -0
- package/src/client/sync/bucket/CrudTransaction.ts +3 -0
- package/src/client/sync/bucket/SqliteBucketStorage.ts +3 -0
- package/src/client/sync/stream/AbstractRemote.ts +30 -1
- package/src/client/sync/stream/AbstractStreamingSyncImplementation.ts +86 -59
- package/src/client/sync/stream/JsonValue.ts +3 -0
- package/src/client/sync/stream/WebsocketClientTransport.ts +3 -1
- package/src/client/sync/sync-streams.ts +22 -9
- package/src/client/triggers/TriggerManager.ts +19 -18
- package/src/client/triggers/TriggerManagerImpl.ts +5 -5
- package/src/client/triggers/sanitizeSQL.ts +5 -0
- package/src/client/watched/GetAllQuery.ts +5 -1
- package/src/client/watched/WatchedQuery.ts +24 -2
- package/src/client/watched/processors/AbstractQueryProcessor.ts +6 -6
- package/src/client/watched/processors/DifferentialQueryProcessor.ts +28 -5
- package/src/client/watched/processors/OnChangeQueryProcessor.ts +9 -3
- package/src/client/watched/processors/comparators.ts +8 -0
- package/src/db/ConnectionClosedError.ts +2 -0
- package/src/db/DBAdapter.ts +58 -6
- package/src/db/crud/SyncProgress.ts +6 -1
- package/src/db/crud/SyncStatus.ts +40 -21
- package/src/db/crud/UploadQueueStatus.ts +3 -0
- package/src/db/schema/Column.ts +28 -3
- package/src/db/schema/Index.ts +9 -0
- package/src/db/schema/IndexedColumn.ts +9 -0
- package/src/db/schema/RawTable.ts +7 -1
- package/src/db/schema/Schema.ts +8 -3
- package/src/db/schema/Table.ts +30 -5
- package/src/db/schema/TableV2.ts +2 -0
- package/src/index.ts +1 -1
- package/src/types/types.ts +6 -0
- package/src/utils/AbortOperation.ts +2 -0
- package/src/utils/BaseObserver.ts +12 -0
- package/src/utils/ControlledExecutor.ts +6 -0
- package/src/utils/Logger.ts +9 -0
- package/src/utils/async.ts +51 -24
- package/src/utils/mutex.ts +12 -0
- package/src/utils/parseQuery.ts +6 -0
- package/src/utils/stream_transform.ts +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbortOperation.js","sourceRoot":"","sources":["../../src/utils/AbortOperation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"AbortOperation.js","sourceRoot":"","sources":["../../src/utils/AbortOperation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACjB;IAAtB,YAAsB,MAAc;QAClC,KAAK,CAAC,MAAM,CAAC,CAAC;QADM,WAAM,GAAN,MAAM,CAAQ;QAElC,+BAA+B;QAC/B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;QAEtD,sBAAsB;QACtB,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,10 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @public
|
|
3
|
+
*/
|
|
1
4
|
export interface Disposable {
|
|
2
5
|
dispose: () => Promise<void> | void;
|
|
3
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
4
10
|
export type BaseListener = Record<string, ((...event: any) => any) | undefined>;
|
|
11
|
+
/**
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
5
14
|
export interface BaseObserverInterface<T extends BaseListener> {
|
|
6
15
|
registerListener(listener: Partial<T>): () => void;
|
|
7
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
8
20
|
export declare class BaseObserver<T extends BaseListener = BaseListener> implements BaseObserverInterface<T> {
|
|
9
21
|
protected listeners: Set<Partial<T>>;
|
|
10
22
|
constructor();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseObserver.js","sourceRoot":"","sources":["../../src/utils/BaseObserver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BaseObserver.js","sourceRoot":"","sources":["../../src/utils/BaseObserver.ts"],"names":[],"mappings":"AAmBA;;GAEG;AACH,MAAM,OAAO,YAAY;IACb,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IAE5C,gBAAe,CAAC;IAEhB,OAAO;QACL,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED;;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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
*/
|
|
1
4
|
export interface ControlledExecutorOptions {
|
|
2
5
|
/**
|
|
3
6
|
* If throttling is enabled, it ensures only one task runs at a time,
|
|
@@ -6,6 +9,9 @@ export interface ControlledExecutorOptions {
|
|
|
6
9
|
*/
|
|
7
10
|
throttleEnabled?: boolean;
|
|
8
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
9
15
|
export declare class ControlledExecutor<T> {
|
|
10
16
|
private task;
|
|
11
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControlledExecutor.js","sourceRoot":"","sources":["../../src/utils/ControlledExecutor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ControlledExecutor.js","sourceRoot":"","sources":["../../src/utils/ControlledExecutor.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACrB,IAAI,CAAqC;IAEjD;;OAEG;IACK,WAAW,CAAqC;IAEhD,gBAAgB,CAAgB;IAExC;;OAEG;IACK,YAAY,CAAU;IAEtB,MAAM,CAAU;IAExB,YAAY,IAAwC,EAAE,OAAmC;QACvF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,EAAE,eAAe,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,QAAQ,CAAC,KAAQ;QACf,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,wDAAwD;YACxD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,KAAQ;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,WAAW,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAE7B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC3C,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;YAElC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;CACF"}
|
package/lib/utils/Logger.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import Logger, { type ILogger, type ILogLevel } from 'js-logger';
|
|
2
2
|
export { GlobalLogger, ILogger, ILoggerOpts, ILogHandler, ILogLevel } from 'js-logger';
|
|
3
|
+
/**
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
3
6
|
export declare const LogLevel: {
|
|
4
7
|
TRACE: Logger.ILogLevel;
|
|
5
8
|
DEBUG: Logger.ILogLevel;
|
|
@@ -9,6 +12,9 @@ export declare const LogLevel: {
|
|
|
9
12
|
ERROR: Logger.ILogLevel;
|
|
10
13
|
OFF: Logger.ILogLevel;
|
|
11
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
12
18
|
export interface CreateLoggerOptions {
|
|
13
19
|
logLevel?: ILogLevel;
|
|
14
20
|
}
|
|
@@ -19,6 +25,7 @@ export interface CreateLoggerOptions {
|
|
|
19
25
|
* across all loggers created with `createLogger`. Adjusting settings on this
|
|
20
26
|
* base logger affects all loggers derived from it unless explicitly overridden.
|
|
21
27
|
*
|
|
28
|
+
* @public
|
|
22
29
|
*/
|
|
23
30
|
export declare function createBaseLogger(): typeof Logger;
|
|
24
31
|
/**
|
|
@@ -27,5 +34,7 @@ export declare function createBaseLogger(): typeof Logger;
|
|
|
27
34
|
* Named loggers allow specific modules or areas of your application to have
|
|
28
35
|
* their own logging levels and behaviors. These loggers inherit configuration
|
|
29
36
|
* from the base logger by default but can override settings independently.
|
|
37
|
+
*
|
|
38
|
+
* @public
|
|
30
39
|
*/
|
|
31
40
|
export declare function createLogger(name: string, options?: CreateLoggerOptions): ILogger;
|
package/lib/utils/Logger.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import Logger from 'js-logger';
|
|
2
2
|
const TypedLogger = Logger;
|
|
3
|
+
/**
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
3
6
|
export const LogLevel = {
|
|
4
7
|
TRACE: TypedLogger.TRACE,
|
|
5
8
|
DEBUG: TypedLogger.DEBUG,
|
|
@@ -16,6 +19,7 @@ export const LogLevel = {
|
|
|
16
19
|
* across all loggers created with `createLogger`. Adjusting settings on this
|
|
17
20
|
* base logger affects all loggers derived from it unless explicitly overridden.
|
|
18
21
|
*
|
|
22
|
+
* @public
|
|
19
23
|
*/
|
|
20
24
|
export function createBaseLogger() {
|
|
21
25
|
return Logger;
|
|
@@ -26,6 +30,8 @@ export function createBaseLogger() {
|
|
|
26
30
|
* Named loggers allow specific modules or areas of your application to have
|
|
27
31
|
* their own logging levels and behaviors. These loggers inherit configuration
|
|
28
32
|
* from the base logger by default but can override settings independently.
|
|
33
|
+
*
|
|
34
|
+
* @public
|
|
29
35
|
*/
|
|
30
36
|
export function createLogger(name, options = {}) {
|
|
31
37
|
const logger = Logger.get(name);
|
package/lib/utils/Logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/utils/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,MAAwC,MAAM,WAAW,CAAC;AAIjE,MAAM,WAAW,GAAY,MAAa,CAAC;AAE3C,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,GAAG,EAAE,WAAW,CAAC,GAAG;CACrB,CAAC;
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/utils/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,MAAwC,MAAM,WAAW,CAAC;AAIjE,MAAM,WAAW,GAAY,MAAa,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,KAAK,EAAE,WAAW,CAAC,KAAK;IACxB,GAAG,EAAE,WAAW,CAAC,GAAG;CACrB,CAAC;AASF;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,UAA+B,EAAE;IAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/lib/utils/async.d.ts
CHANGED
|
@@ -5,10 +5,16 @@
|
|
|
5
5
|
* Roughly equivalent to lodash/throttle with {leading: false, trailing: true}
|
|
6
6
|
*/
|
|
7
7
|
export declare function throttleTrailing(func: () => void, wait: number): () => void;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
export interface AsyncNotifier {
|
|
9
|
+
/**
|
|
10
|
+
* @param signal Also resolve the promise once this signal completes.
|
|
11
|
+
* @returns A promise that resolves once {@link notify} is called after this promise was last resolved.
|
|
12
|
+
*/
|
|
13
|
+
waitForNotification(signal: AbortSignal): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Notifies a pending listener, or makes the next {@link waitForNotification} complete immediately if no listener
|
|
16
|
+
* is currently active.
|
|
17
|
+
*/
|
|
18
|
+
notify(): void;
|
|
19
|
+
}
|
|
20
|
+
export declare function asyncNotifier(): AsyncNotifier;
|
package/lib/utils/async.js
CHANGED
|
@@ -16,30 +16,44 @@ export function throttleTrailing(func, wait) {
|
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
19
|
+
export function asyncNotifier() {
|
|
20
|
+
let waitingConsumer = null;
|
|
21
|
+
let hasPendingNotification = false;
|
|
22
|
+
return {
|
|
23
|
+
notify() {
|
|
24
|
+
if (waitingConsumer != null) {
|
|
25
|
+
waitingConsumer();
|
|
26
|
+
waitingConsumer = null;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
hasPendingNotification = true;
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
waitForNotification(signal) {
|
|
33
|
+
return new Promise((resolve) => {
|
|
34
|
+
if (waitingConsumer != null) {
|
|
35
|
+
throw new Error('Illegal call to waitForNotification, already has a waiter.');
|
|
36
|
+
}
|
|
37
|
+
if (signal.aborted) {
|
|
38
|
+
resolve();
|
|
39
|
+
}
|
|
40
|
+
else if (hasPendingNotification) {
|
|
41
|
+
resolve();
|
|
42
|
+
hasPendingNotification = false;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
function complete() {
|
|
46
|
+
signal.removeEventListener('abort', onAbort);
|
|
47
|
+
resolve();
|
|
48
|
+
}
|
|
49
|
+
function onAbort() {
|
|
50
|
+
waitingConsumer = null;
|
|
51
|
+
resolve();
|
|
52
|
+
}
|
|
53
|
+
waitingConsumer = complete;
|
|
54
|
+
signal.addEventListener('abort', onAbort);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
43
57
|
}
|
|
44
58
|
};
|
|
45
59
|
}
|
package/lib/utils/async.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/utils/async.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAgB,EAAE,IAAY;IAC7D,IAAI,SAAS,GAAyC,IAAI,CAAC;IAE3D,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,EAAE,CAAC;QACP,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/utils/async.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAgB,EAAE,IAAY;IAC7D,IAAI,SAAS,GAAyC,IAAI,CAAC;IAE3D,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,EAAE,CAAC;QACP,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAgBD,MAAM,UAAU,aAAa;IAC3B,IAAI,eAAe,GAAwB,IAAI,CAAC;IAChD,IAAI,sBAAsB,GAAG,KAAK,CAAC;IAEnC,OAAO;QACL,MAAM;YACJ,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;gBAC5B,eAAe,EAAE,CAAC;gBAClB,eAAe,GAAG,IAAI,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,sBAAsB,GAAG,IAAI,CAAC;YAChC,CAAC;QACH,CAAC;QACD,mBAAmB,CAAC,MAAmB;YACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;gBAChF,CAAC;gBAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,IAAI,sBAAsB,EAAE,CAAC;oBAClC,OAAO,EAAE,CAAC;oBACV,sBAAsB,GAAG,KAAK,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,SAAS,QAAQ;wBACf,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;wBAC7C,OAAO,EAAE,CAAC;oBACZ,CAAC;oBAED,SAAS,OAAO;wBACd,eAAe,GAAG,IAAI,CAAC;wBACvB,OAAO,EAAE,CAAC;oBACZ,CAAC;oBAED,eAAe,GAAG,QAAQ,CAAC;oBAC3B,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/lib/utils/mutex.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal
|
|
3
|
+
*/
|
|
1
4
|
export type UnlockFn = () => void;
|
|
2
5
|
/**
|
|
3
6
|
* An asynchronous semaphore implementation with associated items per lease.
|
|
@@ -44,6 +47,11 @@ export declare class Mutex {
|
|
|
44
47
|
}
|
|
45
48
|
/**
|
|
46
49
|
* Creates a signal aborting after the set timeout.
|
|
50
|
+
*
|
|
51
|
+
* @internal
|
|
47
52
|
*/
|
|
48
53
|
export declare function timeoutSignal(timeout: number): AbortSignal;
|
|
54
|
+
/**
|
|
55
|
+
* @internal
|
|
56
|
+
*/
|
|
49
57
|
export declare function timeoutSignal(timeout?: number): AbortSignal | undefined;
|
package/lib/utils/mutex.js
CHANGED
package/lib/utils/mutex.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutex.js","sourceRoot":"","sources":["../../src/utils/mutex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"mutex.js","sourceRoot":"","sources":["../../src/utils/mutex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { CompilableQuery } from '../types/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
2
5
|
export interface ParsedQuery {
|
|
3
6
|
sqlStatement: string;
|
|
4
7
|
parameters: any[];
|
|
5
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
6
12
|
export declare const parseQuery: <T>(query: string | CompilableQuery<T>, parameters: any[]) => ParsedQuery;
|
package/lib/utils/parseQuery.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseQuery.js","sourceRoot":"","sources":["../../src/utils/parseQuery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parseQuery.js","sourceRoot":"","sources":["../../src/utils/parseQuery.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,KAAkC,EAAE,UAAiB,EAAe,EAAE;IAClG,IAAI,YAAoB,CAAC;IAEzB,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,YAAY,GAAG,KAAK,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,MAAM,uBAAuB,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QACtD,IAAI,uBAAuB,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QACjC,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC;QAC5B,UAAU,GAAG,QAAQ,CAAC,UAAmB,CAAC;IAC5C,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAClD,CAAC,CAAC"}
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
* An async iterator that can't be cancelled.
|
|
3
3
|
*
|
|
4
4
|
* To keep data flow simple, we always pass an explicit cancellation token when subscribing to async streams. Once the
|
|
5
|
-
*
|
|
5
|
+
* `AbortSignal` aborts, iterators are supposed to clean up and then emit a final `{done: true}` event. This means
|
|
6
6
|
* that there's no way to distinguish between streams that have completed normally and streams that have been cancelled,
|
|
7
7
|
* but that is acceptable for our uses of this.
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
8
10
|
*/
|
|
9
11
|
export type SimpleAsyncIterator<T> = Pick<AsyncIterator<T>, 'next'>;
|
|
10
12
|
export declare const doneResult: IteratorReturnResult<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream_transform.js","sourceRoot":"","sources":["../../src/utils/stream_transform.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stream_transform.js","sourceRoot":"","sources":["../../src/utils/stream_transform.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.
|
|
3
|
+
"version": "1.54.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"registry": "https://registry.npmjs.org/",
|
|
6
6
|
"access": "public"
|
|
@@ -69,7 +69,8 @@
|
|
|
69
69
|
"rollup": "^4.52.5",
|
|
70
70
|
"rollup-plugin-dts": "^6.2.1",
|
|
71
71
|
"rsocket-core": "1.0.0-alpha.3",
|
|
72
|
-
"rsocket-websocket-client": "1.0.0-alpha.3"
|
|
72
|
+
"rsocket-websocket-client": "1.0.0-alpha.3",
|
|
73
|
+
"@microsoft/api-extractor": "^7.58.7"
|
|
73
74
|
},
|
|
74
75
|
"scripts": {
|
|
75
76
|
"build": "tsc -b && rollup -c rollup.config.mjs",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AbstractPowerSyncDatabase } from '../client/AbstractPowerSyncDatabase.js';
|
|
2
|
-
import { ILogger } from '../utils/Logger.js';
|
|
3
2
|
import { Transaction } from '../db/DBAdapter.js';
|
|
3
|
+
import { ILogger } from '../utils/Logger.js';
|
|
4
4
|
import { AttachmentRecord, AttachmentState, attachmentFromSql } from './Schema.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -9,20 +9,21 @@ import { AttachmentRecord, AttachmentState, attachmentFromSql } from './Schema.j
|
|
|
9
9
|
* Provides methods to query, insert, update, and delete attachment records with
|
|
10
10
|
* proper transaction management through PowerSync.
|
|
11
11
|
*
|
|
12
|
-
* @
|
|
12
|
+
* @experimental
|
|
13
|
+
* @alpha
|
|
13
14
|
*/
|
|
14
15
|
export class AttachmentContext {
|
|
15
16
|
/** PowerSync database instance for executing queries */
|
|
16
|
-
db: AbstractPowerSyncDatabase;
|
|
17
|
+
readonly db: AbstractPowerSyncDatabase;
|
|
17
18
|
|
|
18
19
|
/** Name of the database table storing attachment records */
|
|
19
|
-
tableName: string;
|
|
20
|
+
readonly tableName: string;
|
|
20
21
|
|
|
21
22
|
/** Logger instance for diagnostic information */
|
|
22
|
-
logger: ILogger;
|
|
23
|
+
readonly logger: ILogger;
|
|
23
24
|
|
|
24
25
|
/** Maximum number of archived attachments to keep before cleanup */
|
|
25
|
-
archivedCacheLimit: number = 100;
|
|
26
|
+
readonly archivedCacheLimit: number = 100;
|
|
26
27
|
|
|
27
28
|
/**
|
|
28
29
|
* Creates a new AttachmentContext instance.
|
|
@@ -10,24 +10,24 @@ import { AttachmentRecord } from './Schema.js';
|
|
|
10
10
|
export interface AttachmentErrorHandler {
|
|
11
11
|
/**
|
|
12
12
|
* Handles a download error for a specific attachment.
|
|
13
|
-
* @param attachment The attachment that failed to download
|
|
14
|
-
* @param error The error encountered during the download
|
|
13
|
+
* @param attachment - The attachment that failed to download
|
|
14
|
+
* @param error - The error encountered during the download
|
|
15
15
|
* @returns `true` to retry the operation, `false` to archive the attachment
|
|
16
16
|
*/
|
|
17
17
|
onDownloadError(attachment: AttachmentRecord, error: unknown): Promise<boolean>;
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* Handles an upload error for a specific attachment.
|
|
21
|
-
* @param attachment The attachment that failed to upload
|
|
22
|
-
* @param error The error encountered during the upload
|
|
21
|
+
* @param attachment - The attachment that failed to upload
|
|
22
|
+
* @param error - The error encountered during the upload
|
|
23
23
|
* @returns `true` to retry the operation, `false` to archive the attachment
|
|
24
24
|
*/
|
|
25
25
|
onUploadError(attachment: AttachmentRecord, error: unknown): Promise<boolean>;
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* Handles a delete error for a specific attachment.
|
|
29
|
-
* @param attachment The attachment that failed to delete
|
|
30
|
-
* @param error The error encountered during the delete
|
|
29
|
+
* @param attachment - The attachment that failed to delete
|
|
30
|
+
* @param error - The error encountered during the delete
|
|
31
31
|
* @returns `true` to retry the operation, `false` to archive the attachment
|
|
32
32
|
*/
|
|
33
33
|
onDeleteError(attachment: AttachmentRecord, error: unknown): Promise<boolean>;
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { AbstractPowerSyncDatabase } from '../client/AbstractPowerSyncDatabase.js';
|
|
2
2
|
import { DEFAULT_WATCH_THROTTLE_MS } from '../client/watched/WatchedQuery.js';
|
|
3
3
|
import { DifferentialWatchedQuery } from '../client/watched/processors/DifferentialQueryProcessor.js';
|
|
4
|
-
import { ILogger } from '../utils/Logger.js';
|
|
5
4
|
import { Transaction } from '../db/DBAdapter.js';
|
|
5
|
+
import { ILogger } from '../utils/Logger.js';
|
|
6
|
+
import { AttachmentContext } from './AttachmentContext.js';
|
|
7
|
+
import { AttachmentErrorHandler } from './AttachmentErrorHandler.js';
|
|
8
|
+
import { AttachmentService } from './AttachmentService.js';
|
|
6
9
|
import { AttachmentData, LocalStorageAdapter } from './LocalStorageAdapter.js';
|
|
7
10
|
import { RemoteStorageAdapter } from './RemoteStorageAdapter.js';
|
|
8
11
|
import { ATTACHMENT_TABLE, AttachmentRecord, AttachmentState } from './Schema.js';
|
|
9
12
|
import { SyncingService } from './SyncingService.js';
|
|
10
13
|
import { WatchedAttachmentItem } from './WatchedAttachmentItem.js';
|
|
11
|
-
import { AttachmentService } from './AttachmentService.js';
|
|
12
|
-
import { AttachmentErrorHandler } from './AttachmentErrorHandler.js';
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* AttachmentQueue manages the lifecycle and synchronization of attachments
|
|
@@ -20,7 +21,7 @@ import { AttachmentErrorHandler } from './AttachmentErrorHandler.js';
|
|
|
20
21
|
* @experimental
|
|
21
22
|
* @alpha This is currently experimental and may change without a major version bump.
|
|
22
23
|
*/
|
|
23
|
-
export class AttachmentQueue {
|
|
24
|
+
export class AttachmentQueue implements AttachmentQueue {
|
|
24
25
|
/** Timer for periodic synchronization operations */
|
|
25
26
|
private periodicSyncTimer?: ReturnType<typeof setInterval>;
|
|
26
27
|
|
|
@@ -78,24 +79,14 @@ export class AttachmentQueue {
|
|
|
78
79
|
/** Cleanup function for status change listener */
|
|
79
80
|
private statusListenerDispose?: () => void;
|
|
80
81
|
|
|
81
|
-
private watchActiveAttachments
|
|
82
|
+
private watchActiveAttachments!: DifferentialWatchedQuery<AttachmentRecord>;
|
|
82
83
|
|
|
83
|
-
private watchAttachmentsAbortController
|
|
84
|
+
private watchAttachmentsAbortController!: AbortController;
|
|
84
85
|
|
|
85
86
|
/**
|
|
86
87
|
* Creates a new AttachmentQueue instance.
|
|
87
88
|
*
|
|
88
89
|
* @param options - Configuration options
|
|
89
|
-
* @param options.db - PowerSync database instance
|
|
90
|
-
* @param options.remoteStorage - Remote storage adapter for upload/download operations
|
|
91
|
-
* @param options.localStorage - Local storage adapter for file persistence
|
|
92
|
-
* @param options.watchAttachments - Callback for monitoring attachment changes in your data model
|
|
93
|
-
* @param options.tableName - Name of the table to store attachment records. Default: 'ps_attachment_queue'
|
|
94
|
-
* @param options.logger - Logger instance. Defaults to db.logger
|
|
95
|
-
* @param options.syncIntervalMs - Periodic polling interval in milliseconds for retrying failed uploads/downloads. Default: 30000
|
|
96
|
-
* @param options.syncThrottleDuration - Throttle duration in milliseconds for the reactive watch query that detects attachment changes. Prevents rapid-fire syncs during bulk changes. Default: 30
|
|
97
|
-
* @param options.downloadAttachments - Whether to automatically download remote attachments. Default: true
|
|
98
|
-
* @param options.archivedCacheLimit - Maximum archived attachments before cleanup. Default: 100
|
|
99
90
|
*/
|
|
100
91
|
constructor({
|
|
101
92
|
db,
|
|
@@ -110,15 +101,45 @@ export class AttachmentQueue {
|
|
|
110
101
|
archivedCacheLimit = 100,
|
|
111
102
|
errorHandler
|
|
112
103
|
}: {
|
|
104
|
+
/**
|
|
105
|
+
* PowerSync database instance
|
|
106
|
+
*/
|
|
113
107
|
db: AbstractPowerSyncDatabase;
|
|
108
|
+
/**
|
|
109
|
+
* Remote storage adapter for upload/download operations
|
|
110
|
+
*/
|
|
114
111
|
remoteStorage: RemoteStorageAdapter;
|
|
112
|
+
/**
|
|
113
|
+
* Local storage adapter for file persistence
|
|
114
|
+
*/
|
|
115
115
|
localStorage: LocalStorageAdapter;
|
|
116
|
+
/**
|
|
117
|
+
* Callback for monitoring attachment changes in your data model
|
|
118
|
+
*/
|
|
116
119
|
watchAttachments: (onUpdate: (attachment: WatchedAttachmentItem[]) => Promise<void>, signal: AbortSignal) => void;
|
|
120
|
+
/**
|
|
121
|
+
* Name of the table to store attachment records. Default: 'ps_attachment_queue'
|
|
122
|
+
*/
|
|
117
123
|
tableName?: string;
|
|
124
|
+
/**
|
|
125
|
+
* Logger instance. Defaults to db.logger
|
|
126
|
+
*/
|
|
118
127
|
logger?: ILogger;
|
|
128
|
+
/**
|
|
129
|
+
* Periodic polling interval in milliseconds for retrying failed uploads/downloads. Default: 30000
|
|
130
|
+
*/
|
|
119
131
|
syncIntervalMs?: number;
|
|
132
|
+
/**
|
|
133
|
+
* Throttle duration in milliseconds for the reactive watch query that detects attachment changes. Prevents rapid-fire syncs during bulk changes. Default: 30
|
|
134
|
+
*/
|
|
120
135
|
syncThrottleDuration?: number;
|
|
136
|
+
/**
|
|
137
|
+
* Whether to automatically download remote attachments. Default: true
|
|
138
|
+
*/
|
|
121
139
|
downloadAttachments?: boolean;
|
|
140
|
+
/**
|
|
141
|
+
* Maximum archived attachments before cleanup. Default: 100
|
|
142
|
+
*/
|
|
122
143
|
archivedCacheLimit?: number;
|
|
123
144
|
errorHandler?: AttachmentErrorHandler;
|
|
124
145
|
}) {
|
|
@@ -228,6 +249,7 @@ export class AttachmentQueue {
|
|
|
228
249
|
state: AttachmentState.QUEUED_DOWNLOAD,
|
|
229
250
|
hasSynced: false,
|
|
230
251
|
metaData: watchedAttachment.metaData,
|
|
252
|
+
mediaType: watchedAttachment.mediaType,
|
|
231
253
|
timestamp: new Date().getTime()
|
|
232
254
|
});
|
|
233
255
|
continue;
|
|
@@ -321,17 +343,24 @@ export class AttachmentQueue {
|
|
|
321
343
|
}
|
|
322
344
|
}
|
|
323
345
|
|
|
346
|
+
/**
|
|
347
|
+
* Provides an {@link AttachmentContext} to a callback.
|
|
348
|
+
*
|
|
349
|
+
* The callback runs while the attachment queue mutex is held. Do not call
|
|
350
|
+
* other {@link AttachmentQueue} methods from within the callback, as they may
|
|
351
|
+
* attempt to acquire the same mutex and block indefinitely.
|
|
352
|
+
*/
|
|
353
|
+
withAttachmentContext<T>(callback: (context: AttachmentContext) => Promise<T>): Promise<T> {
|
|
354
|
+
/**
|
|
355
|
+
* AttachmentService is internal and private in this class.
|
|
356
|
+
* We only need to expose its locking and context functionality for extending classes.
|
|
357
|
+
*/
|
|
358
|
+
return this.attachmentService.withContext(callback);
|
|
359
|
+
}
|
|
324
360
|
/**
|
|
325
361
|
* Saves a file to local storage and queues it for upload to remote storage.
|
|
326
362
|
*
|
|
327
363
|
* @param options - File save options
|
|
328
|
-
* @param options.data - The file data as ArrayBuffer, Blob, or base64 string
|
|
329
|
-
* @param options.fileExtension - File extension (e.g., 'jpg', 'pdf')
|
|
330
|
-
* @param options.mediaType - MIME type of the file (e.g., 'image/jpeg')
|
|
331
|
-
* @param options.metaData - Optional metadata to associate with the attachment
|
|
332
|
-
* @param options.id - Optional custom ID. If not provided, a UUID will be generated
|
|
333
|
-
* @param options.updateHook - Optional callback to execute additional database operations
|
|
334
|
-
* within the same transaction as the attachment creation
|
|
335
364
|
* @returns Promise resolving to the created attachment record
|
|
336
365
|
*/
|
|
337
366
|
async saveFile({
|
|
@@ -342,11 +371,30 @@ export class AttachmentQueue {
|
|
|
342
371
|
id,
|
|
343
372
|
updateHook
|
|
344
373
|
}: {
|
|
374
|
+
/**
|
|
375
|
+
* The file data as ArrayBuffer, Blob, or base64 string
|
|
376
|
+
*/
|
|
345
377
|
data: AttachmentData;
|
|
378
|
+
/**
|
|
379
|
+
* File extension (e.g., 'jpg', 'pdf')
|
|
380
|
+
*/
|
|
346
381
|
fileExtension: string;
|
|
382
|
+
/**
|
|
383
|
+
* MIME type of the file (e.g., 'image/jpeg')
|
|
384
|
+
*/
|
|
347
385
|
mediaType?: string;
|
|
386
|
+
/**
|
|
387
|
+
* Optional metadata to associate with the attachment
|
|
388
|
+
*/
|
|
348
389
|
metaData?: string;
|
|
390
|
+
/**
|
|
391
|
+
* Optional custom ID. If not provided, a UUID will be generated
|
|
392
|
+
*/
|
|
349
393
|
id?: string;
|
|
394
|
+
/**
|
|
395
|
+
* Optional callback to execute additional database operations within the same transaction as the attachment
|
|
396
|
+
* creation.
|
|
397
|
+
*/
|
|
350
398
|
updateHook?: (transaction: Transaction, attachment: AttachmentRecord) => Promise<void>;
|
|
351
399
|
}): Promise<AttachmentRecord> {
|
|
352
400
|
const resolvedId = id ?? (await this.generateAttachmentId());
|