@powersync/service-core 1.13.4 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +61 -0
- package/LICENSE +3 -3
- package/dist/api/api-metrics.js +5 -0
- package/dist/api/api-metrics.js.map +1 -1
- package/dist/api/diagnostics.js +31 -1
- package/dist/api/diagnostics.js.map +1 -1
- package/dist/auth/KeyStore.d.ts +19 -0
- package/dist/auth/KeyStore.js +16 -4
- package/dist/auth/KeyStore.js.map +1 -1
- package/dist/auth/RemoteJWKSCollector.d.ts +3 -0
- package/dist/auth/RemoteJWKSCollector.js +3 -1
- package/dist/auth/RemoteJWKSCollector.js.map +1 -1
- package/dist/auth/StaticSupabaseKeyCollector.d.ts +2 -1
- package/dist/auth/StaticSupabaseKeyCollector.js +1 -1
- package/dist/auth/StaticSupabaseKeyCollector.js.map +1 -1
- package/dist/auth/utils.d.ts +19 -0
- package/dist/auth/utils.js +106 -3
- package/dist/auth/utils.js.map +1 -1
- package/dist/entry/commands/compact-action.js +10 -1
- package/dist/entry/commands/compact-action.js.map +1 -1
- package/dist/metrics/open-telemetry/util.d.ts +0 -3
- package/dist/metrics/open-telemetry/util.js +19 -12
- package/dist/metrics/open-telemetry/util.js.map +1 -1
- package/dist/replication/AbstractReplicator.js +2 -2
- package/dist/replication/AbstractReplicator.js.map +1 -1
- package/dist/routes/compression.d.ts +19 -0
- package/dist/routes/compression.js +70 -0
- package/dist/routes/compression.js.map +1 -0
- package/dist/routes/configure-fastify.d.ts +40 -5
- package/dist/routes/configure-fastify.js +2 -1
- package/dist/routes/configure-fastify.js.map +1 -1
- package/dist/routes/endpoints/socket-route.js +25 -17
- package/dist/routes/endpoints/socket-route.js.map +1 -1
- package/dist/routes/endpoints/sync-rules.js +1 -27
- package/dist/routes/endpoints/sync-rules.js.map +1 -1
- package/dist/routes/endpoints/sync-stream.d.ts +80 -10
- package/dist/routes/endpoints/sync-stream.js +29 -11
- package/dist/routes/endpoints/sync-stream.js.map +1 -1
- package/dist/routes/route-register.d.ts +4 -0
- package/dist/routes/route-register.js +29 -15
- package/dist/routes/route-register.js.map +1 -1
- package/dist/storage/BucketStorage.d.ts +1 -1
- package/dist/storage/BucketStorage.js.map +1 -1
- package/dist/storage/BucketStorageBatch.d.ts +16 -6
- package/dist/storage/BucketStorageBatch.js.map +1 -1
- package/dist/storage/ChecksumCache.d.ts +4 -19
- package/dist/storage/ChecksumCache.js +4 -0
- package/dist/storage/ChecksumCache.js.map +1 -1
- package/dist/storage/ReplicationEventPayload.d.ts +2 -2
- package/dist/storage/SourceEntity.d.ts +5 -4
- package/dist/storage/SourceTable.d.ts +22 -20
- package/dist/storage/SourceTable.js +34 -30
- package/dist/storage/SourceTable.js.map +1 -1
- package/dist/storage/SyncRulesBucketStorage.d.ts +19 -4
- package/dist/storage/SyncRulesBucketStorage.js.map +1 -1
- package/dist/sync/BucketChecksumState.d.ts +41 -11
- package/dist/sync/BucketChecksumState.js +155 -19
- package/dist/sync/BucketChecksumState.js.map +1 -1
- package/dist/sync/RequestTracker.d.ts +7 -1
- package/dist/sync/RequestTracker.js +22 -2
- package/dist/sync/RequestTracker.js.map +1 -1
- package/dist/sync/sync.d.ts +3 -3
- package/dist/sync/sync.js +23 -42
- package/dist/sync/sync.js.map +1 -1
- package/dist/sync/util.d.ts +3 -1
- package/dist/sync/util.js +30 -2
- package/dist/sync/util.js.map +1 -1
- package/dist/util/config/compound-config-collector.js +23 -0
- package/dist/util/config/compound-config-collector.js.map +1 -1
- package/dist/util/lsn.d.ts +4 -0
- package/dist/util/lsn.js +11 -0
- package/dist/util/lsn.js.map +1 -0
- package/dist/util/protocol-types.d.ts +153 -9
- package/dist/util/protocol-types.js +41 -6
- package/dist/util/protocol-types.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 +18 -3
- package/dist/util/utils.js +33 -9
- package/dist/util/utils.js.map +1 -1
- package/package.json +16 -14
- package/src/api/api-metrics.ts +6 -0
- package/src/api/diagnostics.ts +33 -1
- package/src/auth/KeyStore.ts +28 -4
- package/src/auth/RemoteJWKSCollector.ts +5 -2
- package/src/auth/StaticSupabaseKeyCollector.ts +1 -1
- package/src/auth/utils.ts +123 -3
- package/src/entry/commands/compact-action.ts +9 -1
- package/src/metrics/open-telemetry/util.ts +23 -19
- package/src/replication/AbstractReplicator.ts +2 -2
- package/src/routes/compression.ts +75 -0
- package/src/routes/configure-fastify.ts +3 -1
- package/src/routes/endpoints/socket-route.ts +25 -16
- package/src/routes/endpoints/sync-rules.ts +1 -28
- package/src/routes/endpoints/sync-stream.ts +37 -26
- package/src/routes/route-register.ts +41 -15
- package/src/storage/BucketStorage.ts +2 -2
- package/src/storage/BucketStorageBatch.ts +23 -6
- package/src/storage/ChecksumCache.ts +8 -22
- package/src/storage/ReplicationEventPayload.ts +2 -2
- package/src/storage/SourceEntity.ts +5 -5
- package/src/storage/SourceTable.ts +48 -34
- package/src/storage/SyncRulesBucketStorage.ts +26 -7
- package/src/sync/BucketChecksumState.ts +194 -31
- package/src/sync/RequestTracker.ts +27 -2
- package/src/sync/sync.ts +53 -51
- package/src/sync/util.ts +32 -3
- package/src/util/config/compound-config-collector.ts +24 -0
- package/src/util/lsn.ts +8 -0
- package/src/util/protocol-types.ts +138 -10
- package/src/util/util-index.ts +1 -0
- package/src/util/utils.ts +59 -12
- package/test/src/auth.test.ts +323 -1
- package/test/src/checksum_cache.test.ts +6 -8
- package/test/src/routes/mocks.ts +59 -0
- package/test/src/routes/stream.test.ts +84 -0
- package/test/src/sync/BucketChecksumState.test.ts +375 -76
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,66 @@
|
|
|
1
1
|
# @powersync/service-core
|
|
2
2
|
|
|
3
|
+
## 1.15.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 6d4a4d1: Create a persisted checksum cache when compacting buckets.
|
|
8
|
+
- c27e1c8: Upgrade Node, Sentry, Fastify and OpenTelemetry dependencies.
|
|
9
|
+
- f56acce: Enable permessage-deflate for websockets.
|
|
10
|
+
- 86807d0: Support gzip and zstd compression in http streams.
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- d2be184: Refactor interface between service and sync rule bindings in preparation for sync streams.
|
|
15
|
+
- 29a368e: Fix inconsistencies between binary data being requested and actually being sent.
|
|
16
|
+
- 6315334: [MongoDB Storage] Increase checksum timeouts
|
|
17
|
+
- 060b829: Update license abbreviation to FSL-1.1-ALv2.
|
|
18
|
+
- d49bebe: - Hooked up the MySQL binlog heartbeat events with the bucket batch keepalive mechanism.
|
|
19
|
+
Heartbeat events will now update the latest keepalive timestamp in the sync rules.
|
|
20
|
+
- Updated dependencies [b0b8ae9]
|
|
21
|
+
- Updated dependencies [d2be184]
|
|
22
|
+
- Updated dependencies [5284fb5]
|
|
23
|
+
- Updated dependencies [18435a4]
|
|
24
|
+
- Updated dependencies [5284fb5]
|
|
25
|
+
- Updated dependencies [f56acce]
|
|
26
|
+
- Updated dependencies [6fd0242]
|
|
27
|
+
- Updated dependencies [86807d0]
|
|
28
|
+
- Updated dependencies [060b829]
|
|
29
|
+
- @powersync/service-sync-rules@0.29.0
|
|
30
|
+
- @powersync/service-rsocket-router@0.2.0
|
|
31
|
+
- @powersync/service-types@0.13.0
|
|
32
|
+
- @powersync/lib-services-framework@0.7.3
|
|
33
|
+
- @powersync/service-jsonbig@0.17.11
|
|
34
|
+
|
|
35
|
+
## 1.14.0
|
|
36
|
+
|
|
37
|
+
### Minor Changes
|
|
38
|
+
|
|
39
|
+
- b1add5a: [MongoDB Storage] Compact action now also compacts parameter lookup storage.
|
|
40
|
+
- 2378e36: Drop support for legacy Supabase keys via app.settings.jwt_secret.
|
|
41
|
+
- 4ebc3bf: Report lack of commits or keepalives as issues in the diagnostics api.
|
|
42
|
+
- 2378e36: Add automatic support for Supabase JWT Signing Keys.
|
|
43
|
+
- d56eeb9: Delay switching over to new sync rules until we have a consistent checkpoint.
|
|
44
|
+
- d4db4e2: MySQL:
|
|
45
|
+
- Added schema change handling
|
|
46
|
+
- Except for some edge cases, the following schema changes are now handled automatically:
|
|
47
|
+
- Creation, renaming, dropping and truncation of tables.
|
|
48
|
+
- Creation and dropping of unique indexes and primary keys.
|
|
49
|
+
- Adding, modifying, dropping and renaming of table columns.
|
|
50
|
+
- If a schema change cannot handled automatically, a warning with details will be logged.
|
|
51
|
+
- Mismatches in table schema from the Zongji binlog listener are now handled more gracefully.
|
|
52
|
+
- Replication of wildcard tables is now supported.
|
|
53
|
+
- Improved logging for binlog event processing.
|
|
54
|
+
|
|
55
|
+
### Patch Changes
|
|
56
|
+
|
|
57
|
+
- 4a34a51: Support BSON lines through the HTTP endpoint via the `application/vnd.powersync.bson-stream` content-type.
|
|
58
|
+
- 1aafdaf: Make 404 error body consistent with other error responses.
|
|
59
|
+
- Updated dependencies [d4db4e2]
|
|
60
|
+
- @powersync/service-sync-rules@0.28.0
|
|
61
|
+
- @powersync/lib-services-framework@0.7.2
|
|
62
|
+
- @powersync/service-rsocket-router@0.1.3
|
|
63
|
+
|
|
3
64
|
## 1.13.4
|
|
4
65
|
|
|
5
66
|
### Patch Changes
|
package/LICENSE
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
# Functional Source License, Version 1.1,
|
|
1
|
+
# Functional Source License, Version 1.1, ALv2 Future License
|
|
2
2
|
|
|
3
3
|
## Abbreviation
|
|
4
4
|
|
|
5
|
-
FSL-1.1-
|
|
5
|
+
FSL-1.1-ALv2
|
|
6
6
|
|
|
7
7
|
## Notice
|
|
8
8
|
|
|
9
|
-
Copyright 2023-
|
|
9
|
+
Copyright 2023-2025 Journey Mobile, Inc.
|
|
10
10
|
|
|
11
11
|
## Terms and Conditions
|
|
12
12
|
|
package/dist/api/api-metrics.js
CHANGED
|
@@ -9,6 +9,11 @@ export function createCoreAPIMetrics(engine) {
|
|
|
9
9
|
description: 'Uncompressed size of synced data',
|
|
10
10
|
unit: 'bytes'
|
|
11
11
|
});
|
|
12
|
+
engine.createCounter({
|
|
13
|
+
name: APIMetric.DATA_SENT_BYTES,
|
|
14
|
+
description: 'Size of data sent to clients, after compression if applicable',
|
|
15
|
+
unit: 'bytes'
|
|
16
|
+
});
|
|
12
17
|
engine.createCounter({
|
|
13
18
|
name: APIMetric.OPERATIONS_SYNCED,
|
|
14
19
|
description: 'Number of operations synced'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-metrics.js","sourceRoot":"","sources":["../../src/api/api-metrics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAqB;IACxD,MAAM,CAAC,aAAa,CAAC;QACnB,IAAI,EAAE,SAAS,CAAC,iBAAiB;QACjC,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IAEH,MAAM,CAAC,aAAa,CAAC;QACnB,IAAI,EAAE,SAAS,CAAC,iBAAiB;QACjC,WAAW,EAAE,6BAA6B;KAC3C,CAAC,CAAC;IAEH,MAAM,CAAC,mBAAmB,CAAC;QACzB,IAAI,EAAE,SAAS,CAAC,sBAAsB;QACtC,WAAW,EAAE,uCAAuC;KACrD,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAqB;IAC5D,MAAM,sBAAsB,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAEzF,yFAAyF;IACzF,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC"}
|
|
1
|
+
{"version":3,"file":"api-metrics.js","sourceRoot":"","sources":["../../src/api/api-metrics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAqB;IACxD,MAAM,CAAC,aAAa,CAAC;QACnB,IAAI,EAAE,SAAS,CAAC,iBAAiB;QACjC,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IAEH,MAAM,CAAC,aAAa,CAAC;QACnB,IAAI,EAAE,SAAS,CAAC,eAAe;QAC/B,WAAW,EAAE,+DAA+D;QAC5E,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IAEH,MAAM,CAAC,aAAa,CAAC;QACnB,IAAI,EAAE,SAAS,CAAC,iBAAiB;QACjC,WAAW,EAAE,6BAA6B;KAC3C,CAAC,CAAC;IAEH,MAAM,CAAC,mBAAmB,CAAC;QACzB,IAAI,EAAE,SAAS,CAAC,sBAAsB;QACtC,WAAW,EAAE,uCAAuC;KACrD,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAqB;IAC5D,MAAM,sBAAsB,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAEzF,yFAAyF;IACzF,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC"}
|
package/dist/api/diagnostics.js
CHANGED
|
@@ -73,7 +73,7 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
|
|
|
73
73
|
const source = {
|
|
74
74
|
connectionTag: tag,
|
|
75
75
|
schema: pattern.schema,
|
|
76
|
-
|
|
76
|
+
name: pattern.tablePattern
|
|
77
77
|
};
|
|
78
78
|
const syncData = rules.tableSyncsData(source);
|
|
79
79
|
const syncParameters = rules.tableSyncsParameters(source);
|
|
@@ -98,6 +98,36 @@ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules,
|
|
|
98
98
|
message: e.message
|
|
99
99
|
};
|
|
100
100
|
}));
|
|
101
|
+
if (live_status && status?.active) {
|
|
102
|
+
// Check replication lag for active sync rules.
|
|
103
|
+
// Right now we exclude mysql, since it we don't have consistent keepalives for it.
|
|
104
|
+
if (sync_rules.last_checkpoint_ts == null && sync_rules.last_keepalive_ts == null) {
|
|
105
|
+
errors.push({
|
|
106
|
+
level: 'warning',
|
|
107
|
+
message: 'No checkpoint found, cannot calculate replication lag'
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
const lastTime = Math.max(sync_rules.last_checkpoint_ts?.getTime() ?? 0, sync_rules.last_keepalive_ts?.getTime() ?? 0);
|
|
112
|
+
const lagSeconds = Math.round((Date.now() - lastTime) / 1000);
|
|
113
|
+
// On idle instances, keepalive messages are only persisted every 60 seconds.
|
|
114
|
+
// So we use 5 minutes as a threshold for warnings, and 15 minutes for critical.
|
|
115
|
+
// The replication lag metric should give a more granular value, but that is not available directly
|
|
116
|
+
// in the API containers used for diagnostics, and this should give a good enough indication.
|
|
117
|
+
if (lagSeconds > 15 * 60) {
|
|
118
|
+
errors.push({
|
|
119
|
+
level: 'fatal',
|
|
120
|
+
message: `No replicated commit in more than ${lagSeconds}s`
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
else if (lagSeconds > 5 * 60) {
|
|
124
|
+
errors.push({
|
|
125
|
+
level: 'warning',
|
|
126
|
+
message: `No replicated commit in more than ${lagSeconds}s`
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
101
131
|
return {
|
|
102
132
|
content: include_content ? sync_rules.sync_rules_content : undefined,
|
|
103
133
|
connections: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/api/diagnostics.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/api/diagnostics.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/KeyStore.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { JwtPayload } from './JwtPayload.js';
|
|
2
2
|
import { KeyCollector } from './KeyCollector.js';
|
|
3
|
+
import { SupabaseAuthDetails } from './utils.js';
|
|
3
4
|
/**
|
|
4
5
|
* KeyStore to get keys and verify tokens.
|
|
5
6
|
*
|
|
@@ -32,6 +33,24 @@ export declare class KeyStore<Collector extends KeyCollector = KeyCollector> {
|
|
|
32
33
|
* @internal
|
|
33
34
|
*/
|
|
34
35
|
collector: Collector;
|
|
36
|
+
/**
|
|
37
|
+
* For debug purposes only.
|
|
38
|
+
*
|
|
39
|
+
* This is very Supabase-specific, but we need the info on this level. For example,
|
|
40
|
+
* we want to detect cases where a Supabase token is used, but Supabase auth is not enabled
|
|
41
|
+
* (no Supabase collector configured).
|
|
42
|
+
*/
|
|
43
|
+
supabaseAuthDebug: {
|
|
44
|
+
/**
|
|
45
|
+
* This can be populated without jwksEnabled, but not the other way around.
|
|
46
|
+
*/
|
|
47
|
+
jwksDetails: SupabaseAuthDetails | null;
|
|
48
|
+
jwksEnabled: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* This can be enabled without jwksDetails populated.
|
|
51
|
+
*/
|
|
52
|
+
sharedSecretEnabled: boolean;
|
|
53
|
+
};
|
|
35
54
|
constructor(collector: Collector);
|
|
36
55
|
verifyJwt(token: string, options: {
|
|
37
56
|
defaultAudiences: string[];
|
package/dist/auth/KeyStore.js
CHANGED
|
@@ -2,7 +2,7 @@ import { AuthorizationError, ErrorCode, logger } from '@powersync/lib-services-f
|
|
|
2
2
|
import * as jose from 'jose';
|
|
3
3
|
import secs from '../util/secs.js';
|
|
4
4
|
import { SUPPORTED_ALGORITHMS } from './KeySpec.js';
|
|
5
|
-
import { mapAuthError } from './utils.js';
|
|
5
|
+
import { debugKeyNotFound, mapAuthError } from './utils.js';
|
|
6
6
|
/**
|
|
7
7
|
* KeyStore to get keys and verify tokens.
|
|
8
8
|
*
|
|
@@ -35,6 +35,18 @@ export class KeyStore {
|
|
|
35
35
|
* @internal
|
|
36
36
|
*/
|
|
37
37
|
collector;
|
|
38
|
+
/**
|
|
39
|
+
* For debug purposes only.
|
|
40
|
+
*
|
|
41
|
+
* This is very Supabase-specific, but we need the info on this level. For example,
|
|
42
|
+
* we want to detect cases where a Supabase token is used, but Supabase auth is not enabled
|
|
43
|
+
* (no Supabase collector configured).
|
|
44
|
+
*/
|
|
45
|
+
supabaseAuthDebug = {
|
|
46
|
+
jwksDetails: null,
|
|
47
|
+
jwksEnabled: false,
|
|
48
|
+
sharedSecretEnabled: false
|
|
49
|
+
};
|
|
38
50
|
constructor(collector) {
|
|
39
51
|
this.collector = collector;
|
|
40
52
|
}
|
|
@@ -106,7 +118,7 @@ export class KeyStore {
|
|
|
106
118
|
if (!key.matchesAlgorithm(header.alg)) {
|
|
107
119
|
throw new AuthorizationError(ErrorCode.PSYNC_S2101, `Unexpected token algorithm ${header.alg}`, {
|
|
108
120
|
configurationDetails: `Key kid: ${key.source.kid}, alg: ${key.source.alg}, kty: ${key.source.kty}`
|
|
109
|
-
//
|
|
121
|
+
// tokenDetails automatically populated higher up the stack
|
|
110
122
|
});
|
|
111
123
|
}
|
|
112
124
|
return key;
|
|
@@ -137,9 +149,9 @@ export class KeyStore {
|
|
|
137
149
|
// This is just a last resort error handling.
|
|
138
150
|
logger.error(`Failed to refresh keys`, e);
|
|
139
151
|
});
|
|
152
|
+
const details = debugKeyNotFound(this, keys, token);
|
|
140
153
|
throw new AuthorizationError(ErrorCode.PSYNC_S2101, 'Could not find an appropriate key in the keystore. The key is missing or no key matched the token KID', {
|
|
141
|
-
|
|
142
|
-
// tokenDetails automatically populated later
|
|
154
|
+
...details
|
|
143
155
|
});
|
|
144
156
|
}
|
|
145
157
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyStore.js","sourceRoot":"","sources":["../../src/auth/KeyStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,IAAI,MAAM,iBAAiB,CAAC;AAGnC,OAAO,EAAuB,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"KeyStore.js","sourceRoot":"","sources":["../../src/auth/KeyStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,10 @@ import * as http from 'http';
|
|
|
2
2
|
import * as https from 'https';
|
|
3
3
|
import { LookupOptions } from '@powersync/lib-services-framework';
|
|
4
4
|
import { KeyCollector, KeyResult } from './KeyCollector.js';
|
|
5
|
+
import { KeyOptions } from './KeySpec.js';
|
|
5
6
|
export type RemoteJWKSCollectorOptions = {
|
|
6
7
|
lookupOptions?: LookupOptions;
|
|
8
|
+
keyOptions?: KeyOptions;
|
|
7
9
|
};
|
|
8
10
|
/**
|
|
9
11
|
* Set of keys fetched from JWKS URI.
|
|
@@ -12,6 +14,7 @@ export declare class RemoteJWKSCollector implements KeyCollector {
|
|
|
12
14
|
protected options?: RemoteJWKSCollectorOptions | undefined;
|
|
13
15
|
private url;
|
|
14
16
|
private agent;
|
|
17
|
+
private keyOptions;
|
|
15
18
|
constructor(url: string, options?: RemoteJWKSCollectorOptions | undefined);
|
|
16
19
|
private getJwksData;
|
|
17
20
|
getKeys(): Promise<KeyResult>;
|
|
@@ -10,6 +10,7 @@ export class RemoteJWKSCollector {
|
|
|
10
10
|
options;
|
|
11
11
|
url;
|
|
12
12
|
agent;
|
|
13
|
+
keyOptions;
|
|
13
14
|
constructor(url, options) {
|
|
14
15
|
this.options = options;
|
|
15
16
|
try {
|
|
@@ -18,6 +19,7 @@ export class RemoteJWKSCollector {
|
|
|
18
19
|
catch (e) {
|
|
19
20
|
throw new ServiceError(ErrorCode.PSYNC_S3102, `Invalid jwks_uri: ${JSON.stringify(url)} Details: ${e.message}`);
|
|
20
21
|
}
|
|
22
|
+
this.keyOptions = options?.keyOptions ?? {};
|
|
21
23
|
// We do support http here for self-hosting use cases.
|
|
22
24
|
// Management service restricts this to https for hosted versions.
|
|
23
25
|
if (this.url.protocol != 'https:' && this.url.protocol != 'http:') {
|
|
@@ -93,7 +95,7 @@ export class RemoteJWKSCollector {
|
|
|
93
95
|
continue;
|
|
94
96
|
}
|
|
95
97
|
}
|
|
96
|
-
const key = await KeySpec.importKey(keyData);
|
|
98
|
+
const key = await KeySpec.importKey(keyData, this.keyOptions);
|
|
97
99
|
keys.push(key);
|
|
98
100
|
}
|
|
99
101
|
return { keys: keys, errors: [] };
|
|
@@ -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;AAE/B,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,SAAS,EAET,0BAA0B,EAC1B,qBAAqB,EACrB,YAAY,EACb,MAAM,mCAAmC,CAAC;AAE3C,OAAO,
|
|
1
|
+
{"version":3,"file":"RemoteJWKSCollector.js","sourceRoot":"","sources":["../../src/auth/RemoteJWKSCollector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as jose from 'jose';
|
|
2
|
-
import { KeySpec } from './KeySpec.js';
|
|
2
|
+
import { KeySpec, KeyOptions } from './KeySpec.js';
|
|
3
3
|
import { KeyCollector, KeyResult } from './KeyCollector.js';
|
|
4
|
+
export declare const SUPABASE_KEY_OPTIONS: KeyOptions;
|
|
4
5
|
/**
|
|
5
6
|
* Set of static keys for Supabase.
|
|
6
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticSupabaseKeyCollector.js","sourceRoot":"","sources":["../../src/auth/StaticSupabaseKeyCollector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAc,MAAM,cAAc,CAAC;AAGnD,MAAM,oBAAoB,GAAe;
|
|
1
|
+
{"version":3,"file":"StaticSupabaseKeyCollector.js","sourceRoot":"","sources":["../../src/auth/StaticSupabaseKeyCollector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAc,MAAM,cAAc,CAAC;AAGnD,MAAM,CAAC,MAAM,oBAAoB,GAAe;IAC9C,gBAAgB,EAAE,CAAC,eAAe,CAAC;IACnC,kBAAkB,EAAE,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,6BAA6B;CACnE,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,OAAO,0BAA0B;IAMjB;IALpB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAgB;QACtC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACtG,OAAO,IAAI,0BAA0B,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IAED,YAAoB,IAAe;QAAf,SAAI,GAAJ,IAAI,CAAW;IAAG,CAAC;IAEvC,KAAK,CAAC,OAAO;QACX,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC;CACF"}
|
package/dist/auth/utils.d.ts
CHANGED
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
import { AuthorizationError } from '@powersync/lib-services-framework';
|
|
2
2
|
import * as jose from 'jose';
|
|
3
|
+
import { KeySpec } from './KeySpec.js';
|
|
4
|
+
import { KeyStore } from './KeyStore.js';
|
|
3
5
|
export declare function mapJoseError(error: jose.errors.JOSEError, token: string): AuthorizationError;
|
|
4
6
|
export declare function mapAuthError(error: any, token: string): AuthorizationError;
|
|
5
7
|
export declare function mapJoseConfigError(error: jose.errors.JOSEError): AuthorizationError;
|
|
6
8
|
export declare function mapAuthConfigError(error: any): AuthorizationError;
|
|
9
|
+
/**
|
|
10
|
+
* Decode token for debugging purposes.
|
|
11
|
+
*
|
|
12
|
+
* We use this to add details to our logs. We don't log the entire token, since it may for example
|
|
13
|
+
* a password incorrectly used as a token.
|
|
14
|
+
*/
|
|
15
|
+
export declare function tokenDebugDetails(token: string): string;
|
|
16
|
+
export interface SupabaseAuthDetails {
|
|
17
|
+
projectId: string;
|
|
18
|
+
url: string;
|
|
19
|
+
hostname: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function getSupabaseJwksUrl(connection: any): SupabaseAuthDetails | null;
|
|
22
|
+
export declare function debugKeyNotFound(keyStore: KeyStore, keys: KeySpec[], token: string): {
|
|
23
|
+
configurationDetails: string;
|
|
24
|
+
tokenDetails: string;
|
|
25
|
+
};
|
package/dist/auth/utils.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { AuthorizationError, ErrorCode } from '@powersync/lib-services-framework';
|
|
2
2
|
import * as jose from 'jose';
|
|
3
|
+
import * as urijs from 'uri-js';
|
|
4
|
+
import * as uuid from 'uuid';
|
|
3
5
|
export function mapJoseError(error, token) {
|
|
4
6
|
const tokenDetails = tokenDebugDetails(token);
|
|
5
7
|
if (error.code === jose.errors.JWSInvalid.code || error.code === jose.errors.JWTInvalid.code) {
|
|
@@ -56,16 +58,27 @@ export function mapAuthConfigError(error) {
|
|
|
56
58
|
* We use this to add details to our logs. We don't log the entire token, since it may for example
|
|
57
59
|
* a password incorrectly used as a token.
|
|
58
60
|
*/
|
|
59
|
-
function tokenDebugDetails(token) {
|
|
61
|
+
export function tokenDebugDetails(token) {
|
|
62
|
+
return parseTokenDebug(token).description;
|
|
63
|
+
}
|
|
64
|
+
function parseTokenDebug(token) {
|
|
60
65
|
try {
|
|
61
66
|
// For valid tokens, we return the header and payload
|
|
62
67
|
const header = jose.decodeProtectedHeader(token);
|
|
63
68
|
const payload = jose.decodeJwt(token);
|
|
64
|
-
|
|
69
|
+
const isSupabase = typeof payload.iss == 'string' && payload.iss.includes('supabase.co');
|
|
70
|
+
const isSharedSecret = isSupabase && header.alg === 'HS256';
|
|
71
|
+
return {
|
|
72
|
+
header,
|
|
73
|
+
payload,
|
|
74
|
+
isSupabase,
|
|
75
|
+
isSharedSecret: isSharedSecret,
|
|
76
|
+
description: `<header: ${JSON.stringify(header)} payload: ${JSON.stringify(payload)}>`
|
|
77
|
+
};
|
|
65
78
|
}
|
|
66
79
|
catch (e) {
|
|
67
80
|
// Token fails to parse. Return some details.
|
|
68
|
-
return invalidTokenDetails(token);
|
|
81
|
+
return { description: invalidTokenDetails(token) };
|
|
69
82
|
}
|
|
70
83
|
}
|
|
71
84
|
function invalidTokenDetails(token) {
|
|
@@ -94,4 +107,94 @@ function invalidTokenDetails(token) {
|
|
|
94
107
|
}
|
|
95
108
|
return `<invalid JWT, length=${token.length}>`;
|
|
96
109
|
}
|
|
110
|
+
export function getSupabaseJwksUrl(connection) {
|
|
111
|
+
if (connection == null) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
else if (connection.type != 'postgresql') {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
let hostname = connection.hostname;
|
|
118
|
+
if (hostname == null && typeof connection.uri == 'string') {
|
|
119
|
+
hostname = urijs.parse(connection.uri).host;
|
|
120
|
+
}
|
|
121
|
+
if (hostname == null) {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
const match = /db.(\w+).supabase.co/.exec(hostname);
|
|
125
|
+
if (match == null) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
const projectId = match[1];
|
|
129
|
+
return { projectId, hostname, url: `https://${projectId}.supabase.co/auth/v1/.well-known/jwks.json` };
|
|
130
|
+
}
|
|
131
|
+
export function debugKeyNotFound(keyStore, keys, token) {
|
|
132
|
+
const knownKeys = keys.map((key) => key.description).join(', ');
|
|
133
|
+
const td = parseTokenDebug(token);
|
|
134
|
+
const tokenDetails = td.description;
|
|
135
|
+
const configuredSupabase = keyStore.supabaseAuthDebug;
|
|
136
|
+
// Cases to check:
|
|
137
|
+
// 1. Is Supabase token, but supabase auth not enabled.
|
|
138
|
+
// 2. Is Supabase HS256 token, but no secret configured.
|
|
139
|
+
// 3. Is Supabase singing key token, but no Supabase signing keys configured.
|
|
140
|
+
// 4. Supabase project id mismatch.
|
|
141
|
+
if (td.isSharedSecret) {
|
|
142
|
+
// Supabase HS256 token
|
|
143
|
+
// UUID: HS256 (Shared Secret)
|
|
144
|
+
// Other: Legacy HS256 (Shared Secret)
|
|
145
|
+
// Not a big difference between the two other than terminology used on Supabase.
|
|
146
|
+
const isLegacy = uuid.validate(td.header.kid) ? false : true;
|
|
147
|
+
const addMessage = configuredSupabase.jwksEnabled && !isLegacy
|
|
148
|
+
? ' Use asymmetric keys on Supabase (RSA or ECC) to allow automatic key retrieval.'
|
|
149
|
+
: '';
|
|
150
|
+
if (!configuredSupabase.sharedSecretEnabled) {
|
|
151
|
+
return {
|
|
152
|
+
configurationDetails: `Token is a Supabase ${isLegacy ? 'Legacy ' : ''}HS256 (Shared Secret) token, but Supabase JWT secret is not configured.${addMessage}`,
|
|
153
|
+
tokenDetails
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
return {
|
|
158
|
+
// This is an educated guess
|
|
159
|
+
configurationDetails: `Token is a Supabase ${isLegacy ? 'Legacy ' : ''}HS256 (Shared Secret) token, but configured Supabase JWT secret does not match.${addMessage}`,
|
|
160
|
+
tokenDetails
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else if (td.isSupabase) {
|
|
165
|
+
// Supabase JWT Signing Keys
|
|
166
|
+
if (!configuredSupabase.jwksEnabled) {
|
|
167
|
+
if (configuredSupabase.jwksDetails != null) {
|
|
168
|
+
return {
|
|
169
|
+
configurationDetails: `Token uses Supabase JWT Signing Keys, but Supabase Auth is not enabled`,
|
|
170
|
+
tokenDetails
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
return {
|
|
175
|
+
configurationDetails: `Token uses Supabase JWT Signing Keys, but no Supabase connection is configured`,
|
|
176
|
+
tokenDetails
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
else if (configuredSupabase.jwksDetails != null) {
|
|
181
|
+
const configuredProjectId = configuredSupabase.jwksDetails.projectId;
|
|
182
|
+
const issuer = td.payload.iss; // Is a string since since isSupabase is true
|
|
183
|
+
if (!issuer.includes(configuredProjectId)) {
|
|
184
|
+
return {
|
|
185
|
+
configurationDetails: `Supabase project id mismatch. Expected project: ${configuredProjectId}, got issuer: ${issuer}`,
|
|
186
|
+
tokenDetails
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
// Project id matches, but no matching keys found
|
|
191
|
+
return {
|
|
192
|
+
configurationDetails: `Supabase signing keys configured, but no matching keys found. Known keys: ${knownKeys}`,
|
|
193
|
+
tokenDetails
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return { configurationDetails: `Known keys: ${knownKeys}`, tokenDetails: tokenDebugDetails(token) };
|
|
199
|
+
}
|
|
97
200
|
//# sourceMappingURL=utils.js.map
|
package/dist/auth/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/auth/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/auth/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,7 +47,16 @@ export function registerCompactAction(program) {
|
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
49
|
logger.info('Performing compaction...');
|
|
50
|
-
|
|
50
|
+
if (buckets != null) {
|
|
51
|
+
await active.compact({
|
|
52
|
+
memoryLimitMB: COMPACT_MEMORY_LIMIT_MB,
|
|
53
|
+
compactBuckets: buckets,
|
|
54
|
+
compactParameterData: false
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
await active.compact({ memoryLimitMB: COMPACT_MEMORY_LIMIT_MB, compactParameterData: true });
|
|
59
|
+
}
|
|
51
60
|
logger.info('Successfully compacted storage.');
|
|
52
61
|
}
|
|
53
62
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact-action.js","sourceRoot":"","sources":["../../../src/entry/commands/compact-action.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,MAAM,MAAM,8BAA8B,CAAC;AACvD,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,YAAY,GAAG,SAAS,CAAC;AAE/B;;GAEG;AACH,MAAM,UAAU,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,eAAe,CAAC;AAE1D;;;;GAIG;AACH,MAAM,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AAE/E,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,cAAc,GAAG,OAAO;SAC3B,OAAO,CAAC,YAAY,CAAC;SACrB,MAAM,CAAC,yBAAyB,EAAE,4EAA4E,CAAC,CAAC;IAEnH,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAElC,OAAO,cAAc,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,0BAA0B,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,uBAAuB,CAAC;YACxD,WAAW,EAAE,MAAM,CAAC,kBAAkB,CAAC,OAAO;YAC9C,aAAa,EAAE,MAAM;SACtB,CAAC,CAAC;QAEH,8DAA8D;QAC9D,MAAM,aAAa,GAAG,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACzE,MAAM,aAAa,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAE/C,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAExC,IAAI,CAAC;YACH,4EAA4E;YAC5E,MAAM,cAAc,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7C,MAAM,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC,mBAAmB,CAAC;YAEvE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,gBAAgB,EAAE,CAAC;YACtD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;gBAC7C,OAAO;YACT,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACxC,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,uBAAuB,EAAE,
|
|
1
|
+
{"version":3,"file":"compact-action.js","sourceRoot":"","sources":["../../../src/entry/commands/compact-action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
1
|
import { ServiceContext } from '../../system/ServiceContext.js';
|
|
2
2
|
import { MetricsFactory } from '../metrics-interfaces.js';
|
|
3
|
-
export interface RuntimeMetadata {
|
|
4
|
-
[key: string]: string | number | undefined;
|
|
5
|
-
}
|
|
6
3
|
export declare function createOpenTelemetryMetricsFactory(context: ServiceContext): MetricsFactory;
|