@m2k-5f/pgtx 2.7.1 → 2.7.2
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-response-reader.d.ts","sourceRoot":"","sources":["../../src/protocol/connection-response-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA6B,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC5G,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAOxC,qBAAa,wBAAwB;IAI7B,OAAO,CAAC,MAAM;IAHlB,OAAO,CAAC,KAAK,CAAI;IAEjB,OAAO;IAKP,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM;IAK1B,QAAQ,IAAI,MAAM;IAOlB,SAAS,IAAI,MAAM;IAOnB,SAAS,IAAI,MAAM;IAOnB,WAAW,IAAI,MAAM;IAQrB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAOrC,OAAO,IAAI,OAAO;IAKlB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAO3C,cAAc,IAAI,IAAI;IAOtB,mBAAmB,IAAI,IAAI;IAO3B,cAAc,IAAI,MAAM;IAaxB,SAAS,CAAC,SAAS,EAAE,MAAM;IAK3B,aAAa,IAAI,OAAO;IAaxB,iBAAiB;IAIjB,QAAQ;IAMR,YAAY,IAAI,MAAM;IAOtB,SAAS;IAST,WAAW;IAOX,WAAW,IAAI,MAAM;IAMrB,QAAQ;IAWR,SAAS,CAAC,MAAM,EAAE,MAAM;IAQxB,aAAa,CAAC,MAAM,EAAE,MAAM;CAW/B;AAGD,qBAAa,wBAAwB;IAG7B,OAAO,CAAC,MAAM;IADlB,OAAO;IAKP,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM;IAK1B,QAAQ;cACoC,YAAY;;;IAIxD,kBAAkB,IACoB,kBAAkB;IAIxD,WAAW;IAKX,mBAAmB;;;;IAQnB,kBAAkB;;;;IAQlB,iBAAiB,IAAI,aAAa;IA4ClC,iBAAiB,IACoB,iBAAiB;IAItD,kBAAkB,IAAI,MAAM,EAAE;IAa9B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKvC,kBAAkB;IAsBlB,WAAW,CAAC,YAAY,EAAE,iBAAiB,EAAE,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"connection-response-reader.d.ts","sourceRoot":"","sources":["../../src/protocol/connection-response-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA6B,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC5G,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAOxC,qBAAa,wBAAwB;IAI7B,OAAO,CAAC,MAAM;IAHlB,OAAO,CAAC,KAAK,CAAI;IAEjB,OAAO;IAKP,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM;IAK1B,QAAQ,IAAI,MAAM;IAOlB,SAAS,IAAI,MAAM;IAOnB,SAAS,IAAI,MAAM;IAOnB,WAAW,IAAI,MAAM;IAQrB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAOrC,OAAO,IAAI,OAAO;IAKlB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAO3C,cAAc,IAAI,IAAI;IAOtB,mBAAmB,IAAI,IAAI;IAO3B,cAAc,IAAI,MAAM;IAaxB,SAAS,CAAC,SAAS,EAAE,MAAM;IAK3B,aAAa,IAAI,OAAO;IAaxB,iBAAiB;IAIjB,QAAQ;IAMR,YAAY,IAAI,MAAM;IAOtB,SAAS;IAST,WAAW,IAAI,MAAM;IA2CrB,gBAAgB,IAAI,MAAM;IAY1B,WAAW;IAOX,WAAW,IAAI,MAAM;IAMrB,QAAQ;IAWR,SAAS,CAAC,MAAM,EAAE,MAAM;IAQxB,aAAa,CAAC,MAAM,EAAE,MAAM;CAW/B;AAGD,qBAAa,wBAAwB;IAG7B,OAAO,CAAC,MAAM;IADlB,OAAO;IAKP,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM;IAK1B,QAAQ;cACoC,YAAY;;;IAIxD,kBAAkB,IACoB,kBAAkB;IAIxD,WAAW;IAKX,mBAAmB;;;;IAQnB,kBAAkB;;;;IAQlB,iBAAiB,IAAI,aAAa;IA4ClC,iBAAiB,IACoB,iBAAiB;IAItD,kBAAkB,IAAI,MAAM,EAAE;IAa9B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKvC,kBAAkB;IAsBlB,WAAW,CAAC,YAAY,EAAE,iBAAiB,EAAE,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAsH1F,wBAAwB;;;;IASxB,mBAAmB,IAAI,MAAM;IAK7B,OAAO;IAKP,aAAa;IAKb,iBAAiB;IAKjB,iBAAiB;IAGjB,gBAAgB;IAGhB,wBAAwB;IAOxB,UAAU;IAEV,IAAI,CAAC,KAAK,EAAE,MAAM;CAGrB"}
|
|
@@ -94,6 +94,53 @@ export class ConnectionResponseBuffer {
|
|
|
94
94
|
this.caret += 8;
|
|
95
95
|
return (hi * 4294967296) + lo;
|
|
96
96
|
}
|
|
97
|
+
readNumeric() {
|
|
98
|
+
const ndigits = this.readInt16();
|
|
99
|
+
const weight = this.readInt16();
|
|
100
|
+
const sign = this.readInt16();
|
|
101
|
+
const dscale = this.readInt16();
|
|
102
|
+
if (sign === 0xC000 || sign === -16384)
|
|
103
|
+
return 'NaN';
|
|
104
|
+
const digits = new Array(ndigits);
|
|
105
|
+
for (let i = 0; i < ndigits; i++) {
|
|
106
|
+
digits[i] = this.readInt16();
|
|
107
|
+
}
|
|
108
|
+
const highExp = Math.max(weight, 0);
|
|
109
|
+
const lowExp = Math.min(weight - ndigits + 1, -1);
|
|
110
|
+
let intPart = '';
|
|
111
|
+
for (let exp = highExp; exp >= 0; exp--) {
|
|
112
|
+
const idx = weight - exp;
|
|
113
|
+
const digit = (idx >= 0 && idx < ndigits) ? digits[idx] : 0;
|
|
114
|
+
intPart += exp === highExp ? String(digit) : String(digit).padStart(4, '0');
|
|
115
|
+
}
|
|
116
|
+
if (intPart === '')
|
|
117
|
+
intPart = '0';
|
|
118
|
+
let fracPart = '';
|
|
119
|
+
for (let exp = -1; exp >= lowExp; exp--) {
|
|
120
|
+
const idx = weight - exp;
|
|
121
|
+
const digit = (idx >= 0 && idx < ndigits) ? digits[idx] : 0;
|
|
122
|
+
fracPart += String(digit).padStart(4, '0');
|
|
123
|
+
}
|
|
124
|
+
if (dscale > 0) {
|
|
125
|
+
fracPart = fracPart.padEnd(dscale, '0').slice(0, dscale);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
fracPart = '';
|
|
129
|
+
}
|
|
130
|
+
const negative = sign === 0x4000 || sign === 16384;
|
|
131
|
+
const result = fracPart ? `${intPart}.${fracPart}` : intPart;
|
|
132
|
+
return negative ? `-${result}` : result;
|
|
133
|
+
}
|
|
134
|
+
readBinaryTimetz() {
|
|
135
|
+
const time = this.readBinaryTime();
|
|
136
|
+
const zoneOffsetSeconds = this.readInt32();
|
|
137
|
+
const offsetMinutesTotal = -zoneOffsetSeconds / 60;
|
|
138
|
+
const sign = offsetMinutesTotal >= 0 ? '+' : '-';
|
|
139
|
+
const abs = Math.abs(offsetMinutesTotal);
|
|
140
|
+
const offH = Math.floor(abs / 60);
|
|
141
|
+
const offM = abs % 60;
|
|
142
|
+
return `${time}${sign}${String(offH).padStart(2, '0')}:${String(offM).padStart(2, '0')}`;
|
|
143
|
+
}
|
|
97
144
|
readFloat32() {
|
|
98
145
|
const value = this.buffer.readFloatBE(this.caret);
|
|
99
146
|
this.caret += 4;
|
|
@@ -339,6 +386,21 @@ export class ConnectionResponseReader {
|
|
|
339
386
|
row[key] = this.buffer.readUuid();
|
|
340
387
|
}
|
|
341
388
|
break;
|
|
389
|
+
case DataTypeOids.Time:
|
|
390
|
+
{
|
|
391
|
+
row[key] = this.buffer.readBinaryTime();
|
|
392
|
+
}
|
|
393
|
+
break;
|
|
394
|
+
case DataTypeOids.Timetz:
|
|
395
|
+
{
|
|
396
|
+
row[key] = this.buffer.readBinaryTimetz();
|
|
397
|
+
}
|
|
398
|
+
break;
|
|
399
|
+
case DataTypeOids.Numeric:
|
|
400
|
+
{
|
|
401
|
+
row[key] = this.buffer.readNumeric();
|
|
402
|
+
}
|
|
403
|
+
break;
|
|
342
404
|
default:
|
|
343
405
|
{
|
|
344
406
|
this.buffer.skipBytes(fieldLength);
|
|
@@ -127,7 +127,7 @@ export const authorizeSocket = (socket, config) => {
|
|
|
127
127
|
case AuthenticationCodes.CleartextPassword:
|
|
128
128
|
{
|
|
129
129
|
if (!config.password)
|
|
130
|
-
|
|
130
|
+
return reject(ErrPasswordRequired);
|
|
131
131
|
connector.write(writer.writePassword(config.password));
|
|
132
132
|
writer.clear();
|
|
133
133
|
}
|
|
@@ -136,7 +136,7 @@ export const authorizeSocket = (socket, config) => {
|
|
|
136
136
|
{
|
|
137
137
|
const salt = reader.readMD5Salt();
|
|
138
138
|
if (!config.password)
|
|
139
|
-
|
|
139
|
+
return reject(ErrPasswordRequired);
|
|
140
140
|
const password = encryptMd5(config.password, config.user, salt);
|
|
141
141
|
connector.write(writer.writePassword(password));
|
|
142
142
|
writer.clear();
|
|
@@ -146,7 +146,7 @@ export const authorizeSocket = (socket, config) => {
|
|
|
146
146
|
{
|
|
147
147
|
reader.readSaslMechanisms();
|
|
148
148
|
if (!config.password)
|
|
149
|
-
|
|
149
|
+
return reject(ErrPasswordRequired);
|
|
150
150
|
clientMessage = `n=${config.user},r=${nonce}`;
|
|
151
151
|
connector.write(writer.writeSaslInitial('SCRAM-SHA-256', `n,,${clientMessage}`));
|
|
152
152
|
writer.clear();
|
|
@@ -156,7 +156,7 @@ export const authorizeSocket = (socket, config) => {
|
|
|
156
156
|
{
|
|
157
157
|
serverMessage = reader.readSaslMessage(length);
|
|
158
158
|
if (!config.password)
|
|
159
|
-
|
|
159
|
+
return reject(ErrPasswordRequired);
|
|
160
160
|
const parts = Object.fromEntries(serverMessage.split(',').map(x => x.split('=')));
|
|
161
161
|
const serverNonce = parts.r;
|
|
162
162
|
const saltBase64 = parts.s;
|