@powersync/service-core 0.0.0-dev-20241128134723 → 0.0.0-dev-20241219110735

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 (188) hide show
  1. package/CHANGELOG.md +65 -4
  2. package/dist/auth/KeySpec.d.ts +1 -0
  3. package/dist/auth/KeySpec.js +10 -8
  4. package/dist/auth/KeySpec.js.map +1 -1
  5. package/dist/auth/RemoteJWKSCollector.js +2 -2
  6. package/dist/auth/RemoteJWKSCollector.js.map +1 -1
  7. package/dist/entry/commands/compact-action.js +15 -15
  8. package/dist/entry/commands/compact-action.js.map +1 -1
  9. package/dist/entry/commands/migrate-action.js +15 -4
  10. package/dist/entry/commands/migrate-action.js.map +1 -1
  11. package/dist/index.d.ts +1 -3
  12. package/dist/index.js +1 -3
  13. package/dist/index.js.map +1 -1
  14. package/dist/migrations/PowerSyncMigrationManager.d.ts +17 -0
  15. package/dist/migrations/PowerSyncMigrationManager.js +22 -0
  16. package/dist/migrations/PowerSyncMigrationManager.js.map +1 -0
  17. package/dist/migrations/ensure-automatic-migrations.d.ts +4 -0
  18. package/dist/migrations/ensure-automatic-migrations.js +14 -0
  19. package/dist/migrations/ensure-automatic-migrations.js.map +1 -0
  20. package/dist/migrations/migrations-index.d.ts +2 -3
  21. package/dist/migrations/migrations-index.js +2 -3
  22. package/dist/migrations/migrations-index.js.map +1 -1
  23. package/dist/routes/RouterEngine.js +2 -1
  24. package/dist/routes/RouterEngine.js.map +1 -1
  25. package/dist/routes/configure-fastify.d.ts +28 -28
  26. package/dist/routes/endpoints/admin.d.ts +24 -24
  27. package/dist/storage/BucketStorage.d.ts +41 -1
  28. package/dist/storage/BucketStorage.js +26 -0
  29. package/dist/storage/BucketStorage.js.map +1 -1
  30. package/dist/storage/storage-index.d.ts +2 -14
  31. package/dist/storage/storage-index.js +2 -14
  32. package/dist/storage/storage-index.js.map +1 -1
  33. package/dist/sync/sync.js +12 -3
  34. package/dist/sync/sync.js.map +1 -1
  35. package/dist/system/ServiceContext.d.ts +3 -0
  36. package/dist/system/ServiceContext.js +11 -3
  37. package/dist/system/ServiceContext.js.map +1 -1
  38. package/dist/util/config/types.d.ts +2 -2
  39. package/dist/util/utils.d.ts +14 -1
  40. package/dist/util/utils.js +56 -0
  41. package/dist/util/utils.js.map +1 -1
  42. package/package.json +6 -7
  43. package/src/auth/KeySpec.ts +12 -9
  44. package/src/auth/RemoteJWKSCollector.ts +2 -2
  45. package/src/entry/commands/compact-action.ts +20 -15
  46. package/src/entry/commands/migrate-action.ts +17 -4
  47. package/src/index.ts +1 -4
  48. package/src/migrations/PowerSyncMigrationManager.ts +43 -0
  49. package/src/migrations/ensure-automatic-migrations.ts +15 -0
  50. package/src/migrations/migrations-index.ts +2 -3
  51. package/src/routes/RouterEngine.ts +2 -1
  52. package/src/storage/BucketStorage.ts +44 -1
  53. package/src/storage/storage-index.ts +3 -15
  54. package/src/sync/sync.ts +12 -3
  55. package/src/system/ServiceContext.ts +17 -4
  56. package/src/util/config/types.ts +2 -2
  57. package/src/util/utils.ts +59 -1
  58. package/test/src/auth.test.ts +54 -21
  59. package/test/src/env.ts +0 -1
  60. package/tsconfig.tsbuildinfo +1 -1
  61. package/dist/db/db-index.d.ts +0 -1
  62. package/dist/db/db-index.js +0 -2
  63. package/dist/db/db-index.js.map +0 -1
  64. package/dist/db/mongo.d.ts +0 -35
  65. package/dist/db/mongo.js +0 -73
  66. package/dist/db/mongo.js.map +0 -1
  67. package/dist/locks/LockManager.d.ts +0 -10
  68. package/dist/locks/LockManager.js +0 -7
  69. package/dist/locks/LockManager.js.map +0 -1
  70. package/dist/locks/MongoLocks.d.ts +0 -36
  71. package/dist/locks/MongoLocks.js +0 -81
  72. package/dist/locks/MongoLocks.js.map +0 -1
  73. package/dist/locks/locks-index.d.ts +0 -2
  74. package/dist/locks/locks-index.js +0 -3
  75. package/dist/locks/locks-index.js.map +0 -1
  76. package/dist/migrations/db/migrations/1684951997326-init.d.ts +0 -3
  77. package/dist/migrations/db/migrations/1684951997326-init.js +0 -33
  78. package/dist/migrations/db/migrations/1684951997326-init.js.map +0 -1
  79. package/dist/migrations/db/migrations/1688556755264-initial-sync-rules.d.ts +0 -2
  80. package/dist/migrations/db/migrations/1688556755264-initial-sync-rules.js +0 -5
  81. package/dist/migrations/db/migrations/1688556755264-initial-sync-rules.js.map +0 -1
  82. package/dist/migrations/db/migrations/1702295701188-sync-rule-state.d.ts +0 -3
  83. package/dist/migrations/db/migrations/1702295701188-sync-rule-state.js +0 -56
  84. package/dist/migrations/db/migrations/1702295701188-sync-rule-state.js.map +0 -1
  85. package/dist/migrations/db/migrations/1711543888062-write-checkpoint-index.d.ts +0 -3
  86. package/dist/migrations/db/migrations/1711543888062-write-checkpoint-index.js +0 -29
  87. package/dist/migrations/db/migrations/1711543888062-write-checkpoint-index.js.map +0 -1
  88. package/dist/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.d.ts +0 -3
  89. package/dist/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.js +0 -31
  90. package/dist/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.js.map +0 -1
  91. package/dist/migrations/definitions.d.ts +0 -18
  92. package/dist/migrations/definitions.js +0 -6
  93. package/dist/migrations/definitions.js.map +0 -1
  94. package/dist/migrations/executor.d.ts +0 -16
  95. package/dist/migrations/executor.js +0 -64
  96. package/dist/migrations/executor.js.map +0 -1
  97. package/dist/migrations/migrations.d.ts +0 -18
  98. package/dist/migrations/migrations.js +0 -110
  99. package/dist/migrations/migrations.js.map +0 -1
  100. package/dist/migrations/store/migration-store.d.ts +0 -11
  101. package/dist/migrations/store/migration-store.js +0 -46
  102. package/dist/migrations/store/migration-store.js.map +0 -1
  103. package/dist/storage/MongoBucketStorage.d.ts +0 -48
  104. package/dist/storage/MongoBucketStorage.js +0 -426
  105. package/dist/storage/MongoBucketStorage.js.map +0 -1
  106. package/dist/storage/mongo/MongoBucketBatch.d.ts +0 -67
  107. package/dist/storage/mongo/MongoBucketBatch.js +0 -643
  108. package/dist/storage/mongo/MongoBucketBatch.js.map +0 -1
  109. package/dist/storage/mongo/MongoCompactor.d.ts +0 -40
  110. package/dist/storage/mongo/MongoCompactor.js +0 -309
  111. package/dist/storage/mongo/MongoCompactor.js.map +0 -1
  112. package/dist/storage/mongo/MongoIdSequence.d.ts +0 -12
  113. package/dist/storage/mongo/MongoIdSequence.js +0 -21
  114. package/dist/storage/mongo/MongoIdSequence.js.map +0 -1
  115. package/dist/storage/mongo/MongoPersistedSyncRules.d.ts +0 -9
  116. package/dist/storage/mongo/MongoPersistedSyncRules.js +0 -9
  117. package/dist/storage/mongo/MongoPersistedSyncRules.js.map +0 -1
  118. package/dist/storage/mongo/MongoPersistedSyncRulesContent.d.ts +0 -20
  119. package/dist/storage/mongo/MongoPersistedSyncRulesContent.js +0 -26
  120. package/dist/storage/mongo/MongoPersistedSyncRulesContent.js.map +0 -1
  121. package/dist/storage/mongo/MongoStorageProvider.d.ts +0 -5
  122. package/dist/storage/mongo/MongoStorageProvider.js +0 -26
  123. package/dist/storage/mongo/MongoStorageProvider.js.map +0 -1
  124. package/dist/storage/mongo/MongoSyncBucketStorage.d.ts +0 -38
  125. package/dist/storage/mongo/MongoSyncBucketStorage.js +0 -531
  126. package/dist/storage/mongo/MongoSyncBucketStorage.js.map +0 -1
  127. package/dist/storage/mongo/MongoSyncRulesLock.d.ts +0 -16
  128. package/dist/storage/mongo/MongoSyncRulesLock.js +0 -65
  129. package/dist/storage/mongo/MongoSyncRulesLock.js.map +0 -1
  130. package/dist/storage/mongo/MongoWriteCheckpointAPI.d.ts +0 -20
  131. package/dist/storage/mongo/MongoWriteCheckpointAPI.js +0 -103
  132. package/dist/storage/mongo/MongoWriteCheckpointAPI.js.map +0 -1
  133. package/dist/storage/mongo/OperationBatch.d.ts +0 -35
  134. package/dist/storage/mongo/OperationBatch.js +0 -119
  135. package/dist/storage/mongo/OperationBatch.js.map +0 -1
  136. package/dist/storage/mongo/PersistedBatch.d.ts +0 -46
  137. package/dist/storage/mongo/PersistedBatch.js +0 -213
  138. package/dist/storage/mongo/PersistedBatch.js.map +0 -1
  139. package/dist/storage/mongo/config.d.ts +0 -19
  140. package/dist/storage/mongo/config.js +0 -26
  141. package/dist/storage/mongo/config.js.map +0 -1
  142. package/dist/storage/mongo/db.d.ts +0 -36
  143. package/dist/storage/mongo/db.js +0 -47
  144. package/dist/storage/mongo/db.js.map +0 -1
  145. package/dist/storage/mongo/models.d.ts +0 -156
  146. package/dist/storage/mongo/models.js +0 -27
  147. package/dist/storage/mongo/models.js.map +0 -1
  148. package/dist/storage/mongo/util.d.ts +0 -40
  149. package/dist/storage/mongo/util.js +0 -151
  150. package/dist/storage/mongo/util.js.map +0 -1
  151. package/src/db/db-index.ts +0 -1
  152. package/src/db/mongo.ts +0 -81
  153. package/src/locks/LockManager.ts +0 -16
  154. package/src/locks/MongoLocks.ts +0 -142
  155. package/src/locks/locks-index.ts +0 -2
  156. package/src/migrations/db/migrations/1684951997326-init.ts +0 -38
  157. package/src/migrations/db/migrations/1688556755264-initial-sync-rules.ts +0 -5
  158. package/src/migrations/db/migrations/1702295701188-sync-rule-state.ts +0 -102
  159. package/src/migrations/db/migrations/1711543888062-write-checkpoint-index.ts +0 -34
  160. package/src/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.ts +0 -37
  161. package/src/migrations/definitions.ts +0 -21
  162. package/src/migrations/executor.ts +0 -87
  163. package/src/migrations/migrations.ts +0 -142
  164. package/src/migrations/store/migration-store.ts +0 -63
  165. package/src/storage/MongoBucketStorage.ts +0 -540
  166. package/src/storage/mongo/MongoBucketBatch.ts +0 -841
  167. package/src/storage/mongo/MongoCompactor.ts +0 -392
  168. package/src/storage/mongo/MongoIdSequence.ts +0 -24
  169. package/src/storage/mongo/MongoPersistedSyncRules.ts +0 -16
  170. package/src/storage/mongo/MongoPersistedSyncRulesContent.ts +0 -50
  171. package/src/storage/mongo/MongoStorageProvider.ts +0 -31
  172. package/src/storage/mongo/MongoSyncBucketStorage.ts +0 -636
  173. package/src/storage/mongo/MongoSyncRulesLock.ts +0 -85
  174. package/src/storage/mongo/MongoWriteCheckpointAPI.ts +0 -151
  175. package/src/storage/mongo/OperationBatch.ts +0 -131
  176. package/src/storage/mongo/PersistedBatch.ts +0 -272
  177. package/src/storage/mongo/config.ts +0 -40
  178. package/src/storage/mongo/db.ts +0 -88
  179. package/src/storage/mongo/models.ts +0 -179
  180. package/src/storage/mongo/util.ts +0 -158
  181. package/test/src/__snapshots__/sync.test.ts.snap +0 -332
  182. package/test/src/bucket_validation.test.ts +0 -142
  183. package/test/src/bucket_validation.ts +0 -116
  184. package/test/src/compacting.test.ts +0 -295
  185. package/test/src/data_storage.test.ts +0 -1499
  186. package/test/src/stream_utils.ts +0 -42
  187. package/test/src/sync.test.ts +0 -511
  188. package/test/src/util.ts +0 -148
@@ -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,309 +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
- const DEFAULT_CLEAR_BATCH_LIMIT = 5000;
6
- const DEFAULT_MOVE_BATCH_LIMIT = 2000;
7
- const DEFAULT_MOVE_BATCH_QUERY_LIMIT = 10000;
8
- /** This default is primarily for tests. */
9
- const DEFAULT_MEMORY_LIMIT_MB = 64;
10
- export class MongoCompactor {
11
- constructor(db, group_id, options) {
12
- this.db = db;
13
- this.group_id = group_id;
14
- this.updates = [];
15
- this.idLimitBytes = (options?.memoryLimitMB ?? DEFAULT_MEMORY_LIMIT_MB) * 1024 * 1024;
16
- this.moveBatchLimit = options?.moveBatchLimit ?? DEFAULT_MOVE_BATCH_LIMIT;
17
- this.moveBatchQueryLimit = options?.moveBatchQueryLimit ?? DEFAULT_MOVE_BATCH_QUERY_LIMIT;
18
- this.clearBatchLimit = options?.clearBatchLimit ?? DEFAULT_CLEAR_BATCH_LIMIT;
19
- this.maxOpId = options?.maxOpId;
20
- this.buckets = options?.compactBuckets;
21
- }
22
- /**
23
- * Compact buckets by converting operations into MOVE and/or CLEAR operations.
24
- *
25
- * See /docs/compacting-operations.md for details.
26
- */
27
- async compact() {
28
- if (this.buckets) {
29
- for (let bucket of this.buckets) {
30
- // We can make this more efficient later on by iterating
31
- // through the buckets in a single query.
32
- // That makes batching more tricky, so we leave for later.
33
- await this.compactInternal(bucket);
34
- }
35
- }
36
- else {
37
- await this.compactInternal(undefined);
38
- }
39
- }
40
- async compactInternal(bucket) {
41
- const idLimitBytes = this.idLimitBytes;
42
- let currentState = null;
43
- let bucketLower;
44
- let bucketUpper;
45
- if (bucket == null) {
46
- bucketLower = new MinKey();
47
- bucketUpper = new MaxKey();
48
- }
49
- else if (bucket.includes('[')) {
50
- // Exact bucket name
51
- bucketLower = bucket;
52
- bucketUpper = bucket;
53
- }
54
- else {
55
- // Bucket definition name
56
- bucketLower = `${bucket}[`;
57
- bucketUpper = `${bucket}[\uFFFF`;
58
- }
59
- // Constant lower bound
60
- const lowerBound = {
61
- g: this.group_id,
62
- b: bucketLower,
63
- o: new MinKey()
64
- };
65
- // Upper bound is adjusted for each batch
66
- let upperBound = {
67
- g: this.group_id,
68
- b: bucketUpper,
69
- o: new MaxKey()
70
- };
71
- while (true) {
72
- // Query one batch at a time, to avoid cursor timeouts
73
- const batch = await this.db.bucket_data
74
- .find({
75
- _id: {
76
- $gte: lowerBound,
77
- $lt: upperBound
78
- }
79
- }, {
80
- projection: {
81
- _id: 1,
82
- op: 1,
83
- table: 1,
84
- row_id: 1,
85
- source_table: 1,
86
- source_key: 1
87
- },
88
- limit: this.moveBatchQueryLimit,
89
- sort: { _id: -1 },
90
- singleBatch: true
91
- })
92
- .toArray();
93
- if (batch.length == 0) {
94
- // We've reached the end
95
- break;
96
- }
97
- // Set upperBound for the next batch
98
- upperBound = batch[batch.length - 1]._id;
99
- for (let doc of batch) {
100
- if (currentState == null || doc._id.b != currentState.bucket) {
101
- if (currentState != null && currentState.lastNotPut != null && currentState.opsSincePut >= 1) {
102
- // Important to flush before clearBucket()
103
- await this.flush();
104
- logger.info(`Inserting CLEAR at ${this.group_id}:${currentState.bucket}:${currentState.lastNotPut} to remove ${currentState.opsSincePut} operations`);
105
- const bucket = currentState.bucket;
106
- const clearOp = currentState.lastNotPut;
107
- // Free memory before clearing bucket
108
- currentState = null;
109
- await this.clearBucket(bucket, clearOp);
110
- }
111
- currentState = {
112
- bucket: doc._id.b,
113
- seen: new Map(),
114
- trackingSize: 0,
115
- lastNotPut: null,
116
- opsSincePut: 0
117
- };
118
- }
119
- if (this.maxOpId != null && doc._id.o > this.maxOpId) {
120
- continue;
121
- }
122
- let isPersistentPut = doc.op == 'PUT';
123
- if (doc.op == 'REMOVE' || doc.op == 'PUT') {
124
- const key = `${doc.table}/${doc.row_id}/${cacheKey(doc.source_table, doc.source_key)}`;
125
- const targetOp = currentState.seen.get(key);
126
- if (targetOp) {
127
- // Will convert to MOVE, so don't count as PUT
128
- isPersistentPut = false;
129
- this.updates.push({
130
- updateOne: {
131
- filter: {
132
- _id: doc._id
133
- },
134
- update: {
135
- $set: {
136
- op: 'MOVE',
137
- target_op: targetOp
138
- },
139
- $unset: {
140
- source_table: 1,
141
- source_key: 1,
142
- table: 1,
143
- row_id: 1,
144
- data: 1
145
- }
146
- }
147
- }
148
- });
149
- }
150
- else {
151
- if (currentState.trackingSize >= idLimitBytes) {
152
- // Reached memory limit.
153
- // Keep the highest seen values in this case.
154
- }
155
- else {
156
- // flatstr reduces the memory usage by flattening the string
157
- currentState.seen.set(flatstr(key), doc._id.o);
158
- // length + 16 for the string
159
- // 24 for the bigint
160
- // 50 for map overhead
161
- // 50 for additional overhead
162
- currentState.trackingSize += key.length + 140;
163
- }
164
- }
165
- }
166
- if (isPersistentPut) {
167
- currentState.lastNotPut = null;
168
- currentState.opsSincePut = 0;
169
- }
170
- else if (doc.op != 'CLEAR') {
171
- if (currentState.lastNotPut == null) {
172
- currentState.lastNotPut = doc._id.o;
173
- }
174
- currentState.opsSincePut += 1;
175
- }
176
- if (this.updates.length >= this.moveBatchLimit) {
177
- await this.flush();
178
- }
179
- }
180
- }
181
- await this.flush();
182
- currentState?.seen.clear();
183
- if (currentState?.lastNotPut != null && currentState?.opsSincePut > 1) {
184
- logger.info(`Inserting CLEAR at ${this.group_id}:${currentState.bucket}:${currentState.lastNotPut} to remove ${currentState.opsSincePut} operations`);
185
- const bucket = currentState.bucket;
186
- const clearOp = currentState.lastNotPut;
187
- // Free memory before clearing bucket
188
- currentState = null;
189
- await this.clearBucket(bucket, clearOp);
190
- }
191
- }
192
- async flush() {
193
- if (this.updates.length > 0) {
194
- logger.info(`Compacting ${this.updates.length} ops`);
195
- await this.db.bucket_data.bulkWrite(this.updates, {
196
- // Order is not important.
197
- // Since checksums are not affected, these operations can happen in any order,
198
- // and it's fine if the operations are partially applied.
199
- // Each individual operation is atomic.
200
- ordered: false
201
- });
202
- this.updates = [];
203
- }
204
- }
205
- /**
206
- * Perform a CLEAR compact for a bucket.
207
- *
208
- * @param bucket bucket name
209
- * @param op op_id of the last non-PUT operation, which will be converted to CLEAR.
210
- */
211
- async clearBucket(bucket, op) {
212
- const opFilter = {
213
- _id: {
214
- $gte: {
215
- g: this.group_id,
216
- b: bucket,
217
- o: new MinKey()
218
- },
219
- $lte: {
220
- g: this.group_id,
221
- b: bucket,
222
- o: op
223
- }
224
- }
225
- };
226
- const session = this.db.client.startSession();
227
- try {
228
- let done = false;
229
- while (!done) {
230
- // Do the CLEAR operation in batches, with each batch a separate transaction.
231
- // The state after each batch is fully consistent.
232
- // We need a transaction per batch to make sure checksums stay consistent.
233
- await session.withTransaction(async () => {
234
- const query = this.db.bucket_data.find(opFilter, {
235
- session,
236
- sort: { _id: 1 },
237
- projection: {
238
- _id: 1,
239
- op: 1,
240
- checksum: 1,
241
- target_op: 1
242
- },
243
- limit: this.clearBatchLimit
244
- });
245
- let checksum = 0;
246
- let lastOpId = null;
247
- let targetOp = null;
248
- let gotAnOp = false;
249
- for await (let op of query.stream()) {
250
- if (op.op == 'MOVE' || op.op == 'REMOVE' || op.op == 'CLEAR') {
251
- checksum = addChecksums(checksum, op.checksum);
252
- lastOpId = op._id;
253
- if (op.op != 'CLEAR') {
254
- gotAnOp = true;
255
- }
256
- if (op.target_op != null) {
257
- if (targetOp == null || op.target_op > targetOp) {
258
- targetOp = op.target_op;
259
- }
260
- }
261
- }
262
- else {
263
- throw new Error(`Unexpected ${op.op} operation at ${op._id.g}:${op._id.b}:${op._id.o}`);
264
- }
265
- }
266
- if (!gotAnOp) {
267
- done = true;
268
- return;
269
- }
270
- logger.info(`Flushing CLEAR at ${lastOpId?.o}`);
271
- await this.db.bucket_data.deleteMany({
272
- _id: {
273
- $gte: {
274
- g: this.group_id,
275
- b: bucket,
276
- o: new MinKey()
277
- },
278
- $lte: lastOpId
279
- }
280
- }, { session });
281
- await this.db.bucket_data.insertOne({
282
- _id: lastOpId,
283
- op: 'CLEAR',
284
- checksum: checksum,
285
- data: null,
286
- target_op: targetOp
287
- }, { session });
288
- }, {
289
- writeConcern: { w: 'majority' },
290
- readConcern: { level: 'snapshot' }
291
- });
292
- }
293
- }
294
- finally {
295
- await session.endSession();
296
- }
297
- }
298
- }
299
- /**
300
- * Flattens string to reduce memory usage (around 320 bytes -> 120 bytes),
301
- * at the cost of some upfront CPU usage.
302
- *
303
- * From: https://github.com/davidmarkclements/flatstr/issues/8
304
- */
305
- function flatstr(s) {
306
- s.match(/\n/g);
307
- return s;
308
- }
309
- //# 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
- }