@powersync/service-core 0.0.0-dev-20250714115156 → 0.0.0-dev-20250714132759

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.
Files changed (37) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/dist/emitters/EmitterEngine.d.ts +12 -11
  3. package/dist/emitters/EmitterEngine.js +34 -22
  4. package/dist/emitters/EmitterEngine.js.map +1 -1
  5. package/dist/emitters/emitter-interfaces.d.ts +7 -35
  6. package/dist/emitters/emitter-interfaces.js +16 -9
  7. package/dist/emitters/emitter-interfaces.js.map +1 -1
  8. package/dist/routes/endpoints/sync-stream.js +4 -8
  9. package/dist/routes/endpoints/sync-stream.js.map +1 -1
  10. package/dist/system/ServiceContext.js +1 -2
  11. package/dist/system/ServiceContext.js.map +1 -1
  12. package/package.json +2 -2
  13. package/src/emitters/EmitterEngine.ts +37 -25
  14. package/src/emitters/emitter-interfaces.ts +22 -43
  15. package/src/routes/endpoints/sync-stream.ts +4 -9
  16. package/src/system/ServiceContext.ts +1 -2
  17. package/tsconfig.tsbuildinfo +1 -1
  18. package/dist/emitters/AbstractEmitterEngine.d.ts +0 -13
  19. package/dist/emitters/AbstractEmitterEngine.js +0 -57
  20. package/dist/emitters/AbstractEmitterEngine.js.map +0 -1
  21. package/dist/emitters/event-error.d.ts +0 -5
  22. package/dist/emitters/event-error.js +0 -8
  23. package/dist/emitters/event-error.js.map +0 -1
  24. package/dist/emitters/events/connect-event.d.ts +0 -10
  25. package/dist/emitters/events/connect-event.js +0 -32
  26. package/dist/emitters/events/connect-event.js.map +0 -1
  27. package/dist/emitters/events/disconnect-event.d.ts +0 -10
  28. package/dist/emitters/events/disconnect-event.js +0 -27
  29. package/dist/emitters/events/disconnect-event.js.map +0 -1
  30. package/dist/emitters/events/index.d.ts +0 -1
  31. package/dist/emitters/events/index.js +0 -4
  32. package/dist/emitters/events/index.js.map +0 -1
  33. package/src/emitters/AbstractEmitterEngine.ts +0 -64
  34. package/src/emitters/event-error.ts +0 -10
  35. package/src/emitters/events/connect-event.ts +0 -34
  36. package/src/emitters/events/disconnect-event.ts +0 -36
  37. package/src/emitters/events/index.ts +0 -4
package/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @powersync/service-core
2
2
 
3
- ## 0.0.0-dev-20250714115156
3
+ ## 0.0.0-dev-20250714132759
4
4
 
5
5
  ### Minor Changes
6
6
 
@@ -11,7 +11,7 @@
11
11
  - ba1ceef: Remove unused dev config.
12
12
  - f1431b6: Improve diagnostics in logs for JWKS timeouts.
13
13
  - Updated dependencies [ba1ceef]
14
- - @powersync/service-types@0.0.0-dev-20250714115156
14
+ - @powersync/service-types@0.0.0-dev-20250714132759
15
15
 
16
16
  ## 1.13.3
17
17
 
@@ -1,12 +1,13 @@
1
- import { BaseEmitterEngine, EmitterEvent, EmitterEventData, EventNames } from './emitter-interfaces.js';
2
- import * as storage from '../storage/storage-index.js';
3
- import { AbstractEmitterEngine } from './AbstractEmitterEngine.js';
4
- export declare class EmitterEngine extends AbstractEmitterEngine implements BaseEmitterEngine {
5
- private active;
6
- constructor(events: EmitterEvent[], storageRef: storage.StorageEngine);
7
- event(eventName: EventNames): EmitterEvent;
8
- removeListeners(eventName?: EventNames): void;
9
- eventNames(): EventNames[];
10
- emitEvent(eventName: EventNames, data: EmitterEventData): void;
11
- shutDown(): Promise<void>;
1
+ import { BaseEmitterEngine } from './emitter-interfaces.js';
2
+ import { event_types } from '@powersync/service-types';
3
+ export declare class EmitterEngine implements BaseEmitterEngine {
4
+ private emitter;
5
+ eventsMap: Map<event_types.EmitterEngineEventNames, event_types.EmitterEvent>;
6
+ constructor();
7
+ eventNames(): event_types.EmitterEngineEventNames[];
8
+ getStoredEvent(eventName: event_types.EmitterEngineEventNames): event_types.EmitterEvent;
9
+ get listEvents(): event_types.EmitterEngineEventNames[];
10
+ bindEvent(event: event_types.EmitterEvent): void;
11
+ emitEvent(eventName: event_types.EmitterEngineEventNames, data: any): void;
12
+ shutDown(): void;
12
13
  }
@@ -1,35 +1,47 @@
1
- import { AbstractEmitterEngine } from './AbstractEmitterEngine.js';
1
+ import EventEmitter from 'node:events';
2
2
  import { logger } from '@powersync/lib-services-framework';
3
- export class EmitterEngine extends AbstractEmitterEngine {
4
- active;
5
- constructor(events, storageRef) {
6
- super(storageRef);
7
- this.active = process.env.MICRO_SERVICE_NAME === 'powersync';
8
- logger.info(`EmitterEngine initialized with active status: ${this.active}`);
9
- this.bindEvents(events);
3
+ export class EmitterEngine {
4
+ emitter;
5
+ eventsMap = new Map();
6
+ constructor() {
7
+ this.emitter = new EventEmitter({ captureRejections: true });
8
+ this.emitter.on('error', (error) => {
9
+ logger.error(error);
10
+ });
10
11
  }
11
- event(eventName) {
12
- const event = this.eventsMap.get(eventName);
13
- if (!event) {
12
+ eventNames() {
13
+ return this.emitter.eventNames();
14
+ }
15
+ getStoredEvent(eventName) {
16
+ if (!this.eventsMap.has(eventName)) {
14
17
  throw new Error(`Event ${eventName} is not registered.`);
15
18
  }
16
- return event;
19
+ return this.eventsMap.get(eventName);
17
20
  }
18
- removeListeners(eventName) {
19
- if (eventName) {
20
- this.removeListeners(eventName);
21
- }
21
+ get listEvents() {
22
+ return this.emitter.eventNames();
22
23
  }
23
- eventNames() {
24
- return this.events;
24
+ bindEvent(event) {
25
+ const eventNames = this.emitter.eventNames();
26
+ if (!eventNames.includes(event.name)) {
27
+ this.eventsMap.set(event.name, event);
28
+ this.emitter.on(event.name, event.handler.bind(event));
29
+ }
30
+ else {
31
+ logger.warn(`Event ${event.name} is already registered. Skipping.`);
32
+ }
25
33
  }
26
34
  emitEvent(eventName, data) {
27
- if (this.active) {
28
- return this.emit(eventName, data);
35
+ if (!this.emitter.eventNames().includes(eventName)) {
36
+ logger.error(`Event ${eventName} is not registered.`);
37
+ }
38
+ else {
39
+ this.emitter.emit(eventName, { ...data, type: eventName });
29
40
  }
30
41
  }
31
- async shutDown() {
32
- this.stop();
42
+ shutDown() {
43
+ this.emitter.removeAllListeners();
44
+ logger.info('Emitter engine shut down and all listeners removed.');
33
45
  }
34
46
  }
35
47
  //# sourceMappingURL=EmitterEngine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmitterEngine.js","sourceRoot":"","sources":["../../src/emitters/EmitterEngine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAE3D,MAAM,OAAO,aAAc,SAAQ,qBAAqB;IAC9C,MAAM,CAAU;IACxB,YAAY,MAAsB,EAAE,UAAiC;QACnE,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,WAAW,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,iDAAiD,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,SAAqB;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,SAAS,SAAS,qBAAqB,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,eAAe,CAAC,SAAsB;QACpC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,SAAqB,EAAE,IAAsB;QACrD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"EmitterEngine.js","sourceRoot":"","sources":["../../src/emitters/EmitterEngine.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAG3D,MAAM,OAAO,aAAa;IAChB,OAAO,CAAe;IAC9B,SAAS,GAAuE,IAAI,GAAG,EAAE,CAAC;IAC1F;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,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAA2C,CAAC;IAC5E,CAAC;IAED,cAAc,CAAC,SAA8C;QAC3D,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,SAAS,SAAS,qBAAqB,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAA6B,CAAC;IACnE,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAA2C,CAAC;IAC5E,CAAC;IAED,SAAS,CAAC,KAA+B;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,mCAAmC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,SAAS,CAAC,SAA8C,EAAE,IAAS;QACjE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,SAAS,SAAS,qBAAqB,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;CACF"}
@@ -1,37 +1,9 @@
1
- import { JwtPayload } from '../auth/JwtPayload.js';
2
- import * as storage from '../storage/storage-index.js';
3
- import { EventError } from './event-error.js';
4
- export declare enum EventNames {
5
- SDK_CONNECT_EVENT = "sdk-connect-event",
6
- SDK_DISCONNECT_EVENT = "sdk-disconnect-event"
7
- }
8
- export type SdkEvent = {
9
- client_id?: string;
10
- user_id: string;
11
- user_agent: string;
12
- jwt_token?: JwtPayload;
13
- };
14
- export type EventConnectData = {
15
- type: EventNames.SDK_CONNECT_EVENT;
16
- connect_at: number;
17
- } & SdkEvent;
18
- export type EventDisconnectData = {
19
- type: EventNames.SDK_DISCONNECT_EVENT;
20
- disconnect_at: number;
21
- } & SdkEvent;
22
- export type EmitterEventData = EventConnectData | EventDisconnectData;
23
- export type EventHandler = (data: EmitterEventData) => Promise<void>;
24
- export type StorageHandler = (storageEngine: storage.StorageEngine) => EventHandler;
25
- export interface EmitterEvent {
26
- name: EventNames;
27
- handler: StorageHandler;
28
- errorhandler?: (error: Error | EventError) => void;
29
- }
1
+ import { event_types } from '@powersync/service-types';
30
2
  export interface BaseEmitterEngine {
31
- eventNames(): EventNames[];
32
- emitEvent(eventName: EventNames, data: EmitterEventData): void;
33
- removeListeners(eventName?: EventNames): void;
34
- event(eventName: EventNames): EmitterEvent;
35
- shutDown(): Promise<void>;
3
+ listEvents: event_types.EmitterEngineEventNames[];
4
+ bindEvent(events: event_types.EmitterEvent): void;
5
+ eventNames(): event_types.EmitterEngineEventNames[];
6
+ emitEvent(eventName: event_types.EmitterEngineEventNames, data: any): void;
7
+ getStoredEvent(eventName: event_types.EmitterEngineEventNames): event_types.EmitterEvent;
8
+ shutDown(): void;
36
9
  }
37
- export declare function isEventError(error: Error | EventError): error is EventError;
@@ -1,10 +1,17 @@
1
- export var EventNames;
2
- (function (EventNames) {
3
- // SdK events
4
- EventNames["SDK_CONNECT_EVENT"] = "sdk-connect-event";
5
- EventNames["SDK_DISCONNECT_EVENT"] = "sdk-disconnect-event";
6
- })(EventNames || (EventNames = {}));
7
- export function isEventError(error) {
8
- return error.eventName !== undefined;
9
- }
1
+ // export type SdkEvent = {
2
+ // client_id?: string;
3
+ // user_id: string;
4
+ // user_agent: string;
5
+ // jwt_token?: JwtPayload;
6
+ // };
7
+ //
8
+ // export type EventConnectData = {
9
+ // type: EmitterEngineEventNames.SDK_CONNECT_EVENT;
10
+ // connect_at: number;
11
+ // } & SdkEvent;
12
+ // export type EventDisconnectData = {
13
+ // type: EmitterEngineEventNames.SDK_DISCONNECT_EVENT;
14
+ // disconnect_at: number;
15
+ // } & SdkEvent;
16
+ export {};
10
17
  //# sourceMappingURL=emitter-interfaces.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"emitter-interfaces.js","sourceRoot":"","sources":["../../src/emitters/emitter-interfaces.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,aAAa;IACb,qDAAuC,CAAA;IACvC,2DAA6C,CAAA;AAC/C,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAoCD,MAAM,UAAU,YAAY,CAAC,KAAyB;IACpD,OAAQ,KAAoB,CAAC,SAAS,KAAK,SAAS,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"emitter-interfaces.js","sourceRoot":"","sources":["../../src/emitters/emitter-interfaces.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,wBAAwB;AACxB,qBAAqB;AACrB,wBAAwB;AACxB,4BAA4B;AAC5B,KAAK;AACL,EAAE;AACF,mCAAmC;AACnC,qDAAqD;AACrD,wBAAwB;AACxB,gBAAgB;AAChB,sCAAsC;AACtC,wDAAwD;AACxD,2BAA2B;AAC3B,gBAAgB"}
@@ -5,8 +5,7 @@ import * as sync from '../../sync/sync-index.js';
5
5
  import * as util from '../../util/util-index.js';
6
6
  import { authUser } from '../auth.js';
7
7
  import { routeDefinition } from '../router.js';
8
- import { APIMetric } from '@powersync/service-types';
9
- import { EventNames } from '../../emitters/emitter-interfaces.js';
8
+ import { APIMetric, event_types } from '@powersync/service-types';
10
9
  export var SyncRoutes;
11
10
  (function (SyncRoutes) {
12
11
  SyncRoutes["STREAM"] = "/sync/stream";
@@ -57,8 +56,7 @@ export const syncStreamed = routeDefinition({
57
56
  const tracker = new sync.RequestTracker(metricsEngine);
58
57
  try {
59
58
  metricsEngine.getUpDownCounter(APIMetric.CONCURRENT_CONNECTIONS).add(1);
60
- service_context.emitterEngine.emitEvent(EventNames.SDK_CONNECT_EVENT, {
61
- type: EventNames.SDK_CONNECT_EVENT,
59
+ service_context.emitterEngine.emitEvent(event_types.EmitterEngineEventNames.SDK_CONNECT_EVENT, {
62
60
  ...sdkData,
63
61
  connect_at: streamStart
64
62
  });
@@ -110,8 +108,7 @@ export const syncStreamed = routeDefinition({
110
108
  }
111
109
  controller.abort();
112
110
  metricsEngine.getUpDownCounter(APIMetric.CONCURRENT_CONNECTIONS).add(-1);
113
- service_context.emitterEngine.emitEvent(EventNames.SDK_DISCONNECT_EVENT, {
114
- type: EventNames.SDK_DISCONNECT_EVENT,
111
+ service_context.emitterEngine.emitEvent(event_types.EmitterEngineEventNames.SDK_DISCONNECT_EVENT, {
115
112
  ...sdkData,
116
113
  disconnect_at: Date.now()
117
114
  });
@@ -126,8 +123,7 @@ export const syncStreamed = routeDefinition({
126
123
  catch (ex) {
127
124
  controller.abort();
128
125
  metricsEngine.getUpDownCounter(APIMetric.CONCURRENT_CONNECTIONS).add(-1);
129
- service_context.emitterEngine.emitEvent(EventNames.SDK_DISCONNECT_EVENT, {
130
- type: EventNames.SDK_DISCONNECT_EVENT,
126
+ service_context.emitterEngine.emitEvent(event_types.EmitterEngineEventNames.SDK_DISCONNECT_EVENT, {
131
127
  ...sdkData,
132
128
  disconnect_at: Date.now()
133
129
  });
@@ -1 +1 @@
1
- {"version":3,"file":"sync-stream.js","sourceRoot":"","sources":["../../../src/routes/endpoints/sync-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AACjD,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAElE,MAAM,CAAN,IAAY,UAEX;AAFD,WAAY,UAAU;IACpB,qCAAuB,CAAA;AACzB,CAAC,EAFW,UAAU,KAAV,UAAU,QAErB;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;IAC1C,IAAI,EAAE,UAAU,CAAC,MAAM;IACvB,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI;IAC9B,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IAC9F,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACzB,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QACnE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,eAAe,CAAC;QACpF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE/B,MAAM,CAAC,WAAW,GAAG;YACnB,GAAG,MAAM,CAAC,WAAW;YACrB,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;SACjC,CAAC;QAEF,MAAM,OAAO,GAAG;YACd,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAQ;YACjC,UAAU,EAAE,SAAmB;YAC/B,SAAS,EAAE,aAAa;SACzB,CAAC;QAEF,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC;gBAC5B,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,SAAS,CAAC,WAAW;gBAC3B,WAAW,EAAE,iCAAiC;aAC/C,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAA8B,OAAO,CAAC,MAAM,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,aAAc,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAE1G,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,CAAC;QAEjF,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC;gBAC5B,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,SAAS,CAAC,WAAW;gBAC3B,WAAW,EAAE,yBAAyB;aACvC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,CAAC,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,wBAAwB,EAAE,CAAC,CAAC;QAErG,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACvD,IAAI,CAAC;YACH,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxE,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,EAAE;gBACpE,IAAI,EAAE,UAAU,CAAC,iBAAiB;gBAClC,GAAG,OAAO;gBACV,UAAU,EAAE,WAAW;aACxB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAC1B,IAAI,CAAC,uBAAuB,CAC1B,IAAI,CAAC,MAAM,CACT,IAAI,CAAC,cAAc,CAAC;gBAClB,WAAW,EAAE,WAAW;gBACxB,aAAa;gBACb,SAAS,EAAE,SAAS;gBACpB,MAAM;gBACN,UAAU;gBACV,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,aAAc;gBACrC,OAAO;gBACP,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,MAAM;aACP,CAAC,CACH,EACD,OAAO,CACR,EACD,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,GAAG,IAAI,EAAE,CAChD,CAAC;YAEF,kDAAkD;YAClD,4EAA4E;YAC5E,6CAA6C;YAC7C,IAAI,WAAW,GAAuB,SAAS,CAAC;YAEhD,MAAM,UAAU,GAAG,YAAY,CAAC,cAAc,CAAC,GAAG,EAAE;gBAClD,uDAAuD;gBACvD,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,WAAW,KAAK,kBAAkB,CAAC;gBACnC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACpB,2CAA2C;gBAC3C,WAAW,KAAK,wBAAwB,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtB,UAAU,EAAE,CAAC;YACf,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC3B,WAAW,KAAK,cAAc,CAAC;gBAC/B,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,oDAAoD;gBACpD,IAAI,KAAK,CAAC,OAAO,IAAI,sBAAsB,EAAE,CAAC;oBAC5C,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,IAAI,MAAM,CAAC,cAAc,CAAC;gBAC/B,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE;oBACP,cAAc,EAAE,sBAAsB;iBACvC;gBACD,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBAC3B,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;wBACzB,WAAW,KAAK,uBAAuB,CAAC;oBAC1C,CAAC;oBACD,UAAU,CAAC,KAAK,EAAE,CAAC;oBACnB,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzE,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,oBAAoB,EAAE;wBACvE,IAAI,EAAE,UAAU,CAAC,oBAAoB;wBACrC,GAAG,OAAO;wBACV,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE;qBAC1B,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;wBAClC,GAAG,OAAO,CAAC,UAAU,EAAE;wBACvB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW;wBACnC,YAAY,EAAE,WAAW,IAAI,SAAS;qBACvC,CAAC,CAAC;gBACL,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,oBAAoB,EAAE;gBACvE,IAAI,EAAE,UAAU,CAAC,oBAAoB;gBACrC,GAAG,OAAO;gBACV,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE;aAC1B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"sync-stream.js","sourceRoot":"","sources":["../../../src/routes/endpoints/sync-stream.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,6 @@ import * as storage from '../storage/storage-index.js';
7
7
  import { SyncContext } from '../sync/SyncContext.js';
8
8
  import * as utils from '../util/util-index.js';
9
9
  import { EmitterEngine } from '../emitters/EmitterEngine.js';
10
- import { events } from '../emitters/events/index.js';
11
10
  export var ServiceContextMode;
12
11
  (function (ServiceContextMode) {
13
12
  ServiceContextMode["API"] = "api";
@@ -45,7 +44,7 @@ export class ServiceContextContainer {
45
44
  this.lifeCycleEngine.stopWithError(error);
46
45
  }
47
46
  });
48
- this.emitterEngine = new EmitterEngine(events, this.storageEngine);
47
+ this.emitterEngine = new EmitterEngine();
49
48
  this.lifeCycleEngine.withLifecycle(this.storageEngine, {
50
49
  start: (storageEngine) => storageEngine.start(),
51
50
  stop: (storageEngine) => storageEngine.shutDown()
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceContext.js","sourceRoot":"","sources":["../../src/system/ServiceContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAqB,MAAM,mCAAmC,CAAC;AAErH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AAEvD,OAAO,KAAK,WAAW,MAAM,qCAAqC,CAAC;AACnE,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAerD,MAAM,CAAN,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC5B,iCAA6B,CAAA;IAC7B,mCAA+B,CAAA;IAC/B,yCAAqC,CAAA;IACrC,yCAAmB,CAAA;IACnB,6CAAuB,CAAA;IACvB,2CAAqB,CAAA;IACrB,yDAAmC,CAAA;AACrC,CAAC,EARW,kBAAkB,KAAlB,kBAAkB,QAQ7B;AAOD;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAClC,aAAa,CAAgC;IAC7C,eAAe,CAAmB;IAClC,aAAa,CAAwB;IACrC,aAAa,CAAgB;IAC7B,WAAW,CAAc;IACzB,YAAY,CAAsB;IAClC,WAAW,CAAqB;IAEhC,YAAY,OAA8B;QACxC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,IAAI,CAAC,eAAe,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAE9C,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;YAC7C,aAAa;SACd,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;YAClC,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC3B,8CAA8C;gBAC9C,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5C,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEnE,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE;YACrD,KAAK,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;YAC/C,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE;SAClD,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAC9C,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE;YACpD,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE;SAChD,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC;YACjC,uBAAuB,EAAE,aAAa,CAAC,cAAc,CAAC,0BAA0B;YAChF,UAAU,EAAE,aAAa,CAAC,cAAc,CAAC,0BAA0B;YACnE,wBAAwB,EAAE,aAAa,CAAC,cAAc,CAAC,2BAA2B;SACnF,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAChD,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,uBAAuB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QAE1F,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,gBAAgB,EAAE;YACnD,yDAAyD;YACzD,KAAK,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;SACrD,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE;YACrD,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE;SAClD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,aAAa;QACf,OAAO,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IAC1F,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAI,UAAgC,EAAE,cAAiB;QAC7D,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,GAAG,CAAI,UAAgC;QACrC,OAAO,SAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;CACF"}
1
+ {"version":3,"file":"ServiceContext.js","sourceRoot":"","sources":["../../src/system/ServiceContext.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
- "version": "0.0.0-dev-20250714115156",
8
+ "version": "0.0.0-dev-20250714132759",
9
9
  "main": "dist/index.js",
10
10
  "license": "FSL-1.1-Apache-2.0",
11
11
  "type": "module",
@@ -36,7 +36,7 @@
36
36
  "@powersync/service-jsonbig": "0.17.10",
37
37
  "@powersync/service-rsocket-router": "0.1.1",
38
38
  "@powersync/service-sync-rules": "0.27.0",
39
- "@powersync/service-types": "0.0.0-dev-20250714115156"
39
+ "@powersync/service-types": "0.0.0-dev-20250714132759"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/async": "^3.2.24",
@@ -1,41 +1,53 @@
1
- import { BaseEmitterEngine, EmitterEvent, EmitterEventData, EventNames } from './emitter-interfaces.js';
2
- import * as storage from '../storage/storage-index.js';
3
- import { AbstractEmitterEngine } from './AbstractEmitterEngine.js';
1
+ import { BaseEmitterEngine } from './emitter-interfaces.js';
2
+ import EventEmitter from 'node:events';
4
3
  import { logger } from '@powersync/lib-services-framework';
4
+ import { event_types } from '@powersync/service-types';
5
5
 
6
- export class EmitterEngine extends AbstractEmitterEngine implements BaseEmitterEngine {
7
- private active: boolean;
8
- constructor(events: EmitterEvent[], storageRef: storage.StorageEngine) {
9
- super(storageRef);
10
- this.active = process.env.MICRO_SERVICE_NAME === 'powersync';
11
- logger.info(`EmitterEngine initialized with active status: ${this.active}`);
12
- this.bindEvents(events);
6
+ export class EmitterEngine implements BaseEmitterEngine {
7
+ private emitter: EventEmitter;
8
+ eventsMap: Map<event_types.EmitterEngineEventNames, event_types.EmitterEvent> = new Map();
9
+ constructor() {
10
+ this.emitter = new EventEmitter({ captureRejections: true });
11
+ this.emitter.on('error', (error: Error) => {
12
+ logger.error(error);
13
+ });
13
14
  }
14
15
 
15
- event(eventName: EventNames): EmitterEvent {
16
- const event = this.eventsMap.get(eventName);
17
- if (!event) {
16
+ eventNames(): event_types.EmitterEngineEventNames[] {
17
+ return this.emitter.eventNames() as event_types.EmitterEngineEventNames[];
18
+ }
19
+
20
+ getStoredEvent(eventName: event_types.EmitterEngineEventNames): event_types.EmitterEvent {
21
+ if (!this.eventsMap.has(eventName)) {
18
22
  throw new Error(`Event ${eventName} is not registered.`);
19
23
  }
20
- return event;
24
+ return this.eventsMap.get(eventName) as event_types.EmitterEvent;
21
25
  }
22
26
 
23
- removeListeners(eventName?: EventNames): void {
24
- if (eventName) {
25
- this.removeListeners(eventName);
26
- }
27
+ get listEvents(): event_types.EmitterEngineEventNames[] {
28
+ return this.emitter.eventNames() as event_types.EmitterEngineEventNames[];
27
29
  }
28
- eventNames(): EventNames[] {
29
- return this.events;
30
+
31
+ bindEvent(event: event_types.EmitterEvent): void {
32
+ const eventNames = this.emitter.eventNames();
33
+ if (!eventNames.includes(event.name)) {
34
+ this.eventsMap.set(event.name, event);
35
+ this.emitter.on(event.name, event.handler.bind(event));
36
+ } else {
37
+ logger.warn(`Event ${event.name} is already registered. Skipping.`);
38
+ }
30
39
  }
31
40
 
32
- emitEvent(eventName: EventNames, data: EmitterEventData): void {
33
- if (this.active) {
34
- return this.emit(eventName, data);
41
+ emitEvent(eventName: event_types.EmitterEngineEventNames, data: any): void {
42
+ if (!this.emitter.eventNames().includes(eventName)) {
43
+ logger.error(`Event ${eventName} is not registered.`);
44
+ } else {
45
+ this.emitter.emit(eventName, { ...data, type: eventName });
35
46
  }
36
47
  }
37
48
 
38
- async shutDown(): Promise<void> {
39
- this.stop();
49
+ shutDown(): void {
50
+ this.emitter.removeAllListeners();
51
+ logger.info('Emitter engine shut down and all listeners removed.');
40
52
  }
41
53
  }
@@ -1,47 +1,26 @@
1
- import { JwtPayload } from '../auth/JwtPayload.js';
2
- import * as storage from '../storage/storage-index.js';
3
- import { EventError } from './event-error.js';
1
+ // export type SdkEvent = {
2
+ // client_id?: string;
3
+ // user_id: string;
4
+ // user_agent: string;
5
+ // jwt_token?: JwtPayload;
6
+ // };
7
+ //
8
+ // export type EventConnectData = {
9
+ // type: EmitterEngineEventNames.SDK_CONNECT_EVENT;
10
+ // connect_at: number;
11
+ // } & SdkEvent;
12
+ // export type EventDisconnectData = {
13
+ // type: EmitterEngineEventNames.SDK_DISCONNECT_EVENT;
14
+ // disconnect_at: number;
15
+ // } & SdkEvent;
4
16
 
5
- export enum EventNames {
6
- // SdK events
7
- SDK_CONNECT_EVENT = 'sdk-connect-event',
8
- SDK_DISCONNECT_EVENT = 'sdk-disconnect-event'
9
- }
10
-
11
- export type SdkEvent = {
12
- client_id?: string;
13
- user_id: string;
14
- user_agent: string;
15
- jwt_token?: JwtPayload;
16
- };
17
-
18
- export type EventConnectData = {
19
- type: EventNames.SDK_CONNECT_EVENT;
20
- connect_at: number;
21
- } & SdkEvent;
22
-
23
- export type EventDisconnectData = {
24
- type: EventNames.SDK_DISCONNECT_EVENT;
25
- disconnect_at: number;
26
- } & SdkEvent;
27
-
28
- export type EmitterEventData = EventConnectData | EventDisconnectData;
29
- export type EventHandler = (data: EmitterEventData) => Promise<void>;
30
- export type StorageHandler = (storageEngine: storage.StorageEngine) => EventHandler;
31
- export interface EmitterEvent {
32
- name: EventNames;
33
- handler: StorageHandler;
34
- errorhandler?: (error: Error | EventError) => void;
35
- }
17
+ import { event_types } from '@powersync/service-types';
36
18
 
37
19
  export interface BaseEmitterEngine {
38
- eventNames(): EventNames[];
39
- emitEvent(eventName: EventNames, data: EmitterEventData): void;
40
- removeListeners(eventName?: EventNames): void;
41
- event(eventName: EventNames): EmitterEvent;
42
- shutDown(): Promise<void>;
43
- }
44
-
45
- export function isEventError(error: Error | EventError): error is EventError {
46
- return (error as EventError).eventName !== undefined;
20
+ listEvents: event_types.EmitterEngineEventNames[];
21
+ bindEvent(events: event_types.EmitterEvent): void;
22
+ eventNames(): event_types.EmitterEngineEventNames[];
23
+ emitEvent(eventName: event_types.EmitterEngineEventNames, data: any): void;
24
+ getStoredEvent(eventName: event_types.EmitterEngineEventNames): event_types.EmitterEvent;
25
+ shutDown(): void;
47
26
  }
@@ -7,9 +7,7 @@ import * as util from '../../util/util-index.js';
7
7
 
8
8
  import { authUser } from '../auth.js';
9
9
  import { routeDefinition } from '../router.js';
10
-
11
- import { APIMetric } from '@powersync/service-types';
12
- import { EventNames } from '../../emitters/emitter-interfaces.js';
10
+ import { APIMetric, event_types } from '@powersync/service-types';
13
11
 
14
12
  export enum SyncRoutes {
15
13
  STREAM = '/sync/stream'
@@ -69,8 +67,7 @@ export const syncStreamed = routeDefinition({
69
67
  const tracker = new sync.RequestTracker(metricsEngine);
70
68
  try {
71
69
  metricsEngine.getUpDownCounter(APIMetric.CONCURRENT_CONNECTIONS).add(1);
72
- service_context.emitterEngine.emitEvent(EventNames.SDK_CONNECT_EVENT, {
73
- type: EventNames.SDK_CONNECT_EVENT,
70
+ service_context.emitterEngine.emitEvent(event_types.EmitterEngineEventNames.SDK_CONNECT_EVENT, {
74
71
  ...sdkData,
75
72
  connect_at: streamStart
76
73
  });
@@ -136,8 +133,7 @@ export const syncStreamed = routeDefinition({
136
133
  }
137
134
  controller.abort();
138
135
  metricsEngine.getUpDownCounter(APIMetric.CONCURRENT_CONNECTIONS).add(-1);
139
- service_context.emitterEngine.emitEvent(EventNames.SDK_DISCONNECT_EVENT, {
140
- type: EventNames.SDK_DISCONNECT_EVENT,
136
+ service_context.emitterEngine.emitEvent(event_types.EmitterEngineEventNames.SDK_DISCONNECT_EVENT, {
141
137
  ...sdkData,
142
138
  disconnect_at: Date.now()
143
139
  });
@@ -151,8 +147,7 @@ export const syncStreamed = routeDefinition({
151
147
  } catch (ex) {
152
148
  controller.abort();
153
149
  metricsEngine.getUpDownCounter(APIMetric.CONCURRENT_CONNECTIONS).add(-1);
154
- service_context.emitterEngine.emitEvent(EventNames.SDK_DISCONNECT_EVENT, {
155
- type: EventNames.SDK_DISCONNECT_EVENT,
150
+ service_context.emitterEngine.emitEvent(event_types.EmitterEngineEventNames.SDK_DISCONNECT_EVENT, {
156
151
  ...sdkData,
157
152
  disconnect_at: Date.now()
158
153
  });
@@ -9,7 +9,6 @@ import * as storage from '../storage/storage-index.js';
9
9
  import { SyncContext } from '../sync/SyncContext.js';
10
10
  import * as utils from '../util/util-index.js';
11
11
  import { EmitterEngine } from '../emitters/EmitterEngine.js';
12
- import { events } from '../emitters/events/index.js';
13
12
 
14
13
  export interface ServiceContext {
15
14
  configuration: utils.ResolvedPowerSyncConfig;
@@ -70,7 +69,7 @@ export class ServiceContextContainer implements ServiceContext {
70
69
  }
71
70
  });
72
71
 
73
- this.emitterEngine = new EmitterEngine(events, this.storageEngine);
72
+ this.emitterEngine = new EmitterEngine();
74
73
 
75
74
  this.lifeCycleEngine.withLifecycle(this.storageEngine, {
76
75
  start: (storageEngine) => storageEngine.start(),