@powersync/service-core 0.0.0-dev-20250827091123 → 0.0.0-dev-20250828090417
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/CHANGELOG.md +18 -12
- package/dist/api/api-metrics.js +5 -0
- package/dist/api/api-metrics.js.map +1 -1
- package/dist/metrics/open-telemetry/util.d.ts +0 -3
- package/dist/metrics/open-telemetry/util.js +18 -13
- package/dist/metrics/open-telemetry/util.js.map +1 -1
- package/dist/routes/compression.d.ts +19 -0
- package/dist/routes/compression.js +70 -0
- package/dist/routes/compression.js.map +1 -0
- package/dist/routes/configure-fastify.js.map +1 -1
- package/dist/routes/endpoints/socket-route.js +23 -18
- package/dist/routes/endpoints/socket-route.js.map +1 -1
- package/dist/routes/endpoints/sync-stream.js +14 -24
- package/dist/routes/endpoints/sync-stream.js.map +1 -1
- package/dist/routes/router.d.ts +3 -3
- package/dist/storage/BucketStorage.d.ts +1 -1
- package/dist/storage/BucketStorage.js.map +1 -1
- package/dist/storage/BucketStorageFactory.d.ts +0 -2
- package/dist/storage/ChecksumCache.d.ts +4 -19
- package/dist/storage/ChecksumCache.js +4 -0
- package/dist/storage/ChecksumCache.js.map +1 -1
- package/dist/storage/StorageEngine.d.ts +2 -2
- package/dist/storage/StorageEngine.js.map +1 -1
- package/dist/storage/StorageProvider.d.ts +1 -3
- package/dist/storage/SyncRulesBucketStorage.d.ts +9 -0
- package/dist/storage/SyncRulesBucketStorage.js.map +1 -1
- package/dist/storage/storage-index.d.ts +0 -1
- package/dist/storage/storage-index.js +0 -1
- package/dist/storage/storage-index.js.map +1 -1
- package/dist/sync/BucketChecksumState.d.ts +7 -3
- package/dist/sync/BucketChecksumState.js +5 -4
- package/dist/sync/BucketChecksumState.js.map +1 -1
- package/dist/sync/RequestTracker.d.ts +7 -1
- package/dist/sync/RequestTracker.js +22 -2
- package/dist/sync/RequestTracker.js.map +1 -1
- package/dist/sync/sync.d.ts +2 -2
- package/dist/sync/sync.js.map +1 -1
- package/dist/sync/util.js +1 -1
- package/dist/sync/util.js.map +1 -1
- package/dist/system/ServiceContext.d.ts +0 -3
- package/dist/system/ServiceContext.js +1 -10
- package/dist/system/ServiceContext.js.map +1 -1
- package/dist/util/utils.d.ts +17 -2
- package/dist/util/utils.js +33 -9
- package/dist/util/utils.js.map +1 -1
- package/package.json +13 -13
- package/src/api/api-metrics.ts +6 -0
- package/src/metrics/open-telemetry/util.ts +22 -21
- package/src/routes/compression.ts +75 -0
- package/src/routes/configure-fastify.ts +1 -0
- package/src/routes/endpoints/socket-route.ts +24 -19
- package/src/routes/endpoints/sync-stream.ts +15 -24
- package/src/routes/router.ts +3 -3
- package/src/storage/BucketStorage.ts +2 -2
- package/src/storage/BucketStorageFactory.ts +0 -2
- package/src/storage/ChecksumCache.ts +8 -22
- package/src/storage/StorageEngine.ts +3 -3
- package/src/storage/StorageProvider.ts +1 -3
- package/src/storage/SyncRulesBucketStorage.ts +12 -0
- package/src/storage/storage-index.ts +0 -1
- package/src/sync/BucketChecksumState.ts +12 -6
- package/src/sync/RequestTracker.ts +27 -2
- package/src/sync/sync.ts +3 -3
- package/src/sync/util.ts +1 -1
- package/src/system/ServiceContext.ts +1 -13
- package/src/util/utils.ts +55 -11
- package/test/src/checksum_cache.test.ts +6 -8
- package/test/src/routes/mocks.ts +59 -0
- package/test/src/routes/stream.test.ts +84 -0
- package/test/src/sync/BucketChecksumState.test.ts +48 -26
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/events/EventsEngine.d.ts +0 -14
- package/dist/events/EventsEngine.js +0 -33
- package/dist/events/EventsEngine.js.map +0 -1
- package/dist/storage/ReportStorage.d.ts +0 -36
- package/dist/storage/ReportStorage.js +0 -2
- package/dist/storage/ReportStorage.js.map +0 -1
- package/src/events/EventsEngine.ts +0 -38
- package/src/storage/ReportStorage.ts +0 -39
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { event_types } from '@powersync/service-types';
|
|
2
|
-
export declare class EventsEngine {
|
|
3
|
-
private emitter;
|
|
4
|
-
private events;
|
|
5
|
-
constructor();
|
|
6
|
-
/**
|
|
7
|
-
* All new events added need to be subscribed to be used.
|
|
8
|
-
* @example engine.subscribe(new MyNewEvent(storageEngine));
|
|
9
|
-
*/
|
|
10
|
-
subscribe<K extends event_types.EventsEngineEventType>(event: event_types.EmitterEvent<K>): void;
|
|
11
|
-
get listEvents(): event_types.EventsEngineEventType[];
|
|
12
|
-
emit<K extends keyof event_types.SubscribeEvents>(event: K, data: event_types.SubscribeEvents[K]): void;
|
|
13
|
-
shutDown(): void;
|
|
14
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import EventEmitter from 'node:events';
|
|
2
|
-
import { logger } from '@powersync/lib-services-framework';
|
|
3
|
-
export class EventsEngine {
|
|
4
|
-
emitter;
|
|
5
|
-
events = new Set();
|
|
6
|
-
constructor() {
|
|
7
|
-
this.emitter = new EventEmitter({ captureRejections: true });
|
|
8
|
-
this.emitter.on('error', (error) => {
|
|
9
|
-
logger.error(error.message);
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* All new events added need to be subscribed to be used.
|
|
14
|
-
* @example engine.subscribe(new MyNewEvent(storageEngine));
|
|
15
|
-
*/
|
|
16
|
-
subscribe(event) {
|
|
17
|
-
if (!this.events.has(event.event)) {
|
|
18
|
-
this.events.add(event.event);
|
|
19
|
-
}
|
|
20
|
-
this.emitter.on(event.event, event.handler.bind(event));
|
|
21
|
-
}
|
|
22
|
-
get listEvents() {
|
|
23
|
-
return Array.from(this.events.values());
|
|
24
|
-
}
|
|
25
|
-
emit(event, data) {
|
|
26
|
-
this.emitter.emit(event, data);
|
|
27
|
-
}
|
|
28
|
-
shutDown() {
|
|
29
|
-
logger.info(`Shutting down EmitterEngine and removing all listeners for ${this.listEvents.join(', ')}.`);
|
|
30
|
-
this.emitter.removeAllListeners();
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=EventsEngine.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventsEngine.js","sourceRoot":"","sources":["../../src/events/EventsEngine.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAG3D,MAAM,OAAO,YAAY;IACf,OAAO,CAAe;IACtB,MAAM,GAA2C,IAAI,GAAG,EAAE,CAAC;IACnE;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YACxC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,SAAS,CAA8C,KAAkC;QACvF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,CAA8C,KAAQ,EAAE,IAAoC;QAC9F,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,QAAQ;QACN,MAAM,CAAC,IAAI,CAAC,8DAA8D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { event_types } from '@powersync/service-types';
|
|
2
|
-
/**
|
|
3
|
-
* Represents a configured report storage.
|
|
4
|
-
*
|
|
5
|
-
* Report storage is used for storing localized data for the instance.
|
|
6
|
-
* Data can then be used for reporting purposes.
|
|
7
|
-
*
|
|
8
|
-
*/
|
|
9
|
-
export interface ReportStorage extends AsyncDisposable {
|
|
10
|
-
/**
|
|
11
|
-
* Report a client connection.
|
|
12
|
-
*/
|
|
13
|
-
reportClientConnection(data: event_types.ClientConnectionBucketData): Promise<void>;
|
|
14
|
-
/**
|
|
15
|
-
* Report a client disconnection.
|
|
16
|
-
*/
|
|
17
|
-
reportClientDisconnection(data: event_types.ClientDisconnectionEventData): Promise<void>;
|
|
18
|
-
/**
|
|
19
|
-
* Get currently connected clients.
|
|
20
|
-
* This will return any short or long term connected clients.
|
|
21
|
-
* Clients that have no disconnected_at timestamp and that have a valid jwt_exp timestamp are considered connected.
|
|
22
|
-
*/
|
|
23
|
-
getConnectedClients(): Promise<event_types.ClientConnectionReportResponse>;
|
|
24
|
-
/**
|
|
25
|
-
* Get a report of client connections over a day, week or month.
|
|
26
|
-
* This is internally used to generate reports over it always returns the previous day, week or month.
|
|
27
|
-
* Usually this is call on the start of the new day, week or month. It will return all unique completed connections
|
|
28
|
-
* as well as uniques currently connected clients.
|
|
29
|
-
*/
|
|
30
|
-
getClientConnectionReports(data: event_types.ClientConnectionReportRequest): Promise<event_types.ClientConnectionReportResponse>;
|
|
31
|
-
/**
|
|
32
|
-
* Delete old connection data based on a specific date.
|
|
33
|
-
* This is used to clean up old connection data that is no longer needed.
|
|
34
|
-
*/
|
|
35
|
-
deleteOldConnectionData(data: event_types.DeleteOldConnectionData): Promise<void>;
|
|
36
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReportStorage.js","sourceRoot":"","sources":["../../src/storage/ReportStorage.ts"],"names":[],"mappings":""}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import EventEmitter from 'node:events';
|
|
2
|
-
import { logger } from '@powersync/lib-services-framework';
|
|
3
|
-
import { event_types } from '@powersync/service-types';
|
|
4
|
-
|
|
5
|
-
export class EventsEngine {
|
|
6
|
-
private emitter: EventEmitter;
|
|
7
|
-
private events: Set<event_types.EventsEngineEventType> = new Set();
|
|
8
|
-
constructor() {
|
|
9
|
-
this.emitter = new EventEmitter({ captureRejections: true });
|
|
10
|
-
this.emitter.on('error', (error: Error) => {
|
|
11
|
-
logger.error(error.message);
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* All new events added need to be subscribed to be used.
|
|
17
|
-
* @example engine.subscribe(new MyNewEvent(storageEngine));
|
|
18
|
-
*/
|
|
19
|
-
subscribe<K extends event_types.EventsEngineEventType>(event: event_types.EmitterEvent<K>): void {
|
|
20
|
-
if (!this.events.has(event.event)) {
|
|
21
|
-
this.events.add(event.event);
|
|
22
|
-
}
|
|
23
|
-
this.emitter.on(event.event, event.handler.bind(event));
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
get listEvents(): event_types.EventsEngineEventType[] {
|
|
27
|
-
return Array.from(this.events.values());
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
emit<K extends keyof event_types.SubscribeEvents>(event: K, data: event_types.SubscribeEvents[K]): void {
|
|
31
|
-
this.emitter.emit(event, data);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
shutDown(): void {
|
|
35
|
-
logger.info(`Shutting down EmitterEngine and removing all listeners for ${this.listEvents.join(', ')}.`);
|
|
36
|
-
this.emitter.removeAllListeners();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { event_types } from '@powersync/service-types';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Represents a configured report storage.
|
|
5
|
-
*
|
|
6
|
-
* Report storage is used for storing localized data for the instance.
|
|
7
|
-
* Data can then be used for reporting purposes.
|
|
8
|
-
*
|
|
9
|
-
*/
|
|
10
|
-
export interface ReportStorage extends AsyncDisposable {
|
|
11
|
-
/**
|
|
12
|
-
* Report a client connection.
|
|
13
|
-
*/
|
|
14
|
-
reportClientConnection(data: event_types.ClientConnectionBucketData): Promise<void>;
|
|
15
|
-
/**
|
|
16
|
-
* Report a client disconnection.
|
|
17
|
-
*/
|
|
18
|
-
reportClientDisconnection(data: event_types.ClientDisconnectionEventData): Promise<void>;
|
|
19
|
-
/**
|
|
20
|
-
* Get currently connected clients.
|
|
21
|
-
* This will return any short or long term connected clients.
|
|
22
|
-
* Clients that have no disconnected_at timestamp and that have a valid jwt_exp timestamp are considered connected.
|
|
23
|
-
*/
|
|
24
|
-
getConnectedClients(): Promise<event_types.ClientConnectionReportResponse>;
|
|
25
|
-
/**
|
|
26
|
-
* Get a report of client connections over a day, week or month.
|
|
27
|
-
* This is internally used to generate reports over it always returns the previous day, week or month.
|
|
28
|
-
* Usually this is call on the start of the new day, week or month. It will return all unique completed connections
|
|
29
|
-
* as well as uniques currently connected clients.
|
|
30
|
-
*/
|
|
31
|
-
getClientConnectionReports(
|
|
32
|
-
data: event_types.ClientConnectionReportRequest
|
|
33
|
-
): Promise<event_types.ClientConnectionReportResponse>;
|
|
34
|
-
/**
|
|
35
|
-
* Delete old connection data based on a specific date.
|
|
36
|
-
* This is used to clean up old connection data that is no longer needed.
|
|
37
|
-
*/
|
|
38
|
-
deleteOldConnectionData(data: event_types.DeleteOldConnectionData): Promise<void>;
|
|
39
|
-
}
|