@powersync/service-core 0.0.0-dev-20260225160713 → 0.0.0-dev-20260511080634
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 +102 -5
- package/dist/api/RouteAPI.d.ts +17 -3
- package/dist/api/api-index.d.ts +1 -1
- package/dist/api/api-index.js +1 -1
- package/dist/api/api-index.js.map +1 -1
- package/dist/api/api-metrics.js.map +1 -1
- package/dist/api/diagnostics.d.ts +1 -1
- package/dist/api/diagnostics.js +32 -14
- package/dist/api/diagnostics.js.map +1 -1
- package/dist/auth/CachedKeyCollector.js +1 -1
- package/dist/auth/CachedKeyCollector.js.map +1 -1
- package/dist/auth/CompoundKeyCollector.js.map +1 -1
- package/dist/auth/KeyStore.js.map +1 -1
- package/dist/auth/RemoteJWKSCollector.js.map +1 -1
- package/dist/auth/StaticKeyCollector.d.ts +1 -1
- package/dist/auth/StaticKeyCollector.js.map +1 -1
- package/dist/auth/StaticSupabaseKeyCollector.d.ts +1 -1
- package/dist/auth/StaticSupabaseKeyCollector.js.map +1 -1
- package/dist/auth/utils.d.ts +2 -1
- package/dist/auth/utils.js +1 -1
- package/dist/auth/utils.js.map +1 -1
- package/dist/entry/commands/compact-action.js +26 -5
- package/dist/entry/commands/compact-action.js.map +1 -1
- package/dist/entry/commands/teardown-action.js +2 -2
- package/dist/entry/commands/teardown-action.js.map +1 -1
- package/dist/entry/entry-index.d.ts +1 -1
- package/dist/entry/entry-index.js +1 -1
- package/dist/entry/entry-index.js.map +1 -1
- package/dist/events/EventsEngine.js +1 -1
- package/dist/events/EventsEngine.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/metrics/MetricsEngine.d.ts +1 -1
- package/dist/metrics/RollingBucketMax.d.ts +28 -0
- package/dist/metrics/RollingBucketMax.js +80 -0
- package/dist/metrics/RollingBucketMax.js.map +1 -0
- package/dist/metrics/metrics-index.d.ts +3 -2
- package/dist/metrics/metrics-index.js +3 -2
- package/dist/metrics/metrics-index.js.map +1 -1
- package/dist/metrics/open-telemetry/util.js +1 -1
- package/dist/metrics/open-telemetry/util.js.map +1 -1
- package/dist/metrics/register-metrics.js +2 -2
- package/dist/metrics/register-metrics.js.map +1 -1
- package/dist/modules/AbstractModule.d.ts +2 -2
- package/dist/modules/AbstractModule.js.map +1 -1
- package/dist/modules/modules-index.d.ts +1 -1
- package/dist/modules/modules-index.js +1 -1
- package/dist/modules/modules-index.js.map +1 -1
- package/dist/replication/AbstractReplicationJob.d.ts +2 -2
- package/dist/replication/AbstractReplicationJob.js +1 -1
- package/dist/replication/AbstractReplicationJob.js.map +1 -1
- package/dist/replication/AbstractReplicator.d.ts +7 -7
- package/dist/replication/AbstractReplicator.js +31 -28
- package/dist/replication/AbstractReplicator.js.map +1 -1
- package/dist/replication/ReplicationLagTracker.d.ts +50 -0
- package/dist/replication/ReplicationLagTracker.js +78 -0
- package/dist/replication/ReplicationLagTracker.js.map +1 -0
- package/dist/replication/replication-index.d.ts +3 -2
- package/dist/replication/replication-index.js +3 -2
- package/dist/replication/replication-index.js.map +1 -1
- package/dist/replication/replication-metrics.js.map +1 -1
- package/dist/routes/configure-fastify.d.ts +59 -32
- package/dist/routes/endpoints/admin.d.ts +108 -54
- package/dist/routes/endpoints/admin.js +8 -3
- 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 +10 -10
- package/dist/routes/endpoints/sync-rules.js.map +1 -1
- package/dist/routes/endpoints/sync-stream.d.ts +10 -10
- package/dist/routes/endpoints/sync-stream.js +8 -3
- package/dist/routes/endpoints/sync-stream.js.map +1 -1
- package/dist/routes/hooks.js +1 -1
- package/dist/routes/hooks.js.map +1 -1
- package/dist/routes/route-register.js.map +1 -1
- package/dist/runner/teardown.js +4 -4
- package/dist/runner/teardown.js.map +1 -1
- package/dist/storage/BucketStorage.d.ts +9 -9
- package/dist/storage/BucketStorage.js +9 -9
- package/dist/storage/BucketStorageBatch.d.ts +30 -9
- package/dist/storage/BucketStorageBatch.js.map +1 -1
- package/dist/storage/BucketStorageFactory.d.ts +32 -20
- package/dist/storage/BucketStorageFactory.js +19 -16
- package/dist/storage/BucketStorageFactory.js.map +1 -1
- package/dist/storage/ChecksumCache.d.ts +5 -2
- package/dist/storage/ChecksumCache.js +8 -4
- package/dist/storage/ChecksumCache.js.map +1 -1
- package/dist/storage/PersistedSyncRulesContent.d.ts +9 -3
- package/dist/storage/PersistedSyncRulesContent.js +25 -5
- package/dist/storage/PersistedSyncRulesContent.js.map +1 -1
- package/dist/storage/ReplicationEventPayload.d.ts +1 -1
- package/dist/storage/SourceTable.d.ts +10 -5
- package/dist/storage/SourceTable.js +3 -3
- package/dist/storage/SourceTable.js.map +1 -1
- package/dist/storage/StorageVersionConfig.d.ts +34 -1
- package/dist/storage/StorageVersionConfig.js +40 -7
- package/dist/storage/StorageVersionConfig.js.map +1 -1
- package/dist/storage/SyncRulesBucketStorage.d.ts +63 -11
- package/dist/storage/SyncRulesBucketStorage.js +14 -0
- package/dist/storage/SyncRulesBucketStorage.js.map +1 -1
- package/dist/storage/WriteCheckpointAPI.d.ts +6 -6
- package/dist/storage/WriteCheckpointAPI.js +1 -1
- package/dist/storage/bson.d.ts +0 -1
- package/dist/storage/bson.js +0 -4
- package/dist/storage/bson.js.map +1 -1
- package/dist/storage/storage-index.d.ts +8 -8
- package/dist/storage/storage-index.js +8 -8
- package/dist/storage/storage-index.js.map +1 -1
- package/dist/storage/storage-metrics.js.map +1 -1
- package/dist/streams/streams-index.d.ts +2 -2
- package/dist/streams/streams-index.js +2 -2
- package/dist/streams/streams-index.js.map +1 -1
- package/dist/sync/BucketChecksumState.d.ts +5 -8
- package/dist/sync/BucketChecksumState.js +118 -116
- package/dist/sync/BucketChecksumState.js.map +1 -1
- package/dist/sync/RequestTracker.js +1 -1
- package/dist/sync/RequestTracker.js.map +1 -1
- package/dist/sync/sync-index.d.ts +2 -2
- package/dist/sync/sync-index.js +2 -2
- package/dist/sync/sync-index.js.map +1 -1
- package/dist/sync/sync.js.map +1 -1
- package/dist/sync/util.d.ts +1 -0
- package/dist/sync/util.js +10 -0
- package/dist/sync/util.js.map +1 -1
- package/dist/system/ServiceContext.d.ts +1 -1
- package/dist/system/ServiceContext.js +1 -1
- package/dist/system/ServiceContext.js.map +1 -1
- package/dist/tracing/PerformanceTracer.d.ts +44 -0
- package/dist/tracing/PerformanceTracer.js +102 -0
- package/dist/tracing/PerformanceTracer.js.map +1 -0
- package/dist/tracing/TraceWriter.d.ts +22 -0
- package/dist/tracing/TraceWriter.js +63 -0
- package/dist/tracing/TraceWriter.js.map +1 -0
- package/dist/util/checkpointing.js +1 -1
- package/dist/util/config/collectors/impl/base64-config-collector.d.ts +1 -1
- package/dist/util/config/collectors/impl/base64-config-collector.js.map +1 -1
- package/dist/util/config/collectors/impl/filesystem-config-collector.d.ts +1 -1
- package/dist/util/config/collectors/impl/filesystem-config-collector.js +1 -1
- package/dist/util/config/collectors/impl/filesystem-config-collector.js.map +1 -1
- package/dist/util/config/compound-config-collector.d.ts +1 -1
- package/dist/util/config/compound-config-collector.js +2 -2
- package/dist/util/config/compound-config-collector.js.map +1 -1
- package/dist/util/config/sync-rules/impl/filesystem-sync-rules-collector.js +1 -1
- package/dist/util/config/sync-rules/impl/filesystem-sync-rules-collector.js.map +1 -1
- package/dist/util/config/sync-rules/sync-rules-provider.js.map +1 -1
- package/dist/util/config.js +1 -1
- package/dist/util/config.js.map +1 -1
- package/dist/util/env.js +1 -1
- package/dist/util/errors.d.ts +3 -0
- package/dist/util/errors.js +15 -0
- package/dist/util/errors.js.map +1 -0
- package/dist/util/protocol-types.d.ts +3 -3
- package/dist/util/protocol-types.js +1 -1
- package/dist/util/util-index.d.ts +1 -1
- package/dist/util/util-index.js +1 -1
- package/dist/util/util-index.js.map +1 -1
- package/dist/util/utils.d.ts +1 -1
- package/package.json +11 -11
- package/src/api/RouteAPI.ts +20 -3
- package/src/api/api-index.ts +1 -1
- package/src/api/api-metrics.ts +1 -1
- package/src/api/diagnostics.ts +42 -20
- package/src/auth/CachedKeyCollector.ts +2 -3
- package/src/auth/CompoundKeyCollector.ts +2 -3
- package/src/auth/KeyStore.ts +1 -1
- package/src/auth/RemoteJWKSCollector.ts +0 -1
- package/src/auth/StaticKeyCollector.ts +1 -1
- package/src/auth/StaticSupabaseKeyCollector.ts +1 -1
- package/src/auth/utils.ts +5 -2
- package/src/entry/commands/compact-action.ts +29 -5
- package/src/entry/commands/teardown-action.ts +2 -2
- package/src/entry/entry-index.ts +1 -1
- package/src/events/EventsEngine.ts +1 -1
- package/src/index.ts +2 -0
- package/src/metrics/MetricsEngine.ts +1 -1
- package/src/metrics/RollingBucketMax.ts +109 -0
- package/src/metrics/metrics-index.ts +3 -2
- package/src/metrics/open-telemetry/util.ts +1 -1
- package/src/metrics/register-metrics.ts +3 -3
- package/src/modules/AbstractModule.ts +2 -2
- package/src/modules/modules-index.ts +1 -1
- package/src/replication/AbstractReplicationJob.ts +3 -3
- package/src/replication/AbstractReplicator.ts +32 -30
- package/src/replication/ReplicationLagTracker.ts +86 -0
- package/src/replication/replication-index.ts +3 -2
- package/src/replication/replication-metrics.ts +1 -1
- package/src/routes/endpoints/admin.ts +8 -3
- package/src/routes/endpoints/checkpointing.ts +1 -1
- package/src/routes/endpoints/socket-route.ts +1 -1
- package/src/routes/endpoints/sync-rules.ts +10 -12
- package/src/routes/endpoints/sync-stream.ts +8 -3
- package/src/routes/hooks.ts +2 -2
- package/src/routes/route-register.ts +2 -10
- package/src/runner/teardown.ts +4 -4
- package/src/storage/BucketStorage.ts +9 -9
- package/src/storage/BucketStorageBatch.ts +34 -10
- package/src/storage/BucketStorageFactory.ts +51 -34
- package/src/storage/ChecksumCache.ts +14 -6
- package/src/storage/PersistedSyncRulesContent.ts +36 -7
- package/src/storage/ReplicationEventPayload.ts +1 -1
- package/src/storage/SourceTable.ts +10 -4
- package/src/storage/StorageVersionConfig.ts +55 -7
- package/src/storage/SyncRulesBucketStorage.ts +77 -11
- package/src/storage/WriteCheckpointAPI.ts +6 -6
- package/src/storage/bson.ts +0 -5
- package/src/storage/storage-index.ts +8 -8
- package/src/storage/storage-metrics.ts +2 -2
- package/src/streams/streams-index.ts +2 -2
- package/src/sync/BucketChecksumState.ts +142 -139
- package/src/sync/RequestTracker.ts +1 -1
- package/src/sync/sync-index.ts +2 -2
- package/src/sync/sync.ts +4 -4
- package/src/sync/util.ts +11 -1
- package/src/system/ServiceContext.ts +1 -1
- package/src/tracing/PerformanceTracer.ts +126 -0
- package/src/tracing/TraceWriter.ts +67 -0
- package/src/util/checkpointing.ts +1 -1
- package/src/util/config/collectors/impl/base64-config-collector.ts +1 -1
- package/src/util/config/collectors/impl/filesystem-config-collector.ts +2 -2
- package/src/util/config/compound-config-collector.ts +3 -3
- package/src/util/config/sync-rules/impl/filesystem-sync-rules-collector.ts +1 -1
- package/src/util/config/sync-rules/sync-rules-provider.ts +1 -1
- package/src/util/config.ts +1 -1
- package/src/util/env.ts +1 -1
- package/src/util/errors.ts +21 -0
- package/src/util/protocol-types.ts +1 -1
- package/src/util/util-index.ts +1 -1
- package/src/util/utils.ts +1 -1
- package/test/src/ReplicationLagTracker.test.ts +53 -0
- package/test/src/RollingBucketMax.test.ts +106 -0
- package/test/src/auth.test.ts +26 -7
- package/test/src/checksum_cache.test.ts +102 -57
- package/test/src/config.test.ts +1 -0
- package/test/src/diagnostics.test.ts +151 -0
- package/test/src/module-loader.test.ts +1 -1
- package/test/src/routes/mocks.ts +1 -1
- package/test/src/routes/stream.test.ts +1 -2
- package/test/src/sync/BucketChecksumState.test.ts +209 -80
- package/test/src/util/protocol_types.test.ts +1 -1
- package/test/src/utils.ts +9 -0
- package/test/tsconfig.json +0 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/vitest.config.ts +1 -1
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { BaseObserver } from '@powersync/lib-services-framework';
|
|
2
|
+
import { SerializedCompatibilityContext, SyncConfigWithErrors } from '@powersync/service-sync-rules';
|
|
3
|
+
import { ReplicationError } from '@powersync/service-types';
|
|
2
4
|
import { ParseSyncRulesOptions, PersistedSyncRules, PersistedSyncRulesContent } from './PersistedSyncRulesContent.js';
|
|
3
5
|
import { ReplicationEventPayload } from './ReplicationEventPayload.js';
|
|
4
6
|
import { ReplicationLock } from './ReplicationLock.js';
|
|
5
|
-
import { SyncRulesBucketStorage } from './SyncRulesBucketStorage.js';
|
|
6
7
|
import { ReportStorage } from './ReportStorage.js';
|
|
7
|
-
import {
|
|
8
|
+
import { SyncRulesBucketStorage } from './SyncRulesBucketStorage.js';
|
|
8
9
|
/**
|
|
9
10
|
* Represents a configured storage provider.
|
|
10
11
|
*
|
|
11
|
-
* The provider can handle multiple
|
|
12
|
-
* This is to handle replication of a new version of sync
|
|
12
|
+
* The provider can handle multiple replication streams concurrently, each with their own storage.
|
|
13
|
+
* This is to handle replication of a new version of sync config, while the old replication stream is still active.
|
|
13
14
|
*
|
|
14
|
-
* Storage APIs for a specific
|
|
15
|
+
* Storage APIs for a specific replication stream are provided by the `SyncRulesBucketStorage` instances.
|
|
15
16
|
*/
|
|
16
17
|
export declare abstract class BucketStorageFactory extends BaseObserver<BucketStorageFactoryListener> implements AsyncDisposable {
|
|
17
18
|
/**
|
|
18
|
-
* Update sync
|
|
19
|
+
* Update sync config from configuration, if changed.
|
|
19
20
|
*/
|
|
20
21
|
configureSyncRules(options: UpdateSyncRulesOptions): Promise<{
|
|
21
22
|
updated: boolean;
|
|
@@ -23,46 +24,46 @@ export declare abstract class BucketStorageFactory extends BaseObserver<BucketSt
|
|
|
23
24
|
lock?: ReplicationLock;
|
|
24
25
|
}>;
|
|
25
26
|
/**
|
|
26
|
-
* Get a storage instance to query sync data for specific sync
|
|
27
|
+
* Get a storage instance to query sync data for specific sync config.
|
|
27
28
|
*/
|
|
28
29
|
abstract getInstance(syncRules: PersistedSyncRulesContent, options?: GetIntanceOptions): SyncRulesBucketStorage;
|
|
29
30
|
/**
|
|
30
|
-
* Deploy new sync
|
|
31
|
+
* Deploy new sync config.
|
|
31
32
|
*/
|
|
32
33
|
abstract updateSyncRules(options: UpdateSyncRulesOptions): Promise<PersistedSyncRulesContent>;
|
|
33
34
|
/**
|
|
34
35
|
* Indicate that a slot was removed, and we should re-sync by creating
|
|
35
|
-
* a new
|
|
36
|
+
* a new replication stream.
|
|
36
37
|
*
|
|
37
38
|
* This is roughly the same as deploying a new version of the current sync
|
|
38
|
-
*
|
|
39
|
-
* the latest
|
|
39
|
+
* config, but also accounts for cases where the current sync config is not
|
|
40
|
+
* the latest one.
|
|
40
41
|
*
|
|
41
42
|
* Replication should be restarted after this.
|
|
42
43
|
*/
|
|
43
44
|
abstract restartReplication(sync_rules_group_id: number): Promise<void>;
|
|
44
45
|
/**
|
|
45
|
-
* Get the sync
|
|
46
|
+
* Get the sync config used for querying.
|
|
46
47
|
*/
|
|
47
48
|
getActiveSyncRules(options: ParseSyncRulesOptions): Promise<PersistedSyncRules | null>;
|
|
48
49
|
/**
|
|
49
|
-
* Get the sync
|
|
50
|
+
* Get the sync config used for querying.
|
|
50
51
|
*/
|
|
51
52
|
abstract getActiveSyncRulesContent(): Promise<PersistedSyncRulesContent | null>;
|
|
52
53
|
/**
|
|
53
|
-
* Get the sync
|
|
54
|
+
* Get the sync config that will be active next once done with initial replicatino.
|
|
54
55
|
*/
|
|
55
56
|
getNextSyncRules(options: ParseSyncRulesOptions): Promise<PersistedSyncRules | null>;
|
|
56
57
|
/**
|
|
57
|
-
* Get the sync
|
|
58
|
+
* Get the sync config that will be active next once done with initial replicatino.
|
|
58
59
|
*/
|
|
59
60
|
abstract getNextSyncRulesContent(): Promise<PersistedSyncRulesContent | null>;
|
|
60
61
|
/**
|
|
61
|
-
* Get all sync
|
|
62
|
+
* Get all sync config currently replicating. Typically this is the "active" and "next" sync config.
|
|
62
63
|
*/
|
|
63
64
|
abstract getReplicatingSyncRules(): Promise<PersistedSyncRulesContent[]>;
|
|
64
65
|
/**
|
|
65
|
-
* Get all sync
|
|
66
|
+
* Get all sync config stopped but not terminated yet.
|
|
66
67
|
*/
|
|
67
68
|
abstract getStoppedSyncRules(): Promise<PersistedSyncRulesContent[]>;
|
|
68
69
|
/**
|
|
@@ -70,11 +71,11 @@ export declare abstract class BucketStorageFactory extends BaseObserver<BucketSt
|
|
|
70
71
|
*/
|
|
71
72
|
abstract getActiveStorage(): Promise<SyncRulesBucketStorage | null>;
|
|
72
73
|
/**
|
|
73
|
-
* Get storage size of active
|
|
74
|
+
* Get storage size of active replication stream.
|
|
74
75
|
*/
|
|
75
76
|
abstract getStorageMetrics(): Promise<StorageMetrics>;
|
|
76
77
|
/**
|
|
77
|
-
* Get the unique identifier for this instance of Powersync
|
|
78
|
+
* Get the unique identifier for this instance of Powersync.
|
|
78
79
|
*/
|
|
79
80
|
abstract getPowerSyncInstanceId(): Promise<string>;
|
|
80
81
|
/**
|
|
@@ -111,6 +112,11 @@ export interface UpdateSyncRulesOptions {
|
|
|
111
112
|
* compiler.
|
|
112
113
|
*/
|
|
113
114
|
plan: SerializedSyncPlan | null;
|
|
115
|
+
/**
|
|
116
|
+
* Parsed sync config, primarily to generate a definition mapping.
|
|
117
|
+
* Not persisted, and the defaultSchema used for parsing is not relevant.
|
|
118
|
+
*/
|
|
119
|
+
parsed: SyncConfigWithErrors;
|
|
114
120
|
};
|
|
115
121
|
lock?: boolean;
|
|
116
122
|
storageVersion?: number;
|
|
@@ -129,11 +135,12 @@ export interface SerializedSyncPlan {
|
|
|
129
135
|
* them.
|
|
130
136
|
*/
|
|
131
137
|
eventDescriptors: Record<string, string[]>;
|
|
138
|
+
errors?: ReplicationError[];
|
|
132
139
|
}
|
|
133
140
|
export declare function updateSyncRulesFromYaml(content: string, options?: Omit<UpdateSyncRulesOptions, 'config'> & {
|
|
134
141
|
validate?: boolean;
|
|
135
142
|
}): UpdateSyncRulesOptions;
|
|
136
|
-
export declare function updateSyncRulesFromConfig(parsed:
|
|
143
|
+
export declare function updateSyncRulesFromConfig(parsed: SyncConfigWithErrors, options?: Omit<UpdateSyncRulesOptions, 'config'>): UpdateSyncRulesOptions;
|
|
137
144
|
export interface GetIntanceOptions {
|
|
138
145
|
/**
|
|
139
146
|
* Set to true to skip trigger any events for creating the instance.
|
|
@@ -173,3 +180,8 @@ export interface TestStorageOptions {
|
|
|
173
180
|
}
|
|
174
181
|
export type TestStorageFactory = (options?: TestStorageOptions) => Promise<BucketStorageFactory>;
|
|
175
182
|
export type TestReportStorageFactory = (options?: TestStorageOptions) => Promise<ReportStorage>;
|
|
183
|
+
export interface TestStorageConfig {
|
|
184
|
+
factory: TestStorageFactory;
|
|
185
|
+
tableIdStrings: boolean;
|
|
186
|
+
storageVersion?: number;
|
|
187
|
+
}
|
|
@@ -1,43 +1,44 @@
|
|
|
1
1
|
import { BaseObserver, logger } from '@powersync/lib-services-framework';
|
|
2
2
|
import { PrecompiledSyncConfig, serializeSyncPlan, SqlSyncRules } from '@powersync/service-sync-rules';
|
|
3
|
+
import { syncConfigYamlErrorToReplicationError } from '../util/errors.js';
|
|
3
4
|
/**
|
|
4
5
|
* Represents a configured storage provider.
|
|
5
6
|
*
|
|
6
|
-
* The provider can handle multiple
|
|
7
|
-
* This is to handle replication of a new version of sync
|
|
7
|
+
* The provider can handle multiple replication streams concurrently, each with their own storage.
|
|
8
|
+
* This is to handle replication of a new version of sync config, while the old replication stream is still active.
|
|
8
9
|
*
|
|
9
|
-
* Storage APIs for a specific
|
|
10
|
+
* Storage APIs for a specific replication stream are provided by the `SyncRulesBucketStorage` instances.
|
|
10
11
|
*/
|
|
11
12
|
export class BucketStorageFactory extends BaseObserver {
|
|
12
13
|
/**
|
|
13
|
-
* Update sync
|
|
14
|
+
* Update sync config from configuration, if changed.
|
|
14
15
|
*/
|
|
15
16
|
async configureSyncRules(options) {
|
|
16
17
|
const next = await this.getNextSyncRulesContent();
|
|
17
18
|
const active = await this.getActiveSyncRulesContent();
|
|
18
19
|
if (next?.sync_rules_content == options.config.yaml) {
|
|
19
|
-
logger.info('Sync
|
|
20
|
+
logger.info('Sync config unchanged');
|
|
20
21
|
return { updated: false };
|
|
21
22
|
}
|
|
22
23
|
else if (next == null && active?.sync_rules_content == options.config.yaml) {
|
|
23
|
-
logger.info('Sync
|
|
24
|
+
logger.info('Sync config unchanged');
|
|
24
25
|
return { updated: false };
|
|
25
26
|
}
|
|
26
27
|
else {
|
|
27
|
-
logger.info('Sync
|
|
28
|
+
logger.info('Sync config updated');
|
|
28
29
|
const persisted_sync_rules = await this.updateSyncRules(options);
|
|
29
30
|
return { updated: true, persisted_sync_rules, lock: persisted_sync_rules.current_lock ?? undefined };
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
33
|
/**
|
|
33
|
-
* Get the sync
|
|
34
|
+
* Get the sync config used for querying.
|
|
34
35
|
*/
|
|
35
36
|
async getActiveSyncRules(options) {
|
|
36
37
|
const content = await this.getActiveSyncRulesContent();
|
|
37
38
|
return content?.parsed(options) ?? null;
|
|
38
39
|
}
|
|
39
40
|
/**
|
|
40
|
-
* Get the sync
|
|
41
|
+
* Get the sync config that will be active next once done with initial replicatino.
|
|
41
42
|
*/
|
|
42
43
|
async getNextSyncRules(options) {
|
|
43
44
|
const content = await this.getNextSyncRulesContent();
|
|
@@ -45,7 +46,7 @@ export class BucketStorageFactory extends BaseObserver {
|
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
48
|
export function updateSyncRulesFromYaml(content, options) {
|
|
48
|
-
const
|
|
49
|
+
const config = SqlSyncRules.fromYaml(content, {
|
|
49
50
|
// No schema-based validation at this point
|
|
50
51
|
schema: undefined,
|
|
51
52
|
defaultSchema: 'not_applicable', // Not needed for validation
|
|
@@ -55,17 +56,19 @@ export function updateSyncRulesFromYaml(content, options) {
|
|
|
55
56
|
}
|
|
56
57
|
export function updateSyncRulesFromConfig(parsed, options) {
|
|
57
58
|
let plan = null;
|
|
58
|
-
|
|
59
|
+
const { config, errors } = parsed;
|
|
60
|
+
if (config instanceof PrecompiledSyncConfig) {
|
|
59
61
|
const eventDescriptors = {};
|
|
60
|
-
for (const event of
|
|
62
|
+
for (const event of config.eventDescriptors) {
|
|
61
63
|
eventDescriptors[event.name] = event.sourceQueries.map((q) => q.sql);
|
|
62
64
|
}
|
|
63
65
|
plan = {
|
|
64
|
-
compatibility:
|
|
65
|
-
plan: serializeSyncPlan(
|
|
66
|
-
eventDescriptors
|
|
66
|
+
compatibility: config.compatibility.serialize(),
|
|
67
|
+
plan: serializeSyncPlan(config.plan),
|
|
68
|
+
eventDescriptors,
|
|
69
|
+
errors: errors.map((e) => syncConfigYamlErrorToReplicationError(e))
|
|
67
70
|
};
|
|
68
71
|
}
|
|
69
|
-
return { config: { yaml:
|
|
72
|
+
return { config: { yaml: config.content, plan, parsed }, ...options };
|
|
70
73
|
}
|
|
71
74
|
//# sourceMappingURL=BucketStorageFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BucketStorageFactory.js","sourceRoot":"","sources":["../../src/storage/BucketStorageFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"BucketStorageFactory.js","sourceRoot":"","sources":["../../src/storage/BucketStorageFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { BucketDataSource } from '@powersync/service-sync-rules';
|
|
1
2
|
import { BucketChecksum } from '../util/protocol-types.js';
|
|
2
3
|
import { ChecksumMap, InternalOpId, PartialChecksum } from '../util/utils.js';
|
|
4
|
+
import { BucketChecksumRequest } from './SyncRulesBucketStorage.js';
|
|
3
5
|
export interface FetchPartialBucketChecksum {
|
|
4
6
|
bucket: string;
|
|
7
|
+
source: BucketDataSource;
|
|
5
8
|
start?: InternalOpId;
|
|
6
9
|
end: InternalOpId;
|
|
7
10
|
}
|
|
@@ -41,7 +44,7 @@ export declare class ChecksumCache {
|
|
|
41
44
|
private fetchChecksums;
|
|
42
45
|
constructor(options: ChecksumCacheOptions);
|
|
43
46
|
clear(): void;
|
|
44
|
-
getChecksums(checkpoint: InternalOpId, buckets:
|
|
47
|
+
getChecksums(checkpoint: InternalOpId, buckets: BucketChecksumRequest[]): Promise<BucketChecksum[]>;
|
|
45
48
|
/**
|
|
46
49
|
* Get bucket checksums for a checkpoint.
|
|
47
50
|
*
|
|
@@ -49,5 +52,5 @@ export declare class ChecksumCache {
|
|
|
49
52
|
*
|
|
50
53
|
* @returns a Map with exactly one entry for each bucket requested
|
|
51
54
|
*/
|
|
52
|
-
getChecksumMap(checkpoint: InternalOpId, buckets:
|
|
55
|
+
getChecksumMap(checkpoint: InternalOpId, buckets: BucketChecksumRequest[]): Promise<ChecksumMap>;
|
|
53
56
|
}
|
|
@@ -72,7 +72,7 @@ export class ChecksumCache {
|
|
|
72
72
|
async getChecksums(checkpoint, buckets) {
|
|
73
73
|
const checksums = await this.getChecksumMap(checkpoint, buckets);
|
|
74
74
|
// Return results in the same order as the request
|
|
75
|
-
return buckets.map((bucket) => checksums.get(bucket));
|
|
75
|
+
return buckets.map((bucket) => checksums.get(bucket.bucket));
|
|
76
76
|
}
|
|
77
77
|
/**
|
|
78
78
|
* Get bucket checksums for a checkpoint.
|
|
@@ -113,18 +113,19 @@ export class ChecksumCache {
|
|
|
113
113
|
};
|
|
114
114
|
// One promise to await to ensure all fetch requests completed.
|
|
115
115
|
let settledPromise = null;
|
|
116
|
+
const sourceMap = new Map();
|
|
116
117
|
try {
|
|
117
118
|
// Individual cache fetch promises
|
|
118
119
|
let cacheFetchPromises = [];
|
|
119
120
|
for (let bucket of buckets) {
|
|
120
|
-
const cacheKey = makeCacheKey(checkpoint, bucket);
|
|
121
|
+
const cacheKey = makeCacheKey(checkpoint, bucket.bucket);
|
|
121
122
|
let status = {};
|
|
122
123
|
const p = this.cache.fetch(cacheKey, { context: context, status: status }).then((checksums) => {
|
|
123
124
|
if (checksums == null) {
|
|
124
125
|
// Should never happen
|
|
125
126
|
throw new Error(`Failed to get checksums for ${cacheKey}`);
|
|
126
127
|
}
|
|
127
|
-
finalResults.set(bucket, checksums);
|
|
128
|
+
finalResults.set(bucket.bucket, checksums);
|
|
128
129
|
});
|
|
129
130
|
cacheFetchPromises.push(p);
|
|
130
131
|
if (status.fetch == 'hit' || status.fetch == 'inflight') {
|
|
@@ -134,7 +135,8 @@ export class ChecksumCache {
|
|
|
134
135
|
}
|
|
135
136
|
else {
|
|
136
137
|
// We need a new request for this checksum.
|
|
137
|
-
toFetch.add(bucket);
|
|
138
|
+
toFetch.add(bucket.bucket);
|
|
139
|
+
sourceMap.set(bucket.bucket, bucket.source);
|
|
138
140
|
}
|
|
139
141
|
}
|
|
140
142
|
// We do this directly after creating the promises, otherwise
|
|
@@ -168,6 +170,7 @@ export class ChecksumCache {
|
|
|
168
170
|
// Partial checksum found - make a partial checksum request
|
|
169
171
|
bucketRequest = {
|
|
170
172
|
bucket,
|
|
173
|
+
source: sourceMap.get(bucket),
|
|
171
174
|
start: cp,
|
|
172
175
|
end: checkpoint
|
|
173
176
|
};
|
|
@@ -186,6 +189,7 @@ export class ChecksumCache {
|
|
|
186
189
|
// No partial checksum found - make a new full checksum request
|
|
187
190
|
bucketRequest = {
|
|
188
191
|
bucket,
|
|
192
|
+
source: sourceMap.get(bucket),
|
|
189
193
|
end: checkpoint
|
|
190
194
|
};
|
|
191
195
|
add.set(bucket, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChecksumCache.js","sourceRoot":"","sources":["../../src/storage/ChecksumCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ChecksumCache.js","sourceRoot":"","sources":["../../src/storage/ChecksumCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Logger } from '@powersync/lib-services-framework';
|
|
2
|
+
import { HydratedSyncRules, HydrationState, SyncConfigWithErrors } from '@powersync/service-sync-rules';
|
|
3
|
+
import { SerializedSyncPlan, UpdateSyncRulesOptions } from './BucketStorageFactory.js';
|
|
2
4
|
import { ReplicationLock } from './ReplicationLock.js';
|
|
3
5
|
import { StorageVersionConfig } from './StorageVersionConfig.js';
|
|
4
|
-
import { SerializedSyncPlan, UpdateSyncRulesOptions } from './BucketStorageFactory.js';
|
|
5
6
|
export interface ParseSyncRulesOptions {
|
|
6
7
|
defaultSchema: string;
|
|
7
8
|
}
|
|
@@ -11,7 +12,7 @@ export interface PersistedSyncRulesContentData {
|
|
|
11
12
|
readonly compiled_plan: SerializedSyncPlan | null;
|
|
12
13
|
readonly slot_name: string;
|
|
13
14
|
/**
|
|
14
|
-
* True if this is the "active" copy of the sync
|
|
15
|
+
* True if this is the "active" copy of the sync config.
|
|
15
16
|
*/
|
|
16
17
|
readonly active: boolean;
|
|
17
18
|
readonly storageVersion: number;
|
|
@@ -28,6 +29,7 @@ export declare abstract class PersistedSyncRulesContent implements PersistedSync
|
|
|
28
29
|
readonly slot_name: string;
|
|
29
30
|
readonly active: boolean;
|
|
30
31
|
readonly storageVersion: number;
|
|
32
|
+
readonly logger: Logger;
|
|
31
33
|
readonly last_checkpoint_lsn: string | null;
|
|
32
34
|
readonly last_fatal_error?: string | null;
|
|
33
35
|
readonly last_fatal_error_ts?: Date | null;
|
|
@@ -49,5 +51,9 @@ export interface PersistedSyncRules {
|
|
|
49
51
|
readonly id: number;
|
|
50
52
|
readonly sync_rules: SyncConfigWithErrors;
|
|
51
53
|
readonly slot_name: string;
|
|
54
|
+
/**
|
|
55
|
+
* For testing only.
|
|
56
|
+
*/
|
|
57
|
+
readonly hydrationState: HydrationState;
|
|
52
58
|
hydratedSyncRules(): HydratedSyncRules;
|
|
53
59
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { logger as defaultLogger, ErrorCode, ServiceError } from '@powersync/lib-services-framework';
|
|
2
|
+
import { CompatibilityContext, CompatibilityOption, DEFAULT_HYDRATION_STATE, deserializeSyncPlan, javaScriptExpressionEngine, PrecompiledSyncConfig, SqlEventDescriptor, SqlSyncRules, versionedHydrationState, YamlError } from '@powersync/service-sync-rules';
|
|
2
3
|
import { STORAGE_VERSION_CONFIG } from './StorageVersionConfig.js';
|
|
3
|
-
import { ErrorCode, ServiceError } from '@powersync/lib-services-framework';
|
|
4
4
|
export class PersistedSyncRulesContent {
|
|
5
5
|
id;
|
|
6
6
|
sync_rules_content;
|
|
@@ -8,6 +8,7 @@ export class PersistedSyncRulesContent {
|
|
|
8
8
|
slot_name;
|
|
9
9
|
active;
|
|
10
10
|
storageVersion;
|
|
11
|
+
logger;
|
|
11
12
|
last_checkpoint_lsn;
|
|
12
13
|
last_fatal_error;
|
|
13
14
|
last_fatal_error_ts;
|
|
@@ -15,6 +16,7 @@ export class PersistedSyncRulesContent {
|
|
|
15
16
|
last_checkpoint_ts;
|
|
16
17
|
constructor(data) {
|
|
17
18
|
Object.assign(this, data);
|
|
19
|
+
this.logger = defaultLogger.child({ prefix: `[${this.slot_name}] ` });
|
|
18
20
|
}
|
|
19
21
|
/**
|
|
20
22
|
* Load the storage config.
|
|
@@ -24,7 +26,7 @@ export class PersistedSyncRulesContent {
|
|
|
24
26
|
getStorageConfig() {
|
|
25
27
|
const storageConfig = STORAGE_VERSION_CONFIG[this.storageVersion];
|
|
26
28
|
if (storageConfig == null) {
|
|
27
|
-
throw new ServiceError(ErrorCode.PSYNC_S1005, `Unsupported storage version ${this.storageVersion} for
|
|
29
|
+
throw new ServiceError(ErrorCode.PSYNC_S1005, `Unsupported storage version ${this.storageVersion} for replication stream ${this.id}`);
|
|
28
30
|
}
|
|
29
31
|
return storageConfig;
|
|
30
32
|
}
|
|
@@ -48,7 +50,22 @@ export class PersistedSyncRulesContent {
|
|
|
48
50
|
engine: javaScriptExpressionEngine(compatibility),
|
|
49
51
|
sourceText: this.sync_rules_content
|
|
50
52
|
});
|
|
51
|
-
|
|
53
|
+
// Note: If the original content did not define a storage version, this will still set the storage version.
|
|
54
|
+
// This means asUpdateOptions will not change the storage version, even if the default changes.
|
|
55
|
+
precompiled.storageVersion = this.storageVersion;
|
|
56
|
+
const errors = [];
|
|
57
|
+
if (this.compiled_plan.errors) {
|
|
58
|
+
for (const error of this.compiled_plan.errors) {
|
|
59
|
+
const location = error.location && {
|
|
60
|
+
start: error.location.start_offset,
|
|
61
|
+
end: error.location.end_offset
|
|
62
|
+
};
|
|
63
|
+
const asYamlError = new YamlError(new Error(error.message), location);
|
|
64
|
+
asYamlError.type = error.level;
|
|
65
|
+
errors.push(asYamlError);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
config = { config: precompiled, errors };
|
|
52
69
|
}
|
|
53
70
|
else {
|
|
54
71
|
config = SqlSyncRules.fromYaml(this.sync_rules_content, options);
|
|
@@ -65,14 +82,17 @@ export class PersistedSyncRulesContent {
|
|
|
65
82
|
id: this.id,
|
|
66
83
|
slot_name: this.slot_name,
|
|
67
84
|
sync_rules: config,
|
|
85
|
+
hydrationState,
|
|
68
86
|
hydratedSyncRules: () => {
|
|
69
87
|
return config.config.hydrate({ hydrationState });
|
|
70
88
|
}
|
|
71
89
|
};
|
|
72
90
|
}
|
|
73
91
|
asUpdateOptions(options) {
|
|
92
|
+
// defaultSchema is not relevant for the parsed version here
|
|
93
|
+
const parsed = this.parsed({ defaultSchema: 'not_applicable' });
|
|
74
94
|
return {
|
|
75
|
-
config: { yaml: this.sync_rules_content, plan: this.compiled_plan },
|
|
95
|
+
config: { yaml: this.sync_rules_content, plan: this.compiled_plan, parsed: parsed.sync_rules },
|
|
76
96
|
...options
|
|
77
97
|
};
|
|
78
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersistedSyncRulesContent.js","sourceRoot":"","sources":["../../src/storage/PersistedSyncRulesContent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"PersistedSyncRulesContent.js","sourceRoot":"","sources":["../../src/storage/PersistedSyncRulesContent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as sync_rules from '@powersync/service-sync-rules';
|
|
2
|
-
import { SourceTable } from './SourceTable.js';
|
|
3
2
|
import { BucketStorageBatch, SaveOp } from './BucketStorageBatch.js';
|
|
3
|
+
import { SourceTable } from './SourceTable.js';
|
|
4
4
|
export type EventData = {
|
|
5
5
|
op: SaveOp;
|
|
6
6
|
before?: sync_rules.SqliteInputRow;
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
import { bson } from '../index.js';
|
|
1
2
|
import { ColumnDescriptor, SourceEntityDescriptor } from './SourceEntity.js';
|
|
3
|
+
/**
|
|
4
|
+
* Format of the id depends on the bucket storage module. It should be consistent within the module.
|
|
5
|
+
*/
|
|
6
|
+
export type SourceTableId = string | bson.ObjectId;
|
|
2
7
|
export interface SourceTableOptions {
|
|
3
|
-
id:
|
|
8
|
+
id: SourceTableId;
|
|
4
9
|
connectionTag: string;
|
|
5
10
|
objectId: number | string | undefined;
|
|
6
11
|
schema: string;
|
|
@@ -17,7 +22,7 @@ export declare class SourceTable implements SourceEntityDescriptor {
|
|
|
17
22
|
readonly options: SourceTableOptions;
|
|
18
23
|
static readonly DEFAULT_TAG = "default";
|
|
19
24
|
/**
|
|
20
|
-
* True if the table is used in sync
|
|
25
|
+
* True if the table is used in sync config for data queries.
|
|
21
26
|
*
|
|
22
27
|
* This value is resolved externally, and cached here.
|
|
23
28
|
*
|
|
@@ -25,7 +30,7 @@ export declare class SourceTable implements SourceEntityDescriptor {
|
|
|
25
30
|
*/
|
|
26
31
|
syncData: boolean;
|
|
27
32
|
/**
|
|
28
|
-
* True if the table is used in sync
|
|
33
|
+
* True if the table is used in sync config for data queries.
|
|
29
34
|
*
|
|
30
35
|
* This value is resolved externally, and cached here.
|
|
31
36
|
*
|
|
@@ -33,7 +38,7 @@ export declare class SourceTable implements SourceEntityDescriptor {
|
|
|
33
38
|
*/
|
|
34
39
|
syncParameters: boolean;
|
|
35
40
|
/**
|
|
36
|
-
* True if the table is used in sync
|
|
41
|
+
* True if the table is used in sync config for events.
|
|
37
42
|
*
|
|
38
43
|
* This value is resolved externally, and cached here.
|
|
39
44
|
*
|
|
@@ -48,7 +53,7 @@ export declare class SourceTable implements SourceEntityDescriptor {
|
|
|
48
53
|
snapshotStatus: TableSnapshotStatus | undefined;
|
|
49
54
|
snapshotComplete: boolean;
|
|
50
55
|
constructor(options: SourceTableOptions);
|
|
51
|
-
get id():
|
|
56
|
+
get id(): SourceTableId;
|
|
52
57
|
get connectionTag(): string;
|
|
53
58
|
get objectId(): string | number | undefined;
|
|
54
59
|
get schema(): string;
|
|
@@ -4,7 +4,7 @@ export class SourceTable {
|
|
|
4
4
|
options;
|
|
5
5
|
static DEFAULT_TAG = DEFAULT_TAG;
|
|
6
6
|
/**
|
|
7
|
-
* True if the table is used in sync
|
|
7
|
+
* True if the table is used in sync config for data queries.
|
|
8
8
|
*
|
|
9
9
|
* This value is resolved externally, and cached here.
|
|
10
10
|
*
|
|
@@ -12,7 +12,7 @@ export class SourceTable {
|
|
|
12
12
|
*/
|
|
13
13
|
syncData = true;
|
|
14
14
|
/**
|
|
15
|
-
* True if the table is used in sync
|
|
15
|
+
* True if the table is used in sync config for data queries.
|
|
16
16
|
*
|
|
17
17
|
* This value is resolved externally, and cached here.
|
|
18
18
|
*
|
|
@@ -20,7 +20,7 @@ export class SourceTable {
|
|
|
20
20
|
*/
|
|
21
21
|
syncParameters = true;
|
|
22
22
|
/**
|
|
23
|
-
* True if the table is used in sync
|
|
23
|
+
* True if the table is used in sync config for events.
|
|
24
24
|
*
|
|
25
25
|
* This value is resolved externally, and cached here.
|
|
26
26
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SourceTable.js","sourceRoot":"","sources":["../../src/storage/SourceTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"SourceTable.js","sourceRoot":"","sources":["../../src/storage/SourceTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAwB9C,MAAM,OAAO,WAAW;IAuCM;IAtC5B,MAAM,CAAU,WAAW,GAAG,WAAW,CAAC;IAE1C;;;;;;OAMG;IACI,QAAQ,GAAG,IAAI,CAAC;IAEvB;;;;;;OAMG;IACI,cAAc,GAAG,IAAI,CAAC;IAE7B;;;;;;OAMG;IACI,SAAS,GAAG,IAAI,CAAC;IAExB;;;;OAIG;IACI,cAAc,GAAoC,SAAS,CAAC;IAE5D,gBAAgB,CAAU;IAEjC,YAA4B,OAA2B;QAA3B,YAAO,GAAP,OAAO,CAAoB;QACrD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACnD,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;IACpC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,IAAI,aAAa;QACf,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACrF,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC;YAC3B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB;QACpB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;YACzD,oBAAoB;YACpB,OAAO,GAAG,CAAC;QACb,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,mBAAmB,GAAG,CAAC,EAAE,CAAC;YACvD,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,IAAI,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,KAAK,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC"}
|
|
@@ -1,19 +1,52 @@
|
|
|
1
1
|
export interface StorageVersionConfig {
|
|
2
|
+
version: number;
|
|
2
3
|
/**
|
|
3
4
|
* Whether versioned bucket names are automatically enabled.
|
|
4
5
|
*
|
|
5
6
|
* If this is false, bucket names may still be versioned depending on the sync config.
|
|
7
|
+
*
|
|
8
|
+
* Introduced in STORAGE_VERSION_2.
|
|
6
9
|
*/
|
|
7
10
|
versionedBuckets: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Whether to use soft deletes for current_data, improving replication concurrency support.
|
|
13
|
+
*
|
|
14
|
+
* Introduced in STORAGE_VERSION_3.
|
|
15
|
+
*/
|
|
16
|
+
softDeleteCurrentData: boolean;
|
|
8
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Corresponds to the storage version initially used, before we started explicitly versioning storage.
|
|
20
|
+
*/
|
|
21
|
+
export declare const STORAGE_VERSION_1 = 1;
|
|
22
|
+
/**
|
|
23
|
+
* First new storage version.
|
|
24
|
+
*
|
|
25
|
+
* Uses versioned bucket names.
|
|
26
|
+
*
|
|
27
|
+
* On MongoDB storage, this always uses Long for checksums.
|
|
28
|
+
*/
|
|
29
|
+
export declare const STORAGE_VERSION_2 = 2;
|
|
30
|
+
/**
|
|
31
|
+
* This version is currently unstable, and not enabled by default yet.
|
|
32
|
+
*
|
|
33
|
+
* This is used to build towards incremental reprocessing.
|
|
34
|
+
*/
|
|
35
|
+
export declare const STORAGE_VERSION_3 = 3;
|
|
9
36
|
/**
|
|
10
37
|
* Oldest supported storage version.
|
|
11
38
|
*/
|
|
12
39
|
export declare const LEGACY_STORAGE_VERSION = 1;
|
|
13
40
|
/**
|
|
14
|
-
* Default storage version for newly persisted
|
|
41
|
+
* Default storage version for newly persisted replication streams.
|
|
15
42
|
*/
|
|
16
43
|
export declare const CURRENT_STORAGE_VERSION = 2;
|
|
44
|
+
/**
|
|
45
|
+
* All versions that can be loaded.
|
|
46
|
+
*
|
|
47
|
+
* This includes unstable versions.
|
|
48
|
+
*/
|
|
49
|
+
export declare const SUPPORTED_STORAGE_VERSIONS: number[];
|
|
17
50
|
/**
|
|
18
51
|
* Shared storage-version behavior across storage implementations.
|
|
19
52
|
*/
|