@powersync/service-core 1.17.0 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @powersync/service-core
2
2
 
3
+ ## 1.18.0
4
+
5
+ ### Minor Changes
6
+
7
+ - b77bb2c: - First iteration of MSSQL replication using Change Data Capture (CDC).
8
+ - Supports resumable snapshot replication
9
+ - Uses CDC polling for replication
10
+
11
+ ### Patch Changes
12
+
13
+ - dc696b1: Clear replication errors when any replication progress has been made.
14
+ - Updated dependencies [dc696b1]
15
+ - @powersync/service-types@0.13.3
16
+ - @powersync/lib-services-framework@0.7.12
17
+ - @powersync/service-rsocket-router@0.2.9
18
+
3
19
  ## 1.17.0
4
20
 
5
21
  ### Minor Changes
@@ -8,6 +8,7 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
8
8
  const include_content = options.include_content ?? false;
9
9
  const live_status = options.live_status ?? false;
10
10
  const check_connection = options.check_connection ?? false;
11
+ const now = new Date().toISOString();
11
12
  let rules;
12
13
  let persisted;
13
14
  try {
@@ -18,7 +19,7 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
18
19
  return {
19
20
  content: include_content ? sync_rules.sync_rules_content : undefined,
20
21
  connections: [],
21
- errors: [{ level: 'fatal', message: e.message }]
22
+ errors: [{ level: 'fatal', message: e.message, ts: now }]
22
23
  };
23
24
  }
24
25
  const sourceConfig = await apiHandler.getSourceConfig();
@@ -66,7 +67,7 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
66
67
  data_queries: false,
67
68
  parameter_queries: false,
68
69
  replication_id: [],
69
- errors: [{ level: 'fatal', message: 'connection failed' }]
70
+ errors: [{ level: 'fatal', message: 'connection failed', ts: now }]
70
71
  };
71
72
  }
72
73
  else {
@@ -83,19 +84,24 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
83
84
  data_queries: syncData,
84
85
  parameter_queries: syncParameters,
85
86
  replication_id: [],
86
- errors: [{ level: 'fatal', message: 'connection failed' }]
87
+ errors: [{ level: 'fatal', message: 'connection failed', ts: now }]
87
88
  };
88
89
  }
89
90
  });
90
91
  }
91
92
  const errors = tables_flat.flatMap((info) => info.errors);
92
93
  if (sync_rules.last_fatal_error) {
93
- errors.push({ level: 'fatal', message: sync_rules.last_fatal_error });
94
+ errors.push({
95
+ level: 'fatal',
96
+ message: sync_rules.last_fatal_error,
97
+ ts: sync_rules.last_fatal_error_ts?.toISOString()
98
+ });
94
99
  }
95
100
  errors.push(...rules.errors.map((e) => {
96
101
  return {
97
102
  level: e.type,
98
- message: e.message
103
+ message: e.message,
104
+ ts: now
99
105
  };
100
106
  }));
101
107
  if (live_status && status?.active) {
@@ -104,7 +110,8 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
104
110
  if (sync_rules.last_checkpoint_ts == null && sync_rules.last_keepalive_ts == null) {
105
111
  errors.push({
106
112
  level: 'warning',
107
- message: 'No checkpoint found, cannot calculate replication lag'
113
+ message: 'No checkpoint found, cannot calculate replication lag',
114
+ ts: now
108
115
  });
109
116
  }
110
117
  else {
@@ -117,13 +124,15 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
117
124
  if (lagSeconds > 15 * 60) {
118
125
  errors.push({
119
126
  level: 'fatal',
120
- message: `No replicated commit in more than ${lagSeconds}s`
127
+ message: `No replicated commit in more than ${lagSeconds}s`,
128
+ ts: now
121
129
  });
122
130
  }
123
131
  else if (lagSeconds > 5 * 60) {
124
132
  errors.push({
125
133
  level: 'warning',
126
- message: `No replicated commit in more than ${lagSeconds}s`
134
+ message: `No replicated commit in more than ${lagSeconds}s`,
135
+ ts: now
127
136
  });
128
137
  }
129
138
  }
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/api/diagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/api/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { ResolvedPowerSyncConfig } from '../util/util-index.js';
2
+ import { AbstractModule } from './AbstractModule.js';
3
+ interface DynamicModuleMap {
4
+ [key: string]: () => Promise<AbstractModule>;
5
+ }
6
+ export interface ModuleLoaders {
7
+ storage: DynamicModuleMap;
8
+ connection: DynamicModuleMap;
9
+ }
10
+ /**
11
+ * Utility function to dynamically load and instantiate modules.
12
+ */
13
+ export declare function loadModules(config: ResolvedPowerSyncConfig, loaders: ModuleLoaders): Promise<AbstractModule[]>;
14
+ export {};
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Utility function to dynamically load and instantiate modules.
3
+ */
4
+ export async function loadModules(config, loaders) {
5
+ const requiredConnections = [...new Set(config.connections?.map((connection) => connection.type) || [])];
6
+ const missingConnectionModules = [];
7
+ const modulePromises = [];
8
+ // 1. Map connection types to their module loading promises making note of any
9
+ // missing connection types.
10
+ requiredConnections.forEach((connectionType) => {
11
+ const modulePromise = loaders.connection[connectionType];
12
+ if (modulePromise !== undefined) {
13
+ modulePromises.push(modulePromise());
14
+ }
15
+ else {
16
+ missingConnectionModules.push(connectionType);
17
+ }
18
+ });
19
+ // Fail if any connection types are not found.
20
+ if (missingConnectionModules.length > 0) {
21
+ throw new Error(`Invalid connection types: "${[...missingConnectionModules].join(', ')}"`);
22
+ }
23
+ if (loaders.storage[config.storage.type] !== undefined) {
24
+ modulePromises.push(loaders.storage[config.storage.type]());
25
+ }
26
+ else {
27
+ throw new Error(`Invalid storage type: "${config.storage.type}"`);
28
+ }
29
+ // 2. Dynamically import and instantiate module classes and resolve all promises
30
+ // raising errors if any modules could not be imported.
31
+ const moduleInstances = await Promise.all(modulePromises);
32
+ return moduleInstances;
33
+ }
34
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/modules/loader.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAA+B,EAAE,OAAsB;IACvF,MAAM,mBAAmB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACzG,MAAM,wBAAwB,GAAa,EAAE,CAAC;IAC9C,MAAM,cAAc,GAA8B,EAAE,CAAC;IAErD,8EAA8E;IAC9E,4BAA4B;IAC5B,mBAAmB,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;QAC7C,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,8CAA8C;IAC9C,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,GAAG,wBAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7F,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACvD,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,gFAAgF;IAChF,uDAAuD;IACvD,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE1D,OAAO,eAAe,CAAC;AACzB,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export * from './ModuleManager.js';
2
2
  export * from './AbstractModule.js';
3
+ export * from './loader.js';
@@ -1,3 +1,4 @@
1
1
  export * from './ModuleManager.js';
2
2
  export * from './AbstractModule.js';
3
+ export * from './loader.js';
3
4
  //# sourceMappingURL=modules-index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modules-index.js","sourceRoot":"","sources":["../../src/modules/modules-index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"modules-index.js","sourceRoot":"","sources":["../../src/modules/modules-index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC"}
@@ -94,6 +94,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
94
94
  errors: {
95
95
  message: string;
96
96
  level: "warning" | "fatal";
97
+ ts?: string | undefined;
97
98
  }[];
98
99
  id: string;
99
100
  postgres_uri: string;
@@ -103,6 +104,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
103
104
  errors: {
104
105
  level: "warning" | "fatal";
105
106
  message: string;
107
+ ts?: string | undefined;
106
108
  }[];
107
109
  connections: {
108
110
  id: string;
@@ -118,6 +120,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
118
120
  errors: {
119
121
  level: "warning" | "fatal";
120
122
  message: string;
123
+ ts?: string | undefined;
121
124
  }[];
122
125
  pattern?: string | undefined;
123
126
  }[];
@@ -132,6 +135,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
132
135
  errors: {
133
136
  level: "warning" | "fatal";
134
137
  message: string;
138
+ ts?: string | undefined;
135
139
  }[];
136
140
  connections: {
137
141
  id: string;
@@ -147,6 +151,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
147
151
  errors: {
148
152
  level: "warning" | "fatal";
149
153
  message: string;
154
+ ts?: string | undefined;
150
155
  }[];
151
156
  pattern?: string | undefined;
152
157
  }[];
@@ -166,6 +171,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
166
171
  errors: {
167
172
  message: string;
168
173
  level: "warning" | "fatal";
174
+ ts?: string | undefined;
169
175
  }[];
170
176
  id: string;
171
177
  postgres_uri: string;
@@ -175,6 +181,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
175
181
  errors: {
176
182
  level: "warning" | "fatal";
177
183
  message: string;
184
+ ts?: string | undefined;
178
185
  }[];
179
186
  connections: {
180
187
  id: string;
@@ -190,6 +197,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
190
197
  errors: {
191
198
  level: "warning" | "fatal";
192
199
  message: string;
200
+ ts?: string | undefined;
193
201
  }[];
194
202
  pattern?: string | undefined;
195
203
  }[];
@@ -204,6 +212,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
204
212
  errors: {
205
213
  level: "warning" | "fatal";
206
214
  message: string;
215
+ ts?: string | undefined;
207
216
  }[];
208
217
  connections: {
209
218
  id: string;
@@ -219,6 +228,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
219
228
  errors: {
220
229
  level: "warning" | "fatal";
221
230
  message: string;
231
+ ts?: string | undefined;
222
232
  }[];
223
233
  pattern?: string | undefined;
224
234
  }[];
@@ -249,6 +259,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
249
259
  errors: {
250
260
  message: string;
251
261
  level: "warning" | "fatal";
262
+ ts?: string | undefined;
252
263
  }[];
253
264
  id: string;
254
265
  postgres_uri: string;
@@ -258,6 +269,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
258
269
  errors: {
259
270
  level: "warning" | "fatal";
260
271
  message: string;
272
+ ts?: string | undefined;
261
273
  }[];
262
274
  connections: {
263
275
  id: string;
@@ -273,6 +285,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
273
285
  errors: {
274
286
  level: "warning" | "fatal";
275
287
  message: string;
288
+ ts?: string | undefined;
276
289
  }[];
277
290
  pattern?: string | undefined;
278
291
  }[];
@@ -287,6 +300,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
287
300
  errors: {
288
301
  level: "warning" | "fatal";
289
302
  message: string;
303
+ ts?: string | undefined;
290
304
  }[];
291
305
  connections: {
292
306
  id: string;
@@ -302,6 +316,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
302
316
  errors: {
303
317
  level: "warning" | "fatal";
304
318
  message: string;
319
+ ts?: string | undefined;
305
320
  }[];
306
321
  pattern?: string | undefined;
307
322
  }[];
@@ -424,6 +439,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
424
439
  errors: {
425
440
  message: string;
426
441
  level: "warning" | "fatal";
442
+ ts?: string | undefined;
427
443
  }[];
428
444
  connections: {
429
445
  id: string;
@@ -434,6 +450,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
434
450
  errors: {
435
451
  message: string;
436
452
  level: "warning" | "fatal";
453
+ ts?: string | undefined;
437
454
  }[];
438
455
  name: string;
439
456
  schema: string;
@@ -456,6 +473,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
456
473
  errors: {
457
474
  message: string;
458
475
  level: "warning" | "fatal";
476
+ ts?: string | undefined;
459
477
  }[];
460
478
  connections: {
461
479
  id: string;
@@ -466,6 +484,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
466
484
  errors: {
467
485
  message: string;
468
486
  level: "warning" | "fatal";
487
+ ts?: string | undefined;
469
488
  }[];
470
489
  name: string;
471
490
  schema: string;
@@ -499,6 +518,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
499
518
  errors: {
500
519
  message: string;
501
520
  level: "warning" | "fatal";
521
+ ts?: string | undefined;
502
522
  }[];
503
523
  connections: {
504
524
  id: string;
@@ -509,6 +529,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
509
529
  errors: {
510
530
  message: string;
511
531
  level: "warning" | "fatal";
532
+ ts?: string | undefined;
512
533
  }[];
513
534
  name: string;
514
535
  schema: string;