@powersync/service-core 1.13.4 → 1.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 (119) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/LICENSE +3 -3
  3. package/dist/api/api-metrics.js +5 -0
  4. package/dist/api/api-metrics.js.map +1 -1
  5. package/dist/api/diagnostics.js +31 -1
  6. package/dist/api/diagnostics.js.map +1 -1
  7. package/dist/auth/KeyStore.d.ts +19 -0
  8. package/dist/auth/KeyStore.js +16 -4
  9. package/dist/auth/KeyStore.js.map +1 -1
  10. package/dist/auth/RemoteJWKSCollector.d.ts +3 -0
  11. package/dist/auth/RemoteJWKSCollector.js +3 -1
  12. package/dist/auth/RemoteJWKSCollector.js.map +1 -1
  13. package/dist/auth/StaticSupabaseKeyCollector.d.ts +2 -1
  14. package/dist/auth/StaticSupabaseKeyCollector.js +1 -1
  15. package/dist/auth/StaticSupabaseKeyCollector.js.map +1 -1
  16. package/dist/auth/utils.d.ts +19 -0
  17. package/dist/auth/utils.js +106 -3
  18. package/dist/auth/utils.js.map +1 -1
  19. package/dist/entry/commands/compact-action.js +10 -1
  20. package/dist/entry/commands/compact-action.js.map +1 -1
  21. package/dist/metrics/open-telemetry/util.d.ts +0 -3
  22. package/dist/metrics/open-telemetry/util.js +19 -12
  23. package/dist/metrics/open-telemetry/util.js.map +1 -1
  24. package/dist/replication/AbstractReplicator.js +2 -2
  25. package/dist/replication/AbstractReplicator.js.map +1 -1
  26. package/dist/routes/compression.d.ts +19 -0
  27. package/dist/routes/compression.js +70 -0
  28. package/dist/routes/compression.js.map +1 -0
  29. package/dist/routes/configure-fastify.d.ts +40 -5
  30. package/dist/routes/configure-fastify.js +2 -1
  31. package/dist/routes/configure-fastify.js.map +1 -1
  32. package/dist/routes/endpoints/socket-route.js +25 -17
  33. package/dist/routes/endpoints/socket-route.js.map +1 -1
  34. package/dist/routes/endpoints/sync-rules.js +1 -27
  35. package/dist/routes/endpoints/sync-rules.js.map +1 -1
  36. package/dist/routes/endpoints/sync-stream.d.ts +80 -10
  37. package/dist/routes/endpoints/sync-stream.js +29 -11
  38. package/dist/routes/endpoints/sync-stream.js.map +1 -1
  39. package/dist/routes/route-register.d.ts +4 -0
  40. package/dist/routes/route-register.js +29 -15
  41. package/dist/routes/route-register.js.map +1 -1
  42. package/dist/storage/BucketStorage.d.ts +1 -1
  43. package/dist/storage/BucketStorage.js.map +1 -1
  44. package/dist/storage/BucketStorageBatch.d.ts +16 -6
  45. package/dist/storage/BucketStorageBatch.js.map +1 -1
  46. package/dist/storage/ChecksumCache.d.ts +4 -19
  47. package/dist/storage/ChecksumCache.js +4 -0
  48. package/dist/storage/ChecksumCache.js.map +1 -1
  49. package/dist/storage/ReplicationEventPayload.d.ts +2 -2
  50. package/dist/storage/SourceEntity.d.ts +5 -4
  51. package/dist/storage/SourceTable.d.ts +22 -20
  52. package/dist/storage/SourceTable.js +34 -30
  53. package/dist/storage/SourceTable.js.map +1 -1
  54. package/dist/storage/SyncRulesBucketStorage.d.ts +19 -4
  55. package/dist/storage/SyncRulesBucketStorage.js.map +1 -1
  56. package/dist/sync/BucketChecksumState.d.ts +41 -11
  57. package/dist/sync/BucketChecksumState.js +155 -19
  58. package/dist/sync/BucketChecksumState.js.map +1 -1
  59. package/dist/sync/RequestTracker.d.ts +7 -1
  60. package/dist/sync/RequestTracker.js +22 -2
  61. package/dist/sync/RequestTracker.js.map +1 -1
  62. package/dist/sync/sync.d.ts +3 -3
  63. package/dist/sync/sync.js +23 -42
  64. package/dist/sync/sync.js.map +1 -1
  65. package/dist/sync/util.d.ts +3 -1
  66. package/dist/sync/util.js +30 -2
  67. package/dist/sync/util.js.map +1 -1
  68. package/dist/util/config/compound-config-collector.js +23 -0
  69. package/dist/util/config/compound-config-collector.js.map +1 -1
  70. package/dist/util/lsn.d.ts +4 -0
  71. package/dist/util/lsn.js +11 -0
  72. package/dist/util/lsn.js.map +1 -0
  73. package/dist/util/protocol-types.d.ts +153 -9
  74. package/dist/util/protocol-types.js +41 -6
  75. package/dist/util/protocol-types.js.map +1 -1
  76. package/dist/util/util-index.d.ts +1 -0
  77. package/dist/util/util-index.js +1 -0
  78. package/dist/util/util-index.js.map +1 -1
  79. package/dist/util/utils.d.ts +18 -3
  80. package/dist/util/utils.js +33 -9
  81. package/dist/util/utils.js.map +1 -1
  82. package/package.json +16 -14
  83. package/src/api/api-metrics.ts +6 -0
  84. package/src/api/diagnostics.ts +33 -1
  85. package/src/auth/KeyStore.ts +28 -4
  86. package/src/auth/RemoteJWKSCollector.ts +5 -2
  87. package/src/auth/StaticSupabaseKeyCollector.ts +1 -1
  88. package/src/auth/utils.ts +123 -3
  89. package/src/entry/commands/compact-action.ts +9 -1
  90. package/src/metrics/open-telemetry/util.ts +23 -19
  91. package/src/replication/AbstractReplicator.ts +2 -2
  92. package/src/routes/compression.ts +75 -0
  93. package/src/routes/configure-fastify.ts +3 -1
  94. package/src/routes/endpoints/socket-route.ts +25 -16
  95. package/src/routes/endpoints/sync-rules.ts +1 -28
  96. package/src/routes/endpoints/sync-stream.ts +37 -26
  97. package/src/routes/route-register.ts +41 -15
  98. package/src/storage/BucketStorage.ts +2 -2
  99. package/src/storage/BucketStorageBatch.ts +23 -6
  100. package/src/storage/ChecksumCache.ts +8 -22
  101. package/src/storage/ReplicationEventPayload.ts +2 -2
  102. package/src/storage/SourceEntity.ts +5 -5
  103. package/src/storage/SourceTable.ts +48 -34
  104. package/src/storage/SyncRulesBucketStorage.ts +26 -7
  105. package/src/sync/BucketChecksumState.ts +194 -31
  106. package/src/sync/RequestTracker.ts +27 -2
  107. package/src/sync/sync.ts +53 -51
  108. package/src/sync/util.ts +32 -3
  109. package/src/util/config/compound-config-collector.ts +24 -0
  110. package/src/util/lsn.ts +8 -0
  111. package/src/util/protocol-types.ts +138 -10
  112. package/src/util/util-index.ts +1 -0
  113. package/src/util/utils.ts +59 -12
  114. package/test/src/auth.test.ts +323 -1
  115. package/test/src/checksum_cache.test.ts +6 -8
  116. package/test/src/routes/mocks.ts +59 -0
  117. package/test/src/routes/stream.test.ts +84 -0
  118. package/test/src/sync/BucketChecksumState.test.ts +375 -76
  119. package/tsconfig.tsbuildinfo +1 -1
@@ -1,13 +1,7 @@
1
1
  import { DEFAULT_TAG } from '@powersync/service-sync-rules';
2
2
  import * as util from '../util/util-index.js';
3
3
  export class SourceTable {
4
- id;
5
- connectionTag;
6
- objectId;
7
- schema;
8
- table;
9
- replicaIdColumns;
10
- snapshotComplete;
4
+ options;
11
5
  static DEFAULT_TAG = DEFAULT_TAG;
12
6
  /**
13
7
  * True if the table is used in sync rules for data queries.
@@ -39,33 +33,35 @@ export class SourceTable {
39
33
  * May be set if snapshotComplete = false.
40
34
  */
41
35
  snapshotStatus = undefined;
42
- constructor(id, connectionTag, objectId, schema, table, replicaIdColumns, snapshotComplete) {
43
- this.id = id;
44
- this.connectionTag = connectionTag;
45
- this.objectId = objectId;
46
- this.schema = schema;
47
- this.table = table;
48
- this.replicaIdColumns = replicaIdColumns;
49
- this.snapshotComplete = snapshotComplete;
36
+ snapshotComplete;
37
+ constructor(options) {
38
+ this.options = options;
39
+ this.snapshotComplete = options.snapshotComplete;
50
40
  }
51
- get hasReplicaIdentity() {
52
- return this.replicaIdColumns.length > 0;
41
+ get id() {
42
+ return this.options.id;
53
43
  }
54
- /**
55
- * Use for postgres only.
56
- *
57
- * Usage: db.query({statement: `SELECT $1::regclass`, params: [{type: 'varchar', value: table.qualifiedName}]})
58
- */
59
- get qualifiedName() {
60
- return this.escapedIdentifier;
44
+ get connectionTag() {
45
+ return this.options.connectionTag;
46
+ }
47
+ get objectId() {
48
+ return this.options.objectId;
49
+ }
50
+ get schema() {
51
+ return this.options.schema;
52
+ }
53
+ get name() {
54
+ return this.options.name;
55
+ }
56
+ get replicaIdColumns() {
57
+ return this.options.replicaIdColumns;
61
58
  }
62
59
  /**
63
- * Use for postgres and logs only.
64
- *
65
- * Usage: db.query(`SELECT * FROM ${table.escapedIdentifier}`)
60
+ * Sanitized name of the entity in the format of "{schema}.{entity name}"
61
+ * Suitable for safe use in Postgres queries.
66
62
  */
67
- get escapedIdentifier() {
68
- return `${util.escapeIdentifier(this.schema)}.${util.escapeIdentifier(this.table)}`;
63
+ get qualifiedName() {
64
+ return `${util.escapeIdentifier(this.schema)}.${util.escapeIdentifier(this.name)}`;
69
65
  }
70
66
  get syncAny() {
71
67
  return this.syncData || this.syncParameters || this.syncEvent;
@@ -74,7 +70,15 @@ export class SourceTable {
74
70
  * In-memory clone of the table status.
75
71
  */
76
72
  clone() {
77
- const copy = new SourceTable(this.id, this.connectionTag, this.objectId, this.schema, this.table, this.replicaIdColumns, this.snapshotComplete);
73
+ const copy = new SourceTable({
74
+ id: this.id,
75
+ connectionTag: this.connectionTag,
76
+ objectId: this.objectId,
77
+ schema: this.schema,
78
+ name: this.name,
79
+ replicaIdColumns: this.replicaIdColumns,
80
+ snapshotComplete: this.snapshotComplete
81
+ });
78
82
  copy.syncData = this.syncData;
79
83
  copy.syncParameters = this.syncParameters;
80
84
  copy.snapshotStatus = this.snapshotStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"SourceTable.js","sourceRoot":"","sources":["../../src/storage/SourceTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAS9C,MAAM,OAAO,WAAW;IAsCJ;IACA;IACA;IACA;IACA;IAEA;IACT;IA5CT,MAAM,CAAU,WAAW,GAAG,WAAW,CAAC;IAE1C;;;;;;OAMG;IACI,QAAQ,GAAG,IAAI,CAAC;IAEvB;;;;;;OAMG;IACI,cAAc,GAAG,IAAI,CAAC;IAE7B;;;;;;OAMG;IACI,SAAS,GAAG,IAAI,CAAC;IAExB;;;;OAIG;IACI,cAAc,GAAoC,SAAS,CAAC;IAEnE,YACkB,EAAO,EACP,aAAqB,EACrB,QAAqC,EACrC,MAAc,EACd,KAAa,EAEb,gBAAoC,EAC7C,gBAAyB;QAPhB,OAAE,GAAF,EAAE,CAAK;QACP,kBAAa,GAAb,aAAa,CAAQ;QACrB,aAAQ,GAAR,QAAQ,CAA6B;QACrC,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAQ;QAEb,qBAAgB,GAAhB,gBAAgB,CAAoB;QAC7C,qBAAgB,GAAhB,gBAAgB,CAAS;IAC/B,CAAC;IAEJ,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,IAAI,iBAAiB;QACnB,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACtF,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,WAAW,CAC1B,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,gBAAgB,CACtB,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB;QACpB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;YACzD,oBAAoB;YACpB,OAAO,GAAG,CAAC;QACb,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,mBAAmB,GAAG,CAAC,EAAE,CAAC;YACvD,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,IAAI,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,KAAK,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"SourceTable.js","sourceRoot":"","sources":["../../src/storage/SourceTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAmB9C,MAAM,OAAO,WAAW;IAuCM;IAtC5B,MAAM,CAAU,WAAW,GAAG,WAAW,CAAC;IAE1C;;;;;;OAMG;IACI,QAAQ,GAAG,IAAI,CAAC;IAEvB;;;;;;OAMG;IACI,cAAc,GAAG,IAAI,CAAC;IAE7B;;;;;;OAMG;IACI,SAAS,GAAG,IAAI,CAAC;IAExB;;;;OAIG;IACI,cAAc,GAAoC,SAAS,CAAC;IAE5D,gBAAgB,CAAU;IAEjC,YAA4B,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;QACrD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACnD,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;IACpC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,IAAI,aAAa;QACf,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACrF,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC;YAC3B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB;QACpB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;YACzD,oBAAoB;YACpB,OAAO,GAAG,CAAC;QACb,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,mBAAmB,GAAG,CAAC,EAAE,CAAC;YACvD,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,IAAI,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,KAAK,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC"}
@@ -36,7 +36,6 @@ export interface SyncRulesBucketStorage extends ObserverClient<SyncRulesBucketSt
36
36
  * Clear the storage, without changing state.
37
37
  */
38
38
  clear(options?: ClearStorageOptions): Promise<void>;
39
- autoActivate(): Promise<void>;
40
39
  /**
41
40
  * Record a replication error.
42
41
  *
@@ -47,11 +46,11 @@ export interface SyncRulesBucketStorage extends ObserverClient<SyncRulesBucketSt
47
46
  */
48
47
  reportError(e: any): Promise<void>;
49
48
  compact(options?: CompactOptions): Promise<void>;
50
- getCheckpoint(): Promise<ReplicationCheckpoint>;
51
49
  /**
52
- * Used to resolve "dynamic" parameter queries.
50
+ * Lightweight "compact" process to populate the checksum cache, if any.
53
51
  */
54
- getParameterSets(checkpoint: util.InternalOpId, lookups: ParameterLookup[]): Promise<SqliteJsonRow[]>;
52
+ populatePersistentChecksumCache(options?: Pick<CompactOptions, 'signal' | 'maxOpId'>): Promise<void>;
53
+ getCheckpoint(): Promise<ReplicationCheckpoint>;
55
54
  /**
56
55
  * Given two checkpoints, return the changes in bucket data and parameters that may have occurred
57
56
  * in that period.
@@ -87,6 +86,10 @@ export interface SyncRulesBucketStorage extends ObserverClient<SyncRulesBucketSt
87
86
  * Returns zero checksums for any buckets not found.
88
87
  */
89
88
  getChecksums(checkpoint: util.InternalOpId, buckets: string[]): Promise<util.ChecksumMap>;
89
+ /**
90
+ * Clear checksum cache. Primarily intended for tests.
91
+ */
92
+ clearChecksumCache(): void;
90
93
  }
91
94
  export interface SyncRulesBucketStorageListener {
92
95
  batchStarted: (batch: BucketStorageBatch) => void;
@@ -160,12 +163,18 @@ export interface CompactOptions {
160
163
  * These can be individual bucket names, or bucket definition names.
161
164
  */
162
165
  compactBuckets?: string[];
166
+ compactParameterData?: boolean;
163
167
  /** Minimum of 2 */
164
168
  clearBatchLimit?: number;
165
169
  /** Minimum of 1 */
166
170
  moveBatchLimit?: number;
167
171
  /** Minimum of 1 */
168
172
  moveBatchQueryLimit?: number;
173
+ /**
174
+ * Internal/testing use: Cache size for compacting parameters.
175
+ */
176
+ compactParameterCacheLimit?: number;
177
+ signal?: AbortSignal;
169
178
  }
170
179
  export interface ClearStorageOptions {
171
180
  signal?: AbortSignal;
@@ -197,6 +206,12 @@ export interface SyncBucketDataChunk {
197
206
  export interface ReplicationCheckpoint {
198
207
  readonly checkpoint: util.InternalOpId;
199
208
  readonly lsn: string | null;
209
+ /**
210
+ * Used to resolve "dynamic" parameter queries.
211
+ *
212
+ * This gets parameter sets specific to this checkpoint.
213
+ */
214
+ getParameterSets(lookups: ParameterLookup[]): Promise<SqliteJsonRow[]>;
200
215
  }
201
216
  export interface WatchWriteCheckpointOptions {
202
217
  /** user_id and client_id combined. */
@@ -1 +1 @@
1
- {"version":3,"file":"SyncRulesBucketStorage.js","sourceRoot":"","sources":["../../src/storage/SyncRulesBucketStorage.ts"],"names":[],"mappings":"AA4RA,MAAM,CAAC,MAAM,yBAAyB,GAAsB;IAC1D,kBAAkB,EAAE,IAAI,GAAG,EAAU;IACrC,qBAAqB,EAAE,IAAI;IAC3B,uBAAuB,EAAE,IAAI,GAAG,EAAU;IAC1C,0BAA0B,EAAE,IAAI;CACjC,CAAC"}
1
+ {"version":3,"file":"SyncRulesBucketStorage.js","sourceRoot":"","sources":["../../src/storage/SyncRulesBucketStorage.ts"],"names":[],"mappings":"AA+SA,MAAM,CAAC,MAAM,yBAAyB,GAAsB;IAC1D,kBAAkB,EAAE,IAAI,GAAG,EAAU;IACrC,qBAAqB,EAAE,IAAI;IAC3B,uBAAuB,EAAE,IAAI,GAAG,EAAU;IAC1C,0BAA0B,EAAE,IAAI;CACjC,CAAC"}
@@ -1,18 +1,20 @@
1
- import { BucketDescription, RequestParameters, SqlSyncRules } from '@powersync/service-sync-rules';
1
+ import { BucketDescription, BucketSource, RequestJwtPayload, RequestParameters, ResolvedBucket, SqlSyncRules } from '@powersync/service-sync-rules';
2
2
  import * as storage from '../storage/storage-index.js';
3
3
  import * as util from '../util/util-index.js';
4
4
  import { Logger } from '@powersync/lib-services-framework';
5
+ import { QuerierError } from '@powersync/service-sync-rules/src/BucketParameterQuerier.js';
5
6
  import { SyncContext } from './SyncContext.js';
7
+ export interface VersionedSyncRules {
8
+ syncRules: SqlSyncRules;
9
+ version: number;
10
+ }
6
11
  export interface BucketChecksumStateOptions {
7
12
  syncContext: SyncContext;
8
13
  bucketStorage: BucketChecksumStateStorage;
9
- syncRules: SqlSyncRules;
10
- syncParams: RequestParameters;
14
+ syncRules: VersionedSyncRules;
15
+ tokenPayload: RequestJwtPayload;
16
+ syncRequest: util.StreamingSyncRequest;
11
17
  logger?: Logger;
12
- initialBucketPositions?: {
13
- name: string;
14
- after: util.InternalOpId;
15
- }[];
16
18
  }
17
19
  type BucketSyncState = {
18
20
  start_op_id: util.InternalOpId;
@@ -37,6 +39,17 @@ export declare class BucketChecksumState {
37
39
  */
38
40
  private lastChecksums;
39
41
  private lastWriteCheckpoint;
42
+ /**
43
+ * Once we've sent the first full checkpoint line including all {@link util.Checkpoint.streams} that the user is
44
+ * subscribed to, we keep an index of the stream names to their index in that array.
45
+ *
46
+ * This is used to compress the representation of buckets in `checkpoint` and `checkpoint_diff` lines: For buckets
47
+ * that are part of sync rules or default streams, we need to include the name of the defining sync rule or definition
48
+ * yielding that bucket (so that clients can track progress for default streams).
49
+ * But instead of sending the name for each bucket, we use the fact that it's part of the streams array and only send
50
+ * their index, reducing the size of those messages.
51
+ */
52
+ private streamNameToIndex;
40
53
  private readonly parameterState;
41
54
  /**
42
55
  * Keep track of buckets that need to be downloaded. This is specifically relevant when
@@ -63,7 +76,7 @@ export interface CheckpointUpdate {
63
76
  /**
64
77
  * All buckets forming part of the checkpoint.
65
78
  */
66
- buckets: BucketDescription[];
79
+ buckets: ResolvedBucket[];
67
80
  /**
68
81
  * If present, a set of buckets that have been updated since the last checkpoint.
69
82
  *
@@ -74,15 +87,32 @@ export interface CheckpointUpdate {
74
87
  export declare class BucketParameterState {
75
88
  private readonly context;
76
89
  readonly bucketStorage: BucketChecksumStateStorage;
77
- readonly syncRules: SqlSyncRules;
90
+ readonly syncRules: VersionedSyncRules;
78
91
  readonly syncParams: RequestParameters;
79
92
  private readonly querier;
93
+ /**
94
+ * Static buckets. This map is guaranteed not to change during a request, since resolving static buckets can only
95
+ * take request parameters into account,
96
+ */
80
97
  private readonly staticBuckets;
98
+ private readonly includeDefaultStreams;
99
+ private readonly explicitStreamSubscriptions;
100
+ readonly streamErrors: Record<string, QuerierError[]>;
101
+ private readonly subscribedStreamNames;
81
102
  private readonly logger;
82
103
  private cachedDynamicBuckets;
83
104
  private cachedDynamicBucketSet;
84
105
  private readonly lookups;
85
- constructor(context: SyncContext, bucketStorage: BucketChecksumStateStorage, syncRules: SqlSyncRules, syncParams: RequestParameters, logger: Logger);
106
+ constructor(context: SyncContext, bucketStorage: BucketChecksumStateStorage, syncRules: VersionedSyncRules, tokenPayload: RequestJwtPayload, request: util.StreamingSyncRequest, logger: Logger);
107
+ /**
108
+ * Translates an internal sync-rules {@link ResolvedBucket} instance to the public
109
+ * {@link util.ClientBucketDescription}.
110
+ *
111
+ * @param lookupIndex A map from stream names to their index in {@link util.Checkpoint.streams}. These are used to
112
+ * reference default buckets by their stream index instead of duplicating the name on wire.
113
+ */
114
+ translateResolvedBucket(description: ResolvedBucket, lookupIndex: Map<string, number>): util.ClientBucketDescription;
115
+ isSubscribedToStream(desc: BucketSource): boolean;
86
116
  getCheckpointUpdate(checkpoint: storage.StorageCheckpointUpdate): Promise<CheckpointUpdate>;
87
117
  /**
88
118
  * For static buckets, we can keep track of which buckets have been updated.
@@ -118,5 +148,5 @@ export interface CheckpointLine {
118
148
  hasMore: boolean;
119
149
  }): void;
120
150
  }
121
- export type BucketChecksumStateStorage = Pick<storage.SyncRulesBucketStorage, 'getChecksums' | 'getParameterSets'>;
151
+ export type BucketChecksumStateStorage = Pick<storage.SyncRulesBucketStorage, 'getChecksums'>;
122
152
  export {};
@@ -1,3 +1,4 @@
1
+ import { RequestParameters, SqlSyncRules } from '@powersync/service-sync-rules';
1
2
  import * as util from '../util/util-index.js';
2
3
  import { ErrorCode, ServiceAssertionError, ServiceError, logger as defaultLogger } from '@powersync/lib-services-framework';
3
4
  import { JSONBig } from '@powersync/service-jsonbig';
@@ -22,6 +23,17 @@ export class BucketChecksumState {
22
23
  */
23
24
  lastChecksums = null;
24
25
  lastWriteCheckpoint = null;
26
+ /**
27
+ * Once we've sent the first full checkpoint line including all {@link util.Checkpoint.streams} that the user is
28
+ * subscribed to, we keep an index of the stream names to their index in that array.
29
+ *
30
+ * This is used to compress the representation of buckets in `checkpoint` and `checkpoint_diff` lines: For buckets
31
+ * that are part of sync rules or default streams, we need to include the name of the defining sync rule or definition
32
+ * yielding that bucket (so that clients can track progress for default streams).
33
+ * But instead of sending the name for each bucket, we use the fact that it's part of the streams array and only send
34
+ * their index, reducing the size of those messages.
35
+ */
36
+ streamNameToIndex = null;
25
37
  parameterState;
26
38
  /**
27
39
  * Keep track of buckets that need to be downloaded. This is specifically relevant when
@@ -33,10 +45,10 @@ export class BucketChecksumState {
33
45
  this.context = options.syncContext;
34
46
  this.bucketStorage = options.bucketStorage;
35
47
  this.logger = options.logger ?? defaultLogger;
36
- this.parameterState = new BucketParameterState(options.syncContext, options.bucketStorage, options.syncRules, options.syncParams, this.logger);
48
+ this.parameterState = new BucketParameterState(options.syncContext, options.bucketStorage, options.syncRules, options.tokenPayload, options.syncRequest, this.logger);
37
49
  this.bucketDataPositions = new Map();
38
- for (let { name, after: start } of options.initialBucketPositions ?? []) {
39
- this.bucketDataPositions.set(name, { start_op_id: start });
50
+ for (let { name, after: start } of options.syncRequest.buckets ?? []) {
51
+ this.bucketDataPositions.set(name, { start_op_id: BigInt(start) });
40
52
  }
41
53
  }
42
54
  /**
@@ -105,6 +117,7 @@ export class BucketChecksumState {
105
117
  // TODO: If updatedBuckets is present, we can use that to more efficiently calculate a diff,
106
118
  // and avoid any unnecessary loops through the entire list of buckets.
107
119
  const diff = util.checksumsDiff(this.lastChecksums, checksumMap);
120
+ const streamNameToIndex = this.streamNameToIndex;
108
121
  if (this.lastWriteCheckpoint == writeCheckpoint &&
109
122
  diff.removedBuckets.length == 0 &&
110
123
  diff.updatedBuckets.length == 0) {
@@ -124,12 +137,12 @@ export class BucketChecksumState {
124
137
  }
125
138
  const updatedBucketDescriptions = diff.updatedBuckets.map((e) => ({
126
139
  ...e,
127
- priority: bucketDescriptionMap.get(e.bucket).priority
140
+ ...this.parameterState.translateResolvedBucket(bucketDescriptionMap.get(e.bucket), streamNameToIndex)
128
141
  }));
129
142
  bucketsToFetch = [...generateBucketsToFetch].map((b) => {
130
143
  return {
131
- bucket: b,
132
- priority: bucketDescriptionMap.get(b).priority
144
+ priority: bucketDescriptionMap.get(b).priority,
145
+ bucket: b
133
146
  };
134
147
  });
135
148
  deferredLog = () => {
@@ -161,15 +174,32 @@ export class BucketChecksumState {
161
174
  message += `buckets: ${allBuckets.length} ${limitedBuckets(allBuckets, 20)}`;
162
175
  this.logger.info(message, { checkpoint: base.checkpoint, user_id: user_id, buckets: allBuckets.length });
163
176
  };
164
- bucketsToFetch = allBuckets;
177
+ bucketsToFetch = allBuckets.map((b) => ({ bucket: b.bucket, priority: b.priority }));
178
+ const subscriptions = [];
179
+ const streamNameToIndex = new Map();
180
+ this.streamNameToIndex = streamNameToIndex;
181
+ for (const source of this.parameterState.syncRules.syncRules.bucketSources) {
182
+ if (this.parameterState.isSubscribedToStream(source)) {
183
+ streamNameToIndex.set(source.name, subscriptions.length);
184
+ subscriptions.push({
185
+ name: source.name,
186
+ is_default: source.subscribedToByDefault,
187
+ errors: this.parameterState.streamErrors[source.name]?.map((e) => ({
188
+ subscription: e.subscription?.opaque_id ?? 'default',
189
+ message: e.message
190
+ })) ?? []
191
+ });
192
+ }
193
+ }
165
194
  checkpointLine = {
166
195
  checkpoint: {
167
196
  last_op_id: util.internalToExternalOpId(base.checkpoint),
168
197
  write_checkpoint: writeCheckpoint ? String(writeCheckpoint) : undefined,
169
198
  buckets: [...checksumMap.values()].map((e) => ({
170
199
  ...e,
171
- priority: bucketDescriptionMap.get(e.bucket).priority
172
- }))
200
+ ...this.parameterState.translateResolvedBucket(bucketDescriptionMap.get(e.bucket), streamNameToIndex)
201
+ })),
202
+ streams: subscriptions
173
203
  }
174
204
  };
175
205
  }
@@ -254,20 +284,99 @@ export class BucketParameterState {
254
284
  syncRules;
255
285
  syncParams;
256
286
  querier;
287
+ /**
288
+ * Static buckets. This map is guaranteed not to change during a request, since resolving static buckets can only
289
+ * take request parameters into account,
290
+ */
257
291
  staticBuckets;
292
+ includeDefaultStreams;
293
+ // Indexed by the client-side id
294
+ explicitStreamSubscriptions;
295
+ // Indexed by descriptor name.
296
+ streamErrors;
297
+ subscribedStreamNames;
258
298
  logger;
259
299
  cachedDynamicBuckets = null;
260
300
  cachedDynamicBucketSet = null;
261
301
  lookups;
262
- constructor(context, bucketStorage, syncRules, syncParams, logger) {
302
+ constructor(context, bucketStorage, syncRules, tokenPayload, request, logger) {
263
303
  this.context = context;
264
304
  this.bucketStorage = bucketStorage;
265
305
  this.syncRules = syncRules;
266
- this.syncParams = syncParams;
306
+ this.syncParams = new RequestParameters(tokenPayload, request.parameters ?? {});
267
307
  this.logger = logger;
268
- this.querier = syncRules.getBucketParameterQuerier(this.syncParams);
269
- this.staticBuckets = new Map(this.querier.staticBuckets.map((b) => [b.bucket, b]));
308
+ const streamsByName = {};
309
+ const subscriptions = request.streams;
310
+ const explicitStreamSubscriptions = subscriptions?.subscriptions ?? [];
311
+ if (subscriptions) {
312
+ for (let i = 0; i < explicitStreamSubscriptions.length; i++) {
313
+ const subscription = explicitStreamSubscriptions[i];
314
+ const syncRuleStream = {
315
+ parameters: subscription.parameters ?? {},
316
+ opaque_id: i
317
+ };
318
+ if (Object.hasOwn(streamsByName, subscription.stream)) {
319
+ streamsByName[subscription.stream].push(syncRuleStream);
320
+ }
321
+ else {
322
+ streamsByName[subscription.stream] = [syncRuleStream];
323
+ }
324
+ }
325
+ }
326
+ this.includeDefaultStreams = subscriptions?.include_defaults ?? true;
327
+ this.explicitStreamSubscriptions = explicitStreamSubscriptions;
328
+ const { querier, errors } = syncRules.syncRules.getBucketParameterQuerier({
329
+ globalParameters: this.syncParams,
330
+ hasDefaultStreams: this.includeDefaultStreams,
331
+ streams: streamsByName,
332
+ bucketIdTransformer: SqlSyncRules.versionedBucketIdTransformer(`${syncRules.version}`)
333
+ });
334
+ this.querier = querier;
335
+ this.streamErrors = Object.groupBy(errors, (e) => e.descriptor);
336
+ this.staticBuckets = new Map(mergeBuckets(this.querier.staticBuckets).map((b) => [b.bucket, b]));
270
337
  this.lookups = new Set(this.querier.parameterQueryLookups.map((l) => JSONBig.stringify(l.values)));
338
+ this.subscribedStreamNames = new Set(Object.keys(streamsByName));
339
+ }
340
+ /**
341
+ * Translates an internal sync-rules {@link ResolvedBucket} instance to the public
342
+ * {@link util.ClientBucketDescription}.
343
+ *
344
+ * @param lookupIndex A map from stream names to their index in {@link util.Checkpoint.streams}. These are used to
345
+ * reference default buckets by their stream index instead of duplicating the name on wire.
346
+ */
347
+ translateResolvedBucket(description, lookupIndex) {
348
+ // If the client is overriding the priority of any stream that yields this bucket, sync the bucket with that
349
+ // priority.
350
+ let priorityOverride = null;
351
+ for (const reason of description.inclusion_reasons) {
352
+ if (reason != 'default') {
353
+ const requestedPriority = this.explicitStreamSubscriptions[reason.subscription]?.override_priority;
354
+ if (requestedPriority != null) {
355
+ if (priorityOverride == null) {
356
+ priorityOverride = requestedPriority;
357
+ }
358
+ else {
359
+ priorityOverride = Math.min(requestedPriority, priorityOverride);
360
+ }
361
+ }
362
+ }
363
+ }
364
+ return {
365
+ bucket: description.bucket,
366
+ priority: priorityOverride ?? description.priority,
367
+ subscriptions: description.inclusion_reasons.map((reason) => {
368
+ if (reason == 'default') {
369
+ const stream = description.definition;
370
+ return { default: lookupIndex.get(stream) };
371
+ }
372
+ else {
373
+ return { sub: reason.subscription };
374
+ }
375
+ })
376
+ };
377
+ }
378
+ isSubscribedToStream(desc) {
379
+ return (desc.subscribedToByDefault && this.includeDefaultStreams) || this.subscribedStreamNames.has(desc.name);
271
380
  }
272
381
  async getCheckpointUpdate(checkpoint) {
273
382
  const querier = this.querier;
@@ -295,17 +404,17 @@ export class BucketParameterState {
295
404
  * For static buckets, we can keep track of which buckets have been updated.
296
405
  */
297
406
  async getCheckpointUpdateStatic(checkpoint) {
298
- const querier = this.querier;
407
+ const staticBuckets = [...this.staticBuckets.values()];
299
408
  const update = checkpoint.update;
300
409
  if (update.invalidateDataBuckets) {
301
410
  return {
302
- buckets: querier.staticBuckets,
411
+ buckets: staticBuckets,
303
412
  updatedBuckets: INVALIDATE_ALL_BUCKETS
304
413
  };
305
414
  }
306
415
  const updatedBuckets = new Set(getIntersection(this.staticBuckets, update.updatedDataBuckets));
307
416
  return {
308
- buckets: querier.staticBuckets,
417
+ buckets: staticBuckets,
309
418
  updatedBuckets
310
419
  };
311
420
  }
@@ -315,7 +424,7 @@ export class BucketParameterState {
315
424
  async getCheckpointUpdateDynamic(checkpoint) {
316
425
  const querier = this.querier;
317
426
  const storage = this.bucketStorage;
318
- const staticBuckets = querier.staticBuckets;
427
+ const staticBuckets = this.staticBuckets.values();
319
428
  const update = checkpoint.update;
320
429
  let hasParameterChange = false;
321
430
  let invalidateDataBuckets = false;
@@ -338,7 +447,7 @@ export class BucketParameterState {
338
447
  if (hasParameterChange || this.cachedDynamicBuckets == null || this.cachedDynamicBucketSet == null) {
339
448
  dynamicBuckets = await querier.queryDynamicBucketDescriptions({
340
449
  getParameterSets(lookups) {
341
- return storage.getParameterSets(checkpoint.base.checkpoint, lookups);
450
+ return checkpoint.base.getParameterSets(lookups);
342
451
  }
343
452
  });
344
453
  this.cachedDynamicBuckets = dynamicBuckets;
@@ -356,7 +465,7 @@ export class BucketParameterState {
356
465
  }
357
466
  }
358
467
  }
359
- const allBuckets = [...staticBuckets, ...dynamicBuckets];
468
+ const allBuckets = [...staticBuckets, ...mergeBuckets(dynamicBuckets)];
360
469
  if (invalidateDataBuckets) {
361
470
  return {
362
471
  buckets: allBuckets,
@@ -387,4 +496,31 @@ function limitedBuckets(buckets, limit) {
387
496
  const limited = buckets.slice(0, limit);
388
497
  return `${JSON.stringify(limited)}...`;
389
498
  }
499
+ /**
500
+ * Resolves duplicate buckets in the given array, merging the inclusion reasons for duplicate.
501
+ *
502
+ * It's possible for duplicates to occur when a stream has multiple subscriptions, consider e.g.
503
+ *
504
+ * ```
505
+ * sync_streams:
506
+ * assets_by_category:
507
+ * query: select * from assets where category in (request.parameters() -> 'categories')
508
+ * ```
509
+ *
510
+ * Here, a client might subscribe once with `{"categories": [1]}` and once with `{"categories": [1, 2]}`. Since each
511
+ * subscription is evaluated independently, this would lead to three buckets, with a duplicate `assets_by_category[1]`
512
+ * bucket.
513
+ */
514
+ function mergeBuckets(buckets) {
515
+ const byBucketId = {};
516
+ for (const bucket of buckets) {
517
+ if (Object.hasOwn(byBucketId, bucket.bucket)) {
518
+ byBucketId[bucket.bucket].inclusion_reasons.push(...bucket.inclusion_reasons);
519
+ }
520
+ else {
521
+ byBucketId[bucket.bucket] = structuredClone(bucket);
522
+ }
523
+ }
524
+ return Object.values(byBucketId);
525
+ }
390
526
  //# sourceMappingURL=BucketChecksumState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BucketChecksumState.js","sourceRoot":"","sources":["../../src/sync/BucketChecksumState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BucketChecksumState.js","sourceRoot":"","sources":["../../src/sync/BucketChecksumState.ts"],"names":[],"mappings":"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"}
@@ -7,16 +7,22 @@ export declare class RequestTracker {
7
7
  private metrics;
8
8
  operationsSynced: number;
9
9
  dataSyncedBytes: number;
10
+ dataSentBytes: number;
10
11
  operationCounts: OperationCounts;
11
12
  largeBuckets: Record<string, number>;
13
+ private encoding;
12
14
  constructor(metrics: MetricsEngine);
13
15
  addOperationsSynced(operations: OperationsSentStats): void;
14
- addDataSynced(bytes: number): void;
16
+ setCompressed(encoding: string): void;
17
+ addPlaintextDataSynced(bytes: number): void;
18
+ addCompressedDataSent(bytes: number): void;
15
19
  getLogMeta(): {
16
20
  operations_synced: number;
17
21
  data_synced_bytes: number;
22
+ data_sent_bytes: number;
18
23
  operation_counts: OperationCounts;
19
24
  large_buckets: Record<string, number>;
25
+ encoding: string | undefined;
20
26
  };
21
27
  }
22
28
  export interface OperationCounts {