@powersync/service-module-mongodb-storage 0.0.0-dev-20260602073133 → 0.0.0-dev-20260909133214
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 +177 -5
- package/dist/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.d.ts +3 -0
- package/dist/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.js +41 -0
- package/dist/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.js.map +1 -0
- package/dist/storage/MongoBucketStorage.d.ts +71 -18
- package/dist/storage/MongoBucketStorage.js +516 -202
- package/dist/storage/MongoBucketStorage.js.map +1 -1
- package/dist/storage/implementation/MongoBucketBatch.d.ts +71 -29
- package/dist/storage/implementation/MongoBucketBatch.js +140 -66
- package/dist/storage/implementation/MongoBucketBatch.js.map +1 -1
- package/dist/storage/implementation/MongoChecksums.d.ts +41 -13
- package/dist/storage/implementation/MongoChecksums.js +36 -121
- package/dist/storage/implementation/MongoChecksums.js.map +1 -1
- package/dist/storage/implementation/MongoCompactor.d.ts +28 -90
- package/dist/storage/implementation/MongoCompactor.js +87 -481
- package/dist/storage/implementation/MongoCompactor.js.map +1 -1
- package/dist/storage/implementation/MongoHydrationState.d.ts +11 -0
- package/dist/storage/implementation/MongoHydrationState.js +49 -0
- package/dist/storage/implementation/MongoHydrationState.js.map +1 -0
- package/dist/storage/implementation/MongoParameterCompactor.d.ts +82 -8
- package/dist/storage/implementation/MongoParameterCompactor.js +312 -76
- package/dist/storage/implementation/MongoParameterCompactor.js.map +1 -1
- package/dist/storage/implementation/MongoParsedSyncConfigSet.d.ts +21 -0
- package/dist/storage/implementation/MongoParsedSyncConfigSet.js +93 -0
- package/dist/storage/implementation/MongoParsedSyncConfigSet.js.map +1 -0
- package/dist/storage/implementation/MongoPersistedReplicationStream.d.ts +36 -0
- package/dist/storage/implementation/MongoPersistedReplicationStream.js +90 -0
- package/dist/storage/implementation/MongoPersistedReplicationStream.js.map +1 -0
- package/dist/storage/implementation/MongoPersistedSyncConfigContent.d.ts +25 -0
- package/dist/storage/implementation/MongoPersistedSyncConfigContent.js +125 -0
- package/dist/storage/implementation/MongoPersistedSyncConfigContent.js.map +1 -0
- package/dist/storage/implementation/MongoStorageProvider.js +41 -4
- package/dist/storage/implementation/MongoStorageProvider.js.map +1 -1
- package/dist/storage/implementation/MongoSyncBucketStorage.d.ts +81 -37
- package/dist/storage/implementation/MongoSyncBucketStorage.js +159 -86
- package/dist/storage/implementation/MongoSyncBucketStorage.js.map +1 -1
- package/dist/storage/implementation/MongoSyncRulesLock.d.ts +1 -1
- package/dist/storage/implementation/MongoSyncRulesLock.js +23 -11
- package/dist/storage/implementation/MongoSyncRulesLock.js.map +1 -1
- package/dist/storage/implementation/MongoWriteCheckpointAPI.d.ts +11 -8
- package/dist/storage/implementation/MongoWriteCheckpointAPI.js +159 -33
- package/dist/storage/implementation/MongoWriteCheckpointAPI.js.map +1 -1
- package/dist/storage/implementation/SyncRuleStateUpdate.d.ts +11 -5
- package/dist/storage/implementation/SyncRuleStateUpdate.js +14 -6
- package/dist/storage/implementation/SyncRuleStateUpdate.js.map +1 -1
- package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.d.ts +28 -0
- package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.js +2 -0
- package/dist/storage/implementation/common/MongoSyncBucketStorageCheckpoint.js.map +1 -0
- package/dist/storage/implementation/common/PersistedBatch.d.ts +34 -2
- package/dist/storage/implementation/common/PersistedBatch.js +63 -10
- package/dist/storage/implementation/common/PersistedBatch.js.map +1 -1
- package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js +1 -1
- package/dist/storage/implementation/common/VersionedPowerSyncMongoBase.js.map +1 -1
- package/dist/storage/implementation/createMongoSyncBucketStorage.d.ts +2 -2
- package/dist/storage/implementation/createMongoSyncBucketStorage.js +4 -4
- package/dist/storage/implementation/createMongoSyncBucketStorage.js.map +1 -1
- package/dist/storage/implementation/db.d.ts +4 -1
- package/dist/storage/implementation/db.js +31 -16
- package/dist/storage/implementation/db.js.map +1 -1
- package/dist/storage/implementation/models.d.ts +55 -13
- package/dist/storage/implementation/models.js.map +1 -1
- package/dist/storage/implementation/v1/MongoBucketBatchV1.d.ts +15 -1
- package/dist/storage/implementation/v1/MongoBucketBatchV1.js +135 -107
- package/dist/storage/implementation/v1/MongoBucketBatchV1.js.map +1 -1
- package/dist/storage/implementation/v1/MongoChecksumsV1.d.ts +4 -4
- package/dist/storage/implementation/v1/MongoChecksumsV1.js +119 -7
- package/dist/storage/implementation/v1/MongoChecksumsV1.js.map +1 -1
- package/dist/storage/implementation/v1/MongoCompactorV1.d.ts +47 -7
- package/dist/storage/implementation/v1/MongoCompactorV1.js +478 -8
- package/dist/storage/implementation/v1/MongoCompactorV1.js.map +1 -1
- package/dist/storage/implementation/v1/MongoParameterCompactorV1.d.ts +16 -2
- package/dist/storage/implementation/v1/MongoParameterCompactorV1.js +20 -9
- package/dist/storage/implementation/v1/MongoParameterCompactorV1.js.map +1 -1
- package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.d.ts +33 -27
- package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js +146 -73
- package/dist/storage/implementation/v1/MongoSyncBucketStorageV1.js.map +1 -1
- package/dist/storage/implementation/v1/SingleBucketStoreV1.d.ts +9 -10
- package/dist/storage/implementation/v1/SingleBucketStoreV1.js +2 -8
- package/dist/storage/implementation/v1/SingleBucketStoreV1.js.map +1 -1
- package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.d.ts +2 -1
- package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.js +3 -0
- package/dist/storage/implementation/v1/VersionedPowerSyncMongoV1.js.map +1 -1
- package/dist/storage/implementation/v1/models.d.ts +10 -1
- package/dist/storage/implementation/v1/models.js +1 -0
- package/dist/storage/implementation/v1/models.js.map +1 -1
- package/dist/storage/implementation/v3/BucketDataContextV3.d.ts +13 -0
- package/dist/storage/implementation/v3/BucketDataContextV3.js +23 -0
- package/dist/storage/implementation/v3/BucketDataContextV3.js.map +1 -0
- package/dist/storage/implementation/v3/CompactionLease.d.ts +50 -0
- package/dist/storage/implementation/v3/CompactionLease.js +131 -0
- package/dist/storage/implementation/v3/CompactionLease.js.map +1 -0
- package/dist/storage/implementation/v3/MongoBucketBatchV3.d.ts +16 -5
- package/dist/storage/implementation/v3/MongoBucketBatchV3.js +393 -262
- package/dist/storage/implementation/v3/MongoBucketBatchV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoChecksumsV3.d.ts +30 -9
- package/dist/storage/implementation/v3/MongoChecksumsV3.js +161 -20
- package/dist/storage/implementation/v3/MongoChecksumsV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoCompactorV3.d.ts +108 -18
- package/dist/storage/implementation/v3/MongoCompactorV3.js +1115 -47
- package/dist/storage/implementation/v3/MongoCompactorV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoParameterCompactorV3.d.ts +12 -3
- package/dist/storage/implementation/v3/MongoParameterCompactorV3.js +13 -8
- package/dist/storage/implementation/v3/MongoParameterCompactorV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.d.ts +54 -0
- package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js +319 -0
- package/dist/storage/implementation/v3/MongoStoppedSyncConfigCleanup.js.map +1 -0
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.d.ts +61 -36
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js +353 -161
- package/dist/storage/implementation/v3/MongoSyncBucketStorageV3.js.map +1 -1
- package/dist/storage/implementation/v3/MongoWriteCheckpointAPIV3.d.ts +26 -0
- package/dist/storage/implementation/v3/MongoWriteCheckpointAPIV3.js +82 -0
- package/dist/storage/implementation/v3/MongoWriteCheckpointAPIV3.js.map +1 -0
- package/dist/storage/implementation/v3/PersistedBatchV3.d.ts +8 -3
- package/dist/storage/implementation/v3/PersistedBatchV3.js +131 -29
- package/dist/storage/implementation/v3/PersistedBatchV3.js.map +1 -1
- package/dist/storage/implementation/v3/SourceRecordStoreV3.d.ts +3 -3
- package/dist/storage/implementation/v3/SourceRecordStoreV3.js +13 -11
- package/dist/storage/implementation/v3/SourceRecordStoreV3.js.map +1 -1
- package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.d.ts +26 -14
- package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js +73 -29
- package/dist/storage/implementation/v3/VersionedPowerSyncMongoV3.js.map +1 -1
- package/dist/storage/implementation/v3/bucket-format.d.ts +13 -0
- package/dist/storage/implementation/v3/bucket-format.js +79 -0
- package/dist/storage/implementation/v3/bucket-format.js.map +1 -0
- package/dist/storage/implementation/v3/chunking.d.ts +10 -0
- package/dist/storage/implementation/v3/chunking.js +30 -0
- package/dist/storage/implementation/v3/chunking.js.map +1 -0
- package/dist/storage/implementation/v3/compact-utils.d.ts +107 -0
- package/dist/storage/implementation/v3/compact-utils.js +216 -0
- package/dist/storage/implementation/v3/compact-utils.js.map +1 -0
- package/dist/storage/implementation/v3/compaction-constants.d.ts +5 -0
- package/dist/storage/implementation/v3/compaction-constants.js +6 -0
- package/dist/storage/implementation/v3/compaction-constants.js.map +1 -0
- package/dist/storage/implementation/v3/models.d.ts +187 -23
- package/dist/storage/implementation/v3/models.js +11 -28
- package/dist/storage/implementation/v3/models.js.map +1 -1
- package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.d.ts +20 -0
- package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js +48 -0
- package/dist/storage/implementation/v3/object-storage/BucketDataObjectStorage.js.map +1 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorage.d.ts +33 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorage.js +12 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorage.js.map +1 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.d.ts +68 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js +154 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorageLifecycle.js.map +1 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.d.ts +37 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.js +167 -0
- package/dist/storage/implementation/v3/object-storage/ObjectStorageUsage.js.map +1 -0
- package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.d.ts +67 -0
- package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js +439 -0
- package/dist/storage/implementation/v3/object-storage/S3ObjectStorage.js.map +1 -0
- package/dist/storage/implementation/v3/source-table-utils.d.ts +63 -0
- package/dist/storage/implementation/v3/source-table-utils.js +206 -0
- package/dist/storage/implementation/v3/source-table-utils.js.map +1 -0
- package/dist/storage/storage-index.d.ts +5 -4
- package/dist/storage/storage-index.js +5 -4
- package/dist/storage/storage-index.js.map +1 -1
- package/dist/types/types.d.ts +71 -3
- package/dist/types/types.js +58 -2
- package/dist/types/types.js.map +1 -1
- package/dist/utils/test-utils.d.ts +1 -2
- package/dist/utils/test-utils.js +7 -1
- package/dist/utils/test-utils.js.map +1 -1
- package/dist/utils/util.d.ts +9 -2
- package/dist/utils/util.js +131 -5
- package/dist/utils/util.js.map +1 -1
- package/package.json +13 -19
- package/src/migrations/db/migrations/1782950400000-checkpoint-requested-at-index.ts +55 -0
- package/src/storage/MongoBucketStorage.ts +728 -242
- package/src/storage/implementation/MongoBucketBatch.ts +196 -91
- package/src/storage/implementation/MongoChecksums.ts +93 -153
- package/src/storage/implementation/MongoCompactor.ts +106 -631
- package/src/storage/implementation/MongoHydrationState.ts +61 -0
- package/src/storage/implementation/MongoParameterCompactor.ts +392 -87
- package/src/storage/implementation/MongoParsedSyncConfigSet.ts +122 -0
- package/src/storage/implementation/MongoPersistedReplicationStream.ts +118 -0
- package/src/storage/implementation/MongoPersistedSyncConfigContent.ts +156 -0
- package/src/storage/implementation/MongoStorageProvider.ts +48 -4
- package/src/storage/implementation/MongoSyncBucketStorage.ts +226 -118
- package/src/storage/implementation/MongoSyncRulesLock.ts +28 -12
- package/src/storage/implementation/MongoWriteCheckpointAPI.ts +194 -52
- package/src/storage/implementation/SyncRuleStateUpdate.ts +13 -6
- package/src/storage/implementation/common/MongoSyncBucketStorageCheckpoint.ts +31 -0
- package/src/storage/implementation/common/PersistedBatch.ts +83 -15
- package/src/storage/implementation/common/VersionedPowerSyncMongoBase.ts +1 -1
- package/src/storage/implementation/createMongoSyncBucketStorage.ts +21 -7
- package/src/storage/implementation/db.ts +40 -22
- package/src/storage/implementation/models.ts +58 -14
- package/src/storage/implementation/v1/MongoBucketBatchV1.ts +174 -125
- package/src/storage/implementation/v1/MongoChecksumsV1.ts +154 -12
- package/src/storage/implementation/v1/MongoCompactorV1.ts +594 -25
- package/src/storage/implementation/v1/MongoParameterCompactorV1.ts +25 -9
- package/src/storage/implementation/v1/MongoSyncBucketStorageV1.ts +226 -129
- package/src/storage/implementation/v1/SingleBucketStoreV1.ts +18 -27
- package/src/storage/implementation/v1/VersionedPowerSyncMongoV1.ts +11 -1
- package/src/storage/implementation/v1/models.ts +12 -1
- package/src/storage/implementation/v3/BucketDataContextV3.ts +32 -0
- package/src/storage/implementation/v3/CompactionLease.ts +152 -0
- package/src/storage/implementation/v3/MongoBucketBatchV3.ts +502 -324
- package/src/storage/implementation/v3/MongoChecksumsV3.ts +250 -32
- package/src/storage/implementation/v3/MongoCompactorV3.ts +1439 -70
- package/src/storage/implementation/v3/MongoParameterCompactorV3.ts +19 -9
- package/src/storage/implementation/v3/MongoStoppedSyncConfigCleanup.ts +473 -0
- package/src/storage/implementation/v3/MongoSyncBucketStorageV3.ts +453 -211
- package/src/storage/implementation/v3/MongoWriteCheckpointAPIV3.ts +111 -0
- package/src/storage/implementation/v3/PersistedBatchV3.ts +169 -45
- package/src/storage/implementation/v3/SourceRecordStoreV3.ts +12 -12
- package/src/storage/implementation/v3/VersionedPowerSyncMongoV3.ts +99 -38
- package/src/storage/implementation/v3/bucket-format.ts +99 -0
- package/src/storage/implementation/v3/chunking.ts +40 -0
- package/src/storage/implementation/v3/compact-utils.ts +320 -0
- package/src/storage/implementation/v3/compaction-constants.ts +5 -0
- package/src/storage/implementation/v3/models.ts +228 -58
- package/src/storage/implementation/v3/object-storage/BucketDataObjectStorage.ts +62 -0
- package/src/storage/implementation/v3/object-storage/ObjectStorage.ts +44 -0
- package/src/storage/implementation/v3/object-storage/ObjectStorageLifecycle.ts +182 -0
- package/src/storage/implementation/v3/object-storage/ObjectStorageUsage.ts +230 -0
- package/src/storage/implementation/v3/object-storage/S3ObjectStorage.ts +573 -0
- package/src/storage/implementation/v3/source-table-utils.ts +398 -0
- package/src/storage/storage-index.ts +14 -4
- package/src/types/types.ts +76 -2
- package/src/utils/test-utils.ts +8 -3
- package/src/utils/util.ts +188 -7
- package/test/src/__snapshots__/storage.test.ts.snap +4 -54
- package/test/src/__snapshots__/storage_sync.test.ts.snap +652 -645
- package/test/src/cleanup-stopped-sync-configs.test.ts +698 -0
- package/test/src/compact-utils.test.ts +226 -0
- package/test/src/helpers/MemoryObjectStorage.ts +61 -0
- package/test/src/helpers/s3TestFactory.ts +69 -0
- package/test/src/object_storage_lifecycle.test.ts +59 -0
- package/test/src/object_storage_usage.test.ts +255 -0
- package/test/src/parameter_compacting_v1.test.ts +120 -0
- package/test/src/parameter_compacting_v3.test.ts +192 -0
- package/test/src/parameter_compaction_fence.test.ts +276 -0
- package/test/src/setup.ts +6 -1
- package/test/src/storage.test.ts +478 -13
- package/test/src/storage_compacting.test.ts +2516 -107
- package/test/src/storage_object_storage_inline_threshold.test.ts +116 -0
- package/test/src/storage_s3_checksums.test.ts +190 -0
- package/test/src/storage_s3_compaction_lifecycle.test.ts +543 -0
- package/test/src/storage_s3_reading.test.ts +768 -0
- package/test/src/storage_s3_writing.test.ts +136 -0
- package/test/src/storage_sync.test.ts +1507 -76
- package/test/src/storeCurrentData.test.ts +227 -0
- package/test/src/util.ts +3 -2
- package/tsconfig.json +1 -4
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/storage/implementation/BucketDefinitionMapping.d.ts +0 -15
- package/dist/storage/implementation/BucketDefinitionMapping.js +0 -58
- package/dist/storage/implementation/BucketDefinitionMapping.js.map +0 -1
- package/dist/storage/implementation/MongoPersistedSyncRules.d.ts +0 -14
- package/dist/storage/implementation/MongoPersistedSyncRules.js +0 -67
- package/dist/storage/implementation/MongoPersistedSyncRules.js.map +0 -1
- package/dist/storage/implementation/MongoPersistedSyncRulesContent.d.ts +0 -29
- package/dist/storage/implementation/MongoPersistedSyncRulesContent.js +0 -76
- package/dist/storage/implementation/MongoPersistedSyncRulesContent.js.map +0 -1
- package/dist/storage/implementation/common/MongoSyncBucketStorageContext.d.ts +0 -13
- package/dist/storage/implementation/common/MongoSyncBucketStorageContext.js +0 -2
- package/dist/storage/implementation/common/MongoSyncBucketStorageContext.js.map +0 -1
- package/dist/storage/implementation/common/SingleBucketStore.d.ts +0 -54
- package/dist/storage/implementation/common/SingleBucketStore.js +0 -3
- package/dist/storage/implementation/common/SingleBucketStore.js.map +0 -1
- package/dist/storage/implementation/v3/MongoParameterLookupV3.d.ts +0 -4
- package/dist/storage/implementation/v3/MongoParameterLookupV3.js +0 -9
- package/dist/storage/implementation/v3/MongoParameterLookupV3.js.map +0 -1
- package/dist/storage/implementation/v3/SingleBucketStoreV3.d.ts +0 -18
- package/dist/storage/implementation/v3/SingleBucketStoreV3.js +0 -48
- package/dist/storage/implementation/v3/SingleBucketStoreV3.js.map +0 -1
- package/src/storage/implementation/BucketDefinitionMapping.ts +0 -75
- package/src/storage/implementation/MongoPersistedSyncRules.ts +0 -82
- package/src/storage/implementation/MongoPersistedSyncRulesContent.ts +0 -101
- package/src/storage/implementation/common/MongoSyncBucketStorageContext.ts +0 -15
- package/src/storage/implementation/common/SingleBucketStore.ts +0 -63
- package/src/storage/implementation/v3/MongoParameterLookupV3.ts +0 -11
- package/src/storage/implementation/v3/SingleBucketStoreV3.ts +0 -68
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { BucketDataSource, BucketDefinitionId, ParameterIndexId, ParameterIndexLookupCreator, SyncConfigWithErrors } from '@powersync/service-sync-rules';
|
|
2
|
-
import { SyncConfigDefinition } from '../storage-index.js';
|
|
3
|
-
export declare class BucketDefinitionMapping {
|
|
4
|
-
private definitions;
|
|
5
|
-
private parameterLookupMapping;
|
|
6
|
-
static fromSyncConfig(doc: Pick<SyncConfigDefinition, 'rule_mapping'>): BucketDefinitionMapping;
|
|
7
|
-
static fromParsedSyncRules(syncRules: SyncConfigWithErrors): BucketDefinitionMapping;
|
|
8
|
-
constructor(definitions?: Record<string, BucketDefinitionId>, parameterLookupMapping?: Record<string, ParameterIndexId>);
|
|
9
|
-
bucketSourceId(source: BucketDataSource): BucketDefinitionId;
|
|
10
|
-
allBucketDefinitionIds(): BucketDefinitionId[];
|
|
11
|
-
allParameterIndexIds(): ParameterIndexId[];
|
|
12
|
-
parameterLookupId(source: ParameterIndexLookupCreator): ParameterIndexId;
|
|
13
|
-
private parameterLookupKey;
|
|
14
|
-
serialize(): SyncConfigDefinition['rule_mapping'];
|
|
15
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { ServiceAssertionError } from '@powersync/lib-services-framework';
|
|
2
|
-
export class BucketDefinitionMapping {
|
|
3
|
-
definitions;
|
|
4
|
-
parameterLookupMapping;
|
|
5
|
-
static fromSyncConfig(doc) {
|
|
6
|
-
return new BucketDefinitionMapping(doc.rule_mapping?.definitions ?? {}, doc.rule_mapping?.parameter_indexes ?? {});
|
|
7
|
-
}
|
|
8
|
-
static fromParsedSyncRules(syncRules) {
|
|
9
|
-
const definitionNames = syncRules.config.bucketDataSources.map((source) => source.uniqueName).sort();
|
|
10
|
-
const parameterKeys = syncRules.config.bucketParameterLookupSources
|
|
11
|
-
.map((source) => `${source.sourceId.lookupName}#${source.sourceId.queryId}`)
|
|
12
|
-
.sort();
|
|
13
|
-
const definitions = {};
|
|
14
|
-
const parameterLookups = {};
|
|
15
|
-
for (const [index, uniqueName] of definitionNames.entries()) {
|
|
16
|
-
definitions[uniqueName] = (index + 1).toString(16);
|
|
17
|
-
}
|
|
18
|
-
for (const [index, key] of parameterKeys.entries()) {
|
|
19
|
-
parameterLookups[key] = (index + 1).toString(16);
|
|
20
|
-
}
|
|
21
|
-
return new BucketDefinitionMapping(definitions, parameterLookups);
|
|
22
|
-
}
|
|
23
|
-
constructor(definitions = {}, parameterLookupMapping = {}) {
|
|
24
|
-
this.definitions = definitions;
|
|
25
|
-
this.parameterLookupMapping = parameterLookupMapping;
|
|
26
|
-
}
|
|
27
|
-
bucketSourceId(source) {
|
|
28
|
-
const defId = this.definitions[source.uniqueName];
|
|
29
|
-
if (defId == null) {
|
|
30
|
-
throw new ServiceAssertionError(`No mapping found for bucket source ${source.uniqueName}`);
|
|
31
|
-
}
|
|
32
|
-
return defId;
|
|
33
|
-
}
|
|
34
|
-
allBucketDefinitionIds() {
|
|
35
|
-
return Object.values(this.definitions);
|
|
36
|
-
}
|
|
37
|
-
allParameterIndexIds() {
|
|
38
|
-
return Object.values(this.parameterLookupMapping);
|
|
39
|
-
}
|
|
40
|
-
parameterLookupId(source) {
|
|
41
|
-
const key = this.parameterLookupKey(source.sourceId.lookupName, source.sourceId.queryId);
|
|
42
|
-
const defId = this.parameterLookupMapping[key];
|
|
43
|
-
if (defId == null) {
|
|
44
|
-
throw new ServiceAssertionError(`No mapping found for parameter lookup source ${key}`);
|
|
45
|
-
}
|
|
46
|
-
return defId;
|
|
47
|
-
}
|
|
48
|
-
parameterLookupKey(lookupName, queryId) {
|
|
49
|
-
return `${lookupName}#${queryId}`;
|
|
50
|
-
}
|
|
51
|
-
serialize() {
|
|
52
|
-
return {
|
|
53
|
-
definitions: { ...this.definitions },
|
|
54
|
-
parameter_indexes: { ...this.parameterLookupMapping }
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=BucketDefinitionMapping.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BucketDefinitionMapping.js","sourceRoot":"","sources":["../../../src/storage/implementation/BucketDefinitionMapping.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { storage } from '@powersync/service-core';
|
|
2
|
-
import { HydratedSyncConfig, HydrationState, SyncConfigWithErrors } from '@powersync/service-sync-rules';
|
|
3
|
-
import { BucketDefinitionMapping } from './BucketDefinitionMapping.js';
|
|
4
|
-
import { StorageConfig } from './models.js';
|
|
5
|
-
export declare class MongoPersistedSyncRules implements storage.PersistedSyncRules {
|
|
6
|
-
readonly id: number;
|
|
7
|
-
readonly syncConfigWithErrors: SyncConfigWithErrors;
|
|
8
|
-
readonly slot_name: string;
|
|
9
|
-
private readonly mapping;
|
|
10
|
-
private readonly storageConfig;
|
|
11
|
-
readonly hydrationState: HydrationState;
|
|
12
|
-
constructor(id: number, syncConfigWithErrors: SyncConfigWithErrors, slot_name: string, mapping: BucketDefinitionMapping | null, storageConfig: StorageConfig);
|
|
13
|
-
hydratedSyncConfig(): HydratedSyncConfig;
|
|
14
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import * as sqlite from 'node:sqlite';
|
|
2
|
-
import { ServiceAssertionError } from '@powersync/lib-services-framework';
|
|
3
|
-
import { CompatibilityOption, DEFAULT_HYDRATION_STATE, nodeSqlite, versionedHydrationState } from '@powersync/service-sync-rules';
|
|
4
|
-
export class MongoPersistedSyncRules {
|
|
5
|
-
id;
|
|
6
|
-
syncConfigWithErrors;
|
|
7
|
-
slot_name;
|
|
8
|
-
mapping;
|
|
9
|
-
storageConfig;
|
|
10
|
-
hydrationState;
|
|
11
|
-
constructor(id, syncConfigWithErrors, slot_name, mapping, storageConfig) {
|
|
12
|
-
this.id = id;
|
|
13
|
-
this.syncConfigWithErrors = syncConfigWithErrors;
|
|
14
|
-
this.slot_name = slot_name;
|
|
15
|
-
this.mapping = mapping;
|
|
16
|
-
this.storageConfig = storageConfig;
|
|
17
|
-
if (this.storageConfig.incrementalReprocessing) {
|
|
18
|
-
if (this.mapping == null) {
|
|
19
|
-
throw new ServiceAssertionError(`mapping is required for v3 storage`);
|
|
20
|
-
}
|
|
21
|
-
this.hydrationState = new MongoHydrationState(this.mapping, this.id);
|
|
22
|
-
}
|
|
23
|
-
else if (!this.syncConfigWithErrors.config.compatibility.isEnabled(CompatibilityOption.versionedBucketIds) &&
|
|
24
|
-
!this.storageConfig.versionedBuckets) {
|
|
25
|
-
this.hydrationState = DEFAULT_HYDRATION_STATE;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
this.hydrationState = versionedHydrationState(this.id);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
hydratedSyncConfig() {
|
|
32
|
-
return this.syncConfigWithErrors.config.hydrate({
|
|
33
|
-
hydrationState: this.hydrationState,
|
|
34
|
-
sqlite: nodeSqlite(sqlite)
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
class MongoHydrationState {
|
|
39
|
-
mapping;
|
|
40
|
-
version;
|
|
41
|
-
constructor(mapping, version) {
|
|
42
|
-
this.mapping = mapping;
|
|
43
|
-
this.version = version;
|
|
44
|
-
}
|
|
45
|
-
getBucketSourceScope(source) {
|
|
46
|
-
// Keep this aligned with versionedHydrationState() for now.
|
|
47
|
-
//
|
|
48
|
-
// Previous Mongo-specific behavior:
|
|
49
|
-
// return {
|
|
50
|
-
// bucketPrefix: defId,
|
|
51
|
-
// source
|
|
52
|
-
// };
|
|
53
|
-
return {
|
|
54
|
-
bucketPrefix: `${this.version}#${source.uniqueName}`,
|
|
55
|
-
source
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
getParameterIndexLookupScope(source) {
|
|
59
|
-
const defId = this.mapping.parameterLookupId(source);
|
|
60
|
-
return {
|
|
61
|
-
lookupName: defId,
|
|
62
|
-
queryId: '',
|
|
63
|
-
source
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=MongoPersistedSyncRules.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MongoPersistedSyncRules.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoPersistedSyncRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAGL,mBAAmB,EACnB,uBAAuB,EAGvB,UAAU,EAIV,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AAIvC,MAAM,OAAO,uBAAuB;IAIhB;IACA;IACA;IACC;IACA;IAPH,cAAc,CAAiB;IAE/C,YACkB,EAAU,EACV,oBAA0C,EAC1C,SAAiB,EAChB,OAAuC,EACvC,aAA4B;QAJ7B,OAAE,GAAF,EAAE,CAAQ;QACV,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,cAAS,GAAT,SAAS,CAAQ;QAChB,YAAO,GAAP,OAAO,CAAgC;QACvC,kBAAa,GAAb,aAAa,CAAe;QAE7C,IAAI,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;gBACzB,MAAM,IAAI,qBAAqB,CAAC,oCAAoC,CAAC,CAAC;YACxE,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;aAAM,IACL,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;YACjG,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EACpC,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,uBAAuB,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,GAAG,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC;YAC9C,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,mBAAmB;IAEJ;IACA;IAFnB,YACmB,OAAgC,EAChC,OAAe;QADf,YAAO,GAAP,OAAO,CAAyB;QAChC,YAAO,GAAP,OAAO,CAAQ;IAC/B,CAAC;IAEJ,oBAAoB,CAAC,MAAwB;QAC3C,4DAA4D;QAC5D,EAAE;QACF,oCAAoC;QACpC,WAAW;QACX,yBAAyB;QACzB,WAAW;QACX,KAAK;QACL,OAAO;YACL,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE;YACpD,MAAM;SACP,CAAC;IACJ,CAAC;IAED,4BAA4B,CAAC,MAAmC;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACrD,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,EAAE;YACX,MAAM;SACP,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { mongo } from '@powersync/lib-service-mongodb';
|
|
2
|
-
import { storage } from '@powersync/service-core';
|
|
3
|
-
import * as bson from 'bson';
|
|
4
|
-
import { ReplicationStreamDocumentV3, SyncConfigDefinition } from '../storage-index.js';
|
|
5
|
-
import { BucketDefinitionMapping } from './BucketDefinitionMapping.js';
|
|
6
|
-
import { MongoSyncRulesLock } from './MongoSyncRulesLock.js';
|
|
7
|
-
import { PowerSyncMongo } from './db.js';
|
|
8
|
-
import { SyncRuleDocumentV1 } from './v1/models.js';
|
|
9
|
-
declare abstract class MongoPersistedSyncRulesContentBase extends storage.PersistedSyncRulesContent {
|
|
10
|
-
protected readonly db: PowerSyncMongo;
|
|
11
|
-
current_lock: MongoSyncRulesLock | null;
|
|
12
|
-
readonly mapping: BucketDefinitionMapping;
|
|
13
|
-
readonly syncConfigId: bson.ObjectId | null;
|
|
14
|
-
protected constructor(db: PowerSyncMongo, options: ConstructorParameters<typeof storage.PersistedSyncRulesContent>[0] & {
|
|
15
|
-
mapping: BucketDefinitionMapping;
|
|
16
|
-
syncConfigId: bson.ObjectId | null;
|
|
17
|
-
});
|
|
18
|
-
getStorageConfig(): import("./models.js").StorageConfig;
|
|
19
|
-
parsed(options: storage.ParseSyncRulesOptions): storage.PersistedSyncRules;
|
|
20
|
-
lock(session?: mongo.ClientSession): Promise<MongoSyncRulesLock>;
|
|
21
|
-
}
|
|
22
|
-
export declare class MongoPersistedSyncRulesContentV1 extends MongoPersistedSyncRulesContentBase {
|
|
23
|
-
constructor(db: PowerSyncMongo, doc: SyncRuleDocumentV1);
|
|
24
|
-
}
|
|
25
|
-
export declare class MongoPersistedSyncRulesContentV3 extends MongoPersistedSyncRulesContentBase {
|
|
26
|
-
readonly syncConfigId: bson.ObjectId;
|
|
27
|
-
constructor(db: PowerSyncMongo, doc: ReplicationStreamDocumentV3, config: SyncConfigDefinition);
|
|
28
|
-
}
|
|
29
|
-
export {};
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { ServiceAssertionError } from '@powersync/lib-services-framework';
|
|
2
|
-
import { storage, SyncRuleState } from '@powersync/service-core';
|
|
3
|
-
import { BucketDefinitionMapping } from './BucketDefinitionMapping.js';
|
|
4
|
-
import { MongoPersistedSyncRules } from './MongoPersistedSyncRules.js';
|
|
5
|
-
import { MongoSyncRulesLock } from './MongoSyncRulesLock.js';
|
|
6
|
-
import { getMongoStorageConfig } from './models.js';
|
|
7
|
-
class MongoPersistedSyncRulesContentBase extends storage.PersistedSyncRulesContent {
|
|
8
|
-
db;
|
|
9
|
-
current_lock = null;
|
|
10
|
-
mapping;
|
|
11
|
-
syncConfigId;
|
|
12
|
-
constructor(db, options) {
|
|
13
|
-
const { mapping, syncConfigId, ...base } = options;
|
|
14
|
-
super(base);
|
|
15
|
-
this.db = db;
|
|
16
|
-
this.mapping = mapping;
|
|
17
|
-
this.syncConfigId = syncConfigId;
|
|
18
|
-
}
|
|
19
|
-
getStorageConfig() {
|
|
20
|
-
return getMongoStorageConfig(this.storageVersion);
|
|
21
|
-
}
|
|
22
|
-
parsed(options) {
|
|
23
|
-
const parsed = super.parsed(options);
|
|
24
|
-
const storageConfig = this.getStorageConfig();
|
|
25
|
-
return new MongoPersistedSyncRules(parsed.id, parsed.syncConfigWithErrors, parsed.slot_name, storageConfig.incrementalReprocessing ? this.mapping : null, storageConfig);
|
|
26
|
-
}
|
|
27
|
-
async lock(session) {
|
|
28
|
-
const lock = await MongoSyncRulesLock.createLock(this.db.versioned(this.getStorageConfig()), this, session);
|
|
29
|
-
this.current_lock = lock;
|
|
30
|
-
return lock;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
export class MongoPersistedSyncRulesContentV1 extends MongoPersistedSyncRulesContentBase {
|
|
34
|
-
constructor(db, doc) {
|
|
35
|
-
super(db, {
|
|
36
|
-
id: doc._id,
|
|
37
|
-
sync_rules_content: doc.content,
|
|
38
|
-
compiled_plan: doc.serialized_plan ?? null,
|
|
39
|
-
last_checkpoint_lsn: doc.last_checkpoint_lsn,
|
|
40
|
-
// Handle legacy values
|
|
41
|
-
slot_name: doc.slot_name ?? `powersync_${doc._id}`,
|
|
42
|
-
last_fatal_error: doc.last_fatal_error,
|
|
43
|
-
last_fatal_error_ts: doc.last_fatal_error_ts,
|
|
44
|
-
last_checkpoint_ts: doc.last_checkpoint_ts,
|
|
45
|
-
last_keepalive_ts: doc.last_keepalive_ts,
|
|
46
|
-
active: doc.state == SyncRuleState.ACTIVE,
|
|
47
|
-
storageVersion: doc.storage_version ?? storage.LEGACY_STORAGE_VERSION,
|
|
48
|
-
mapping: new BucketDefinitionMapping(),
|
|
49
|
-
syncConfigId: null
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
export class MongoPersistedSyncRulesContentV3 extends MongoPersistedSyncRulesContentBase {
|
|
54
|
-
constructor(db, doc, config) {
|
|
55
|
-
const state = doc.sync_configs.find((c) => c._id.equals(config._id));
|
|
56
|
-
if (state == null) {
|
|
57
|
-
throw new ServiceAssertionError(`Cannot find sync config ${config._id} in replication stream ${doc._id}`);
|
|
58
|
-
}
|
|
59
|
-
super(db, {
|
|
60
|
-
id: doc._id,
|
|
61
|
-
sync_rules_content: config.content,
|
|
62
|
-
compiled_plan: config.serialized_plan ?? null,
|
|
63
|
-
last_checkpoint_lsn: state?.last_checkpoint_lsn ?? null,
|
|
64
|
-
slot_name: doc.slot_name ?? `powersync_${doc._id}`,
|
|
65
|
-
last_fatal_error: doc.last_fatal_error,
|
|
66
|
-
last_fatal_error_ts: doc.last_fatal_error_ts,
|
|
67
|
-
last_checkpoint_ts: doc.last_checkpoint_ts,
|
|
68
|
-
last_keepalive_ts: doc.last_keepalive_ts,
|
|
69
|
-
active: doc.state == SyncRuleState.ACTIVE && state.state == SyncRuleState.ACTIVE,
|
|
70
|
-
storageVersion: doc.storage_version,
|
|
71
|
-
mapping: BucketDefinitionMapping.fromSyncConfig(config),
|
|
72
|
-
syncConfigId: config._id
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=MongoPersistedSyncRulesContent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MongoPersistedSyncRulesContent.js","sourceRoot":"","sources":["../../../src/storage/implementation/MongoPersistedSyncRulesContent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { InternalOpId } from '@powersync/service-core';
|
|
2
|
-
import * as bson from 'bson';
|
|
3
|
-
import { BucketDefinitionMapping } from '../BucketDefinitionMapping.js';
|
|
4
|
-
import type { VersionedPowerSyncMongo } from '../db.js';
|
|
5
|
-
export interface MongoSyncBucketStorageContext<TDb extends VersionedPowerSyncMongo = VersionedPowerSyncMongo> {
|
|
6
|
-
db: TDb;
|
|
7
|
-
group_id: number;
|
|
8
|
-
mapping: BucketDefinitionMapping;
|
|
9
|
-
}
|
|
10
|
-
export interface MongoSyncBucketStorageCheckpoint {
|
|
11
|
-
checkpoint: InternalOpId;
|
|
12
|
-
snapshotTime: bson.Timestamp;
|
|
13
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MongoSyncBucketStorageContext.js","sourceRoot":"","sources":["../../../../src/storage/implementation/common/MongoSyncBucketStorageContext.ts"],"names":[],"mappings":""}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { mongo } from '@powersync/lib-service-mongodb';
|
|
2
|
-
import { InternalOpId } from '@powersync/service-core';
|
|
3
|
-
import { BucketDataProperties } from '../models.js';
|
|
4
|
-
import { BucketDataDoc, BucketKey } from './BucketDataDoc.js';
|
|
5
|
-
declare const GENERIC_ID: unique symbol;
|
|
6
|
-
export type BucketDataDocumentGenericId = {
|
|
7
|
-
b: string;
|
|
8
|
-
o: InternalOpId;
|
|
9
|
-
[GENERIC_ID]: true;
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* This document is never actually constructed - we use it as a "virtual" type.
|
|
13
|
-
*
|
|
14
|
-
* The actual implementations are BucketDataDocumentV1 or BucketDataDocumentV3.
|
|
15
|
-
* They don't fully satisfy this interface, but this works to share common implementations.
|
|
16
|
-
*
|
|
17
|
-
* The idea is that we can have a common implementation between V1 & V3, using this type,
|
|
18
|
-
* and operate on MongoDB collections.
|
|
19
|
-
*
|
|
20
|
-
* This interface serves two primary purposes:
|
|
21
|
-
* 1. Captures properties that exist on both V1 and V3 storage models.
|
|
22
|
-
* 2. Gives a common reference when querying or modifying collections.
|
|
23
|
-
*
|
|
24
|
-
* Generics would've been ideal, but they don't play well with MongoDB collections.
|
|
25
|
-
*/
|
|
26
|
-
export interface BucketDataDocumentGeneric extends BucketDataProperties {
|
|
27
|
-
_id: BucketDataDocumentGenericId;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Represent read/write access for a single bucket.
|
|
31
|
-
*
|
|
32
|
-
* This does not implement the actual collection operations, but supports the required conversions
|
|
33
|
-
* between in-memory BucketDataDoc and the specific storage formats.
|
|
34
|
-
*/
|
|
35
|
-
export interface SingleBucketStore {
|
|
36
|
-
readonly key: BucketKey;
|
|
37
|
-
readonly collection: mongo.Collection<BucketDataDocumentGeneric>;
|
|
38
|
-
docId(o: InternalOpId): BucketDataDocumentGenericId;
|
|
39
|
-
readonly minId: BucketDataDocumentGenericId;
|
|
40
|
-
readonly maxId: BucketDataDocumentGenericId;
|
|
41
|
-
/**
|
|
42
|
-
* Convert in-memory document -> persisted document.
|
|
43
|
-
*/
|
|
44
|
-
toPersistedDocument(source: Omit<BucketDataDoc, 'bucketKey'>): BucketDataDocumentGeneric;
|
|
45
|
-
/**
|
|
46
|
-
* Convert persisted document -> in-memory document.
|
|
47
|
-
*/
|
|
48
|
-
fromPersistedDocument(doc: BucketDataDocumentGeneric): BucketDataDoc;
|
|
49
|
-
/**
|
|
50
|
-
* Convert partial persisted document -> partial in-memory document.
|
|
51
|
-
*/
|
|
52
|
-
fromPartialPersistedDocument<T extends keyof BucketDataProperties>(doc: Pick<BucketDataDocumentGeneric, '_id' | T>): Pick<BucketDataDoc, 'bucketKey' | 'o' | T>;
|
|
53
|
-
}
|
|
54
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SingleBucketStore.js","sourceRoot":"","sources":["../../../../src/storage/implementation/common/SingleBucketStore.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ParameterIndexId, ScopedParameterLookup, SqliteJsonValue } from '@powersync/service-sync-rules';
|
|
2
|
-
import * as bson from 'bson';
|
|
3
|
-
export declare function serializeParameterLookupV3(lookup: ScopedParameterLookup): bson.Binary;
|
|
4
|
-
export declare function deserializeParameterLookupV3(lookup: bson.Binary, indexId: ParameterIndexId): SqliteJsonValue[];
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { deserializeParameterLookup } from '@powersync/service-core';
|
|
2
|
-
import * as bson from 'bson';
|
|
3
|
-
export function serializeParameterLookupV3(lookup) {
|
|
4
|
-
return new bson.Binary(bson.serialize({ l: lookup.values.slice(2) }));
|
|
5
|
-
}
|
|
6
|
-
export function deserializeParameterLookupV3(lookup, indexId) {
|
|
7
|
-
return [indexId, '', ...deserializeParameterLookup(lookup)];
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=MongoParameterLookupV3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MongoParameterLookupV3.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v3/MongoParameterLookupV3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAErE,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,UAAU,0BAA0B,CAAC,MAA6B;IACtE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,MAAmB,EAAE,OAAyB;IACzF,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { mongo } from '@powersync/lib-service-mongodb';
|
|
2
|
-
import { InternalOpId } from '@powersync/service-core';
|
|
3
|
-
import { BucketDataDoc, BucketKey } from '../common/BucketDataDoc.js';
|
|
4
|
-
import { BucketDataDocumentGeneric, BucketDataDocumentGenericId, SingleBucketStore } from '../common/SingleBucketStore.js';
|
|
5
|
-
import { BucketDataProperties } from '../models.js';
|
|
6
|
-
import { VersionedPowerSyncMongoV3 } from './VersionedPowerSyncMongoV3.js';
|
|
7
|
-
export declare class SingleBucketStoreV3 implements SingleBucketStore {
|
|
8
|
-
private db;
|
|
9
|
-
readonly key: BucketKey;
|
|
10
|
-
readonly collection: mongo.Collection<BucketDataDocumentGeneric>;
|
|
11
|
-
constructor(db: VersionedPowerSyncMongoV3, key: BucketKey);
|
|
12
|
-
docId(o: InternalOpId): BucketDataDocumentGenericId;
|
|
13
|
-
get minId(): BucketDataDocumentGenericId;
|
|
14
|
-
get maxId(): BucketDataDocumentGenericId;
|
|
15
|
-
toPersistedDocument(source: Omit<BucketDataDoc, 'bucketKey'>): BucketDataDocumentGeneric;
|
|
16
|
-
fromPersistedDocument(doc: BucketDataDocumentGeneric): BucketDataDoc;
|
|
17
|
-
fromPartialPersistedDocument<T extends keyof BucketDataProperties>(doc: Pick<BucketDataDocumentGeneric, '_id' | T>): Pick<BucketDataDoc, 'bucketKey' | 'o' | T>;
|
|
18
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { mongo } from '@powersync/lib-service-mongodb';
|
|
2
|
-
import { loadBucketDataDocumentV3, serializeBucketDataV3 } from './models.js';
|
|
3
|
-
export class SingleBucketStoreV3 {
|
|
4
|
-
db;
|
|
5
|
-
key;
|
|
6
|
-
collection;
|
|
7
|
-
constructor(db, key) {
|
|
8
|
-
this.db = db;
|
|
9
|
-
this.key = key;
|
|
10
|
-
this.collection = db.bucketDataV3(key.replicationStreamId, key.definitionId);
|
|
11
|
-
}
|
|
12
|
-
docId(o) {
|
|
13
|
-
// `satisfies BucketDataKeyV3` checks that we use the correct type for V3 storage
|
|
14
|
-
// `as BucketDataDocumentGenericId` does a cast to get the interface virtual type
|
|
15
|
-
return {
|
|
16
|
-
b: this.key.bucket,
|
|
17
|
-
o
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
get minId() {
|
|
21
|
-
return {
|
|
22
|
-
b: this.key.bucket,
|
|
23
|
-
o: new mongo.MinKey()
|
|
24
|
-
}; // No way to properly type this
|
|
25
|
-
}
|
|
26
|
-
get maxId() {
|
|
27
|
-
return {
|
|
28
|
-
b: this.key.bucket,
|
|
29
|
-
o: new mongo.MaxKey()
|
|
30
|
-
}; // No way to properly type this
|
|
31
|
-
}
|
|
32
|
-
toPersistedDocument(source) {
|
|
33
|
-
return serializeBucketDataV3({ bucketKey: this.key, ...source });
|
|
34
|
-
}
|
|
35
|
-
fromPersistedDocument(doc) {
|
|
36
|
-
return loadBucketDataDocumentV3(this.key, doc);
|
|
37
|
-
}
|
|
38
|
-
fromPartialPersistedDocument(doc) {
|
|
39
|
-
const document = doc;
|
|
40
|
-
const { _id, ...rest } = document;
|
|
41
|
-
return {
|
|
42
|
-
bucketKey: this.key,
|
|
43
|
-
o: _id.o,
|
|
44
|
-
...rest
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=SingleBucketStoreV3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SingleBucketStoreV3.js","sourceRoot":"","sources":["../../../../src/storage/implementation/v3/SingleBucketStoreV3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAUvD,OAAO,EAAyC,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAErH,MAAM,OAAO,mBAAmB;IAIpB;IACQ;IAJF,UAAU,CAA8C;IAExE,YACU,EAA6B,EACrB,GAAc;QADtB,OAAE,GAAF,EAAE,CAA2B;QACrB,QAAG,GAAH,GAAG,CAAW;QAE9B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,YAAY,CAC/B,GAAG,CAAC,mBAAmB,EACvB,GAAG,CAAC,YAAY,CACyC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,CAAe;QACnB,iFAAiF;QACjF,iFAAiF;QACjF,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;YAClB,CAAC;SACuD,CAAC;IAC7D,CAAC;IAED,IAAI,KAAK;QACP,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;YAClB,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE;SACf,CAAC,CAAC,+BAA+B;IAC3C,CAAC;IAED,IAAI,KAAK;QACP,OAAO;YACL,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;YAClB,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE;SACf,CAAC,CAAC,+BAA+B;IAC3C,CAAC;IAED,mBAAmB,CAAC,MAAwC;QAC1D,OAAO,qBAAqB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAA8B,CAAC;IAChG,CAAC;IAED,qBAAqB,CAAC,GAA8B;QAClD,OAAO,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,GAA2B,CAAC,CAAC;IACzE,CAAC;IAED,4BAA4B,CAC1B,GAA+C;QAE/C,MAAM,QAAQ,GAAG,GAA4C,CAAC;QAC9D,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;QAClC,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,GAAG;YACnB,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,GAAG,IAAI;SACsC,CAAC;IAClD,CAAC;CACF"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { ServiceAssertionError } from '@powersync/lib-services-framework';
|
|
2
|
-
import {
|
|
3
|
-
BucketDataSource,
|
|
4
|
-
BucketDefinitionId,
|
|
5
|
-
ParameterIndexId,
|
|
6
|
-
ParameterIndexLookupCreator,
|
|
7
|
-
SyncConfigWithErrors
|
|
8
|
-
} from '@powersync/service-sync-rules';
|
|
9
|
-
import { SyncConfigDefinition } from '../storage-index.js';
|
|
10
|
-
|
|
11
|
-
export class BucketDefinitionMapping {
|
|
12
|
-
static fromSyncConfig(doc: Pick<SyncConfigDefinition, 'rule_mapping'>): BucketDefinitionMapping {
|
|
13
|
-
return new BucketDefinitionMapping(doc.rule_mapping?.definitions ?? {}, doc.rule_mapping?.parameter_indexes ?? {});
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
static fromParsedSyncRules(syncRules: SyncConfigWithErrors): BucketDefinitionMapping {
|
|
17
|
-
const definitionNames = syncRules.config.bucketDataSources.map((source) => source.uniqueName).sort();
|
|
18
|
-
const parameterKeys = syncRules.config.bucketParameterLookupSources
|
|
19
|
-
.map((source) => `${source.sourceId.lookupName}#${source.sourceId.queryId}`)
|
|
20
|
-
.sort();
|
|
21
|
-
|
|
22
|
-
const definitions: Record<string, BucketDefinitionId> = {};
|
|
23
|
-
const parameterLookups: Record<string, ParameterIndexId> = {};
|
|
24
|
-
|
|
25
|
-
for (const [index, uniqueName] of definitionNames.entries()) {
|
|
26
|
-
definitions[uniqueName] = (index + 1).toString(16);
|
|
27
|
-
}
|
|
28
|
-
for (const [index, key] of parameterKeys.entries()) {
|
|
29
|
-
parameterLookups[key] = (index + 1).toString(16);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return new BucketDefinitionMapping(definitions, parameterLookups);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
constructor(
|
|
36
|
-
private definitions: Record<string, BucketDefinitionId> = {},
|
|
37
|
-
private parameterLookupMapping: Record<string, ParameterIndexId> = {}
|
|
38
|
-
) {}
|
|
39
|
-
|
|
40
|
-
bucketSourceId(source: BucketDataSource): BucketDefinitionId {
|
|
41
|
-
const defId = this.definitions[source.uniqueName];
|
|
42
|
-
if (defId == null) {
|
|
43
|
-
throw new ServiceAssertionError(`No mapping found for bucket source ${source.uniqueName}`);
|
|
44
|
-
}
|
|
45
|
-
return defId;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
allBucketDefinitionIds(): BucketDefinitionId[] {
|
|
49
|
-
return Object.values(this.definitions);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
allParameterIndexIds(): ParameterIndexId[] {
|
|
53
|
-
return Object.values(this.parameterLookupMapping);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
parameterLookupId(source: ParameterIndexLookupCreator): ParameterIndexId {
|
|
57
|
-
const key = this.parameterLookupKey(source.sourceId.lookupName, source.sourceId.queryId);
|
|
58
|
-
const defId = this.parameterLookupMapping[key];
|
|
59
|
-
if (defId == null) {
|
|
60
|
-
throw new ServiceAssertionError(`No mapping found for parameter lookup source ${key}`);
|
|
61
|
-
}
|
|
62
|
-
return defId;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
private parameterLookupKey(lookupName: string, queryId: string) {
|
|
66
|
-
return `${lookupName}#${queryId}`;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
serialize(): SyncConfigDefinition['rule_mapping'] {
|
|
70
|
-
return {
|
|
71
|
-
definitions: { ...this.definitions },
|
|
72
|
-
parameter_indexes: { ...this.parameterLookupMapping }
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import * as sqlite from 'node:sqlite';
|
|
2
|
-
|
|
3
|
-
import { ServiceAssertionError } from '@powersync/lib-services-framework';
|
|
4
|
-
import { storage } from '@powersync/service-core';
|
|
5
|
-
import {
|
|
6
|
-
BucketDataScope,
|
|
7
|
-
BucketDataSource,
|
|
8
|
-
CompatibilityOption,
|
|
9
|
-
DEFAULT_HYDRATION_STATE,
|
|
10
|
-
HydratedSyncConfig,
|
|
11
|
-
HydrationState,
|
|
12
|
-
nodeSqlite,
|
|
13
|
-
ParameterIndexLookupCreator,
|
|
14
|
-
ParameterLookupScope,
|
|
15
|
-
SyncConfigWithErrors,
|
|
16
|
-
versionedHydrationState
|
|
17
|
-
} from '@powersync/service-sync-rules';
|
|
18
|
-
import { BucketDefinitionMapping } from './BucketDefinitionMapping.js';
|
|
19
|
-
import { StorageConfig } from './models.js';
|
|
20
|
-
|
|
21
|
-
export class MongoPersistedSyncRules implements storage.PersistedSyncRules {
|
|
22
|
-
public readonly hydrationState: HydrationState;
|
|
23
|
-
|
|
24
|
-
constructor(
|
|
25
|
-
public readonly id: number,
|
|
26
|
-
public readonly syncConfigWithErrors: SyncConfigWithErrors,
|
|
27
|
-
public readonly slot_name: string,
|
|
28
|
-
private readonly mapping: BucketDefinitionMapping | null,
|
|
29
|
-
private readonly storageConfig: StorageConfig
|
|
30
|
-
) {
|
|
31
|
-
if (this.storageConfig.incrementalReprocessing) {
|
|
32
|
-
if (this.mapping == null) {
|
|
33
|
-
throw new ServiceAssertionError(`mapping is required for v3 storage`);
|
|
34
|
-
}
|
|
35
|
-
this.hydrationState = new MongoHydrationState(this.mapping, this.id);
|
|
36
|
-
} else if (
|
|
37
|
-
!this.syncConfigWithErrors.config.compatibility.isEnabled(CompatibilityOption.versionedBucketIds) &&
|
|
38
|
-
!this.storageConfig.versionedBuckets
|
|
39
|
-
) {
|
|
40
|
-
this.hydrationState = DEFAULT_HYDRATION_STATE;
|
|
41
|
-
} else {
|
|
42
|
-
this.hydrationState = versionedHydrationState(this.id);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
hydratedSyncConfig(): HydratedSyncConfig {
|
|
47
|
-
return this.syncConfigWithErrors.config.hydrate({
|
|
48
|
-
hydrationState: this.hydrationState,
|
|
49
|
-
sqlite: nodeSqlite(sqlite)
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
class MongoHydrationState implements HydrationState {
|
|
55
|
-
constructor(
|
|
56
|
-
private readonly mapping: BucketDefinitionMapping,
|
|
57
|
-
private readonly version: number
|
|
58
|
-
) {}
|
|
59
|
-
|
|
60
|
-
getBucketSourceScope(source: BucketDataSource): BucketDataScope {
|
|
61
|
-
// Keep this aligned with versionedHydrationState() for now.
|
|
62
|
-
//
|
|
63
|
-
// Previous Mongo-specific behavior:
|
|
64
|
-
// return {
|
|
65
|
-
// bucketPrefix: defId,
|
|
66
|
-
// source
|
|
67
|
-
// };
|
|
68
|
-
return {
|
|
69
|
-
bucketPrefix: `${this.version}#${source.uniqueName}`,
|
|
70
|
-
source
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
getParameterIndexLookupScope(source: ParameterIndexLookupCreator): ParameterLookupScope {
|
|
75
|
-
const defId = this.mapping.parameterLookupId(source);
|
|
76
|
-
return {
|
|
77
|
-
lookupName: defId,
|
|
78
|
-
queryId: '',
|
|
79
|
-
source
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
}
|