@powersync/service-core 0.0.0-dev-20241007145127 → 0.0.0-dev-20241015084348

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 (90) hide show
  1. package/CHANGELOG.md +9 -5
  2. package/dist/api/diagnostics.js +167 -105
  3. package/dist/api/diagnostics.js.map +1 -1
  4. package/dist/entry/commands/compact-action.js +73 -9
  5. package/dist/entry/commands/compact-action.js.map +1 -1
  6. package/dist/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.d.ts +3 -0
  7. package/dist/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.js +31 -0
  8. package/dist/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.js.map +1 -0
  9. package/dist/replication/AbstractReplicationJob.d.ts +1 -1
  10. package/dist/replication/AbstractReplicationJob.js.map +1 -1
  11. package/dist/replication/AbstractReplicator.d.ts +2 -2
  12. package/dist/replication/AbstractReplicator.js +66 -3
  13. package/dist/replication/AbstractReplicator.js.map +1 -1
  14. package/dist/replication/ReplicationEngine.js.map +1 -1
  15. package/dist/replication/replication-index.d.ts +1 -1
  16. package/dist/replication/replication-index.js +1 -1
  17. package/dist/replication/replication-index.js.map +1 -1
  18. package/dist/routes/endpoints/checkpointing.js +5 -2
  19. package/dist/routes/endpoints/checkpointing.js.map +1 -1
  20. package/dist/runner/teardown.js +66 -4
  21. package/dist/runner/teardown.js.map +1 -1
  22. package/dist/storage/BucketStorage.d.ts +25 -7
  23. package/dist/storage/BucketStorage.js.map +1 -1
  24. package/dist/storage/MongoBucketStorage.d.ts +12 -5
  25. package/dist/storage/MongoBucketStorage.js +44 -23
  26. package/dist/storage/MongoBucketStorage.js.map +1 -1
  27. package/dist/storage/ReplicationEventPayload.d.ts +14 -0
  28. package/dist/storage/ReplicationEventPayload.js +2 -0
  29. package/dist/storage/ReplicationEventPayload.js.map +1 -0
  30. package/dist/storage/SourceTable.d.ts +8 -0
  31. package/dist/storage/SourceTable.js +9 -1
  32. package/dist/storage/SourceTable.js.map +1 -1
  33. package/dist/storage/StorageEngine.d.ts +10 -2
  34. package/dist/storage/StorageEngine.js +23 -3
  35. package/dist/storage/StorageEngine.js.map +1 -1
  36. package/dist/storage/StorageProvider.d.ts +9 -2
  37. package/dist/storage/mongo/MongoBucketBatch.d.ts +12 -4
  38. package/dist/storage/mongo/MongoBucketBatch.js +59 -21
  39. package/dist/storage/mongo/MongoBucketBatch.js.map +1 -1
  40. package/dist/storage/mongo/MongoStorageProvider.d.ts +1 -1
  41. package/dist/storage/mongo/MongoStorageProvider.js +3 -2
  42. package/dist/storage/mongo/MongoStorageProvider.js.map +1 -1
  43. package/dist/storage/mongo/MongoSyncBucketStorage.d.ts +3 -2
  44. package/dist/storage/mongo/MongoSyncBucketStorage.js +71 -10
  45. package/dist/storage/mongo/MongoSyncBucketStorage.js.map +1 -1
  46. package/dist/storage/mongo/MongoWriteCheckpointAPI.d.ts +18 -0
  47. package/dist/storage/mongo/MongoWriteCheckpointAPI.js +90 -0
  48. package/dist/storage/mongo/MongoWriteCheckpointAPI.js.map +1 -0
  49. package/dist/storage/mongo/db.d.ts +3 -2
  50. package/dist/storage/mongo/db.js +1 -0
  51. package/dist/storage/mongo/db.js.map +1 -1
  52. package/dist/storage/mongo/models.d.ts +7 -1
  53. package/dist/storage/storage-index.d.ts +2 -0
  54. package/dist/storage/storage-index.js +2 -0
  55. package/dist/storage/storage-index.js.map +1 -1
  56. package/dist/storage/write-checkpoint.d.ts +55 -0
  57. package/dist/storage/write-checkpoint.js +16 -0
  58. package/dist/storage/write-checkpoint.js.map +1 -0
  59. package/dist/util/config/compound-config-collector.js +2 -1
  60. package/dist/util/config/compound-config-collector.js.map +1 -1
  61. package/dist/util/config/types.d.ts +1 -0
  62. package/package.json +5 -5
  63. package/src/api/diagnostics.ts +1 -1
  64. package/src/entry/commands/compact-action.ts +4 -2
  65. package/src/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.ts +37 -0
  66. package/src/replication/AbstractReplicationJob.ts +2 -2
  67. package/src/replication/AbstractReplicator.ts +5 -4
  68. package/src/replication/ReplicationEngine.ts +1 -1
  69. package/src/replication/replication-index.ts +1 -1
  70. package/src/routes/endpoints/checkpointing.ts +5 -2
  71. package/src/runner/teardown.ts +3 -3
  72. package/src/storage/BucketStorage.ts +32 -9
  73. package/src/storage/MongoBucketStorage.ts +70 -29
  74. package/src/storage/ReplicationEventPayload.ts +16 -0
  75. package/src/storage/SourceTable.ts +10 -1
  76. package/src/storage/StorageEngine.ts +34 -5
  77. package/src/storage/StorageProvider.ts +10 -2
  78. package/src/storage/mongo/MongoBucketBatch.ts +82 -27
  79. package/src/storage/mongo/MongoStorageProvider.ts +4 -3
  80. package/src/storage/mongo/MongoSyncBucketStorage.ts +17 -15
  81. package/src/storage/mongo/MongoWriteCheckpointAPI.ts +136 -0
  82. package/src/storage/mongo/db.ts +4 -1
  83. package/src/storage/mongo/models.ts +8 -1
  84. package/src/storage/storage-index.ts +2 -0
  85. package/src/storage/write-checkpoint.ts +67 -0
  86. package/src/util/config/compound-config-collector.ts +2 -1
  87. package/src/util/config/types.ts +1 -0
  88. package/test/src/data_storage.test.ts +42 -10
  89. package/test/src/util.ts +1 -2
  90. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # @powersync/service-core
2
2
 
3
- ## 0.0.0-dev-20241007145127
3
+ ## 0.0.0-dev-20241015084348
4
4
 
5
5
  ### Minor Changes
6
6
 
7
+ - d2ece1b: Added ability to emit data replication events
7
8
  - d51921f: - Introduced modules to the powersync service architecture
8
9
  - Core functionality has been moved to "engine" classes. Modules can register additional functionality with these engines.
9
10
  - The sync API functionality used by the routes has been abstracted to an interface. API routes are now managed by the RouterEngine.
@@ -16,14 +17,17 @@
16
17
  - e4d19b2: Moved tag variable initialization in diagnostics route to ensure it is initialized before usage
17
18
  - 1fd50a5: Fix checksum cache edge case with compacting
18
19
  - aa4eb0a: Fix "JavaScript heap out of memory" on startup (slot health check)
20
+ - Updated dependencies [d2ece1b]
21
+ - Updated dependencies [d2ece1b]
19
22
  - Updated dependencies [9e78ff1]
23
+ - Updated dependencies [d2ece1b]
20
24
  - Updated dependencies [d51921f]
21
25
  - Updated dependencies [4ecaee2]
22
26
  - Updated dependencies [0e16938]
23
- - @powersync/service-sync-rules@0.0.0-dev-20241007145127
24
- - @powersync/lib-services-framework@0.0.0-dev-20241007145127
25
- - @powersync/service-types@0.0.0-dev-20241007145127
26
- - @powersync/service-rsocket-router@0.0.0-dev-20241007145127
27
+ - @powersync/lib-services-framework@0.0.0-dev-20241015084348
28
+ - @powersync/service-sync-rules@0.0.0-dev-20241015084348
29
+ - @powersync/service-rsocket-router@0.0.0-dev-20241015084348
30
+ - @powersync/service-types@0.0.0-dev-20241015084348
27
31
 
28
32
  ## 0.8.4
29
33
 
@@ -1,119 +1,181 @@
1
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
+ env.stack.push({ value: value, dispose: dispose, async: async });
17
+ }
18
+ else if (async) {
19
+ env.stack.push({ async: true });
20
+ }
21
+ return value;
22
+ };
23
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
+ return function (env) {
25
+ function fail(e) {
26
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
+ env.hasError = true;
28
+ }
29
+ var r, s = 0;
30
+ function next() {
31
+ while (r = env.stack.pop()) {
32
+ try {
33
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
+ if (r.dispose) {
35
+ var result = r.dispose.call(r.value);
36
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
+ }
38
+ else s |= 1;
39
+ }
40
+ catch (e) {
41
+ fail(e);
42
+ }
43
+ }
44
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
+ if (env.hasError) throw env.error;
46
+ }
47
+ return next();
48
+ };
49
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
+ var e = new Error(message);
51
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
+ });
1
53
  import { logger } from '@powersync/lib-services-framework';
2
54
  import { DEFAULT_TAG } from '@powersync/service-sync-rules';
3
55
  export const DEFAULT_DATASOURCE_ID = 'default';
4
56
  export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules, options) {
5
- if (sync_rules == null) {
6
- return undefined;
7
- }
8
- const include_content = options.include_content ?? false;
9
- const live_status = options.live_status ?? false;
10
- const check_connection = options.check_connection ?? false;
11
- let rules;
12
- let persisted;
57
+ const env_1 = { stack: [], error: void 0, hasError: false };
13
58
  try {
14
- persisted = sync_rules.parsed(apiHandler.getParseSyncRulesOptions());
15
- rules = persisted.sync_rules;
16
- }
17
- catch (e) {
59
+ if (sync_rules == null) {
60
+ return undefined;
61
+ }
62
+ const include_content = options.include_content ?? false;
63
+ const live_status = options.live_status ?? false;
64
+ const check_connection = options.check_connection ?? false;
65
+ let rules;
66
+ let persisted;
67
+ try {
68
+ persisted = sync_rules.parsed(apiHandler.getParseSyncRulesOptions());
69
+ rules = persisted.sync_rules;
70
+ }
71
+ catch (e) {
72
+ return {
73
+ content: include_content ? sync_rules.sync_rules_content : undefined,
74
+ connections: [],
75
+ errors: [{ level: 'fatal', message: e.message }]
76
+ };
77
+ }
78
+ const sourceConfig = await apiHandler.getSourceConfig();
79
+ // This method can run under some situations if no connection is configured yet.
80
+ // It will return a default tag in such a case. This default tag is not module specific.
81
+ const tag = sourceConfig.tag ?? DEFAULT_TAG;
82
+ const systemStorage = __addDisposableResource(env_1, live_status ? bucketStorage.getInstance(sync_rules) : undefined, false);
83
+ const status = await systemStorage?.getStatus();
84
+ let replication_lag_bytes = undefined;
85
+ let tables_flat = [];
86
+ if (check_connection) {
87
+ const source_table_patterns = rules.getSourceTables();
88
+ const resolved_tables = await apiHandler.getDebugTablesInfo(source_table_patterns, rules);
89
+ tables_flat = resolved_tables.flatMap((info) => {
90
+ if (info.table) {
91
+ return [info.table];
92
+ }
93
+ else if (info.tables) {
94
+ return info.tables;
95
+ }
96
+ else {
97
+ return [];
98
+ }
99
+ });
100
+ if (systemStorage) {
101
+ try {
102
+ replication_lag_bytes = await apiHandler.getReplicationLag(systemStorage.slot_name);
103
+ }
104
+ catch (e) {
105
+ // Ignore
106
+ logger.warn(`Unable to get replication lag`, e);
107
+ }
108
+ }
109
+ }
110
+ else {
111
+ const source_table_patterns = rules.getSourceTables();
112
+ tables_flat = source_table_patterns.map((pattern) => {
113
+ if (pattern.isWildcard) {
114
+ return {
115
+ schema: pattern.schema,
116
+ name: pattern.tablePrefix,
117
+ pattern: pattern.isWildcard ? pattern.tablePattern : undefined,
118
+ data_queries: false,
119
+ parameter_queries: false,
120
+ replication_id: [],
121
+ errors: [{ level: 'fatal', message: 'connection failed' }]
122
+ };
123
+ }
124
+ else {
125
+ const source = {
126
+ connectionTag: tag,
127
+ schema: pattern.schema,
128
+ table: pattern.tablePattern
129
+ };
130
+ const syncData = rules.tableSyncsData(source);
131
+ const syncParameters = rules.tableSyncsParameters(source);
132
+ return {
133
+ schema: pattern.schema,
134
+ name: pattern.name,
135
+ data_queries: syncData,
136
+ parameter_queries: syncParameters,
137
+ replication_id: [],
138
+ errors: [{ level: 'fatal', message: 'connection failed' }]
139
+ };
140
+ }
141
+ });
142
+ }
143
+ const errors = tables_flat.flatMap((info) => info.errors);
144
+ if (sync_rules.last_fatal_error) {
145
+ errors.push({ level: 'fatal', message: sync_rules.last_fatal_error });
146
+ }
147
+ errors.push(...rules.errors.map((e) => {
148
+ return {
149
+ level: e.type,
150
+ message: e.message
151
+ };
152
+ }));
18
153
  return {
19
154
  content: include_content ? sync_rules.sync_rules_content : undefined,
20
- connections: [],
21
- errors: [{ level: 'fatal', message: e.message }]
155
+ connections: [
156
+ {
157
+ id: sourceConfig.id ?? DEFAULT_DATASOURCE_ID,
158
+ tag: tag,
159
+ slot_name: sync_rules.slot_name,
160
+ initial_replication_done: status?.snapshot_done ?? false,
161
+ // TODO: Rename?
162
+ last_lsn: status?.checkpoint_lsn ?? undefined,
163
+ last_checkpoint_ts: sync_rules.last_checkpoint_ts?.toISOString(),
164
+ last_keepalive_ts: sync_rules.last_keepalive_ts?.toISOString(),
165
+ replication_lag_bytes: replication_lag_bytes,
166
+ tables: tables_flat
167
+ }
168
+ ],
169
+ errors: deduplicate(errors)
22
170
  };
23
171
  }
24
- const sourceConfig = await apiHandler.getSourceConfig();
25
- // This method can run under some situations if no connection is configured yet.
26
- // It will return a default tag in such a case. This default tag is not module specific.
27
- const tag = sourceConfig.tag ?? DEFAULT_TAG;
28
- const systemStorage = live_status ? bucketStorage.getInstance(sync_rules) : undefined;
29
- const status = await systemStorage?.getStatus();
30
- let replication_lag_bytes = undefined;
31
- let tables_flat = [];
32
- if (check_connection) {
33
- const source_table_patterns = rules.getSourceTables();
34
- const resolved_tables = await apiHandler.getDebugTablesInfo(source_table_patterns, rules);
35
- tables_flat = resolved_tables.flatMap((info) => {
36
- if (info.table) {
37
- return [info.table];
38
- }
39
- else if (info.tables) {
40
- return info.tables;
41
- }
42
- else {
43
- return [];
44
- }
45
- });
46
- if (systemStorage) {
47
- try {
48
- replication_lag_bytes = await apiHandler.getReplicationLag(systemStorage.slot_name);
49
- }
50
- catch (e) {
51
- // Ignore
52
- logger.warn(`Unable to get replication lag`, e);
53
- }
54
- }
172
+ catch (e_1) {
173
+ env_1.error = e_1;
174
+ env_1.hasError = true;
55
175
  }
56
- else {
57
- const source_table_patterns = rules.getSourceTables();
58
- tables_flat = source_table_patterns.map((pattern) => {
59
- if (pattern.isWildcard) {
60
- return {
61
- schema: pattern.schema,
62
- name: pattern.tablePrefix,
63
- pattern: pattern.isWildcard ? pattern.tablePattern : undefined,
64
- data_queries: false,
65
- parameter_queries: false,
66
- replication_id: [],
67
- errors: [{ level: 'fatal', message: 'connection failed' }]
68
- };
69
- }
70
- else {
71
- const source = {
72
- connectionTag: tag,
73
- schema: pattern.schema,
74
- table: pattern.tablePattern
75
- };
76
- const syncData = rules.tableSyncsData(source);
77
- const syncParameters = rules.tableSyncsParameters(source);
78
- return {
79
- schema: pattern.schema,
80
- name: pattern.name,
81
- data_queries: syncData,
82
- parameter_queries: syncParameters,
83
- replication_id: [],
84
- errors: [{ level: 'fatal', message: 'connection failed' }]
85
- };
86
- }
87
- });
176
+ finally {
177
+ __disposeResources(env_1);
88
178
  }
89
- const errors = tables_flat.flatMap((info) => info.errors);
90
- if (sync_rules.last_fatal_error) {
91
- errors.push({ level: 'fatal', message: sync_rules.last_fatal_error });
92
- }
93
- errors.push(...rules.errors.map((e) => {
94
- return {
95
- level: e.type,
96
- message: e.message
97
- };
98
- }));
99
- return {
100
- content: include_content ? sync_rules.sync_rules_content : undefined,
101
- connections: [
102
- {
103
- id: sourceConfig.id ?? DEFAULT_DATASOURCE_ID,
104
- tag: tag,
105
- slot_name: sync_rules.slot_name,
106
- initial_replication_done: status?.snapshot_done ?? false,
107
- // TODO: Rename?
108
- last_lsn: status?.checkpoint_lsn ?? undefined,
109
- last_checkpoint_ts: sync_rules.last_checkpoint_ts?.toISOString(),
110
- last_keepalive_ts: sync_rules.last_keepalive_ts?.toISOString(),
111
- replication_lag_bytes: replication_lag_bytes,
112
- tables: tables_flat
113
- }
114
- ],
115
- errors: deduplicate(errors)
116
- };
117
179
  }
118
180
  function deduplicate(errors) {
119
181
  let seen = new Set();
@@ -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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"}
@@ -1,3 +1,55 @@
1
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
+ env.stack.push({ value: value, dispose: dispose, async: async });
17
+ }
18
+ else if (async) {
19
+ env.stack.push({ async: true });
20
+ }
21
+ return value;
22
+ };
23
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
+ return function (env) {
25
+ function fail(e) {
26
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
+ env.hasError = true;
28
+ }
29
+ var r, s = 0;
30
+ function next() {
31
+ while (r = env.stack.pop()) {
32
+ try {
33
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
+ if (r.dispose) {
35
+ var result = r.dispose.call(r.value);
36
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
+ }
38
+ else s |= 1;
39
+ }
40
+ catch (e) {
41
+ fail(e);
42
+ }
43
+ }
44
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
+ if (env.hasError) throw env.error;
46
+ }
47
+ return next();
48
+ };
49
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
+ var e = new Error(message);
51
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
+ });
1
53
  import { logger } from '@powersync/lib-services-framework';
2
54
  import * as v8 from 'v8';
3
55
  import * as storage from '../../storage/storage-index.js';
@@ -28,16 +80,28 @@ export function registerCompactAction(program) {
28
80
  const client = psdb.client;
29
81
  await client.connect();
30
82
  try {
31
- const bucketStorage = new storage.MongoBucketStorage(psdb, { slot_name_prefix: configuration.slot_name_prefix });
32
- const active = await bucketStorage.getActiveSyncRulesContent();
33
- if (active == null) {
34
- logger.info('No active instance to compact');
35
- return;
83
+ const env_1 = { stack: [], error: void 0, hasError: false };
84
+ try {
85
+ const bucketStorage = new storage.MongoBucketStorage(psdb, {
86
+ slot_name_prefix: configuration.slot_name_prefix
87
+ });
88
+ const active = await bucketStorage.getActiveSyncRulesContent();
89
+ if (active == null) {
90
+ logger.info('No active instance to compact');
91
+ return;
92
+ }
93
+ const p = __addDisposableResource(env_1, bucketStorage.getInstance(active), false);
94
+ logger.info('Performing compaction...');
95
+ await p.compact({ memoryLimitMB: COMPACT_MEMORY_LIMIT_MB });
96
+ logger.info('Successfully compacted storage.');
97
+ }
98
+ catch (e_1) {
99
+ env_1.error = e_1;
100
+ env_1.hasError = true;
101
+ }
102
+ finally {
103
+ __disposeResources(env_1);
36
104
  }
37
- const p = bucketStorage.getInstance(active);
38
- logger.info('Performing compaction...');
39
- await p.compact({ memoryLimitMB: COMPACT_MEMORY_LIMIT_MB });
40
- logger.info('Successfully compacted storage.');
41
105
  }
42
106
  catch (e) {
43
107
  logger.error(`Failed to compact: ${e.toString()}`);
@@ -1 +1 @@
1
- {"version":3,"file":"compact-action.js","sourceRoot":"","sources":["../../../src/entry/commands/compact-action.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,OAAO,MAAM,gCAAgC,CAAC;AAC1D,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,YAAY,GAAG,SAAS,CAAC;AAE/B;;GAEG;AACH,MAAM,UAAU,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,eAAe,CAAC;AAE1D;;;;GAIG;AACH,MAAM,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AAE/E,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAErD,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAElC,OAAO,cAAc,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC5E,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,YAAY,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACpD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,aAAa,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,gBAAgB,EAAE,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACjH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,yBAAyB,EAAE,CAAC;YAC/D,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YACD,MAAM,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACxC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"compact-action.js","sourceRoot":"","sources":["../../../src/entry/commands/compact-action.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,OAAO,MAAM,gCAAgC,CAAC;AAC1D,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,YAAY,GAAG,SAAS,CAAC;AAE/B;;GAEG;AACH,MAAM,UAAU,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,eAAe,CAAC;AAE1D;;;;GAIG;AACH,MAAM,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AAE/E,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAErD,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAElC,OAAO,cAAc,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC5E,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,YAAY,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACpD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,aAAa,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,CAAC;;;gBACH,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE;oBACzD,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;iBACjD,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,yBAAyB,EAAE,CAAC;gBAC/D,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;oBAC7C,OAAO;gBACT,CAAC;gBACD,MAAM,CAAC,kCAAG,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,QAAA,CAAC;gBAC5C,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBACxC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC,CAAC;gBAC5D,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;;;;;;;;;SAChD;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import * as utils from '../../../util/util-index.js';
2
+ export declare const up: (context: utils.MigrationContext) => Promise<void>;
3
+ export declare const down: (context: utils.MigrationContext) => Promise<void>;
@@ -0,0 +1,31 @@
1
+ import * as storage from '../../../storage/storage-index.js';
2
+ import * as utils from '../../../util/util-index.js';
3
+ const INDEX_NAME = 'user_sync_rule_unique';
4
+ export const up = async (context) => {
5
+ const { runner_config } = context;
6
+ const config = await utils.loadConfig(runner_config);
7
+ const db = storage.createPowerSyncMongo(config.storage);
8
+ try {
9
+ await db.custom_write_checkpoints.createIndex({
10
+ user_id: 1,
11
+ sync_rules_id: 1
12
+ }, { name: INDEX_NAME, unique: true });
13
+ }
14
+ finally {
15
+ await db.client.close();
16
+ }
17
+ };
18
+ export const down = async (context) => {
19
+ const { runner_config } = context;
20
+ const config = await utils.loadConfig(runner_config);
21
+ const db = storage.createPowerSyncMongo(config.storage);
22
+ try {
23
+ if (await db.custom_write_checkpoints.indexExists(INDEX_NAME)) {
24
+ await db.custom_write_checkpoints.dropIndex(INDEX_NAME);
25
+ }
26
+ }
27
+ finally {
28
+ await db.client.close();
29
+ }
30
+ };
31
+ //# sourceMappingURL=1727099539247-custom-write-checkpoint-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1727099539247-custom-write-checkpoint-index.js","sourceRoot":"","sources":["../../../../src/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,mCAAmC,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,6BAA6B,CAAC;AAErD,MAAM,UAAU,GAAG,uBAAuB,CAAC;AAE3C,MAAM,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,OAA+B,EAAE,EAAE;IAC1D,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAExD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,wBAAwB,CAAC,WAAW,CAC3C;YACE,OAAO,EAAE,CAAC;YACV,aAAa,EAAE,CAAC;SACjB,EACD,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CACnC,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,OAA+B,EAAE,EAAE;IAC5D,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAErD,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAExD,IAAI,CAAC;QACH,IAAI,MAAM,EAAE,CAAC,wBAAwB,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9D,MAAM,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
+ import winston from 'winston';
1
2
  import * as storage from '../storage/storage-index.js';
2
3
  import { ErrorRateLimiter } from './ErrorRateLimiter.js';
3
- import winston from 'winston';
4
4
  export interface AbstractReplicationJobOptions {
5
5
  id: string;
6
6
  storage: storage.SyncRulesBucketStorage;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractReplicationJob.js","sourceRoot":"","sources":["../../src/replication/AbstractReplicationJob.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAUtE,MAAM,OAAgB,sBAAsB;IAK1C,YAAgC,OAAsC;QAAtC,YAAO,GAAP,OAAO,CAA+B;QAH5D,oBAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QACxC,yBAAoB,GAAyB,IAAI,CAAC;QAG1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,mBAAmB,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC;IAYD;;OAEG;IACI,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,EAAE;aACzC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;YACZ,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE;gBACtC,QAAQ,EAAE;oBACR,UAAU,EAAE,IAAI,CAAC,EAAE;iBACpB;aACF,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC;aACD,OAAO,CAAC,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE,6CAA6C,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1G,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,oBAAoB,CAAC;IAClC,CAAC;IAED,IAAW,EAAE;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,IAAc,IAAI;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAc,WAAW;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IAClC,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7C,CAAC;CACF"}
1
+ {"version":3,"file":"AbstractReplicationJob.js","sourceRoot":"","sources":["../../src/replication/AbstractReplicationJob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAYtE,MAAM,OAAgB,sBAAsB;IAK1C,YAAgC,OAAsC;QAAtC,YAAO,GAAP,OAAO,CAA+B;QAH5D,oBAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QACxC,yBAAoB,GAAyB,IAAI,CAAC;QAG1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,mBAAmB,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC;IAYD;;OAEG;IACI,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,EAAE;aACzC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;YACZ,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE;gBACtC,QAAQ,EAAE;oBACR,UAAU,EAAE,IAAI,CAAC,EAAE;iBACpB;aACF,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC;aACD,OAAO,CAAC,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE,6CAA6C,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1G,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,IAAI,CAAC,oBAAoB,CAAC;IAClC,CAAC;IAED,IAAW,EAAE;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,IAAc,IAAI;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAc,WAAW;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IAClC,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7C,CAAC;CACF"}
@@ -1,8 +1,8 @@
1
+ import winston from 'winston';
1
2
  import * as storage from '../storage/storage-index.js';
3
+ import { StorageEngine } from '../storage/storage-index.js';
2
4
  import { SyncRulesProvider } from '../util/config/sync-rules/sync-rules-provider.js';
3
- import winston from 'winston';
4
5
  import { AbstractReplicationJob } from './AbstractReplicationJob.js';
5
- import { StorageEngine } from '../storage/storage-index.js';
6
6
  import { ErrorRateLimiter } from './ErrorRateLimiter.js';
7
7
  export interface CreateJobOptions {
8
8
  lock: storage.ReplicationLock;
@@ -1,5 +1,57 @@
1
- import { hrtime } from 'node:process';
1
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
+ env.stack.push({ value: value, dispose: dispose, async: async });
17
+ }
18
+ else if (async) {
19
+ env.stack.push({ async: true });
20
+ }
21
+ return value;
22
+ };
23
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
+ return function (env) {
25
+ function fail(e) {
26
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
+ env.hasError = true;
28
+ }
29
+ var r, s = 0;
30
+ function next() {
31
+ while (r = env.stack.pop()) {
32
+ try {
33
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
+ if (r.dispose) {
35
+ var result = r.dispose.call(r.value);
36
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
+ }
38
+ else s |= 1;
39
+ }
40
+ catch (e) {
41
+ fail(e);
42
+ }
43
+ }
44
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
+ if (env.hasError) throw env.error;
46
+ }
47
+ return next();
48
+ };
49
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
+ var e = new Error(message);
51
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
+ });
2
53
  import { container, logger } from '@powersync/lib-services-framework';
54
+ import { hrtime } from 'node:process';
3
55
  // 5 minutes
4
56
  const PING_INTERVAL = 1000000000n * 300n;
5
57
  /**
@@ -151,6 +203,7 @@ export class AbstractReplicator {
151
203
  try {
152
204
  await job.stop();
153
205
  await this.terminateSyncRules(job.storage);
206
+ job.storage[Symbol.dispose]();
154
207
  }
155
208
  catch (e) {
156
209
  // This will be retried
@@ -161,8 +214,18 @@ export class AbstractReplicator {
161
214
  const stopped = await this.storage.getStoppedSyncRules();
162
215
  for (let syncRules of stopped) {
163
216
  try {
164
- const syncRuleStorage = this.storage.getInstance(syncRules);
165
- await this.terminateSyncRules(syncRuleStorage);
217
+ const env_1 = { stack: [], error: void 0, hasError: false };
218
+ try {
219
+ const syncRuleStorage = __addDisposableResource(env_1, this.storage.getInstance(syncRules), false);
220
+ await this.terminateSyncRules(syncRuleStorage);
221
+ }
222
+ catch (e_1) {
223
+ env_1.error = e_1;
224
+ env_1.hasError = true;
225
+ }
226
+ finally {
227
+ __disposeResources(env_1);
228
+ }
166
229
  }
167
230
  catch (e) {
168
231
  this.logger.warn(`Failed clean up replication config for sync rule: ${syncRules.id}`, e);
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractReplicator.js","sourceRoot":"","sources":["../../src/replication/AbstractReplicator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractReplicator.js","sourceRoot":"","sources":["../../src/replication/AbstractReplicator.ts"],"names":[],"mappings":"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"}