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

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 (78) hide show
  1. package/CHANGELOG.md +36 -4
  2. package/dist/auth/CachedKeyCollector.js +26 -2
  3. package/dist/auth/CachedKeyCollector.js.map +1 -1
  4. package/dist/auth/KeySpec.d.ts +1 -0
  5. package/dist/auth/KeySpec.js +12 -0
  6. package/dist/auth/KeySpec.js.map +1 -1
  7. package/dist/auth/KeyStore.js +2 -2
  8. package/dist/auth/KeyStore.js.map +1 -1
  9. package/dist/auth/RemoteJWKSCollector.js +6 -2
  10. package/dist/auth/RemoteJWKSCollector.js.map +1 -1
  11. package/dist/emitters/AbstractEmitterEngine.d.ts +13 -0
  12. package/dist/emitters/AbstractEmitterEngine.js +57 -0
  13. package/dist/emitters/AbstractEmitterEngine.js.map +1 -0
  14. package/dist/emitters/EmitterEngine.d.ts +12 -0
  15. package/dist/emitters/EmitterEngine.js +35 -0
  16. package/dist/emitters/EmitterEngine.js.map +1 -0
  17. package/dist/emitters/emitter-interfaces.d.ts +37 -0
  18. package/dist/emitters/emitter-interfaces.js +10 -0
  19. package/dist/emitters/emitter-interfaces.js.map +1 -0
  20. package/dist/emitters/event-error.d.ts +5 -0
  21. package/dist/emitters/event-error.js +8 -0
  22. package/dist/emitters/event-error.js.map +1 -0
  23. package/dist/emitters/events/connect-event.d.ts +10 -0
  24. package/dist/emitters/events/connect-event.js +32 -0
  25. package/dist/emitters/events/connect-event.js.map +1 -0
  26. package/dist/emitters/events/disconnect-event.d.ts +10 -0
  27. package/dist/emitters/events/disconnect-event.js +27 -0
  28. package/dist/emitters/events/disconnect-event.js.map +1 -0
  29. package/dist/emitters/events/index.d.ts +1 -0
  30. package/dist/emitters/events/index.js +4 -0
  31. package/dist/emitters/events/index.js.map +1 -0
  32. package/dist/replication/AbstractReplicator.d.ts +8 -2
  33. package/dist/replication/AbstractReplicator.js +25 -9
  34. package/dist/replication/AbstractReplicator.js.map +1 -1
  35. package/dist/routes/auth.d.ts +1 -21
  36. package/dist/routes/auth.js +1 -97
  37. package/dist/routes/auth.js.map +1 -1
  38. package/dist/routes/configure-rsocket.js +4 -2
  39. package/dist/routes/configure-rsocket.js.map +1 -1
  40. package/dist/routes/endpoints/sync-stream.js +23 -1
  41. package/dist/routes/endpoints/sync-stream.js.map +1 -1
  42. package/dist/routes/router.d.ts +1 -2
  43. package/dist/routes/router.js.map +1 -1
  44. package/dist/system/ServiceContext.d.ts +3 -0
  45. package/dist/system/ServiceContext.js +8 -1
  46. package/dist/system/ServiceContext.js.map +1 -1
  47. package/dist/util/config/compound-config-collector.js +0 -13
  48. package/dist/util/config/compound-config-collector.js.map +1 -1
  49. package/dist/util/config/types.d.ts +0 -12
  50. package/dist/util/util-index.d.ts +1 -0
  51. package/dist/util/util-index.js +1 -0
  52. package/dist/util/util-index.js.map +1 -1
  53. package/dist/util/version.d.ts +1 -0
  54. package/dist/util/version.js +3 -0
  55. package/dist/util/version.js.map +1 -0
  56. package/package.json +4 -4
  57. package/src/auth/CachedKeyCollector.ts +25 -3
  58. package/src/auth/KeySpec.ts +14 -0
  59. package/src/auth/KeyStore.ts +2 -2
  60. package/src/auth/RemoteJWKSCollector.ts +6 -2
  61. package/src/emitters/AbstractEmitterEngine.ts +64 -0
  62. package/src/emitters/EmitterEngine.ts +41 -0
  63. package/src/emitters/emitter-interfaces.ts +47 -0
  64. package/src/emitters/event-error.ts +10 -0
  65. package/src/emitters/events/connect-event.ts +34 -0
  66. package/src/emitters/events/disconnect-event.ts +36 -0
  67. package/src/emitters/events/index.ts +4 -0
  68. package/src/replication/AbstractReplicator.ts +30 -10
  69. package/src/routes/auth.ts +1 -124
  70. package/src/routes/configure-rsocket.ts +3 -2
  71. package/src/routes/endpoints/sync-stream.ts +25 -2
  72. package/src/routes/router.ts +0 -1
  73. package/src/system/ServiceContext.ts +11 -1
  74. package/src/util/config/compound-config-collector.ts +0 -16
  75. package/src/util/config/types.ts +0 -11
  76. package/src/util/util-index.ts +1 -0
  77. package/src/util/version.ts +3 -0
  78. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -1,6 +1,38 @@
1
1
  # @powersync/service-core
2
2
 
3
- ## 0.0.0-dev-20250618131818
3
+ ## 0.0.0-dev-20250714115156
4
+
5
+ ### Minor Changes
6
+
7
+ - 71cf892: Add 'powersync' or 'powersync-storage' as the app name for database connections.
8
+
9
+ ### Patch Changes
10
+
11
+ - ba1ceef: Remove unused dev config.
12
+ - f1431b6: Improve diagnostics in logs for JWKS timeouts.
13
+ - Updated dependencies [ba1ceef]
14
+ - @powersync/service-types@0.0.0-dev-20250714115156
15
+
16
+ ## 1.13.3
17
+
18
+ ### Patch Changes
19
+
20
+ - 3e7d629: Fix MongoDB initial replication with mixed \_id types.
21
+ - e8cb8db: Fix websocket auth errors not correctly propagating the details, previously resulting in generic "[PSYNC_S2106] Authentication required" messages.
22
+
23
+ ## 1.13.2
24
+
25
+ ### Patch Changes
26
+
27
+ - c002948: Fix sync rule clearing process to not block sync rule processing.
28
+
29
+ ## 1.13.1
30
+
31
+ ### Patch Changes
32
+
33
+ - 1b326fb: [MongoDB Storage] Fix checksum calculations in buckets with more than 4 million operations
34
+
35
+ ## 1.13.0
4
36
 
5
37
  ### Minor Changes
6
38
 
@@ -16,9 +48,9 @@
16
48
  - Updated dependencies [0ccd470]
17
49
  - Updated dependencies [951b010]
18
50
  - Updated dependencies [f9e8673]
19
- - @powersync/service-types@0.0.0-dev-20250618131818
20
- - @powersync/lib-services-framework@0.0.0-dev-20250618131818
21
- - @powersync/service-rsocket-router@0.0.0-dev-20250618131818
51
+ - @powersync/service-types@0.12.0
52
+ - @powersync/lib-services-framework@0.7.0
53
+ - @powersync/service-rsocket-router@0.1.1
22
54
 
23
55
  ## 1.12.1
24
56
 
@@ -1,5 +1,6 @@
1
1
  import timers from 'timers/promises';
2
2
  import { LeakyBucket } from './LeakyBucket.js';
3
+ import { AuthorizationError, ErrorCode, logger } from '@powersync/lib-services-framework';
3
4
  import { mapAuthConfigError } from './utils.js';
4
5
  /**
5
6
  * Manages caching and refreshing for a key collector.
@@ -58,8 +59,23 @@ export class CachedKeyCollector {
58
59
  // e.g. in the case of waiting for error retries.
59
60
  // In the case of very slow requests, we don't wait for it to complete, but the
60
61
  // request can still complete in the background.
61
- const timeout = timers.setTimeout(3000);
62
- await Promise.race([this.refreshPromise, timeout]);
62
+ const WAIT_TIMEOUT_SECONDS = 3;
63
+ const timeout = timers.setTimeout(WAIT_TIMEOUT_SECONDS * 1000).then(() => {
64
+ throw new AuthorizationError(ErrorCode.PSYNC_S2204, `JWKS request failed`, {
65
+ cause: { message: `Key request timed out in ${WAIT_TIMEOUT_SECONDS}s`, name: 'AbortError' }
66
+ });
67
+ });
68
+ try {
69
+ await Promise.race([this.refreshPromise, timeout]);
70
+ }
71
+ catch (e) {
72
+ if (e instanceof AuthorizationError) {
73
+ return { keys: this.currentKeys, errors: [...this.currentErrors, e] };
74
+ }
75
+ else {
76
+ throw e;
77
+ }
78
+ }
63
79
  }
64
80
  return { keys: this.currentKeys, errors: this.currentErrors };
65
81
  }
@@ -86,8 +102,16 @@ export class CachedKeyCollector {
86
102
  this.currentErrors = errors;
87
103
  this.keyTimestamp = Date.now();
88
104
  this.error = false;
105
+ // Due to caching and background refresh behavior, errors are not always propagated to the request handler,
106
+ // so we log them here.
107
+ for (let error of errors) {
108
+ logger.error(`Soft key refresh error`, error);
109
+ }
89
110
  }
90
111
  catch (e) {
112
+ // Due to caching and background refresh behavior, errors are not always propagated to the request handler,
113
+ // so we log them here.
114
+ logger.error(`Hard key refresh error`, e);
91
115
  this.error = true;
92
116
  // No result - keep previous keys
93
117
  this.currentErrors = [mapAuthConfigError(e)];
@@ -1 +1 @@
1
- {"version":3,"file":"CachedKeyCollector.js","sourceRoot":"","sources":["../../src/auth/CachedKeyCollector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CachedKeyCollector.js","sourceRoot":"","sources":["../../src/auth/CachedKeyCollector.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ export declare class KeySpec {
23
23
  static importKey(key: jose.JWK, options?: KeyOptions): Promise<KeySpec>;
24
24
  constructor(source: jose.JWK, key: jose.KeyLike, options?: KeyOptions);
25
25
  get kid(): string | undefined;
26
+ get description(): string;
26
27
  matchesAlgorithm(jwtAlg: string): boolean;
27
28
  isValidSignature(token: string): Promise<boolean>;
28
29
  }
@@ -20,6 +20,18 @@ export class KeySpec {
20
20
  get kid() {
21
21
  return this.source.kid;
22
22
  }
23
+ get description() {
24
+ let details = [];
25
+ details.push(`kid: ${this.kid ?? '*'}`);
26
+ details.push(`kty: ${this.source.kty}`);
27
+ if (this.source.alg != null) {
28
+ details.push(`alg: ${this.source.alg}`);
29
+ }
30
+ if (this.options.requiresAudience != null) {
31
+ details.push(`aud: ${this.options.requiresAudience.join(', ')}`);
32
+ }
33
+ return `<${details.filter((x) => x != null).join(', ')}>`;
34
+ }
23
35
  matchesAlgorithm(jwtAlg) {
24
36
  if (this.source.alg) {
25
37
  return jwtAlg === this.source.alg;
@@ -1 +1 @@
1
- {"version":3,"file":"KeySpec.js","sourceRoot":"","sources":["../../src/auth/KeySpec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,cAAc,EAAE,GAAG,aAAa,EAAE,GAAG,cAAc,CAAC,CAAC;AAgB/G,MAAM,OAAO,OAAO;IAClB,GAAG,CAAe;IAClB,MAAM,CAAW;IACjB,OAAO,CAAa;IAEpB,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAa,EAAE,OAAoB;QACxD,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAiB,CAAC;QAC3D,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,YAAY,MAAgB,EAAE,GAAiB,EAAE,OAAoB;QACnE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACzB,CAAC;IAED,gBAAgB,CAAC,MAAc;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACpB,OAAO,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QACpC,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;YACrC,OAAO,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;YACrC,OAAO,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;YACrC,OAAO,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;YACpC,OAAO,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAAa;QAClC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,CAAC,IAAI,KAAK,uCAAuC,EAAE,CAAC;gBACvD,OAAO,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,iCAAiC;gBACjC,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"KeySpec.js","sourceRoot":"","sources":["../../src/auth/KeySpec.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { logger, AuthorizationError, ErrorCode } from '@powersync/lib-services-framework';
1
+ import { AuthorizationError, ErrorCode, logger } from '@powersync/lib-services-framework';
2
2
  import * as jose from 'jose';
3
3
  import secs from '../util/secs.js';
4
4
  import { SUPPORTED_ALGORITHMS } from './KeySpec.js';
@@ -138,7 +138,7 @@ export class KeyStore {
138
138
  logger.error(`Failed to refresh keys`, e);
139
139
  });
140
140
  throw new AuthorizationError(ErrorCode.PSYNC_S2101, 'Could not find an appropriate key in the keystore. The key is missing or no key matched the token KID', {
141
- configurationDetails: `Known kid values: ${keys.map((key) => key.kid ?? '*').join(', ')}`
141
+ configurationDetails: `Known keys: ${keys.map((key) => key.description).join(', ')}`
142
142
  // tokenDetails automatically populated later
143
143
  });
144
144
  }
@@ -1 +1 @@
1
- {"version":3,"file":"KeyStore.js","sourceRoot":"","sources":["../../src/auth/KeyStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KeyStore.js","sourceRoot":"","sources":["../../src/auth/KeyStore.ts"],"names":[],"mappings":"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"}
@@ -27,9 +27,10 @@ export class RemoteJWKSCollector {
27
27
  }
28
28
  async getJwksData() {
29
29
  const abortController = new AbortController();
30
+ const REQUEST_TIMEOUT_SECONDS = 30;
30
31
  const timeout = setTimeout(() => {
31
32
  abortController.abort();
32
- }, 30_000);
33
+ }, REQUEST_TIMEOUT_SECONDS * 1000);
33
34
  try {
34
35
  const res = await fetch(this.url, {
35
36
  method: 'GET',
@@ -47,11 +48,14 @@ export class RemoteJWKSCollector {
47
48
  return (await res.json());
48
49
  }
49
50
  catch (e) {
51
+ if (e instanceof Error && e.name === 'AbortError') {
52
+ e = { message: `Request timed out in ${REQUEST_TIMEOUT_SECONDS}s`, name: 'AbortError' };
53
+ }
50
54
  throw new AuthorizationError(ErrorCode.PSYNC_S2204, `JWKS request failed`, {
51
55
  configurationDetails: `JWKS URL: ${this.url}`,
52
56
  // This covers most cases of FetchError
53
57
  // `cause: e` could lose the error message
54
- cause: { message: e.message, code: e.code }
58
+ cause: { message: e.message, code: e.code, name: e.name }
55
59
  });
56
60
  }
57
61
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"RemoteJWKSCollector.js","sourceRoot":"","sources":["../../src/auth/RemoteJWKSCollector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RemoteJWKSCollector.js","sourceRoot":"","sources":["../../src/auth/RemoteJWKSCollector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { EmitterEvent, EmitterEventData, EventNames } from './emitter-interfaces.js';
2
+ import * as storage from '../storage/storage-index.js';
3
+ export declare abstract class AbstractEmitterEngine {
4
+ private emitter;
5
+ storageEngine: storage.StorageEngine;
6
+ eventsMap: Map<EventNames, EmitterEvent>;
7
+ protected constructor(storage: storage.StorageEngine);
8
+ get events(): EventNames[];
9
+ protected bindEvents(events: EmitterEvent[]): void;
10
+ protected emit(eventName: EventNames, data: EmitterEventData): void;
11
+ protected removeListeners(eventName?: EventNames): void;
12
+ protected stop(): void;
13
+ }
@@ -0,0 +1,57 @@
1
+ import { isEventError } from './emitter-interfaces.js';
2
+ import EventEmitter from 'node:events';
3
+ import { logger } from '@powersync/lib-services-framework';
4
+ export class AbstractEmitterEngine {
5
+ emitter;
6
+ storageEngine;
7
+ eventsMap = new Map();
8
+ constructor(storage) {
9
+ this.emitter = new EventEmitter({ captureRejections: true });
10
+ this.storageEngine = storage;
11
+ this.emitter.on('error', (error) => {
12
+ if (isEventError(error) && this.eventsMap.has(error.eventName)) {
13
+ const event = this.eventsMap.get(error.eventName);
14
+ const errorHandler = event.errorhandler ??
15
+ ((error) => {
16
+ logger.error(error.message);
17
+ });
18
+ errorHandler(error);
19
+ }
20
+ });
21
+ }
22
+ get events() {
23
+ return this.emitter.eventNames();
24
+ }
25
+ bindEvents(events) {
26
+ const eventNames = this.emitter.eventNames();
27
+ for (const event of events) {
28
+ if (!eventNames.includes(event.name)) {
29
+ this.eventsMap.set(event.name, event);
30
+ this.emitter.on(event.name, event.handler(this.storageEngine).bind(event));
31
+ }
32
+ else {
33
+ logger.warn(`Event ${event.name} is already registered. Skipping.`);
34
+ }
35
+ }
36
+ }
37
+ emit(eventName, data) {
38
+ if (!this.emitter.eventNames().includes(eventName)) {
39
+ throw new Error(`Event ${eventName} is not registered.`);
40
+ }
41
+ this.emitter.emit(eventName, data);
42
+ }
43
+ removeListeners(eventName) {
44
+ if (eventName) {
45
+ this.emitter.removeAllListeners(eventName);
46
+ logger.info(`Removed all listeners for event: ${eventName}`);
47
+ }
48
+ else {
49
+ this.stop();
50
+ }
51
+ }
52
+ stop() {
53
+ this.emitter.removeAllListeners();
54
+ logger.info('Emitter engine shut down and all listeners removed.');
55
+ }
56
+ }
57
+ //# sourceMappingURL=AbstractEmitterEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractEmitterEngine.js","sourceRoot":"","sources":["../../src/emitters/AbstractEmitterEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEnG,OAAO,YAAY,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAG3D,MAAM,OAAgB,qBAAqB;IACjC,OAAO,CAAe;IAC9B,aAAa,CAAwB;IACrC,SAAS,GAAkC,IAAI,GAAG,EAAE,CAAC;IAErD,YAAsB,OAA8B;QAClD,IAAI,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAyB,EAAE,EAAE;YACrD,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAE,CAAC;gBACnD,MAAM,YAAY,GAChB,KAAK,CAAC,YAAY;oBAClB,CAAC,CAAC,KAAK,EAAE,EAAE;wBACT,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC9B,CAAC,CAAC,CAAC;gBACL,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAkB,CAAC;IACnD,CAAC;IAES,UAAU,CAAC,MAAsB;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7E,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,mCAAmC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAES,IAAI,CAAC,SAAqB,EAAE,IAAsB;QAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,SAAS,SAAS,qBAAqB,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAES,eAAe,CAAC,SAAsB;QAC9C,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,oCAAoC,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAES,IAAI;QACZ,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;CACF"}
@@ -0,0 +1,12 @@
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>;
12
+ }
@@ -0,0 +1,35 @@
1
+ import { AbstractEmitterEngine } from './AbstractEmitterEngine.js';
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);
10
+ }
11
+ event(eventName) {
12
+ const event = this.eventsMap.get(eventName);
13
+ if (!event) {
14
+ throw new Error(`Event ${eventName} is not registered.`);
15
+ }
16
+ return event;
17
+ }
18
+ removeListeners(eventName) {
19
+ if (eventName) {
20
+ this.removeListeners(eventName);
21
+ }
22
+ }
23
+ eventNames() {
24
+ return this.events;
25
+ }
26
+ emitEvent(eventName, data) {
27
+ if (this.active) {
28
+ return this.emit(eventName, data);
29
+ }
30
+ }
31
+ async shutDown() {
32
+ this.stop();
33
+ }
34
+ }
35
+ //# sourceMappingURL=EmitterEngine.js.map
@@ -0,0 +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"}
@@ -0,0 +1,37 @@
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
+ }
30
+ 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>;
36
+ }
37
+ export declare function isEventError(error: Error | EventError): error is EventError;
@@ -0,0 +1,10 @@
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
+ }
10
+ //# sourceMappingURL=emitter-interfaces.js.map
@@ -0,0 +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"}
@@ -0,0 +1,5 @@
1
+ import { EventNames } from './emitter-interfaces.js';
2
+ export declare class EventError extends Error {
3
+ eventName: EventNames;
4
+ constructor(eventName: EventNames, message: string);
5
+ }
@@ -0,0 +1,8 @@
1
+ export class EventError extends Error {
2
+ eventName;
3
+ constructor(eventName, message) {
4
+ super(message);
5
+ this.eventName = eventName;
6
+ }
7
+ }
8
+ //# sourceMappingURL=event-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-error.js","sourceRoot":"","sources":["../../src/emitters/event-error.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,UAAW,SAAQ,KAAK;IAE1B;IADT,YACS,SAAqB,EAC5B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,cAAS,GAAT,SAAS,CAAY;IAI9B,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import { EmitterEvent, EventHandler, EventNames } from '../emitter-interfaces.js';
2
+ import * as storage from '../../storage/storage-index.js';
3
+ import { EventError } from '../event-error.js';
4
+ export declare class ConnectEvent implements EmitterEvent {
5
+ private type;
6
+ get name(): EventNames;
7
+ errorhandler(error: Error | EventError): void;
8
+ handler(storageEngine: storage.StorageEngine): EventHandler;
9
+ }
10
+ export declare const connectEvent: ConnectEvent;
@@ -0,0 +1,32 @@
1
+ import { EventNames } from '../emitter-interfaces.js';
2
+ import { EventError } from '../event-error.js';
3
+ import { logger } from '@powersync/lib-services-framework';
4
+ export class ConnectEvent {
5
+ type = EventNames.SDK_CONNECT_EVENT;
6
+ get name() {
7
+ return this.type;
8
+ }
9
+ errorhandler(error) {
10
+ if (error instanceof EventError) {
11
+ logger.error(`EventError in ${error.eventName}:`, error.message);
12
+ }
13
+ else {
14
+ logger.error(error.message);
15
+ }
16
+ }
17
+ handler(storageEngine) {
18
+ // TODO: USE STORAGE ENGINE
19
+ const storage = storageEngine.activeStorage.storage;
20
+ return async (data) => {
21
+ try {
22
+ const disconnectData = data;
23
+ console.log(`Connect event triggered for user: ${disconnectData.user_id} at ${new Date(disconnectData.connect_at).toISOString()}`);
24
+ }
25
+ catch (error) {
26
+ throw new EventError(this.type, error.message);
27
+ }
28
+ };
29
+ }
30
+ }
31
+ export const connectEvent = new ConnectEvent();
32
+ //# sourceMappingURL=connect-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-event.js","sourceRoot":"","sources":["../../../src/emitters/events/connect-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAE3D,MAAM,OAAO,YAAY;IACf,IAAI,GAAG,UAAU,CAAC,iBAAiB,CAAC;IAC5C,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACD,YAAY,CAAC,KAAyB;QACpC,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,iBAAiB,KAAK,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,aAAoC;QAC1C,2BAA2B;QAC3B,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC;QACpD,OAAO,KAAK,EAAE,IAAsB,EAAE,EAAE;YACtC,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,IAAwB,CAAC;gBAChD,OAAO,CAAC,GAAG,CACT,qCAAqC,cAAc,CAAC,OAAO,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CACtH,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { EmitterEvent, EventHandler, EventNames } from '../emitter-interfaces.js';
2
+ import * as storage from '../../storage/storage-index.js';
3
+ import { EventError } from '../event-error.js';
4
+ export declare class DisconnectEvent implements EmitterEvent {
5
+ private type;
6
+ get name(): EventNames;
7
+ errorhandler(error: Error | EventError): void;
8
+ handler(storageEngine: storage.StorageEngine): EventHandler;
9
+ }
10
+ export declare const disconnectEvent: DisconnectEvent;
@@ -0,0 +1,27 @@
1
+ import { EventNames } from '../emitter-interfaces.js';
2
+ import { EventError } from '../event-error.js';
3
+ import { logger } from '@powersync/lib-services-framework';
4
+ export class DisconnectEvent {
5
+ type = EventNames.SDK_DISCONNECT_EVENT;
6
+ get name() {
7
+ return this.type;
8
+ }
9
+ errorhandler(error) {
10
+ if (error instanceof EventError) {
11
+ logger.error(`EventError in ${error.eventName}:`, error.message);
12
+ }
13
+ else {
14
+ logger.error(error.message);
15
+ }
16
+ }
17
+ handler(storageEngine) {
18
+ // TODO: USE STORAGE ENGINE
19
+ const storage = storageEngine.activeStorage.storage;
20
+ return async (data) => {
21
+ const disconnectData = data;
22
+ console.log(`Disconnect event triggered for user: ${disconnectData.user_id} at ${new Date(disconnectData.disconnect_at).toISOString()}`);
23
+ };
24
+ }
25
+ }
26
+ export const disconnectEvent = new DisconnectEvent();
27
+ //# sourceMappingURL=disconnect-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disconnect-event.js","sourceRoot":"","sources":["../../../src/emitters/events/disconnect-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,UAAU,EACX,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAE3D,MAAM,OAAO,eAAe;IAClB,IAAI,GAAG,UAAU,CAAC,oBAAoB,CAAC;IAC/C,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACD,YAAY,CAAC,KAAyB;QACpC,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,iBAAiB,KAAK,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,aAAoC;QAC1C,2BAA2B;QAC3B,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC;QACpD,OAAO,KAAK,EAAE,IAAsB,EAAE,EAAE;YACtC,MAAM,cAAc,GAAG,IAA2B,CAAC;YACnD,OAAO,CAAC,GAAG,CACT,wCAAwC,cAAc,CAAC,OAAO,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,EAAE,CAC5H,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const events: (import("./disconnect-event.js").DisconnectEvent | import("./connect-event.js").ConnectEvent)[];
@@ -0,0 +1,4 @@
1
+ import { disconnectEvent } from './disconnect-event.js';
2
+ import { connectEvent } from './connect-event.js';
3
+ export const events = [disconnectEvent, connectEvent];
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/emitters/events/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import winston from 'winston';
2
+ import { MetricsEngine } from '../metrics/MetricsEngine.js';
2
3
  import * as storage from '../storage/storage-index.js';
3
4
  import { StorageEngine } from '../storage/storage-index.js';
4
5
  import { SyncRulesProvider } from '../util/config/sync-rules/sync-rules-provider.js';
5
6
  import { AbstractReplicationJob } from './AbstractReplicationJob.js';
6
7
  import { ErrorRateLimiter } from './ErrorRateLimiter.js';
7
8
  import { ConnectionTestResult } from './ReplicationModule.js';
8
- import { MetricsEngine } from '../metrics/MetricsEngine.js';
9
9
  export interface CreateJobOptions {
10
10
  lock: storage.ReplicationLock;
11
11
  storage: storage.SyncRulesBucketStorage;
@@ -31,9 +31,15 @@ export declare abstract class AbstractReplicator<T extends AbstractReplicationJo
31
31
  /**
32
32
  * Map of replication jobs by sync rule id. Usually there is only one running job, but there could be two when
33
33
  * transitioning to a new set of sync rules.
34
- * @private
35
34
  */
36
35
  private replicationJobs;
36
+ /**
37
+ * Map of sync rule ids to promises that are clearing the sync rule configuration.
38
+ *
39
+ * We primarily do this to keep track of what we're currently clearing, but don't currently
40
+ * use the Promise value.
41
+ */
42
+ private clearingJobs;
37
43
  /**
38
44
  * Used for replication lag computation.
39
45
  */