@tickernelz/paperclip-pro-db 2026.930.4 → 2026.930.6
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/node_modules/pg/lib/client.js +18 -0
- package/node_modules/pg/lib/connection.js +8 -1
- package/node_modules/pg/lib/crypto/cert-signatures.js +1 -1
- package/node_modules/pg/lib/native/client.js +11 -3
- package/node_modules/pg/lib/native/query.js +3 -1
- package/node_modules/pg/lib/query.js +5 -1
- package/node_modules/pg/lib/utils.js +19 -1
- package/node_modules/pg/package.json +5 -5
- package/node_modules/pg-cloudflare/dist/index.d.ts +3 -5
- package/node_modules/pg-cloudflare/dist/index.js +23 -6
- package/node_modules/pg-cloudflare/dist/index.js.map +1 -1
- package/node_modules/pg-cloudflare/package.json +2 -2
- package/node_modules/pg-cloudflare/src/index.ts +32 -14
- package/node_modules/pg-connection-string/index.js +1 -1
- package/node_modules/pg-connection-string/package.json +2 -3
- package/node_modules/pg-protocol/dist/buffer-writer.d.ts +5 -1
- package/node_modules/pg-protocol/dist/buffer-writer.js +10 -1
- package/node_modules/pg-protocol/dist/buffer-writer.js.map +1 -1
- package/node_modules/pg-protocol/dist/serializer.js +20 -18
- package/node_modules/pg-protocol/dist/serializer.js.map +1 -1
- package/node_modules/pg-protocol/package.json +2 -2
- package/node_modules/pg-protocol/src/buffer-writer.ts +12 -2
- package/node_modules/pg-protocol/src/serializer.ts +26 -20
- package/package.json +2 -2
|
@@ -744,6 +744,24 @@ class Client extends EventEmitter {
|
|
|
744
744
|
query._result._types = this._types
|
|
745
745
|
}
|
|
746
746
|
|
|
747
|
+
// A query that keeps a portal open across round trips cannot share a pipelined connection: the
|
|
748
|
+
// queries written behind it are answered out of its portal, so rows land on the wrong query and
|
|
749
|
+
// the reads that follow fail with 'portal does not exist'. Refuse it instead of corrupting.
|
|
750
|
+
if (this.pipeline) {
|
|
751
|
+
const portalQuery =
|
|
752
|
+
typeof config.submit === 'function' && !(query instanceof Query)
|
|
753
|
+
? 'Custom query classes such as pg-cursor and pg-query-stream are'
|
|
754
|
+
: query.rows
|
|
755
|
+
? 'The `rows` option is'
|
|
756
|
+
: null
|
|
757
|
+
if (portalQuery) {
|
|
758
|
+
process.nextTick(() => {
|
|
759
|
+
query.handleError(new Error(`${portalQuery} not supported in pipeline mode`), this.connection)
|
|
760
|
+
})
|
|
761
|
+
return result
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
|
|
747
765
|
if (!this._queryable) {
|
|
748
766
|
process.nextTick(() => {
|
|
749
767
|
query.handleError(new Error('Client has encountered a connection error and is not queryable'), this.connection)
|
|
@@ -97,6 +97,11 @@ class Connection extends EventEmitter {
|
|
|
97
97
|
const self = this
|
|
98
98
|
const options = {
|
|
99
99
|
socket: self.stream,
|
|
100
|
+
// tls.connect checks the server identity against `servername`, falling
|
|
101
|
+
// back to `host` and then to 'localhost'. `servername` must stay unset
|
|
102
|
+
// for IP addresses (see below), so `host` is needed to keep certificate
|
|
103
|
+
// validation working when connecting to an IP address.
|
|
104
|
+
host,
|
|
100
105
|
}
|
|
101
106
|
|
|
102
107
|
if (self.ssl !== true) {
|
|
@@ -113,6 +118,7 @@ class Connection extends EventEmitter {
|
|
|
113
118
|
options.ALPNProtocols = ['postgresql']
|
|
114
119
|
}
|
|
115
120
|
|
|
121
|
+
// SNI must not be set to an IP address (RFC 6066 section 3)
|
|
116
122
|
const net = require('net')
|
|
117
123
|
if (net.isIP && net.isIP(host) === 0) {
|
|
118
124
|
options.servername = host
|
|
@@ -195,7 +201,8 @@ class Connection extends EventEmitter {
|
|
|
195
201
|
}
|
|
196
202
|
|
|
197
203
|
sync() {
|
|
198
|
-
|
|
204
|
+
// Sync is the extended-query protocol barrier, not a disconnect.
|
|
205
|
+
// Only end()/Terminate (and connect-timeout teardown) should set _ending.
|
|
199
206
|
this._send(syncBuffer)
|
|
200
207
|
}
|
|
201
208
|
|
|
@@ -107,7 +107,7 @@ function signatureAlgorithmHashFromCertificate(data, index) {
|
|
|
107
107
|
}
|
|
108
108
|
throw x509Error('unknown hash OID ' + hashOID, data)
|
|
109
109
|
}
|
|
110
|
-
// Ed25519 -- see https
|
|
110
|
+
// Ed25519 -- see https://github.com/openssl/openssl/issues/15477
|
|
111
111
|
case '1.3.101.110':
|
|
112
112
|
case '1.3.101.112': // ph
|
|
113
113
|
return 'SHA-512'
|
|
@@ -337,7 +337,7 @@ Client.prototype._pulsePipelinedQueryQueue = function () {
|
|
|
337
337
|
nativeQueries.push(query)
|
|
338
338
|
|
|
339
339
|
const values = query.values ? query.values.map(utils.prepareValue) : null
|
|
340
|
-
const pipelineEntry = { text: query.text, name: query.name }
|
|
340
|
+
const pipelineEntry = { text: query.text, name: query.name, arrayMode: query._arrayMode }
|
|
341
341
|
if (values) {
|
|
342
342
|
pipelineEntry.values = values
|
|
343
343
|
}
|
|
@@ -351,13 +351,21 @@ Client.prototype._pulsePipelinedQueryQueue = function () {
|
|
|
351
351
|
self._pipelineInFlight = false
|
|
352
352
|
|
|
353
353
|
if (err) {
|
|
354
|
-
// Total pipeline failure
|
|
354
|
+
// Total pipeline failure. Per-query errors arrive on results[i].err, so reaching here means
|
|
355
|
+
// the connection itself is gone: mark it unusable and say so, the way the JS client and the
|
|
356
|
+
// non-pipelined native path both do. Without this the client looks healthy after losing its
|
|
357
|
+
// backend, a Pool never discards it, and everything routed to it fails one query at a time
|
|
358
|
+
// for the life of the process.
|
|
359
|
+
self._connected = false
|
|
360
|
+
self._queryable = false
|
|
355
361
|
for (let i = 0; i < nativeQueries.length; i++) {
|
|
356
362
|
const q = nativeQueries[i]
|
|
357
363
|
q.native = self.native
|
|
358
364
|
q.handleError(err)
|
|
359
365
|
}
|
|
360
|
-
self.
|
|
366
|
+
self._errorAllQueries(err)
|
|
367
|
+
self.emit('error', err)
|
|
368
|
+
self.emit('end')
|
|
361
369
|
return
|
|
362
370
|
}
|
|
363
371
|
|
|
@@ -35,6 +35,8 @@ const errorFieldMap = {
|
|
|
35
35
|
sqlState: 'code',
|
|
36
36
|
statementPosition: 'position',
|
|
37
37
|
messagePrimary: 'message',
|
|
38
|
+
messageDetail: 'detail',
|
|
39
|
+
messageHint: 'hint',
|
|
38
40
|
context: 'where',
|
|
39
41
|
schemaName: 'schema',
|
|
40
42
|
tableName: 'table',
|
|
@@ -137,7 +139,7 @@ NativeQuery.prototype.submit = function (client) {
|
|
|
137
139
|
|
|
138
140
|
// check if the client has already executed this named query
|
|
139
141
|
// if so...just execute it again - skip the planning phase
|
|
140
|
-
if (client.namedQueries[this.name]) {
|
|
142
|
+
if (client.namedQueries[this.name] !== undefined) {
|
|
141
143
|
if (this.text && client.namedQueries[this.name] !== this.text) {
|
|
142
144
|
const err = new Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`)
|
|
143
145
|
return after(err)
|
|
@@ -183,7 +183,11 @@ class Query extends EventEmitter {
|
|
|
183
183
|
}
|
|
184
184
|
|
|
185
185
|
hasBeenParsed(connection) {
|
|
186
|
-
return
|
|
186
|
+
return (
|
|
187
|
+
this.name &&
|
|
188
|
+
(connection.parsedStatements[this.name] !== undefined ||
|
|
189
|
+
connection.submittedNamedStatements[this.name] !== undefined)
|
|
190
|
+
)
|
|
187
191
|
}
|
|
188
192
|
|
|
189
193
|
handlePortalSuspended(connection) {
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const defaults = require('./defaults')
|
|
4
|
+
const nodeUtils = require('util')
|
|
4
5
|
|
|
5
6
|
const { isDate } = require('util/types')
|
|
6
7
|
|
|
8
|
+
const invalidDateDeprecationNotice = nodeUtils.deprecate(
|
|
9
|
+
() => {},
|
|
10
|
+
'Sending an invalid date to Postgres is deprecated and will throw an error in the next major version of pg. Ensure any Date object passed as a query parameter is valid.',
|
|
11
|
+
'PG_INVALID_DATE'
|
|
12
|
+
)
|
|
13
|
+
|
|
7
14
|
function escapeElement(elementRepresentation) {
|
|
8
15
|
const escaped = elementRepresentation.replace(/\\/g, '\\\\').replace(/"/g, '\\"')
|
|
9
16
|
|
|
@@ -54,6 +61,9 @@ const prepareValue = function (val, seen) {
|
|
|
54
61
|
return Buffer.from(val.buffer, val.byteOffset, val.byteLength)
|
|
55
62
|
}
|
|
56
63
|
if (isDate(val)) {
|
|
64
|
+
if (isNaN(val.getTime())) {
|
|
65
|
+
invalidDateDeprecationNotice()
|
|
66
|
+
}
|
|
57
67
|
if (defaults.parseInputDatesAsUTC) {
|
|
58
68
|
return dateToStringUTC(val)
|
|
59
69
|
} else {
|
|
@@ -143,7 +153,8 @@ function dateToStringUTC(date) {
|
|
|
143
153
|
|
|
144
154
|
function normalizeQueryConfig(config, values, callback) {
|
|
145
155
|
// can take in strings or config objects
|
|
146
|
-
|
|
156
|
+
// Copy config so normalization does not mutate the caller's object.
|
|
157
|
+
config = typeof config === 'string' ? { text: config } : cloneQueryConfig(config)
|
|
147
158
|
if (values) {
|
|
148
159
|
if (typeof values === 'function') {
|
|
149
160
|
config.callback = values
|
|
@@ -157,6 +168,13 @@ function normalizeQueryConfig(config, values, callback) {
|
|
|
157
168
|
return config
|
|
158
169
|
}
|
|
159
170
|
|
|
171
|
+
function cloneQueryConfig(config) {
|
|
172
|
+
if (config == null) {
|
|
173
|
+
return config
|
|
174
|
+
}
|
|
175
|
+
return Object.defineProperties(Object.create(Object.getPrototypeOf(config)), Object.getOwnPropertyDescriptors(config))
|
|
176
|
+
}
|
|
177
|
+
|
|
160
178
|
// Ported from PostgreSQL 9.2.4 source code in src/interfaces/libpq/fe-exec.c
|
|
161
179
|
const escapeIdentifier = function (str) {
|
|
162
180
|
return '"' + str.replace(/"/g, '""') + '"'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pg",
|
|
3
|
-
"version": "8.23.
|
|
3
|
+
"version": "8.23.1",
|
|
4
4
|
"description": "PostgreSQL client - pure javascript & libpq with the same API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"database",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"./lib/*.js": "./lib/*.js"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"pg-connection-string": "^2.14.
|
|
35
|
+
"pg-connection-string": "^2.14.1",
|
|
36
36
|
"pg-pool": "^3.14.0",
|
|
37
|
-
"pg-protocol": "^1.16.
|
|
37
|
+
"pg-protocol": "^1.16.1",
|
|
38
38
|
"pg-types": "2.2.0",
|
|
39
39
|
"pgpass": "1.0.5"
|
|
40
40
|
},
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"wrangler": "^3.x"
|
|
51
51
|
},
|
|
52
52
|
"optionalDependencies": {
|
|
53
|
-
"pg-cloudflare": "^1.4.
|
|
53
|
+
"pg-cloudflare": "^1.4.1"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
56
|
"pg-native": ">=3.0.1"
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"engines": {
|
|
73
73
|
"node": ">= 16.0.0"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "0980cefebe0ae461da8883703be049fe13ca96cf"
|
|
76
76
|
}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
/// <reference types="node" />
|
|
4
1
|
import { TlsOptions } from 'cloudflare:sockets';
|
|
5
2
|
import { EventEmitter } from 'events';
|
|
6
3
|
/**
|
|
@@ -23,8 +20,9 @@ export declare class CloudflareSocket extends EventEmitter {
|
|
|
23
20
|
connect(port: number, host: string, connectListener?: (...args: unknown[]) => void): Promise<this | undefined>;
|
|
24
21
|
_listen(): Promise<void>;
|
|
25
22
|
_listenOnce(): Promise<void>;
|
|
26
|
-
write(data: Uint8Array | string,
|
|
27
|
-
|
|
23
|
+
write(data: Uint8Array | string, callback?: (error?: unknown) => void): true | void;
|
|
24
|
+
write(data: Uint8Array | string, encoding?: BufferEncoding, callback?: (error?: unknown) => void): true | void;
|
|
25
|
+
end(data?: Buffer<ArrayBuffer>, encoding?: BufferEncoding, callback?: (...args: unknown[]) => void): this;
|
|
28
26
|
destroy(reason: string): this;
|
|
29
27
|
startTls(options: TlsOptions): void;
|
|
30
28
|
_addClosedHandler(): void;
|
|
@@ -76,7 +76,10 @@ class CloudflareSocket extends events_1.EventEmitter {
|
|
|
76
76
|
log('First CF socket received:', done, value);
|
|
77
77
|
this.emit('data', Buffer.from(value));
|
|
78
78
|
}
|
|
79
|
-
write(data,
|
|
79
|
+
write(data, encodingOrCallback = 'utf8', callback = () => { }) {
|
|
80
|
+
const encoding = typeof encodingOrCallback === 'function' ? 'utf8' : encodingOrCallback;
|
|
81
|
+
if (typeof encodingOrCallback === 'function')
|
|
82
|
+
callback = encodingOrCallback;
|
|
80
83
|
if (data.length === 0)
|
|
81
84
|
return callback();
|
|
82
85
|
if (typeof data === 'string')
|
|
@@ -94,7 +97,16 @@ class CloudflareSocket extends events_1.EventEmitter {
|
|
|
94
97
|
end(data = Buffer.alloc(0), encoding = 'utf8', callback = () => { }) {
|
|
95
98
|
log('ending CF socket');
|
|
96
99
|
this.write(data, encoding, (err) => {
|
|
97
|
-
this._cfSocket
|
|
100
|
+
const socket = this._cfSocket;
|
|
101
|
+
const closePromise = socket?.close();
|
|
102
|
+
closePromise
|
|
103
|
+
?.then(() => {
|
|
104
|
+
if (this._cfSocket === socket) {
|
|
105
|
+
this._cfSocket = null;
|
|
106
|
+
this.emit('close');
|
|
107
|
+
}
|
|
108
|
+
})
|
|
109
|
+
.catch((e) => this.emit('error', e));
|
|
98
110
|
if (callback)
|
|
99
111
|
callback(err);
|
|
100
112
|
});
|
|
@@ -121,17 +133,22 @@ class CloudflareSocket extends events_1.EventEmitter {
|
|
|
121
133
|
this._listen().catch((e) => this.emit('error', e));
|
|
122
134
|
}
|
|
123
135
|
_addClosedHandler() {
|
|
124
|
-
this._cfSocket
|
|
136
|
+
const socket = this._cfSocket;
|
|
137
|
+
socket.closed
|
|
138
|
+
.then(() => {
|
|
125
139
|
if (!this._upgrading) {
|
|
126
140
|
log('CF socket closed');
|
|
127
|
-
this._cfSocket
|
|
128
|
-
|
|
141
|
+
if (this._cfSocket === socket) {
|
|
142
|
+
this._cfSocket = null;
|
|
143
|
+
this.emit('close');
|
|
144
|
+
}
|
|
129
145
|
}
|
|
130
146
|
else {
|
|
131
147
|
this._upgrading = false;
|
|
132
148
|
this._upgraded = true;
|
|
133
149
|
}
|
|
134
|
-
})
|
|
150
|
+
})
|
|
151
|
+
.catch((e) => this.emit('error', e));
|
|
135
152
|
}
|
|
136
153
|
}
|
|
137
154
|
exports.CloudflareSocket = CloudflareSocket;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,mCAAqC;AAErC;;GAEG;AACH,MAAa,gBAAiB,SAAQ,qBAAY;IAUhD,YAAqB,GAAY;QAC/B,KAAK,EAAE,CAAA;QADY,QAAG,GAAH,GAAG,CAAS;QATjC,aAAQ,GAAG,KAAK,CAAA;QAChB,cAAS,GAAG,KAAK,CAAA;QAET,eAAU,GAAG,KAAK,CAAA;QAClB,cAAS,GAAG,KAAK,CAAA;QACjB,cAAS,GAAkB,IAAI,CAAA;QAC/B,cAAS,GAAuC,IAAI,CAAA;QACpD,cAAS,GAAuC,IAAI,CAAA;IAI5D,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAA;IACb,CAAC;IACD,YAAY;QACV,OAAO,IAAI,CAAA;IACb,CAAC;IACD,GAAG;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,IAAY,EAAE,eAA8C;QACtF,IAAI;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pg-cloudflare",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "A socket implementation that can run on Cloudflare Workers using native TCP connections.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"/src",
|
|
36
36
|
"/esm"
|
|
37
37
|
],
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "0980cefebe0ae461da8883703be049fe13ca96cf"
|
|
39
39
|
}
|
|
@@ -82,11 +82,15 @@ export class CloudflareSocket extends EventEmitter {
|
|
|
82
82
|
this.emit('data', Buffer.from(value))
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
write(data: Uint8Array | string, callback?: (error?: unknown) => void): true | void
|
|
86
|
+
write(data: Uint8Array | string, encoding?: BufferEncoding, callback?: (error?: unknown) => void): true | void
|
|
85
87
|
write(
|
|
86
88
|
data: Uint8Array | string,
|
|
87
|
-
|
|
88
|
-
callback: (
|
|
89
|
-
) {
|
|
89
|
+
encodingOrCallback: BufferEncoding | ((error?: unknown) => void) = 'utf8',
|
|
90
|
+
callback: (error?: unknown) => void = () => {}
|
|
91
|
+
): true | void {
|
|
92
|
+
const encoding = typeof encodingOrCallback === 'function' ? 'utf8' : encodingOrCallback
|
|
93
|
+
if (typeof encodingOrCallback === 'function') callback = encodingOrCallback
|
|
90
94
|
if (data.length === 0) return callback()
|
|
91
95
|
if (typeof data === 'string') data = Buffer.from(data, encoding)
|
|
92
96
|
|
|
@@ -107,7 +111,16 @@ export class CloudflareSocket extends EventEmitter {
|
|
|
107
111
|
end(data = Buffer.alloc(0), encoding: BufferEncoding = 'utf8', callback: (...args: unknown[]) => void = () => {}) {
|
|
108
112
|
log('ending CF socket')
|
|
109
113
|
this.write(data, encoding, (err) => {
|
|
110
|
-
this._cfSocket
|
|
114
|
+
const socket = this._cfSocket
|
|
115
|
+
const closePromise = socket?.close()
|
|
116
|
+
closePromise
|
|
117
|
+
?.then(() => {
|
|
118
|
+
if (this._cfSocket === socket) {
|
|
119
|
+
this._cfSocket = null
|
|
120
|
+
this.emit('close')
|
|
121
|
+
}
|
|
122
|
+
})
|
|
123
|
+
.catch((e) => this.emit('error', e))
|
|
111
124
|
if (callback) callback(err)
|
|
112
125
|
})
|
|
113
126
|
return this
|
|
@@ -136,16 +149,21 @@ export class CloudflareSocket extends EventEmitter {
|
|
|
136
149
|
}
|
|
137
150
|
|
|
138
151
|
_addClosedHandler() {
|
|
139
|
-
this._cfSocket
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
this.
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
152
|
+
const socket = this._cfSocket!
|
|
153
|
+
socket.closed
|
|
154
|
+
.then(() => {
|
|
155
|
+
if (!this._upgrading) {
|
|
156
|
+
log('CF socket closed')
|
|
157
|
+
if (this._cfSocket === socket) {
|
|
158
|
+
this._cfSocket = null
|
|
159
|
+
this.emit('close')
|
|
160
|
+
}
|
|
161
|
+
} else {
|
|
162
|
+
this._upgrading = false
|
|
163
|
+
this._upgraded = true
|
|
164
|
+
}
|
|
165
|
+
})
|
|
166
|
+
.catch((e) => this.emit('error', e))
|
|
149
167
|
}
|
|
150
168
|
}
|
|
151
169
|
|
|
@@ -50,7 +50,7 @@ function parse(str, options = {}) {
|
|
|
50
50
|
config.client_encoding = result.searchParams.get('encoding')
|
|
51
51
|
return config
|
|
52
52
|
}
|
|
53
|
-
const hostname = dummyHost ? '' : result.hostname
|
|
53
|
+
const hostname = (dummyHost ? '' : result.hostname).replace(/^\[(.+)\]$/, '$1')
|
|
54
54
|
if (!config.host) {
|
|
55
55
|
// Only set the host if there is no equivalent query param.
|
|
56
56
|
config.host = decodeURIComponent(hostname)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pg-connection-string",
|
|
3
|
-
"version": "2.14.
|
|
3
|
+
"version": "2.14.1",
|
|
4
4
|
"description": "Functions for dealing with a PostgreSQL connection string",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"types": "./index.d.ts",
|
|
@@ -37,7 +37,6 @@
|
|
|
37
37
|
"@types/pg": "^8.12.0",
|
|
38
38
|
"chai": "^4.1.1",
|
|
39
39
|
"coveralls": "^3.0.4",
|
|
40
|
-
"istanbul": "^0.4.5",
|
|
41
40
|
"mocha": "^11.7.5",
|
|
42
41
|
"nyc": "^15",
|
|
43
42
|
"tsx": "^4.19.4",
|
|
@@ -48,5 +47,5 @@
|
|
|
48
47
|
"index.d.ts",
|
|
49
48
|
"esm"
|
|
50
49
|
],
|
|
51
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "0980cefebe0ae461da8883703be049fe13ca96cf"
|
|
52
51
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare class Writer {
|
|
2
2
|
private size;
|
|
3
|
-
|
|
3
|
+
buffer: Buffer;
|
|
4
4
|
private offset;
|
|
5
5
|
private headerPosition;
|
|
6
6
|
constructor(size?: number);
|
|
@@ -11,6 +11,10 @@ export declare class Writer {
|
|
|
11
11
|
addString(string?: string): Writer;
|
|
12
12
|
addInt32PrefixedString(string: string): Writer;
|
|
13
13
|
add(otherBuffer: Buffer): Writer;
|
|
14
|
+
/**
|
|
15
|
+
* Appends an uninitialized block of {@link size} bytes to the buffer and returns its offset.
|
|
16
|
+
*/
|
|
17
|
+
reserveUnsafe(size: number): number;
|
|
14
18
|
private join;
|
|
15
19
|
flush(code?: number): Buffer;
|
|
16
20
|
clear(): void;
|
|
@@ -17,7 +17,7 @@ class Writer {
|
|
|
17
17
|
// https://stackoverflow.com/questions/2269063/buffer-growth-strategy
|
|
18
18
|
const newSize = oldBuffer.length + (oldBuffer.length >> 1) + size;
|
|
19
19
|
this.buffer = Buffer.allocUnsafe(newSize);
|
|
20
|
-
oldBuffer.copy(this.buffer);
|
|
20
|
+
oldBuffer.copy(this.buffer, 0, 0, this.offset);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
addInt32(num) {
|
|
@@ -79,6 +79,15 @@ class Writer {
|
|
|
79
79
|
this.offset += otherBuffer.length;
|
|
80
80
|
return this;
|
|
81
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Appends an uninitialized block of {@link size} bytes to the buffer and returns its offset.
|
|
84
|
+
*/
|
|
85
|
+
reserveUnsafe(size) {
|
|
86
|
+
const offset = this.offset;
|
|
87
|
+
this.ensure(size);
|
|
88
|
+
this.offset += size;
|
|
89
|
+
return offset;
|
|
90
|
+
}
|
|
82
91
|
join(code) {
|
|
83
92
|
if (code) {
|
|
84
93
|
this.buffer[this.headerPosition] = code;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer-writer.js","sourceRoot":"","sources":["../src/buffer-writer.ts"],"names":[],"mappings":";AAAA,uFAAuF;;;AAEvF,MAAa,MAAM;IAIjB,YAAoB,OAAO,GAAG;QAAV,SAAI,GAAJ,IAAI,CAAM;QAFtB,WAAM,GAAW,CAAC,CAAA;QAClB,mBAAc,GAAW,CAAC,CAAA;QAEhC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC;IAEO,MAAM,CAAC,IAAY;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAClD,IAAI,SAAS,GAAG,IAAI,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAA;YAC7B,4CAA4C;YAC5C,qEAAqE;YACrE,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;YACjE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YACzC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"buffer-writer.js","sourceRoot":"","sources":["../src/buffer-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,29 +59,29 @@ const parse = (query) => {
|
|
|
59
59
|
}
|
|
60
60
|
return writer.flush(80 /* code.parse */);
|
|
61
61
|
};
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
for (let i = 0; i <
|
|
62
|
+
const writeValues = function (values, valueMapper, formatsOffset) {
|
|
63
|
+
const len = values.length;
|
|
64
|
+
for (let i = 0; i < len; i++) {
|
|
65
65
|
const mappedVal = valueMapper ? valueMapper(values[i], i) : values[i];
|
|
66
|
+
let formatByte = 0 /* ParamType.STRING */;
|
|
66
67
|
if (mappedVal == null) {
|
|
67
|
-
//
|
|
68
|
-
writer.
|
|
69
|
-
// write -1 to the param writer to indicate null
|
|
70
|
-
paramWriter.addInt32(-1);
|
|
68
|
+
// write -1 to indicate null
|
|
69
|
+
writer.addInt32(-1);
|
|
71
70
|
}
|
|
72
71
|
else if (mappedVal instanceof Buffer) {
|
|
73
|
-
|
|
74
|
-
writer.addInt16(1 /* ParamType.BINARY */);
|
|
72
|
+
formatByte = 1 /* ParamType.BINARY */;
|
|
75
73
|
// add the buffer to the param writer
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
writer.addInt32(mappedVal.length);
|
|
75
|
+
writer.add(mappedVal);
|
|
78
76
|
}
|
|
79
77
|
else {
|
|
80
|
-
// add the param type (string) to the writer
|
|
81
|
-
writer.addInt16(0 /* ParamType.STRING */);
|
|
82
78
|
// length prefix + UTF-8 bytes in one pass (Buffer.byteLength computed once)
|
|
83
|
-
|
|
79
|
+
writer.addInt32PrefixedString(mappedVal);
|
|
84
80
|
}
|
|
81
|
+
// beware: `writer` operations can replace `writer.buffer` with a new buffer
|
|
82
|
+
const buf = writer.buffer;
|
|
83
|
+
buf[formatsOffset++] = 0;
|
|
84
|
+
buf[formatsOffset++] = formatByte;
|
|
85
85
|
}
|
|
86
86
|
};
|
|
87
87
|
const bind = (config = {}) => {
|
|
@@ -92,17 +92,19 @@ const bind = (config = {}) => {
|
|
|
92
92
|
const values = config.values || emptyArray;
|
|
93
93
|
const len = values.length;
|
|
94
94
|
writer.addCString(portal).addCString(statement);
|
|
95
|
+
// number of parameter format codes
|
|
96
|
+
writer.addInt16(len);
|
|
97
|
+
// space for those codes, filled by `writeValues`
|
|
98
|
+
const formatsOffset = writer.reserveUnsafe(len * 2);
|
|
99
|
+
// number of parameter values
|
|
95
100
|
writer.addInt16(len);
|
|
96
101
|
try {
|
|
97
|
-
writeValues(values, config.valueMapper);
|
|
102
|
+
writeValues(values, config.valueMapper, formatsOffset);
|
|
98
103
|
}
|
|
99
104
|
catch (err) {
|
|
100
105
|
writer.clear();
|
|
101
|
-
paramWriter.clear();
|
|
102
106
|
throw err;
|
|
103
107
|
}
|
|
104
|
-
writer.addInt16(len);
|
|
105
|
-
writer.add(paramWriter.flush());
|
|
106
108
|
// all results use the same format code
|
|
107
109
|
writer.addInt16(1);
|
|
108
110
|
// format code
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pg-protocol",
|
|
3
|
-
"version": "1.16.
|
|
3
|
+
"version": "1.16.1",
|
|
4
4
|
"description": "The postgres client/server binary protocol, implemented in TypeScript",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"/src",
|
|
41
41
|
"/esm"
|
|
42
42
|
],
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "0980cefebe0ae461da8883703be049fe13ca96cf"
|
|
44
44
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
//binary data writer tuned for encoding binary specific to the postgres binary protocol
|
|
2
2
|
|
|
3
3
|
export class Writer {
|
|
4
|
-
|
|
4
|
+
public buffer: Buffer
|
|
5
5
|
private offset: number = 5
|
|
6
6
|
private headerPosition: number = 0
|
|
7
7
|
constructor(private size = 256) {
|
|
@@ -16,7 +16,7 @@ export class Writer {
|
|
|
16
16
|
// https://stackoverflow.com/questions/2269063/buffer-growth-strategy
|
|
17
17
|
const newSize = oldBuffer.length + (oldBuffer.length >> 1) + size
|
|
18
18
|
this.buffer = Buffer.allocUnsafe(newSize)
|
|
19
|
-
oldBuffer.copy(this.buffer)
|
|
19
|
+
oldBuffer.copy(this.buffer, 0, 0, this.offset)
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
|
|
@@ -85,6 +85,16 @@ export class Writer {
|
|
|
85
85
|
return this
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Appends an uninitialized block of {@link size} bytes to the buffer and returns its offset.
|
|
90
|
+
*/
|
|
91
|
+
public reserveUnsafe(size: number): number {
|
|
92
|
+
const offset = this.offset
|
|
93
|
+
this.ensure(size)
|
|
94
|
+
this.offset += size
|
|
95
|
+
return offset
|
|
96
|
+
}
|
|
97
|
+
|
|
88
98
|
private join(code?: number): Buffer {
|
|
89
99
|
if (code) {
|
|
90
100
|
this.buffer[this.headerPosition] = code
|
|
@@ -110,34 +110,36 @@ type BindOpts = {
|
|
|
110
110
|
valueMapper?: ValueMapper
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
const paramWriter = new Writer()
|
|
114
|
-
|
|
115
113
|
// make this a const enum so typescript will inline the value
|
|
116
114
|
const enum ParamType {
|
|
117
115
|
STRING = 0,
|
|
118
116
|
BINARY = 1,
|
|
119
117
|
}
|
|
120
118
|
|
|
121
|
-
const writeValues = function (values: any[], valueMapper
|
|
122
|
-
|
|
119
|
+
const writeValues = function (values: any[], valueMapper: ValueMapper | undefined, formatsOffset: number): void {
|
|
120
|
+
const len = values.length
|
|
121
|
+
for (let i = 0; i < len; i++) {
|
|
123
122
|
const mappedVal = valueMapper ? valueMapper(values[i], i) : values[i]
|
|
123
|
+
let formatByte = ParamType.STRING
|
|
124
|
+
|
|
124
125
|
if (mappedVal == null) {
|
|
125
|
-
//
|
|
126
|
-
writer.
|
|
127
|
-
// write -1 to the param writer to indicate null
|
|
128
|
-
paramWriter.addInt32(-1)
|
|
126
|
+
// write -1 to indicate null
|
|
127
|
+
writer.addInt32(-1)
|
|
129
128
|
} else if (mappedVal instanceof Buffer) {
|
|
130
|
-
|
|
131
|
-
|
|
129
|
+
formatByte = ParamType.BINARY
|
|
130
|
+
|
|
132
131
|
// add the buffer to the param writer
|
|
133
|
-
|
|
134
|
-
|
|
132
|
+
writer.addInt32(mappedVal.length)
|
|
133
|
+
writer.add(mappedVal)
|
|
135
134
|
} else {
|
|
136
|
-
// add the param type (string) to the writer
|
|
137
|
-
writer.addInt16(ParamType.STRING)
|
|
138
135
|
// length prefix + UTF-8 bytes in one pass (Buffer.byteLength computed once)
|
|
139
|
-
|
|
136
|
+
writer.addInt32PrefixedString(mappedVal)
|
|
140
137
|
}
|
|
138
|
+
|
|
139
|
+
// beware: `writer` operations can replace `writer.buffer` with a new buffer
|
|
140
|
+
const buf = writer.buffer
|
|
141
|
+
buf[formatsOffset++] = 0
|
|
142
|
+
buf[formatsOffset++] = formatByte
|
|
141
143
|
}
|
|
142
144
|
}
|
|
143
145
|
|
|
@@ -150,19 +152,23 @@ const bind = (config: BindOpts = {}): Buffer => {
|
|
|
150
152
|
const len = values.length
|
|
151
153
|
|
|
152
154
|
writer.addCString(portal).addCString(statement)
|
|
155
|
+
|
|
156
|
+
// number of parameter format codes
|
|
157
|
+
writer.addInt16(len)
|
|
158
|
+
|
|
159
|
+
// space for those codes, filled by `writeValues`
|
|
160
|
+
const formatsOffset = writer.reserveUnsafe(len * 2)
|
|
161
|
+
|
|
162
|
+
// number of parameter values
|
|
153
163
|
writer.addInt16(len)
|
|
154
164
|
|
|
155
165
|
try {
|
|
156
|
-
writeValues(values, config.valueMapper)
|
|
166
|
+
writeValues(values, config.valueMapper, formatsOffset)
|
|
157
167
|
} catch (err) {
|
|
158
168
|
writer.clear()
|
|
159
|
-
paramWriter.clear()
|
|
160
169
|
throw err
|
|
161
170
|
}
|
|
162
171
|
|
|
163
|
-
writer.addInt16(len)
|
|
164
|
-
writer.add(paramWriter.flush())
|
|
165
|
-
|
|
166
172
|
// all results use the same format code
|
|
167
173
|
writer.addInt16(1)
|
|
168
174
|
// format code
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tickernelz/paperclip-pro-db",
|
|
3
|
-
"version": "2026.930.
|
|
3
|
+
"version": "2026.930.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"homepage": "https://github.com/tickernelz/paperclip-pro",
|
|
6
6
|
"bugs": {
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"seed": "tsx src/seed.ts"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@tickernelz/paperclip-pro-shared": "2026.930.
|
|
42
|
+
"@tickernelz/paperclip-pro-shared": "2026.930.6",
|
|
43
43
|
"drizzle-orm": "^0.45.2",
|
|
44
44
|
"embedded-postgres": "^18.1.0-beta.16",
|
|
45
45
|
"postgres": "^3.4.9"
|