@powersync/lib-service-postgres 0.0.0-dev-20250117095455 → 0.0.0-dev-20250227082606
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 -8
- package/dist/db/connection/AbstractPostgresConnection.d.ts +1 -1
- package/dist/db/connection/AbstractPostgresConnection.js +1 -1
- package/dist/db/connection/AbstractPostgresConnection.js.map +1 -1
- package/dist/db/connection/ConnectionSlot.d.ts +2 -3
- package/dist/db/connection/ConnectionSlot.js +18 -26
- package/dist/db/connection/ConnectionSlot.js.map +1 -1
- package/dist/db/connection/DatabaseClient.d.ts +1 -1
- package/dist/db/connection/DatabaseClient.js +13 -3
- package/dist/db/connection/DatabaseClient.js.map +1 -1
- package/dist/db/connection/WrappedConnection.js +1 -0
- package/dist/db/connection/WrappedConnection.js.map +1 -1
- package/dist/locks/PostgresLockManager.js +2 -1
- package/dist/locks/PostgresLockManager.js.map +1 -1
- package/dist/types/types.d.ts +3 -0
- package/dist/types/types.js +13 -11
- package/dist/types/types.js.map +1 -1
- package/dist/utils/identifier-utils.d.ts +8 -0
- package/dist/utils/identifier-utils.js +24 -0
- package/dist/utils/identifier-utils.js.map +1 -0
- package/dist/utils/pgwire_utils.js +2 -2
- package/dist/utils/pgwire_utils.js.map +1 -1
- package/dist/utils/utils-index.d.ts +1 -0
- package/dist/utils/utils-index.js +1 -0
- package/dist/utils/utils-index.js.map +1 -1
- package/package.json +4 -4
- package/src/db/connection/AbstractPostgresConnection.ts +1 -3
- package/src/db/connection/ConnectionSlot.ts +9 -24
- package/src/db/connection/DatabaseClient.ts +9 -4
- package/src/types/types.ts +24 -12
- package/src/utils/identifier-utils.ts +38 -0
- package/src/utils/pgwire_utils.ts +2 -2
- package/src/utils/utils-index.ts +1 -0
- package/tsconfig.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,19 +1,59 @@
|
|
|
1
1
|
# @powersync/lib-service-postgres
|
|
2
2
|
|
|
3
|
-
## 0.0.0-dev-
|
|
3
|
+
## 0.0.0-dev-20250227082606
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
7
|
-
-
|
|
7
|
+
- 7f8d223: Make some service limits configurable.
|
|
8
8
|
|
|
9
9
|
### Patch Changes
|
|
10
10
|
|
|
11
|
-
- Updated dependencies [
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
- Updated dependencies [7f8d223]
|
|
12
|
+
- @powersync/service-types@0.0.0-dev-20250227082606
|
|
13
|
+
|
|
14
|
+
## 0.3.3
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies [b4fe4ae]
|
|
19
|
+
- @powersync/lib-services-framework@0.5.3
|
|
20
|
+
|
|
21
|
+
## 0.3.2
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- @powersync/lib-services-framework@0.5.2
|
|
26
|
+
|
|
27
|
+
## 0.3.1
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- Updated dependencies [4b43cdb]
|
|
32
|
+
- @powersync/service-types@0.8.0
|
|
33
|
+
- @powersync/lib-services-framework@0.5.1
|
|
34
|
+
|
|
35
|
+
## 0.3.0
|
|
36
|
+
|
|
37
|
+
### Minor Changes
|
|
38
|
+
|
|
39
|
+
- 223f701: Added utilities for Postgres server and database identification.
|
|
40
|
+
|
|
41
|
+
## 0.2.0
|
|
42
|
+
|
|
43
|
+
### Minor Changes
|
|
44
|
+
|
|
45
|
+
- 8675236: Allow limiting IP ranges of outgoing connections
|
|
46
|
+
|
|
47
|
+
### Patch Changes
|
|
48
|
+
|
|
49
|
+
- f049aa9: Introduce standard error codes
|
|
50
|
+
- Updated dependencies [8675236]
|
|
51
|
+
- Updated dependencies [8675236]
|
|
52
|
+
- Updated dependencies [8675236]
|
|
53
|
+
- Updated dependencies [f049aa9]
|
|
54
|
+
- @powersync/service-types@0.7.1
|
|
55
|
+
- @powersync/lib-services-framework@0.5.0
|
|
56
|
+
- @powersync/service-jpgwire@0.19.0
|
|
17
57
|
|
|
18
58
|
## 0.1.0
|
|
19
59
|
|
|
@@ -5,7 +5,7 @@ export type DecodedSQLQueryExecutor<T extends t.Codec<any, any>> = {
|
|
|
5
5
|
first: () => Promise<t.Decoded<T> | null>;
|
|
6
6
|
rows: () => Promise<t.Decoded<T>[]>;
|
|
7
7
|
};
|
|
8
|
-
export declare abstract class AbstractPostgresConnection<Listener
|
|
8
|
+
export declare abstract class AbstractPostgresConnection<Listener = {}> extends framework.BaseObserver<Listener> {
|
|
9
9
|
protected abstract baseConnection: pgwire.PgClient;
|
|
10
10
|
stream(...args: pgwire.Statement[]): AsyncIterableIterator<pgwire.PgChunk>;
|
|
11
11
|
query(script: string, options?: pgwire.PgSimpleQueryOptions): Promise<pgwire.PgResult>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as framework from '@powersync/lib-services-framework';
|
|
2
2
|
import * as pgwire from '@powersync/service-jpgwire';
|
|
3
|
-
export class AbstractPostgresConnection extends framework.
|
|
3
|
+
export class AbstractPostgresConnection extends framework.BaseObserver {
|
|
4
4
|
stream(...args) {
|
|
5
5
|
return this.baseConnection.stream(...args);
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractPostgresConnection.js","sourceRoot":"","sources":["../../../src/db/connection/AbstractPostgresConnection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,mCAAmC,CAAC;AAC/D,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AAQrD,MAAM,OAAgB,
|
|
1
|
+
{"version":3,"file":"AbstractPostgresConnection.js","sourceRoot":"","sources":["../../../src/db/connection/AbstractPostgresConnection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as framework from '@powersync/lib-services-framework';
|
|
2
2
|
import * as pgwire from '@powersync/service-jpgwire';
|
|
3
|
-
export interface NotificationListener
|
|
3
|
+
export interface NotificationListener {
|
|
4
4
|
notification?: (payload: pgwire.PgNotification) => void;
|
|
5
5
|
}
|
|
6
6
|
export interface ConnectionSlotListener extends NotificationListener {
|
|
@@ -17,7 +17,7 @@ export type ConnectionSlotOptions = {
|
|
|
17
17
|
notificationChannels?: string[];
|
|
18
18
|
};
|
|
19
19
|
export declare const MAX_CONNECTION_ATTEMPTS = 5;
|
|
20
|
-
export declare class ConnectionSlot extends framework.
|
|
20
|
+
export declare class ConnectionSlot extends framework.BaseObserver<ConnectionSlotListener> {
|
|
21
21
|
protected options: ConnectionSlotOptions;
|
|
22
22
|
isAvailable: boolean;
|
|
23
23
|
isPoking: boolean;
|
|
@@ -29,7 +29,6 @@ export declare class ConnectionSlot extends framework.DisposableObserver<Connect
|
|
|
29
29
|
protected connect(): Promise<pgwire.PgConnection>;
|
|
30
30
|
[Symbol.asyncDispose](): Promise<void>;
|
|
31
31
|
protected configureConnectionNotifications(connection: pgwire.PgConnection): Promise<void>;
|
|
32
|
-
registerListener(listener: Partial<ConnectionSlotListener>): () => void;
|
|
33
32
|
protected handleNotification: (payload: pgwire.PgNotification) => void;
|
|
34
33
|
protected hasNotificationListener(): boolean;
|
|
35
34
|
/**
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import * as framework from '@powersync/lib-services-framework';
|
|
2
2
|
import * as pgwire from '@powersync/service-jpgwire';
|
|
3
3
|
export const MAX_CONNECTION_ATTEMPTS = 5;
|
|
4
|
-
export class ConnectionSlot extends framework.
|
|
4
|
+
export class ConnectionSlot extends framework.BaseObserver {
|
|
5
|
+
options;
|
|
6
|
+
isAvailable;
|
|
7
|
+
isPoking;
|
|
8
|
+
closed;
|
|
9
|
+
connection;
|
|
10
|
+
connectingPromise;
|
|
5
11
|
constructor(options) {
|
|
6
12
|
super();
|
|
7
13
|
this.options = options;
|
|
8
|
-
this.handleNotification = (payload) => {
|
|
9
|
-
if (!this.options.notificationChannels?.includes(payload.channel)) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
this.iterateListeners((l) => l.notification?.(payload));
|
|
13
|
-
};
|
|
14
14
|
this.isAvailable = false;
|
|
15
15
|
this.connection = null;
|
|
16
16
|
this.isPoking = false;
|
|
@@ -25,22 +25,20 @@ export class ConnectionSlot extends framework.DisposableObserver {
|
|
|
25
25
|
const connection = await this.connectingPromise;
|
|
26
26
|
this.connectingPromise = null;
|
|
27
27
|
await this.iterateAsyncListeners(async (l) => l.connectionCreated?.(connection));
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Configure the Postgres connection to listen to notifications.
|
|
30
|
+
* Subscribing to notifications, even without a registered listener, should not add much overhead.
|
|
31
|
+
*/
|
|
32
|
+
await this.configureConnectionNotifications(connection);
|
|
31
33
|
return connection;
|
|
32
34
|
}
|
|
33
35
|
async [Symbol.asyncDispose]() {
|
|
34
36
|
this.closed = true;
|
|
35
37
|
const connection = this.connection ?? (await this.connectingPromise);
|
|
36
38
|
await connection?.end();
|
|
37
|
-
|
|
39
|
+
super.clearListeners();
|
|
38
40
|
}
|
|
39
41
|
async configureConnectionNotifications(connection) {
|
|
40
|
-
if (connection.onnotification == this.handleNotification || this.closed == true) {
|
|
41
|
-
// Already configured
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
42
|
connection.onnotification = this.handleNotification;
|
|
45
43
|
for (const channelName of this.options.notificationChannels ?? []) {
|
|
46
44
|
await connection.query({
|
|
@@ -48,18 +46,12 @@ export class ConnectionSlot extends framework.DisposableObserver {
|
|
|
48
46
|
});
|
|
49
47
|
}
|
|
50
48
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
this.configureConnectionNotifications(this.connection);
|
|
49
|
+
handleNotification = (payload) => {
|
|
50
|
+
if (!this.options.notificationChannels?.includes(payload.channel)) {
|
|
51
|
+
return;
|
|
55
52
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (this.connection && !this.hasNotificationListener()) {
|
|
59
|
-
this.connection.onnotification = () => { };
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
}
|
|
53
|
+
this.iterateListeners((l) => l.notification?.(payload));
|
|
54
|
+
};
|
|
63
55
|
hasNotificationListener() {
|
|
64
56
|
return !!Object.values(this.listeners).find((l) => !!l.notification);
|
|
65
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionSlot.js","sourceRoot":"","sources":["../../../src/db/connection/ConnectionSlot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,mCAAmC,CAAC;AAC/D,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AAsBrD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC,MAAM,OAAO,cAAe,SAAQ,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"ConnectionSlot.js","sourceRoot":"","sources":["../../../src/db/connection/ConnectionSlot.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ export declare const TRANSACTION_CONNECTION_COUNT = 5;
|
|
|
28
28
|
export declare class DatabaseClient extends AbstractPostgresConnection<DatabaseClientListener> {
|
|
29
29
|
protected options: DatabaseClientOptions;
|
|
30
30
|
closed: boolean;
|
|
31
|
-
|
|
31
|
+
pool: pgwire.PgClient;
|
|
32
32
|
protected connections: ConnectionSlot[];
|
|
33
33
|
protected initialized: Promise<void>;
|
|
34
34
|
protected queue: DeferredPromise<ConnectionLease>[];
|
|
@@ -12,13 +12,23 @@ export const TRANSACTION_CONNECTION_COUNT = 5;
|
|
|
12
12
|
* which require being executed on the same connection.
|
|
13
13
|
*/
|
|
14
14
|
export class DatabaseClient extends AbstractPostgresConnection {
|
|
15
|
+
options;
|
|
16
|
+
closed;
|
|
17
|
+
pool;
|
|
18
|
+
connections;
|
|
19
|
+
initialized;
|
|
20
|
+
queue;
|
|
15
21
|
constructor(options) {
|
|
16
22
|
super();
|
|
17
23
|
this.options = options;
|
|
18
24
|
this.closed = false;
|
|
19
|
-
this.pool = pgwire.connectPgWirePool(options.config
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
this.pool = pgwire.connectPgWirePool(options.config, {
|
|
26
|
+
maxSize: options.config.max_pool_size
|
|
27
|
+
});
|
|
28
|
+
this.connections = Array.from({ length: TRANSACTION_CONNECTION_COUNT }, (v, index) => {
|
|
29
|
+
// Only listen to notifications on a single (the first) connection
|
|
30
|
+
const notificationChannels = index == 0 ? options.notificationChannels : [];
|
|
31
|
+
const slot = new ConnectionSlot({ config: options.config, notificationChannels });
|
|
22
32
|
slot.registerListener({
|
|
23
33
|
connectionAvailable: () => this.processConnectionQueue(),
|
|
24
34
|
connectionError: (ex) => this.handleConnectionError(ex),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseClient.js","sourceRoot":"","sources":["../../../src/db/connection/DatabaseClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,MAA2B,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAmB,cAAc,EAAwB,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAkB3D,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,OAAO,cAAe,SAAQ,0BAAkD;
|
|
1
|
+
{"version":3,"file":"DatabaseClient.js","sourceRoot":"","sources":["../../../src/db/connection/DatabaseClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { AbstractPostgresConnection } from './AbstractPostgresConnection.js';
|
|
|
3
3
|
* Provides helper functionality to transaction contexts given an existing PGWire connection
|
|
4
4
|
*/
|
|
5
5
|
export class WrappedConnection extends AbstractPostgresConnection {
|
|
6
|
+
baseConnection;
|
|
6
7
|
constructor(baseConnection) {
|
|
7
8
|
super();
|
|
8
9
|
this.baseConnection = baseConnection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WrappedConnection.js","sourceRoot":"","sources":["../../../src/db/connection/WrappedConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,0BAA0B;
|
|
1
|
+
{"version":3,"file":"WrappedConnection.js","sourceRoot":"","sources":["../../../src/db/connection/WrappedConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,0BAA0B;IACzC;IAAtB,YAAsB,cAAmC;QACvD,KAAK,EAAE,CAAC;QADY,mBAAc,GAAd,cAAc,CAAqB;IAEzD,CAAC;CACF"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as framework from '@powersync/lib-services-framework';
|
|
2
2
|
import { v4 as uuidv4 } from 'uuid';
|
|
3
3
|
import { sql } from '../db/db-index.js';
|
|
4
|
-
const DEFAULT_LOCK_TIMEOUT =
|
|
4
|
+
const DEFAULT_LOCK_TIMEOUT = 60_000; // 1 minute
|
|
5
5
|
export class PostgresLockManager extends framework.locks.AbstractLockManager {
|
|
6
|
+
params;
|
|
6
7
|
constructor(params) {
|
|
7
8
|
super(params);
|
|
8
9
|
this.params = params;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresLockManager.js","sourceRoot":"","sources":["../../src/locks/PostgresLockManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAkB,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,oBAAoB,GAAG,
|
|
1
|
+
{"version":3,"file":"PostgresLockManager.js","sourceRoot":"","sources":["../../src/locks/PostgresLockManager.ts"],"names":[],"mappings":"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"}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type * as jpgwire from '@powersync/service-jpgwire';
|
|
2
2
|
import * as t from 'ts-codec';
|
|
3
3
|
export interface NormalizedBasePostgresConnectionConfig extends jpgwire.NormalizedConnectionConfig {
|
|
4
|
+
max_pool_size: number;
|
|
4
5
|
}
|
|
5
6
|
export declare const POSTGRES_CONNECTION_TYPE: "postgresql";
|
|
6
7
|
export declare const BasePostgresConnectionConfig: t.ObjectCodec<{
|
|
@@ -33,6 +34,7 @@ export declare const BasePostgresConnectionConfig: t.ObjectCodec<{
|
|
|
33
34
|
* Prefix for the slot name. Defaults to "powersync_"
|
|
34
35
|
*/
|
|
35
36
|
slot_name_prefix: t.OptionalCodec<t.Codec<string, string, string, t.CodecProps>>;
|
|
37
|
+
max_pool_size: t.OptionalCodec<t.Codec<number, number, string, t.CodecProps>>;
|
|
36
38
|
}>;
|
|
37
39
|
export type BasePostgresConnectionConfig = t.Encoded<typeof BasePostgresConnectionConfig>;
|
|
38
40
|
export type BasePostgresConnectionConfigDecoded = t.Decoded<typeof BasePostgresConnectionConfig>;
|
|
@@ -55,6 +57,7 @@ export declare function normalizeConnectionConfig(options: BasePostgresConnectio
|
|
|
55
57
|
lookup: import("net").LookupFunction | undefined;
|
|
56
58
|
client_certificate: string | undefined;
|
|
57
59
|
client_private_key: string | undefined;
|
|
60
|
+
max_pool_size: number;
|
|
58
61
|
};
|
|
59
62
|
/**
|
|
60
63
|
* Check whether the port is in a "safe" range.
|
package/dist/types/types.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { makeHostnameLookupFunction } from '@powersync/lib-services-framework';
|
|
1
|
+
import { ErrorCode, makeHostnameLookupFunction, ServiceError } from '@powersync/lib-services-framework';
|
|
2
2
|
import * as service_types from '@powersync/service-types';
|
|
3
3
|
import * as t from 'ts-codec';
|
|
4
4
|
import * as urijs from 'uri-js';
|
|
@@ -32,7 +32,8 @@ export const BasePostgresConnectionConfig = t.object({
|
|
|
32
32
|
/**
|
|
33
33
|
* Prefix for the slot name. Defaults to "powersync_"
|
|
34
34
|
*/
|
|
35
|
-
slot_name_prefix: t.string.optional()
|
|
35
|
+
slot_name_prefix: t.string.optional(),
|
|
36
|
+
max_pool_size: t.number.optional()
|
|
36
37
|
});
|
|
37
38
|
/**
|
|
38
39
|
* Validate and normalize connection options.
|
|
@@ -44,7 +45,7 @@ export function normalizeConnectionConfig(options) {
|
|
|
44
45
|
if (options.uri) {
|
|
45
46
|
uri = urijs.parse(options.uri);
|
|
46
47
|
if (uri.scheme != 'postgresql' && uri.scheme != 'postgres') {
|
|
47
|
-
`Invalid URI - protocol must be postgresql, got ${uri.scheme}
|
|
48
|
+
throw new ServiceError(ErrorCode.PSYNC_S1109, `Invalid URI - protocol must be postgresql, got ${JSON.stringify(uri.scheme)}`);
|
|
48
49
|
}
|
|
49
50
|
else if (uri.scheme != 'postgresql') {
|
|
50
51
|
uri.scheme = 'postgresql';
|
|
@@ -62,19 +63,19 @@ export function normalizeConnectionConfig(options) {
|
|
|
62
63
|
const sslmode = options.sslmode ?? 'verify-full'; // Configuration not supported via URI
|
|
63
64
|
const cacert = options.cacert;
|
|
64
65
|
if (sslmode == 'verify-ca' && cacert == null) {
|
|
65
|
-
throw new
|
|
66
|
+
throw new ServiceError(ErrorCode.PSYNC_S1104, 'Postgres connection: Explicit cacert is required for `sslmode: verify-ca`');
|
|
66
67
|
}
|
|
67
68
|
if (hostname == '') {
|
|
68
|
-
throw new
|
|
69
|
+
throw new ServiceError(ErrorCode.PSYNC_S1106, `Postgres connection: hostname required`);
|
|
69
70
|
}
|
|
70
71
|
if (username == '') {
|
|
71
|
-
throw new
|
|
72
|
+
throw new ServiceError(ErrorCode.PSYNC_S1107, `Postgres connection: username required`);
|
|
72
73
|
}
|
|
73
74
|
if (password == '') {
|
|
74
|
-
throw new
|
|
75
|
+
throw new ServiceError(ErrorCode.PSYNC_S1108, `Postgres connection: password required`);
|
|
75
76
|
}
|
|
76
77
|
if (database == '') {
|
|
77
|
-
throw new
|
|
78
|
+
throw new ServiceError(ErrorCode.PSYNC_S1105, `Postgres connection: database required`);
|
|
78
79
|
}
|
|
79
80
|
const lookupOptions = { reject_ip_ranges: options.reject_ip_ranges ?? [] };
|
|
80
81
|
const lookup = makeHostnameLookupFunction(hostname, lookupOptions);
|
|
@@ -91,7 +92,8 @@ export function normalizeConnectionConfig(options) {
|
|
|
91
92
|
tls_servername: options.tls_servername ?? undefined,
|
|
92
93
|
lookup,
|
|
93
94
|
client_certificate: options.client_certificate ?? undefined,
|
|
94
|
-
client_private_key: options.client_private_key ?? undefined
|
|
95
|
+
client_private_key: options.client_private_key ?? undefined,
|
|
96
|
+
max_pool_size: options.max_pool_size ?? 8
|
|
95
97
|
};
|
|
96
98
|
}
|
|
97
99
|
/**
|
|
@@ -103,8 +105,8 @@ export function validatePort(port) {
|
|
|
103
105
|
if (typeof port == 'string') {
|
|
104
106
|
port = parseInt(port);
|
|
105
107
|
}
|
|
106
|
-
if (port < 1024) {
|
|
107
|
-
throw new
|
|
108
|
+
if (port < 1024 || port > 65535) {
|
|
109
|
+
throw new ServiceError(ErrorCode.PSYNC_S1110, `Port ${port} not supported`);
|
|
108
110
|
}
|
|
109
111
|
return port;
|
|
110
112
|
}
|
package/dist/types/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as pgwire from '@powersync/service-jpgwire';
|
|
2
|
+
export interface DecodedPostgresIdentifier {
|
|
3
|
+
server_id: string;
|
|
4
|
+
database_name: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const decodePostgresSystemIdentifier: (identifier: string) => DecodedPostgresIdentifier;
|
|
7
|
+
export declare const encodePostgresSystemIdentifier: (decoded: DecodedPostgresIdentifier) => string;
|
|
8
|
+
export declare const queryPostgresSystemIdentifier: (connection: pgwire.PgClient) => Promise<DecodedPostgresIdentifier>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as pgwire from '@powersync/service-jpgwire';
|
|
2
|
+
import { retriedQuery } from './pgwire_utils.js';
|
|
3
|
+
export const decodePostgresSystemIdentifier = (identifier) => {
|
|
4
|
+
const [server_id, database_name] = identifier.split('.');
|
|
5
|
+
return { server_id, database_name };
|
|
6
|
+
};
|
|
7
|
+
export const encodePostgresSystemIdentifier = (decoded) => {
|
|
8
|
+
return `${decoded.server_id}.${decoded.database_name}`;
|
|
9
|
+
};
|
|
10
|
+
export const queryPostgresSystemIdentifier = async (connection) => {
|
|
11
|
+
const result = pgwire.pgwireRows(await retriedQuery(connection,
|
|
12
|
+
/* sql */ `
|
|
13
|
+
SELECT
|
|
14
|
+
current_database() AS database_name,
|
|
15
|
+
system_identifier
|
|
16
|
+
FROM
|
|
17
|
+
pg_control_system();
|
|
18
|
+
`));
|
|
19
|
+
return {
|
|
20
|
+
database_name: result[0].database_name,
|
|
21
|
+
server_id: result[0].system_identifier.toString()
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=identifier-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifier-utils.js","sourceRoot":"","sources":["../../src/utils/identifier-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOjD,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,UAAkB,EAA6B,EAAE;IAC9F,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,OAAkC,EAAU,EAAE;IAC3F,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAChD,UAA2B,EACS,EAAE;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAC9B,MAAM,YAAY,CAChB,UAAU;IACV,SAAS,CAAC;;;;;;OAMT,CACF,CAC6D,CAAC;IAEjE,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa;QACtC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,EAAE;KAClD,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Adapted from https://github.com/kagis/pgwire/blob/0dc927f9f8990a903f238737326e53ba1c8d094f/mod.js#L2218
|
|
2
|
-
import { logger } from '@powersync/lib-services-framework';
|
|
2
|
+
import { logger, ServiceAssertionError } from '@powersync/lib-services-framework';
|
|
3
3
|
export function escapeIdentifier(identifier) {
|
|
4
4
|
return `"${identifier.replace(/"/g, '""').replace(/\./g, '"."')}"`;
|
|
5
5
|
}
|
|
@@ -25,7 +25,7 @@ export function autoParameter(arg) {
|
|
|
25
25
|
return { type: 'int8', value: arg };
|
|
26
26
|
}
|
|
27
27
|
else {
|
|
28
|
-
throw new
|
|
28
|
+
throw new ServiceAssertionError(`Unsupported query parameter: ${typeof arg}`);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pgwire_utils.js","sourceRoot":"","sources":["../../src/utils/pgwire_utils.ts"],"names":[],"mappings":"AAAA,0GAA0G;AAI1G,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"pgwire_utils.js","sourceRoot":"","sources":["../../src/utils/pgwire_utils.ts"],"names":[],"mappings":"AAAA,0GAA0G;AAI1G,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAElF,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAQ;IACpC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;SAAM,IAAI,OAAO,GAAG,IAAI,QAAQ,EAAE,CAAC;QAClC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACzC,CAAC;SAAM,IAAI,OAAO,GAAG,IAAI,QAAQ,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,GAAG,IAAI,SAAS,EAAE,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACtC,CAAC;SAAM,IAAI,OAAO,GAAG,IAAI,QAAQ,EAAE,CAAC;QAClC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,qBAAqB,CAAC,gCAAgC,OAAO,GAAG,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAKD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAmB,EAAE,GAAG,IAAW;IACpE,KAAK,IAAI,KAAK,GAAG,CAAC,GAAI,KAAK,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,CAAC;YACV,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils-index.js","sourceRoot":"","sources":["../../src/utils/utils-index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"utils-index.js","sourceRoot":"","sources":["../../src/utils/utils-index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@powersync/lib-service-postgres",
|
|
3
3
|
"repository": "https://github.com/powersync-ja/powersync-service",
|
|
4
4
|
"types": "dist/index.d.ts",
|
|
5
|
-
"version": "0.0.0-dev-
|
|
5
|
+
"version": "0.0.0-dev-20250227082606",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"license": "FSL-1.1-Apache-2.0",
|
|
8
8
|
"type": "module",
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
"ts-codec": "^1.3.0",
|
|
27
27
|
"uri-js": "^4.4.1",
|
|
28
28
|
"uuid": "^9.0.1",
|
|
29
|
-
"@powersync/lib-services-framework": "0.
|
|
30
|
-
"@powersync/service-jpgwire": "0.
|
|
31
|
-
"@powersync/service-types": "0.0.0-dev-
|
|
29
|
+
"@powersync/lib-services-framework": "0.5.3",
|
|
30
|
+
"@powersync/service-jpgwire": "0.19.0",
|
|
31
|
+
"@powersync/service-types": "0.0.0-dev-20250227082606"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/uuid": "^9.0.4"
|
|
@@ -7,9 +7,7 @@ export type DecodedSQLQueryExecutor<T extends t.Codec<any, any>> = {
|
|
|
7
7
|
rows: () => Promise<t.Decoded<T>[]>;
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
-
export abstract class AbstractPostgresConnection<
|
|
11
|
-
Listener extends framework.DisposableListener = framework.DisposableListener
|
|
12
|
-
> extends framework.DisposableObserver<Listener> {
|
|
10
|
+
export abstract class AbstractPostgresConnection<Listener = {}> extends framework.BaseObserver<Listener> {
|
|
13
11
|
protected abstract baseConnection: pgwire.PgClient;
|
|
14
12
|
|
|
15
13
|
stream(...args: pgwire.Statement[]): AsyncIterableIterator<pgwire.PgChunk> {
|