@powersync/service-core 0.13.0 → 0.15.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 (181) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/entry/commands/compact-action.js +14 -14
  3. package/dist/entry/commands/compact-action.js.map +1 -1
  4. package/dist/entry/commands/migrate-action.js +15 -4
  5. package/dist/entry/commands/migrate-action.js.map +1 -1
  6. package/dist/index.d.ts +1 -3
  7. package/dist/index.js +1 -3
  8. package/dist/index.js.map +1 -1
  9. package/dist/migrations/PowerSyncMigrationManager.d.ts +17 -0
  10. package/dist/migrations/PowerSyncMigrationManager.js +21 -0
  11. package/dist/migrations/PowerSyncMigrationManager.js.map +1 -0
  12. package/dist/migrations/ensure-automatic-migrations.d.ts +4 -0
  13. package/dist/migrations/ensure-automatic-migrations.js +14 -0
  14. package/dist/migrations/ensure-automatic-migrations.js.map +1 -0
  15. package/dist/migrations/migrations-index.d.ts +2 -3
  16. package/dist/migrations/migrations-index.js +2 -3
  17. package/dist/migrations/migrations-index.js.map +1 -1
  18. package/dist/routes/configure-fastify.d.ts +12 -12
  19. package/dist/routes/endpoints/admin.d.ts +24 -24
  20. package/dist/storage/BucketStorage.d.ts +51 -3
  21. package/dist/storage/BucketStorage.js +26 -0
  22. package/dist/storage/BucketStorage.js.map +1 -1
  23. package/dist/storage/bson.d.ts +24 -0
  24. package/dist/storage/bson.js +73 -0
  25. package/dist/storage/bson.js.map +1 -0
  26. package/dist/storage/storage-index.d.ts +3 -14
  27. package/dist/storage/storage-index.js +3 -14
  28. package/dist/storage/storage-index.js.map +1 -1
  29. package/dist/sync/sync.js +3 -1
  30. package/dist/sync/sync.js.map +1 -1
  31. package/dist/system/ServiceContext.d.ts +3 -0
  32. package/dist/system/ServiceContext.js +11 -3
  33. package/dist/system/ServiceContext.js.map +1 -1
  34. package/dist/util/config/types.d.ts +2 -2
  35. package/dist/util/utils.d.ts +17 -1
  36. package/dist/util/utils.js +49 -1
  37. package/dist/util/utils.js.map +1 -1
  38. package/package.json +7 -8
  39. package/src/entry/commands/compact-action.ts +19 -14
  40. package/src/entry/commands/migrate-action.ts +17 -4
  41. package/src/index.ts +1 -4
  42. package/src/migrations/PowerSyncMigrationManager.ts +42 -0
  43. package/src/migrations/ensure-automatic-migrations.ts +15 -0
  44. package/src/migrations/migrations-index.ts +2 -3
  45. package/src/storage/BucketStorage.ts +59 -3
  46. package/src/storage/bson.ts +78 -0
  47. package/src/storage/storage-index.ts +3 -15
  48. package/src/sync/sync.ts +3 -1
  49. package/src/system/ServiceContext.ts +17 -4
  50. package/src/util/config/types.ts +2 -2
  51. package/src/util/utils.ts +47 -1
  52. package/test/src/env.ts +0 -1
  53. package/tsconfig.tsbuildinfo +1 -1
  54. package/dist/db/db-index.d.ts +0 -1
  55. package/dist/db/db-index.js +0 -2
  56. package/dist/db/db-index.js.map +0 -1
  57. package/dist/db/mongo.d.ts +0 -35
  58. package/dist/db/mongo.js +0 -73
  59. package/dist/db/mongo.js.map +0 -1
  60. package/dist/locks/LockManager.d.ts +0 -10
  61. package/dist/locks/LockManager.js +0 -7
  62. package/dist/locks/LockManager.js.map +0 -1
  63. package/dist/locks/MongoLocks.d.ts +0 -36
  64. package/dist/locks/MongoLocks.js +0 -81
  65. package/dist/locks/MongoLocks.js.map +0 -1
  66. package/dist/locks/locks-index.d.ts +0 -2
  67. package/dist/locks/locks-index.js +0 -3
  68. package/dist/locks/locks-index.js.map +0 -1
  69. package/dist/migrations/db/migrations/1684951997326-init.d.ts +0 -3
  70. package/dist/migrations/db/migrations/1684951997326-init.js +0 -33
  71. package/dist/migrations/db/migrations/1684951997326-init.js.map +0 -1
  72. package/dist/migrations/db/migrations/1688556755264-initial-sync-rules.d.ts +0 -2
  73. package/dist/migrations/db/migrations/1688556755264-initial-sync-rules.js +0 -5
  74. package/dist/migrations/db/migrations/1688556755264-initial-sync-rules.js.map +0 -1
  75. package/dist/migrations/db/migrations/1702295701188-sync-rule-state.d.ts +0 -3
  76. package/dist/migrations/db/migrations/1702295701188-sync-rule-state.js +0 -56
  77. package/dist/migrations/db/migrations/1702295701188-sync-rule-state.js.map +0 -1
  78. package/dist/migrations/db/migrations/1711543888062-write-checkpoint-index.d.ts +0 -3
  79. package/dist/migrations/db/migrations/1711543888062-write-checkpoint-index.js +0 -29
  80. package/dist/migrations/db/migrations/1711543888062-write-checkpoint-index.js.map +0 -1
  81. package/dist/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.d.ts +0 -3
  82. package/dist/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.js +0 -31
  83. package/dist/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.js.map +0 -1
  84. package/dist/migrations/definitions.d.ts +0 -18
  85. package/dist/migrations/definitions.js +0 -6
  86. package/dist/migrations/definitions.js.map +0 -1
  87. package/dist/migrations/executor.d.ts +0 -16
  88. package/dist/migrations/executor.js +0 -64
  89. package/dist/migrations/executor.js.map +0 -1
  90. package/dist/migrations/migrations.d.ts +0 -18
  91. package/dist/migrations/migrations.js +0 -110
  92. package/dist/migrations/migrations.js.map +0 -1
  93. package/dist/migrations/store/migration-store.d.ts +0 -11
  94. package/dist/migrations/store/migration-store.js +0 -46
  95. package/dist/migrations/store/migration-store.js.map +0 -1
  96. package/dist/storage/MongoBucketStorage.d.ts +0 -48
  97. package/dist/storage/MongoBucketStorage.js +0 -427
  98. package/dist/storage/MongoBucketStorage.js.map +0 -1
  99. package/dist/storage/mongo/MongoBucketBatch.d.ts +0 -74
  100. package/dist/storage/mongo/MongoBucketBatch.js +0 -683
  101. package/dist/storage/mongo/MongoBucketBatch.js.map +0 -1
  102. package/dist/storage/mongo/MongoCompactor.d.ts +0 -40
  103. package/dist/storage/mongo/MongoCompactor.js +0 -310
  104. package/dist/storage/mongo/MongoCompactor.js.map +0 -1
  105. package/dist/storage/mongo/MongoIdSequence.d.ts +0 -12
  106. package/dist/storage/mongo/MongoIdSequence.js +0 -21
  107. package/dist/storage/mongo/MongoIdSequence.js.map +0 -1
  108. package/dist/storage/mongo/MongoPersistedSyncRules.d.ts +0 -9
  109. package/dist/storage/mongo/MongoPersistedSyncRules.js +0 -9
  110. package/dist/storage/mongo/MongoPersistedSyncRules.js.map +0 -1
  111. package/dist/storage/mongo/MongoPersistedSyncRulesContent.d.ts +0 -20
  112. package/dist/storage/mongo/MongoPersistedSyncRulesContent.js +0 -26
  113. package/dist/storage/mongo/MongoPersistedSyncRulesContent.js.map +0 -1
  114. package/dist/storage/mongo/MongoStorageProvider.d.ts +0 -5
  115. package/dist/storage/mongo/MongoStorageProvider.js +0 -26
  116. package/dist/storage/mongo/MongoStorageProvider.js.map +0 -1
  117. package/dist/storage/mongo/MongoSyncBucketStorage.d.ts +0 -38
  118. package/dist/storage/mongo/MongoSyncBucketStorage.js +0 -534
  119. package/dist/storage/mongo/MongoSyncBucketStorage.js.map +0 -1
  120. package/dist/storage/mongo/MongoSyncRulesLock.d.ts +0 -16
  121. package/dist/storage/mongo/MongoSyncRulesLock.js +0 -65
  122. package/dist/storage/mongo/MongoSyncRulesLock.js.map +0 -1
  123. package/dist/storage/mongo/MongoWriteCheckpointAPI.d.ts +0 -20
  124. package/dist/storage/mongo/MongoWriteCheckpointAPI.js +0 -104
  125. package/dist/storage/mongo/MongoWriteCheckpointAPI.js.map +0 -1
  126. package/dist/storage/mongo/OperationBatch.d.ts +0 -35
  127. package/dist/storage/mongo/OperationBatch.js +0 -119
  128. package/dist/storage/mongo/OperationBatch.js.map +0 -1
  129. package/dist/storage/mongo/PersistedBatch.d.ts +0 -46
  130. package/dist/storage/mongo/PersistedBatch.js +0 -223
  131. package/dist/storage/mongo/PersistedBatch.js.map +0 -1
  132. package/dist/storage/mongo/config.d.ts +0 -19
  133. package/dist/storage/mongo/config.js +0 -26
  134. package/dist/storage/mongo/config.js.map +0 -1
  135. package/dist/storage/mongo/db.d.ts +0 -36
  136. package/dist/storage/mongo/db.js +0 -47
  137. package/dist/storage/mongo/db.js.map +0 -1
  138. package/dist/storage/mongo/models.d.ts +0 -163
  139. package/dist/storage/mongo/models.js +0 -27
  140. package/dist/storage/mongo/models.js.map +0 -1
  141. package/dist/storage/mongo/util.d.ts +0 -54
  142. package/dist/storage/mongo/util.js +0 -190
  143. package/dist/storage/mongo/util.js.map +0 -1
  144. package/src/db/db-index.ts +0 -1
  145. package/src/db/mongo.ts +0 -81
  146. package/src/locks/LockManager.ts +0 -16
  147. package/src/locks/MongoLocks.ts +0 -142
  148. package/src/locks/locks-index.ts +0 -2
  149. package/src/migrations/db/migrations/1684951997326-init.ts +0 -38
  150. package/src/migrations/db/migrations/1688556755264-initial-sync-rules.ts +0 -5
  151. package/src/migrations/db/migrations/1702295701188-sync-rule-state.ts +0 -102
  152. package/src/migrations/db/migrations/1711543888062-write-checkpoint-index.ts +0 -34
  153. package/src/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.ts +0 -37
  154. package/src/migrations/definitions.ts +0 -21
  155. package/src/migrations/executor.ts +0 -87
  156. package/src/migrations/migrations.ts +0 -142
  157. package/src/migrations/store/migration-store.ts +0 -63
  158. package/src/storage/MongoBucketStorage.ts +0 -541
  159. package/src/storage/mongo/MongoBucketBatch.ts +0 -900
  160. package/src/storage/mongo/MongoCompactor.ts +0 -393
  161. package/src/storage/mongo/MongoIdSequence.ts +0 -24
  162. package/src/storage/mongo/MongoPersistedSyncRules.ts +0 -16
  163. package/src/storage/mongo/MongoPersistedSyncRulesContent.ts +0 -50
  164. package/src/storage/mongo/MongoStorageProvider.ts +0 -31
  165. package/src/storage/mongo/MongoSyncBucketStorage.ts +0 -640
  166. package/src/storage/mongo/MongoSyncRulesLock.ts +0 -85
  167. package/src/storage/mongo/MongoWriteCheckpointAPI.ts +0 -154
  168. package/src/storage/mongo/OperationBatch.ts +0 -131
  169. package/src/storage/mongo/PersistedBatch.ts +0 -285
  170. package/src/storage/mongo/config.ts +0 -40
  171. package/src/storage/mongo/db.ts +0 -88
  172. package/src/storage/mongo/models.ts +0 -187
  173. package/src/storage/mongo/util.ts +0 -203
  174. package/test/src/__snapshots__/sync.test.ts.snap +0 -332
  175. package/test/src/bucket_validation.test.ts +0 -143
  176. package/test/src/bucket_validation.ts +0 -60
  177. package/test/src/compacting.test.ts +0 -295
  178. package/test/src/data_storage.test.ts +0 -1569
  179. package/test/src/stream_utils.ts +0 -42
  180. package/test/src/sync.test.ts +0 -511
  181. package/test/src/util.ts +0 -150
@@ -1 +0,0 @@
1
- {"version":3,"file":"MongoBucketBatch.js","sourceRoot":"","sources":["../../../src/storage/mongo/MongoBucketBatch.ts"],"names":[],"mappings":"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"}
@@ -1,40 +0,0 @@
1
- import { PowerSyncMongo } from './db.js';
2
- import { CompactOptions } from '../BucketStorage.js';
3
- /**
4
- * Additional options, primarily for testing.
5
- */
6
- export interface MongoCompactOptions extends CompactOptions {
7
- /** Minimum of 2 */
8
- clearBatchLimit?: number;
9
- /** Minimum of 1 */
10
- moveBatchLimit?: number;
11
- /** Minimum of 1 */
12
- moveBatchQueryLimit?: number;
13
- }
14
- export declare class MongoCompactor {
15
- private db;
16
- private group_id;
17
- private updates;
18
- private idLimitBytes;
19
- private moveBatchLimit;
20
- private moveBatchQueryLimit;
21
- private clearBatchLimit;
22
- private maxOpId;
23
- private buckets;
24
- constructor(db: PowerSyncMongo, group_id: number, options?: MongoCompactOptions);
25
- /**
26
- * Compact buckets by converting operations into MOVE and/or CLEAR operations.
27
- *
28
- * See /docs/compacting-operations.md for details.
29
- */
30
- compact(): Promise<void>;
31
- compactInternal(bucket: string | undefined): Promise<void>;
32
- private flush;
33
- /**
34
- * Perform a CLEAR compact for a bucket.
35
- *
36
- * @param bucket bucket name
37
- * @param op op_id of the last non-PUT operation, which will be converted to CLEAR.
38
- */
39
- private clearBucket;
40
- }
@@ -1,310 +0,0 @@
1
- import { logger } from '@powersync/lib-services-framework';
2
- import { MaxKey, MinKey } from 'mongodb';
3
- import { addChecksums } from '../../util/utils.js';
4
- import { cacheKey } from './OperationBatch.js';
5
- import { safeBulkWrite } from './util.js';
6
- const DEFAULT_CLEAR_BATCH_LIMIT = 5000;
7
- const DEFAULT_MOVE_BATCH_LIMIT = 2000;
8
- const DEFAULT_MOVE_BATCH_QUERY_LIMIT = 10000;
9
- /** This default is primarily for tests. */
10
- const DEFAULT_MEMORY_LIMIT_MB = 64;
11
- export class MongoCompactor {
12
- constructor(db, group_id, options) {
13
- this.db = db;
14
- this.group_id = group_id;
15
- this.updates = [];
16
- this.idLimitBytes = (options?.memoryLimitMB ?? DEFAULT_MEMORY_LIMIT_MB) * 1024 * 1024;
17
- this.moveBatchLimit = options?.moveBatchLimit ?? DEFAULT_MOVE_BATCH_LIMIT;
18
- this.moveBatchQueryLimit = options?.moveBatchQueryLimit ?? DEFAULT_MOVE_BATCH_QUERY_LIMIT;
19
- this.clearBatchLimit = options?.clearBatchLimit ?? DEFAULT_CLEAR_BATCH_LIMIT;
20
- this.maxOpId = options?.maxOpId;
21
- this.buckets = options?.compactBuckets;
22
- }
23
- /**
24
- * Compact buckets by converting operations into MOVE and/or CLEAR operations.
25
- *
26
- * See /docs/compacting-operations.md for details.
27
- */
28
- async compact() {
29
- if (this.buckets) {
30
- for (let bucket of this.buckets) {
31
- // We can make this more efficient later on by iterating
32
- // through the buckets in a single query.
33
- // That makes batching more tricky, so we leave for later.
34
- await this.compactInternal(bucket);
35
- }
36
- }
37
- else {
38
- await this.compactInternal(undefined);
39
- }
40
- }
41
- async compactInternal(bucket) {
42
- const idLimitBytes = this.idLimitBytes;
43
- let currentState = null;
44
- let bucketLower;
45
- let bucketUpper;
46
- if (bucket == null) {
47
- bucketLower = new MinKey();
48
- bucketUpper = new MaxKey();
49
- }
50
- else if (bucket.includes('[')) {
51
- // Exact bucket name
52
- bucketLower = bucket;
53
- bucketUpper = bucket;
54
- }
55
- else {
56
- // Bucket definition name
57
- bucketLower = `${bucket}[`;
58
- bucketUpper = `${bucket}[\uFFFF`;
59
- }
60
- // Constant lower bound
61
- const lowerBound = {
62
- g: this.group_id,
63
- b: bucketLower,
64
- o: new MinKey()
65
- };
66
- // Upper bound is adjusted for each batch
67
- let upperBound = {
68
- g: this.group_id,
69
- b: bucketUpper,
70
- o: new MaxKey()
71
- };
72
- while (true) {
73
- // Query one batch at a time, to avoid cursor timeouts
74
- const batch = await this.db.bucket_data
75
- .find({
76
- _id: {
77
- $gte: lowerBound,
78
- $lt: upperBound
79
- }
80
- }, {
81
- projection: {
82
- _id: 1,
83
- op: 1,
84
- table: 1,
85
- row_id: 1,
86
- source_table: 1,
87
- source_key: 1
88
- },
89
- limit: this.moveBatchQueryLimit,
90
- sort: { _id: -1 },
91
- singleBatch: true
92
- })
93
- .toArray();
94
- if (batch.length == 0) {
95
- // We've reached the end
96
- break;
97
- }
98
- // Set upperBound for the next batch
99
- upperBound = batch[batch.length - 1]._id;
100
- for (let doc of batch) {
101
- if (currentState == null || doc._id.b != currentState.bucket) {
102
- if (currentState != null && currentState.lastNotPut != null && currentState.opsSincePut >= 1) {
103
- // Important to flush before clearBucket()
104
- await this.flush();
105
- logger.info(`Inserting CLEAR at ${this.group_id}:${currentState.bucket}:${currentState.lastNotPut} to remove ${currentState.opsSincePut} operations`);
106
- const bucket = currentState.bucket;
107
- const clearOp = currentState.lastNotPut;
108
- // Free memory before clearing bucket
109
- currentState = null;
110
- await this.clearBucket(bucket, clearOp);
111
- }
112
- currentState = {
113
- bucket: doc._id.b,
114
- seen: new Map(),
115
- trackingSize: 0,
116
- lastNotPut: null,
117
- opsSincePut: 0
118
- };
119
- }
120
- if (this.maxOpId != null && doc._id.o > this.maxOpId) {
121
- continue;
122
- }
123
- let isPersistentPut = doc.op == 'PUT';
124
- if (doc.op == 'REMOVE' || doc.op == 'PUT') {
125
- const key = `${doc.table}/${doc.row_id}/${cacheKey(doc.source_table, doc.source_key)}`;
126
- const targetOp = currentState.seen.get(key);
127
- if (targetOp) {
128
- // Will convert to MOVE, so don't count as PUT
129
- isPersistentPut = false;
130
- this.updates.push({
131
- updateOne: {
132
- filter: {
133
- _id: doc._id
134
- },
135
- update: {
136
- $set: {
137
- op: 'MOVE',
138
- target_op: targetOp
139
- },
140
- $unset: {
141
- source_table: 1,
142
- source_key: 1,
143
- table: 1,
144
- row_id: 1,
145
- data: 1
146
- }
147
- }
148
- }
149
- });
150
- }
151
- else {
152
- if (currentState.trackingSize >= idLimitBytes) {
153
- // Reached memory limit.
154
- // Keep the highest seen values in this case.
155
- }
156
- else {
157
- // flatstr reduces the memory usage by flattening the string
158
- currentState.seen.set(flatstr(key), doc._id.o);
159
- // length + 16 for the string
160
- // 24 for the bigint
161
- // 50 for map overhead
162
- // 50 for additional overhead
163
- currentState.trackingSize += key.length + 140;
164
- }
165
- }
166
- }
167
- if (isPersistentPut) {
168
- currentState.lastNotPut = null;
169
- currentState.opsSincePut = 0;
170
- }
171
- else if (doc.op != 'CLEAR') {
172
- if (currentState.lastNotPut == null) {
173
- currentState.lastNotPut = doc._id.o;
174
- }
175
- currentState.opsSincePut += 1;
176
- }
177
- if (this.updates.length >= this.moveBatchLimit) {
178
- await this.flush();
179
- }
180
- }
181
- }
182
- await this.flush();
183
- currentState?.seen.clear();
184
- if (currentState?.lastNotPut != null && currentState?.opsSincePut > 1) {
185
- logger.info(`Inserting CLEAR at ${this.group_id}:${currentState.bucket}:${currentState.lastNotPut} to remove ${currentState.opsSincePut} operations`);
186
- const bucket = currentState.bucket;
187
- const clearOp = currentState.lastNotPut;
188
- // Free memory before clearing bucket
189
- currentState = null;
190
- await this.clearBucket(bucket, clearOp);
191
- }
192
- }
193
- async flush() {
194
- if (this.updates.length > 0) {
195
- logger.info(`Compacting ${this.updates.length} ops`);
196
- await safeBulkWrite(this.db.bucket_data, this.updates, {
197
- // Order is not important.
198
- // Since checksums are not affected, these operations can happen in any order,
199
- // and it's fine if the operations are partially applied.
200
- // Each individual operation is atomic.
201
- ordered: false
202
- });
203
- this.updates = [];
204
- }
205
- }
206
- /**
207
- * Perform a CLEAR compact for a bucket.
208
- *
209
- * @param bucket bucket name
210
- * @param op op_id of the last non-PUT operation, which will be converted to CLEAR.
211
- */
212
- async clearBucket(bucket, op) {
213
- const opFilter = {
214
- _id: {
215
- $gte: {
216
- g: this.group_id,
217
- b: bucket,
218
- o: new MinKey()
219
- },
220
- $lte: {
221
- g: this.group_id,
222
- b: bucket,
223
- o: op
224
- }
225
- }
226
- };
227
- const session = this.db.client.startSession();
228
- try {
229
- let done = false;
230
- while (!done) {
231
- // Do the CLEAR operation in batches, with each batch a separate transaction.
232
- // The state after each batch is fully consistent.
233
- // We need a transaction per batch to make sure checksums stay consistent.
234
- await session.withTransaction(async () => {
235
- const query = this.db.bucket_data.find(opFilter, {
236
- session,
237
- sort: { _id: 1 },
238
- projection: {
239
- _id: 1,
240
- op: 1,
241
- checksum: 1,
242
- target_op: 1
243
- },
244
- limit: this.clearBatchLimit
245
- });
246
- let checksum = 0;
247
- let lastOpId = null;
248
- let targetOp = null;
249
- let gotAnOp = false;
250
- for await (let op of query.stream()) {
251
- if (op.op == 'MOVE' || op.op == 'REMOVE' || op.op == 'CLEAR') {
252
- checksum = addChecksums(checksum, op.checksum);
253
- lastOpId = op._id;
254
- if (op.op != 'CLEAR') {
255
- gotAnOp = true;
256
- }
257
- if (op.target_op != null) {
258
- if (targetOp == null || op.target_op > targetOp) {
259
- targetOp = op.target_op;
260
- }
261
- }
262
- }
263
- else {
264
- throw new Error(`Unexpected ${op.op} operation at ${op._id.g}:${op._id.b}:${op._id.o}`);
265
- }
266
- }
267
- if (!gotAnOp) {
268
- done = true;
269
- return;
270
- }
271
- logger.info(`Flushing CLEAR at ${lastOpId?.o}`);
272
- await this.db.bucket_data.deleteMany({
273
- _id: {
274
- $gte: {
275
- g: this.group_id,
276
- b: bucket,
277
- o: new MinKey()
278
- },
279
- $lte: lastOpId
280
- }
281
- }, { session });
282
- await this.db.bucket_data.insertOne({
283
- _id: lastOpId,
284
- op: 'CLEAR',
285
- checksum: checksum,
286
- data: null,
287
- target_op: targetOp
288
- }, { session });
289
- }, {
290
- writeConcern: { w: 'majority' },
291
- readConcern: { level: 'snapshot' }
292
- });
293
- }
294
- }
295
- finally {
296
- await session.endSession();
297
- }
298
- }
299
- }
300
- /**
301
- * Flattens string to reduce memory usage (around 320 bytes -> 120 bytes),
302
- * at the cost of some upfront CPU usage.
303
- *
304
- * From: https://github.com/davidmarkclements/flatstr/issues/8
305
- */
306
- function flatstr(s) {
307
- s.match(/\n/g);
308
- return s;
309
- }
310
- //# sourceMappingURL=MongoCompactor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MongoCompactor.js","sourceRoot":"","sources":["../../../src/storage/mongo/MongoCompactor.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Manages op_id or similar sequence in memory.
3
- *
4
- * This is typically used within a transaction, with the last value persisted
5
- * at the end of the transaction.
6
- */
7
- export declare class MongoIdSequence {
8
- private _last;
9
- constructor(last: bigint);
10
- next(): bigint;
11
- last(): bigint;
12
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * Manages op_id or similar sequence in memory.
3
- *
4
- * This is typically used within a transaction, with the last value persisted
5
- * at the end of the transaction.
6
- */
7
- export class MongoIdSequence {
8
- constructor(last) {
9
- if (typeof last != 'bigint') {
10
- throw new Error(`BigInt required, got ${last} ${typeof last}`);
11
- }
12
- this._last = last;
13
- }
14
- next() {
15
- return ++this._last;
16
- }
17
- last() {
18
- return this._last;
19
- }
20
- }
21
- //# sourceMappingURL=MongoIdSequence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MongoIdSequence.js","sourceRoot":"","sources":["../../../src/storage/mongo/MongoIdSequence.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IAG1B,YAAY,IAAY;QACtB,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,IAAI;QACF,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
@@ -1,9 +0,0 @@
1
- import { SqlSyncRules } from '@powersync/service-sync-rules';
2
- import { PersistedSyncRules } from '../BucketStorage.js';
3
- export declare class MongoPersistedSyncRules implements PersistedSyncRules {
4
- readonly id: number;
5
- readonly sync_rules: SqlSyncRules;
6
- readonly checkpoint_lsn: string | null;
7
- readonly slot_name: string;
8
- constructor(id: number, sync_rules: SqlSyncRules, checkpoint_lsn: string | null, slot_name: string | null);
9
- }
@@ -1,9 +0,0 @@
1
- export class MongoPersistedSyncRules {
2
- constructor(id, sync_rules, checkpoint_lsn, slot_name) {
3
- this.id = id;
4
- this.sync_rules = sync_rules;
5
- this.checkpoint_lsn = checkpoint_lsn;
6
- this.slot_name = slot_name ?? `powersync_${id}`;
7
- }
8
- }
9
- //# sourceMappingURL=MongoPersistedSyncRules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MongoPersistedSyncRules.js","sourceRoot":"","sources":["../../../src/storage/mongo/MongoPersistedSyncRules.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,uBAAuB;IAGlC,YACkB,EAAU,EACV,UAAwB,EACxB,cAA6B,EAC7C,SAAwB;QAHR,OAAE,GAAF,EAAE,CAAQ;QACV,eAAU,GAAV,UAAU,CAAc;QACxB,mBAAc,GAAd,cAAc,CAAe;QAG7C,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,aAAa,EAAE,EAAE,CAAC;IAClD,CAAC;CACF"}
@@ -1,20 +0,0 @@
1
- import * as mongo from 'mongodb';
2
- import { ParseSyncRulesOptions, PersistedSyncRulesContent } from '../BucketStorage.js';
3
- import { MongoPersistedSyncRules } from './MongoPersistedSyncRules.js';
4
- import { MongoSyncRulesLock } from './MongoSyncRulesLock.js';
5
- import { PowerSyncMongo } from './db.js';
6
- import { SyncRuleDocument } from './models.js';
7
- export declare class MongoPersistedSyncRulesContent implements PersistedSyncRulesContent {
8
- private db;
9
- readonly slot_name: string;
10
- readonly id: number;
11
- readonly sync_rules_content: string;
12
- readonly last_checkpoint_lsn: string | null;
13
- readonly last_fatal_error: string | null;
14
- readonly last_keepalive_ts: Date | null;
15
- readonly last_checkpoint_ts: Date | null;
16
- current_lock: MongoSyncRulesLock | null;
17
- constructor(db: PowerSyncMongo, doc: mongo.WithId<SyncRuleDocument>);
18
- parsed(options: ParseSyncRulesOptions): MongoPersistedSyncRules;
19
- lock(): Promise<MongoSyncRulesLock>;
20
- }
@@ -1,26 +0,0 @@
1
- import { SqlSyncRules } from '@powersync/service-sync-rules';
2
- import { MongoPersistedSyncRules } from './MongoPersistedSyncRules.js';
3
- import { MongoSyncRulesLock } from './MongoSyncRulesLock.js';
4
- export class MongoPersistedSyncRulesContent {
5
- constructor(db, doc) {
6
- this.db = db;
7
- this.current_lock = null;
8
- this.id = doc._id;
9
- this.sync_rules_content = doc.content;
10
- this.last_checkpoint_lsn = doc.last_checkpoint_lsn;
11
- // Handle legacy values
12
- this.slot_name = doc.slot_name ?? `powersync_${this.id}`;
13
- this.last_fatal_error = doc.last_fatal_error;
14
- this.last_checkpoint_ts = doc.last_checkpoint_ts;
15
- this.last_keepalive_ts = doc.last_keepalive_ts;
16
- }
17
- parsed(options) {
18
- return new MongoPersistedSyncRules(this.id, SqlSyncRules.fromYaml(this.sync_rules_content, options), this.last_checkpoint_lsn, this.slot_name);
19
- }
20
- async lock() {
21
- const lock = await MongoSyncRulesLock.createLock(this.db, this);
22
- this.current_lock = lock;
23
- return lock;
24
- }
25
- }
26
- //# sourceMappingURL=MongoPersistedSyncRulesContent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MongoPersistedSyncRulesContent.js","sourceRoot":"","sources":["../../../src/storage/mongo/MongoPersistedSyncRulesContent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAI7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI7D,MAAM,OAAO,8BAA8B;IAYzC,YACU,EAAkB,EAC1B,GAAmC;QAD3B,OAAE,GAAF,EAAE,CAAgB;QAHrB,iBAAY,GAA8B,IAAI,CAAC;QAMpD,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC;QAClB,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,mBAAmB,CAAC;QACnD,uBAAuB;QACvB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,aAAa,IAAI,CAAC,EAAE,EAAE,CAAC;QACzD,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,CAAC;QAC7C,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC;QACjD,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,OAA8B;QACnC,OAAO,IAAI,uBAAuB,CAChC,IAAI,CAAC,EAAE,EACP,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,EACvD,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -1,5 +0,0 @@
1
- import { ActiveStorage, BucketStorageProvider, GetStorageOptions } from '../StorageProvider.js';
2
- export declare class MongoStorageProvider implements BucketStorageProvider {
3
- get type(): string;
4
- getStorage(options: GetStorageOptions): Promise<ActiveStorage>;
5
- }
@@ -1,26 +0,0 @@
1
- import { logger } from '@powersync/lib-services-framework';
2
- import * as db from '../../db/db-index.js';
3
- import { MongoBucketStorage } from '../MongoBucketStorage.js';
4
- import { PowerSyncMongo } from './db.js';
5
- export class MongoStorageProvider {
6
- get type() {
7
- return 'mongodb';
8
- }
9
- async getStorage(options) {
10
- const { resolvedConfig } = options;
11
- const client = db.mongo.createMongoClient(resolvedConfig.storage);
12
- const database = new PowerSyncMongo(client, { database: resolvedConfig.storage.database });
13
- return {
14
- storage: new MongoBucketStorage(database, {
15
- // TODO currently need the entire resolved config due to this
16
- slot_name_prefix: resolvedConfig.slot_name_prefix
17
- }),
18
- shutDown: () => client.close(),
19
- tearDown: () => {
20
- logger.info(`Tearing down storage: ${database.db.namespace}...`);
21
- return database.db.dropDatabase();
22
- }
23
- };
24
- }
25
- }
26
- //# sourceMappingURL=MongoStorageProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MongoStorageProvider.js","sourceRoot":"","sources":["../../../src/storage/mongo/MongoStorageProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,OAAO,oBAAoB;IAC/B,IAAI,IAAI;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAA0B;QACzC,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;QAEnC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAElE,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE3F,OAAO;YACL,OAAO,EAAE,IAAI,kBAAkB,CAAC,QAAQ,EAAE;gBACxC,6DAA6D;gBAC7D,gBAAgB,EAAE,cAAc,CAAC,gBAAgB;aAClD,CAAC;YACF,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;YAC9B,QAAQ,EAAE,GAAG,EAAE;gBACb,MAAM,CAAC,IAAI,CAAC,yBAAyB,QAAQ,CAAC,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC;gBACjE,OAAO,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;YACpC,CAAC;SACsB,CAAC;IAC5B,CAAC;CACF"}
@@ -1,38 +0,0 @@
1
- import { SqliteJsonRow, SqliteJsonValue, SqlSyncRules } from '@powersync/service-sync-rules';
2
- import { DisposableObserver } from '@powersync/lib-services-framework';
3
- import * as util from '../../util/util-index.js';
4
- import { BucketDataBatchOptions, BucketStorageBatch, CompactOptions, FlushedResult, ParseSyncRulesOptions, PersistedSyncRulesContent, ReplicationCheckpoint, ResolveTableOptions, ResolveTableResult, StartBatchOptions, SyncBucketDataBatch, SyncRulesBucketStorage, SyncRulesBucketStorageListener, SyncRuleStatus, TerminateOptions } from '../BucketStorage.js';
5
- import { MongoBucketStorage } from '../MongoBucketStorage.js';
6
- import { BatchedCustomWriteCheckpointOptions, ManagedWriteCheckpointOptions, SyncStorageLastWriteCheckpointFilters, WriteCheckpointMode } from '../WriteCheckpointAPI.js';
7
- export declare class MongoSyncBucketStorage extends DisposableObserver<SyncRulesBucketStorageListener> implements SyncRulesBucketStorage {
8
- readonly factory: MongoBucketStorage;
9
- readonly group_id: number;
10
- private readonly sync_rules;
11
- readonly slot_name: string;
12
- private readonly db;
13
- private checksumCache;
14
- private parsedSyncRulesCache;
15
- private writeCheckpointAPI;
16
- constructor(factory: MongoBucketStorage, group_id: number, sync_rules: PersistedSyncRulesContent, slot_name: string, writeCheckpointMode?: WriteCheckpointMode);
17
- get writeCheckpointMode(): WriteCheckpointMode;
18
- setWriteCheckpointMode(mode: WriteCheckpointMode): void;
19
- batchCreateCustomWriteCheckpoints(checkpoints: BatchedCustomWriteCheckpointOptions[]): Promise<void>;
20
- createCustomWriteCheckpoint(checkpoint: BatchedCustomWriteCheckpointOptions): Promise<bigint>;
21
- createManagedWriteCheckpoint(checkpoint: ManagedWriteCheckpointOptions): Promise<bigint>;
22
- lastWriteCheckpoint(filters: SyncStorageLastWriteCheckpointFilters): Promise<bigint | null>;
23
- getParsedSyncRules(options: ParseSyncRulesOptions): SqlSyncRules;
24
- getCheckpoint(): Promise<ReplicationCheckpoint>;
25
- startBatch(options: StartBatchOptions, callback: (batch: BucketStorageBatch) => Promise<void>): Promise<FlushedResult | null>;
26
- resolveTable(options: ResolveTableOptions): Promise<ResolveTableResult>;
27
- getParameterSets(checkpoint: util.OpId, lookups: SqliteJsonValue[][]): Promise<SqliteJsonRow[]>;
28
- getBucketDataBatch(checkpoint: util.OpId, dataBuckets: Map<string, string>, options?: BucketDataBatchOptions): AsyncIterable<SyncBucketDataBatch>;
29
- getChecksums(checkpoint: util.OpId, buckets: string[]): Promise<util.ChecksumMap>;
30
- private getChecksumsInternal;
31
- terminate(options?: TerminateOptions): Promise<void>;
32
- getStatus(): Promise<SyncRuleStatus>;
33
- clear(): Promise<void>;
34
- private clearIteration;
35
- autoActivate(): Promise<void>;
36
- reportError(e: any): Promise<void>;
37
- compact(options?: CompactOptions): Promise<void>;
38
- }