@powersync/service-core 1.22.0 → 1.23.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.
- package/CHANGELOG.md +17 -0
- package/dist/api/RouteAPI.d.ts +2 -2
- package/dist/api/diagnostics.d.ts +12 -1
- package/dist/api/diagnostics.js +34 -22
- package/dist/api/diagnostics.js.map +1 -1
- package/dist/entry/commands/compact-action.js +1 -1
- package/dist/entry/commands/compact-action.js.map +1 -1
- package/dist/modules/AbstractModule.d.ts +6 -2
- package/dist/modules/AbstractModule.js.map +1 -1
- package/dist/replication/AbstractReplicator.d.ts +2 -2
- package/dist/replication/AbstractReplicator.js +24 -23
- package/dist/replication/AbstractReplicator.js.map +1 -1
- package/dist/replication/ReplicationModule.d.ts +3 -3
- package/dist/replication/ReplicationModule.js.map +1 -1
- package/dist/routes/configure-fastify.d.ts +12 -12
- package/dist/routes/endpoints/admin.d.ts +24 -24
- package/dist/routes/endpoints/admin.js +44 -34
- package/dist/routes/endpoints/admin.js.map +1 -1
- package/dist/routes/endpoints/checkpointing.js +1 -1
- package/dist/routes/endpoints/checkpointing.js.map +1 -1
- package/dist/routes/endpoints/socket-route.js +1 -1
- package/dist/routes/endpoints/socket-route.js.map +1 -1
- package/dist/routes/endpoints/sync-rules.js +22 -13
- package/dist/routes/endpoints/sync-rules.js.map +1 -1
- package/dist/routes/endpoints/sync-stream.js +1 -1
- package/dist/routes/endpoints/sync-stream.js.map +1 -1
- package/dist/runner/teardown.js +8 -8
- package/dist/runner/teardown.js.map +1 -1
- package/dist/storage/BucketStorageBatch.d.ts +0 -6
- package/dist/storage/BucketStorageBatch.js.map +1 -1
- package/dist/storage/BucketStorageFactory.d.ts +22 -27
- package/dist/storage/BucketStorageFactory.js +4 -18
- package/dist/storage/BucketStorageFactory.js.map +1 -1
- package/dist/storage/ParsedSyncConfigSet.d.ts +23 -0
- package/dist/storage/ParsedSyncConfigSet.js +2 -0
- package/dist/storage/ParsedSyncConfigSet.js.map +1 -0
- package/dist/storage/PersistedReplicationStream.d.ts +32 -0
- package/dist/storage/PersistedReplicationStream.js +26 -0
- package/dist/storage/PersistedReplicationStream.js.map +1 -0
- package/dist/storage/PersistedSyncConfigContent.d.ts +60 -0
- package/dist/storage/PersistedSyncConfigContent.js +123 -0
- package/dist/storage/PersistedSyncConfigContent.js.map +1 -0
- package/dist/storage/PersistedSyncConfigStatus.d.ts +13 -0
- package/dist/storage/PersistedSyncConfigStatus.js +2 -0
- package/dist/storage/PersistedSyncConfigStatus.js.map +1 -0
- package/dist/storage/SourceTable.d.ts +9 -3
- package/dist/storage/SourceTable.js +13 -3
- package/dist/storage/SourceTable.js.map +1 -1
- package/dist/storage/SyncRulesBucketStorage.d.ts +59 -16
- package/dist/storage/SyncRulesBucketStorage.js.map +1 -1
- package/dist/storage/implementation/BucketDefinitionMapping.d.ts +117 -0
- package/dist/storage/implementation/BucketDefinitionMapping.js +277 -0
- package/dist/storage/implementation/BucketDefinitionMapping.js.map +1 -0
- package/dist/storage/implementation/IncrementalReprocessingCompatibility.d.ts +6 -0
- package/dist/storage/implementation/IncrementalReprocessingCompatibility.js +31 -0
- package/dist/storage/implementation/IncrementalReprocessingCompatibility.js.map +1 -0
- package/dist/storage/implementation/IncrementalReprocessingSyncConfigLog.d.ts +17 -0
- package/dist/storage/implementation/IncrementalReprocessingSyncConfigLog.js +62 -0
- package/dist/storage/implementation/IncrementalReprocessingSyncConfigLog.js.map +1 -0
- package/dist/storage/implementation/ReplicationStreamStorageIds.d.ts +15 -0
- package/dist/storage/implementation/ReplicationStreamStorageIds.js +20 -0
- package/dist/storage/implementation/ReplicationStreamStorageIds.js.map +1 -0
- package/dist/storage/storage-index.d.ts +8 -1
- package/dist/storage/storage-index.js +8 -1
- package/dist/storage/storage-index.js.map +1 -1
- package/dist/sync/sync.js +5 -0
- package/dist/sync/sync.js.map +1 -1
- package/dist/util/checkpointing.js +1 -1
- package/dist/util/checkpointing.js.map +1 -1
- package/dist/util/config/types.d.ts +1 -1
- package/dist/util/lsn.d.ts +4 -0
- package/dist/util/lsn.js +10 -0
- package/dist/util/lsn.js.map +1 -1
- package/package.json +6 -7
- package/src/api/RouteAPI.ts +2 -2
- package/src/api/diagnostics.ts +43 -26
- package/src/entry/commands/compact-action.ts +1 -1
- package/src/modules/AbstractModule.ts +6 -2
- package/src/replication/AbstractReplicator.ts +27 -26
- package/src/replication/ReplicationModule.ts +2 -3
- package/src/routes/endpoints/admin.ts +70 -49
- package/src/routes/endpoints/checkpointing.ts +1 -1
- package/src/routes/endpoints/socket-route.ts +1 -1
- package/src/routes/endpoints/sync-rules.ts +23 -13
- package/src/routes/endpoints/sync-stream.ts +1 -1
- package/src/runner/teardown.ts +8 -8
- package/src/storage/BucketStorageBatch.ts +0 -7
- package/src/storage/BucketStorageFactory.ts +30 -39
- package/src/storage/ParsedSyncConfigSet.ts +25 -0
- package/src/storage/PersistedReplicationStream.ts +55 -0
- package/src/storage/PersistedSyncConfigContent.ts +188 -0
- package/src/storage/PersistedSyncConfigStatus.ts +14 -0
- package/src/storage/SourceTable.ts +20 -3
- package/src/storage/SyncRulesBucketStorage.ts +64 -16
- package/src/storage/implementation/BucketDefinitionMapping.ts +436 -0
- package/src/storage/implementation/IncrementalReprocessingCompatibility.ts +41 -0
- package/src/storage/implementation/IncrementalReprocessingSyncConfigLog.ts +109 -0
- package/src/storage/implementation/ReplicationStreamStorageIds.ts +21 -0
- package/src/storage/storage-index.ts +9 -1
- package/src/sync/sync.ts +5 -0
- package/src/util/checkpointing.ts +1 -1
- package/src/util/config/types.ts +1 -1
- package/src/util/lsn.ts +9 -0
- package/test/src/diagnostics.test.ts +61 -34
- package/test/src/module-loader.test.ts +33 -1
- package/test/src/routes/admin.test.ts +180 -18
- package/test/src/routes/mocks.ts +6 -2
- package/tsconfig.json +1 -4
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/storage/PersistedSyncRulesContent.d.ts +0 -59
- package/dist/storage/PersistedSyncRulesContent.js +0 -100
- package/dist/storage/PersistedSyncRulesContent.js.map +0 -1
- package/src/storage/PersistedSyncRulesContent.ts +0 -174
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export function formatIncrementalSyncConfigUpdateLog(log) {
|
|
2
|
+
return [
|
|
3
|
+
formatDefinitionSection('Reused definitions', log.reusedDefinitions),
|
|
4
|
+
formatDefinitionSection('New definitions', log.addedDefinitions, { includeSnapshotTables: true }),
|
|
5
|
+
formatDefinitionSection('Definitions to drop after switching', log.droppedDefinitions)
|
|
6
|
+
].join('\n');
|
|
7
|
+
}
|
|
8
|
+
export function describeIncrementalSyncConfigUpdate(options) {
|
|
9
|
+
const { activeMappings, newMapping, newSyncConfig, mappingChanges } = options;
|
|
10
|
+
const newDefinitionKeys = new Set(newMapping.allDefinitionEntries().map(definitionKey));
|
|
11
|
+
const activeDefinitions = uniqueDefinitions(activeMappings.flatMap((mapping) => mapping.allDefinitionEntries()));
|
|
12
|
+
return {
|
|
13
|
+
reusedDefinitions: mappingChanges.reusedDefinitions,
|
|
14
|
+
addedDefinitions: mappingChanges.addedDefinitions.map((definition) => {
|
|
15
|
+
const sourceTables = sourceTablesForDefinition(newSyncConfig, newMapping, definition);
|
|
16
|
+
return {
|
|
17
|
+
...definition,
|
|
18
|
+
sourceTables
|
|
19
|
+
};
|
|
20
|
+
}),
|
|
21
|
+
droppedDefinitions: activeDefinitions.filter((definition) => !newDefinitionKeys.has(definitionKey(definition)))
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function sourceTablesForDefinition(syncConfig, mapping, definition) {
|
|
25
|
+
if (definition.type == 'bucket_data') {
|
|
26
|
+
return sourceTablesForSources(syncConfig.config.bucketDataSources.filter((source) => mapping.bucketSourceId(source) == definition.id));
|
|
27
|
+
}
|
|
28
|
+
return sourceTablesForSources(syncConfig.config.bucketParameterLookupSources.filter((source) => mapping.parameterLookupId(source) == definition.id));
|
|
29
|
+
}
|
|
30
|
+
function sourceTablesForSources(sources) {
|
|
31
|
+
return uniqueSorted(sources.flatMap((source) => [...source.getSourceTables()].map((table) => table.tablePattern)));
|
|
32
|
+
}
|
|
33
|
+
function definitionKey(definition) {
|
|
34
|
+
return `${definition.type}:${definition.id}`;
|
|
35
|
+
}
|
|
36
|
+
function uniqueSorted(values) {
|
|
37
|
+
return [...new Set(values)].sort();
|
|
38
|
+
}
|
|
39
|
+
function uniqueDefinitions(definitions) {
|
|
40
|
+
const byKey = new Map();
|
|
41
|
+
for (const definition of definitions) {
|
|
42
|
+
byKey.set(definitionKey(definition), definition);
|
|
43
|
+
}
|
|
44
|
+
return [...byKey.values()];
|
|
45
|
+
}
|
|
46
|
+
function formatDefinitionSection(title, definitions, options = {}) {
|
|
47
|
+
if (definitions.length == 0) {
|
|
48
|
+
return `${title}: none`;
|
|
49
|
+
}
|
|
50
|
+
return [`${title}:`, ...definitions.map((definition) => ` - ${formatDefinition(definition, options)}`)].join('\n');
|
|
51
|
+
}
|
|
52
|
+
function formatDefinition(definition, options) {
|
|
53
|
+
const details = [`type=${definition.type}`, `id=${definition.id}`, `name=${definition.name}`];
|
|
54
|
+
if (definition.sourceTables != null) {
|
|
55
|
+
details.push(`tables=${formatList(definition.sourceTables)}`);
|
|
56
|
+
}
|
|
57
|
+
return details.join(', ');
|
|
58
|
+
}
|
|
59
|
+
function formatList(values) {
|
|
60
|
+
return values.length == 0 ? 'none' : values.join(', ');
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=IncrementalReprocessingSyncConfigLog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IncrementalReprocessingSyncConfigLog.js","sourceRoot":"","sources":["../../../src/storage/implementation/IncrementalReprocessingSyncConfigLog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BucketDefinitionId, ParameterIndexId } from '@powersync/service-sync-rules';
|
|
2
|
+
import { SingleSyncConfigBucketDefinitionMapping } from './BucketDefinitionMapping.js';
|
|
3
|
+
/**
|
|
4
|
+
* Persisted storage ids for a replication stream, derived from the rule_mapping documents
|
|
5
|
+
* of all its sync configs.
|
|
6
|
+
*
|
|
7
|
+
* This requires no parsed sync configs, and deliberately does not resolve individual
|
|
8
|
+
* sources - use the parsed-set-bound {@link BucketDefinitionMapping} for that.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ReplicationStreamStorageIds {
|
|
11
|
+
private readonly mappings;
|
|
12
|
+
constructor(mappings: SingleSyncConfigBucketDefinitionMapping[]);
|
|
13
|
+
get bucketDefinitionIds(): BucketDefinitionId[];
|
|
14
|
+
get parameterIndexIds(): ParameterIndexId[];
|
|
15
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persisted storage ids for a replication stream, derived from the rule_mapping documents
|
|
3
|
+
* of all its sync configs.
|
|
4
|
+
*
|
|
5
|
+
* This requires no parsed sync configs, and deliberately does not resolve individual
|
|
6
|
+
* sources - use the parsed-set-bound {@link BucketDefinitionMapping} for that.
|
|
7
|
+
*/
|
|
8
|
+
export class ReplicationStreamStorageIds {
|
|
9
|
+
mappings;
|
|
10
|
+
constructor(mappings) {
|
|
11
|
+
this.mappings = mappings;
|
|
12
|
+
}
|
|
13
|
+
get bucketDefinitionIds() {
|
|
14
|
+
return [...new Set(this.mappings.flatMap((mapping) => mapping.allBucketDefinitionIds()))];
|
|
15
|
+
}
|
|
16
|
+
get parameterIndexIds() {
|
|
17
|
+
return [...new Set(this.mappings.flatMap((mapping) => mapping.allParameterIndexIds()))];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ReplicationStreamStorageIds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReplicationStreamStorageIds.js","sourceRoot":"","sources":["../../../src/storage/implementation/ReplicationStreamStorageIds.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,OAAO,2BAA2B;IACT;IAA7B,YAA6B,QAAmD;QAAnD,aAAQ,GAAR,QAAQ,CAA2C;IAAG,CAAC;IAEpF,IAAI,mBAAmB;QACrB,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;CACF"}
|
|
@@ -3,7 +3,10 @@ export * from './BucketStorage.js';
|
|
|
3
3
|
export * from './BucketStorageBatch.js';
|
|
4
4
|
export * from './BucketStorageFactory.js';
|
|
5
5
|
export * from './ChecksumCache.js';
|
|
6
|
-
export * from './
|
|
6
|
+
export * from './ParsedSyncConfigSet.js';
|
|
7
|
+
export * from './PersistedReplicationStream.js';
|
|
8
|
+
export * from './PersistedSyncConfigContent.js';
|
|
9
|
+
export * from './PersistedSyncConfigStatus.js';
|
|
7
10
|
export * from './ReplicationEventPayload.js';
|
|
8
11
|
export * from './ReplicationLock.js';
|
|
9
12
|
export * from './ReportStorage.js';
|
|
@@ -15,3 +18,7 @@ export * from './StorageProvider.js';
|
|
|
15
18
|
export * from './StorageVersionConfig.js';
|
|
16
19
|
export * from './SyncRulesBucketStorage.js';
|
|
17
20
|
export * from './WriteCheckpointAPI.js';
|
|
21
|
+
export * from './implementation/BucketDefinitionMapping.js';
|
|
22
|
+
export * from './implementation/IncrementalReprocessingCompatibility.js';
|
|
23
|
+
export * from './implementation/IncrementalReprocessingSyncConfigLog.js';
|
|
24
|
+
export * from './implementation/ReplicationStreamStorageIds.js';
|
|
@@ -3,7 +3,10 @@ export * from './BucketStorage.js';
|
|
|
3
3
|
export * from './BucketStorageBatch.js';
|
|
4
4
|
export * from './BucketStorageFactory.js';
|
|
5
5
|
export * from './ChecksumCache.js';
|
|
6
|
-
export * from './
|
|
6
|
+
export * from './ParsedSyncConfigSet.js';
|
|
7
|
+
export * from './PersistedReplicationStream.js';
|
|
8
|
+
export * from './PersistedSyncConfigContent.js';
|
|
9
|
+
export * from './PersistedSyncConfigStatus.js';
|
|
7
10
|
export * from './ReplicationEventPayload.js';
|
|
8
11
|
export * from './ReplicationLock.js';
|
|
9
12
|
export * from './ReportStorage.js';
|
|
@@ -15,4 +18,8 @@ export * from './StorageProvider.js';
|
|
|
15
18
|
export * from './StorageVersionConfig.js';
|
|
16
19
|
export * from './SyncRulesBucketStorage.js';
|
|
17
20
|
export * from './WriteCheckpointAPI.js';
|
|
21
|
+
export * from './implementation/BucketDefinitionMapping.js';
|
|
22
|
+
export * from './implementation/IncrementalReprocessingCompatibility.js';
|
|
23
|
+
export * from './implementation/IncrementalReprocessingSyncConfigLog.js';
|
|
24
|
+
export * from './implementation/ReplicationStreamStorageIds.js';
|
|
18
25
|
//# sourceMappingURL=storage-index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-index.js","sourceRoot":"","sources":["../../src/storage/storage-index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"storage-index.js","sourceRoot":"","sources":["../../src/storage/storage-index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AAExC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,0DAA0D,CAAC;AACzE,cAAc,0DAA0D,CAAC;AACzE,cAAc,iDAAiD,CAAC"}
|
package/dist/sync/sync.js
CHANGED
|
@@ -240,6 +240,11 @@ async function* bucketDataBatch(request) {
|
|
|
240
240
|
checkpointInvalidated = true;
|
|
241
241
|
}
|
|
242
242
|
if (r.data.length == 0) {
|
|
243
|
+
// An empty chunk is not sent to the client, but may still report progress:
|
|
244
|
+
// storage can emit an empty chunk for a bucket that has no operations in the
|
|
245
|
+
// requested range, and its position must advance so the bucket is not
|
|
246
|
+
// re-requested indefinitely.
|
|
247
|
+
checkpointLine.updateBucketPosition({ bucket: r.bucket, nextAfter: BigInt(r.next_after), hasMore: r.has_more });
|
|
243
248
|
continue;
|
|
244
249
|
}
|
|
245
250
|
logger.debug(`Sending data for ${r.bucket}`);
|
package/dist/sync/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9C,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAE9C,OAAO,EAAU,MAAM,IAAI,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAkB,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAuC,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzF,OAAO,EAAsB,yBAAyB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAmBvG,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,cAAc,CACnC,OAA6B;IAE7B,MAAM,EACJ,WAAW,EACX,aAAa,EACb,SAAS,EACT,MAAM,EACN,KAAK,EACL,kBAAkB,EAClB,OAAO,EACP,MAAM,EACN,gBAAgB,EACjB,GAAG,OAAO,CAAC;IACZ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;IAE/C,qEAAqE;IACrE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,gBAAgB,CACrB,OAAO,EACP,GAAG,EAAE;YACH,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;QACF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IACD,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,mBAAmB,CAChC,WAAW,EACX,aAAa,EACb,SAAS,EACT,MAAM,EACN,KAAK,EACL,OAAO,EACP,UAAU,CAAC,MAAM,EACjB,MAAM,EACN,gBAAgB,CACjB,CAAC;IACF,sEAAsE;IACtE,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAEpE,IAAI,CAAC;QACH,KAAK,CAAC,CAAC,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,UAAU,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;YAAS,CAAC;QACT,iFAAiF;QACjF,qBAAqB;QACrB,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,mBAAmB,CACjC,WAAwB,EACxB,aAA6C,EAC7C,SAA6B,EAC7B,MAAiC,EACjC,YAA6B,EAC7B,OAAuB,EACvB,MAAmB,EACnB,MAAc,EACd,gBAAyB;IAEzB,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAE5F,MAAM,aAAa,GAAG,IAAI,mBAAmB,CAAC;QAC5C,WAAW;QACX,aAAa;QACb,SAAS;QACT,YAAY;QACZ,WAAW,EAAE,MAAM;QACnB,MAAM,EAAE,MAAM;KACf,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,aAAa,CAAC,sBAAsB,CAAC;QAClD,OAAO,EAAE,gBAAgB;QACzB,MAAM;KACP,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IAOtD,KAAK,UAAU,wBAAwB;QACrC,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;IAClF,CAAC;IAED,IAAI,CAAC;QACH,IAAI,qBAAmG,CAAC;QAExG,GAAG,CAAC;YACF,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC3B,oFAAoF;gBACpF,sCAAsC;gBACtC,qBAAqB,GAAG,cAAc,CAAC,wBAAwB,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC;YACzC,qBAAqB,GAAG,SAAS,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;gBAC9B,MAAM,IAAI,CAAC,MAAM,CAAC;YACpB,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM;YACR,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;YACnC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,oBAAoB;gBACpB,SAAS;YACX,CAAC;YAED,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;YAEhD,+EAA+E;YAC/E,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,cAAc,CAAC;YAErB,8GAA8G;YAC9G,kHAAkH;YAClH,iHAAiH;YACjH,sBAAsB;YACtB,MAAM,yBAAyB,GAAG,IAAI,eAAe,EAAE,CAAC;YACxD,IAAI,gBAAgB,GAAG,CAAC,CAAC;YAEzB,MAAM,qBAAqB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YAE1F,MAAM,iBAAiB,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAClG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC;YACpF,MAAM,cAAc,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAErD,wGAAwG;YACxG,+FAA+F;YAC/F,8GAA8G;YAC9G,iBAAiB;YACjB,MAAM,eAAe,GAAgD,iBAAiB,CAAC;YACvF,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAChC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YACnC,CAAC;YAED,SAAS,yBAAyB;gBAChC,IAAI,gBAAgB,IAAI,IAAI,IAAI,qBAAqB,KAAK,SAAS,EAAE,CAAC;oBACpE,qBAAqB,GAAG,CAAC,KAAK,IAAI,EAAE;wBAClC,OAAO,IAAI,EAAE,CAAC;4BACZ,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,wBAAwB,EAAE,CAAC,CAAC;4BAC9D,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;gCAC9B,yBAAyB,CAAC,KAAK,EAAE,CAAC;4BACpC,CAAC;iCAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gCAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;oCAClC,2FAA2F;oCAC3F,wBAAwB;oCACxB,SAAS;gCACX,CAAC;gCAED,gGAAgG;gCAChG,sCAAsC;gCACtC,yBAAyB,CAAC,KAAK,EAAE,CAAC;4BACpC,CAAC;4BAED,OAAO,IAAI,CAAC;wBACd,CAAC;oBACH,CAAC,CAAC,EAAE,CAAC;gBACP,CAAC;YACH,CAAC;YAED,SAAS,kBAAkB,CAAC,KAA0B;gBACpD,gBAAgB,IAAI,KAAK,CAAC,KAAK,CAAC;gBAChC,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBACnC,yBAAyB,EAAE,CAAC;YAC9B,CAAC;YAED,+EAA+E;YAC/E,sFAAsF;YACtF,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,eAAe,EAAE,CAAC;gBAClD,MAAM,MAAM,GAAG,QAAQ,KAAK,cAAc,CAAC;gBAC3C,IAAI,qBAAqB,CAAC,OAAO,EAAE,CAAC;oBAClC,MAAM;gBACR,CAAC;gBAED,KAAK,CAAC,CAAC,mBAAmB,CAAC;oBACzB,WAAW,EAAE,WAAW;oBACxB,aAAa,EAAE,aAAa;oBAC5B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU;oBACvC,cAAc,EAAE,OAAO;oBACvB,cAAc,EAAE,IAAI;oBACpB,eAAe,EAAE,CAAC,gBAAgB,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI;oBAC7D,UAAU,EAAE,kBAAkB;oBAC9B,gBAAgB,EAAE,MAAM;oBACxB,WAAW,EAAE,qBAAqB;oBAClC,aAAa,EAAE,YAAY,CAAC,UAAU;oBACtC,mHAAmH;oBACnH,iCAAiC;oBACjC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;oBACtC,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE;IAC5B,CAAC;YAAS,CAAC;QACT,MAAM,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AA0BD,KAAK,SAAS,CAAC,CAAC,mBAAmB,CAAC,OAA0B;IAC5D,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QAC/C,wEAAwE;QACxE,6EAA6E;QAC7E,4GAA4G;QAC5G,gBAAgB;QAChB,gBAAgB;QAChB,qBAAqB;QACrB,MAAM;QACN,WAAW;QACX,IAAI;QACJ,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBACpD,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM;gBACR,CAAC;qBAAM,CAAC;oBACN,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;oBAC7B,MAAM,IAAI,CAAC;oBACX,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,GAAG,IAAI,CAAC;oBAChB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;AACH,CAAC;AAOD;;GAEG;AACH,KAAK,SAAS,CAAC,CAAC,eAAe,CAAC,OAA0B;IACxD,MAAM,EACJ,WAAW,EACX,aAAa,EAAE,OAAO,EACtB,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,MAAM,EACP,GAAG,OAAO,CAAC;IAEZ,IAAI,qBAAqB,GAAG,KAAK,CAAC;IAElC,IAAI,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACtG,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5G,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC;IAClC,IAAI,CAAC;QACH,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,6DAA6D;YAC7D,qBAAqB;YACrB,MAAM,CAAC,IAAI,CAAC,mCAAmC,KAAK,GAAG,CAAC,EAAE,EAAE;gBAC1D,OAAO,EAAE,OAAO,CAAC,aAAa;gBAC9B,eAAe,EAAE,KAAK,GAAG,CAAC;aAC3B,CAAC,CAAC;QACL,CAAC;QACD,kGAAkG;QAClG,iDAAiD;QACjD,MAAM,eAAe,GAAG,cAAc,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;QAClF,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAE5E,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,IAAI,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,WAAW,EAAE,CAAC;YACzD,qDAAqD;YACrD,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAC7B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACf,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;YACD,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,GAAG,UAAU,EAAE,CAAC;gBAC9C,qBAAqB,GAAG,IAAI,CAAC;YAC/B,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACvB,2EAA2E;gBAC3E,6EAA6E;gBAC7E,sEAAsE;gBACtE,6BAA6B;gBAC7B,cAAc,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAChH,SAAS;YACX,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAE7C,MAAM,IAAI,GAAG,eAAe;gBAC1B,CAAC,CAAC,8EAA8E;oBAC9E,4BAA4B;oBAC5B,OAAO,CAAC,SAAS,CAAC;wBAChB,IAAI,EAAE,uBAAuB,CAAC,CAAC,CAAC;qBACA,CAAC;gBACrC,CAAC,CAAC,qGAAqG;oBACpG,EAAE,IAAI,EAAE,CAAC,EAAoC,CAAC;YAEnD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAElC,0EAA0E;YAC1E,8CAA8C;YAC9C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAElC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7B,cAAc,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEhH,6EAA6E;YAC7E,gBAAgB;YAChB,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,qBAAqB,EAAE,CAAC;gBAC1B,gDAAgD;gBAChD,wDAAwD;gBACxD,kEAAkE;gBAClE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;oBAChC,MAAM,IAAI,GAAkD;wBAC1D,2BAA2B,EAAE;4BAC3B,UAAU,EAAE,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC;4BACnD,QAAQ,EAAE,OAAO,CAAC,WAAW;yBAC9B;qBACF,CAAC;oBACF,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,GAAyC;wBACjD,mBAAmB,EAAE;4BACnB,UAAU,EAAE,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC;yBACpD;qBACF,CAAC;oBACF,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,6DAA6D;YAC7D,qBAAqB;YACrB,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;gBACjC,OAAO,EAAE,OAAO,CAAC,aAAa;aAC/B,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,UAA+B;IAC9D,OAAO;QACL,GAAG,UAAU;QACb,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAClC,OAAO;gBACL,GAAG,KAAK;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAc,CAAC;gBACzE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;aACjC,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ErrorCode, ServiceError } from '@powersync/lib-services-framework';
|
|
2
2
|
export async function createWriteCheckpoint(options) {
|
|
3
3
|
const full_user_id = checkpointUserId(options.userId, options.clientId);
|
|
4
|
-
const syncBucketStorage = await options.storage.
|
|
4
|
+
const syncBucketStorage = (await options.storage.getActiveSyncConfig())?.storage;
|
|
5
5
|
if (!syncBucketStorage) {
|
|
6
6
|
throw new ServiceError(ErrorCode.PSYNC_S2302, `Cannot create Write Checkpoint since no sync config is active.`);
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpointing.js","sourceRoot":"","sources":["../../src/util/checkpointing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAU5E,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAqC;IAC/E,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAExE,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"checkpointing.js","sourceRoot":"","sources":["../../src/util/checkpointing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAU5E,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAqC;IAC/E,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAExE,MAAM,iBAAiB,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,EAAE,OAAO,CAAC;IACjF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,YAAY,CAAC,SAAS,CAAC,WAAW,EAAE,gEAAgE,CAAC,CAAC;IAClH,CAAC;IAED,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE;QACjH,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAAC,4BAA4B,CAAC;YAC3E,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE;SAClC,CAAC,CAAC;QACH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC;QACxC,eAAe,EAAE,iBAAiB;KACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAA2B,EAAE,SAA6B;IACzF,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,OAAO,IAAI,SAAS,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -46,7 +46,7 @@ export type ResolvedPowerSyncConfig = {
|
|
|
46
46
|
max_buckets_per_connection: number;
|
|
47
47
|
max_parameter_query_results: number;
|
|
48
48
|
};
|
|
49
|
-
/** Prefix for postgres replication slot names
|
|
49
|
+
/** Prefix for postgres replication slot names, as well as replication stream names. */
|
|
50
50
|
slot_name_prefix: string;
|
|
51
51
|
healthcheck: {
|
|
52
52
|
probes: {
|
package/dist/util/lsn.d.ts
CHANGED
|
@@ -2,3 +2,7 @@
|
|
|
2
2
|
* Return the larger of two LSNs.
|
|
3
3
|
*/
|
|
4
4
|
export declare function maxLsn(a: string | null | undefined, b: string | null | undefined): string | null;
|
|
5
|
+
/**
|
|
6
|
+
* Return the smaller of two LSNs, ignoring nulls.
|
|
7
|
+
*/
|
|
8
|
+
export declare function minLsn(a: string | null | undefined, b: string | null | undefined): string | null;
|
package/dist/util/lsn.js
CHANGED
|
@@ -8,4 +8,14 @@ export function maxLsn(a, b) {
|
|
|
8
8
|
return a;
|
|
9
9
|
return a > b ? a : b;
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Return the smaller of two LSNs, ignoring nulls.
|
|
13
|
+
*/
|
|
14
|
+
export function minLsn(a, b) {
|
|
15
|
+
if (a == null)
|
|
16
|
+
return b ?? null;
|
|
17
|
+
if (b == null)
|
|
18
|
+
return a;
|
|
19
|
+
return a < b ? a : b;
|
|
20
|
+
}
|
|
11
21
|
//# sourceMappingURL=lsn.js.map
|
package/dist/util/lsn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsn.js","sourceRoot":"","sources":["../../src/util/lsn.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,CAA4B,EAAE,CAA4B;IAC/E,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,IAAI,CAAC;IAChC,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"lsn.js","sourceRoot":"","sources":["../../src/util/lsn.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,CAA4B,EAAE,CAA4B;IAC/E,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,IAAI,CAAC;IAChC,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,CAA4B,EAAE,CAA4B;IAC/E,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,IAAI,CAAC;IAChC,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powersync/service-core",
|
|
3
3
|
"repository": "https://github.com/powersync-ja/powersync-service",
|
|
4
|
-
"types": "dist/index.d.ts",
|
|
5
4
|
"publishConfig": {
|
|
6
5
|
"access": "public"
|
|
7
6
|
},
|
|
8
|
-
"version": "1.
|
|
9
|
-
"main": "dist/index.js",
|
|
7
|
+
"version": "1.23.0",
|
|
10
8
|
"license": "FSL-1.1-ALv2",
|
|
11
9
|
"type": "module",
|
|
10
|
+
"exports": "./dist/index.js",
|
|
12
11
|
"dependencies": {
|
|
13
12
|
"@js-sdsl/ordered-set": "^4.4.2",
|
|
14
13
|
"@opentelemetry/api": "^1.9.0",
|
|
@@ -33,11 +32,11 @@
|
|
|
33
32
|
"uuid": "^14.0.0",
|
|
34
33
|
"winston": "^3.13.0",
|
|
35
34
|
"yaml": "^2.8.3",
|
|
36
|
-
"@powersync/lib-services-framework": "0.9.
|
|
35
|
+
"@powersync/lib-services-framework": "0.9.6",
|
|
37
36
|
"@powersync/service-jsonbig": "0.17.13",
|
|
38
|
-
"@powersync/service-rsocket-router": "0.2.
|
|
39
|
-
"@powersync/service-sync-rules": "0.
|
|
40
|
-
"@powersync/service-types": "0.
|
|
37
|
+
"@powersync/service-rsocket-router": "0.2.22",
|
|
38
|
+
"@powersync/service-sync-rules": "0.38.0",
|
|
39
|
+
"@powersync/service-types": "0.16.0"
|
|
41
40
|
},
|
|
42
41
|
"devDependencies": {
|
|
43
42
|
"@types/async": "^3.2.24",
|
package/src/api/RouteAPI.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SyncConfig, TablePattern } from '@powersync/service-sync-rules';
|
|
2
2
|
import * as types from '@powersync/service-types';
|
|
3
|
-
import {
|
|
3
|
+
import { ParseSyncConfigOptions, SyncRulesBucketStorage } from '../storage/storage-index.js';
|
|
4
4
|
|
|
5
5
|
export interface PatternResult {
|
|
6
6
|
schema: string;
|
|
@@ -94,7 +94,7 @@ export interface RouteAPI {
|
|
|
94
94
|
/**
|
|
95
95
|
* Get the default schema (or database) when only a table name is specified in sync config.
|
|
96
96
|
*/
|
|
97
|
-
getParseSyncRulesOptions():
|
|
97
|
+
getParseSyncRulesOptions(): ParseSyncConfigOptions;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
export type ReplicationHeadCallback<T> = (head: string) => Promise<T>;
|
package/src/api/diagnostics.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { logger } from '@powersync/lib-services-framework';
|
|
1
|
+
import { logger, ServiceAssertionError } from '@powersync/lib-services-framework';
|
|
2
2
|
import { DEFAULT_TAG, SourceTableRef, SyncConfigWithErrors } from '@powersync/service-sync-rules';
|
|
3
3
|
import { ReplicationError, SyncRulesStatus, TableInfo } from '@powersync/service-types';
|
|
4
4
|
|
|
@@ -19,6 +19,11 @@ export interface DiagnosticsOptions {
|
|
|
19
19
|
*/
|
|
20
20
|
live_status: boolean;
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Whether this is the active sync config or not.
|
|
24
|
+
*/
|
|
25
|
+
active: boolean;
|
|
26
|
+
|
|
22
27
|
/**
|
|
23
28
|
* Check against the source postgres connection.
|
|
24
29
|
*/
|
|
@@ -28,12 +33,18 @@ export interface DiagnosticsOptions {
|
|
|
28
33
|
export const DEFAULT_DATASOURCE_ID = 'default';
|
|
29
34
|
|
|
30
35
|
export async function getSyncRulesStatus(
|
|
31
|
-
bucketStorage: storage.BucketStorageFactory,
|
|
32
36
|
apiHandler: RouteAPI,
|
|
33
|
-
|
|
34
|
-
options: DiagnosticsOptions
|
|
37
|
+
syncConfig: storage.PersistedSyncConfigContent | null,
|
|
38
|
+
options: DiagnosticsOptions,
|
|
39
|
+
/**
|
|
40
|
+
* Storage instance for the replication stream of this config.
|
|
41
|
+
*
|
|
42
|
+
* Required to populate live status (snapshot/checkpoint info). The content object
|
|
43
|
+
* itself is no longer a replication stream, so the caller must resolve this.
|
|
44
|
+
*/
|
|
45
|
+
systemStorage?: storage.SyncRulesBucketStorage
|
|
35
46
|
): Promise<SyncRulesStatus | undefined> {
|
|
36
|
-
if (
|
|
47
|
+
if (syncConfig == null) {
|
|
37
48
|
return undefined;
|
|
38
49
|
}
|
|
39
50
|
|
|
@@ -43,13 +54,18 @@ export async function getSyncRulesStatus(
|
|
|
43
54
|
const now = new Date().toISOString();
|
|
44
55
|
|
|
45
56
|
let parsed: SyncConfigWithErrors;
|
|
46
|
-
let persisted: storage.
|
|
57
|
+
let persisted: storage.ParsedSyncConfigSet;
|
|
47
58
|
try {
|
|
48
|
-
persisted =
|
|
49
|
-
parsed
|
|
59
|
+
persisted = syncConfig.parsed(apiHandler.getParseSyncRulesOptions());
|
|
60
|
+
// A content object represents a single sync config, so its parsed result has exactly one entry.
|
|
61
|
+
const [singleConfig] = persisted.syncConfigs;
|
|
62
|
+
if (singleConfig == null) {
|
|
63
|
+
throw new ServiceAssertionError('Expected one sync config');
|
|
64
|
+
}
|
|
65
|
+
parsed = singleConfig;
|
|
50
66
|
} catch (e) {
|
|
51
67
|
return {
|
|
52
|
-
content: include_content ?
|
|
68
|
+
content: include_content ? syncConfig.sync_rules_content : undefined,
|
|
53
69
|
connections: [],
|
|
54
70
|
errors: [{ level: 'fatal', message: e.message, ts: now }]
|
|
55
71
|
};
|
|
@@ -60,8 +76,7 @@ export async function getSyncRulesStatus(
|
|
|
60
76
|
// This method can run under some situations if no connection is configured yet.
|
|
61
77
|
// It will return a default tag in such a case. This default tag is not module specific.
|
|
62
78
|
const tag = sourceConfig.tag ?? DEFAULT_TAG;
|
|
63
|
-
const
|
|
64
|
-
const status = await systemStorage?.getStatus();
|
|
79
|
+
const status = live_status ? await systemStorage?.getStatus() : undefined;
|
|
65
80
|
let replication_lag_bytes: number | undefined = undefined;
|
|
66
81
|
let slot_wal_budget: SlotWalBudgetInfo | undefined = undefined;
|
|
67
82
|
|
|
@@ -90,10 +105,10 @@ export async function getSyncRulesStatus(
|
|
|
90
105
|
logger.warn(`Unable to get replication lag`, e);
|
|
91
106
|
}
|
|
92
107
|
|
|
93
|
-
if (apiHandler.getSlotWalBudget &&
|
|
108
|
+
if (apiHandler.getSlotWalBudget && syncConfig.replicationStreamName) {
|
|
94
109
|
try {
|
|
95
110
|
slot_wal_budget = await apiHandler.getSlotWalBudget({
|
|
96
|
-
slotName:
|
|
111
|
+
slotName: syncConfig.replicationStreamName
|
|
97
112
|
});
|
|
98
113
|
} catch (e) {
|
|
99
114
|
logger.warn(`Unable to get WAL budget`, e);
|
|
@@ -136,11 +151,13 @@ export async function getSyncRulesStatus(
|
|
|
136
151
|
}
|
|
137
152
|
|
|
138
153
|
const errors = tables_flat.flatMap((info) => info.errors);
|
|
139
|
-
|
|
154
|
+
const statusSource = await syncConfig.getSyncConfigStatus();
|
|
155
|
+
|
|
156
|
+
if (statusSource?.last_fatal_error) {
|
|
140
157
|
errors.push({
|
|
141
158
|
level: 'fatal',
|
|
142
|
-
message:
|
|
143
|
-
ts:
|
|
159
|
+
message: statusSource.last_fatal_error,
|
|
160
|
+
ts: statusSource.last_fatal_error_ts?.toISOString()
|
|
144
161
|
});
|
|
145
162
|
}
|
|
146
163
|
errors.push(...syncRuleErrors.map((error) => syncConfigYamlErrorToReplicationError(error, now)));
|
|
@@ -168,10 +185,10 @@ export async function getSyncRulesStatus(
|
|
|
168
185
|
}
|
|
169
186
|
}
|
|
170
187
|
|
|
171
|
-
if (live_status &&
|
|
188
|
+
if (live_status && options.active) {
|
|
172
189
|
// Check replication lag for active replication stream.
|
|
173
190
|
// Right now we exclude mysql, since it we don't have consistent keepalives for it.
|
|
174
|
-
if (
|
|
191
|
+
if (statusSource?.last_checkpoint_ts == null && statusSource?.last_keepalive_ts == null) {
|
|
175
192
|
errors.push({
|
|
176
193
|
level: 'warning',
|
|
177
194
|
message: 'No checkpoint found, cannot calculate replication lag',
|
|
@@ -179,8 +196,8 @@ export async function getSyncRulesStatus(
|
|
|
179
196
|
});
|
|
180
197
|
} else {
|
|
181
198
|
const lastTime = Math.max(
|
|
182
|
-
|
|
183
|
-
|
|
199
|
+
statusSource.last_checkpoint_ts?.getTime() ?? 0,
|
|
200
|
+
statusSource.last_keepalive_ts?.getTime() ?? 0
|
|
184
201
|
);
|
|
185
202
|
const lagSeconds = Math.round((Date.now() - lastTime) / 1000);
|
|
186
203
|
// On idle instances, keepalive messages are only persisted every 60 seconds.
|
|
@@ -204,17 +221,17 @@ export async function getSyncRulesStatus(
|
|
|
204
221
|
}
|
|
205
222
|
|
|
206
223
|
return {
|
|
207
|
-
content: include_content ?
|
|
224
|
+
content: include_content ? syncConfig.sync_rules_content : undefined,
|
|
208
225
|
connections: [
|
|
209
226
|
{
|
|
210
227
|
id: sourceConfig.id ?? DEFAULT_DATASOURCE_ID,
|
|
211
228
|
tag: tag,
|
|
212
|
-
slot_name:
|
|
213
|
-
initial_replication_done: status?.
|
|
229
|
+
slot_name: syncConfig.replicationStreamName,
|
|
230
|
+
initial_replication_done: status?.snapshotDone ?? false,
|
|
214
231
|
// TODO: Rename?
|
|
215
|
-
last_lsn: status?.
|
|
216
|
-
last_checkpoint_ts:
|
|
217
|
-
last_keepalive_ts:
|
|
232
|
+
last_lsn: status?.resumeLsn ?? undefined,
|
|
233
|
+
last_checkpoint_ts: statusSource?.last_checkpoint_ts?.toISOString(),
|
|
234
|
+
last_keepalive_ts: statusSource?.last_keepalive_ts?.toISOString(),
|
|
218
235
|
replication_lag_bytes: replication_lag_bytes,
|
|
219
236
|
wal_status: slot_wal_budget?.wal_status,
|
|
220
237
|
safe_wal_size: slot_wal_budget?.safe_wal_size,
|
|
@@ -83,7 +83,7 @@ export function registerCompactAction(program: Command) {
|
|
|
83
83
|
await serviceContext.lifeCycleEngine.start();
|
|
84
84
|
const bucketStorage = serviceContext.storageEngine.activeBucketStorage;
|
|
85
85
|
|
|
86
|
-
const active = await bucketStorage.
|
|
86
|
+
const active = (await bucketStorage.getActiveSyncConfig())?.storage;
|
|
87
87
|
if (active == null) {
|
|
88
88
|
logger.info('No active instance to compact');
|
|
89
89
|
return;
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { logger } from '@powersync/lib-services-framework';
|
|
2
2
|
import winston from 'winston';
|
|
3
|
-
import {
|
|
3
|
+
import { PersistedReplicationStream } from '../storage/storage-index.js';
|
|
4
4
|
import { ServiceContextContainer } from '../system/ServiceContext.js';
|
|
5
5
|
|
|
6
6
|
export interface TearDownOptions {
|
|
7
7
|
/**
|
|
8
8
|
* If required, tear down any configuration/state for the specific replication stream
|
|
9
9
|
*/
|
|
10
|
-
|
|
10
|
+
replicationStreams?: PersistedReplicationStream[];
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated Use replicationStreams.
|
|
13
|
+
*/
|
|
14
|
+
syncRules?: PersistedReplicationStream[];
|
|
11
15
|
}
|
|
12
16
|
|
|
13
17
|
export interface AbstractModuleOptions {
|
|
@@ -38,10 +38,10 @@ export abstract class AbstractReplicator<T extends AbstractReplicationJob = Abst
|
|
|
38
38
|
protected logger: winston.Logger;
|
|
39
39
|
private lockAlerted: boolean = false;
|
|
40
40
|
/**
|
|
41
|
-
* Map of replication jobs by replication stream id. Usually there is only one running job, but there could be two
|
|
42
|
-
* transitioning to a new replication stream.
|
|
41
|
+
* Map of replication jobs by replication stream job id. Usually there is only one running job, but there could be two
|
|
42
|
+
* when transitioning to a new replication stream.
|
|
43
43
|
*/
|
|
44
|
-
private replicationJobs = new Map<
|
|
44
|
+
private replicationJobs = new Map<string, T>();
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
47
|
* Map of replciation stream ids to promises that are clearing the replication stream.
|
|
@@ -188,48 +188,49 @@ export abstract class AbstractReplicator<T extends AbstractReplicationJob = Abst
|
|
|
188
188
|
|
|
189
189
|
let configuredLock = options?.configured_lock;
|
|
190
190
|
|
|
191
|
-
const existingJobs = new Map<
|
|
192
|
-
const
|
|
193
|
-
const newJobs = new Map<
|
|
191
|
+
const existingJobs = new Map<string, T>(this.replicationJobs.entries());
|
|
192
|
+
const replicatingStreams = await this.storage.getReplicatingReplicationStreams();
|
|
193
|
+
const newJobs = new Map<string, T>();
|
|
194
194
|
let activeJob: T | undefined = undefined;
|
|
195
|
-
for (let
|
|
196
|
-
const
|
|
197
|
-
|
|
195
|
+
for (let replicationStream of replicatingStreams) {
|
|
196
|
+
const jobId = replicationStream.replicationJobId;
|
|
197
|
+
const existingJob = existingJobs.get(jobId);
|
|
198
|
+
if (replicationStream.state == storage.SyncRuleState.ACTIVE && activeJob == null) {
|
|
198
199
|
activeJob = existingJob;
|
|
199
200
|
}
|
|
200
201
|
if (existingJob && !existingJob.isStopped) {
|
|
201
202
|
// No change
|
|
202
|
-
existingJobs.delete(
|
|
203
|
-
newJobs.set(
|
|
203
|
+
existingJobs.delete(jobId);
|
|
204
|
+
newJobs.set(jobId, existingJob);
|
|
204
205
|
} else if (existingJob && existingJob.isStopped) {
|
|
205
206
|
// Stopped (e.g. fatal error).
|
|
206
207
|
// Remove from the list. Next refresh call will restart the job.
|
|
207
|
-
existingJobs.delete(
|
|
208
|
+
existingJobs.delete(jobId);
|
|
208
209
|
} else {
|
|
209
210
|
// New sync config was found (or resume after restart)
|
|
210
211
|
try {
|
|
211
212
|
let lock: storage.ReplicationLock;
|
|
212
|
-
if (configuredLock?.sync_rules_id ==
|
|
213
|
+
if (configuredLock?.sync_rules_id == replicationStream.replicationStreamId) {
|
|
213
214
|
lock = configuredLock;
|
|
214
215
|
} else {
|
|
215
|
-
lock = await
|
|
216
|
+
lock = await replicationStream.lock();
|
|
216
217
|
}
|
|
217
|
-
const
|
|
218
|
+
const syncRuleStorage = this.storage.getInstance(replicationStream);
|
|
218
219
|
const newJob = this.createJob({
|
|
219
220
|
lock: lock,
|
|
220
|
-
storage:
|
|
221
|
+
storage: syncRuleStorage
|
|
221
222
|
});
|
|
222
223
|
|
|
223
|
-
newJobs.set(
|
|
224
|
+
newJobs.set(jobId, newJob);
|
|
224
225
|
newJob.start();
|
|
225
|
-
if (
|
|
226
|
+
if (replicationStream.state == storage.SyncRuleState.ACTIVE) {
|
|
226
227
|
activeJob = newJob;
|
|
227
228
|
}
|
|
228
229
|
this.lockAlerted = false;
|
|
229
230
|
} catch (e) {
|
|
230
231
|
if (e?.errorData?.code === ErrorCode.PSYNC_S1003) {
|
|
231
232
|
if (!this.lockAlerted) {
|
|
232
|
-
|
|
233
|
+
replicationStream.logger.info(`[${e.errorData.code}] ${e.errorData.description}`);
|
|
233
234
|
this.lockAlerted = true;
|
|
234
235
|
}
|
|
235
236
|
} else {
|
|
@@ -237,7 +238,7 @@ export abstract class AbstractReplicator<T extends AbstractReplicationJob = Abst
|
|
|
237
238
|
// for example from stricter validation that was added.
|
|
238
239
|
// This will be retried every couple of seconds.
|
|
239
240
|
// When new (valid) sync config is deployed and processed, this one be disabled.
|
|
240
|
-
|
|
241
|
+
replicationStream.logger.error('Failed to start replication for new sync config', e);
|
|
241
242
|
}
|
|
242
243
|
}
|
|
243
244
|
}
|
|
@@ -259,9 +260,9 @@ export abstract class AbstractReplicator<T extends AbstractReplicationJob = Abst
|
|
|
259
260
|
}
|
|
260
261
|
|
|
261
262
|
// Replication stream stopped previously, including by a different process.
|
|
262
|
-
const stopped = await this.storage.
|
|
263
|
-
for (let
|
|
264
|
-
if (this.clearingJobs.has(
|
|
263
|
+
const stopped = await this.storage.getStoppedReplicationStreams();
|
|
264
|
+
for (let replicationStream of stopped) {
|
|
265
|
+
if (this.clearingJobs.has(replicationStream.replicationStreamId)) {
|
|
265
266
|
// Already in progress
|
|
266
267
|
continue;
|
|
267
268
|
}
|
|
@@ -269,15 +270,15 @@ export abstract class AbstractReplicator<T extends AbstractReplicationJob = Abst
|
|
|
269
270
|
// We clear storage asynchronously.
|
|
270
271
|
// It is important to be able to continue running the refresh loop, otherwise we cannot
|
|
271
272
|
// retry locked replication stream, for example.
|
|
272
|
-
const syncRuleStorage = this.storage.getInstance(
|
|
273
|
+
const syncRuleStorage = this.storage.getInstance(replicationStream, { skipLifecycleHooks: true });
|
|
273
274
|
const promise = this.terminateSyncRules(syncRuleStorage)
|
|
274
275
|
.catch((e) => {
|
|
275
276
|
syncRuleStorage.logger.warn(`Failed clean up replication config`, e);
|
|
276
277
|
})
|
|
277
278
|
.finally(() => {
|
|
278
|
-
this.clearingJobs.delete(
|
|
279
|
+
this.clearingJobs.delete(replicationStream.replicationStreamId);
|
|
279
280
|
});
|
|
280
|
-
this.clearingJobs.set(
|
|
281
|
+
this.clearingJobs.set(replicationStream.replicationStreamId, promise);
|
|
281
282
|
}
|
|
282
283
|
}
|
|
283
284
|
|