@powersync/service-core 1.11.2 → 1.12.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.
Files changed (117) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/dist/auth/CachedKeyCollector.js +2 -7
  3. package/dist/auth/CachedKeyCollector.js.map +1 -1
  4. package/dist/auth/CompoundKeyCollector.js.map +1 -1
  5. package/dist/auth/KeyCollector.d.ts +2 -2
  6. package/dist/auth/KeyStore.js +32 -14
  7. package/dist/auth/KeyStore.js.map +1 -1
  8. package/dist/auth/RemoteJWKSCollector.d.ts +1 -0
  9. package/dist/auth/RemoteJWKSCollector.js +39 -16
  10. package/dist/auth/RemoteJWKSCollector.js.map +1 -1
  11. package/dist/auth/auth-index.d.ts +1 -0
  12. package/dist/auth/auth-index.js +1 -0
  13. package/dist/auth/auth-index.js.map +1 -1
  14. package/dist/auth/utils.d.ts +6 -0
  15. package/dist/auth/utils.js +97 -0
  16. package/dist/auth/utils.js.map +1 -0
  17. package/dist/entry/commands/compact-action.js +4 -1
  18. package/dist/entry/commands/compact-action.js.map +1 -1
  19. package/dist/entry/commands/migrate-action.js +4 -1
  20. package/dist/entry/commands/migrate-action.js.map +1 -1
  21. package/dist/entry/commands/test-connection-action.js +4 -1
  22. package/dist/entry/commands/test-connection-action.js.map +1 -1
  23. package/dist/metrics/open-telemetry/OpenTelemetryMetricsFactory.js +1 -1
  24. package/dist/metrics/open-telemetry/OpenTelemetryMetricsFactory.js.map +1 -1
  25. package/dist/routes/RouterEngine.d.ts +2 -0
  26. package/dist/routes/RouterEngine.js +15 -10
  27. package/dist/routes/RouterEngine.js.map +1 -1
  28. package/dist/routes/auth.d.ts +5 -16
  29. package/dist/routes/auth.js +6 -4
  30. package/dist/routes/auth.js.map +1 -1
  31. package/dist/routes/configure-fastify.d.ts +3 -21
  32. package/dist/routes/configure-fastify.js +3 -6
  33. package/dist/routes/configure-fastify.js.map +1 -1
  34. package/dist/routes/configure-rsocket.js +28 -14
  35. package/dist/routes/configure-rsocket.js.map +1 -1
  36. package/dist/routes/endpoints/admin.js.map +1 -1
  37. package/dist/routes/endpoints/checkpointing.d.ts +4 -28
  38. package/dist/routes/endpoints/checkpointing.js.map +1 -1
  39. package/dist/routes/endpoints/route-endpoints-index.d.ts +1 -0
  40. package/dist/routes/endpoints/route-endpoints-index.js +1 -0
  41. package/dist/routes/endpoints/route-endpoints-index.js.map +1 -1
  42. package/dist/routes/endpoints/socket-route.js +22 -8
  43. package/dist/routes/endpoints/socket-route.js.map +1 -1
  44. package/dist/routes/endpoints/sync-rules.js.map +1 -1
  45. package/dist/routes/endpoints/sync-stream.d.ts +2 -14
  46. package/dist/routes/endpoints/sync-stream.js +28 -9
  47. package/dist/routes/endpoints/sync-stream.js.map +1 -1
  48. package/dist/routes/route-register.js +10 -6
  49. package/dist/routes/route-register.js.map +1 -1
  50. package/dist/routes/router.d.ts +8 -7
  51. package/dist/routes/router.js.map +1 -1
  52. package/dist/runner/teardown.js +4 -1
  53. package/dist/runner/teardown.js.map +1 -1
  54. package/dist/storage/SyncRulesBucketStorage.d.ts +3 -3
  55. package/dist/storage/storage-metrics.js +1 -1
  56. package/dist/storage/storage-metrics.js.map +1 -1
  57. package/dist/sync/BucketChecksumState.d.ts +40 -18
  58. package/dist/sync/BucketChecksumState.js +120 -72
  59. package/dist/sync/BucketChecksumState.js.map +1 -1
  60. package/dist/sync/RequestTracker.d.ts +22 -1
  61. package/dist/sync/RequestTracker.js +51 -2
  62. package/dist/sync/RequestTracker.js.map +1 -1
  63. package/dist/sync/sync.d.ts +3 -5
  64. package/dist/sync/sync.js +48 -33
  65. package/dist/sync/sync.js.map +1 -1
  66. package/dist/system/ServiceContext.d.ts +19 -4
  67. package/dist/system/ServiceContext.js +20 -8
  68. package/dist/system/ServiceContext.js.map +1 -1
  69. package/dist/util/config/collectors/config-collector.js +4 -33
  70. package/dist/util/config/collectors/config-collector.js.map +1 -1
  71. package/dist/util/config/collectors/impl/yaml-env.d.ts +7 -0
  72. package/dist/util/config/collectors/impl/yaml-env.js +59 -0
  73. package/dist/util/config/collectors/impl/yaml-env.js.map +1 -0
  74. package/dist/util/config/compound-config-collector.js +18 -1
  75. package/dist/util/config/compound-config-collector.js.map +1 -1
  76. package/dist/util/config/types.d.ts +11 -0
  77. package/dist/util/protocol-types.d.ts +2 -2
  78. package/package.json +6 -7
  79. package/src/auth/CachedKeyCollector.ts +4 -6
  80. package/src/auth/CompoundKeyCollector.ts +2 -1
  81. package/src/auth/KeyCollector.ts +2 -2
  82. package/src/auth/KeyStore.ts +45 -20
  83. package/src/auth/RemoteJWKSCollector.ts +39 -16
  84. package/src/auth/auth-index.ts +1 -0
  85. package/src/auth/utils.ts +102 -0
  86. package/src/entry/commands/compact-action.ts +4 -1
  87. package/src/entry/commands/migrate-action.ts +4 -1
  88. package/src/entry/commands/test-connection-action.ts +4 -1
  89. package/src/metrics/open-telemetry/OpenTelemetryMetricsFactory.ts +1 -1
  90. package/src/routes/RouterEngine.ts +21 -11
  91. package/src/routes/auth.ts +7 -6
  92. package/src/routes/configure-fastify.ts +6 -8
  93. package/src/routes/configure-rsocket.ts +33 -18
  94. package/src/routes/endpoints/admin.ts +5 -5
  95. package/src/routes/endpoints/checkpointing.ts +2 -2
  96. package/src/routes/endpoints/route-endpoints-index.ts +1 -0
  97. package/src/routes/endpoints/socket-route.ts +27 -11
  98. package/src/routes/endpoints/sync-rules.ts +4 -4
  99. package/src/routes/endpoints/sync-stream.ts +34 -11
  100. package/src/routes/route-register.ts +10 -7
  101. package/src/routes/router.ts +11 -4
  102. package/src/runner/teardown.ts +5 -1
  103. package/src/storage/SyncRulesBucketStorage.ts +3 -3
  104. package/src/storage/storage-metrics.ts +1 -1
  105. package/src/sync/BucketChecksumState.ts +160 -75
  106. package/src/sync/RequestTracker.ts +70 -3
  107. package/src/sync/sync.ts +70 -47
  108. package/src/system/ServiceContext.ts +31 -12
  109. package/src/util/config/collectors/config-collector.ts +4 -40
  110. package/src/util/config/collectors/impl/yaml-env.ts +67 -0
  111. package/src/util/config/compound-config-collector.ts +22 -5
  112. package/src/util/config/types.ts +13 -0
  113. package/src/util/protocol-types.ts +2 -2
  114. package/test/src/auth.test.ts +29 -11
  115. package/test/src/config.test.ts +72 -0
  116. package/test/src/sync/BucketChecksumState.test.ts +32 -18
  117. package/tsconfig.tsbuildinfo +1 -1
package/dist/sync/sync.js CHANGED
@@ -1,12 +1,14 @@
1
1
  import { JSONBig, JsonContainer } from '@powersync/service-jsonbig';
2
2
  import { AbortError } from 'ix/aborterror.js';
3
3
  import * as util from '../util/util-index.js';
4
- import { logger } from '@powersync/lib-services-framework';
4
+ import { logger as defaultLogger } from '@powersync/lib-services-framework';
5
5
  import { BucketChecksumState } from './BucketChecksumState.js';
6
6
  import { mergeAsyncIterables } from '../streams/streams-index.js';
7
7
  import { acquireSemaphoreAbortable, settledPromise, tokenStream } from './util.js';
8
+ import { statsForBatch } from './RequestTracker.js';
8
9
  export async function* streamResponse(options) {
9
10
  const { syncContext, bucketStorage, syncRules, params, syncParams, token, tokenStreamOptions, tracker, signal } = options;
11
+ const logger = options.logger ?? defaultLogger;
10
12
  // We also need to be able to abort, so we create our own controller.
11
13
  const controller = new AbortController();
12
14
  if (signal) {
@@ -18,7 +20,7 @@ export async function* streamResponse(options) {
18
20
  }
19
21
  }
20
22
  const ki = tokenStream(token, controller.signal, tokenStreamOptions);
21
- const stream = streamResponseInner(syncContext, bucketStorage, syncRules, params, syncParams, tracker, controller.signal);
23
+ const stream = streamResponseInner(syncContext, bucketStorage, syncRules, params, syncParams, tracker, controller.signal, logger);
22
24
  // Merge the two streams, and abort as soon as one of the streams end.
23
25
  const merged = mergeAsyncIterables([stream, ki], controller.signal);
24
26
  try {
@@ -38,7 +40,7 @@ export async function* streamResponse(options) {
38
40
  controller.abort();
39
41
  }
40
42
  }
41
- async function* streamResponseInner(syncContext, bucketStorage, syncRules, params, syncParams, tracker, signal) {
43
+ async function* streamResponseInner(syncContext, bucketStorage, syncRules, params, syncParams, tracker, signal, logger) {
42
44
  const { raw_data, binary_data } = params;
43
45
  const checkpointUserId = util.checkpointUserId(syncParams.token_parameters.user_id, params.client_id);
44
46
  const checksumState = new BucketChecksumState({
@@ -49,20 +51,29 @@ async function* streamResponseInner(syncContext, bucketStorage, syncRules, param
49
51
  initialBucketPositions: params.buckets?.map((bucket) => ({
50
52
  name: bucket.name,
51
53
  after: BigInt(bucket.after)
52
- }))
54
+ })),
55
+ logger: logger
53
56
  });
54
57
  const stream = bucketStorage.watchCheckpointChanges({
55
58
  user_id: checkpointUserId,
56
59
  signal
57
60
  });
58
61
  const newCheckpoints = stream[Symbol.asyncIterator]();
62
+ async function waitForNewCheckpointLine() {
63
+ const next = await newCheckpoints.next();
64
+ if (next.done) {
65
+ return { done: true, value: undefined };
66
+ }
67
+ const line = await checksumState.buildNextCheckpointLine(next.value);
68
+ return { done: false, value: { checkpoint: next.value.base.checkpoint, line } };
69
+ }
59
70
  try {
60
71
  let nextCheckpointPromise;
61
72
  do {
62
73
  if (!nextCheckpointPromise) {
63
74
  // Wrap in a settledPromise, so that abort errors after the parent stopped iterating
64
75
  // does not result in uncaught errors.
65
- nextCheckpointPromise = settledPromise(newCheckpoints.next());
76
+ nextCheckpointPromise = settledPromise(waitForNewCheckpointLine());
66
77
  }
67
78
  const next = await nextCheckpointPromise;
68
79
  nextCheckpointPromise = undefined;
@@ -72,12 +83,14 @@ async function* streamResponseInner(syncContext, bucketStorage, syncRules, param
72
83
  if (next.value.done) {
73
84
  break;
74
85
  }
75
- const line = await checksumState.buildNextCheckpointLine(next.value.value);
86
+ const line = next.value.value.line;
76
87
  if (line == null) {
77
88
  // No update to sync
78
89
  continue;
79
90
  }
80
91
  const { checkpointLine, bucketsToFetch } = line;
92
+ // Since yielding can block, we update the state just before yielding the line.
93
+ line.advance();
81
94
  yield checkpointLine;
82
95
  // Start syncing data for buckets up to the checkpoint. As soon as we have completed at least one priority and
83
96
  // at least 1000 operations, we also start listening for new checkpoints concurrently. When a new checkpoint comes
@@ -100,29 +113,30 @@ async function* streamResponseInner(syncContext, bucketStorage, syncRules, param
100
113
  function maybeRaceForNewCheckpoint() {
101
114
  if (syncedOperations >= 1000 && nextCheckpointPromise === undefined) {
102
115
  nextCheckpointPromise = (async () => {
103
- const next = await settledPromise(newCheckpoints.next());
104
- if (next.status == 'rejected') {
105
- abortCheckpointController.abort();
106
- }
107
- else if (!next.value.done) {
108
- // Stop the running bucketDataInBatches() iterations, making the main flow reach the new checkpoint.
109
- abortCheckpointController.abort();
116
+ while (true) {
117
+ const next = await settledPromise(waitForNewCheckpointLine());
118
+ if (next.status == 'rejected') {
119
+ abortCheckpointController.abort();
120
+ }
121
+ else if (!next.value.done) {
122
+ if (next.value.value.line == null) {
123
+ // There's a new checkpoint that doesn't affect this sync stream. Keep listening, but don't
124
+ // interrupt this batch.
125
+ continue;
126
+ }
127
+ // A new sync line can be emitted. Stop running the bucketDataInBatches() iterations, making the
128
+ // main flow reach the new checkpoint.
129
+ abortCheckpointController.abort();
130
+ }
131
+ return next;
110
132
  }
111
- return next;
112
133
  })();
113
134
  }
114
135
  }
115
- function markOperationsSent(operations) {
116
- syncedOperations += operations;
117
- tracker.addOperationsSynced(operations);
118
- // Disable interrupting checkpoints for now.
119
- // There is a bug with interrupting checkpoints where:
120
- // 1. User is in the middle of syncing a large batch of data (for example initial sync).
121
- // 2. A new checkpoint comes in, which interrupts the batch.
122
- // 3. However, the new checkpoint does not contain any new data for this connection, so nothing further is synced.
123
- // This then causes the client to wait indefinitely for the remaining data or checkpoint_complete message. That is
124
- // only resolved when a new checkpoint comes in that does have data for this connection, or the connection is restarted.
125
- // maybeRaceForNewCheckpoint();
136
+ function markOperationsSent(stats) {
137
+ syncedOperations += stats.total;
138
+ tracker.addOperationsSynced(stats);
139
+ maybeRaceForNewCheckpoint();
126
140
  }
127
141
  // This incrementally updates dataBuckets with each individual bucket position.
128
142
  // At the end of this, we can be sure that all buckets have data up to the checkpoint.
@@ -134,9 +148,9 @@ async function* streamResponseInner(syncContext, bucketStorage, syncRules, param
134
148
  yield* bucketDataInBatches({
135
149
  syncContext: syncContext,
136
150
  bucketStorage: bucketStorage,
137
- checkpoint: next.value.value.base.checkpoint,
151
+ checkpoint: next.value.value.checkpoint,
138
152
  bucketsToFetch: buckets,
139
- checksumState,
153
+ checkpointLine: line,
140
154
  raw_data,
141
155
  binary_data,
142
156
  onRowsSent: markOperationsSent,
@@ -145,7 +159,8 @@ async function* streamResponseInner(syncContext, bucketStorage, syncRules, param
145
159
  user_id: syncParams.user_id,
146
160
  // Passing null here will emit a full sync complete message at the end. If we pass a priority, we'll emit a partial
147
161
  // sync complete message instead.
148
- forPriority: !isLast ? priority : null
162
+ forPriority: !isLast ? priority : null,
163
+ logger
149
164
  });
150
165
  }
151
166
  if (!abortCheckpointSignal.aborted) {
@@ -194,7 +209,7 @@ async function* bucketDataInBatches(request) {
194
209
  * Extracted as a separate internal function just to avoid memory leaks.
195
210
  */
196
211
  async function* bucketDataBatch(request) {
197
- const { syncContext, bucketStorage: storage, checkpoint, bucketsToFetch, checksumState, raw_data, binary_data, abort_connection, abort_batch, onRowsSent } = request;
212
+ const { syncContext, bucketStorage: storage, checkpoint, bucketsToFetch, checkpointLine, raw_data, binary_data, abort_connection, abort_batch, onRowsSent, logger } = request;
198
213
  let checkpointInvalidated = false;
199
214
  if (syncContext.syncSemaphore.isLocked()) {
200
215
  logger.info('Sync concurrency limit reached, waiting for lock', { user_id: request.user_id });
@@ -215,10 +230,10 @@ async function* bucketDataBatch(request) {
215
230
  }
216
231
  // Optimization: Only fetch buckets for which the checksums have changed since the last checkpoint
217
232
  // For the first batch, this will be all buckets.
218
- const filteredBuckets = checksumState.getFilteredBucketPositions(bucketsToFetch);
233
+ const filteredBuckets = checkpointLine.getFilteredBucketPositions(bucketsToFetch);
219
234
  const dataBatches = storage.getBucketDataBatch(checkpoint, filteredBuckets);
220
235
  let has_more = false;
221
- for await (let { batch: r, targetOp } of dataBatches) {
236
+ for await (let { chunkData: r, targetOp } of dataBatches) {
222
237
  // Abort in current batch if the connection is closed
223
238
  if (abort_connection.aborted) {
224
239
  return;
@@ -261,8 +276,8 @@ async function* bucketDataBatch(request) {
261
276
  // iterator memory in case if large data sent.
262
277
  yield { data: null, done: false };
263
278
  }
264
- onRowsSent(r.data.length);
265
- checksumState.updateBucketPosition({ bucket: r.bucket, nextAfter: BigInt(r.next_after), hasMore: r.has_more });
279
+ onRowsSent(statsForBatch(r));
280
+ checkpointLine.updateBucketPosition({ bucket: r.bucket, nextAfter: BigInt(r.next_after), hasMore: r.has_more });
266
281
  // Check if syncing bucket data is supposed to stop before fetching more data
267
282
  // from storage.
268
283
  if (abort_batch.aborted) {
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9C,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAE9C,OAAO,EAAU,MAAM,IAAI,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAkB,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,WAAW,EAAsB,MAAM,WAAW,CAAC;AAEvG,OAAO,EAAuC,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAmBzF,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,cAAc,CACnC,OAA6B;IAE7B,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,GAC7G,OAAO,CAAC;IACV,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;IAE/C,qEAAqE;IACrE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,gBAAgB,CACrB,OAAO,EACP,GAAG,EAAE;YACH,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;QACF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IACD,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,mBAAmB,CAChC,WAAW,EACX,aAAa,EACb,SAAS,EACT,MAAM,EACN,UAAU,EACV,OAAO,EACP,UAAU,CAAC,MAAM,EACjB,MAAM,CACP,CAAC;IACF,sEAAsE;IACtE,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAEpE,IAAI,CAAC;QACH,KAAK,CAAC,CAAC,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;YAAS,CAAC;QACT,iFAAiF;QACjF,qBAAqB;QACrB,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,mBAAmB,CACjC,WAAwB,EACxB,aAA6C,EAC7C,SAAuB,EACvB,MAAiC,EACjC,UAA6B,EAC7B,OAAuB,EACvB,MAAmB,EACnB,MAAc;IAEd,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAEzC,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAiB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAEhH,MAAM,aAAa,GAAG,IAAI,mBAAmB,CAAC;QAC5C,WAAW;QACX,aAAa;QACb,SAAS;QACT,UAAU;QACV,sBAAsB,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACvD,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;QACH,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,aAAa,CAAC,sBAAsB,CAAC;QAClD,OAAO,EAAE,gBAAgB;QACzB,MAAM;KACP,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IAOtD,KAAK,UAAU,wBAAwB;QACrC,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;IAClF,CAAC;IAED,IAAI,CAAC;QACH,IAAI,qBAAmG,CAAC;QAExG,GAAG,CAAC;YACF,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC3B,oFAAoF;gBACpF,sCAAsC;gBACtC,qBAAqB,GAAG,cAAc,CAAC,wBAAwB,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC;YACzC,qBAAqB,GAAG,SAAS,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;gBAC9B,MAAM,IAAI,CAAC,MAAM,CAAC;YACpB,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM;YACR,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;YACnC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,oBAAoB;gBACpB,SAAS;YACX,CAAC;YAED,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;YAEhD,+EAA+E;YAC/E,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,cAAc,CAAC;YAErB,8GAA8G;YAC9G,kHAAkH;YAClH,iHAAiH;YACjH,sBAAsB;YACtB,MAAM,yBAAyB,GAAG,IAAI,eAAe,EAAE,CAAC;YACxD,IAAI,gBAAgB,GAAG,CAAC,CAAC;YAEzB,MAAM,qBAAqB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YAE1F,MAAM,iBAAiB,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAClG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC;YACpF,MAAM,cAAc,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAErD,wGAAwG;YACxG,+FAA+F;YAC/F,8GAA8G;YAC9G,iBAAiB;YACjB,MAAM,eAAe,GAAmD,iBAAiB,CAAC;YAC1F,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAChC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YACnC,CAAC;YAED,SAAS,yBAAyB;gBAChC,IAAI,gBAAgB,IAAI,IAAI,IAAI,qBAAqB,KAAK,SAAS,EAAE,CAAC;oBACpE,qBAAqB,GAAG,CAAC,KAAK,IAAI,EAAE;wBAClC,OAAO,IAAI,EAAE,CAAC;4BACZ,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,wBAAwB,EAAE,CAAC,CAAC;4BAC9D,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;gCAC9B,yBAAyB,CAAC,KAAK,EAAE,CAAC;4BACpC,CAAC;iCAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gCAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;oCAClC,2FAA2F;oCAC3F,wBAAwB;oCACxB,SAAS;gCACX,CAAC;gCAED,gGAAgG;gCAChG,sCAAsC;gCACtC,yBAAyB,CAAC,KAAK,EAAE,CAAC;4BACpC,CAAC;4BAED,OAAO,IAAI,CAAC;wBACd,CAAC;oBACH,CAAC,CAAC,EAAE,CAAC;gBACP,CAAC;YACH,CAAC;YAED,SAAS,kBAAkB,CAAC,KAA0B;gBACpD,gBAAgB,IAAI,KAAK,CAAC,KAAK,CAAC;gBAChC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBACnC,yBAAyB,EAAE,CAAC;YAC9B,CAAC;YAED,+EAA+E;YAC/E,sFAAsF;YACtF,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,eAAe,EAAE,CAAC;gBAClD,MAAM,MAAM,GAAG,QAAQ,KAAK,cAAc,CAAC;gBAC3C,IAAI,qBAAqB,CAAC,OAAO,EAAE,CAAC;oBAClC,MAAM;gBACR,CAAC;gBAED,KAAK,CAAC,CAAC,mBAAmB,CAAC;oBACzB,WAAW,EAAE,WAAW;oBACxB,aAAa,EAAE,aAAa;oBAC5B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU;oBACvC,cAAc,EAAE,OAAO;oBACvB,cAAc,EAAE,IAAI;oBACpB,QAAQ;oBACR,WAAW;oBACX,UAAU,EAAE,kBAAkB;oBAC9B,gBAAgB,EAAE,MAAM;oBACxB,WAAW,EAAE,qBAAqB;oBAClC,OAAO,EAAE,UAAU,CAAC,OAAO;oBAC3B,mHAAmH;oBACnH,iCAAiC;oBACjC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;oBACtC,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE;IAC5B,CAAC;YAAS,CAAC;QACT,MAAM,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAyBD,KAAK,SAAS,CAAC,CAAC,mBAAmB,CAAC,OAA0B;IAC5D,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QAC/C,wEAAwE;QACxE,6EAA6E;QAC7E,4GAA4G;QAC5G,gBAAgB;QAChB,gBAAgB;QAChB,qBAAqB;QACrB,MAAM;QACN,WAAW;QACX,IAAI;QACJ,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBACpD,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM;gBACR,CAAC;qBAAM,CAAC;oBACN,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;oBAC7B,MAAM,IAAI,CAAC;oBACX,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,GAAG,IAAI,CAAC;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;AACH,CAAC;AAOD;;GAEG;AACH,KAAK,SAAS,CAAC,CAAC,eAAe,CAAC,OAA0B;IACxD,MAAM,EACJ,WAAW,EACX,aAAa,EAAE,OAAO,EACtB,UAAU,EACV,cAAc,EACd,cAAc,EACd,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,MAAM,EACP,GAAG,OAAO,CAAC;IAEZ,IAAI,qBAAqB,GAAG,KAAK,CAAC;IAElC,IAAI,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5G,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC;IAClC,IAAI,CAAC;QACH,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,6DAA6D;YAC7D,qBAAqB;YACrB,MAAM,CAAC,IAAI,CAAC,mCAAmC,KAAK,GAAG,CAAC,EAAE,EAAE;gBAC1D,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,eAAe,EAAE,KAAK,GAAG,CAAC;aAC3B,CAAC,CAAC;QACL,CAAC;QACD,kGAAkG;QAClG,iDAAiD;QACjD,MAAM,eAAe,GAAG,cAAc,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;QAClF,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAE5E,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,IAAI,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,WAAW,EAAE,CAAC;YACzD,qDAAqD;YACrD,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAC7B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACf,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;YACD,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,GAAG,UAAU,EAAE,CAAC;gBAC9C,qBAAqB,GAAG,IAAI,CAAC;YAC/B,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAE7C,IAAI,SAAc,CAAC;YACnB,IAAI,WAAW,EAAE,CAAC;gBAChB,wEAAwE;gBACxE,SAAS,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1B,CAAC;iBAAM,IAAI,QAAQ,EAAE,CAAC;gBACpB;;mBAEG;gBACH,MAAM,QAAQ,GAA2B;oBACvC,IAAI,EAAE,CAAC;iBACR,CAAC;gBACF,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,8EAA8E;gBAC9E,4BAA4B;gBAC5B,MAAM,QAAQ,GAA2B;oBACvC,IAAI,EAAE,uBAAuB,CAAC,CAAC,CAAC;iBACjC,CAAC;gBACF,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;YACD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACvC,IAAI,SAAS,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;gBAC9B,0EAA0E;gBAC1E,8CAA8C;gBAC9C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACpC,CAAC;YACD,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7B,cAAc,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEhH,6EAA6E;YAC7E,gBAAgB;YAChB,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,qBAAqB,EAAE,CAAC;gBAC1B,gDAAgD;gBAChD,wDAAwD;gBACxD,kEAAkE;gBAClE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;oBAChC,MAAM,IAAI,GAAkD;wBAC1D,2BAA2B,EAAE;4BAC3B,UAAU,EAAE,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC;4BACnD,QAAQ,EAAE,OAAO,CAAC,WAAW;yBAC9B;qBACF,CAAC;oBACF,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,GAAyC;wBACjD,mBAAmB,EAAE;4BACnB,UAAU,EAAE,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC;yBACpD;qBACF,CAAC;oBACF,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,6DAA6D;YAC7D,qBAAqB;YACrB,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;gBACjC,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,UAA+B;IAC9D,OAAO;QACL,GAAG,UAAU;QACb,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAClC,OAAO;gBACL,GAAG,KAAK;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAc,CAAC;gBACzE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;aACjC,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -4,17 +4,31 @@ import { PowerSyncMigrationManager } from '../migrations/PowerSyncMigrationManag
4
4
  import * as replication from '../replication/replication-index.js';
5
5
  import * as routes from '../routes/routes-index.js';
6
6
  import * as storage from '../storage/storage-index.js';
7
- import * as utils from '../util/util-index.js';
8
7
  import { SyncContext } from '../sync/SyncContext.js';
8
+ import * as utils from '../util/util-index.js';
9
9
  export interface ServiceContext {
10
10
  configuration: utils.ResolvedPowerSyncConfig;
11
11
  lifeCycleEngine: LifeCycledSystem;
12
12
  metricsEngine: metrics.MetricsEngine;
13
13
  replicationEngine: replication.ReplicationEngine | null;
14
- routerEngine: routes.RouterEngine | null;
14
+ routerEngine: routes.RouterEngine;
15
15
  storageEngine: storage.StorageEngine;
16
16
  migrations: PowerSyncMigrationManager;
17
17
  syncContext: SyncContext;
18
+ serviceMode: ServiceContextMode;
19
+ }
20
+ export declare enum ServiceContextMode {
21
+ API = "api",
22
+ SYNC = "sync",
23
+ UNIFIED = "unified",
24
+ COMPACT = "compact",
25
+ MIGRATION = "migration",
26
+ TEARDOWN = "teardown",
27
+ TEST_CONNECTION = "test-connection"
28
+ }
29
+ export interface ServiceContextOptions {
30
+ serviceMode: ServiceContextMode;
31
+ configuration: utils.ResolvedPowerSyncConfig;
18
32
  }
19
33
  /**
20
34
  * Context which allows for registering and getting implementations
@@ -26,9 +40,10 @@ export declare class ServiceContextContainer implements ServiceContext {
26
40
  lifeCycleEngine: LifeCycledSystem;
27
41
  storageEngine: storage.StorageEngine;
28
42
  syncContext: SyncContext;
29
- constructor(configuration: utils.ResolvedPowerSyncConfig);
43
+ routerEngine: routes.RouterEngine;
44
+ serviceMode: ServiceContextMode;
45
+ constructor(options: ServiceContextOptions);
30
46
  get replicationEngine(): replication.ReplicationEngine | null;
31
- get routerEngine(): routes.RouterEngine | null;
32
47
  get metricsEngine(): metrics.MetricsEngine;
33
48
  get migrations(): PowerSyncMigrationManager;
34
49
  /**
@@ -5,6 +5,17 @@ import * as replication from '../replication/replication-index.js';
5
5
  import * as routes from '../routes/routes-index.js';
6
6
  import * as storage from '../storage/storage-index.js';
7
7
  import { SyncContext } from '../sync/SyncContext.js';
8
+ import * as utils from '../util/util-index.js';
9
+ export var ServiceContextMode;
10
+ (function (ServiceContextMode) {
11
+ ServiceContextMode["API"] = "api";
12
+ ServiceContextMode["SYNC"] = "sync";
13
+ ServiceContextMode["UNIFIED"] = "unified";
14
+ ServiceContextMode["COMPACT"] = "compact";
15
+ ServiceContextMode["MIGRATION"] = "migration";
16
+ ServiceContextMode["TEARDOWN"] = "teardown";
17
+ ServiceContextMode["TEST_CONNECTION"] = "test-connection";
18
+ })(ServiceContextMode || (ServiceContextMode = {}));
8
19
  /**
9
20
  * Context which allows for registering and getting implementations
10
21
  * of various service engines.
@@ -15,7 +26,11 @@ export class ServiceContextContainer {
15
26
  lifeCycleEngine;
16
27
  storageEngine;
17
28
  syncContext;
18
- constructor(configuration) {
29
+ routerEngine;
30
+ serviceMode;
31
+ constructor(options) {
32
+ this.serviceMode = options.serviceMode;
33
+ const { configuration } = options;
19
34
  this.configuration = configuration;
20
35
  this.lifeCycleEngine = new LifeCycledSystem();
21
36
  this.storageEngine = new storage.StorageEngine({
@@ -25,6 +40,10 @@ export class ServiceContextContainer {
25
40
  start: (storageEngine) => storageEngine.start(),
26
41
  stop: (storageEngine) => storageEngine.shutDown()
27
42
  });
43
+ this.routerEngine = new routes.RouterEngine();
44
+ this.lifeCycleEngine.withLifecycle(this.routerEngine, {
45
+ stop: (routerEngine) => routerEngine.shutDown()
46
+ });
28
47
  this.syncContext = new SyncContext({
29
48
  maxDataFetchConcurrency: configuration.api_parameters.max_data_fetch_concurrency,
30
49
  maxBuckets: configuration.api_parameters.max_buckets_per_connection,
@@ -36,17 +55,10 @@ export class ServiceContextContainer {
36
55
  // Migrations should be executed before the system starts
37
56
  start: () => migrationManager[Symbol.asyncDispose]()
38
57
  });
39
- this.lifeCycleEngine.withLifecycle(this.storageEngine, {
40
- start: (storageEngine) => storageEngine.start(),
41
- stop: (storageEngine) => storageEngine.shutDown()
42
- });
43
58
  }
44
59
  get replicationEngine() {
45
60
  return container.getOptional(replication.ReplicationEngine);
46
61
  }
47
- get routerEngine() {
48
- return container.getOptional(routes.RouterEngine);
49
- }
50
62
  get metricsEngine() {
51
63
  return container.getImplementation(metrics.MetricsEngine);
52
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceContext.js","sourceRoot":"","sources":["../../src/system/ServiceContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAqB,SAAS,EAAE,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;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAarD;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAKf;IAJnB,eAAe,CAAmB;IAClC,aAAa,CAAwB;IACrC,WAAW,CAAc;IAEzB,YAAmB,aAA4C;QAA5C,kBAAa,GAAb,aAAa,CAA+B;QAC7D,IAAI,CAAC,eAAe,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAE9C,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;YAC7C,aAAa;SACd,CAAC,CAAC;QAEH,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,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,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;IACL,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,YAAY;QACd,OAAO,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACpD,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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"}
@@ -1,27 +1,14 @@
1
- import * as t from 'ts-codec';
2
1
  import * as yaml from 'yaml';
3
- import { configFile } from '@powersync/service-types';
4
2
  import { schema } from '@powersync/lib-services-framework';
3
+ import { configFile } from '@powersync/service-types';
4
+ import { YamlEnvTag } from './impl/yaml-env.js';
5
5
  export var ConfigFileFormat;
6
6
  (function (ConfigFileFormat) {
7
7
  ConfigFileFormat["YAML"] = "yaml";
8
8
  ConfigFileFormat["JSON"] = "json";
9
9
  })(ConfigFileFormat || (ConfigFileFormat = {}));
10
- /**
11
- * Environment variables can be substituted into the YAML config
12
- * when parsing if the environment variable name starts with this prefix.
13
- * Attempting to substitute any other environment variable will throw an exception.
14
- *
15
- * Example of substitution:
16
- * storage:
17
- * type: mongodb
18
- * uri: !env PS_MONGO_URI
19
- */
20
- const YAML_ENV_PREFIX = 'PS_';
21
10
  // ts-codec itself doesn't give great validation errors, so we use json schema for that
22
- const configSchemaValidator = schema
23
- .parseJSONSchema(t.generateJSONSchema(configFile.powerSyncConfig, { allowAdditional: true, parsers: [configFile.portParser] }))
24
- .validator();
11
+ const configSchemaValidator = schema.parseJSONSchema(configFile.PowerSyncConfigJSONSchema).validator();
25
12
  export class ConfigCollector {
26
13
  /**
27
14
  * Collects the PowerSyncConfig settings.
@@ -86,23 +73,7 @@ export class ConfigCollector {
86
73
  schema: 'core',
87
74
  keepSourceTokens: true,
88
75
  lineCounter,
89
- customTags: [
90
- {
91
- tag: '!env',
92
- resolve(envName, onError) {
93
- if (!envName.startsWith(YAML_ENV_PREFIX)) {
94
- onError(`Attempting to substitute environment variable ${envName} is not allowed. Variables must start with "${YAML_ENV_PREFIX}"`);
95
- return envName;
96
- }
97
- const value = process.env[envName];
98
- if (typeof value == 'undefined') {
99
- onError(`Attempted to substitute environment variable "${envName}" which is undefined. Set this variable on the environment.`);
100
- return envName;
101
- }
102
- return value;
103
- }
104
- }
105
- ]
76
+ customTags: [YamlEnvTag]
106
77
  });
107
78
  if (parsed.errors.length) {
108
79
  throw new Error(`Could not parse YAML configuration file. Received errors: \n ${parsed.errors.map((e) => e.message).join('\n')}`);
@@ -1 +1 @@
1
- {"version":3,"file":"config-collector.js","sourceRoot":"","sources":["../../../../src/util/config/collectors/config-collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-collector.js","sourceRoot":"","sources":["../../../../src/util/config/collectors/config-collector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import * as yaml from 'yaml';
2
+ /**
3
+ * Custom YAML tag which performs string environment variable substitution
4
+ * Allows for type casting string environment variables to boolean or number
5
+ * by using the syntax !env PS_MONGO_PORT::number or !env PS_USE_SUPABASE::boolean
6
+ */
7
+ export declare const YamlEnvTag: yaml.ScalarTag;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Environment variables can be substituted into the YAML config
3
+ * when parsing if the environment variable name starts with this prefix.
4
+ * Attempting to substitute any other environment variable will throw an exception.
5
+ *
6
+ * Example of substitution:
7
+ * storage:
8
+ * type: mongodb
9
+ * uri: !env PS_MONGO_URI
10
+ */
11
+ const YAML_ENV_PREFIX = 'PS_';
12
+ /**
13
+ * Custom YAML tag which performs string environment variable substitution
14
+ * Allows for type casting string environment variables to boolean or number
15
+ * by using the syntax !env PS_MONGO_PORT::number or !env PS_USE_SUPABASE::boolean
16
+ */
17
+ export const YamlEnvTag = {
18
+ tag: '!env',
19
+ resolve(envName, onError) {
20
+ if (!envName.startsWith(YAML_ENV_PREFIX)) {
21
+ onError(`Attempting to substitute environment variable ${envName} is not allowed. Variables must start with "${YAML_ENV_PREFIX}"`);
22
+ return envName;
23
+ }
24
+ // allow type casting if the envName contains a type suffix
25
+ // e.g. PS_MONGO_PORT::number or PS_USE_SUPABASE::boolean
26
+ const [name, type = 'string'] = envName.split('::');
27
+ let value = process.env[name];
28
+ if (typeof value == 'undefined') {
29
+ onError(`Attempted to substitute environment variable "${envName}" which is undefined. Set this variable on the environment.`);
30
+ return envName;
31
+ }
32
+ switch (type) {
33
+ case 'string':
34
+ return value;
35
+ case 'number':
36
+ const numberValue = Number(value);
37
+ if (Number.isNaN(numberValue)) {
38
+ onError(`Environment variable "${envName}" is not a valid number. Got: "${value}".`);
39
+ return envName;
40
+ }
41
+ return numberValue;
42
+ case 'boolean':
43
+ if (value?.toLowerCase() == 'true') {
44
+ return true;
45
+ }
46
+ else if (value?.toLowerCase() == 'false') {
47
+ return false;
48
+ }
49
+ else {
50
+ onError(`Environment variable "${envName}" is not a boolean. Expected "true" or "false", got "${value}".`);
51
+ return envName;
52
+ }
53
+ default:
54
+ onError(`Environment variable "${envName}" has an invalid type suffix "${type}".`);
55
+ return envName;
56
+ }
57
+ }
58
+ };
59
+ //# sourceMappingURL=yaml-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml-env.js","sourceRoot":"","sources":["../../../../../src/util/config/collectors/impl/yaml-env.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAmB;IACxC,GAAG,EAAE,MAAM;IACX,OAAO,CAAC,OAAe,EAAE,OAAgC;QACvD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACzC,OAAO,CACL,iDAAiD,OAAO,+CAA+C,eAAe,GAAG,CAC1H,CAAC;YACF,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,2DAA2D;QAC3D,yDAAyD;QACzD,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,OAAO,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,OAAO,CACL,iDAAiD,OAAO,6DAA6D,CACtH,CAAC;YACF,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,KAAK,CAAC;YACf,KAAK,QAAQ;gBACX,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC9B,OAAO,CAAC,yBAAyB,OAAO,kCAAkC,KAAK,IAAI,CAAC,CAAC;oBACrF,OAAO,OAAO,CAAC;gBACjB,CAAC;gBACD,OAAO,WAAW,CAAC;YACrB,KAAK,SAAS;gBACZ,IAAI,KAAK,EAAE,WAAW,EAAE,IAAI,MAAM,EAAE,CAAC;oBACnC,OAAO,IAAI,CAAC;gBACd,CAAC;qBAAM,IAAI,KAAK,EAAE,WAAW,EAAE,IAAI,OAAO,EAAE,CAAC;oBAC3C,OAAO,KAAK,CAAC;gBACf,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,yBAAyB,OAAO,wDAAwD,KAAK,IAAI,CAAC,CAAC;oBAC3G,OAAO,OAAO,CAAC;gBACjB,CAAC;YACH;gBACE,OAAO,CAAC,yBAAyB,OAAO,iCAAiC,IAAI,IAAI,CAAC,CAAC;gBACnF,OAAO,OAAO,CAAC;QACnB,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -3,10 +3,10 @@ import * as auth from '../../auth/auth-index.js';
3
3
  import { Base64ConfigCollector } from './collectors/impl/base64-config-collector.js';
4
4
  import { FallbackConfigCollector } from './collectors/impl/fallback-config-collector.js';
5
5
  import { FileSystemConfigCollector } from './collectors/impl/filesystem-config-collector.js';
6
+ import { DEFAULT_MAX_BUCKETS_PER_CONNECTION, DEFAULT_MAX_CONCURRENT_CONNECTIONS, DEFAULT_MAX_DATA_FETCH_CONCURRENCY, DEFAULT_MAX_PARAMETER_QUERY_RESULTS, DEFAULT_MAX_POOL_SIZE } from './defaults.js';
6
7
  import { Base64SyncRulesCollector } from './sync-rules/impl/base64-sync-rules-collector.js';
7
8
  import { FileSystemSyncRulesCollector } from './sync-rules/impl/filesystem-sync-rules-collector.js';
8
9
  import { InlineSyncRulesCollector } from './sync-rules/impl/inline-sync-rules-collector.js';
9
- import { DEFAULT_MAX_BUCKETS_PER_CONNECTION, DEFAULT_MAX_CONCURRENT_CONNECTIONS, DEFAULT_MAX_DATA_FETCH_CONCURRENCY, DEFAULT_MAX_PARAMETER_QUERY_RESULTS, DEFAULT_MAX_POOL_SIZE } from './defaults.js';
10
10
  const POWERSYNC_DEV_KID = 'powersync-dev';
11
11
  const DEFAULT_COLLECTOR_OPTIONS = {
12
12
  configCollectors: [new Base64ConfigCollector(), new FileSystemConfigCollector(), new FallbackConfigCollector()],
@@ -107,6 +107,23 @@ export class CompoundConfigCollector {
107
107
  disable_telemetry_sharing: baseConfig.telemetry?.disable_telemetry_sharing ?? false,
108
108
  internal_service_endpoint: baseConfig.telemetry?.internal_service_endpoint ?? 'https://pulse.journeyapps.com/v1/metrics'
109
109
  },
110
+ healthcheck: {
111
+ /**
112
+ * Default to legacy mode if no probes config is provided.
113
+ * If users provide a config, all options require explicit opt-in.
114
+ */
115
+ probes: baseConfig.healthcheck?.probes
116
+ ? {
117
+ use_filesystem: baseConfig.healthcheck.probes.use_filesystem ?? false,
118
+ use_http: baseConfig.healthcheck.probes.use_http ?? false,
119
+ use_legacy: baseConfig.healthcheck.probes.use_legacy ?? false
120
+ }
121
+ : {
122
+ use_filesystem: false,
123
+ use_http: false,
124
+ use_legacy: true
125
+ }
126
+ },
110
127
  api_parameters: {
111
128
  max_buckets_per_connection: baseConfig.api?.parameters?.max_buckets_per_connection ?? DEFAULT_MAX_BUCKETS_PER_CONNECTION,
112
129
  max_parameter_query_results: baseConfig.api?.parameters?.max_parameter_query_results ?? DEFAULT_MAX_PARAMETER_QUERY_RESULTS,
@@ -1 +1 @@
1
- {"version":3,"file":"compound-config-collector.js","sourceRoot":"","sources":["../../../src/util/config/compound-config-collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compound-config-collector.js","sourceRoot":"","sources":["../../../src/util/config/compound-config-collector.ts"],"names":[],"mappings":"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"}
@@ -60,5 +60,16 @@ export type ResolvedPowerSyncConfig = {
60
60
  };
61
61
  /** Prefix for postgres replication slot names. May eventually be connection-specific. */
62
62
  slot_name_prefix: string;
63
+ healthcheck: {
64
+ probes: {
65
+ use_filesystem: boolean;
66
+ use_http: boolean;
67
+ /**
68
+ * @deprecated This maintains backwards compatibility with the legacy default.
69
+ * Explicit probe configuration should be used instead.
70
+ */
71
+ use_legacy: boolean;
72
+ };
73
+ };
63
74
  parameters: Record<string, number | string | boolean | null>;
64
75
  };
@@ -94,11 +94,11 @@ export interface SyncBucketData {
94
94
  bucket: string;
95
95
  data: OplogEntry[];
96
96
  /**
97
- * True if the response does not contain all the data for this bucket, and another request must be made.
97
+ * True if there _could_ be more data for this bucket, and another request must be made.
98
98
  */
99
99
  has_more: boolean;
100
100
  /**
101
- * The `after` specified in the request.
101
+ * The `after` specified in the request, or the next_after from the previous batch returned.
102
102
  */
103
103
  after: ProtocolOpId;
104
104
  /**
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
- "version": "1.11.2",
8
+ "version": "1.12.0",
9
9
  "main": "dist/index.js",
10
10
  "license": "FSL-1.1-Apache-2.0",
11
11
  "type": "module",
@@ -29,19 +29,18 @@
29
29
  "node-fetch": "^3.3.2",
30
30
  "ts-codec": "^1.3.0",
31
31
  "uri-js": "^4.4.1",
32
- "uuid": "^9.0.1",
32
+ "uuid": "^11.1.0",
33
33
  "winston": "^3.13.0",
34
34
  "yaml": "^2.3.2",
35
- "@powersync/lib-services-framework": "0.5.3",
35
+ "@powersync/lib-services-framework": "0.6.0",
36
36
  "@powersync/service-jsonbig": "0.17.10",
37
- "@powersync/service-rsocket-router": "0.0.20",
38
- "@powersync/service-sync-rules": "0.26.0",
39
- "@powersync/service-types": "0.10.0"
37
+ "@powersync/service-rsocket-router": "0.1.0",
38
+ "@powersync/service-sync-rules": "0.26.1",
39
+ "@powersync/service-types": "0.11.0"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/async": "^3.2.24",
43
43
  "@types/lodash": "^4.17.5",
44
- "@types/uuid": "^9.0.4",
45
44
  "fastify": "4.23.2",
46
45
  "fastify-plugin": "^4.5.1"
47
46
  },