@powersync/service-jpgwire 0.18.4 → 0.19.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.
@@ -1,24 +1,10 @@
1
1
  // Fork of pgwire/index.js, customized to handle additional TLS options
2
2
  // Based on the version in commit 9532a395d6fa03a59c2231f0ec690806c90bd338
3
3
  // Modifications marked with `START POWERSYNC ...`
4
- import net from 'net';
5
- import tls from 'tls';
6
4
  import { createHash, pbkdf2 as _pbkdf2, randomFillSync } from 'crypto';
7
- import { once } from 'events';
8
5
  import { promisify } from 'util';
9
6
  import { _net, SaslScramSha256 } from 'pgwire/mod.js';
10
- import { recordBytesRead } from './metrics.js';
11
- // START POWERSYNC
12
- // pgwire doesn't natively support configuring timeouts, but we just hardcode a default.
13
- // Timeout idle connections after 6 minutes (we ping at least every 5 minutes).
14
- const POWERSYNC_SOCKET_DEFAULT_TIMEOUT = 360000;
15
- // Timeout for the initial connection (pre-TLS)
16
- // Must be less than the timeout for a HTTP request
17
- const POWERSYNC_SOCKET_CONNECT_TIMEOUT = 20000;
18
- // TCP keepalive delay in milliseconds.
19
- // This can help detect dead connections earlier.
20
- const POWERSYNC_SOCKET_KEEPALIVE_INITIAL_DELAY = 40000;
21
- // END POWERSYNC
7
+ import { SocketAdapter } from './socket_adapter.js';
22
8
  const pbkdf2 = promisify(_pbkdf2);
23
9
  Object.assign(SaslScramSha256.prototype, {
24
10
  _b64encode(bytes) {
@@ -39,8 +25,8 @@ Object.assign(SaslScramSha256.prototype, {
39
25
  }
40
26
  });
41
27
  Object.assign(_net, {
42
- connect({ hostname, port }) {
43
- return SocketAdapter.connect(hostname, port);
28
+ connect(options) {
29
+ return SocketAdapter.connect(options);
44
30
  },
45
31
  reconnectable(err) {
46
32
  return ['ENOTFOUND', 'ECONNREFUSED', 'ECONNRESET'].includes(err?.code);
@@ -60,124 +46,4 @@ Object.assign(_net, {
60
46
  return sockadapt.close();
61
47
  }
62
48
  });
63
- class SocketAdapter {
64
- static async connect(host, port) {
65
- // START POWERSYNC
66
- // Custom timeout handling
67
- const socket = net.connect({
68
- host,
69
- port,
70
- // This closes the connection if no data was sent or received for the given time,
71
- // even if the connection is still actaully alive.
72
- timeout: POWERSYNC_SOCKET_DEFAULT_TIMEOUT,
73
- // This configures TCP keepalive.
74
- keepAlive: true,
75
- keepAliveInitialDelay: POWERSYNC_SOCKET_KEEPALIVE_INITIAL_DELAY
76
- // Unfortunately it is not possible to set tcp_keepalive_intvl or
77
- // tcp_keepalive_probes here.
78
- });
79
- try {
80
- const timeout = setTimeout(() => {
81
- socket.destroy(new Error(`Timeout while connecting to ${host}:${port}`));
82
- }, POWERSYNC_SOCKET_CONNECT_TIMEOUT);
83
- await once(socket, 'connect');
84
- clearTimeout(timeout);
85
- return new this(socket);
86
- }
87
- catch (e) {
88
- socket.destroy();
89
- throw e;
90
- }
91
- // END POWERSYNC
92
- }
93
- constructor(socket) {
94
- this._readResume = Boolean; // noop
95
- this._writeResume = Boolean; // noop
96
- this._readPauseAsync = (resolve) => (this._readResume = resolve);
97
- this._writePauseAsync = (resolve) => (this._writeResume = resolve);
98
- this._error = null;
99
- /** @type {net.Socket} */
100
- this._socket = socket;
101
- this._socket.on('readable', (_) => this._readResume());
102
- this._socket.on('end', (_) => this._readResume());
103
- // START POWERSYNC
104
- // Custom timeout handling
105
- this._socket.on('timeout', (_) => {
106
- this._socket.destroy(new Error('Socket idle timeout'));
107
- });
108
- // END POWERSYNC
109
- this._socket.on('error', (error) => {
110
- this._error = error;
111
- this._readResume();
112
- this._writeResume();
113
- });
114
- }
115
- // START POWERSYNC CUSTOM TIMEOUT
116
- setTimeout(timeout) {
117
- this._socket.setTimeout(timeout);
118
- }
119
- // END POWERSYNC CUSTOM TIMEOUT
120
- async startTls(host, ca) {
121
- // START POWERSYNC CUSTOM OPTIONS HANDLING
122
- if (!Array.isArray(ca) && typeof ca[0] == 'object') {
123
- throw new Error('Invalid PowerSync TLS options');
124
- }
125
- const tlsOptions = ca[0];
126
- // https://nodejs.org/docs/latest-v14.x/api/tls.html#tls_tls_connect_options_callback
127
- const socket = this._socket;
128
- const tlsSocket = tls.connect({ socket, host, ...tlsOptions });
129
- // END POWERSYNC CUSTOM OPTIONS HANDLING
130
- await once(tlsSocket, 'secureConnect');
131
- // TODO check tlsSocket.authorized
132
- // if secure connection succeeded then we take underlying socket ownership,
133
- // otherwise underlying socket should be closed outside.
134
- tlsSocket.on('close', (_) => socket.destroy());
135
- return new this.constructor(tlsSocket);
136
- }
137
- /** @param {Uint8Array} out */
138
- async read(out) {
139
- let buf;
140
- for (;;) {
141
- if (this._error)
142
- throw this._error; // TODO callstack
143
- if (this._socket.readableEnded)
144
- return null;
145
- // POWERSYNC FIX: Read only as much data as available, instead of reading everything and
146
- // unshifting back onto the socket
147
- const toRead = Math.min(out.length, this._socket.readableLength);
148
- buf = this._socket.read(toRead);
149
- if (buf?.length)
150
- break;
151
- if (!buf)
152
- await new Promise(this._readPauseAsync);
153
- }
154
- if (buf.length > out.length) {
155
- throw new Error('Read more data than expected');
156
- }
157
- out.set(buf);
158
- // POWERSYNC: Add metrics
159
- recordBytesRead(buf.length);
160
- return buf.length;
161
- }
162
- async write(data) {
163
- // TODO assert Uint8Array
164
- // TODO need to copy data?
165
- if (this._error)
166
- throw this._error; // TODO callstack
167
- const p = new Promise(this._writePauseAsync);
168
- this._socket.write(data, this._writeResume);
169
- await p;
170
- if (this._error)
171
- throw this._error; // TODO callstack
172
- return data.length;
173
- }
174
- // async closeWrite() {
175
- // if (this._error) throw this._error; // TODO callstack
176
- // const socket_end = promisify(cb => this._socket.end(cb));
177
- // await socket_end();
178
- // }
179
- close() {
180
- this._socket.destroy(Error('socket destroyed'));
181
- }
182
- }
183
49
  //# sourceMappingURL=pgwire_node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pgwire_node.js","sourceRoot":"","sources":["../src/pgwire_node.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pgwire_node.js","sourceRoot":"","sources":["../src/pgwire_node.js"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,0EAA0E;AAC1E,kDAAkD;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AAElC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE;IACvC,UAAU,CAAC,KAAK;QACd,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACD,UAAU,CAAC,GAAG;QACZ,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,YAAY,CAAC,CAAC;QACZ,OAAO,cAAc,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,GAAG;QACb,OAAO,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU;QAC7B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9D,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;IAClB,OAAO,CAAC,OAAO;QACb,OAAO,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,aAAa,CAAC,GAAG;QACf,OAAO,CAAC,WAAW,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IACD,QAAQ,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;QACvC,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,CAAC,SAAS,EAAE,GAAG;QACjB,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,KAAK,CAAC,SAAS,EAAE,IAAI;QACnB,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,aAAa,CAAC,SAAS;QACrB,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,OAAO,SAAS,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
@@ -1,5 +1,3 @@
1
- import type { PgoutputRelation } from 'pgwire/mod.js';
2
- import { DatabaseInputRow } from '@powersync/service-sync-rules';
3
1
  export declare class PgType {
4
2
  static decode(text: string, typeOid: number): any;
5
3
  static _elemTypeOid(arrayTypeOid: number): 25 | 2950 | 1043 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 26 | 27 | 28 | 29 | 30 | 71 | 75 | 81 | 83 | 114 | 142 | 5069 | 600 | 601 | 602 | 603 | 604 | 628 | 700 | 701 | 705 | 718 | 790 | 829 | 869 | 650 | 774 | 1033 | 1042 | 1082 | 1083 | 1114 | 1184 | 1186 | 1266 | 1560 | 1562 | 1700 | 1790 | 2202 | 2203 | 2204 | 2205 | 4191 | 2206 | 4096 | 4089 | 3220 | 3614 | 3642 | 3615 | 3734 | 3769 | 3802 | 4072 | undefined;
@@ -7,8 +5,3 @@ export declare class PgType {
7
5
  static _decodeBytea(text: string): Uint8Array;
8
6
  static _encodeBytea(bytes: Uint8Array): string;
9
7
  }
10
- /**
11
- * We need a high level of control over how values are decoded, to make sure there is no loss
12
- * of precision in the process.
13
- */
14
- export declare function decodeTuple(relation: PgoutputRelation, tupleRaw: Record<string, any>): DatabaseInputRow;
@@ -1,6 +1,6 @@
1
1
  // Adapted from https://github.com/kagis/pgwire/blob/0dc927f9f8990a903f238737326e53ba1c8d094f/mod.js#L2218
2
- import { dateToSqlite, lsnMakeComparable, timestampToSqlite, timestamptzToSqlite } from './util.js';
3
2
  import { JsonContainer } from '@powersync/service-jsonbig';
3
+ import { dateToSqlite, lsnMakeComparable, timestampToSqlite, timestamptzToSqlite } from './util.js';
4
4
  export class PgType {
5
5
  static decode(text, typeOid) {
6
6
  switch (typeOid // add line here when register new type
@@ -235,22 +235,4 @@ export class PgType {
235
235
  return '\\x' + Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');
236
236
  }
237
237
  }
238
- /**
239
- * We need a high level of control over how values are decoded, to make sure there is no loss
240
- * of precision in the process.
241
- */
242
- export function decodeTuple(relation, tupleRaw) {
243
- let result = {};
244
- for (let columnName in tupleRaw) {
245
- const rawval = tupleRaw[columnName];
246
- const typeOid = relation._tupleDecoder._typeOids.get(columnName);
247
- if (typeof rawval == 'string' && typeOid) {
248
- result[columnName] = PgType.decode(rawval, typeOid);
249
- }
250
- else {
251
- result[columnName] = rawval;
252
- }
253
- }
254
- return result;
255
- }
256
238
  //# sourceMappingURL=pgwire_types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pgwire_types.js","sourceRoot":"","sources":["../src/pgwire_types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pgwire_types.js","sourceRoot":"","sources":["../src/pgwire_types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import net from 'node:net';
2
+ import tls from 'node:tls';
3
+ export interface ConnectOptions {
4
+ hostname: string;
5
+ port: number;
6
+ tlsOptions?: tls.ConnectionOptions | false;
7
+ lookup?: net.LookupFunction;
8
+ }
9
+ export declare class SocketAdapter {
10
+ private options;
11
+ static connect(options: ConnectOptions): Promise<SocketAdapter>;
12
+ _socket: net.Socket;
13
+ _error: Error | null;
14
+ constructor(socket: net.Socket, options: ConnectOptions);
15
+ _readResume: () => void;
16
+ _writeResume: () => void;
17
+ _readPauseAsync: (resolve: () => void) => void;
18
+ _writePauseAsync: (resolve: () => void) => void;
19
+ setTimeout(timeout: number): void;
20
+ startTls(host: string, ca: any): Promise<SocketAdapter>;
21
+ read(out: Uint8Array): Promise<any>;
22
+ write(data: Uint8Array): Promise<number>;
23
+ close(): void;
24
+ }
@@ -0,0 +1,137 @@
1
+ // Fork of pgwire/index.js, customized to handle additional TLS options
2
+ import { once } from 'node:events';
3
+ import net from 'node:net';
4
+ import tls from 'node:tls';
5
+ import { recordBytesRead } from './metrics.js';
6
+ // pgwire doesn't natively support configuring timeouts, but we just hardcode a default.
7
+ // Timeout idle connections after 6 minutes (we ping at least every 5 minutes).
8
+ const POWERSYNC_SOCKET_DEFAULT_TIMEOUT = 360000;
9
+ // Timeout for the initial connection (pre-TLS)
10
+ // Must be less than the timeout for a HTTP request
11
+ const POWERSYNC_SOCKET_CONNECT_TIMEOUT = 20000;
12
+ // TCP keepalive delay in milliseconds.
13
+ // This can help detect dead connections earlier.
14
+ const POWERSYNC_SOCKET_KEEPALIVE_INITIAL_DELAY = 40000;
15
+ export class SocketAdapter {
16
+ static async connect(options) {
17
+ // Custom timeout handling
18
+ const socket = net.connect({
19
+ host: options.hostname,
20
+ port: options.port,
21
+ lookup: options.lookup,
22
+ // This closes the connection if no data was sent or received for the given time,
23
+ // even if the connection is still actaully alive.
24
+ timeout: POWERSYNC_SOCKET_DEFAULT_TIMEOUT,
25
+ // This configures TCP keepalive.
26
+ keepAlive: true,
27
+ keepAliveInitialDelay: POWERSYNC_SOCKET_KEEPALIVE_INITIAL_DELAY
28
+ // Unfortunately it is not possible to set tcp_keepalive_intvl or
29
+ // tcp_keepalive_probes here.
30
+ });
31
+ try {
32
+ const timeout = setTimeout(() => {
33
+ socket.destroy(new Error(`Timeout while connecting to ${options.hostname}:${options.port}`));
34
+ }, POWERSYNC_SOCKET_CONNECT_TIMEOUT);
35
+ await once(socket, 'connect');
36
+ clearTimeout(timeout);
37
+ return new SocketAdapter(socket, options);
38
+ }
39
+ catch (e) {
40
+ socket.destroy();
41
+ throw e;
42
+ }
43
+ // END POWERSYNC
44
+ }
45
+ constructor(socket, options) {
46
+ this.options = options;
47
+ this._readResume = () => {
48
+ // noop
49
+ return;
50
+ };
51
+ this._writeResume = () => {
52
+ // noop
53
+ return;
54
+ };
55
+ this._readPauseAsync = (resolve) => {
56
+ this._readResume = resolve;
57
+ };
58
+ this._writePauseAsync = (resolve) => {
59
+ this._writeResume = resolve;
60
+ };
61
+ this._error = null;
62
+ this._socket = socket;
63
+ this._socket.on('readable', (_) => this._readResume());
64
+ this._socket.on('end', () => this._readResume());
65
+ // Custom timeout handling
66
+ this._socket.on('timeout', () => {
67
+ this._socket.destroy(new Error('Socket idle timeout'));
68
+ });
69
+ this._socket.on('error', (error) => {
70
+ this._error = error;
71
+ this._readResume();
72
+ this._writeResume();
73
+ });
74
+ }
75
+ setTimeout(timeout) {
76
+ this._socket.setTimeout(timeout);
77
+ }
78
+ async startTls(host, ca) {
79
+ // START POWERSYNC CUSTOM OPTIONS HANDLING
80
+ const tlsOptions = this.options.tlsOptions;
81
+ // https://nodejs.org/docs/latest-v14.x/api/tls.html#tls_tls_connect_options_callback
82
+ const socket = this._socket;
83
+ const tlsSocket = tls.connect({ socket, host, ...tlsOptions });
84
+ // END POWERSYNC CUSTOM OPTIONS HANDLING
85
+ await once(tlsSocket, 'secureConnect');
86
+ // TODO check tlsSocket.authorized
87
+ // if secure connection succeeded then we take underlying socket ownership,
88
+ // otherwise underlying socket should be closed outside.
89
+ tlsSocket.on('close', (_) => socket.destroy());
90
+ return new SocketAdapter(tlsSocket, this.options);
91
+ }
92
+ async read(out) {
93
+ let buf;
94
+ for (;;) {
95
+ if (this._error)
96
+ throw this._error; // TODO callstack
97
+ if (this._socket.readableEnded)
98
+ return null;
99
+ // POWERSYNC FIX: Read only as much data as available, instead of reading everything and
100
+ // unshifting back onto the socket
101
+ const toRead = Math.min(out.length, this._socket.readableLength);
102
+ buf = this._socket.read(toRead);
103
+ if (buf?.length)
104
+ break;
105
+ if (!buf)
106
+ await new Promise(this._readPauseAsync);
107
+ }
108
+ if (buf.length > out.length) {
109
+ throw new Error('Read more data than expected');
110
+ }
111
+ out.set(buf);
112
+ // POWERSYNC: Add metrics
113
+ recordBytesRead(buf.length);
114
+ return buf.length;
115
+ }
116
+ async write(data) {
117
+ // TODO assert Uint8Array
118
+ // TODO need to copy data?
119
+ if (this._error)
120
+ throw this._error; // TODO callstack
121
+ const p = new Promise(this._writePauseAsync);
122
+ this._socket.write(data, this._writeResume);
123
+ await p;
124
+ if (this._error)
125
+ throw this._error; // TODO callstack
126
+ return data.length;
127
+ }
128
+ // async closeWrite() {
129
+ // if (this._error) throw this._error; // TODO callstack
130
+ // const socket_end = promisify(cb => this._socket.end(cb));
131
+ // await socket_end();
132
+ // }
133
+ close() {
134
+ this._socket.destroy(Error('socket destroyed'));
135
+ }
136
+ }
137
+ //# sourceMappingURL=socket_adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket_adapter.js","sourceRoot":"","sources":["../src/socket_adapter.ts"],"names":[],"mappings":"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"}
package/dist/util.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import * as tls from 'tls';
1
+ import * as net from 'node:net';
2
+ import * as tls from 'node:tls';
2
3
  import * as pgwire from './pgwire.js';
3
4
  export interface NormalizedConnectionConfig {
4
5
  id: string;
@@ -10,6 +11,16 @@ export interface NormalizedConnectionConfig {
10
11
  password: string;
11
12
  sslmode: 'verify-full' | 'verify-ca' | 'disable';
12
13
  cacert: string | undefined;
14
+ /**
15
+ * Specify to use a servername for TLS that is different from hostname.
16
+ *
17
+ * Only relevant if sslmode = 'verify-full'.
18
+ */
19
+ tls_servername: string | undefined;
20
+ /**
21
+ * Hostname lookup function.
22
+ */
23
+ lookup?: net.LookupFunction;
13
24
  client_certificate: string | undefined;
14
25
  client_private_key: string | undefined;
15
26
  }
@@ -17,7 +28,7 @@ export interface PgWireConnectionOptions extends NormalizedConnectionConfig {
17
28
  resolved_ip?: string;
18
29
  }
19
30
  export declare function clientTlsOptions(options: PgWireConnectionOptions): tls.ConnectionOptions;
20
- export declare function tlsOptions(options: PgWireConnectionOptions): false | tls.ConnectionOptions;
31
+ export declare function makeTlsOptions(options: PgWireConnectionOptions): false | tls.ConnectionOptions;
21
32
  export declare function connectPgWire(config: PgWireConnectionOptions, options?: {
22
33
  type?: 'standard' | 'replication';
23
34
  }): Promise<pgwire.PgConnection>;
@@ -41,14 +52,6 @@ export interface PgPoolOptions {
41
52
  * The pool cannot be used for transactions, and cannot be used for logical replication.
42
53
  */
43
54
  export declare function connectPgWirePool(config: PgWireConnectionOptions, options?: PgPoolOptions): pgwire.PgClient;
44
- /**
45
- * Hack: sslrootcert is passed through as-is to pgwire_node.
46
- *
47
- * We use that to pass in custom TLS options, without having to modify pgwire itself.
48
- */
49
- export interface ExtendedPgwireOptions extends pgwire.PgConnectKnownOptions {
50
- sslrootcert?: false | tls.ConnectionOptions;
51
- }
52
55
  export declare function lsnMakeComparable(text: string): string;
53
56
  /**
54
57
  * Convert a postgres timestamptz to a SQLite-compatible/normalized timestamp.
package/dist/util.js CHANGED
@@ -1,7 +1,7 @@
1
+ import * as datefns from 'date-fns';
1
2
  import { DEFAULT_CERTS } from './certs.js';
2
3
  import * as pgwire from './pgwire.js';
3
4
  import { PgType } from './pgwire_types.js';
4
- import * as datefns from 'date-fns';
5
5
  export function clientTlsOptions(options) {
6
6
  if (options.client_certificate && options.client_private_key) {
7
7
  return {
@@ -13,7 +13,7 @@ export function clientTlsOptions(options) {
13
13
  return {};
14
14
  }
15
15
  }
16
- export function tlsOptions(options) {
16
+ export function makeTlsOptions(options) {
17
17
  if (options.sslmode == 'disable') {
18
18
  return false;
19
19
  }
@@ -26,7 +26,7 @@ export function tlsOptions(options) {
26
26
  // This may be different from the host we're connecting to if we pre-resolved
27
27
  // the IP.
28
28
  host: options.hostname,
29
- servername: options.hostname,
29
+ servername: options.tls_servername ?? options.hostname,
30
30
  ...clientTlsOptions(options)
31
31
  };
32
32
  }
@@ -60,18 +60,23 @@ export async function connectPgWire(config, options) {
60
60
  if (options?.type != 'standard') {
61
61
  connectionOptions.replication = 'database';
62
62
  }
63
+ let tlsOptions = false;
63
64
  if (config.sslmode != 'disable') {
64
65
  connectionOptions.sslmode = 'require';
65
- // HACK: Not standard pgwire options
66
- // Just the easiest way to pass on our config to pgwire_node.js
67
- connectionOptions.sslrootcert = tlsOptions(config);
66
+ tlsOptions = makeTlsOptions(config);
68
67
  }
69
68
  else {
70
69
  connectionOptions.sslmode = 'disable';
71
70
  }
72
- const connection = await pgwire.pgconnect(connectionOptions);
71
+ const connection = pgwire.pgconnection(connectionOptions);
72
+ // HACK: Not standard pgwire options
73
+ // Just the easiest way to pass on our config to SocketAdapter
74
+ const connectOptions = connection._connectOptions;
75
+ connectOptions.tlsOptions = tlsOptions;
76
+ connectOptions.lookup = config.lookup;
73
77
  // HACK: Replace row decoding with our own implementation
74
78
  connection._recvDataRow = _recvDataRow;
79
+ await connection.start();
75
80
  return connection;
76
81
  }
77
82
  function _recvDataRow(_message, row, batch) {
@@ -109,11 +114,10 @@ export function connectPgWirePool(config, options) {
109
114
  _poolSize: maxSize,
110
115
  _poolIdleTimeout: idleTimeout
111
116
  };
117
+ let tlsOptions = false;
112
118
  if (config.sslmode != 'disable') {
113
119
  connectionOptions.sslmode = 'require';
114
- // HACK: Not standard pgwire options
115
- // Just the easiest way to pass on our config to pgwire_node.js
116
- connectionOptions.sslrootcert = tlsOptions(config);
120
+ tlsOptions = makeTlsOptions(config);
117
121
  }
118
122
  else {
119
123
  connectionOptions.sslmode = 'disable';
@@ -122,6 +126,9 @@ export function connectPgWirePool(config, options) {
122
126
  const originalGetConnection = pool._getConnection;
123
127
  pool._getConnection = function () {
124
128
  const con = originalGetConnection.call(this);
129
+ const connectOptions = con._connectOptions;
130
+ connectOptions.tlsOptions = tlsOptions;
131
+ connectOptions.lookup = config.lookup;
125
132
  // HACK: Replace row decoding with our own implementation
126
133
  con._recvDataRow = _recvDataRow;
127
134
  return con;
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
- "version": "0.18.4",
8
+ "version": "0.19.0",
9
9
  "main": "dist/index.js",
10
10
  "license": "FSL-1.1-Apache-2.0",
11
11
  "files": [
@@ -16,9 +16,7 @@
16
16
  "dependencies": {
17
17
  "date-fns": "^4.1.0",
18
18
  "pgwire": "github:kagis/pgwire#f1cb95f9a0f42a612bb5a6b67bb2eb793fc5fc87",
19
- "@powersync/service-jsonbig": "^0.17.10",
20
- "@powersync/service-types": "^0.6.0",
21
- "@powersync/service-sync-rules": "^0.23.0"
19
+ "@powersync/service-jsonbig": "^0.17.10"
22
20
  },
23
21
  "scripts": {
24
22
  "clean": "rm -r ./dist && tsc -b --clean",