@powersync/service-core 1.21.0 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -0
- package/dist/api/RouteAPI.d.ts +2 -2
- package/dist/api/diagnostics.d.ts +12 -1
- package/dist/api/diagnostics.js +34 -22
- package/dist/api/diagnostics.js.map +1 -1
- package/dist/auth/RemoteJWKSCollector.js +3 -2
- package/dist/auth/RemoteJWKSCollector.js.map +1 -1
- package/dist/entry/commands/compact-action.js +1 -1
- package/dist/entry/commands/compact-action.js.map +1 -1
- package/dist/modules/AbstractModule.d.ts +6 -2
- package/dist/modules/AbstractModule.js.map +1 -1
- package/dist/replication/AbstractReplicator.d.ts +2 -2
- package/dist/replication/AbstractReplicator.js +24 -23
- package/dist/replication/AbstractReplicator.js.map +1 -1
- package/dist/replication/RelationCache.d.ts +9 -2
- package/dist/replication/RelationCache.js +21 -2
- package/dist/replication/RelationCache.js.map +1 -1
- package/dist/replication/ReplicationModule.d.ts +3 -3
- package/dist/replication/ReplicationModule.js.map +1 -1
- package/dist/routes/configure-fastify.d.ts +12 -12
- package/dist/routes/configure-fastify.js +3 -1
- package/dist/routes/configure-fastify.js.map +1 -1
- package/dist/routes/endpoints/admin.d.ts +24 -24
- package/dist/routes/endpoints/admin.js +49 -35
- package/dist/routes/endpoints/admin.js.map +1 -1
- package/dist/routes/endpoints/checkpointing.js +1 -1
- package/dist/routes/endpoints/checkpointing.js.map +1 -1
- package/dist/routes/endpoints/socket-route.js +1 -1
- package/dist/routes/endpoints/socket-route.js.map +1 -1
- package/dist/routes/endpoints/sync-rules.js +22 -13
- package/dist/routes/endpoints/sync-rules.js.map +1 -1
- package/dist/routes/endpoints/sync-stream.js +1 -1
- package/dist/routes/endpoints/sync-stream.js.map +1 -1
- package/dist/routes/route-register.d.ts +2 -0
- package/dist/routes/route-register.js +65 -3
- package/dist/routes/route-register.js.map +1 -1
- package/dist/runner/teardown.js +8 -8
- package/dist/runner/teardown.js.map +1 -1
- package/dist/storage/BucketStorageBatch.d.ts +29 -6
- package/dist/storage/BucketStorageBatch.js.map +1 -1
- package/dist/storage/BucketStorageFactory.d.ts +26 -27
- package/dist/storage/BucketStorageFactory.js +5 -19
- package/dist/storage/BucketStorageFactory.js.map +1 -1
- package/dist/storage/ParsedSyncConfigSet.d.ts +23 -0
- package/dist/storage/ParsedSyncConfigSet.js +2 -0
- package/dist/storage/ParsedSyncConfigSet.js.map +1 -0
- package/dist/storage/PersistedReplicationStream.d.ts +32 -0
- package/dist/storage/PersistedReplicationStream.js +26 -0
- package/dist/storage/PersistedReplicationStream.js.map +1 -0
- package/dist/storage/PersistedSyncConfigContent.d.ts +60 -0
- package/dist/storage/PersistedSyncConfigContent.js +123 -0
- package/dist/storage/PersistedSyncConfigContent.js.map +1 -0
- package/dist/storage/PersistedSyncConfigStatus.d.ts +13 -0
- package/dist/storage/PersistedSyncConfigStatus.js +2 -0
- package/dist/storage/PersistedSyncConfigStatus.js.map +1 -0
- package/dist/storage/SourceEntity.d.ts +8 -1
- package/dist/storage/SourceTable.d.ts +37 -10
- package/dist/storage/SourceTable.js +50 -14
- package/dist/storage/SourceTable.js.map +1 -1
- package/dist/storage/SyncRulesBucketStorage.d.ts +80 -24
- package/dist/storage/SyncRulesBucketStorage.js.map +1 -1
- package/dist/storage/implementation/BucketDefinitionMapping.d.ts +117 -0
- package/dist/storage/implementation/BucketDefinitionMapping.js +277 -0
- package/dist/storage/implementation/BucketDefinitionMapping.js.map +1 -0
- package/dist/storage/implementation/IncrementalReprocessingCompatibility.d.ts +6 -0
- package/dist/storage/implementation/IncrementalReprocessingCompatibility.js +31 -0
- package/dist/storage/implementation/IncrementalReprocessingCompatibility.js.map +1 -0
- package/dist/storage/implementation/IncrementalReprocessingSyncConfigLog.d.ts +17 -0
- package/dist/storage/implementation/IncrementalReprocessingSyncConfigLog.js +62 -0
- package/dist/storage/implementation/IncrementalReprocessingSyncConfigLog.js.map +1 -0
- package/dist/storage/implementation/ReplicationStreamStorageIds.d.ts +15 -0
- package/dist/storage/implementation/ReplicationStreamStorageIds.js +20 -0
- package/dist/storage/implementation/ReplicationStreamStorageIds.js.map +1 -0
- package/dist/storage/storage-index.d.ts +8 -1
- package/dist/storage/storage-index.js +8 -1
- package/dist/storage/storage-index.js.map +1 -1
- package/dist/sync/BucketChecksumState.d.ts +4 -4
- package/dist/sync/BucketChecksumState.js +1 -1
- package/dist/sync/BucketChecksumState.js.map +1 -1
- package/dist/sync/sync.d.ts +2 -2
- package/dist/sync/sync.js +5 -0
- package/dist/sync/sync.js.map +1 -1
- package/dist/tracing/PerformanceTracer.d.ts +17 -1
- package/dist/tracing/PerformanceTracer.js +3 -0
- package/dist/tracing/PerformanceTracer.js.map +1 -1
- package/dist/util/checkpointing.js +1 -1
- package/dist/util/checkpointing.js.map +1 -1
- package/dist/util/config/types.d.ts +1 -1
- package/dist/util/lsn.d.ts +4 -0
- package/dist/util/lsn.js +10 -0
- package/dist/util/lsn.js.map +1 -1
- package/dist/util/util-index.d.ts +1 -0
- package/dist/util/util-index.js +1 -0
- package/dist/util/util-index.js.map +1 -1
- package/dist/util/utils.d.ts +5 -0
- package/dist/util/utils.js +7 -0
- package/dist/util/utils.js.map +1 -1
- package/package.json +6 -7
- package/src/api/RouteAPI.ts +2 -2
- package/src/api/diagnostics.ts +45 -28
- package/src/auth/RemoteJWKSCollector.ts +3 -1
- package/src/entry/commands/compact-action.ts +1 -1
- package/src/modules/AbstractModule.ts +6 -2
- package/src/replication/AbstractReplicator.ts +27 -26
- package/src/replication/RelationCache.ts +23 -4
- package/src/replication/ReplicationModule.ts +2 -3
- package/src/routes/configure-fastify.ts +8 -1
- package/src/routes/endpoints/admin.ts +75 -49
- package/src/routes/endpoints/checkpointing.ts +1 -1
- package/src/routes/endpoints/socket-route.ts +1 -1
- package/src/routes/endpoints/sync-rules.ts +23 -13
- package/src/routes/endpoints/sync-stream.ts +1 -1
- package/src/routes/route-register.ts +73 -4
- package/src/runner/teardown.ts +8 -8
- package/src/storage/BucketStorageBatch.ts +32 -7
- package/src/storage/BucketStorageFactory.ts +36 -40
- package/src/storage/ParsedSyncConfigSet.ts +25 -0
- package/src/storage/PersistedReplicationStream.ts +55 -0
- package/src/storage/PersistedSyncConfigContent.ts +188 -0
- package/src/storage/PersistedSyncConfigStatus.ts +14 -0
- package/src/storage/SourceEntity.ts +9 -1
- package/src/storage/SourceTable.ts +72 -21
- package/src/storage/SyncRulesBucketStorage.ts +87 -26
- package/src/storage/implementation/BucketDefinitionMapping.ts +436 -0
- package/src/storage/implementation/IncrementalReprocessingCompatibility.ts +41 -0
- package/src/storage/implementation/IncrementalReprocessingSyncConfigLog.ts +109 -0
- package/src/storage/implementation/ReplicationStreamStorageIds.ts +21 -0
- package/src/storage/storage-index.ts +9 -1
- package/src/sync/BucketChecksumState.ts +5 -5
- package/src/sync/sync.ts +8 -3
- package/src/tracing/PerformanceTracer.ts +24 -1
- package/src/util/checkpointing.ts +1 -1
- package/src/util/config/types.ts +1 -1
- package/src/util/lsn.ts +9 -0
- package/src/util/util-index.ts +1 -0
- package/src/util/utils.ts +8 -0
- package/test/src/auth.test.ts +11 -0
- package/test/src/diagnostics.test.ts +64 -33
- package/test/src/module-loader.test.ts +33 -1
- package/test/src/routes/admin.test.ts +180 -18
- package/test/src/routes/error-handler.integration.test.ts +275 -0
- package/test/src/routes/mocks.ts +6 -2
- package/test/src/routes/stream.test.ts +15 -4
- package/test/src/storage/SourceTable.test.ts +89 -0
- package/test/src/sync/BucketChecksumState.test.ts +25 -17
- package/tsconfig.json +1 -4
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/storage/PersistedSyncRulesContent.d.ts +0 -59
- package/dist/storage/PersistedSyncRulesContent.js +0 -100
- package/dist/storage/PersistedSyncRulesContent.js.map +0 -1
- package/src/storage/PersistedSyncRulesContent.ts +0 -174
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# @powersync/service-core
|
|
2
2
|
|
|
3
|
+
## 1.23.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- a91a08f: [Experimental] Enable incremental reprocessing for MongoDB source + MongoDB storage. This includes significant changes to the v3 storage format.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [a91a08f]
|
|
12
|
+
- Updated dependencies [184c39f]
|
|
13
|
+
- Updated dependencies [c3f75df]
|
|
14
|
+
- Updated dependencies [4bd35ea]
|
|
15
|
+
- @powersync/service-types@0.16.0
|
|
16
|
+
- @powersync/service-sync-rules@0.38.0
|
|
17
|
+
- @powersync/lib-services-framework@0.9.6
|
|
18
|
+
- @powersync/service-rsocket-router@0.2.22
|
|
19
|
+
|
|
20
|
+
## 1.22.0
|
|
21
|
+
|
|
22
|
+
### Minor Changes
|
|
23
|
+
|
|
24
|
+
- e2bf1ad: [Internal] rework resolveTables to handle multiple SourceTables.
|
|
25
|
+
- 92cc83b: Add the experimental `unstable_sqlite_expression_engine` sync config option to evaluate Sync Streams with SQLite.
|
|
26
|
+
- 15e2466: [MongoDB] Support snapshotting concurrently with streaming in storage v3+.
|
|
27
|
+
- ebeaa3b: [Postgres] Skip storing a redundant copy of replicated rows in `current_data` for tables with `REPLICA IDENTITY FULL`.
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- 17fd96b: Fix duration logs for "Processing batch"
|
|
32
|
+
- 6e2a57e: Refactor HydratedSyncConfig to support multiple SyncConfigs.
|
|
33
|
+
- ec6df9f: Add a custom Fastify error handler so uncaught errors honour the negotiated `Content-Encoding` (gzip/zstd) instead of returning a header that doesn't match the body.
|
|
34
|
+
- 99d33d5: Normalize socket addresses to bare hostnames before IP-range validation, so direct-IP literals with any port form are recognized as IPs.
|
|
35
|
+
- b116857: Resolve `!env` tags when the test client parses `powersync.yaml`, and add an optional `--env <path>` flag to load a `.env` file first.
|
|
36
|
+
- Updated dependencies [6e2a57e]
|
|
37
|
+
- Updated dependencies [99d33d5]
|
|
38
|
+
- Updated dependencies [cae92ce]
|
|
39
|
+
- Updated dependencies [5ac5345]
|
|
40
|
+
- Updated dependencies [15cb880]
|
|
41
|
+
- Updated dependencies [f2f5086]
|
|
42
|
+
- Updated dependencies [5b1b215]
|
|
43
|
+
- Updated dependencies [e2bf1ad]
|
|
44
|
+
- Updated dependencies [92cc83b]
|
|
45
|
+
- Updated dependencies [0aab0f9]
|
|
46
|
+
- Updated dependencies [a94b6c3]
|
|
47
|
+
- @powersync/service-sync-rules@0.37.0
|
|
48
|
+
- @powersync/lib-services-framework@0.9.5
|
|
49
|
+
- @powersync/service-rsocket-router@0.2.21
|
|
50
|
+
|
|
3
51
|
## 1.21.0
|
|
4
52
|
|
|
5
53
|
### Minor Changes
|
package/dist/api/RouteAPI.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SyncConfig, TablePattern } from '@powersync/service-sync-rules';
|
|
2
2
|
import * as types from '@powersync/service-types';
|
|
3
|
-
import {
|
|
3
|
+
import { ParseSyncConfigOptions, SyncRulesBucketStorage } from '../storage/storage-index.js';
|
|
4
4
|
export interface PatternResult {
|
|
5
5
|
schema: string;
|
|
6
6
|
pattern: string;
|
|
@@ -80,6 +80,6 @@ export interface RouteAPI {
|
|
|
80
80
|
/**
|
|
81
81
|
* Get the default schema (or database) when only a table name is specified in sync config.
|
|
82
82
|
*/
|
|
83
|
-
getParseSyncRulesOptions():
|
|
83
|
+
getParseSyncRulesOptions(): ParseSyncConfigOptions;
|
|
84
84
|
}
|
|
85
85
|
export type ReplicationHeadCallback<T> = (head: string) => Promise<T>;
|
|
@@ -12,10 +12,21 @@ export interface DiagnosticsOptions {
|
|
|
12
12
|
* If false, uses placeholder values for e.g. initial_replication_done.
|
|
13
13
|
*/
|
|
14
14
|
live_status: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Whether this is the active sync config or not.
|
|
17
|
+
*/
|
|
18
|
+
active: boolean;
|
|
15
19
|
/**
|
|
16
20
|
* Check against the source postgres connection.
|
|
17
21
|
*/
|
|
18
22
|
check_connection: boolean;
|
|
19
23
|
}
|
|
20
24
|
export declare const DEFAULT_DATASOURCE_ID = "default";
|
|
21
|
-
export declare function getSyncRulesStatus(
|
|
25
|
+
export declare function getSyncRulesStatus(apiHandler: RouteAPI, syncConfig: storage.PersistedSyncConfigContent | null, options: DiagnosticsOptions,
|
|
26
|
+
/**
|
|
27
|
+
* Storage instance for the replication stream of this config.
|
|
28
|
+
*
|
|
29
|
+
* Required to populate live status (snapshot/checkpoint info). The content object
|
|
30
|
+
* itself is no longer a replication stream, so the caller must resolve this.
|
|
31
|
+
*/
|
|
32
|
+
systemStorage?: storage.SyncRulesBucketStorage): Promise<SyncRulesStatus | undefined>;
|
package/dist/api/diagnostics.js
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import { logger } from '@powersync/lib-services-framework';
|
|
1
|
+
import { logger, ServiceAssertionError } from '@powersync/lib-services-framework';
|
|
2
2
|
import { DEFAULT_TAG } from '@powersync/service-sync-rules';
|
|
3
3
|
import { syncConfigYamlErrorToReplicationError } from '../util/errors.js';
|
|
4
4
|
export const DEFAULT_DATASOURCE_ID = 'default';
|
|
5
|
-
export async function getSyncRulesStatus(
|
|
6
|
-
|
|
5
|
+
export async function getSyncRulesStatus(apiHandler, syncConfig, options,
|
|
6
|
+
/**
|
|
7
|
+
* Storage instance for the replication stream of this config.
|
|
8
|
+
*
|
|
9
|
+
* Required to populate live status (snapshot/checkpoint info). The content object
|
|
10
|
+
* itself is no longer a replication stream, so the caller must resolve this.
|
|
11
|
+
*/
|
|
12
|
+
systemStorage) {
|
|
13
|
+
if (syncConfig == null) {
|
|
7
14
|
return undefined;
|
|
8
15
|
}
|
|
9
16
|
const include_content = options.include_content ?? false;
|
|
@@ -13,12 +20,17 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
|
|
|
13
20
|
let parsed;
|
|
14
21
|
let persisted;
|
|
15
22
|
try {
|
|
16
|
-
persisted =
|
|
17
|
-
parsed
|
|
23
|
+
persisted = syncConfig.parsed(apiHandler.getParseSyncRulesOptions());
|
|
24
|
+
// A content object represents a single sync config, so its parsed result has exactly one entry.
|
|
25
|
+
const [singleConfig] = persisted.syncConfigs;
|
|
26
|
+
if (singleConfig == null) {
|
|
27
|
+
throw new ServiceAssertionError('Expected one sync config');
|
|
28
|
+
}
|
|
29
|
+
parsed = singleConfig;
|
|
18
30
|
}
|
|
19
31
|
catch (e) {
|
|
20
32
|
return {
|
|
21
|
-
content: include_content ?
|
|
33
|
+
content: include_content ? syncConfig.sync_rules_content : undefined,
|
|
22
34
|
connections: [],
|
|
23
35
|
errors: [{ level: 'fatal', message: e.message, ts: now }]
|
|
24
36
|
};
|
|
@@ -28,8 +40,7 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
|
|
|
28
40
|
// This method can run under some situations if no connection is configured yet.
|
|
29
41
|
// It will return a default tag in such a case. This default tag is not module specific.
|
|
30
42
|
const tag = sourceConfig.tag ?? DEFAULT_TAG;
|
|
31
|
-
const
|
|
32
|
-
const status = await systemStorage?.getStatus();
|
|
43
|
+
const status = live_status ? await systemStorage?.getStatus() : undefined;
|
|
33
44
|
let replication_lag_bytes = undefined;
|
|
34
45
|
let slot_wal_budget = undefined;
|
|
35
46
|
let tables_flat = [];
|
|
@@ -57,10 +68,10 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
|
|
|
57
68
|
// Ignore
|
|
58
69
|
logger.warn(`Unable to get replication lag`, e);
|
|
59
70
|
}
|
|
60
|
-
if (apiHandler.getSlotWalBudget &&
|
|
71
|
+
if (apiHandler.getSlotWalBudget && syncConfig.replicationStreamName) {
|
|
61
72
|
try {
|
|
62
73
|
slot_wal_budget = await apiHandler.getSlotWalBudget({
|
|
63
|
-
slotName:
|
|
74
|
+
slotName: syncConfig.replicationStreamName
|
|
64
75
|
});
|
|
65
76
|
}
|
|
66
77
|
catch (e) {
|
|
@@ -103,11 +114,12 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
|
|
|
103
114
|
});
|
|
104
115
|
}
|
|
105
116
|
const errors = tables_flat.flatMap((info) => info.errors);
|
|
106
|
-
|
|
117
|
+
const statusSource = await syncConfig.getSyncConfigStatus();
|
|
118
|
+
if (statusSource?.last_fatal_error) {
|
|
107
119
|
errors.push({
|
|
108
120
|
level: 'fatal',
|
|
109
|
-
message:
|
|
110
|
-
ts:
|
|
121
|
+
message: statusSource.last_fatal_error,
|
|
122
|
+
ts: statusSource.last_fatal_error_ts?.toISOString()
|
|
111
123
|
});
|
|
112
124
|
}
|
|
113
125
|
errors.push(...syncRuleErrors.map((error) => syncConfigYamlErrorToReplicationError(error, now)));
|
|
@@ -127,10 +139,10 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
|
|
|
127
139
|
});
|
|
128
140
|
}
|
|
129
141
|
}
|
|
130
|
-
if (live_status &&
|
|
142
|
+
if (live_status && options.active) {
|
|
131
143
|
// Check replication lag for active replication stream.
|
|
132
144
|
// Right now we exclude mysql, since it we don't have consistent keepalives for it.
|
|
133
|
-
if (
|
|
145
|
+
if (statusSource?.last_checkpoint_ts == null && statusSource?.last_keepalive_ts == null) {
|
|
134
146
|
errors.push({
|
|
135
147
|
level: 'warning',
|
|
136
148
|
message: 'No checkpoint found, cannot calculate replication lag',
|
|
@@ -138,7 +150,7 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
|
|
|
138
150
|
});
|
|
139
151
|
}
|
|
140
152
|
else {
|
|
141
|
-
const lastTime = Math.max(
|
|
153
|
+
const lastTime = Math.max(statusSource.last_checkpoint_ts?.getTime() ?? 0, statusSource.last_keepalive_ts?.getTime() ?? 0);
|
|
142
154
|
const lagSeconds = Math.round((Date.now() - lastTime) / 1000);
|
|
143
155
|
// On idle instances, keepalive messages are only persisted every 60 seconds.
|
|
144
156
|
// So we use 5 minutes as a threshold for warnings, and 15 minutes for critical.
|
|
@@ -161,17 +173,17 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
|
|
|
161
173
|
}
|
|
162
174
|
}
|
|
163
175
|
return {
|
|
164
|
-
content: include_content ?
|
|
176
|
+
content: include_content ? syncConfig.sync_rules_content : undefined,
|
|
165
177
|
connections: [
|
|
166
178
|
{
|
|
167
179
|
id: sourceConfig.id ?? DEFAULT_DATASOURCE_ID,
|
|
168
180
|
tag: tag,
|
|
169
|
-
slot_name:
|
|
170
|
-
initial_replication_done: status?.
|
|
181
|
+
slot_name: syncConfig.replicationStreamName,
|
|
182
|
+
initial_replication_done: status?.snapshotDone ?? false,
|
|
171
183
|
// TODO: Rename?
|
|
172
|
-
last_lsn: status?.
|
|
173
|
-
last_checkpoint_ts:
|
|
174
|
-
last_keepalive_ts:
|
|
184
|
+
last_lsn: status?.resumeLsn ?? undefined,
|
|
185
|
+
last_checkpoint_ts: statusSource?.last_checkpoint_ts?.toISOString(),
|
|
186
|
+
last_keepalive_ts: statusSource?.last_keepalive_ts?.toISOString(),
|
|
175
187
|
replication_lag_bytes: replication_lag_bytes,
|
|
176
188
|
wal_status: slot_wal_budget?.wal_status,
|
|
177
189
|
safe_wal_size: slot_wal_budget?.safe_wal_size,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/api/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/api/diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as http from 'http';
|
|
2
2
|
import * as https from 'https';
|
|
3
3
|
import fetch from 'node-fetch';
|
|
4
|
-
import { AuthorizationError, ErrorCode, makeHostnameLookupFunction, ServiceAssertionError, ServiceError } from '@powersync/lib-services-framework';
|
|
4
|
+
import { AuthorizationError, ErrorCode, hostnameFromSocketAddress, makeHostnameLookupFunction, ServiceAssertionError, ServiceError } from '@powersync/lib-services-framework';
|
|
5
5
|
import { KeySpec } from './KeySpec.js';
|
|
6
6
|
/**
|
|
7
7
|
* Set of keys fetched from JWKS URI.
|
|
@@ -108,7 +108,8 @@ export class RemoteJWKSCollector {
|
|
|
108
108
|
*/
|
|
109
109
|
resolveAgent() {
|
|
110
110
|
const lookupOptions = this.options?.lookupOptions ?? { reject_ip_ranges: [] };
|
|
111
|
-
const
|
|
111
|
+
const hostname = hostnameFromSocketAddress(this.url.hostname);
|
|
112
|
+
const lookup = makeHostnameLookupFunction(hostname, lookupOptions);
|
|
112
113
|
const options = {
|
|
113
114
|
lookup
|
|
114
115
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteJWKSCollector.js","sourceRoot":"","sources":["../../src/auth/RemoteJWKSCollector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,SAAS,
|
|
1
|
+
{"version":3,"file":"RemoteJWKSCollector.js","sourceRoot":"","sources":["../../src/auth/RemoteJWKSCollector.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,7 +66,7 @@ export function registerCompactAction(program) {
|
|
|
66
66
|
// Start the storage engine in order to create the appropriate BucketStorage
|
|
67
67
|
await serviceContext.lifeCycleEngine.start();
|
|
68
68
|
const bucketStorage = serviceContext.storageEngine.activeBucketStorage;
|
|
69
|
-
const active = await bucketStorage.
|
|
69
|
+
const active = (await bucketStorage.getActiveSyncConfig())?.storage;
|
|
70
70
|
if (active == null) {
|
|
71
71
|
logger.info('No active instance to compact');
|
|
72
72
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact-action.js","sourceRoot":"","sources":["../../../src/entry/commands/compact-action.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"compact-action.js","sourceRoot":"","sources":["../../../src/entry/commands/compact-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import winston from 'winston';
|
|
2
|
-
import {
|
|
2
|
+
import { PersistedReplicationStream } from '../storage/storage-index.js';
|
|
3
3
|
import { ServiceContextContainer } from '../system/ServiceContext.js';
|
|
4
4
|
export interface TearDownOptions {
|
|
5
5
|
/**
|
|
6
6
|
* If required, tear down any configuration/state for the specific replication stream
|
|
7
7
|
*/
|
|
8
|
-
|
|
8
|
+
replicationStreams?: PersistedReplicationStream[];
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated Use replicationStreams.
|
|
11
|
+
*/
|
|
12
|
+
syncRules?: PersistedReplicationStream[];
|
|
9
13
|
}
|
|
10
14
|
export interface AbstractModuleOptions {
|
|
11
15
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractModule.js","sourceRoot":"","sources":["../../src/modules/AbstractModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"AbstractModule.js","sourceRoot":"","sources":["../../src/modules/AbstractModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAoB3D,MAAM,OAAgB,cAAc;IAGF;IAFtB,MAAM,CAAiB;IAEjC,YAAgC,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;QAC5D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACjE,CAAC;IAYD,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -30,8 +30,8 @@ export declare abstract class AbstractReplicator<T extends AbstractReplicationJo
|
|
|
30
30
|
protected logger: winston.Logger;
|
|
31
31
|
private lockAlerted;
|
|
32
32
|
/**
|
|
33
|
-
* Map of replication jobs by replication stream id. Usually there is only one running job, but there could be two
|
|
34
|
-
* transitioning to a new replication stream.
|
|
33
|
+
* Map of replication jobs by replication stream job id. Usually there is only one running job, but there could be two
|
|
34
|
+
* when transitioning to a new replication stream.
|
|
35
35
|
*/
|
|
36
36
|
private replicationJobs;
|
|
37
37
|
/**
|
|
@@ -14,8 +14,8 @@ export class AbstractReplicator {
|
|
|
14
14
|
logger;
|
|
15
15
|
lockAlerted = false;
|
|
16
16
|
/**
|
|
17
|
-
* Map of replication jobs by replication stream id. Usually there is only one running job, but there could be two
|
|
18
|
-
* transitioning to a new replication stream.
|
|
17
|
+
* Map of replication jobs by replication stream job id. Usually there is only one running job, but there could be two
|
|
18
|
+
* when transitioning to a new replication stream.
|
|
19
19
|
*/
|
|
20
20
|
replicationJobs = new Map();
|
|
21
21
|
/**
|
|
@@ -139,42 +139,43 @@ export class AbstractReplicator {
|
|
|
139
139
|
}
|
|
140
140
|
let configuredLock = options?.configured_lock;
|
|
141
141
|
const existingJobs = new Map(this.replicationJobs.entries());
|
|
142
|
-
const
|
|
142
|
+
const replicatingStreams = await this.storage.getReplicatingReplicationStreams();
|
|
143
143
|
const newJobs = new Map();
|
|
144
144
|
let activeJob = undefined;
|
|
145
|
-
for (let
|
|
146
|
-
const
|
|
147
|
-
|
|
145
|
+
for (let replicationStream of replicatingStreams) {
|
|
146
|
+
const jobId = replicationStream.replicationJobId;
|
|
147
|
+
const existingJob = existingJobs.get(jobId);
|
|
148
|
+
if (replicationStream.state == storage.SyncRuleState.ACTIVE && activeJob == null) {
|
|
148
149
|
activeJob = existingJob;
|
|
149
150
|
}
|
|
150
151
|
if (existingJob && !existingJob.isStopped) {
|
|
151
152
|
// No change
|
|
152
|
-
existingJobs.delete(
|
|
153
|
-
newJobs.set(
|
|
153
|
+
existingJobs.delete(jobId);
|
|
154
|
+
newJobs.set(jobId, existingJob);
|
|
154
155
|
}
|
|
155
156
|
else if (existingJob && existingJob.isStopped) {
|
|
156
157
|
// Stopped (e.g. fatal error).
|
|
157
158
|
// Remove from the list. Next refresh call will restart the job.
|
|
158
|
-
existingJobs.delete(
|
|
159
|
+
existingJobs.delete(jobId);
|
|
159
160
|
}
|
|
160
161
|
else {
|
|
161
162
|
// New sync config was found (or resume after restart)
|
|
162
163
|
try {
|
|
163
164
|
let lock;
|
|
164
|
-
if (configuredLock?.sync_rules_id ==
|
|
165
|
+
if (configuredLock?.sync_rules_id == replicationStream.replicationStreamId) {
|
|
165
166
|
lock = configuredLock;
|
|
166
167
|
}
|
|
167
168
|
else {
|
|
168
|
-
lock = await
|
|
169
|
+
lock = await replicationStream.lock();
|
|
169
170
|
}
|
|
170
|
-
const
|
|
171
|
+
const syncRuleStorage = this.storage.getInstance(replicationStream);
|
|
171
172
|
const newJob = this.createJob({
|
|
172
173
|
lock: lock,
|
|
173
|
-
storage:
|
|
174
|
+
storage: syncRuleStorage
|
|
174
175
|
});
|
|
175
|
-
newJobs.set(
|
|
176
|
+
newJobs.set(jobId, newJob);
|
|
176
177
|
newJob.start();
|
|
177
|
-
if (
|
|
178
|
+
if (replicationStream.state == storage.SyncRuleState.ACTIVE) {
|
|
178
179
|
activeJob = newJob;
|
|
179
180
|
}
|
|
180
181
|
this.lockAlerted = false;
|
|
@@ -182,7 +183,7 @@ export class AbstractReplicator {
|
|
|
182
183
|
catch (e) {
|
|
183
184
|
if (e?.errorData?.code === ErrorCode.PSYNC_S1003) {
|
|
184
185
|
if (!this.lockAlerted) {
|
|
185
|
-
|
|
186
|
+
replicationStream.logger.info(`[${e.errorData.code}] ${e.errorData.description}`);
|
|
186
187
|
this.lockAlerted = true;
|
|
187
188
|
}
|
|
188
189
|
}
|
|
@@ -191,7 +192,7 @@ export class AbstractReplicator {
|
|
|
191
192
|
// for example from stricter validation that was added.
|
|
192
193
|
// This will be retried every couple of seconds.
|
|
193
194
|
// When new (valid) sync config is deployed and processed, this one be disabled.
|
|
194
|
-
|
|
195
|
+
replicationStream.logger.error('Failed to start replication for new sync config', e);
|
|
195
196
|
}
|
|
196
197
|
}
|
|
197
198
|
}
|
|
@@ -211,24 +212,24 @@ export class AbstractReplicator {
|
|
|
211
212
|
}
|
|
212
213
|
}
|
|
213
214
|
// Replication stream stopped previously, including by a different process.
|
|
214
|
-
const stopped = await this.storage.
|
|
215
|
-
for (let
|
|
216
|
-
if (this.clearingJobs.has(
|
|
215
|
+
const stopped = await this.storage.getStoppedReplicationStreams();
|
|
216
|
+
for (let replicationStream of stopped) {
|
|
217
|
+
if (this.clearingJobs.has(replicationStream.replicationStreamId)) {
|
|
217
218
|
// Already in progress
|
|
218
219
|
continue;
|
|
219
220
|
}
|
|
220
221
|
// We clear storage asynchronously.
|
|
221
222
|
// It is important to be able to continue running the refresh loop, otherwise we cannot
|
|
222
223
|
// retry locked replication stream, for example.
|
|
223
|
-
const syncRuleStorage = this.storage.getInstance(
|
|
224
|
+
const syncRuleStorage = this.storage.getInstance(replicationStream, { skipLifecycleHooks: true });
|
|
224
225
|
const promise = this.terminateSyncRules(syncRuleStorage)
|
|
225
226
|
.catch((e) => {
|
|
226
227
|
syncRuleStorage.logger.warn(`Failed clean up replication config`, e);
|
|
227
228
|
})
|
|
228
229
|
.finally(() => {
|
|
229
|
-
this.clearingJobs.delete(
|
|
230
|
+
this.clearingJobs.delete(replicationStream.replicationStreamId);
|
|
230
231
|
});
|
|
231
|
-
this.clearingJobs.set(
|
|
232
|
+
this.clearingJobs.set(replicationStream.replicationStreamId, promise);
|
|
232
233
|
}
|
|
233
234
|
}
|
|
234
235
|
createJobId(syncRuleId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractReplicator.js","sourceRoot":"","sources":["../../src/replication/AbstractReplicator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AbstractReplicator.js","sourceRoot":"","sources":["../../src/replication/AbstractReplicator.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,14 @@ export declare class RelationCache<T> {
|
|
|
3
3
|
private cache;
|
|
4
4
|
private idFunction;
|
|
5
5
|
constructor(idFunction: (item: T | SourceTable) => string | number);
|
|
6
|
+
/**
|
|
7
|
+
* Update a single table in-place - use when the snapshot status of the table has changed.
|
|
8
|
+
*/
|
|
6
9
|
update(table: SourceTable): void;
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Set the full set of tables for a specific reference.
|
|
12
|
+
*/
|
|
13
|
+
updateAll(ref: T, tables: SourceTable[]): void;
|
|
14
|
+
getAll(source: T | SourceTable): SourceTable[] | undefined;
|
|
15
|
+
delete(source: T): boolean;
|
|
9
16
|
}
|
|
@@ -4,11 +4,30 @@ export class RelationCache {
|
|
|
4
4
|
constructor(idFunction) {
|
|
5
5
|
this.idFunction = idFunction;
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* Update a single table in-place - use when the snapshot status of the table has changed.
|
|
9
|
+
*/
|
|
7
10
|
update(table) {
|
|
8
11
|
const id = this.idFunction(table);
|
|
9
|
-
this.cache.
|
|
12
|
+
const existing = this.cache.get(id) ?? [];
|
|
13
|
+
const replacementIndex = existing.findIndex((candidate) => candidate.id == table.id);
|
|
14
|
+
if (replacementIndex == -1) {
|
|
15
|
+
this.cache.set(id, [...existing, table]);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
const next = [...existing];
|
|
19
|
+
next[replacementIndex] = table;
|
|
20
|
+
this.cache.set(id, next);
|
|
21
|
+
}
|
|
10
22
|
}
|
|
11
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Set the full set of tables for a specific reference.
|
|
25
|
+
*/
|
|
26
|
+
updateAll(ref, tables) {
|
|
27
|
+
const id = this.idFunction(ref);
|
|
28
|
+
this.cache.set(id, tables);
|
|
29
|
+
}
|
|
30
|
+
getAll(source) {
|
|
12
31
|
const id = this.idFunction(source);
|
|
13
32
|
return this.cache.get(id);
|
|
14
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationCache.js","sourceRoot":"","sources":["../../src/replication/RelationCache.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IAChB,KAAK,GAAG,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"RelationCache.js","sourceRoot":"","sources":["../../src/replication/RelationCache.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IAChB,KAAK,GAAG,IAAI,GAAG,EAAkC,CAAC;IAClD,UAAU,CAA6C;IAE/D,YAAY,UAAsD;QAChE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAkB;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;QACrF,IAAI,gBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;YAC3B,IAAI,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,GAAM,EAAE,MAAqB;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,MAAuB;QAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,MAAS;QACd,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DataSourceConfig } from '@powersync/service-types/dist/config/PowerSyncConfig.js';
|
|
2
1
|
import * as t from 'ts-codec';
|
|
2
|
+
import * as types from '@powersync/service-types';
|
|
3
3
|
import * as api from '../api/api-index.js';
|
|
4
4
|
import * as modules from '../modules/modules-index.js';
|
|
5
5
|
import * as system from '../system/system-index.js';
|
|
@@ -13,7 +13,7 @@ export interface ConnectionTestResult {
|
|
|
13
13
|
/**
|
|
14
14
|
* Provides a common interface for testing the connection to a DataSource.
|
|
15
15
|
*/
|
|
16
|
-
export interface ConnectionTester<TConfig extends DataSourceConfig> {
|
|
16
|
+
export interface ConnectionTester<TConfig extends types.configFile.DataSourceConfig> {
|
|
17
17
|
/**
|
|
18
18
|
* Confirm if a connection can be established to the datasource for the provided datasource configuration
|
|
19
19
|
* @param config
|
|
@@ -28,7 +28,7 @@ export interface ReplicationModuleOptions extends modules.AbstractModuleOptions
|
|
|
28
28
|
* A replication module describes all the functionality that PowerSync requires to
|
|
29
29
|
* replicate data from a DataSource. Whenever a new data source is added to powersync this class should be extended.
|
|
30
30
|
*/
|
|
31
|
-
export declare abstract class ReplicationModule<TConfig extends DataSourceConfig> extends modules.AbstractModule implements ConnectionTester<TConfig> {
|
|
31
|
+
export declare abstract class ReplicationModule<TConfig extends types.configFile.DataSourceConfig> extends modules.AbstractModule implements ConnectionTester<TConfig> {
|
|
32
32
|
protected type: string;
|
|
33
33
|
protected configSchema: t.AnyCodec;
|
|
34
34
|
protected decodedConfig: TConfig | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReplicationModule.js","sourceRoot":"","sources":["../../src/replication/ReplicationModule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReplicationModule.js","sourceRoot":"","sources":["../../src/replication/ReplicationModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AA2BvD;;;GAGG;AACH,MAAM,OAAgB,iBACpB,SAAQ,OAAO,CAAC,cAAc;IAGpB,IAAI,CAAS;IACb,YAAY,CAAa;IACzB,aAAa,CAAsB;IAE7C;;;OAGG;IACH,YAAsB,OAAiC;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3C,CAAC;IAuBD;;OAEG;IACI,KAAK,CAAC,UAAU,CAAC,OAA8B;QACpD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YACvC,gEAAgE;YAChE,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/G,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YAC3B,6CAA6C;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,iCAAiC,IAAI,CAAC,IAAI,2DAA2D,CACtG,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GAAG,cAAc,CAAC,CAAC,CAAY,CAAC;QACxD,yEAAyE;QACzE,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAEtC,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAEhE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAES,YAAY,CAAC,MAAe;QACpC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAEO,cAAc,CAAC,MAAe;QACpC,MAAM,SAAS,GAAG,MAAM;aACrB,eAAe;QACd,4DAA4D;QAC5D,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE;YACtC,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;SACvC,CAAC,CACH;aACA,SAAS,EAAE,CAAC;QAEf,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEzC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,IAAI,mBAAmB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAES,YAAY,CAAC,cAAsB;QAC3C,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC;IAC1C,CAAC;CACF"}
|