@powersync/service-core 0.18.1 → 1.7.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 (95) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/api/RouteAPI.d.ts +1 -1
  3. package/dist/api/diagnostics.js +107 -169
  4. package/dist/api/diagnostics.js.map +1 -1
  5. package/dist/entry/commands/compact-action.js +10 -73
  6. package/dist/entry/commands/compact-action.js.map +1 -1
  7. package/dist/modules/AbstractModule.d.ts +1 -1
  8. package/dist/replication/AbstractReplicator.js +2 -65
  9. package/dist/replication/AbstractReplicator.js.map +1 -1
  10. package/dist/routes/endpoints/checkpointing.js +3 -2
  11. package/dist/routes/endpoints/checkpointing.js.map +1 -1
  12. package/dist/routes/endpoints/socket-route.js +5 -5
  13. package/dist/routes/endpoints/socket-route.js.map +1 -1
  14. package/dist/routes/endpoints/sync-stream.js +5 -5
  15. package/dist/routes/endpoints/sync-stream.js.map +1 -1
  16. package/dist/runner/teardown.js +3 -65
  17. package/dist/runner/teardown.js.map +1 -1
  18. package/dist/storage/BucketStorage.d.ts +1 -442
  19. package/dist/storage/BucketStorage.js +0 -9
  20. package/dist/storage/BucketStorage.js.map +1 -1
  21. package/dist/storage/BucketStorageBatch.d.ts +130 -0
  22. package/dist/storage/BucketStorageBatch.js +10 -0
  23. package/dist/storage/BucketStorageBatch.js.map +1 -0
  24. package/dist/storage/BucketStorageFactory.d.ts +136 -0
  25. package/dist/storage/BucketStorageFactory.js +2 -0
  26. package/dist/storage/BucketStorageFactory.js.map +1 -0
  27. package/dist/storage/ChecksumCache.js.map +1 -1
  28. package/dist/storage/PersistedSyncRulesContent.d.ts +20 -0
  29. package/dist/storage/PersistedSyncRulesContent.js +2 -0
  30. package/dist/storage/PersistedSyncRulesContent.js.map +1 -0
  31. package/dist/storage/ReplicationEventPayload.d.ts +1 -1
  32. package/dist/storage/ReplicationLock.d.ts +4 -0
  33. package/dist/storage/ReplicationLock.js +2 -0
  34. package/dist/storage/ReplicationLock.js.map +1 -0
  35. package/dist/storage/StorageEngine.d.ts +4 -4
  36. package/dist/storage/StorageEngine.js +2 -2
  37. package/dist/storage/StorageEngine.js.map +1 -1
  38. package/dist/storage/StorageProvider.d.ts +4 -1
  39. package/dist/storage/SyncRulesBucketStorage.d.ts +201 -0
  40. package/dist/storage/SyncRulesBucketStorage.js +7 -0
  41. package/dist/storage/SyncRulesBucketStorage.js.map +1 -0
  42. package/dist/storage/bson.d.ts +11 -3
  43. package/dist/storage/bson.js +24 -2
  44. package/dist/storage/bson.js.map +1 -1
  45. package/dist/storage/storage-index.d.ts +5 -0
  46. package/dist/storage/storage-index.js +5 -0
  47. package/dist/storage/storage-index.js.map +1 -1
  48. package/dist/sync/BucketChecksumState.d.ts +91 -0
  49. package/dist/sync/BucketChecksumState.js +313 -0
  50. package/dist/sync/BucketChecksumState.js.map +1 -0
  51. package/dist/sync/sync-index.d.ts +1 -0
  52. package/dist/sync/sync-index.js +1 -0
  53. package/dist/sync/sync-index.js.map +1 -1
  54. package/dist/sync/sync.d.ts +7 -3
  55. package/dist/sync/sync.js +131 -135
  56. package/dist/sync/sync.js.map +1 -1
  57. package/dist/sync/util.d.ts +9 -0
  58. package/dist/sync/util.js +44 -0
  59. package/dist/sync/util.js.map +1 -1
  60. package/dist/util/checkpointing.d.ts +1 -1
  61. package/dist/util/checkpointing.js +15 -78
  62. package/dist/util/checkpointing.js.map +1 -1
  63. package/dist/util/protocol-types.d.ts +13 -4
  64. package/package.json +4 -4
  65. package/src/api/RouteAPI.ts +1 -1
  66. package/src/api/diagnostics.ts +1 -1
  67. package/src/entry/commands/compact-action.ts +2 -3
  68. package/src/modules/AbstractModule.ts +1 -1
  69. package/src/replication/AbstractReplicator.ts +1 -2
  70. package/src/routes/endpoints/checkpointing.ts +3 -3
  71. package/src/routes/endpoints/socket-route.ts +7 -5
  72. package/src/routes/endpoints/sync-stream.ts +8 -5
  73. package/src/runner/teardown.ts +1 -1
  74. package/src/storage/BucketStorage.ts +1 -552
  75. package/src/storage/BucketStorageBatch.ts +158 -0
  76. package/src/storage/BucketStorageFactory.ts +156 -0
  77. package/src/storage/ChecksumCache.ts +1 -0
  78. package/src/storage/PersistedSyncRulesContent.ts +26 -0
  79. package/src/storage/ReplicationEventPayload.ts +1 -1
  80. package/src/storage/ReplicationLock.ts +5 -0
  81. package/src/storage/StorageEngine.ts +4 -4
  82. package/src/storage/StorageProvider.ts +4 -1
  83. package/src/storage/SyncRulesBucketStorage.ts +256 -0
  84. package/src/storage/bson.ts +28 -4
  85. package/src/storage/storage-index.ts +5 -0
  86. package/src/sync/BucketChecksumState.ts +392 -0
  87. package/src/sync/sync-index.ts +1 -0
  88. package/src/sync/sync.ts +173 -157
  89. package/src/sync/util.ts +54 -0
  90. package/src/util/checkpointing.ts +4 -6
  91. package/src/util/protocol-types.ts +16 -4
  92. package/test/src/auth.test.ts +5 -5
  93. package/test/src/sync/BucketChecksumState.test.ts +565 -0
  94. package/test/src/sync/util.test.ts +34 -0
  95. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"socket-route.js","sourceRoot":"","sources":["../../../src/routes/endpoints/socket-route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AACjD,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,kBAAkB,GAAyB,CAAC,MAAM,EAAE,EAAE,CACjE,MAAM,CAAC,cAAc,CAAiC,UAAU,CAAC,MAAM,EAAE;IACvE,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IAC9F,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE;QAC5F,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;QACpC,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC;QAEzC,uDAAuD;QACvD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC5C,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAEjC,IAAI,UAAU,GAAG,QAAQ,CAAC;QAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC;YACzC,OAAO,CAAC,CAAC;gBACP,UAAU,IAAI,CAAC,CAAC;YAClB,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,YAAa,CAAC,MAAM,EAAE,CAAC;YACzB,SAAS,CAAC,OAAO,CACf,IAAI,MAAM,CAAC,YAAY,CAAC;gBACtB,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,SAAS,CAAC,WAAW;gBAC3B,WAAW,EAAE,iCAAiC;aAC/C,CAAC,CACH,CAAC;YACF,SAAS,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,aAAc,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAE1F,MAAM,EACJ,aAAa,EAAE,EAAE,mBAAmB,EAAE,EACvC,GAAG,eAAe,CAAC;QACpB,0CAA0C;QAC1C,MAAM,EAAE,GAAG,MAAM,mBAAmB,CAAC,mBAAmB,EAAE,CAAC;QAC3D,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC;YACvB,SAAS,CAAC,OAAO,CACf,IAAI,MAAM,CAAC,YAAY,CAAC;gBACtB,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,SAAS,CAAC,WAAW;gBAC3B,WAAW,EAAE,yBAAyB;aACvC,CAAC,CACH,CAAC;YACF,SAAS,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,GAAG,YAAa,CAAC,cAAc,CAAC,GAAG,EAAE;YAC1D,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,WAAW,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC;gBAC3C,OAAO,EAAE,mBAAmB;gBAC5B,YAAY,EAAE,YAAa,CAAC,MAAM,EAAE,CAAC,wBAAwB,EAAE;gBAC/D,MAAM,EAAE;oBACN,GAAG,MAAM;oBACT,WAAW,EAAE,IAAI,CAAC,8BAA8B;iBACjD;gBACD,UAAU;gBACV,KAAK,EAAE,OAAQ,CAAC,aAAc;gBAC9B,kBAAkB,EAAE;oBAClB,8CAA8C;oBAC9C,UAAU,EAAE,KAAK;iBAClB;gBACD,OAAO;gBACP,MAAM;aACP,CAAC,EAAE,CAAC;gBACH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM;gBACR,CAAC;gBACD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;oBACjB,4CAA4C;oBAC5C,SAAS;gBACX,CAAC;qBAAM,IAAI,OAAO,IAAI,IAAI,QAAQ,EAAE,CAAC;oBACnC,2CAA2C;oBAC3C,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;gBACrD,CAAC;gBAED,CAAC;oBACC,+CAA+C;oBAC/C,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAW,CAAC;oBAC7C,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;oBAC9C,UAAU,EAAE,CAAC;oBACb,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC3C,CAAC;gBAED,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACvC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;wBAClC,MAAM,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC;4BAClC,OAAO;gCACL,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;oCACnB,iEAAiE;oCACjE,OAAO,EAAE,CAAC;oCACV,CAAC,EAAE,CAAC;oCACJ,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gCAC/C,CAAC;4BACH,CAAC;yBACF,CAAC,CAAC;wBACH,MAAM,OAAO,GAAG,GAAG,EAAE;4BACnB,8CAA8C;4BAC9C,OAAO,EAAE,CAAC;4BACV,CAAC,EAAE,CAAC;4BACJ,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;wBAC/C,CAAC,CAAC;wBACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC5C,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,kDAAkD;YAClD,4CAA4C;YAC5C,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YACjD,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YACzC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,UAAU,EAAE,CAAC;YACvB,iBAAiB,EAAE,CAAC;YACpB,QAAQ,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBAClC,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,iBAAiB,EAAE,OAAO,CAAC,gBAAgB;gBAC3C,iBAAiB,EAAE,OAAO,CAAC,eAAe;aAC3C,CAAC,CAAC;YACH,OAAO,CAAC,WAAW,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"socket-route.js","sourceRoot":"","sources":["../../../src/routes/endpoints/socket-route.ts"],"names":[],"mappings":"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"}
@@ -30,22 +30,22 @@ export const syncStreamed = routeDefinition({
30
30
  }
31
31
  const params = payload.params;
32
32
  const syncParams = new RequestParameters(payload.context.token_payload, payload.params.parameters ?? {});
33
- // Sanity check before we start the stream
34
- const cp = await storageEngine.activeBucketStorage.getActiveCheckpoint();
35
- if (!cp.hasSyncRules()) {
33
+ const bucketStorage = await storageEngine.activeBucketStorage.getActiveStorage();
34
+ if (bucketStorage == null) {
36
35
  throw new errors.ServiceError({
37
36
  status: 500,
38
37
  code: ErrorCode.PSYNC_S2302,
39
38
  description: 'No sync rules available'
40
39
  });
41
40
  }
41
+ const syncRules = bucketStorage.getParsedSyncRules(routerEngine.getAPI().getParseSyncRulesOptions());
42
42
  const controller = new AbortController();
43
43
  const tracker = new sync.RequestTracker();
44
44
  try {
45
45
  Metrics.getInstance().concurrent_connections.add(1);
46
46
  const stream = Readable.from(sync.transformToBytesTracked(sync.ndjson(sync.streamResponse({
47
- storage: storageEngine.activeBucketStorage,
48
- parseOptions: routerEngine.getAPI().getParseSyncRulesOptions(),
47
+ bucketStorage,
48
+ syncRules: syncRules,
49
49
  params,
50
50
  syncParams,
51
51
  token: payload.context.token_payload,
@@ -1 +1 @@
1
- {"version":3,"file":"sync-stream.js","sourceRoot":"","sources":["../../../src/routes/endpoints/sync-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-stream.js","sourceRoot":"","sources":["../../../src/routes/endpoints/sync-stream.ts"],"names":[],"mappings":"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"}
@@ -2,58 +2,6 @@
2
2
  // This should:
3
3
  // 1. Attempt to clean up any remote configuration of data sources that was set up.
4
4
  // 2. Delete the storage
5
- var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
6
- if (value !== null && value !== void 0) {
7
- if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
8
- var dispose, inner;
9
- if (async) {
10
- if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
11
- dispose = value[Symbol.asyncDispose];
12
- }
13
- if (dispose === void 0) {
14
- if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
15
- dispose = value[Symbol.dispose];
16
- if (async) inner = dispose;
17
- }
18
- if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
19
- if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
20
- env.stack.push({ value: value, dispose: dispose, async: async });
21
- }
22
- else if (async) {
23
- env.stack.push({ async: true });
24
- }
25
- return value;
26
- };
27
- var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
28
- return function (env) {
29
- function fail(e) {
30
- env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
31
- env.hasError = true;
32
- }
33
- var r, s = 0;
34
- function next() {
35
- while (r = env.stack.pop()) {
36
- try {
37
- if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
38
- if (r.dispose) {
39
- var result = r.dispose.call(r.value);
40
- if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
41
- }
42
- else s |= 1;
43
- }
44
- catch (e) {
45
- fail(e);
46
- }
47
- }
48
- if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
49
- if (env.hasError) throw env.error;
50
- }
51
- return next();
52
- };
53
- })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
54
- var e = new Error(message);
55
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
56
- });
57
5
  import { container, logger } from '@powersync/lib-services-framework';
58
6
  import timers from 'timers/promises';
59
7
  import * as modules from '../modules/modules-index.js';
@@ -97,19 +45,9 @@ async function terminateSyncRules(storageFactory, moduleManager) {
97
45
  await moduleManager.tearDown({ syncRules: combinedSyncRules });
98
46
  // Mark the sync rules as terminated
99
47
  for (let syncRules of combinedSyncRules) {
100
- const env_1 = { stack: [], error: void 0, hasError: false };
101
- try {
102
- const syncRulesStorage = __addDisposableResource(env_1, storageFactory.getInstance(syncRules), false);
103
- // The storage will be dropped at the end of the teardown, so we don't need to clear it here
104
- await syncRulesStorage.terminate({ clearStorage: false });
105
- }
106
- catch (e_1) {
107
- env_1.error = e_1;
108
- env_1.hasError = true;
109
- }
110
- finally {
111
- __disposeResources(env_1);
112
- }
48
+ const syncRulesStorage = storageFactory.getInstance(syncRules);
49
+ // The storage will be dropped at the end of the teardown, so we don't need to clear it here
50
+ await syncRulesStorage.terminate({ clearStorage: false });
113
51
  }
114
52
  }
115
53
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../src/runner/teardown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../src/runner/teardown.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,4 @@
1
- import { AsyncDisposableObserverClient, DisposableListener, DisposableObserverClient } from '@powersync/lib-services-framework';
2
- import { EvaluatedParameters, EvaluatedRow, SqlSyncRules, SqliteJsonRow, SqliteJsonValue, SqliteRow, ToastableSqliteRow } from '@powersync/service-sync-rules';
3
- import { BSON } from 'bson';
4
- import * as util from '../util/util-index.js';
5
- import { ReplicationEventPayload } from './ReplicationEventPayload.js';
6
- import { SourceEntityDescriptor } from './SourceEntity.js';
7
- import { SourceTable } from './SourceTable.js';
8
- import { BatchedCustomWriteCheckpointOptions } from './storage-index.js';
9
- import { SyncStorageWriteCheckpointAPI } from './WriteCheckpointAPI.js';
10
- /**
11
- * Replica id uniquely identifying a row on the source database.
12
- *
13
- * Can be any value serializable to BSON.
14
- *
15
- * If the value is an entire document, the data serialized to a v5 UUID may be a good choice here.
16
- */
17
- export type ReplicaId = BSON.UUID | BSON.Document | any;
1
+ import { ToastableSqliteRow } from '@powersync/service-sync-rules';
18
2
  export declare enum SyncRuleState {
19
3
  /**
20
4
  * New sync rules - needs to be processed (initial replication).
@@ -40,431 +24,6 @@ export declare enum SyncRuleState {
40
24
  */
41
25
  TERMINATED = "TERMINATED"
42
26
  }
43
- export interface BucketStorageFactoryListener extends DisposableListener {
44
- syncStorageCreated: (storage: SyncRulesBucketStorage) => void;
45
- replicationEvent: (event: ReplicationEventPayload) => void;
46
- }
47
- export interface BucketStorageSystemIdentifier {
48
- /**
49
- * A unique identifier for the system used for storage.
50
- * For Postgres this can be the cluster `system_identifier` and database name.
51
- * For MongoDB this can be the replica set name.
52
- */
53
- id: string;
54
- /**
55
- * A unique type for the storage implementation.
56
- * e.g. `mongodb`, `postgresql`.
57
- */
58
- type: string;
59
- }
60
- export interface BucketStorageFactory extends AsyncDisposableObserverClient<BucketStorageFactoryListener> {
61
- /**
62
- * Update sync rules from configuration, if changed.
63
- */
64
- configureSyncRules(options: UpdateSyncRulesOptions): Promise<{
65
- updated: boolean;
66
- persisted_sync_rules?: PersistedSyncRulesContent;
67
- lock?: ReplicationLock;
68
- }>;
69
- /**
70
- * Get a storage instance to query sync data for specific sync rules.
71
- */
72
- getInstance(options: PersistedSyncRulesContent): SyncRulesBucketStorage;
73
- /**
74
- * Deploy new sync rules.
75
- *
76
- * Similar to configureSyncRules, but applies the update unconditionally.
77
- */
78
- updateSyncRules(options: UpdateSyncRulesOptions): Promise<PersistedSyncRulesContent>;
79
- /**
80
- * Indicate that a slot was removed, and we should re-sync by creating
81
- * a new sync rules instance.
82
- *
83
- * This is roughly the same as deploying a new version of the current sync
84
- * rules, but also accounts for cases where the current sync rules are not
85
- * the latest ones.
86
- *
87
- * Replication should be restarted after this.
88
- *
89
- * @param slot_name The removed slot
90
- */
91
- slotRemoved(slot_name: string): Promise<void>;
92
- /**
93
- * Get the sync rules used for querying.
94
- */
95
- getActiveSyncRules(options: ParseSyncRulesOptions): Promise<PersistedSyncRules | null>;
96
- /**
97
- * Get the sync rules used for querying.
98
- */
99
- getActiveSyncRulesContent(): Promise<PersistedSyncRulesContent | null>;
100
- /**
101
- * Get the sync rules that will be active next once done with initial replicatino.
102
- */
103
- getNextSyncRules(options: ParseSyncRulesOptions): Promise<PersistedSyncRules | null>;
104
- /**
105
- * Get the sync rules that will be active next once done with initial replicatino.
106
- */
107
- getNextSyncRulesContent(): Promise<PersistedSyncRulesContent | null>;
108
- /**
109
- * Get all sync rules currently replicating. Typically this is the "active" and "next" sync rules.
110
- */
111
- getReplicatingSyncRules(): Promise<PersistedSyncRulesContent[]>;
112
- /**
113
- * Get all sync rules stopped but not terminated yet.
114
- */
115
- getStoppedSyncRules(): Promise<PersistedSyncRulesContent[]>;
116
- /**
117
- * Same as:
118
- * getInstance(await getActiveSyncRules()).getCheckpoint().
119
- */
120
- getActiveCheckpoint(): Promise<ActiveCheckpoint>;
121
- /**
122
- * Yields the latest user write checkpoint whenever the sync checkpoint updates.
123
- */
124
- watchWriteCheckpoint(user_id: string, signal: AbortSignal): AsyncIterable<WriteCheckpoint>;
125
- /**
126
- * Get storage size of active sync rules.
127
- */
128
- getStorageMetrics(): Promise<StorageMetrics>;
129
- /**
130
- * Get the unique identifier for this instance of Powersync
131
- */
132
- getPowerSyncInstanceId(): Promise<string>;
133
- /**
134
- * Get a unique identifier for the system used for storage.
135
- */
136
- getSystemIdentifier(): Promise<BucketStorageSystemIdentifier>;
137
- }
138
- export interface ReplicationCheckpoint {
139
- readonly checkpoint: util.OpId;
140
- readonly lsn: string | null;
141
- }
142
- export interface ActiveCheckpoint extends ReplicationCheckpoint {
143
- hasSyncRules(): boolean;
144
- getBucketStorage(): Promise<SyncRulesBucketStorage | null>;
145
- }
146
- export interface WriteCheckpoint {
147
- base: ActiveCheckpoint;
148
- writeCheckpoint: bigint | null;
149
- }
150
- export interface StorageMetrics {
151
- /**
152
- * Size of operations (bucket_data)
153
- */
154
- operations_size_bytes: number;
155
- /**
156
- * Size of parameter storage.
157
- *
158
- * Replication storage -> raw data as received from Postgres.
159
- */
160
- parameters_size_bytes: number;
161
- /**
162
- * Size of current_data.
163
- */
164
- replication_size_bytes: number;
165
- }
166
- export interface ParseSyncRulesOptions {
167
- defaultSchema: string;
168
- }
169
- export interface PersistedSyncRulesContent {
170
- readonly id: number;
171
- readonly sync_rules_content: string;
172
- readonly slot_name: string;
173
- readonly last_fatal_error?: string | null;
174
- readonly last_keepalive_ts?: Date | null;
175
- readonly last_checkpoint_ts?: Date | null;
176
- parsed(options: ParseSyncRulesOptions): PersistedSyncRules;
177
- lock(): Promise<ReplicationLock>;
178
- }
179
- export interface ReplicationLock {
180
- sync_rules_id: number;
181
- release(): Promise<void>;
182
- }
183
- export interface PersistedSyncRules {
184
- readonly id: number;
185
- readonly sync_rules: SqlSyncRules;
186
- readonly slot_name: string;
187
- }
188
- export interface UpdateSyncRulesOptions {
189
- content: string;
190
- lock?: boolean;
191
- validate?: boolean;
192
- }
193
- export interface SyncRulesBucketStorageOptions {
194
- sync_rules: SqlSyncRules;
195
- group_id: number;
196
- }
197
27
  export declare const DEFAULT_DOCUMENT_BATCH_LIMIT = 1000;
198
28
  export declare const DEFAULT_DOCUMENT_CHUNK_LIMIT_BYTES: number;
199
- export interface BucketDataBatchOptions {
200
- /** Limit number of documents returned. Defaults to 1000. */
201
- limit?: number;
202
- /**
203
- * Limit size of chunks returned. Defaults to 1MB.
204
- *
205
- * This is a lower bound, not an upper bound. As soon as the chunk size goes over this limit,
206
- * it is returned.
207
- *
208
- * Note that an individual data row can be close to 16MB in size, so this does not help in
209
- * extreme cases.
210
- */
211
- chunkLimitBytes?: number;
212
- }
213
- export interface StartBatchOptions extends ParseSyncRulesOptions {
214
- zeroLSN: string;
215
- /**
216
- * Whether or not to store a copy of the current data.
217
- *
218
- * This is needed if we need to apply partial updates, for example
219
- * when we get TOAST values from Postgres.
220
- *
221
- * This is not needed when we get the full document from the source
222
- * database, for example from MongoDB.
223
- */
224
- storeCurrentData: boolean;
225
- /**
226
- * Set to true for initial replication.
227
- *
228
- * This will avoid creating new operations for rows previously replicated.
229
- */
230
- skipExistingRows?: boolean;
231
- }
232
- export interface SyncRulesBucketStorageListener extends DisposableListener {
233
- batchStarted: (batch: BucketStorageBatch) => void;
234
- }
235
- export interface SyncRulesBucketStorage extends DisposableObserverClient<SyncRulesBucketStorageListener>, SyncStorageWriteCheckpointAPI {
236
- readonly group_id: number;
237
- readonly slot_name: string;
238
- readonly factory: BucketStorageFactory;
239
- resolveTable(options: ResolveTableOptions): Promise<ResolveTableResult>;
240
- startBatch(options: StartBatchOptions, callback: (batch: BucketStorageBatch) => Promise<void>): Promise<FlushedResult | null>;
241
- getCheckpoint(): Promise<ReplicationCheckpoint>;
242
- getParsedSyncRules(options: ParseSyncRulesOptions): SqlSyncRules;
243
- getParameterSets(checkpoint: util.OpId, lookups: SqliteJsonValue[][]): Promise<SqliteJsonRow[]>;
244
- /**
245
- * Get a "batch" of data for a checkpoint.
246
- *
247
- * The results will be split into separate SyncBucketData chunks to:
248
- * 1. Separate buckets.
249
- * 2. Limit the size of each individual chunk according to options.batchSizeLimitBytes.
250
- *
251
- * @param checkpoint the checkpoint
252
- * @param dataBuckets current bucket states
253
- * @param options batch size options
254
- */
255
- getBucketDataBatch(checkpoint: util.OpId, dataBuckets: Map<string, string>, options?: BucketDataBatchOptions): AsyncIterable<SyncBucketDataBatch>;
256
- /**
257
- * Compute checksums for a given list of buckets.
258
- *
259
- * Returns zero checksums for any buckets not found.
260
- */
261
- getChecksums(checkpoint: util.OpId, buckets: string[]): Promise<util.ChecksumMap>;
262
- /**
263
- * Terminate the sync rules.
264
- *
265
- * This clears the storage, and sets state to TERMINATED.
266
- *
267
- * Must only be called on stopped sync rules.
268
- */
269
- terminate(options?: TerminateOptions): Promise<void>;
270
- getStatus(): Promise<SyncRuleStatus>;
271
- /**
272
- * Clear the storage, without changing state.
273
- */
274
- clear(): Promise<void>;
275
- autoActivate(): Promise<void>;
276
- /**
277
- * Record a replication error.
278
- *
279
- * This could be a recoverable error (e.g. temporary network failure),
280
- * or a permanent error (e.g. missing toast data).
281
- *
282
- * Errors are cleared on commit.
283
- */
284
- reportError(e: any): Promise<void>;
285
- compact(options?: CompactOptions): Promise<void>;
286
- }
287
- export interface SyncRuleStatus {
288
- checkpoint_lsn: string | null;
289
- active: boolean;
290
- snapshot_done: boolean;
291
- }
292
- export interface ResolveTableOptions {
293
- group_id: number;
294
- connection_id: number;
295
- connection_tag: string;
296
- entity_descriptor: SourceEntityDescriptor;
297
- sync_rules: SqlSyncRules;
298
- }
299
- export interface ResolveTableResult {
300
- table: SourceTable;
301
- dropTables: SourceTable[];
302
- }
303
- export interface FlushedResult {
304
- flushed_op: string;
305
- }
306
- export interface BucketBatchStorageListener extends DisposableListener {
307
- replicationEvent: (payload: ReplicationEventPayload) => void;
308
- }
309
- export interface BucketBatchCommitOptions {
310
- /**
311
- * Creates a new checkpoint even if there were no persisted operations.
312
- * Defaults to true.
313
- */
314
- createEmptyCheckpoints?: boolean;
315
- }
316
- export type ResolvedBucketBatchCommitOptions = Required<BucketBatchCommitOptions>;
317
- export declare const DEFAULT_BUCKET_BATCH_COMMIT_OPTIONS: ResolvedBucketBatchCommitOptions;
318
- export interface BucketStorageBatch extends DisposableObserverClient<BucketBatchStorageListener> {
319
- /**
320
- * Save an op, and potentially flush.
321
- *
322
- * This can be an insert, update or delete op.
323
- */
324
- save(record: SaveOptions): Promise<FlushedResult | null>;
325
- /**
326
- * Replicate a truncate op - deletes all data in the specified tables.
327
- */
328
- truncate(sourceTables: SourceTable[]): Promise<FlushedResult | null>;
329
- /**
330
- * Drop one or more tables.
331
- *
332
- * This is the same as truncate, but additionally removes the SourceTable record.
333
- */
334
- drop(sourceTables: SourceTable[]): Promise<FlushedResult | null>;
335
- /**
336
- * Explicitly flush all pending changes in the batch.
337
- *
338
- * This does not create a new checkpoint until `commit()` is called. This means it's
339
- * safe to flush multiple times in the middle of a large transaction.
340
- *
341
- * @returns null if there are no changes to flush.
342
- */
343
- flush(): Promise<FlushedResult | null>;
344
- /**
345
- * Flush and commit any saved ops. This creates a new checkpoint by default.
346
- *
347
- * Only call this after a transaction.
348
- */
349
- commit(lsn: string, options?: BucketBatchCommitOptions): Promise<boolean>;
350
- /**
351
- * Advance the checkpoint LSN position, without any associated op.
352
- *
353
- * This must only be called when not inside a transaction.
354
- *
355
- * @returns true if the checkpoint was advanced, false if this was a no-op
356
- */
357
- keepalive(lsn: string): Promise<boolean>;
358
- /**
359
- * Get the last checkpoint LSN, from either commit or keepalive.
360
- */
361
- lastCheckpointLsn: string | null;
362
- markSnapshotDone(tables: SourceTable[], no_checkpoint_before_lsn: string): Promise<SourceTable[]>;
363
- /**
364
- * Queues the creation of a custom Write Checkpoint. This will be persisted after operations are flushed.
365
- */
366
- addCustomWriteCheckpoint(checkpoint: BatchedCustomWriteCheckpointOptions): void;
367
- }
368
- export interface SaveParameterData {
369
- sourceTable: SourceTable;
370
- /** UUID */
371
- sourceKey: string;
372
- evaluated: EvaluatedParameters[];
373
- }
374
- export interface SaveBucketData {
375
- sourceTable: SourceTable;
376
- /** UUID */
377
- sourceKey: string;
378
- evaluated: EvaluatedRow[];
379
- }
380
- export type SaveOp = 'insert' | 'update' | 'delete';
381
- export type SaveOptions = SaveInsert | SaveUpdate | SaveDelete;
382
- export declare enum SaveOperationTag {
383
- INSERT = "insert",
384
- UPDATE = "update",
385
- DELETE = "delete"
386
- }
387
- export interface SaveInsert {
388
- tag: SaveOperationTag.INSERT;
389
- sourceTable: SourceTable;
390
- before?: undefined;
391
- beforeReplicaId?: undefined;
392
- after: SqliteRow;
393
- afterReplicaId: ReplicaId;
394
- }
395
- export interface SaveUpdate {
396
- tag: SaveOperationTag.UPDATE;
397
- sourceTable: SourceTable;
398
- /**
399
- * This is only present when the id has changed, and will only contain replica identity columns.
400
- */
401
- before?: SqliteRow;
402
- beforeReplicaId?: ReplicaId;
403
- /**
404
- * A null value means null column.
405
- *
406
- * An undefined value means it's a TOAST value - must be copied from another record.
407
- */
408
- after: ToastableSqliteRow;
409
- afterReplicaId: ReplicaId;
410
- }
411
- export interface SaveDelete {
412
- tag: SaveOperationTag.DELETE;
413
- sourceTable: SourceTable;
414
- before?: SqliteRow;
415
- beforeReplicaId: ReplicaId;
416
- after?: undefined;
417
- afterReplicaId?: undefined;
418
- }
419
- export interface SyncBucketDataBatch {
420
- batch: util.SyncBucketData;
421
- targetOp: bigint | null;
422
- }
423
29
  export declare function mergeToast(record: ToastableSqliteRow, persisted: ToastableSqliteRow): ToastableSqliteRow;
424
- export interface CompactOptions {
425
- /**
426
- * Heap memory limit for the compact process.
427
- *
428
- * Add around 64MB to this to determine the "--max-old-space-size" argument.
429
- * Add another 80MB to get RSS usage / memory limits.
430
- */
431
- memoryLimitMB?: number;
432
- /**
433
- * If specified, ignore any operations newer than this when compacting.
434
- *
435
- * This is primarily for tests, where we want to test compacting at a specific
436
- * point.
437
- *
438
- * This can also be used to create a "safe buffer" of recent operations that should
439
- * not be compacted, to avoid invalidating checkpoints in use.
440
- */
441
- maxOpId?: bigint;
442
- /**
443
- * If specified, compact only the specific buckets.
444
- *
445
- * If not specified, compacts all buckets.
446
- *
447
- * These can be individual bucket names, or bucket definition names.
448
- */
449
- compactBuckets?: string[];
450
- }
451
- export interface TerminateOptions {
452
- /**
453
- * If true, also clear the storage before terminating.
454
- */
455
- clearStorage: boolean;
456
- }
457
- /**
458
- * Helper for tests.
459
- * This is not in the `service-core-tests` package in order for storage modules
460
- * to provide relevant factories without requiring `service-core-tests` as a direct dependency.
461
- */
462
- export interface TestStorageOptions {
463
- /**
464
- * By default, collections are only cleared/
465
- * Setting this to true will drop the collections completely.
466
- */
467
- dropAll?: boolean;
468
- doNotClear?: boolean;
469
- }
470
- export type TestStorageFactory = (options?: TestStorageOptions) => Promise<BucketStorageFactory>;
@@ -26,15 +26,6 @@ export var SyncRuleState;
26
26
  })(SyncRuleState || (SyncRuleState = {}));
27
27
  export const DEFAULT_DOCUMENT_BATCH_LIMIT = 1000;
28
28
  export const DEFAULT_DOCUMENT_CHUNK_LIMIT_BYTES = 1 * 1024 * 1024;
29
- export const DEFAULT_BUCKET_BATCH_COMMIT_OPTIONS = {
30
- createEmptyCheckpoints: true
31
- };
32
- export var SaveOperationTag;
33
- (function (SaveOperationTag) {
34
- SaveOperationTag["INSERT"] = "insert";
35
- SaveOperationTag["UPDATE"] = "update";
36
- SaveOperationTag["DELETE"] = "delete";
37
- })(SaveOperationTag || (SaveOperationTag = {}));
38
29
  export function mergeToast(record, persisted) {
39
30
  const newRecord = {};
40
31
  for (let key in record) {
@@ -1 +1 @@
1
- {"version":3,"file":"BucketStorage.js","sourceRoot":"","sources":["../../src/storage/BucketStorage.ts"],"names":[],"mappings":"AA+BA,MAAM,CAAN,IAAY,aAyBX;AAzBD,WAAY,aAAa;IACvB;;;;;OAKG;IACH,0CAAyB,CAAA;IAEzB;;;;OAIG;IACH,kCAAiB,CAAA;IACjB;;;OAGG;IACH,8BAAa,CAAA;IACb;;;OAGG;IACH,0CAAyB,CAAA;AAC3B,CAAC,EAzBW,aAAa,KAAb,aAAa,QAyBxB;AA2LD,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AACjD,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AA4JlE,MAAM,CAAC,MAAM,mCAAmC,GAAqC;IACnF,sBAAsB,EAAE,IAAI;CAC7B,CAAC;AAgFF,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;AACnB,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AA4CD,MAAM,UAAU,UAAU,CAAC,MAA0B,EAAE,SAA6B;IAClF,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC;YACtC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"BucketStorage.js","sourceRoot":"","sources":["../../src/storage/BucketStorage.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,aAyBX;AAzBD,WAAY,aAAa;IACvB;;;;;OAKG;IACH,0CAAyB,CAAA;IAEzB;;;;OAIG;IACH,kCAAiB,CAAA;IACjB;;;OAGG;IACH,8BAAa,CAAA;IACb;;;OAGG;IACH,0CAAyB,CAAA;AAC3B,CAAC,EAzBW,aAAa,KAAb,aAAa,QAyBxB;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AACjD,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAElE,MAAM,UAAU,UAAU,CAAC,MAA0B,EAAE,SAA6B;IAClF,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC;YACtC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}