@ooraini/pgquic 0.1.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/LICENSE +21 -0
- package/LICENSES/THIRD_PARTY_LICENSES.txt +385 -0
- package/README.md +29 -0
- package/dist/index.d.ts +122 -0
- package/dist/index.js +7184 -0
- package/dist/index.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/base64-js/index.js","../../../node_modules/ieee754/index.js","../../../node_modules/buffer/index.js","../src/shims/inject.ts","../../../node_modules/events/events.js","../../../node_modules/postgres-array/index.js","../../../node_modules/pg-types/lib/arrayParser.js","../../../node_modules/postgres-date/index.js","../../../node_modules/xtend/mutable.js","../../../node_modules/postgres-interval/index.js","../../../node_modules/postgres-bytea/index.js","../../../node_modules/pg-types/lib/textParsers.js","../../../node_modules/pg-int8/index.js","../../../node_modules/pg-types/lib/binaryParsers.js","../../../node_modules/pg-types/lib/builtins.js","../../../node_modules/pg-types/index.js","../../../node_modules/pg/lib/defaults.js","../src/shims/util-types.cjs","../../../node_modules/pg/lib/utils.js","../src/shims/util.cjs","../src/shims/crypto.cjs","../../../node_modules/pg/lib/crypto/utils.js","../../../node_modules/pg/lib/crypto/cert-signatures.js","../../../node_modules/pg/lib/crypto/sasl.js","../../../node_modules/pg/lib/type-overrides.js","../src/shims/dns.cjs","../src/shims/fs.cjs","../../../node_modules/pg-connection-string/index.js","../../../node_modules/pg/lib/connection-parameters.js","../../../node_modules/pg/lib/result.js","../../../node_modules/pg/lib/query.js","../../../node_modules/pg-protocol/src/messages.ts","../../../node_modules/pg-protocol/src/buffer-writer.ts","../../../node_modules/pg-protocol/src/serializer.ts","../../../node_modules/pg-protocol/src/buffer-reader.ts","../../../node_modules/pg-protocol/src/parser.ts","../../../node_modules/pg-protocol/src/index.ts","../src/shims/net.cjs","../src/shims/tls.cjs","../../../node_modules/pg-cloudflare/src/empty.ts","../../../node_modules/pg/lib/stream.js","../../../node_modules/pg/lib/connection.js","../src/shims/pgpass.cjs","../../../node_modules/pg/lib/client.js","../../../node_modules/pg-pool/index.js","../src/index.ts","../../../node_modules/pg-pool/esm/index.mjs","../src/socket.ts","../src/transport.ts","../src/framing.ts"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","import { Buffer } from \"buffer\";\n\n// node-postgres uses only this small subset of Node's process API in its\n// browser-compatible execution paths. Keep it lexical to the bundle instead\n// of installing a global Node process polyfill in the browser.\nconst process = {\n env: {} as Record<string, string | undefined>,\n platform: \"browser\",\n domain: undefined,\n nextTick(callback: (...args: any[]) => void, ...args: any[]) {\n queueMicrotask(() => callback(...args));\n },\n};\n\nconst global = globalThis;\nexport { Buffer, process, global };\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict'\n\nexports.parse = function (source, transform) {\n return new ArrayParser(source, transform).parse()\n}\n\nclass ArrayParser {\n constructor (source, transform) {\n this.source = source\n this.transform = transform || identity\n this.position = 0\n this.entries = []\n this.recorded = []\n this.dimension = 0\n }\n\n isEof () {\n return this.position >= this.source.length\n }\n\n nextCharacter () {\n var character = this.source[this.position++]\n if (character === '\\\\') {\n return {\n value: this.source[this.position++],\n escaped: true\n }\n }\n return {\n value: character,\n escaped: false\n }\n }\n\n record (character) {\n this.recorded.push(character)\n }\n\n newEntry (includeEmpty) {\n var entry\n if (this.recorded.length > 0 || includeEmpty) {\n entry = this.recorded.join('')\n if (entry === 'NULL' && !includeEmpty) {\n entry = null\n }\n if (entry !== null) entry = this.transform(entry)\n this.entries.push(entry)\n this.recorded = []\n }\n }\n\n consumeDimensions () {\n if (this.source[0] === '[') {\n while (!this.isEof()) {\n var char = this.nextCharacter()\n if (char.value === '=') break\n }\n }\n }\n\n parse (nested) {\n var character, parser, quote\n this.consumeDimensions()\n while (!this.isEof()) {\n character = this.nextCharacter()\n if (character.value === '{' && !quote) {\n this.dimension++\n if (this.dimension > 1) {\n parser = new ArrayParser(this.source.substr(this.position - 1), this.transform)\n this.entries.push(parser.parse(true))\n this.position += parser.position - 2\n }\n } else if (character.value === '}' && !quote) {\n this.dimension--\n if (!this.dimension) {\n this.newEntry()\n if (nested) return this.entries\n }\n } else if (character.value === '\"' && !character.escaped) {\n if (quote) this.newEntry(true)\n quote = !quote\n } else if (character.value === ',' && !quote) {\n this.newEntry()\n } else {\n this.record(character.value)\n }\n }\n if (this.dimension !== 0) {\n throw new Error('array dimension not balanced')\n }\n return this.entries\n }\n}\n\nfunction identity (value) {\n return value\n}\n","var array = require('postgres-array');\n\nmodule.exports = {\n create: function (source, transform) {\n return {\n parse: function() {\n return array.parse(source, transform);\n }\n };\n }\n};\n","'use strict'\n\nvar DATE_TIME = /(\\d{1,})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})(\\.\\d{1,})?.*?( BC)?$/\nvar DATE = /^(\\d{1,})-(\\d{2})-(\\d{2})( BC)?$/\nvar TIME_ZONE = /([Z+-])(\\d{2})?:?(\\d{2})?:?(\\d{2})?/\nvar INFINITY = /^-?infinity$/\n\nmodule.exports = function parseDate (isoDate) {\n if (INFINITY.test(isoDate)) {\n // Capitalize to Infinity before passing to Number\n return Number(isoDate.replace('i', 'I'))\n }\n var matches = DATE_TIME.exec(isoDate)\n\n if (!matches) {\n // Force YYYY-MM-DD dates to be parsed as local time\n return getDate(isoDate) || null\n }\n\n var isBC = !!matches[8]\n var year = parseInt(matches[1], 10)\n if (isBC) {\n year = bcYearToNegativeYear(year)\n }\n\n var month = parseInt(matches[2], 10) - 1\n var day = matches[3]\n var hour = parseInt(matches[4], 10)\n var minute = parseInt(matches[5], 10)\n var second = parseInt(matches[6], 10)\n\n var ms = matches[7]\n ms = ms ? 1000 * parseFloat(ms) : 0\n\n var date\n var offset = timeZoneOffset(isoDate)\n if (offset != null) {\n date = new Date(Date.UTC(year, month, day, hour, minute, second, ms))\n\n // Account for years from 0 to 99 being interpreted as 1900-1999\n // by Date.UTC / the multi-argument form of the Date constructor\n if (is0To99(year)) {\n date.setUTCFullYear(year)\n }\n\n if (offset !== 0) {\n date.setTime(date.getTime() - offset)\n }\n } else {\n date = new Date(year, month, day, hour, minute, second, ms)\n\n if (is0To99(year)) {\n date.setFullYear(year)\n }\n }\n\n return date\n}\n\nfunction getDate (isoDate) {\n var matches = DATE.exec(isoDate)\n if (!matches) {\n return\n }\n\n var year = parseInt(matches[1], 10)\n var isBC = !!matches[4]\n if (isBC) {\n year = bcYearToNegativeYear(year)\n }\n\n var month = parseInt(matches[2], 10) - 1\n var day = matches[3]\n // YYYY-MM-DD will be parsed as local time\n var date = new Date(year, month, day)\n\n if (is0To99(year)) {\n date.setFullYear(year)\n }\n\n return date\n}\n\n// match timezones:\n// Z (UTC)\n// -05\n// +06:30\nfunction timeZoneOffset (isoDate) {\n if (isoDate.endsWith('+00')) {\n return 0\n }\n\n var zone = TIME_ZONE.exec(isoDate.split(' ')[1])\n if (!zone) return\n var type = zone[1]\n\n if (type === 'Z') {\n return 0\n }\n var sign = type === '-' ? -1 : 1\n var offset = parseInt(zone[2], 10) * 3600 +\n parseInt(zone[3] || 0, 10) * 60 +\n parseInt(zone[4] || 0, 10)\n\n return offset * sign * 1000\n}\n\nfunction bcYearToNegativeYear (year) {\n // Account for numerical difference between representations of BC years\n // See: https://github.com/bendrucker/postgres-date/issues/5\n return -(year - 1)\n}\n\nfunction is0To99 (num) {\n return num >= 0 && num < 100\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","'use strict'\n\nvar extend = require('xtend/mutable')\n\nmodule.exports = PostgresInterval\n\nfunction PostgresInterval (raw) {\n if (!(this instanceof PostgresInterval)) {\n return new PostgresInterval(raw)\n }\n extend(this, parse(raw))\n}\nvar properties = ['seconds', 'minutes', 'hours', 'days', 'months', 'years']\nPostgresInterval.prototype.toPostgres = function () {\n var filtered = properties.filter(this.hasOwnProperty, this)\n\n // In addition to `properties`, we need to account for fractions of seconds.\n if (this.milliseconds && filtered.indexOf('seconds') < 0) {\n filtered.push('seconds')\n }\n\n if (filtered.length === 0) return '0'\n return filtered\n .map(function (property) {\n var value = this[property] || 0\n\n // Account for fractional part of seconds,\n // remove trailing zeroes.\n if (property === 'seconds' && this.milliseconds) {\n value = (value + this.milliseconds / 1000).toFixed(6).replace(/\\.?0+$/, '')\n }\n\n return value + ' ' + property\n }, this)\n .join(' ')\n}\n\nvar propertiesISOEquivalent = {\n years: 'Y',\n months: 'M',\n days: 'D',\n hours: 'H',\n minutes: 'M',\n seconds: 'S'\n}\nvar dateProperties = ['years', 'months', 'days']\nvar timeProperties = ['hours', 'minutes', 'seconds']\n// according to ISO 8601\nPostgresInterval.prototype.toISOString = PostgresInterval.prototype.toISO = function () {\n var datePart = dateProperties\n .map(buildProperty, this)\n .join('')\n\n var timePart = timeProperties\n .map(buildProperty, this)\n .join('')\n\n return 'P' + datePart + 'T' + timePart\n\n function buildProperty (property) {\n var value = this[property] || 0\n\n // Account for fractional part of seconds,\n // remove trailing zeroes.\n if (property === 'seconds' && this.milliseconds) {\n value = (value + this.milliseconds / 1000).toFixed(6).replace(/0+$/, '')\n }\n\n return value + propertiesISOEquivalent[property]\n }\n}\n\nvar NUMBER = '([+-]?\\\\d+)'\nvar YEAR = NUMBER + '\\\\s+years?'\nvar MONTH = NUMBER + '\\\\s+mons?'\nvar DAY = NUMBER + '\\\\s+days?'\nvar TIME = '([+-])?([\\\\d]*):(\\\\d\\\\d):(\\\\d\\\\d)\\\\.?(\\\\d{1,6})?'\nvar INTERVAL = new RegExp([YEAR, MONTH, DAY, TIME].map(function (regexString) {\n return '(' + regexString + ')?'\n})\n .join('\\\\s*'))\n\n// Positions of values in regex match\nvar positions = {\n years: 2,\n months: 4,\n days: 6,\n hours: 9,\n minutes: 10,\n seconds: 11,\n milliseconds: 12\n}\n// We can use negative time\nvar negatives = ['hours', 'minutes', 'seconds', 'milliseconds']\n\nfunction parseMilliseconds (fraction) {\n // add omitted zeroes\n var microseconds = fraction + '000000'.slice(fraction.length)\n return parseInt(microseconds, 10) / 1000\n}\n\nfunction parse (interval) {\n if (!interval) return {}\n var matches = INTERVAL.exec(interval)\n var isNegative = matches[8] === '-'\n return Object.keys(positions)\n .reduce(function (parsed, property) {\n var position = positions[property]\n var value = matches[position]\n // no empty string\n if (!value) return parsed\n // milliseconds are actually microseconds (up to 6 digits)\n // with omitted trailing zeroes.\n value = property === 'milliseconds'\n ? parseMilliseconds(value)\n : parseInt(value, 10)\n // no zeros\n if (!value) return parsed\n if (isNegative && ~negatives.indexOf(property)) {\n value *= -1\n }\n parsed[property] = value\n return parsed\n }, {})\n}\n","'use strict'\n\nvar bufferFrom = Buffer.from || Buffer\n\nmodule.exports = function parseBytea (input) {\n if (/^\\\\x/.test(input)) {\n // new 'hex' style response (pg >9.0)\n return bufferFrom(input.substr(2), 'hex')\n }\n var output = ''\n var i = 0\n while (i < input.length) {\n if (input[i] !== '\\\\') {\n output += input[i]\n ++i\n } else {\n if (/[0-7]{3}/.test(input.substr(i + 1, 3))) {\n output += String.fromCharCode(parseInt(input.substr(i + 1, 3), 8))\n i += 4\n } else {\n var backslashes = 1\n while (i + backslashes < input.length && input[i + backslashes] === '\\\\') {\n backslashes++\n }\n for (var k = 0; k < Math.floor(backslashes / 2); ++k) {\n output += '\\\\'\n }\n i += Math.floor(backslashes / 2) * 2\n }\n }\n }\n return bufferFrom(output, 'binary')\n}\n","var array = require('postgres-array')\nvar arrayParser = require('./arrayParser');\nvar parseDate = require('postgres-date');\nvar parseInterval = require('postgres-interval');\nvar parseByteA = require('postgres-bytea');\n\nfunction allowNull (fn) {\n return function nullAllowed (value) {\n if (value === null) return value\n return fn(value)\n }\n}\n\nfunction parseBool (value) {\n if (value === null) return value\n return value === 'TRUE' ||\n value === 't' ||\n value === 'true' ||\n value === 'y' ||\n value === 'yes' ||\n value === 'on' ||\n value === '1';\n}\n\nfunction parseBoolArray (value) {\n if (!value) return null\n return array.parse(value, parseBool)\n}\n\nfunction parseBaseTenInt (string) {\n return parseInt(string, 10)\n}\n\nfunction parseIntegerArray (value) {\n if (!value) return null\n return array.parse(value, allowNull(parseBaseTenInt))\n}\n\nfunction parseBigIntegerArray (value) {\n if (!value) return null\n return array.parse(value, allowNull(function (entry) {\n return parseBigInteger(entry).trim()\n }))\n}\n\nvar parsePointArray = function(value) {\n if(!value) { return null; }\n var p = arrayParser.create(value, function(entry) {\n if(entry !== null) {\n entry = parsePoint(entry);\n }\n return entry;\n });\n\n return p.parse();\n};\n\nvar parseFloatArray = function(value) {\n if(!value) { return null; }\n var p = arrayParser.create(value, function(entry) {\n if(entry !== null) {\n entry = parseFloat(entry);\n }\n return entry;\n });\n\n return p.parse();\n};\n\nvar parseStringArray = function(value) {\n if(!value) { return null; }\n\n var p = arrayParser.create(value);\n return p.parse();\n};\n\nvar parseDateArray = function(value) {\n if (!value) { return null; }\n\n var p = arrayParser.create(value, function(entry) {\n if (entry !== null) {\n entry = parseDate(entry);\n }\n return entry;\n });\n\n return p.parse();\n};\n\nvar parseIntervalArray = function(value) {\n if (!value) { return null; }\n\n var p = arrayParser.create(value, function(entry) {\n if (entry !== null) {\n entry = parseInterval(entry);\n }\n return entry;\n });\n\n return p.parse();\n};\n\nvar parseByteAArray = function(value) {\n if (!value) { return null; }\n\n return array.parse(value, allowNull(parseByteA));\n};\n\nvar parseInteger = function(value) {\n return parseInt(value, 10);\n};\n\nvar parseBigInteger = function(value) {\n var valStr = String(value);\n if (/^\\d+$/.test(valStr)) { return valStr; }\n return value;\n};\n\nvar parseJsonArray = function(value) {\n if (!value) { return null; }\n\n return array.parse(value, allowNull(JSON.parse));\n};\n\nvar parsePoint = function(value) {\n if (value[0] !== '(') { return null; }\n\n value = value.substring( 1, value.length - 1 ).split(',');\n\n return {\n x: parseFloat(value[0])\n , y: parseFloat(value[1])\n };\n};\n\nvar parseCircle = function(value) {\n if (value[0] !== '<' && value[1] !== '(') { return null; }\n\n var point = '(';\n var radius = '';\n var pointParsed = false;\n for (var i = 2; i < value.length - 1; i++){\n if (!pointParsed) {\n point += value[i];\n }\n\n if (value[i] === ')') {\n pointParsed = true;\n continue;\n } else if (!pointParsed) {\n continue;\n }\n\n if (value[i] === ','){\n continue;\n }\n\n radius += value[i];\n }\n var result = parsePoint(point);\n result.radius = parseFloat(radius);\n\n return result;\n};\n\nvar init = function(register) {\n register(20, parseBigInteger); // int8\n register(21, parseInteger); // int2\n register(23, parseInteger); // int4\n register(26, parseInteger); // oid\n register(700, parseFloat); // float4/real\n register(701, parseFloat); // float8/double\n register(16, parseBool);\n register(1082, parseDate); // date\n register(1114, parseDate); // timestamp without timezone\n register(1184, parseDate); // timestamp\n register(600, parsePoint); // point\n register(651, parseStringArray); // cidr[]\n register(718, parseCircle); // circle\n register(1000, parseBoolArray);\n register(1001, parseByteAArray);\n register(1005, parseIntegerArray); // _int2\n register(1007, parseIntegerArray); // _int4\n register(1028, parseIntegerArray); // oid[]\n register(1016, parseBigIntegerArray); // _int8\n register(1017, parsePointArray); // point[]\n register(1021, parseFloatArray); // _float4\n register(1022, parseFloatArray); // _float8\n register(1231, parseFloatArray); // _numeric\n register(1014, parseStringArray); //char\n register(1015, parseStringArray); //varchar\n register(1008, parseStringArray);\n register(1009, parseStringArray);\n register(1040, parseStringArray); // macaddr[]\n register(1041, parseStringArray); // inet[]\n register(1115, parseDateArray); // timestamp without time zone[]\n register(1182, parseDateArray); // _date\n register(1185, parseDateArray); // timestamp with time zone[]\n register(1186, parseInterval);\n register(1187, parseIntervalArray);\n register(17, parseByteA);\n register(114, JSON.parse.bind(JSON)); // json\n register(3802, JSON.parse.bind(JSON)); // jsonb\n register(199, parseJsonArray); // json[]\n register(3807, parseJsonArray); // jsonb[]\n register(3907, parseStringArray); // numrange[]\n register(2951, parseStringArray); // uuid[]\n register(791, parseStringArray); // money[]\n register(1183, parseStringArray); // time[]\n register(1270, parseStringArray); // timetz[]\n};\n\nmodule.exports = {\n init: init\n};\n","'use strict';\n\n// selected so (BASE - 1) * 0x100000000 + 0xffffffff is a safe integer\nvar BASE = 1000000;\n\nfunction readInt8(buffer) {\n\tvar high = buffer.readInt32BE(0);\n\tvar low = buffer.readUInt32BE(4);\n\tvar sign = '';\n\n\tif (high < 0) {\n\t\thigh = ~high + (low === 0);\n\t\tlow = (~low + 1) >>> 0;\n\t\tsign = '-';\n\t}\n\n\tvar result = '';\n\tvar carry;\n\tvar t;\n\tvar digits;\n\tvar pad;\n\tvar l;\n\tvar i;\n\n\t{\n\t\tcarry = high % BASE;\n\t\thigh = high / BASE >>> 0;\n\n\t\tt = 0x100000000 * carry + low;\n\t\tlow = t / BASE >>> 0;\n\t\tdigits = '' + (t - BASE * low);\n\n\t\tif (low === 0 && high === 0) {\n\t\t\treturn sign + digits + result;\n\t\t}\n\n\t\tpad = '';\n\t\tl = 6 - digits.length;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tpad += '0';\n\t\t}\n\n\t\tresult = pad + digits + result;\n\t}\n\n\t{\n\t\tcarry = high % BASE;\n\t\thigh = high / BASE >>> 0;\n\n\t\tt = 0x100000000 * carry + low;\n\t\tlow = t / BASE >>> 0;\n\t\tdigits = '' + (t - BASE * low);\n\n\t\tif (low === 0 && high === 0) {\n\t\t\treturn sign + digits + result;\n\t\t}\n\n\t\tpad = '';\n\t\tl = 6 - digits.length;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tpad += '0';\n\t\t}\n\n\t\tresult = pad + digits + result;\n\t}\n\n\t{\n\t\tcarry = high % BASE;\n\t\thigh = high / BASE >>> 0;\n\n\t\tt = 0x100000000 * carry + low;\n\t\tlow = t / BASE >>> 0;\n\t\tdigits = '' + (t - BASE * low);\n\n\t\tif (low === 0 && high === 0) {\n\t\t\treturn sign + digits + result;\n\t\t}\n\n\t\tpad = '';\n\t\tl = 6 - digits.length;\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tpad += '0';\n\t\t}\n\n\t\tresult = pad + digits + result;\n\t}\n\n\t{\n\t\tcarry = high % BASE;\n\t\tt = 0x100000000 * carry + low;\n\t\tdigits = '' + t % BASE;\n\n\t\treturn sign + digits + result;\n\t}\n}\n\nmodule.exports = readInt8;\n","var parseInt64 = require('pg-int8');\n\nvar parseBits = function(data, bits, offset, invert, callback) {\n offset = offset || 0;\n invert = invert || false;\n callback = callback || function(lastValue, newValue, bits) { return (lastValue * Math.pow(2, bits)) + newValue; };\n var offsetBytes = offset >> 3;\n\n var inv = function(value) {\n if (invert) {\n return ~value & 0xff;\n }\n\n return value;\n };\n\n // read first (maybe partial) byte\n var mask = 0xff;\n var firstBits = 8 - (offset % 8);\n if (bits < firstBits) {\n mask = (0xff << (8 - bits)) & 0xff;\n firstBits = bits;\n }\n\n if (offset) {\n mask = mask >> (offset % 8);\n }\n\n var result = 0;\n if ((offset % 8) + bits >= 8) {\n result = callback(0, inv(data[offsetBytes]) & mask, firstBits);\n }\n\n // read bytes\n var bytes = (bits + offset) >> 3;\n for (var i = offsetBytes + 1; i < bytes; i++) {\n result = callback(result, inv(data[i]), 8);\n }\n\n // bits to read, that are not a complete byte\n var lastBits = (bits + offset) % 8;\n if (lastBits > 0) {\n result = callback(result, inv(data[bytes]) >> (8 - lastBits), lastBits);\n }\n\n return result;\n};\n\nvar parseFloatFromBits = function(data, precisionBits, exponentBits) {\n var bias = Math.pow(2, exponentBits - 1) - 1;\n var sign = parseBits(data, 1);\n var exponent = parseBits(data, exponentBits, 1);\n\n if (exponent === 0) {\n return 0;\n }\n\n // parse mantissa\n var precisionBitsCounter = 1;\n var parsePrecisionBits = function(lastValue, newValue, bits) {\n if (lastValue === 0) {\n lastValue = 1;\n }\n\n for (var i = 1; i <= bits; i++) {\n precisionBitsCounter /= 2;\n if ((newValue & (0x1 << (bits - i))) > 0) {\n lastValue += precisionBitsCounter;\n }\n }\n\n return lastValue;\n };\n\n var mantissa = parseBits(data, precisionBits, exponentBits + 1, false, parsePrecisionBits);\n\n // special cases\n if (exponent == (Math.pow(2, exponentBits + 1) - 1)) {\n if (mantissa === 0) {\n return (sign === 0) ? Infinity : -Infinity;\n }\n\n return NaN;\n }\n\n // normale number\n return ((sign === 0) ? 1 : -1) * Math.pow(2, exponent - bias) * mantissa;\n};\n\nvar parseInt16 = function(value) {\n if (parseBits(value, 1) == 1) {\n return -1 * (parseBits(value, 15, 1, true) + 1);\n }\n\n return parseBits(value, 15, 1);\n};\n\nvar parseInt32 = function(value) {\n if (parseBits(value, 1) == 1) {\n return -1 * (parseBits(value, 31, 1, true) + 1);\n }\n\n return parseBits(value, 31, 1);\n};\n\nvar parseFloat32 = function(value) {\n return parseFloatFromBits(value, 23, 8);\n};\n\nvar parseFloat64 = function(value) {\n return parseFloatFromBits(value, 52, 11);\n};\n\nvar parseNumeric = function(value) {\n var sign = parseBits(value, 16, 32);\n if (sign == 0xc000) {\n return NaN;\n }\n\n var weight = Math.pow(10000, parseBits(value, 16, 16));\n var result = 0;\n\n var digits = [];\n var ndigits = parseBits(value, 16);\n for (var i = 0; i < ndigits; i++) {\n result += parseBits(value, 16, 64 + (16 * i)) * weight;\n weight /= 10000;\n }\n\n var scale = Math.pow(10, parseBits(value, 16, 48));\n return ((sign === 0) ? 1 : -1) * Math.round(result * scale) / scale;\n};\n\nvar parseDate = function(isUTC, value) {\n var sign = parseBits(value, 1);\n var rawValue = parseBits(value, 63, 1);\n\n // discard usecs and shift from 2000 to 1970\n var result = new Date((((sign === 0) ? 1 : -1) * rawValue / 1000) + 946684800000);\n\n if (!isUTC) {\n result.setTime(result.getTime() + result.getTimezoneOffset() * 60000);\n }\n\n // add microseconds to the date\n result.usec = rawValue % 1000;\n result.getMicroSeconds = function() {\n return this.usec;\n };\n result.setMicroSeconds = function(value) {\n this.usec = value;\n };\n result.getUTCMicroSeconds = function() {\n return this.usec;\n };\n\n return result;\n};\n\nvar parseArray = function(value) {\n var dim = parseBits(value, 32);\n\n var flags = parseBits(value, 32, 32);\n var elementType = parseBits(value, 32, 64);\n\n var offset = 96;\n var dims = [];\n for (var i = 0; i < dim; i++) {\n // parse dimension\n dims[i] = parseBits(value, 32, offset);\n offset += 32;\n\n // ignore lower bounds\n offset += 32;\n }\n\n var parseElement = function(elementType) {\n // parse content length\n var length = parseBits(value, 32, offset);\n offset += 32;\n\n // parse null values\n if (length == 0xffffffff) {\n return null;\n }\n\n var result;\n if ((elementType == 0x17) || (elementType == 0x14)) {\n // int/bigint\n result = parseBits(value, length * 8, offset);\n offset += length * 8;\n return result;\n }\n else if (elementType == 0x19) {\n // string\n result = value.toString(this.encoding, offset >> 3, (offset += (length << 3)) >> 3);\n return result;\n }\n else {\n console.log(\"ERROR: ElementType not implemented: \" + elementType);\n }\n };\n\n var parse = function(dimension, elementType) {\n var array = [];\n var i;\n\n if (dimension.length > 1) {\n var count = dimension.shift();\n for (i = 0; i < count; i++) {\n array[i] = parse(dimension, elementType);\n }\n dimension.unshift(count);\n }\n else {\n for (i = 0; i < dimension[0]; i++) {\n array[i] = parseElement(elementType);\n }\n }\n\n return array;\n };\n\n return parse(dims, elementType);\n};\n\nvar parseText = function(value) {\n return value.toString('utf8');\n};\n\nvar parseBool = function(value) {\n if(value === null) return null;\n return (parseBits(value, 8) > 0);\n};\n\nvar init = function(register) {\n register(20, parseInt64);\n register(21, parseInt16);\n register(23, parseInt32);\n register(26, parseInt32);\n register(1700, parseNumeric);\n register(700, parseFloat32);\n register(701, parseFloat64);\n register(16, parseBool);\n register(1114, parseDate.bind(null, false));\n register(1184, parseDate.bind(null, true));\n register(1000, parseArray);\n register(1007, parseArray);\n register(1016, parseArray);\n register(1008, parseArray);\n register(1009, parseArray);\n register(25, parseText);\n};\n\nmodule.exports = {\n init: init\n};\n","/**\n * Following query was used to generate this file:\n\n SELECT json_object_agg(UPPER(PT.typname), PT.oid::int4 ORDER BY pt.oid)\n FROM pg_type PT\n WHERE typnamespace = (SELECT pgn.oid FROM pg_namespace pgn WHERE nspname = 'pg_catalog') -- Take only builting Postgres types with stable OID (extension types are not guaranted to be stable)\n AND typtype = 'b' -- Only basic types\n AND typelem = 0 -- Ignore aliases\n AND typisdefined -- Ignore undefined types\n */\n\nmodule.exports = {\n BOOL: 16,\n BYTEA: 17,\n CHAR: 18,\n INT8: 20,\n INT2: 21,\n INT4: 23,\n REGPROC: 24,\n TEXT: 25,\n OID: 26,\n TID: 27,\n XID: 28,\n CID: 29,\n JSON: 114,\n XML: 142,\n PG_NODE_TREE: 194,\n SMGR: 210,\n PATH: 602,\n POLYGON: 604,\n CIDR: 650,\n FLOAT4: 700,\n FLOAT8: 701,\n ABSTIME: 702,\n RELTIME: 703,\n TINTERVAL: 704,\n CIRCLE: 718,\n MACADDR8: 774,\n MONEY: 790,\n MACADDR: 829,\n INET: 869,\n ACLITEM: 1033,\n BPCHAR: 1042,\n VARCHAR: 1043,\n DATE: 1082,\n TIME: 1083,\n TIMESTAMP: 1114,\n TIMESTAMPTZ: 1184,\n INTERVAL: 1186,\n TIMETZ: 1266,\n BIT: 1560,\n VARBIT: 1562,\n NUMERIC: 1700,\n REFCURSOR: 1790,\n REGPROCEDURE: 2202,\n REGOPER: 2203,\n REGOPERATOR: 2204,\n REGCLASS: 2205,\n REGTYPE: 2206,\n UUID: 2950,\n TXID_SNAPSHOT: 2970,\n PG_LSN: 3220,\n PG_NDISTINCT: 3361,\n PG_DEPENDENCIES: 3402,\n TSVECTOR: 3614,\n TSQUERY: 3615,\n GTSVECTOR: 3642,\n REGCONFIG: 3734,\n REGDICTIONARY: 3769,\n JSONB: 3802,\n REGNAMESPACE: 4089,\n REGROLE: 4096\n};\n","var textParsers = require('./lib/textParsers');\nvar binaryParsers = require('./lib/binaryParsers');\nvar arrayParser = require('./lib/arrayParser');\nvar builtinTypes = require('./lib/builtins');\n\nexports.getTypeParser = getTypeParser;\nexports.setTypeParser = setTypeParser;\nexports.arrayParser = arrayParser;\nexports.builtins = builtinTypes;\n\nvar typeParsers = {\n text: {},\n binary: {}\n};\n\n//the empty parse function\nfunction noParse (val) {\n return String(val);\n};\n\n//returns a function used to convert a specific type (specified by\n//oid) into a result javascript type\n//note: the oid can be obtained via the following sql query:\n//SELECT oid FROM pg_type WHERE typname = 'TYPE_NAME_HERE';\nfunction getTypeParser (oid, format) {\n format = format || 'text';\n if (!typeParsers[format]) {\n return noParse;\n }\n return typeParsers[format][oid] || noParse;\n};\n\nfunction setTypeParser (oid, format, parseFn) {\n if(typeof format == 'function') {\n parseFn = format;\n format = 'text';\n }\n typeParsers[format][oid] = parseFn;\n};\n\ntextParsers.init(function(oid, converter) {\n typeParsers.text[oid] = converter;\n});\n\nbinaryParsers.init(function(oid, converter) {\n typeParsers.binary[oid] = converter;\n});\n","'use strict'\n\nlet user\ntry {\n user = process.platform === 'win32' ? process.env.USERNAME : process.env.USER\n} catch {\n // ignore, e.g., Deno without --allow-env\n}\n\nmodule.exports = {\n // database host. defaults to localhost\n host: 'localhost',\n\n // database user's name\n user,\n\n // name of database to connect\n database: undefined,\n\n // database user's password\n password: null,\n\n // a Postgres connection string to be used instead of setting individual connection items\n // NOTE: Setting this value will cause it to override any other value (such as database or user) defined\n // in the defaults object.\n connectionString: undefined,\n\n // database port\n port: 5432,\n\n // number of rows to return at a time from a prepared statement's\n // portal. 0 will return all rows at once\n rows: 0,\n\n // binary result mode\n binary: false,\n\n // Connection pool options - see https://github.com/brianc/node-pg-pool\n\n // number of connections to use in connection pool\n // 0 will disable connection pooling\n max: 10,\n\n // max milliseconds a client can go unused before it is removed\n // from the pool and destroyed\n idleTimeoutMillis: 30000,\n\n client_encoding: '',\n\n ssl: false,\n\n // SSL negotiation style: 'postgres' (traditional SSLRequest) or 'direct'\n sslnegotiation: undefined,\n\n application_name: undefined,\n\n fallback_application_name: undefined,\n\n options: undefined,\n\n parseInputDatesAsUTC: false,\n\n // max milliseconds any query using this connection will execute for before timing out in error.\n // false=unlimited\n statement_timeout: false,\n\n // Abort any statement that waits longer than the specified duration in milliseconds while attempting to acquire a lock.\n // false=unlimited\n lock_timeout: false,\n\n // Terminate any session with an open transaction that has been idle for longer than the specified duration in milliseconds\n // false=unlimited\n idle_in_transaction_session_timeout: false,\n\n // max milliseconds to wait for query to complete (client side)\n query_timeout: false,\n\n connect_timeout: 0,\n\n keepalives: 1,\n\n keepalives_idle: 0,\n}\n\nconst pgTypes = require('pg-types')\n// save default parsers\nconst parseBigInteger = pgTypes.getTypeParser(20, 'text')\nconst parseBigIntegerArray = pgTypes.getTypeParser(1016, 'text')\n\n// parse int8 so you can get your count values as actual numbers\nmodule.exports.__defineSetter__('parseInt8', function (val) {\n pgTypes.setTypeParser(20, 'text', val ? pgTypes.getTypeParser(23, 'text') : parseBigInteger)\n pgTypes.setTypeParser(1016, 'text', val ? pgTypes.getTypeParser(1007, 'text') : parseBigIntegerArray)\n})\n","module.exports = {\n isDate(value) {\n return value instanceof Date;\n },\n};\n","'use strict'\n\nconst defaults = require('./defaults')\n\nconst { isDate } = require('util/types')\n\nfunction escapeElement(elementRepresentation) {\n const escaped = elementRepresentation.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')\n\n return '\"' + escaped + '\"'\n}\n\n// convert a JS array to a postgres array literal\n// uses comma separator so won't work for types like box that use\n// a different array separator.\nfunction arrayString(val) {\n let result = '{'\n for (let i = 0; i < val.length; i++) {\n if (i > 0) {\n result += ','\n }\n let item = val[i]\n if (item == null) {\n result += 'NULL'\n } else if (Array.isArray(item)) {\n result += arrayString(item)\n } else if (ArrayBuffer.isView(item)) {\n if (!(item instanceof Buffer)) {\n item = Buffer.from(item.buffer, item.byteOffset, item.byteLength)\n }\n result += '\\\\\\\\x' + item.toString('hex')\n } else {\n result += escapeElement(prepareValue(item))\n }\n }\n result += '}'\n return result\n}\n\n// converts values from javascript types\n// to their 'raw' counterparts for use as a postgres parameter\n// note: you can override this function to provide your own conversion mechanism\n// for complex types, etc...\nconst prepareValue = function (val, seen) {\n // null and undefined are both null for postgres\n if (val == null) {\n return null\n }\n if (typeof val === 'object') {\n if (val instanceof Buffer) {\n return val\n }\n if (ArrayBuffer.isView(val)) {\n return Buffer.from(val.buffer, val.byteOffset, val.byteLength)\n }\n if (isDate(val)) {\n if (defaults.parseInputDatesAsUTC) {\n return dateToStringUTC(val)\n } else {\n return dateToString(val)\n }\n }\n if (Array.isArray(val)) {\n return arrayString(val)\n }\n\n return prepareObject(val, seen)\n }\n return val.toString()\n}\n\nfunction prepareObject(val, seen) {\n if (val && typeof val.toPostgres === 'function') {\n seen = seen || []\n if (seen.indexOf(val) !== -1) {\n throw new Error('circular reference detected while preparing \"' + val + '\" for query')\n }\n seen.push(val)\n\n return prepareValue(val.toPostgres(prepareValue), seen)\n }\n return JSON.stringify(val)\n}\n\nfunction dateToString(date) {\n let offset = -date.getTimezoneOffset()\n\n let year = date.getFullYear()\n const isBCYear = year < 1\n if (isBCYear) year = Math.abs(year) + 1 // negative years are 1 off their BC representation\n\n let ret =\n String(year).padStart(4, '0') +\n '-' +\n String(date.getMonth() + 1).padStart(2, '0') +\n '-' +\n String(date.getDate()).padStart(2, '0') +\n 'T' +\n String(date.getHours()).padStart(2, '0') +\n ':' +\n String(date.getMinutes()).padStart(2, '0') +\n ':' +\n String(date.getSeconds()).padStart(2, '0') +\n '.' +\n String(date.getMilliseconds()).padStart(3, '0')\n\n if (offset < 0) {\n ret += '-'\n offset *= -1\n } else {\n ret += '+'\n }\n\n ret += String(Math.floor(offset / 60)).padStart(2, '0') + ':' + String(offset % 60).padStart(2, '0')\n if (isBCYear) ret += ' BC'\n return ret\n}\n\nfunction dateToStringUTC(date) {\n let year = date.getUTCFullYear()\n const isBCYear = year < 1\n if (isBCYear) year = Math.abs(year) + 1 // negative years are 1 off their BC representation\n\n let ret =\n String(year).padStart(4, '0') +\n '-' +\n String(date.getUTCMonth() + 1).padStart(2, '0') +\n '-' +\n String(date.getUTCDate()).padStart(2, '0') +\n 'T' +\n String(date.getUTCHours()).padStart(2, '0') +\n ':' +\n String(date.getUTCMinutes()).padStart(2, '0') +\n ':' +\n String(date.getUTCSeconds()).padStart(2, '0') +\n '.' +\n String(date.getUTCMilliseconds()).padStart(3, '0')\n\n ret += '+00:00'\n if (isBCYear) ret += ' BC'\n return ret\n}\n\nfunction normalizeQueryConfig(config, values, callback) {\n // can take in strings or config objects\n config = typeof config === 'string' ? { text: config } : config\n if (values) {\n if (typeof values === 'function') {\n config.callback = values\n } else {\n config.values = values\n }\n }\n if (callback) {\n config.callback = callback\n }\n return config\n}\n\n// Ported from PostgreSQL 9.2.4 source code in src/interfaces/libpq/fe-exec.c\nconst escapeIdentifier = function (str) {\n return '\"' + str.replace(/\"/g, '\"\"') + '\"'\n}\n\nconst escapeLiteral = function (str) {\n let hasBackslash = false\n let escaped = \"'\"\n\n if (str == null) {\n return \"''\"\n }\n\n if (typeof str !== 'string') {\n return \"''\"\n }\n\n for (let i = 0; i < str.length; i++) {\n const c = str[i]\n if (c === \"'\") {\n escaped += c + c\n } else if (c === '\\\\') {\n escaped += c + c\n hasBackslash = true\n } else {\n escaped += c\n }\n }\n\n escaped += \"'\"\n\n if (hasBackslash === true) {\n escaped = ' E' + escaped\n }\n\n return escaped\n}\n\nmodule.exports = {\n prepareValue: function prepareValueWrapper(value) {\n // this ensures that extra arguments do not get passed into prepareValue\n // by accident, eg: from calling values.map(utils.prepareValue)\n return prepareValue(value)\n },\n normalizeQueryConfig,\n escapeIdentifier,\n escapeLiteral,\n}\n","module.exports = {\n deprecate(fn) {\n return fn;\n },\n};\n","module.exports = {\n webcrypto: globalThis.crypto,\n createHash() {\n throw new Error(\"Node crypto is unavailable in browsers\");\n },\n};\n","const nodeCrypto = require('crypto')\n\nmodule.exports = {\n postgresMd5PasswordHash,\n randomBytes,\n deriveKey,\n sha256,\n hashByName,\n hmacSha256,\n md5,\n}\n\n/**\n * The Web Crypto API - grabbed from the Node.js library or the global\n * @type Crypto\n */\n// eslint-disable-next-line no-undef\nconst webCrypto = nodeCrypto.webcrypto || globalThis.crypto\n/**\n * The SubtleCrypto API for low level crypto operations.\n * @type SubtleCrypto\n */\nconst subtleCrypto = webCrypto.subtle\nconst textEncoder = new TextEncoder()\n\n/**\n *\n * @param {*} length\n * @returns\n */\nfunction randomBytes(length) {\n return webCrypto.getRandomValues(Buffer.alloc(length))\n}\n\nasync function md5(string) {\n try {\n return nodeCrypto.createHash('md5').update(string, 'utf-8').digest('hex')\n } catch (e) {\n // `createHash()` failed so we are probably not in Node.js, use the WebCrypto API instead.\n // Note that the MD5 algorithm on WebCrypto is not available in Node.js.\n // This is why we cannot just use WebCrypto in all environments.\n const data = typeof string === 'string' ? textEncoder.encode(string) : string\n const hash = await subtleCrypto.digest('MD5', data)\n return Array.from(new Uint8Array(hash))\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')\n }\n}\n\n// See AuthenticationMD5Password at https://www.postgresql.org/docs/current/static/protocol-flow.html\nasync function postgresMd5PasswordHash(user, password, salt) {\n const inner = await md5(password + user)\n const outer = await md5(Buffer.concat([Buffer.from(inner), salt]))\n return 'md5' + outer\n}\n\n/**\n * Create a SHA-256 digest of the given data\n * @param {Buffer} data\n */\nasync function sha256(text) {\n return await subtleCrypto.digest('SHA-256', text)\n}\n\nasync function hashByName(hashName, text) {\n return await subtleCrypto.digest(hashName, text)\n}\n\n/**\n * Sign the message with the given key\n * @param {ArrayBuffer} keyBuffer\n * @param {string} msg\n */\nasync function hmacSha256(keyBuffer, msg) {\n const key = await subtleCrypto.importKey('raw', keyBuffer, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign'])\n return await subtleCrypto.sign('HMAC', key, textEncoder.encode(msg))\n}\n\n/**\n * Derive a key from the password and salt\n * @param {string} password\n * @param {Uint8Array} salt\n * @param {number} iterations\n */\nasync function deriveKey(password, salt, iterations) {\n const key = await subtleCrypto.importKey('raw', textEncoder.encode(password), 'PBKDF2', false, ['deriveBits'])\n const params = { name: 'PBKDF2', hash: 'SHA-256', salt: salt, iterations: iterations }\n return await subtleCrypto.deriveBits(params, key, 32 * 8, ['deriveBits'])\n}\n","function x509Error(msg, cert) {\n return new Error('SASL channel binding: ' + msg + ' when parsing public certificate ' + cert.toString('base64'))\n}\n\nfunction readASN1Length(data, index) {\n let length = data[index++]\n if (length < 0x80) return { length, index }\n\n const lengthBytes = length & 0x7f\n if (lengthBytes > 4) throw x509Error('bad length', data)\n\n length = 0\n for (let i = 0; i < lengthBytes; i++) {\n length = (length << 8) | data[index++]\n }\n\n return { length, index }\n}\n\nfunction readASN1OID(data, index) {\n if (data[index++] !== 0x6) throw x509Error('non-OID data', data) // 6 = OID\n\n const { length: OIDLength, index: indexAfterOIDLength } = readASN1Length(data, index)\n index = indexAfterOIDLength\n const lastIndex = index + OIDLength\n\n const byte1 = data[index++]\n let oid = ((byte1 / 40) >> 0) + '.' + (byte1 % 40)\n\n while (index < lastIndex) {\n // loop over numbers in OID\n let value = 0\n while (index < lastIndex) {\n // loop over bytes in number\n const nextByte = data[index++]\n value = (value << 7) | (nextByte & 0x7f)\n if (nextByte < 0x80) break\n }\n oid += '.' + value\n }\n\n return { oid, index }\n}\n\nfunction expectASN1Seq(data, index) {\n if (data[index++] !== 0x30) throw x509Error('non-sequence data', data) // 30 = Sequence\n return readASN1Length(data, index)\n}\n\nfunction signatureAlgorithmHashFromCertificate(data, index) {\n // read this thread: https://www.postgresql.org/message-id/17760-b6c61e752ec07060%40postgresql.org\n if (index === undefined) index = 0\n index = expectASN1Seq(data, index).index\n const { length: certInfoLength, index: indexAfterCertInfoLength } = expectASN1Seq(data, index)\n index = indexAfterCertInfoLength + certInfoLength // skip over certificate info\n index = expectASN1Seq(data, index).index // skip over signature length field\n const { oid, index: indexAfterOID } = readASN1OID(data, index)\n switch (oid) {\n // RSA\n case '1.2.840.113549.1.1.4':\n return 'MD5'\n case '1.2.840.113549.1.1.5':\n return 'SHA-1'\n case '1.2.840.113549.1.1.11':\n return 'SHA-256'\n case '1.2.840.113549.1.1.12':\n return 'SHA-384'\n case '1.2.840.113549.1.1.13':\n return 'SHA-512'\n case '1.2.840.113549.1.1.14':\n return 'SHA-224'\n case '1.2.840.113549.1.1.15':\n return 'SHA512-224'\n case '1.2.840.113549.1.1.16':\n return 'SHA512-256'\n // ECDSA\n case '1.2.840.10045.4.1':\n return 'SHA-1'\n case '1.2.840.10045.4.3.1':\n return 'SHA-224'\n case '1.2.840.10045.4.3.2':\n return 'SHA-256'\n case '1.2.840.10045.4.3.3':\n return 'SHA-384'\n case '1.2.840.10045.4.3.4':\n return 'SHA-512'\n // RSASSA-PSS: hash is indicated separately\n case '1.2.840.113549.1.1.10': {\n index = indexAfterOID\n index = expectASN1Seq(data, index).index\n if (data[index++] !== 0xa0) throw x509Error('non-tag data', data) // a0 = constructed tag 0\n index = readASN1Length(data, index).index // skip over tag length field\n index = expectASN1Seq(data, index).index // skip over sequence length field\n const { oid: hashOID } = readASN1OID(data, index)\n switch (hashOID) {\n // standalone hash OIDs\n case '1.2.840.113549.2.5':\n return 'MD5'\n case '1.3.14.3.2.26':\n return 'SHA-1'\n case '2.16.840.1.101.3.4.2.1':\n return 'SHA-256'\n case '2.16.840.1.101.3.4.2.2':\n return 'SHA-384'\n case '2.16.840.1.101.3.4.2.3':\n return 'SHA-512'\n }\n throw x509Error('unknown hash OID ' + hashOID, data)\n }\n // Ed25519 -- see https: return//github.com/openssl/openssl/issues/15477\n case '1.3.101.110':\n case '1.3.101.112': // ph\n return 'SHA-512'\n // Ed448 -- still not in pg 17.2 (if supported, digest would be SHAKE256 x 64 bytes)\n case '1.3.101.111':\n case '1.3.101.113': // ph\n throw x509Error('Ed448 certificate channel binding is not currently supported by Postgres')\n }\n throw x509Error('unknown OID ' + oid, data)\n}\n\nmodule.exports = { signatureAlgorithmHashFromCertificate }\n","'use strict'\nconst crypto = require('./utils')\nconst { signatureAlgorithmHashFromCertificate } = require('./cert-signatures')\n\n// SASLprep (RFC 4013) — minimal in-tree implementation.\n//\n// Per RFC 5802 §2.2, the SCRAM-SHA-256 client must normalize the password via\n// SASLprep before feeding it into PBKDF2. PostgreSQL's server applies the same\n// SASLprep when computing the stored verifier, and libpq does the same client\n// side, so passwords whose NFKC form differs from the raw form\n// would otherwise authenticate against psql/libpq but fail against pg with `28P01`.\n//\n// We deliberately implement only the three steps that change the byte content:\n// 1. RFC 3454 Table C.1.2 (non-ASCII space) → U+0020 SPACE.\n// 2. RFC 3454 Table B.1 (commonly mapped to nothing) → empty.\n// 3. NFKC normalization.\n// We skip the prohibition (RFC 4013 §2.3) and bidi (RFC 3454 §6) checks.\n// libpq is forgiving on those paths and Postgres's own SASLprep matches that\n// leniency for legacy roles, so omitting the rejection logic keeps existing\n// roles working without adding complexity.\nfunction saslprep(password) {\n // RFC 3454 Table C.1.2 — non-ASCII space characters, mapped to U+0020.\n const nonAsciiSpace = /[\\u00A0\\u1680\\u2000-\\u200B\\u202F\\u205F\\u3000]/g\n // RFC 3454 Table B.1 — \"commonly mapped to nothing\". The set intentionally\n // contains zero-width joiners and variation selectors — the very characters\n // ESLint's no-misleading-character-class warns about — because they combine\n // with their neighbors and the RFC strips them for that reason.\n // eslint-disable-next-line no-misleading-character-class\n const mappedToNothing = /[\\u00AD\\u034F\\u1806\\u180B\\u180C\\u180D\\u200C\\u200D\\u2060\\uFE00-\\uFE0F\\uFEFF]/g\n return password.replace(nonAsciiSpace, ' ').replace(mappedToNothing, '').normalize('NFKC')\n}\n\nconst DEFAULT_MAX_SCRAM_ITERATIONS = 100000\n\nfunction startSession(mechanisms, stream, scramMaxIterations = DEFAULT_MAX_SCRAM_ITERATIONS) {\n const candidates = ['SCRAM-SHA-256']\n if (stream) candidates.unshift('SCRAM-SHA-256-PLUS') // higher-priority, so placed first\n\n const mechanism = candidates.find((candidate) => mechanisms.includes(candidate))\n\n if (!mechanism) {\n throw new Error('SASL: Only mechanism(s) ' + candidates.join(' and ') + ' are supported')\n }\n\n if (mechanism === 'SCRAM-SHA-256-PLUS' && typeof stream.getPeerCertificate !== 'function') {\n // this should never happen if we are really talking to a Postgres server\n throw new Error('SASL: Mechanism SCRAM-SHA-256-PLUS requires a certificate')\n }\n\n const clientNonce = crypto.randomBytes(18).toString('base64')\n const gs2Header = mechanism === 'SCRAM-SHA-256-PLUS' ? 'p=tls-server-end-point' : stream ? 'y' : 'n'\n\n return {\n mechanism,\n clientNonce,\n response: gs2Header + ',,n=*,r=' + clientNonce,\n message: 'SASLInitialResponse',\n scramMaxIterations,\n }\n}\n\nasync function continueSession(session, password, serverData, stream) {\n if (session.message !== 'SASLInitialResponse') {\n throw new Error('SASL: Last message was not SASLInitialResponse')\n }\n if (typeof password !== 'string') {\n throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string')\n }\n if (password === '') {\n throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a non-empty string')\n }\n if (typeof serverData !== 'string') {\n throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: serverData must be a string')\n }\n\n const sv = parseServerFirstMessage(serverData)\n\n if (!sv.nonce.startsWith(session.clientNonce)) {\n throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce does not start with client nonce')\n } else if (sv.nonce.length === session.clientNonce.length) {\n throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce is too short')\n }\n\n const scramMaxIterations =\n typeof session.scramMaxIterations === 'number' ? session.scramMaxIterations : DEFAULT_MAX_SCRAM_ITERATIONS\n // a value of 0 disables the iteration count check\n if (scramMaxIterations !== 0 && sv.iteration > scramMaxIterations) {\n throw new Error(\n 'SASL: SCRAM-SERVER-FIRST-MESSAGE: iteration count ' +\n sv.iteration +\n ' exceeds scramMaxIterations of ' +\n scramMaxIterations\n )\n }\n\n const clientFirstMessageBare = 'n=*,r=' + session.clientNonce\n const serverFirstMessage = 'r=' + sv.nonce + ',s=' + sv.salt + ',i=' + sv.iteration\n\n // without channel binding:\n let channelBinding = stream ? 'eSws' : 'biws' // 'y,,' or 'n,,', base64-encoded\n\n // override if channel binding is in use:\n if (session.mechanism === 'SCRAM-SHA-256-PLUS') {\n const peerCert = stream.getPeerCertificate().raw\n let hashName = signatureAlgorithmHashFromCertificate(peerCert)\n if (hashName === 'MD5' || hashName === 'SHA-1') hashName = 'SHA-256'\n const certHash = await crypto.hashByName(hashName, peerCert)\n const bindingData = Buffer.concat([Buffer.from('p=tls-server-end-point,,'), Buffer.from(certHash)])\n channelBinding = bindingData.toString('base64')\n }\n\n const clientFinalMessageWithoutProof = 'c=' + channelBinding + ',r=' + sv.nonce\n const authMessage = clientFirstMessageBare + ',' + serverFirstMessage + ',' + clientFinalMessageWithoutProof\n\n const saltBytes = Buffer.from(sv.salt, 'base64')\n const saltedPassword = await crypto.deriveKey(saslprep(password), saltBytes, sv.iteration)\n const clientKey = await crypto.hmacSha256(saltedPassword, 'Client Key')\n const storedKey = await crypto.sha256(clientKey)\n const clientSignature = await crypto.hmacSha256(storedKey, authMessage)\n const clientProof = xorBuffers(Buffer.from(clientKey), Buffer.from(clientSignature)).toString('base64')\n const serverKey = await crypto.hmacSha256(saltedPassword, 'Server Key')\n const serverSignatureBytes = await crypto.hmacSha256(serverKey, authMessage)\n\n session.message = 'SASLResponse'\n session.serverSignature = Buffer.from(serverSignatureBytes).toString('base64')\n session.response = clientFinalMessageWithoutProof + ',p=' + clientProof\n}\n\nfunction finalizeSession(session, serverData) {\n if (session.message !== 'SASLResponse') {\n throw new Error('SASL: Last message was not SASLResponse')\n }\n if (typeof serverData !== 'string') {\n throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: serverData must be a string')\n }\n\n const { serverSignature } = parseServerFinalMessage(serverData)\n\n if (serverSignature !== session.serverSignature) {\n throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature does not match')\n }\n}\n\n/**\n * printable = %x21-2B / %x2D-7E\n * ;; Printable ASCII except \",\".\n * ;; Note that any \"printable\" is also\n * ;; a valid \"value\".\n */\nfunction isPrintableChars(text) {\n if (typeof text !== 'string') {\n throw new TypeError('SASL: text must be a string')\n }\n return text\n .split('')\n .map((_, i) => text.charCodeAt(i))\n .every((c) => (c >= 0x21 && c <= 0x2b) || (c >= 0x2d && c <= 0x7e))\n}\n\n/**\n * base64-char = ALPHA / DIGIT / \"/\" / \"+\"\n *\n * base64-4 = 4base64-char\n *\n * base64-3 = 3base64-char \"=\"\n *\n * base64-2 = 2base64-char \"==\"\n *\n * base64 = *base64-4 [base64-3 / base64-2]\n */\nfunction isBase64(text) {\n return /^(?:[a-zA-Z0-9+/]{4})*(?:[a-zA-Z0-9+/]{2}==|[a-zA-Z0-9+/]{3}=)?$/.test(text)\n}\n\nfunction parseAttributePairs(text) {\n if (typeof text !== 'string') {\n throw new TypeError('SASL: attribute pairs text must be a string')\n }\n\n return new Map(\n text.split(',').map((attrValue) => {\n if (!/^.=/.test(attrValue)) {\n throw new Error('SASL: Invalid attribute pair entry')\n }\n const name = attrValue[0]\n const value = attrValue.substring(2)\n return [name, value]\n })\n )\n}\n\nfunction parseServerFirstMessage(data) {\n const attrPairs = parseAttributePairs(data)\n\n const nonce = attrPairs.get('r')\n if (!nonce) {\n throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: nonce missing')\n } else if (!isPrintableChars(nonce)) {\n throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: nonce must only contain printable characters')\n }\n const salt = attrPairs.get('s')\n if (!salt) {\n throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: salt missing')\n } else if (!isBase64(salt)) {\n throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: salt must be base64')\n }\n const iterationText = attrPairs.get('i')\n if (!iterationText) {\n throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: iteration missing')\n } else if (!/^[1-9][0-9]*$/.test(iterationText)) {\n throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: invalid iteration count')\n }\n const iteration = parseInt(iterationText, 10)\n\n return {\n nonce,\n salt,\n iteration,\n }\n}\n\nfunction parseServerFinalMessage(serverData) {\n const attrPairs = parseAttributePairs(serverData)\n const error = attrPairs.get('e')\n const serverSignature = attrPairs.get('v')\n\n if (error) {\n throw new Error(`SASL: SCRAM-SERVER-FINAL-MESSAGE: server returned error: \"${error}\"`)\n }\n\n if (!serverSignature) {\n throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature is missing')\n } else if (!isBase64(serverSignature)) {\n throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature must be base64')\n }\n return {\n serverSignature,\n }\n}\n\nfunction xorBuffers(a, b) {\n if (!Buffer.isBuffer(a)) {\n throw new TypeError('first argument must be a Buffer')\n }\n if (!Buffer.isBuffer(b)) {\n throw new TypeError('second argument must be a Buffer')\n }\n if (a.length !== b.length) {\n throw new Error('Buffer lengths must match')\n }\n if (a.length === 0) {\n throw new Error('Buffers cannot be empty')\n }\n return Buffer.from(a.map((_, i) => a[i] ^ b[i]))\n}\n\nmodule.exports = {\n startSession,\n continueSession,\n finalizeSession,\n DEFAULT_MAX_SCRAM_ITERATIONS,\n}\n","'use strict'\n\nconst types = require('pg-types')\n\nfunction TypeOverrides(userTypes) {\n this._types = userTypes || types\n this.text = {}\n this.binary = {}\n}\n\nTypeOverrides.prototype.getOverrides = function (format) {\n switch (format) {\n case 'text':\n return this.text\n case 'binary':\n return this.binary\n default:\n return {}\n }\n}\n\nTypeOverrides.prototype.setTypeParser = function (oid, format, parseFn) {\n if (typeof format === 'function') {\n parseFn = format\n format = 'text'\n }\n this.getOverrides(format)[oid] = parseFn\n}\n\nTypeOverrides.prototype.getTypeParser = function (oid, format) {\n format = format || 'text'\n return this.getOverrides(format)[oid] || this._types.getTypeParser(oid, format)\n}\n\nmodule.exports = TypeOverrides\n","module.exports = {\n lookup(_host, callback) {\n callback(new Error(\"DNS lookup is unavailable in the browser\"));\n },\n};\n","module.exports = new Proxy(\n {},\n {\n get() {\n throw new Error(\"filesystem access is unavailable in @ooraini/pgquic\");\n },\n },\n);\n","'use strict'\n\n//Parse method copied from https://github.com/brianc/node-postgres\n//Copyright (c) 2010-2014 Brian Carlson (brian.m.carlson@gmail.com)\n//MIT License\n\n//parses a connection string\nfunction parse(str, options = {}) {\n //unix socket\n if (str.charAt(0) === '/') {\n const config = str.split(' ')\n return { host: config[0], database: config[1] }\n }\n\n // Check for empty host in URL\n\n const config = Object.create(null)\n let result\n let dummyHost = false\n if (/ |%[^a-f0-9]|%[a-f0-9][^a-f0-9]/i.test(str)) {\n // Ensure spaces are encoded as %20\n str = encodeURI(str).replace(/%25(\\d\\d)/g, '%$1')\n }\n\n try {\n try {\n result = new URL(str, 'postgres://base')\n } catch (e) {\n // The URL is invalid so try again with a dummy host\n result = new URL(str.replace('@/', '@___DUMMY___/'), 'postgres://base')\n dummyHost = true\n }\n } catch (err) {\n // Remove the input from the error message to avoid leaking sensitive information\n err.input && (err.input = '*****REDACTED*****')\n throw err\n }\n\n // We'd like to use Object.fromEntries() here but Node.js 10 does not support it\n for (const entry of result.searchParams.entries()) {\n config[entry[0]] = entry[1]\n }\n\n config.user = config.user || decodeURIComponent(result.username)\n config.password = config.password || decodeURIComponent(result.password)\n\n if (result.protocol == 'socket:') {\n config.host = decodeURI(result.pathname)\n config.database = result.searchParams.get('db')\n config.client_encoding = result.searchParams.get('encoding')\n return config\n }\n const hostname = dummyHost ? '' : result.hostname\n if (!config.host) {\n // Only set the host if there is no equivalent query param.\n config.host = decodeURIComponent(hostname)\n } else if (hostname && /^%2f/i.test(hostname)) {\n // Only prepend the hostname to the pathname if it is not a URL encoded Unix socket host.\n result.pathname = hostname + result.pathname\n }\n if (!config.port) {\n // Only set the port if there is no equivalent query param.\n config.port = result.port\n }\n\n const pathname = result.pathname.slice(1) || null\n config.database = pathname ? decodeURI(pathname) : null\n\n if (config.ssl === 'true' || config.ssl === '1') {\n config.ssl = true\n }\n\n if (config.ssl === '0') {\n config.ssl = false\n }\n\n if (config.sslcert || config.sslkey || config.sslrootcert || config.sslmode) {\n config.ssl = {}\n }\n\n // sslnegotiation=direct implies SSL is in use (libpq requires sslmode>=require),\n // so enable SSL if the connection string did not otherwise configure it.\n if (config.sslnegotiation === 'direct' && config.ssl === undefined) {\n config.ssl = true\n }\n\n // Only try to load fs if we expect to read from the disk\n const fs = config.sslcert || config.sslkey || config.sslrootcert ? require('fs') : null\n\n if (config.sslcert) {\n config.ssl.cert = fs.readFileSync(config.sslcert).toString()\n }\n\n if (config.sslkey) {\n config.ssl.key = fs.readFileSync(config.sslkey).toString()\n }\n\n if (config.sslrootcert) {\n config.ssl.ca = fs.readFileSync(config.sslrootcert).toString()\n }\n\n if (options.useLibpqCompat && config.uselibpqcompat) {\n throw new Error('Both useLibpqCompat and uselibpqcompat are set. Please use only one of them.')\n }\n\n if (config.uselibpqcompat === 'true' || options.useLibpqCompat) {\n switch (config.sslmode) {\n case 'disable': {\n config.ssl = false\n break\n }\n case 'prefer': {\n config.ssl.rejectUnauthorized = false\n break\n }\n case 'require': {\n if (config.sslrootcert) {\n // If a root CA is specified, behavior of `sslmode=require` will be the same as that of `verify-ca`\n config.ssl.checkServerIdentity = function () {}\n } else {\n config.ssl.rejectUnauthorized = false\n }\n break\n }\n case 'verify-ca': {\n if (!config.ssl.ca) {\n throw new Error(\n 'SECURITY WARNING: Using sslmode=verify-ca requires specifying a CA with sslrootcert. If a public CA is used, verify-ca allows connections to a server that somebody else may have registered with the CA, making you vulnerable to Man-in-the-Middle attacks. Either specify a custom CA certificate with sslrootcert parameter or use sslmode=verify-full for proper security.'\n )\n }\n config.ssl.checkServerIdentity = function () {}\n break\n }\n case 'verify-full': {\n break\n }\n }\n } else {\n switch (config.sslmode) {\n case 'disable': {\n config.ssl = false\n break\n }\n case 'prefer':\n case 'require':\n case 'verify-ca':\n case 'verify-full': {\n if (config.sslmode !== 'verify-full') {\n deprecatedSslModeWarning(config.sslmode)\n }\n break\n }\n case 'no-verify': {\n config.ssl.rejectUnauthorized = false\n break\n }\n }\n }\n\n return config\n}\n\n// convert pg-connection-string ssl config to a ClientConfig.ConnectionOptions\nfunction toConnectionOptions(sslConfig) {\n const connectionOptions = Object.entries(sslConfig).reduce((c, [key, value]) => {\n // we explicitly check for undefined and null instead of `if (value)` because some\n // options accept falsy values. Example: `ssl.rejectUnauthorized = false`\n if (value !== undefined && value !== null) {\n c[key] = value\n }\n\n return c\n }, Object.create(null))\n\n return connectionOptions\n}\n\n// convert pg-connection-string config to a ClientConfig\nfunction toClientConfig(config) {\n const poolConfig = Object.entries(config).reduce((c, [key, value]) => {\n if (key === 'ssl') {\n const sslConfig = value\n\n if (typeof sslConfig === 'boolean') {\n c[key] = sslConfig\n }\n\n if (typeof sslConfig === 'object') {\n c[key] = toConnectionOptions(sslConfig)\n }\n } else if (value !== undefined && value !== null) {\n if (key === 'port') {\n // when port is not specified, it is converted into an empty string\n // we want to avoid NaN or empty string as a values in ClientConfig\n if (value !== '') {\n const v = parseInt(value, 10)\n if (isNaN(v)) {\n throw new Error(`Invalid ${key}: ${value}`)\n }\n\n c[key] = v\n }\n } else {\n c[key] = value\n }\n }\n\n return c\n }, Object.create(null))\n\n return poolConfig\n}\n\n// parses a connection string into ClientConfig\nfunction parseIntoClientConfig(str) {\n return toClientConfig(parse(str))\n}\n\nfunction deprecatedSslModeWarning(sslmode) {\n if (!deprecatedSslModeWarning.warned && typeof process !== 'undefined' && process.emitWarning) {\n deprecatedSslModeWarning.warned = true\n process.emitWarning(`SECURITY WARNING: The SSL modes 'prefer', 'require', and 'verify-ca' are treated as aliases for 'verify-full'.\nIn the next major version (pg-connection-string v3.0.0 and pg v9.0.0), these modes will adopt standard libpq semantics, which have weaker security guarantees.\n\nTo prepare for this change:\n- If you want the current behavior, explicitly use 'sslmode=verify-full'\n- If you want libpq compatibility now, use 'uselibpqcompat=true&sslmode=${sslmode}'\n\nSee https://www.postgresql.org/docs/current/libpq-ssl.html for libpq SSL mode definitions.`)\n }\n}\n\nmodule.exports = parse\n\nparse.parse = parse\nparse.toClientConfig = toClientConfig\nparse.parseIntoClientConfig = parseIntoClientConfig\n","'use strict'\n\nconst dns = require('dns')\n\nconst defaults = require('./defaults')\n\nconst parse = require('pg-connection-string').parse // parses a connection string\n\nconst val = function (key, config, envVar) {\n if (config[key]) {\n return config[key]\n }\n\n if (envVar === undefined) {\n envVar = process.env['PG' + key.toUpperCase()]\n } else if (envVar === false) {\n // do nothing ... use false\n } else {\n envVar = process.env[envVar]\n }\n\n return envVar || defaults[key]\n}\n\nconst readSSLConfigFromEnvironment = function () {\n switch (process.env.PGSSLMODE) {\n case 'disable':\n return false\n case 'prefer':\n case 'require':\n case 'verify-ca':\n case 'verify-full':\n return true\n case 'no-verify':\n return { rejectUnauthorized: false }\n }\n return defaults.ssl\n}\n\n// Convert arg to a string, surround in single quotes, and escape single quotes and backslashes\nconst quoteParamValue = function (value) {\n return \"'\" + ('' + value).replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\") + \"'\"\n}\n\nconst add = function (params, config, paramName) {\n const value = config[paramName]\n if (value !== undefined && value !== null) {\n params.push(paramName + '=' + quoteParamValue(value))\n }\n}\n\nclass ConnectionParameters {\n constructor(config) {\n // if a string is passed, it is a raw connection string so we parse it into a config\n config = typeof config === 'string' ? parse(config) : config || {}\n\n // if the config has a connectionString defined, parse IT into the config we use\n // this will override other default values with what is stored in connectionString\n if (config.connectionString) {\n config = Object.assign({}, config, parse(config.connectionString))\n }\n\n this.user = val('user', config)\n this.database = val('database', config)\n\n if (this.database === undefined) {\n this.database = this.user\n }\n\n this.port = parseInt(val('port', config), 10)\n this.host = val('host', config)\n\n // \"hiding\" the password so it doesn't show up in stack traces\n // or if the client is console.logged\n Object.defineProperty(this, 'password', {\n configurable: true,\n enumerable: false,\n writable: true,\n value: val('password', config),\n })\n\n this.binary = val('binary', config)\n this.options = val('options', config)\n\n this.ssl = typeof config.ssl === 'undefined' ? readSSLConfigFromEnvironment() : config.ssl\n\n if (typeof this.ssl === 'string') {\n if (this.ssl === 'true') {\n this.ssl = true\n }\n }\n // support passing in ssl=no-verify via connection string\n if (this.ssl === 'no-verify') {\n this.ssl = { rejectUnauthorized: false }\n }\n if (this.ssl && this.ssl.key) {\n Object.defineProperty(this.ssl, 'key', {\n enumerable: false,\n })\n }\n\n // How to negotiate SSL: 'postgres' (default, the traditional SSLRequest\n // handshake) or 'direct' (start the TLS handshake immediately on connect).\n this.sslnegotiation = val('sslnegotiation', config, 'PGSSLNEGOTIATION')\n if (this.sslnegotiation !== undefined && this.sslnegotiation !== 'postgres' && this.sslnegotiation !== 'direct') {\n throw new Error(\n `Invalid sslnegotiation value: \"${this.sslnegotiation}\". Valid values are \"postgres\" and \"direct\".`\n )\n }\n if (this.sslnegotiation === 'direct' && !this.ssl) {\n throw new Error('sslnegotiation=direct requires SSL to be enabled')\n }\n\n this.client_encoding = val('client_encoding', config)\n this.replication = val('replication', config)\n // a domain socket begins with '/'\n this.isDomainSocket = !(this.host || '').indexOf('/')\n\n this.application_name = val('application_name', config, 'PGAPPNAME')\n this.fallback_application_name = val('fallback_application_name', config, false)\n this.statement_timeout = val('statement_timeout', config, false)\n this.lock_timeout = val('lock_timeout', config, false)\n this.idle_in_transaction_session_timeout = val('idle_in_transaction_session_timeout', config, false)\n this.query_timeout = val('query_timeout', config, false)\n\n if (config.connectionTimeoutMillis === undefined) {\n this.connect_timeout = process.env.PGCONNECT_TIMEOUT || 0\n } else {\n this.connect_timeout = Math.floor(config.connectionTimeoutMillis / 1000)\n }\n\n if (config.keepAlive === false) {\n this.keepalives = 0\n } else if (config.keepAlive === true) {\n this.keepalives = 1\n }\n\n if (typeof config.keepAliveInitialDelayMillis === 'number') {\n this.keepalives_idle = Math.floor(config.keepAliveInitialDelayMillis / 1000)\n }\n }\n\n getLibpqConnectionString(cb) {\n const params = []\n add(params, this, 'user')\n add(params, this, 'password')\n add(params, this, 'port')\n add(params, this, 'application_name')\n add(params, this, 'fallback_application_name')\n add(params, this, 'connect_timeout')\n add(params, this, 'options')\n\n const ssl = typeof this.ssl === 'object' ? this.ssl : this.ssl ? { sslmode: this.ssl } : {}\n add(params, ssl, 'sslmode')\n add(params, ssl, 'sslca')\n add(params, ssl, 'sslkey')\n add(params, ssl, 'sslcert')\n add(params, ssl, 'sslrootcert')\n add(params, this, 'sslnegotiation')\n\n if (this.database) {\n params.push('dbname=' + quoteParamValue(this.database))\n }\n if (this.replication) {\n params.push('replication=' + quoteParamValue(this.replication))\n }\n if (this.host) {\n params.push('host=' + quoteParamValue(this.host))\n }\n if (this.isDomainSocket) {\n return cb(null, params.join(' '))\n }\n if (this.client_encoding) {\n params.push('client_encoding=' + quoteParamValue(this.client_encoding))\n }\n dns.lookup(this.host, function (err, address) {\n if (err) return cb(err, null)\n params.push('hostaddr=' + quoteParamValue(address))\n return cb(null, params.join(' '))\n })\n }\n}\n\nmodule.exports = ConnectionParameters\n","'use strict'\n\nconst types = require('pg-types')\n\nconst matchRegexp = /^([A-Za-z]+)(?: (\\d+))?(?: (\\d+))?/\n\n// result object returned from query\n// in the 'end' event and also\n// passed as second argument to provided callback\nclass Result {\n constructor(rowMode, types) {\n this.command = null\n this.rowCount = null\n this.oid = null\n this.rows = []\n this.fields = []\n this._parsers = undefined\n this._types = types\n this.RowCtor = null\n this.rowAsArray = rowMode === 'array'\n if (this.rowAsArray) {\n this.parseRow = this._parseRowAsArray\n }\n this._prebuiltEmptyResultObject = null\n }\n\n // adds a command complete message\n addCommandComplete(msg) {\n let match\n if (msg.text) {\n // pure javascript\n match = matchRegexp.exec(msg.text)\n } else {\n // native bindings\n match = matchRegexp.exec(msg.command)\n }\n if (match) {\n this.command = match[1]\n if (match[3]) {\n // COMMAND OID ROWS\n this.oid = parseInt(match[2], 10)\n this.rowCount = parseInt(match[3], 10)\n } else if (match[2]) {\n // COMMAND ROWS\n this.rowCount = parseInt(match[2], 10)\n }\n }\n }\n\n _parseRowAsArray(rowData) {\n const row = new Array(rowData.length)\n for (let i = 0, len = rowData.length; i < len; i++) {\n const rawValue = rowData[i]\n if (rawValue !== null) {\n row[i] = this._parsers[i](rawValue)\n } else {\n row[i] = null\n }\n }\n return row\n }\n\n parseRow(rowData) {\n const row = { ...this._prebuiltEmptyResultObject }\n for (let i = 0, len = rowData.length; i < len; i++) {\n const rawValue = rowData[i]\n const field = this.fields[i].name\n if (rawValue !== null) {\n const v = this.fields[i].format === 'binary' ? Buffer.from(rawValue) : rawValue\n row[field] = this._parsers[i](v)\n } else {\n row[field] = null\n }\n }\n return row\n }\n\n addRow(row) {\n this.rows.push(row)\n }\n\n addFields(fieldDescriptions) {\n // clears field definitions\n // multiple query statements in 1 action can result in multiple sets\n // of rowDescriptions...eg: 'select NOW(); select 1::int;'\n // you need to reset the fields\n this.fields = fieldDescriptions\n if (this.fields.length) {\n this._parsers = new Array(fieldDescriptions.length)\n }\n\n const row = Object.create(null)\n\n for (let i = 0; i < fieldDescriptions.length; i++) {\n const desc = fieldDescriptions[i]\n row[desc.name] = null\n\n if (this._types) {\n this._parsers[i] = this._types.getTypeParser(desc.dataTypeID, desc.format || 'text')\n } else {\n this._parsers[i] = types.getTypeParser(desc.dataTypeID, desc.format || 'text')\n }\n }\n\n this._prebuiltEmptyResultObject = { ...row }\n }\n}\n\nmodule.exports = Result\n","'use strict'\n\nconst { EventEmitter } = require('events')\n\nconst Result = require('./result')\nconst utils = require('./utils')\n\nclass Query extends EventEmitter {\n constructor(config, values, callback) {\n super()\n\n config = utils.normalizeQueryConfig(config, values, callback)\n\n this.text = config.text\n this.values = config.values\n this.rows = config.rows\n this.types = config.types\n this.name = config.name\n this.queryMode = config.queryMode\n this.binary = config.binary\n // use unique portal name each time\n this.portal = config.portal || ''\n this.callback = config.callback\n this._rowMode = config.rowMode\n if (process.domain && config.callback) {\n this.callback = process.domain.bind(config.callback)\n }\n this._result = new Result(this._rowMode, this.types)\n\n // potential for multiple results\n this._results = this._result\n this._canceledDueToError = false\n }\n\n requiresPreparation() {\n if (this.queryMode === 'extended') {\n return true\n }\n\n // named queries must always be prepared\n if (this.name) {\n return true\n }\n // always prepare if there are max number of rows expected per\n // portal execution\n if (this.rows) {\n return true\n }\n // don't prepare empty text queries\n if (!this.text) {\n return false\n }\n // prepare if there are values\n if (!this.values) {\n return false\n }\n return this.values.length > 0\n }\n\n _checkForMultirow() {\n // if we already have a result with a command property\n // then we've already executed one query in a multi-statement simple query\n // turn our results into an array of results\n if (this._result.command) {\n if (!Array.isArray(this._results)) {\n this._results = [this._result]\n }\n this._result = new Result(this._rowMode, this._result._types)\n this._results.push(this._result)\n }\n }\n\n // associates row metadata from the supplied\n // message with this query object\n // metadata used when parsing row results\n handleRowDescription(msg) {\n this._checkForMultirow()\n this._result.addFields(msg.fields)\n this._accumulateRows = this.callback || !this.listeners('row').length\n }\n\n handleDataRow(msg) {\n let row\n\n if (this._canceledDueToError) {\n return\n }\n\n try {\n row = this._result.parseRow(msg.fields)\n } catch (err) {\n this._canceledDueToError = err\n return\n }\n\n this.emit('row', row, this._result)\n if (this._accumulateRows) {\n this._result.addRow(row)\n }\n }\n\n handleCommandComplete(msg, connection) {\n this._checkForMultirow()\n this._result.addCommandComplete(msg)\n // need to sync after each command complete of a prepared statement\n // if we were using a row count which results in multiple calls to _getRows\n if (this.rows) {\n connection.sync()\n }\n }\n\n // if a named prepared statement is created with empty query text\n // the backend will send an emptyQuery message but *not* a command complete message\n // since we pipeline sync immediately after execute we don't need to do anything here\n // unless we have rows specified, in which case we did not pipeline the initial sync call\n handleEmptyQuery(connection) {\n if (this.rows) {\n connection.sync()\n }\n }\n\n handleError(err, connection) {\n // need to sync after error during a prepared statement\n if (this._canceledDueToError) {\n err = this._canceledDueToError\n this._canceledDueToError = false\n }\n // if callback supplied do not emit error event as uncaught error\n // events will bubble up to node process\n if (this.callback) {\n return this.callback(err)\n }\n this.emit('error', err)\n }\n\n handleReadyForQuery(con) {\n if (this._canceledDueToError) {\n return this.handleError(this._canceledDueToError, con)\n }\n if (this.callback) {\n try {\n this.callback(null, this._results)\n } catch (err) {\n process.nextTick(() => {\n throw err\n })\n }\n }\n this.emit('end', this._results)\n }\n\n submit(connection) {\n if (typeof this.text !== 'string' && typeof this.name !== 'string') {\n return new Error('A query must have either text or a name. Supplying neither is unsupported.')\n }\n const previous = connection.parsedStatements[this.name] || connection.submittedNamedStatements[this.name]\n if (this.text && previous && this.text !== previous) {\n return new Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`)\n }\n if (this.values && !Array.isArray(this.values)) {\n return new Error('Query values must be an array')\n }\n if (this.requiresPreparation()) {\n // If we're using the extended query protocol we fire off several separate commands\n // to the backend. On some versions of node & some operating system versions\n // the network stack writes each message separately instead of buffering them together\n // causing the client & network to send more slowly. Corking & uncorking the stream\n // allows node to buffer up the messages internally before sending them all off at once.\n // note: we're checking for existence of cork/uncork because some versions of streams\n // might not have this (cloudflare?)\n connection.stream.cork && connection.stream.cork()\n try {\n this.prepare(connection)\n } finally {\n // while unlikely for this.prepare to throw, if it does & we don't uncork this stream\n // this client becomes unresponsive, so put in finally block \"just in case\"\n connection.stream.uncork && connection.stream.uncork()\n }\n } else {\n connection.query(this.text)\n }\n return null\n }\n\n hasBeenParsed(connection) {\n return this.name && (connection.parsedStatements[this.name] || connection.submittedNamedStatements[this.name])\n }\n\n handlePortalSuspended(connection) {\n this._getRows(connection, this.rows)\n }\n\n _getRows(connection, rows) {\n connection.execute({\n portal: this.portal,\n rows: rows,\n })\n // if we're not reading pages of rows send the sync command\n // to indicate the pipeline is finished\n if (!rows) {\n connection.sync()\n } else {\n // otherwise flush the call out to read more rows\n connection.flush()\n }\n }\n\n // http://developer.postgresql.org/pgdocs/postgres/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY\n prepare(connection) {\n // TODO refactor this poor encapsulation\n if (!this.hasBeenParsed(connection)) {\n connection.parse({\n text: this.text,\n name: this.name,\n types: this.types,\n })\n if (this.name) {\n connection.submittedNamedStatements[this.name] = this.text\n }\n }\n\n // because we're mapping user supplied values to\n // postgres wire protocol compatible values it could\n // throw an exception, so try/catch this section\n try {\n connection.bind({\n portal: this.portal,\n statement: this.name,\n values: this.values,\n binary: this.binary,\n valueMapper: utils.prepareValue,\n })\n } catch (err) {\n // we should close parse to avoid leaking connections\n connection.close({ type: 'S', name: this.name })\n connection.sync()\n\n this.handleError(err, connection)\n return\n }\n\n connection.describe({\n type: 'P',\n name: this.portal || '',\n })\n\n this._getRows(connection, this.rows)\n }\n\n handleCopyInResponse(connection) {\n connection.sendCopyFail('No source stream defined')\n }\n\n handleCopyData(msg, connection) {\n // noop\n }\n}\n\nmodule.exports = Query\n","export type Mode = 'text' | 'binary'\n\nexport type MessageName =\n | 'parseComplete'\n | 'bindComplete'\n | 'closeComplete'\n | 'noData'\n | 'portalSuspended'\n | 'replicationStart'\n | 'emptyQuery'\n | 'copyDone'\n | 'copyData'\n | 'rowDescription'\n | 'parameterDescription'\n | 'parameterStatus'\n | 'backendKeyData'\n | 'notification'\n | 'readyForQuery'\n | 'commandComplete'\n | 'dataRow'\n | 'copyInResponse'\n | 'copyOutResponse'\n | 'authenticationOk'\n | 'authenticationMD5Password'\n | 'authenticationCleartextPassword'\n | 'authenticationSASL'\n | 'authenticationSASLContinue'\n | 'authenticationSASLFinal'\n | 'error'\n | 'notice'\n\nexport interface BackendMessage {\n name: MessageName\n length: number\n}\n\nexport const parseComplete: BackendMessage = {\n name: 'parseComplete',\n length: 5,\n}\n\nexport const bindComplete: BackendMessage = {\n name: 'bindComplete',\n length: 5,\n}\n\nexport const closeComplete: BackendMessage = {\n name: 'closeComplete',\n length: 5,\n}\n\nexport const noData: BackendMessage = {\n name: 'noData',\n length: 5,\n}\n\nexport const portalSuspended: BackendMessage = {\n name: 'portalSuspended',\n length: 5,\n}\n\nexport const replicationStart: BackendMessage = {\n name: 'replicationStart',\n length: 4,\n}\n\nexport const emptyQuery: BackendMessage = {\n name: 'emptyQuery',\n length: 4,\n}\n\nexport const copyDone: BackendMessage = {\n name: 'copyDone',\n length: 4,\n}\n\ninterface NoticeOrError {\n message: string | undefined\n severity: string | undefined\n code: string | undefined\n detail: string | undefined\n hint: string | undefined\n position: string | undefined\n internalPosition: string | undefined\n internalQuery: string | undefined\n where: string | undefined\n schema: string | undefined\n table: string | undefined\n column: string | undefined\n dataType: string | undefined\n constraint: string | undefined\n file: string | undefined\n line: string | undefined\n routine: string | undefined\n}\n\nexport class DatabaseError extends Error implements NoticeOrError {\n public severity: string | undefined\n public code: string | undefined\n public detail: string | undefined\n public hint: string | undefined\n public position: string | undefined\n public internalPosition: string | undefined\n public internalQuery: string | undefined\n public where: string | undefined\n public schema: string | undefined\n public table: string | undefined\n public column: string | undefined\n public dataType: string | undefined\n public constraint: string | undefined\n public file: string | undefined\n public line: string | undefined\n public routine: string | undefined\n constructor(\n message: string,\n public readonly length: number,\n public readonly name: MessageName\n ) {\n super(message)\n }\n}\n\nexport class CopyDataMessage {\n public readonly name = 'copyData'\n constructor(\n public readonly length: number,\n public readonly chunk: Buffer\n ) {}\n}\n\nexport class CopyResponse {\n public readonly columnTypes: number[]\n constructor(\n public readonly length: number,\n public readonly name: MessageName,\n public readonly binary: boolean,\n columnCount: number\n ) {\n this.columnTypes = new Array(columnCount)\n }\n}\n\nexport class Field {\n constructor(\n public readonly name: string,\n public readonly tableID: number,\n public readonly columnID: number,\n public readonly dataTypeID: number,\n public readonly dataTypeSize: number,\n public readonly dataTypeModifier: number,\n public readonly format: Mode\n ) {}\n}\n\nexport class RowDescriptionMessage {\n public readonly name: MessageName = 'rowDescription'\n public readonly fields: Field[]\n constructor(\n public readonly length: number,\n public readonly fieldCount: number\n ) {\n this.fields = new Array(this.fieldCount)\n }\n}\n\nexport class ParameterDescriptionMessage {\n public readonly name: MessageName = 'parameterDescription'\n public readonly dataTypeIDs: number[]\n constructor(\n public readonly length: number,\n public readonly parameterCount: number\n ) {\n this.dataTypeIDs = new Array(this.parameterCount)\n }\n}\n\nexport class ParameterStatusMessage {\n public readonly name: MessageName = 'parameterStatus'\n constructor(\n public readonly length: number,\n public readonly parameterName: string,\n public readonly parameterValue: string\n ) {}\n}\n\nexport class AuthenticationMD5Password implements BackendMessage {\n public readonly name: MessageName = 'authenticationMD5Password'\n constructor(\n public readonly length: number,\n public readonly salt: Buffer\n ) {}\n}\n\nexport class BackendKeyDataMessage {\n public readonly name: MessageName = 'backendKeyData'\n constructor(\n public readonly length: number,\n public readonly processID: number,\n public readonly secretKey: number\n ) {}\n}\n\nexport class NotificationResponseMessage {\n public readonly name: MessageName = 'notification'\n constructor(\n public readonly length: number,\n public readonly processId: number,\n public readonly channel: string,\n public readonly payload: string\n ) {}\n}\n\nexport class ReadyForQueryMessage {\n public readonly name: MessageName = 'readyForQuery'\n constructor(\n public readonly length: number,\n public readonly status: string\n ) {}\n}\n\nexport class CommandCompleteMessage {\n public readonly name: MessageName = 'commandComplete'\n constructor(\n public readonly length: number,\n public readonly text: string\n ) {}\n}\n\nexport class DataRowMessage {\n public readonly fieldCount: number\n public readonly name: MessageName = 'dataRow'\n constructor(\n public length: number,\n public fields: any[]\n ) {\n this.fieldCount = fields.length\n }\n}\n\nexport class NoticeMessage implements BackendMessage, NoticeOrError {\n constructor(\n public readonly length: number,\n public readonly message: string | undefined\n ) {}\n public readonly name = 'notice'\n public severity: string | undefined\n public code: string | undefined\n public detail: string | undefined\n public hint: string | undefined\n public position: string | undefined\n public internalPosition: string | undefined\n public internalQuery: string | undefined\n public where: string | undefined\n public schema: string | undefined\n public table: string | undefined\n public column: string | undefined\n public dataType: string | undefined\n public constraint: string | undefined\n public file: string | undefined\n public line: string | undefined\n public routine: string | undefined\n}\n","//binary data writer tuned for encoding binary specific to the postgres binary protocol\n\nexport class Writer {\n private buffer: Buffer\n private offset: number = 5\n private headerPosition: number = 0\n constructor(private size = 256) {\n this.buffer = Buffer.allocUnsafe(size)\n }\n\n private ensure(size: number): void {\n const remaining = this.buffer.length - this.offset\n if (remaining < size) {\n const oldBuffer = this.buffer\n // exponential growth factor of around ~ 1.5\n // https://stackoverflow.com/questions/2269063/buffer-growth-strategy\n const newSize = oldBuffer.length + (oldBuffer.length >> 1) + size\n this.buffer = Buffer.allocUnsafe(newSize)\n oldBuffer.copy(this.buffer)\n }\n }\n\n public addInt32(num: number): Writer {\n this.ensure(4)\n this.buffer[this.offset++] = (num >>> 24) & 0xff\n this.buffer[this.offset++] = (num >>> 16) & 0xff\n this.buffer[this.offset++] = (num >>> 8) & 0xff\n this.buffer[this.offset++] = (num >>> 0) & 0xff\n return this\n }\n\n public addInt16(num: number): Writer {\n this.ensure(2)\n this.buffer[this.offset++] = (num >>> 8) & 0xff\n this.buffer[this.offset++] = (num >>> 0) & 0xff\n return this\n }\n\n public addCString(string: string): Writer {\n if (!string) {\n this.ensure(1)\n } else {\n const len = Buffer.byteLength(string)\n this.ensure(len + 1) // +1 for null terminator\n this.buffer.write(string, this.offset, 'utf-8')\n this.offset += len\n }\n\n this.buffer[this.offset++] = 0 // null terminator\n return this\n }\n\n public addString(string: string = ''): Writer {\n const len = Buffer.byteLength(string)\n this.ensure(len)\n this.buffer.write(string, this.offset)\n this.offset += len\n return this\n }\n\n // Write an Int32 byte-length prefix immediately followed by the string's UTF-8\n // bytes. Postgres' Bind wire format prefixes every parameter with its length,\n // and doing it in one method computes Buffer.byteLength ONCE — the previous\n // `addInt32(Buffer.byteLength(s)).addString(s)` pairing scanned the string\n // three times (byteLength for the prefix, byteLength again inside addString,\n // then the encode), which is costly for large text parameters.\n public addInt32PrefixedString(string: string): Writer {\n const len = Buffer.byteLength(string)\n this.ensure(4 + len)\n const buffer = this.buffer\n let offset = this.offset\n buffer[offset++] = (len >>> 24) & 0xff\n buffer[offset++] = (len >>> 16) & 0xff\n buffer[offset++] = (len >>> 8) & 0xff\n buffer[offset++] = (len >>> 0) & 0xff\n buffer.write(string, offset, 'utf-8')\n this.offset = offset + len\n return this\n }\n\n public add(otherBuffer: Buffer): Writer {\n this.ensure(otherBuffer.length)\n otherBuffer.copy(this.buffer, this.offset)\n this.offset += otherBuffer.length\n return this\n }\n\n private join(code?: number): Buffer {\n if (code) {\n this.buffer[this.headerPosition] = code\n //length is everything in this packet minus the code\n const length = this.offset - (this.headerPosition + 1)\n this.buffer.writeInt32BE(length, this.headerPosition + 1)\n }\n return this.buffer.slice(code ? 0 : 5, this.offset)\n }\n\n public flush(code?: number): Buffer {\n const result = this.join(code)\n this.offset = 5\n this.headerPosition = 0\n this.buffer = Buffer.allocUnsafe(this.size)\n return result\n }\n\n public clear(): void {\n this.offset = 5\n this.headerPosition = 0\n }\n}\n","import { Writer } from './buffer-writer'\n\nconst enum code {\n startup = 0x70,\n query = 0x51,\n parse = 0x50,\n bind = 0x42,\n execute = 0x45,\n flush = 0x48,\n sync = 0x53,\n end = 0x58,\n close = 0x43,\n describe = 0x44,\n copyFromChunk = 0x64,\n copyDone = 0x63,\n copyFail = 0x66,\n}\n\nconst writer = new Writer()\n\nconst startup = (opts: Record<string, string>): Buffer => {\n // protocol version\n writer.addInt16(3).addInt16(0)\n for (const key of Object.keys(opts)) {\n writer.addCString(key).addCString(opts[key])\n }\n\n writer.addCString('client_encoding').addCString('UTF8')\n\n const bodyBuffer = writer.addCString('').flush()\n // this message is sent without a code\n\n const length = bodyBuffer.length + 4\n\n return new Writer().addInt32(length).add(bodyBuffer).flush()\n}\n\nconst requestSsl = (): Buffer => {\n const response = Buffer.allocUnsafe(8)\n response.writeInt32BE(8, 0)\n response.writeInt32BE(80877103, 4)\n return response\n}\n\nconst password = (password: string): Buffer => {\n return writer.addCString(password).flush(code.startup)\n}\n\nconst sendSASLInitialResponseMessage = function (mechanism: string, initialResponse: string): Buffer {\n // 0x70 = 'p'\n writer.addCString(mechanism).addInt32PrefixedString(initialResponse)\n\n return writer.flush(code.startup)\n}\n\nconst sendSCRAMClientFinalMessage = function (additionalData: string): Buffer {\n return writer.addString(additionalData).flush(code.startup)\n}\n\nconst query = (text: string): Buffer => {\n return writer.addCString(text).flush(code.query)\n}\n\ntype ParseOpts = {\n name?: string\n types?: number[]\n text: string\n}\n\nconst emptyArray: any[] = []\n\nconst parse = (query: ParseOpts): Buffer => {\n // expect something like this:\n // { name: 'queryName',\n // text: 'select * from blah',\n // types: ['int8', 'bool'] }\n\n // normalize missing query names to allow for null\n const name = query.name || ''\n if (name.length > 63) {\n console.error('Warning! Postgres only supports 63 characters for query names.')\n console.error('You supplied %s (%s)', name, name.length)\n console.error('This can cause conflicts and silent errors executing queries')\n }\n\n const types = query.types || emptyArray\n\n const len = types.length\n\n const buffer = writer\n .addCString(name) // name of query\n .addCString(query.text) // actual query text\n .addInt16(len)\n\n for (let i = 0; i < len; i++) {\n buffer.addInt32(types[i])\n }\n\n return writer.flush(code.parse)\n}\n\ntype ValueMapper = (param: any, index: number) => any\n\ntype BindOpts = {\n portal?: string\n binary?: boolean\n statement?: string\n values?: any[]\n // optional map from JS value to postgres value per parameter\n valueMapper?: ValueMapper\n}\n\nconst paramWriter = new Writer()\n\n// make this a const enum so typescript will inline the value\nconst enum ParamType {\n STRING = 0,\n BINARY = 1,\n}\n\nconst writeValues = function (values: any[], valueMapper?: ValueMapper): void {\n for (let i = 0; i < values.length; i++) {\n const mappedVal = valueMapper ? valueMapper(values[i], i) : values[i]\n if (mappedVal == null) {\n // add the param type (string) to the writer\n writer.addInt16(ParamType.STRING)\n // write -1 to the param writer to indicate null\n paramWriter.addInt32(-1)\n } else if (mappedVal instanceof Buffer) {\n // add the param type (binary) to the writer\n writer.addInt16(ParamType.BINARY)\n // add the buffer to the param writer\n paramWriter.addInt32(mappedVal.length)\n paramWriter.add(mappedVal)\n } else {\n // add the param type (string) to the writer\n writer.addInt16(ParamType.STRING)\n // length prefix + UTF-8 bytes in one pass (Buffer.byteLength computed once)\n paramWriter.addInt32PrefixedString(mappedVal)\n }\n }\n}\n\nconst bind = (config: BindOpts = {}): Buffer => {\n // normalize config\n const portal = config.portal || ''\n const statement = config.statement || ''\n const binary = config.binary || false\n const values = config.values || emptyArray\n const len = values.length\n\n writer.addCString(portal).addCString(statement)\n writer.addInt16(len)\n\n try {\n writeValues(values, config.valueMapper)\n } catch (err) {\n writer.clear()\n paramWriter.clear()\n throw err\n }\n\n writer.addInt16(len)\n writer.add(paramWriter.flush())\n\n // all results use the same format code\n writer.addInt16(1)\n // format code\n writer.addInt16(binary ? ParamType.BINARY : ParamType.STRING)\n return writer.flush(code.bind)\n}\n\ntype ExecOpts = {\n portal?: string\n rows?: number\n}\n\nconst emptyExecute = Buffer.from([code.execute, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00])\n\nconst execute = (config?: ExecOpts): Buffer => {\n // this is the happy path for most queries\n if (!config || (!config.portal && !config.rows)) {\n return emptyExecute\n }\n\n const portal = config.portal || ''\n const rows = config.rows || 0\n\n const portalLength = Buffer.byteLength(portal)\n const len = 4 + portalLength + 1 + 4\n // one extra bit for code\n const buff = Buffer.allocUnsafe(1 + len)\n buff[0] = code.execute\n buff.writeInt32BE(len, 1)\n buff.write(portal, 5, 'utf-8')\n buff[portalLength + 5] = 0 // null terminate portal cString\n buff.writeUInt32BE(rows, buff.length - 4)\n return buff\n}\n\nconst cancel = (processID: number, secretKey: number): Buffer => {\n const buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32BE(16, 0)\n buffer.writeInt16BE(1234, 4)\n buffer.writeInt16BE(5678, 6)\n buffer.writeInt32BE(processID, 8)\n buffer.writeInt32BE(secretKey, 12)\n return buffer\n}\n\ntype PortalOpts = {\n type: 'S' | 'P'\n name?: string\n}\n\nconst cstringMessage = (code: code, string: string): Buffer => {\n const stringLen = Buffer.byteLength(string)\n const len = 4 + stringLen + 1\n // one extra bit for code\n const buffer = Buffer.allocUnsafe(1 + len)\n buffer[0] = code\n buffer.writeInt32BE(len, 1)\n buffer.write(string, 5, 'utf-8')\n buffer[len] = 0 // null terminate cString\n return buffer\n}\n\nconst emptyDescribePortal = writer.addCString('P').flush(code.describe)\nconst emptyDescribeStatement = writer.addCString('S').flush(code.describe)\n\nconst describe = (msg: PortalOpts): Buffer => {\n return msg.name\n ? cstringMessage(code.describe, `${msg.type}${msg.name || ''}`)\n : msg.type === 'P'\n ? emptyDescribePortal\n : emptyDescribeStatement\n}\n\nconst close = (msg: PortalOpts): Buffer => {\n const text = `${msg.type}${msg.name || ''}`\n return cstringMessage(code.close, text)\n}\n\nconst copyData = (chunk: Buffer): Buffer => {\n return writer.add(chunk).flush(code.copyFromChunk)\n}\n\nconst copyFail = (message: string): Buffer => {\n return cstringMessage(code.copyFail, message)\n}\n\nconst codeOnlyBuffer = (code: code): Buffer => Buffer.from([code, 0x00, 0x00, 0x00, 0x04])\n\nconst flushBuffer = codeOnlyBuffer(code.flush)\nconst syncBuffer = codeOnlyBuffer(code.sync)\nconst endBuffer = codeOnlyBuffer(code.end)\nconst copyDoneBuffer = codeOnlyBuffer(code.copyDone)\n\nconst serialize = {\n startup,\n password,\n requestSsl,\n sendSASLInitialResponseMessage,\n sendSCRAMClientFinalMessage,\n query,\n parse,\n bind,\n execute,\n describe,\n close,\n flush: () => flushBuffer,\n sync: () => syncBuffer,\n end: () => endBuffer,\n copyData,\n copyDone: () => copyDoneBuffer,\n copyFail,\n cancel,\n}\n\nexport { serialize }\n","export class BufferReader {\n private buffer: Buffer = Buffer.allocUnsafe(0)\n\n // TODO(bmc): support non-utf8 encoding?\n private encoding: BufferEncoding = 'utf-8'\n\n constructor(private offset: number = 0) {}\n\n public setBuffer(offset: number, buffer: Buffer): void {\n this.offset = offset\n this.buffer = buffer\n }\n\n public int16(): number {\n const result = this.buffer.readInt16BE(this.offset)\n this.offset += 2\n return result\n }\n\n public byte(): number {\n const result = this.buffer[this.offset]\n this.offset++\n return result\n }\n\n public int32(): number {\n const result = this.buffer.readInt32BE(this.offset)\n this.offset += 4\n return result\n }\n\n public uint32(): number {\n const result = this.buffer.readUInt32BE(this.offset)\n this.offset += 4\n return result\n }\n\n public string(length: number): string {\n const result = this.buffer.toString(this.encoding, this.offset, this.offset + length)\n this.offset += length\n return result\n }\n\n public cstring(): string {\n const start = this.offset\n let end = start\n // eslint-disable-next-line no-empty\n while (this.buffer[end++]) {}\n this.offset = end\n return this.buffer.toString(this.encoding, start, end - 1)\n }\n\n public bytes(length: number): Buffer {\n const result = this.buffer.slice(this.offset, this.offset + length)\n this.offset += length\n return result\n }\n}\n","import { TransformOptions } from 'stream'\nimport {\n Mode,\n bindComplete,\n parseComplete,\n closeComplete,\n noData,\n portalSuspended,\n copyDone,\n replicationStart,\n emptyQuery,\n ReadyForQueryMessage,\n CommandCompleteMessage,\n CopyDataMessage,\n CopyResponse,\n NotificationResponseMessage,\n RowDescriptionMessage,\n ParameterDescriptionMessage,\n Field,\n DataRowMessage,\n ParameterStatusMessage,\n BackendKeyDataMessage,\n DatabaseError,\n BackendMessage,\n MessageName,\n AuthenticationMD5Password,\n NoticeMessage,\n} from './messages'\nimport { BufferReader } from './buffer-reader'\n\n// every message is prefixed with a single byte\nconst CODE_LENGTH = 1\n// every message has an int32 length which includes itself but does\n// NOT include the code in the length\nconst LEN_LENGTH = 4\n\nconst HEADER_LENGTH = CODE_LENGTH + LEN_LENGTH\n\n// A placeholder for a `BackendMessage`’s length value that will be set after construction.\nconst LATEINIT_LENGTH = -1\n\nexport type Packet = {\n code: number\n packet: Buffer\n}\n\nconst emptyBuffer = Buffer.allocUnsafe(0)\n\ntype StreamOptions = TransformOptions & {\n mode: Mode\n}\n\nconst enum MessageCodes {\n DataRow = 0x44, // D\n ParseComplete = 0x31, // 1\n BindComplete = 0x32, // 2\n CloseComplete = 0x33, // 3\n CommandComplete = 0x43, // C\n ReadyForQuery = 0x5a, // Z\n NoData = 0x6e, // n\n NotificationResponse = 0x41, // A\n AuthenticationResponse = 0x52, // R\n ParameterStatus = 0x53, // S\n BackendKeyData = 0x4b, // K\n ErrorMessage = 0x45, // E\n NoticeMessage = 0x4e, // N\n RowDescriptionMessage = 0x54, // T\n ParameterDescriptionMessage = 0x74, // t\n PortalSuspended = 0x73, // s\n ReplicationStart = 0x57, // W\n EmptyQuery = 0x49, // I\n CopyIn = 0x47, // G\n CopyOut = 0x48, // H\n CopyDone = 0x63, // c\n CopyData = 0x64, // d\n}\n\nexport type MessageCallback = (msg: BackendMessage) => void\n\nexport class Parser {\n private buffer: Buffer = emptyBuffer\n private bufferLength: number = 0\n private bufferOffset: number = 0\n private reader = new BufferReader()\n private mode: Mode\n\n constructor(opts?: StreamOptions) {\n if (opts?.mode === 'binary') {\n throw new Error('Binary mode not supported yet')\n }\n this.mode = opts?.mode || 'text'\n }\n\n public parse(buffer: Buffer, callback: MessageCallback) {\n this.mergeBuffer(buffer)\n const bufferFullLength = this.bufferOffset + this.bufferLength\n let offset = this.bufferOffset\n while (offset + HEADER_LENGTH <= bufferFullLength) {\n // code is 1 byte long - it identifies the message type\n const code = this.buffer[offset]\n // length is 1 Uint32BE - it is the length of the message EXCLUDING the code\n const length = this.buffer.readUInt32BE(offset + CODE_LENGTH)\n const fullMessageLength = CODE_LENGTH + length\n if (fullMessageLength + offset <= bufferFullLength) {\n const message = this.handlePacket(offset + HEADER_LENGTH, code, length, this.buffer)\n callback(message)\n offset += fullMessageLength\n } else {\n break\n }\n }\n if (offset === bufferFullLength) {\n // No more use for the buffer\n this.buffer = emptyBuffer\n this.bufferLength = 0\n this.bufferOffset = 0\n } else {\n // Adjust the cursors of remainingBuffer\n this.bufferLength = bufferFullLength - offset\n this.bufferOffset = offset\n }\n }\n\n private mergeBuffer(buffer: Buffer): void {\n if (this.bufferLength > 0) {\n const newLength = this.bufferLength + buffer.byteLength\n const newFullLength = newLength + this.bufferOffset\n if (newFullLength > this.buffer.byteLength) {\n // We can't concat the new buffer with the remaining one\n let newBuffer: Buffer\n if (newLength <= this.buffer.byteLength && this.bufferOffset >= this.bufferLength) {\n // We can move the relevant part to the beginning of the buffer instead of allocating a new buffer\n newBuffer = this.buffer\n } else {\n // Allocate a new larger buffer\n let newBufferLength = this.buffer.byteLength * 2\n while (newLength >= newBufferLength) {\n newBufferLength *= 2\n }\n newBuffer = Buffer.allocUnsafe(newBufferLength)\n }\n // Move the remaining buffer to the new one\n this.buffer.copy(newBuffer, 0, this.bufferOffset, this.bufferOffset + this.bufferLength)\n this.buffer = newBuffer\n this.bufferOffset = 0\n }\n // Concat the new buffer with the remaining one\n buffer.copy(this.buffer, this.bufferOffset + this.bufferLength)\n this.bufferLength = newLength\n } else {\n this.buffer = buffer\n this.bufferOffset = 0\n this.bufferLength = buffer.byteLength\n }\n }\n\n private handlePacket(offset: number, code: number, length: number, bytes: Buffer): BackendMessage {\n const { reader } = this\n\n // NOTE: This undesirably retains the buffer in `this.reader` if the `parse*Message` calls below throw. However, those should only throw in the case of a protocol error, which normally results in the reader being discarded.\n reader.setBuffer(offset, bytes)\n\n let message: BackendMessage\n\n switch (code) {\n case MessageCodes.BindComplete:\n message = bindComplete\n break\n case MessageCodes.ParseComplete:\n message = parseComplete\n break\n case MessageCodes.CloseComplete:\n message = closeComplete\n break\n case MessageCodes.NoData:\n message = noData\n break\n case MessageCodes.PortalSuspended:\n message = portalSuspended\n break\n case MessageCodes.CopyDone:\n message = copyDone\n break\n case MessageCodes.ReplicationStart:\n message = replicationStart\n break\n case MessageCodes.EmptyQuery:\n message = emptyQuery\n break\n case MessageCodes.DataRow:\n message = parseDataRowMessage(reader)\n break\n case MessageCodes.CommandComplete:\n message = parseCommandCompleteMessage(reader)\n break\n case MessageCodes.ReadyForQuery:\n message = parseReadyForQueryMessage(reader)\n break\n case MessageCodes.NotificationResponse:\n message = parseNotificationMessage(reader)\n break\n case MessageCodes.AuthenticationResponse:\n message = parseAuthenticationResponse(reader, length)\n break\n case MessageCodes.ParameterStatus:\n message = parseParameterStatusMessage(reader)\n break\n case MessageCodes.BackendKeyData:\n message = parseBackendKeyData(reader)\n break\n case MessageCodes.ErrorMessage:\n message = parseErrorMessage(reader, 'error')\n break\n case MessageCodes.NoticeMessage:\n message = parseErrorMessage(reader, 'notice')\n break\n case MessageCodes.RowDescriptionMessage:\n message = parseRowDescriptionMessage(reader)\n break\n case MessageCodes.ParameterDescriptionMessage:\n message = parseParameterDescriptionMessage(reader)\n break\n case MessageCodes.CopyIn:\n message = parseCopyInMessage(reader)\n break\n case MessageCodes.CopyOut:\n message = parseCopyOutMessage(reader)\n break\n case MessageCodes.CopyData:\n message = parseCopyData(reader, length)\n break\n default:\n return new DatabaseError('received invalid response: ' + code.toString(16), length, 'error')\n }\n\n reader.setBuffer(0, emptyBuffer)\n\n message.length = length\n return message\n }\n}\n\nconst parseReadyForQueryMessage = (reader: BufferReader) => {\n const status = reader.string(1)\n return new ReadyForQueryMessage(LATEINIT_LENGTH, status)\n}\n\nconst parseCommandCompleteMessage = (reader: BufferReader) => {\n const text = reader.cstring()\n return new CommandCompleteMessage(LATEINIT_LENGTH, text)\n}\n\nconst parseCopyData = (reader: BufferReader, length: number) => {\n const chunk = reader.bytes(length - 4)\n return new CopyDataMessage(LATEINIT_LENGTH, chunk)\n}\n\nconst parseCopyInMessage = (reader: BufferReader) => parseCopyMessage(reader, 'copyInResponse')\n\nconst parseCopyOutMessage = (reader: BufferReader) => parseCopyMessage(reader, 'copyOutResponse')\n\nconst parseCopyMessage = (reader: BufferReader, messageName: MessageName) => {\n const isBinary = reader.byte() !== 0\n const columnCount = reader.int16()\n const message = new CopyResponse(LATEINIT_LENGTH, messageName, isBinary, columnCount)\n for (let i = 0; i < columnCount; i++) {\n message.columnTypes[i] = reader.int16()\n }\n return message\n}\n\nconst parseNotificationMessage = (reader: BufferReader) => {\n const processId = reader.int32()\n const channel = reader.cstring()\n const payload = reader.cstring()\n return new NotificationResponseMessage(LATEINIT_LENGTH, processId, channel, payload)\n}\n\nconst parseRowDescriptionMessage = (reader: BufferReader) => {\n const fieldCount = reader.int16()\n const message = new RowDescriptionMessage(LATEINIT_LENGTH, fieldCount)\n for (let i = 0; i < fieldCount; i++) {\n message.fields[i] = parseField(reader)\n }\n return message\n}\n\nconst parseField = (reader: BufferReader) => {\n const name = reader.cstring()\n const tableID = reader.uint32()\n const columnID = reader.int16()\n const dataTypeID = reader.uint32()\n const dataTypeSize = reader.int16()\n const dataTypeModifier = reader.int32()\n const mode = reader.int16() === 0 ? 'text' : 'binary'\n return new Field(name, tableID, columnID, dataTypeID, dataTypeSize, dataTypeModifier, mode)\n}\n\nconst parseParameterDescriptionMessage = (reader: BufferReader) => {\n const parameterCount = reader.int16()\n const message = new ParameterDescriptionMessage(LATEINIT_LENGTH, parameterCount)\n for (let i = 0; i < parameterCount; i++) {\n // OIDs are unsigned, same as dataTypeID in parseField above\n message.dataTypeIDs[i] = reader.uint32()\n }\n return message\n}\n\nconst parseDataRowMessage = (reader: BufferReader) => {\n const fieldCount = reader.int16()\n const fields: any[] = new Array(fieldCount)\n for (let i = 0; i < fieldCount; i++) {\n const len = reader.int32()\n // a -1 for length means the value of the field is null\n fields[i] = len === -1 ? null : reader.string(len)\n }\n return new DataRowMessage(LATEINIT_LENGTH, fields)\n}\n\nconst parseParameterStatusMessage = (reader: BufferReader) => {\n const name = reader.cstring()\n const value = reader.cstring()\n return new ParameterStatusMessage(LATEINIT_LENGTH, name, value)\n}\n\nconst parseBackendKeyData = (reader: BufferReader) => {\n const processID = reader.int32()\n const secretKey = reader.int32()\n return new BackendKeyDataMessage(LATEINIT_LENGTH, processID, secretKey)\n}\n\nconst parseAuthenticationResponse = (reader: BufferReader, length: number) => {\n const code = reader.int32()\n // TODO(bmc): maybe better types here\n const message: BackendMessage & any = {\n name: 'authenticationOk',\n length,\n }\n\n switch (code) {\n case 0: // AuthenticationOk\n break\n case 3: // AuthenticationCleartextPassword\n if (message.length === 8) {\n message.name = 'authenticationCleartextPassword'\n }\n break\n case 5: // AuthenticationMD5Password\n if (message.length === 12) {\n message.name = 'authenticationMD5Password'\n const salt = reader.bytes(4)\n return new AuthenticationMD5Password(LATEINIT_LENGTH, salt)\n }\n break\n case 10: // AuthenticationSASL\n {\n message.name = 'authenticationSASL'\n message.mechanisms = []\n let mechanism: string\n do {\n mechanism = reader.cstring()\n if (mechanism) {\n message.mechanisms.push(mechanism)\n }\n } while (mechanism)\n }\n break\n case 11: // AuthenticationSASLContinue\n message.name = 'authenticationSASLContinue'\n message.data = reader.string(length - 8)\n break\n case 12: // AuthenticationSASLFinal\n message.name = 'authenticationSASLFinal'\n message.data = reader.string(length - 8)\n break\n default:\n throw new Error('Unknown authenticationOk message type ' + code)\n }\n return message\n}\n\nconst parseErrorMessage = (reader: BufferReader, name: MessageName) => {\n const fields: Record<string, string> = {}\n let fieldType = reader.string(1)\n while (fieldType !== '\\0') {\n fields[fieldType] = reader.cstring()\n fieldType = reader.string(1)\n }\n\n const messageValue = fields.M\n\n const message =\n name === 'notice'\n ? new NoticeMessage(LATEINIT_LENGTH, messageValue)\n : new DatabaseError(messageValue, LATEINIT_LENGTH, name)\n\n message.severity = fields.S\n message.code = fields.C\n message.detail = fields.D\n message.hint = fields.H\n message.position = fields.P\n message.internalPosition = fields.p\n message.internalQuery = fields.q\n message.where = fields.W\n message.schema = fields.s\n message.table = fields.t\n message.column = fields.c\n message.dataType = fields.d\n message.constraint = fields.n\n message.file = fields.F\n message.line = fields.L\n message.routine = fields.R\n return message\n}\n","import { DatabaseError } from './messages'\nimport { serialize } from './serializer'\nimport { Parser, MessageCallback } from './parser'\n\nexport function parse(stream: NodeJS.ReadableStream, callback: MessageCallback): Promise<void> {\n const parser = new Parser()\n stream.on('data', (buffer: Buffer) => parser.parse(buffer, callback))\n return new Promise((resolve) => stream.on('end', () => resolve()))\n}\n\nexport { serialize, DatabaseError }\n","module.exports = {\n isIP() {\n return 0;\n },\n Socket: class {\n constructor() {\n throw new Error(\"net is unavailable; configure PgWebTransport\");\n }\n },\n};\n","module.exports = {\n connect() {\n throw new Error(\"PostgreSQL TLS is unavailable; use ssl: false\");\n },\n};\n","// This is an empty module that is served up when outside of a workerd environment\n// See the `exports` field in package.json\nexport default {}\n","const { getStream, getSecureStream } = getStreamFuncs()\n\nmodule.exports = {\n /**\n * Get a socket stream compatible with the current runtime environment.\n * @returns {Duplex}\n */\n getStream,\n /**\n * Get a TLS secured socket, compatible with the current environment,\n * using the socket and other settings given in `options`.\n * @returns {Duplex}\n */\n getSecureStream,\n}\n\n/**\n * The stream functions that work in Node.js\n */\nfunction getNodejsStreamFuncs() {\n function getStream(ssl) {\n const net = require('net')\n return new net.Socket()\n }\n\n function getSecureStream(options) {\n const tls = require('tls')\n return tls.connect(options)\n }\n return {\n getStream,\n getSecureStream,\n }\n}\n\n/**\n * The stream functions that work in Cloudflare Workers\n */\nfunction getCloudflareStreamFuncs() {\n function getStream(ssl) {\n const { CloudflareSocket } = require('pg-cloudflare')\n return new CloudflareSocket(ssl)\n }\n\n function getSecureStream(options) {\n options.socket.startTls(options)\n return options.socket\n }\n return {\n getStream,\n getSecureStream,\n }\n}\n\n/**\n * Are we running in a Cloudflare Worker?\n *\n * @returns true if the code is currently running inside a Cloudflare Worker.\n */\nfunction isCloudflareRuntime() {\n // Since 2022-03-21 the `global_navigator` compatibility flag is on for Cloudflare Workers\n // which means that `navigator.userAgent` will be defined.\n // eslint-disable-next-line no-undef\n if (typeof navigator === 'object' && navigator !== null && typeof navigator.userAgent === 'string') {\n // eslint-disable-next-line no-undef\n return navigator.userAgent === 'Cloudflare-Workers'\n }\n // In case `navigator` or `navigator.userAgent` is not defined then try a more sneaky approach\n if (typeof Response === 'function') {\n const resp = new Response(null, { cf: { thing: true } })\n if (typeof resp.cf === 'object' && resp.cf !== null && resp.cf.thing) {\n return true\n }\n }\n return false\n}\n\nfunction getStreamFuncs() {\n if (isCloudflareRuntime()) {\n return getCloudflareStreamFuncs()\n }\n return getNodejsStreamFuncs()\n}\n","'use strict'\n\nconst EventEmitter = require('events').EventEmitter\n\nconst { parse, serialize } = require('pg-protocol')\nconst stream = require('./stream')\nconst { getStream } = stream\n\nconst flushBuffer = serialize.flush()\nconst syncBuffer = serialize.sync()\nconst endBuffer = serialize.end()\n\n// TODO(bmc) support binary mode at some point\nclass Connection extends EventEmitter {\n constructor(config) {\n super()\n config = config || {}\n\n this.stream = config.stream || getStream(config.ssl)\n if (typeof this.stream === 'function') {\n this.stream = this.stream(config)\n }\n\n this._keepAlive = config.keepAlive\n this._keepAliveInitialDelayMillis = config.keepAliveInitialDelayMillis\n this.parsedStatements = {}\n this.submittedNamedStatements = {}\n this.ssl = config.ssl || false\n this.sslNegotiation = config.sslNegotiation || 'postgres'\n this._ending = false\n this._emitMessage = false\n const self = this\n this.on('newListener', function (eventName) {\n if (eventName === 'message') {\n self._emitMessage = true\n }\n })\n }\n\n connect(port, host) {\n const self = this\n\n this._connecting = true\n this.stream.setNoDelay(true)\n this.stream.connect(port, host)\n\n this.stream.once('connect', function () {\n if (self._keepAlive) {\n self.stream.setKeepAlive(true, self._keepAliveInitialDelayMillis)\n }\n self.emit('connect')\n })\n\n const reportStreamError = function (error) {\n // errors about disconnections should be ignored during disconnect\n if (self._ending && (error.code === 'ECONNRESET' || error.code === 'EPIPE')) {\n return\n }\n self.emit('error', error)\n }\n this.stream.on('error', reportStreamError)\n\n this.stream.on('close', function () {\n self.emit('end')\n })\n\n if (!this.ssl) {\n return this.attachListeners(this.stream)\n }\n\n // With direct SSL negotiation the TLS handshake starts immediately on the\n // raw socket, skipping the SSLRequest packet and the server's 'S'/'N' reply.\n if (this.sslNegotiation === 'direct') {\n return this.stream.once('connect', function () {\n self.upgradeToSSL(host, reportStreamError)\n })\n }\n\n this.stream.once('data', function (buffer) {\n const responseCode = buffer.toString('utf8')\n switch (responseCode) {\n case 'S': // Server supports SSL connections, continue with a secure connection\n break\n case 'N': // Server does not support SSL connections\n self.stream.end()\n return self.emit('error', new Error('The server does not support SSL connections'))\n default:\n // Any other response byte, including 'E' (ErrorResponse) indicating a server error\n self.stream.end()\n return self.emit('error', new Error('There was an error establishing an SSL connection'))\n }\n self.upgradeToSSL(host, reportStreamError)\n })\n }\n\n upgradeToSSL(host, reportStreamError) {\n const self = this\n const options = {\n socket: self.stream,\n }\n\n if (self.ssl !== true) {\n Object.assign(options, self.ssl)\n\n if ('key' in self.ssl) {\n options.key = self.ssl.key\n }\n }\n\n // Direct SSL negotiation requires ALPN so the server can confirm it is\n // speaking the PostgreSQL protocol over the TLS connection.\n if (self.sslNegotiation === 'direct') {\n options.ALPNProtocols = ['postgresql']\n }\n\n const net = require('net')\n if (net.isIP && net.isIP(host) === 0) {\n options.servername = host\n }\n try {\n self.stream = stream.getSecureStream(options)\n } catch (err) {\n return self.emit('error', err)\n }\n self.attachListeners(self.stream)\n self.stream.on('error', reportStreamError)\n\n self.emit('sslconnect')\n }\n\n attachListeners(stream) {\n parse(stream, (msg) => {\n const eventName = msg.name === 'error' ? 'errorMessage' : msg.name\n if (this._emitMessage) {\n this.emit('message', msg)\n }\n this.emit(eventName, msg)\n })\n }\n\n requestSsl() {\n this.stream.write(serialize.requestSsl())\n }\n\n startup(config) {\n this.stream.write(serialize.startup(config))\n }\n\n cancel(processID, secretKey) {\n this._send(serialize.cancel(processID, secretKey))\n }\n\n password(password) {\n this._send(serialize.password(password))\n }\n\n sendSASLInitialResponseMessage(mechanism, initialResponse) {\n this._send(serialize.sendSASLInitialResponseMessage(mechanism, initialResponse))\n }\n\n sendSCRAMClientFinalMessage(additionalData) {\n this._send(serialize.sendSCRAMClientFinalMessage(additionalData))\n }\n\n _send(buffer) {\n if (!this.stream.writable) {\n return false\n }\n return this.stream.write(buffer)\n }\n\n query(text) {\n this._send(serialize.query(text))\n }\n\n // send parse message\n parse(query) {\n this._send(serialize.parse(query))\n }\n\n // send bind message\n bind(config) {\n this._send(serialize.bind(config))\n }\n\n // send execute message\n execute(config) {\n this._send(serialize.execute(config))\n }\n\n flush() {\n if (this.stream.writable) {\n this.stream.write(flushBuffer)\n }\n }\n\n sync() {\n this._ending = true\n this._send(syncBuffer)\n }\n\n ref() {\n this.stream.ref()\n }\n\n unref() {\n this.stream.unref()\n }\n\n end() {\n // 0x58 = 'X'\n this._ending = true\n if (!this._connecting || !this.stream.writable) {\n this.stream.end()\n return\n }\n return this.stream.write(endBuffer, () => {\n this.stream.end()\n })\n }\n\n close(msg) {\n this._send(serialize.close(msg))\n }\n\n describe(msg) {\n this._send(serialize.describe(msg))\n }\n\n sendCopyFromChunk(chunk) {\n this._send(serialize.copyData(chunk))\n }\n\n endCopyFrom() {\n this._send(serialize.copyDone())\n }\n\n sendCopyFail(msg) {\n this._send(serialize.copyFail(msg))\n }\n}\n\nmodule.exports = Connection\n","module.exports = function () {\n throw new Error(\"pgpass is unavailable; provide password in configuration\");\n};\n","const EventEmitter = require('events').EventEmitter\nconst utils = require('./utils')\nconst nodeUtils = require('util')\nconst sasl = require('./crypto/sasl')\nconst TypeOverrides = require('./type-overrides')\n\nconst ConnectionParameters = require('./connection-parameters')\nconst Query = require('./query')\nconst defaults = require('./defaults')\nconst Connection = require('./connection')\nconst crypto = require('./crypto/utils')\n\nconst activeQueryDeprecationNotice = nodeUtils.deprecate(\n () => {},\n 'Client.activeQuery is deprecated and will be removed in pg@9.0'\n)\n\nconst queryQueueDeprecationNotice = nodeUtils.deprecate(\n () => {},\n 'Client.queryQueue is deprecated and will be removed in pg@9.0.'\n)\n\nconst pgPassDeprecationNotice = nodeUtils.deprecate(\n () => {},\n 'pgpass support is deprecated and will be removed in pg@9.0. ' +\n 'You can provide an async function as the password property to the Client/Pool constructor that returns a password instead. Within this function you can call the pgpass module in your own code.'\n)\n\nconst byoPromiseDeprecationNotice = nodeUtils.deprecate(\n () => {},\n 'Passing a custom Promise implementation to the Client/Pool constructor is deprecated and will be removed in pg@9.0.'\n)\n\nconst queryQueueLengthDeprecationNotice = nodeUtils.deprecate(\n () => {},\n 'Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead.'\n)\n\nfunction coerceNumberOrDefault(value, defaultValue) {\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : defaultValue\n }\n if (typeof value === 'string' && value.trim() !== '') {\n const n = Number(value)\n return Number.isFinite(n) ? n : defaultValue\n }\n return defaultValue\n}\n\nclass Client extends EventEmitter {\n constructor(config) {\n super()\n\n this.connectionParameters = new ConnectionParameters(config)\n this.user = this.connectionParameters.user\n this.database = this.connectionParameters.database\n this.port = this.connectionParameters.port\n this.host = this.connectionParameters.host\n\n // \"hiding\" the password so it doesn't show up in stack traces\n // or if the client is console.logged\n Object.defineProperty(this, 'password', {\n configurable: true,\n enumerable: false,\n writable: true,\n value: this.connectionParameters.password,\n })\n\n this.replication = this.connectionParameters.replication\n\n const c = config || {}\n\n if (c.Promise) {\n byoPromiseDeprecationNotice()\n }\n this._Promise = c.Promise || global.Promise\n this._types = new TypeOverrides(c.types)\n this._ending = false\n this._ended = false\n this._connecting = false\n this._connected = false\n this._connectionError = false\n this._queryable = true\n this._activeQuery = null\n this._txStatus = null\n\n this.enableChannelBinding = Boolean(c.enableChannelBinding) // set true to use SCRAM-SHA-256-PLUS when offered\n this.scramMaxIterations = coerceNumberOrDefault(c.scramMaxIterations, sasl.DEFAULT_MAX_SCRAM_ITERATIONS)\n this.connection =\n c.connection ||\n new Connection({\n stream: c.stream,\n ssl: this.connectionParameters.ssl,\n sslNegotiation: this.connectionParameters.sslnegotiation,\n keepAlive: c.keepAlive || false,\n keepAliveInitialDelayMillis: c.keepAliveInitialDelayMillis || 0,\n encoding: this.connectionParameters.client_encoding || 'utf8',\n })\n this._queryQueue = []\n this._sentQueryQueue = []\n this.pipeline = Boolean(c.pipeline)\n this.binary = c.binary || defaults.binary\n this.processID = null\n this.secretKey = null\n this.ssl = this.connectionParameters.ssl || false\n this.sslNegotiation = this.connectionParameters.sslnegotiation || 'postgres'\n // As with Password, make SSL->Key (the private key) non-enumerable.\n // It won't show up in stack traces\n // or if the client is console.logged\n if (this.ssl && this.ssl.key) {\n Object.defineProperty(this.ssl, 'key', {\n enumerable: false,\n })\n }\n\n this._connectionTimeoutMillis = c.connectionTimeoutMillis || 0\n }\n\n get activeQuery() {\n activeQueryDeprecationNotice()\n return this._activeQuery\n }\n\n set activeQuery(val) {\n activeQueryDeprecationNotice()\n this._activeQuery = val\n }\n\n _getActiveQuery() {\n return this._activeQuery\n }\n\n _errorAllQueries(err) {\n const enqueueError = (query) => {\n process.nextTick(() => {\n query.handleError(err, this.connection)\n })\n }\n\n const activeQuery = this._getActiveQuery()\n if (activeQuery) {\n enqueueError(activeQuery)\n this._activeQuery = null\n }\n\n this._sentQueryQueue.forEach(enqueueError)\n this._sentQueryQueue.length = 0\n\n this._queryQueue.forEach(enqueueError)\n this._queryQueue.length = 0\n }\n\n _connect(callback) {\n const self = this\n const con = this.connection\n this._connectionCallback = callback\n\n if (this._connecting || this._connected) {\n const err = new Error('Client has already been connected. You cannot reuse a client.')\n process.nextTick(() => {\n callback(err)\n })\n return\n }\n this._connecting = true\n\n if (this._connectionTimeoutMillis > 0) {\n this.connectionTimeoutHandle = setTimeout(() => {\n con._ending = true\n con.stream.destroy(new Error('timeout expired'))\n }, this._connectionTimeoutMillis)\n\n if (this.connectionTimeoutHandle.unref) {\n this.connectionTimeoutHandle.unref()\n }\n }\n\n if (this.host && this.host.indexOf('/') === 0) {\n con.connect(this.host + '/.s.PGSQL.' + this.port)\n } else {\n con.connect(this.port, this.host)\n }\n\n // once connection is established send startup message\n con.on('connect', function () {\n if (self.ssl) {\n // With direct SSL negotiation the connection upgrades to TLS without an\n // SSLRequest packet, so the startup message is sent after 'sslconnect'.\n if (self.sslNegotiation !== 'direct') {\n con.requestSsl()\n }\n } else {\n con.startup(self.getStartupConf())\n }\n })\n\n con.on('sslconnect', function () {\n con.startup(self.getStartupConf())\n })\n\n this._attachListeners(con)\n\n con.once('end', () => {\n const error = this._ending ? new Error('Connection terminated') : new Error('Connection terminated unexpectedly')\n\n clearTimeout(this.connectionTimeoutHandle)\n this._errorAllQueries(error)\n this._ended = true\n\n if (!this._ending) {\n // if the connection is ended without us calling .end()\n // on this client then we have an unexpected disconnection\n // treat this as an error unless we've already emitted an error\n // during connection.\n if (this._connecting && !this._connectionError) {\n if (this._connectionCallback) {\n this._connectionCallback(error)\n } else {\n this._handleErrorEvent(error)\n }\n } else if (!this._connectionError) {\n this._handleErrorEvent(error)\n }\n }\n\n process.nextTick(() => {\n this.emit('end')\n })\n })\n }\n\n connect(callback) {\n if (callback) {\n this._connect(callback)\n return\n }\n\n return new this._Promise((resolve, reject) => {\n this._connect((error) => {\n if (error) {\n reject(error)\n } else {\n resolve(this)\n }\n })\n })\n }\n\n _attachListeners(con) {\n // password request handling\n con.on('authenticationCleartextPassword', this._handleAuthCleartextPassword.bind(this))\n // password request handling\n con.on('authenticationMD5Password', this._handleAuthMD5Password.bind(this))\n // password request handling (SASL)\n con.on('authenticationSASL', this._handleAuthSASL.bind(this))\n con.on('authenticationSASLContinue', this._handleAuthSASLContinue.bind(this))\n con.on('authenticationSASLFinal', this._handleAuthSASLFinal.bind(this))\n con.on('backendKeyData', this._handleBackendKeyData.bind(this))\n con.on('error', this._handleErrorEvent.bind(this))\n con.on('errorMessage', this._handleErrorMessage.bind(this))\n con.on('readyForQuery', this._handleReadyForQuery.bind(this))\n con.on('notice', this._handleNotice.bind(this))\n con.on('rowDescription', this._handleRowDescription.bind(this))\n con.on('dataRow', this._handleDataRow.bind(this))\n con.on('portalSuspended', this._handlePortalSuspended.bind(this))\n con.on('emptyQuery', this._handleEmptyQuery.bind(this))\n con.on('commandComplete', this._handleCommandComplete.bind(this))\n con.on('parseComplete', this._handleParseComplete.bind(this))\n con.on('copyInResponse', this._handleCopyInResponse.bind(this))\n con.on('copyData', this._handleCopyData.bind(this))\n con.on('notification', this._handleNotification.bind(this))\n }\n\n _getPassword(cb) {\n const con = this.connection\n if (typeof this.password === 'function') {\n this._Promise\n .resolve()\n .then(() => this.password(this.connectionParameters))\n .then((pass) => {\n if (pass !== undefined) {\n if (typeof pass !== 'string') {\n con.emit('error', new TypeError('Password must be a string'))\n return\n }\n this.connectionParameters.password = this.password = pass\n } else {\n this.connectionParameters.password = this.password = null\n }\n cb()\n })\n .catch((err) => {\n con.emit('error', err)\n })\n } else if (this.password !== null) {\n cb()\n } else {\n try {\n const pgPass = require('pgpass')\n pgPass(this.connectionParameters, (pass) => {\n if (undefined !== pass) {\n pgPassDeprecationNotice()\n this.connectionParameters.password = this.password = pass\n }\n cb()\n })\n } catch (e) {\n this.emit('error', e)\n }\n }\n }\n\n _handleAuthCleartextPassword(msg) {\n this._getPassword(() => {\n this.connection.password(this.password)\n })\n }\n\n _handleAuthMD5Password(msg) {\n this._getPassword(async () => {\n try {\n const hashedPassword = await crypto.postgresMd5PasswordHash(this.user, this.password, msg.salt)\n this.connection.password(hashedPassword)\n } catch (e) {\n this.emit('error', e)\n }\n })\n }\n\n _handleAuthSASL(msg) {\n this._getPassword(() => {\n try {\n this.saslSession = sasl.startSession(\n msg.mechanisms,\n this.enableChannelBinding && this.connection.stream,\n this.scramMaxIterations\n )\n this.connection.sendSASLInitialResponseMessage(this.saslSession.mechanism, this.saslSession.response)\n } catch (err) {\n this.connection.emit('error', err)\n }\n })\n }\n\n async _handleAuthSASLContinue(msg) {\n try {\n await sasl.continueSession(\n this.saslSession,\n this.password,\n msg.data,\n this.enableChannelBinding && this.connection.stream\n )\n this.connection.sendSCRAMClientFinalMessage(this.saslSession.response)\n } catch (err) {\n this.connection.emit('error', err)\n }\n }\n\n _handleAuthSASLFinal(msg) {\n try {\n sasl.finalizeSession(this.saslSession, msg.data)\n this.saslSession = null\n } catch (err) {\n this.connection.emit('error', err)\n }\n }\n\n _handleBackendKeyData(msg) {\n this.processID = msg.processID\n this.secretKey = msg.secretKey\n }\n\n _handleReadyForQuery(msg) {\n if (this._connecting) {\n this._connecting = false\n this._connected = true\n clearTimeout(this.connectionTimeoutHandle)\n\n // process possible callback argument to Client#connect\n if (this._connectionCallback) {\n this._connectionCallback(null, this)\n // remove callback for proper error handling\n // after the connect event\n this._connectionCallback = null\n }\n this.emit('connect')\n }\n const activeQuery = this._getActiveQuery()\n this._activeQuery = null\n this._txStatus = msg?.status ?? null\n this.readyForQuery = true\n if (activeQuery) {\n activeQuery.handleReadyForQuery(this.connection)\n }\n this._pulseQueryQueue()\n }\n\n // if we receive an error event or error message\n // during the connection process we handle it here\n _handleErrorWhileConnecting(err) {\n if (this._connectionError) {\n // TODO(bmc): this is swallowing errors - we shouldn't do this\n return\n }\n this._connectionError = true\n clearTimeout(this.connectionTimeoutHandle)\n if (this._connectionCallback) {\n return this._connectionCallback(err)\n }\n this.emit('error', err)\n }\n\n // if we're connected and we receive an error event from the connection\n // this means the socket is dead - do a hard abort of all queries and emit\n // the socket error on the client as well\n _handleErrorEvent(err) {\n if (this._connecting) {\n return this._handleErrorWhileConnecting(err)\n }\n this._queryable = false\n this._errorAllQueries(err)\n this.emit('error', err)\n }\n\n // handle error messages from the postgres backend\n _handleErrorMessage(msg) {\n if (this._connecting) {\n return this._handleErrorWhileConnecting(msg)\n }\n const activeQuery = this._getActiveQuery()\n\n if (!activeQuery) {\n this._handleErrorEvent(msg)\n return\n }\n\n this._activeQuery = null\n if (activeQuery.name) {\n delete this.connection.submittedNamedStatements[activeQuery.name]\n }\n activeQuery.handleError(msg, this.connection)\n }\n\n _handleRowDescription(msg) {\n const activeQuery = this._getActiveQuery()\n if (activeQuery == null) {\n const error = new Error('Received unexpected rowDescription message from backend.')\n this._handleErrorEvent(error)\n return\n }\n // delegate rowDescription to active query\n activeQuery.handleRowDescription(msg)\n }\n\n _handleDataRow(msg) {\n const activeQuery = this._getActiveQuery()\n if (activeQuery == null) {\n const error = new Error('Received unexpected dataRow message from backend.')\n this._handleErrorEvent(error)\n return\n }\n // delegate dataRow to active query\n activeQuery.handleDataRow(msg)\n }\n\n _handlePortalSuspended(msg) {\n const activeQuery = this._getActiveQuery()\n if (activeQuery == null) {\n const error = new Error('Received unexpected portalSuspended message from backend.')\n this._handleErrorEvent(error)\n return\n }\n // delegate portalSuspended to active query\n activeQuery.handlePortalSuspended(this.connection)\n }\n\n _handleEmptyQuery(msg) {\n const activeQuery = this._getActiveQuery()\n if (activeQuery == null) {\n const error = new Error('Received unexpected emptyQuery message from backend.')\n this._handleErrorEvent(error)\n return\n }\n // delegate emptyQuery to active query\n activeQuery.handleEmptyQuery(this.connection)\n }\n\n _handleCommandComplete(msg) {\n const activeQuery = this._getActiveQuery()\n if (activeQuery == null) {\n const error = new Error('Received unexpected commandComplete message from backend.')\n this._handleErrorEvent(error)\n return\n }\n // delegate commandComplete to active query\n activeQuery.handleCommandComplete(msg, this.connection)\n }\n\n _handleParseComplete() {\n const activeQuery = this._getActiveQuery()\n if (activeQuery == null) {\n const error = new Error('Received unexpected parseComplete message from backend.')\n this._handleErrorEvent(error)\n return\n }\n // if a prepared statement has a name and properly parses\n // we track that its already been executed so we don't parse\n // it again on the same client\n if (activeQuery.name) {\n this.connection.parsedStatements[activeQuery.name] = activeQuery.text\n delete this.connection.submittedNamedStatements[activeQuery.name]\n }\n }\n\n _handleCopyInResponse(msg) {\n const activeQuery = this._getActiveQuery()\n if (activeQuery == null) {\n const error = new Error('Received unexpected copyInResponse message from backend.')\n this._handleErrorEvent(error)\n return\n }\n activeQuery.handleCopyInResponse(this.connection)\n }\n\n _handleCopyData(msg) {\n const activeQuery = this._getActiveQuery()\n if (activeQuery == null) {\n const error = new Error('Received unexpected copyData message from backend.')\n this._handleErrorEvent(error)\n return\n }\n activeQuery.handleCopyData(msg, this.connection)\n }\n\n _handleNotification(msg) {\n this.emit('notification', msg)\n }\n\n _handleNotice(msg) {\n this.emit('notice', msg)\n }\n\n getStartupConf() {\n const params = this.connectionParameters\n\n const data = {\n user: params.user,\n database: params.database,\n }\n\n const appName = params.application_name || params.fallback_application_name\n if (appName) {\n data.application_name = appName\n }\n if (params.replication) {\n data.replication = '' + params.replication\n }\n if (params.statement_timeout) {\n data.statement_timeout = String(parseInt(params.statement_timeout, 10))\n }\n if (params.lock_timeout) {\n data.lock_timeout = String(parseInt(params.lock_timeout, 10))\n }\n if (params.idle_in_transaction_session_timeout) {\n data.idle_in_transaction_session_timeout = String(parseInt(params.idle_in_transaction_session_timeout, 10))\n }\n if (params.options) {\n data.options = params.options\n }\n\n return data\n }\n\n cancel(client, query) {\n if (client.activeQuery === query) {\n const con = this.connection\n\n if (this.host && this.host.indexOf('/') === 0) {\n con.connect(this.host + '/.s.PGSQL.' + this.port)\n } else {\n con.connect(this.port, this.host)\n }\n\n // once connection is established send cancel message\n con.on('connect', function () {\n con.cancel(client.processID, client.secretKey)\n })\n } else if (client._queryQueue.indexOf(query) !== -1) {\n client._queryQueue.splice(client._queryQueue.indexOf(query), 1)\n } else if (client._sentQueryQueue.indexOf(query) !== -1) {\n // Query already sent on wire — can't remove it without corrupting the\n // pipeline. No-op the callback so the result is silently discarded.\n query.callback = () => {}\n }\n }\n\n setTypeParser(oid, format, parseFn) {\n return this._types.setTypeParser(oid, format, parseFn)\n }\n\n getTypeParser(oid, format) {\n return this._types.getTypeParser(oid, format)\n }\n\n // escapeIdentifier and escapeLiteral moved to utility functions & exported\n // on PG\n // re-exported here for backwards compatibility\n escapeIdentifier(str) {\n return utils.escapeIdentifier(str)\n }\n\n escapeLiteral(str) {\n return utils.escapeLiteral(str)\n }\n\n _pulseQueryQueue() {\n if (this.pipeline) {\n this._pulsePipelinedQueryQueue()\n return\n }\n if (this.readyForQuery === true) {\n this._activeQuery = this._queryQueue.shift()\n const activeQuery = this._getActiveQuery()\n if (activeQuery) {\n this.readyForQuery = false\n this.hasExecuted = true\n\n const queryError = activeQuery.submit(this.connection)\n if (queryError) {\n process.nextTick(() => {\n activeQuery.handleError(queryError, this.connection)\n this.readyForQuery = true\n this._pulseQueryQueue()\n })\n }\n } else if (this.hasExecuted) {\n this._activeQuery = null\n this.emit('drain')\n }\n }\n }\n\n _pulsePipelinedQueryQueue() {\n if (!this._connected || !this._queryable) {\n return\n }\n while (this._queryQueue.length > 0) {\n const query = this._queryQueue.shift()\n this.hasExecuted = true\n const queryError = query.submit(this.connection)\n if (queryError) {\n process.nextTick(() => {\n query.handleError(queryError, this.connection)\n })\n continue\n }\n this._sentQueryQueue.push(query)\n }\n if (this.readyForQuery && !this._activeQuery && this._sentQueryQueue.length > 0) {\n this._activeQuery = this._sentQueryQueue.shift()\n this.readyForQuery = false\n }\n if (!this._activeQuery && this._sentQueryQueue.length === 0 && this._queryQueue.length === 0 && this.hasExecuted) {\n this.emit('drain')\n }\n }\n\n query(config, values, callback) {\n // can take in strings, config object or query object\n let query\n let result\n\n if (config == null) {\n throw new TypeError('Client was passed a null or undefined query')\n }\n\n if (typeof config.submit === 'function') {\n result = query = config\n if (!query.callback) {\n if (typeof values === 'function') {\n query.callback = values\n } else if (callback) {\n query.callback = callback\n }\n }\n } else {\n query = new Query(config, values, callback)\n if (!query.callback) {\n result = new this._Promise((resolve, reject) => {\n query.callback = (err, res) => (err ? reject(err) : resolve(res))\n }).catch((err) => {\n // replace the stack trace that leads to `TCP.onStreamRead` with one that leads back to the\n // application that created the query\n Error.captureStackTrace(err)\n throw err\n })\n } else if (typeof query.callback !== 'function') {\n throw new TypeError('callback is not a function')\n }\n }\n\n const readTimeout = config.query_timeout || this.connectionParameters.query_timeout\n if (readTimeout) {\n const queryCallback = query.callback || (() => {})\n\n const readTimeoutTimer = setTimeout(() => {\n const error = new Error('Query read timeout')\n\n process.nextTick(() => {\n query.handleError(error, this.connection)\n })\n\n queryCallback(error)\n\n // we already returned an error,\n // just do nothing if query completes\n query.callback = () => {}\n\n // Remove from queue (only safe if not yet sent)\n const index = this._queryQueue.indexOf(query)\n if (index > -1) {\n this._queryQueue.splice(index, 1)\n } else if (this.pipeline) {\n // Query already sent — the pipeline is blocked until it completes.\n // Destroy the connection to unblock all remaining pipelined queries.\n this.connection.stream.destroy()\n return\n }\n\n this._pulseQueryQueue()\n }, readTimeout)\n\n query.callback = (err, res) => {\n clearTimeout(readTimeoutTimer)\n queryCallback(err, res)\n }\n }\n\n if (this.binary && !query.binary) {\n query.binary = true\n }\n\n if (query._result && !query._result._types) {\n query._result._types = this._types\n }\n\n if (!this._queryable) {\n process.nextTick(() => {\n query.handleError(new Error('Client has encountered a connection error and is not queryable'), this.connection)\n })\n return result\n }\n\n if (this._ending) {\n process.nextTick(() => {\n query.handleError(new Error('Client was closed and is not queryable'), this.connection)\n })\n return result\n }\n\n if (this._queryQueue.length > 0 && !this.pipeline) {\n queryQueueLengthDeprecationNotice()\n }\n this._queryQueue.push(query)\n this._pulseQueryQueue()\n return result\n }\n\n ref() {\n this.connection.ref()\n }\n\n unref() {\n this.connection.unref()\n }\n\n getTransactionStatus() {\n return this._txStatus\n }\n\n end(cb) {\n this._ending = true\n\n // if we have never connected, then end is a noop, callback immediately\n if (!this.connection._connecting || this._ended) {\n if (cb) {\n cb()\n return\n } else {\n return this._Promise.resolve()\n }\n }\n\n if (!this._queryable) {\n // socket is dead — force close\n this.connection.stream.destroy()\n } else if (\n this.pipeline &&\n (this._getActiveQuery() || this._sentQueryQueue.length > 0 || this._queryQueue.length > 0)\n ) {\n // pipelined queries are already on the wire (or queued to send) and will\n // complete normally; wait for drain then do a graceful goodbye\n this.once('drain', () => this.connection.end())\n } else if (this._getActiveQuery()) {\n // non-pipeline: a hung query could block end forever — force disconnect\n this.connection.stream.destroy()\n } else {\n this.connection.end()\n }\n\n if (cb) {\n this.connection.once('end', cb)\n } else {\n return new this._Promise((resolve) => {\n this.connection.once('end', resolve)\n })\n }\n }\n get queryQueue() {\n queryQueueDeprecationNotice()\n return this._queryQueue\n }\n}\n\n// expose a Query constructor\nClient.Query = Query\n\nmodule.exports = Client\n","'use strict'\nconst EventEmitter = require('events').EventEmitter\n\nconst NOOP = function () {}\n\nconst removeWhere = (list, predicate) => {\n const i = list.findIndex(predicate)\n\n return i === -1 ? undefined : list.splice(i, 1)[0]\n}\n\nclass IdleItem {\n constructor(client, idleListener, timeoutId) {\n this.client = client\n this.idleListener = idleListener\n this.timeoutId = timeoutId\n }\n}\n\nclass PendingItem {\n constructor(callback) {\n this.callback = callback\n }\n}\n\nfunction throwOnDoubleRelease() {\n throw new Error('Release called on client which has already been released to the pool.')\n}\n\nfunction promisify(Promise, callback) {\n if (callback) {\n return { callback: callback, result: undefined }\n }\n let rej\n let res\n const cb = function (err, client) {\n err ? rej(err) : res(client)\n }\n const result = new Promise(function (resolve, reject) {\n res = resolve\n rej = reject\n }).catch((err) => {\n // replace the stack trace that leads to `TCP.onStreamRead` with one that leads back to the\n // application that created the query\n Error.captureStackTrace(err)\n throw err\n })\n return { callback: cb, result: result }\n}\n\nfunction makeIdleListener(pool, client) {\n return function idleListener(err) {\n err.client = client\n\n client.removeListener('error', idleListener)\n client.on('error', () => {\n pool.log('additional client error after disconnection due to error', err)\n })\n pool._remove(client)\n // TODO - document that once the pool emits an error\n // the client has already been closed & purged and is unusable\n pool.emit('error', err, client)\n }\n}\n\nclass Pool extends EventEmitter {\n constructor(options, Client) {\n super()\n this.options = Object.assign({}, options)\n\n if (options != null && 'password' in options) {\n // \"hiding\" the password so it doesn't show up in stack traces\n // or if the client is console.logged\n Object.defineProperty(this.options, 'password', {\n configurable: true,\n enumerable: false,\n writable: true,\n value: options.password,\n })\n }\n if (options != null && options.ssl && options.ssl.key) {\n // \"hiding\" the ssl->key so it doesn't show up in stack traces\n // or if the client is console.logged\n Object.defineProperty(this.options.ssl, 'key', {\n enumerable: false,\n })\n }\n\n this.options.max = this.options.max || this.options.poolSize || 10\n this.options.min = this.options.min || 0\n this.options.maxUses = this.options.maxUses || Infinity\n this.options.allowExitOnIdle = this.options.allowExitOnIdle || false\n this.options.maxLifetimeSeconds = this.options.maxLifetimeSeconds || 0\n this.log = this.options.log || function () {}\n this.Client = this.options.Client || Client; if (!this.Client) throw new Error('Pool requires a Client')\n this.Promise = this.options.Promise || global.Promise\n\n if (typeof this.options.idleTimeoutMillis === 'undefined') {\n this.options.idleTimeoutMillis = 10000\n }\n\n this._clients = []\n this._idle = []\n this._expired = new WeakSet()\n this._pendingQueue = []\n this._endCallback = undefined\n this.ending = false\n this.ended = false\n }\n\n _promiseTry(f) {\n const Promise = this.Promise\n if (typeof Promise.try === 'function') {\n return Promise.try(f)\n }\n return new Promise((resolve) => resolve(f()))\n }\n\n _isFull() {\n return this._clients.length >= this.options.max\n }\n\n _isAboveMin() {\n return this._clients.length > this.options.min\n }\n\n _pulseQueue() {\n this.log('pulse queue')\n if (this.ended) {\n this.log('pulse queue ended')\n return\n }\n if (this.ending) {\n this.log('pulse queue on ending')\n if (this._idle.length) {\n this._idle.slice().map((item) => {\n this._remove(item.client)\n })\n }\n if (!this._clients.length) {\n this.ended = true\n this._endCallback()\n }\n return\n }\n\n // if we don't have any waiting, do nothing\n if (!this._pendingQueue.length) {\n this.log('no queued requests')\n return\n }\n // if we don't have any idle clients and we have no more room do nothing\n if (!this._idle.length && this._isFull()) {\n return\n }\n const pendingItem = this._pendingQueue.shift()\n if (this._idle.length) {\n const idleItem = this._idle.pop()\n clearTimeout(idleItem.timeoutId)\n const client = idleItem.client\n client.ref && client.ref()\n const idleListener = idleItem.idleListener\n\n return this._acquireClient(client, pendingItem, idleListener, false)\n }\n if (!this._isFull()) {\n return this.newClient(pendingItem)\n }\n throw new Error('unexpected condition')\n }\n\n _remove(client, callback) {\n const removed = removeWhere(this._idle, (item) => item.client === client)\n\n if (removed !== undefined) {\n clearTimeout(removed.timeoutId)\n }\n\n this._clients = this._clients.filter((c) => c !== client)\n const context = this\n client.end(() => {\n context.emit('remove', client)\n\n if (typeof callback === 'function') {\n callback()\n }\n })\n }\n\n connect(cb) {\n if (this.ending) {\n const err = new Error('Cannot use a pool after calling end on the pool')\n return cb ? cb(err) : this.Promise.reject(err)\n }\n\n const response = promisify(this.Promise, cb)\n const result = response.result\n\n // if we don't have to connect a new client, don't do so\n if (this._isFull() || this._idle.length) {\n // if we have idle clients schedule a pulse immediately\n if (this._idle.length) {\n process.nextTick(() => this._pulseQueue())\n }\n\n if (!this.options.connectionTimeoutMillis) {\n this._pendingQueue.push(new PendingItem(response.callback))\n return result\n }\n\n const queueCallback = (err, res, done) => {\n clearTimeout(tid)\n response.callback(err, res, done)\n }\n\n const pendingItem = new PendingItem(queueCallback)\n\n // set connection timeout on checking out an existing client\n const tid = setTimeout(() => {\n // remove the callback from pending waiters because\n // we're going to call it with a timeout error\n removeWhere(this._pendingQueue, (i) => i.callback === queueCallback)\n pendingItem.timedOut = true\n response.callback(new Error('timeout exceeded when trying to connect'))\n }, this.options.connectionTimeoutMillis)\n\n if (tid.unref) {\n tid.unref()\n }\n\n this._pendingQueue.push(pendingItem)\n return result\n }\n\n this.newClient(new PendingItem(response.callback))\n\n return result\n }\n\n newClient(pendingItem) {\n const client = new this.Client(this.options)\n this._clients.push(client)\n const idleListener = makeIdleListener(this, client)\n\n this.log('checking client timeout')\n\n // connection timeout logic\n let tid\n let timeoutHit = false\n if (this.options.connectionTimeoutMillis) {\n tid = setTimeout(() => {\n if (client.connection) {\n this.log('ending client due to timeout')\n timeoutHit = true\n client.connection.stream.destroy()\n } else if (!client.isConnected()) {\n this.log('ending client due to timeout')\n timeoutHit = true\n // force kill the node driver, and let libpq do its teardown\n client.end()\n }\n }, this.options.connectionTimeoutMillis)\n }\n\n this.log('connecting new client')\n client.connect((err) => {\n if (tid) {\n clearTimeout(tid)\n }\n client.on('error', idleListener)\n if (err) {\n this.log('client failed to connect', err)\n // remove the dead client from our list of clients\n this._clients = this._clients.filter((c) => c !== client)\n if (timeoutHit) {\n err = new Error('Connection terminated due to connection timeout', { cause: err })\n }\n\n // this client won’t be released, so move on immediately\n this._pulseQueue()\n\n if (!pendingItem.timedOut) {\n pendingItem.callback(err, undefined, NOOP)\n }\n } else {\n this.log('new client connected')\n\n if (this.options.onConnect) {\n this._promiseTry(() => this.options.onConnect(client)).then(\n () => {\n this._afterConnect(client, pendingItem, idleListener)\n },\n (hookErr) => {\n this._clients = this._clients.filter((c) => c !== client)\n client.end(() => {\n this._pulseQueue()\n if (!pendingItem.timedOut) {\n pendingItem.callback(hookErr, undefined, NOOP)\n }\n })\n }\n )\n return\n }\n\n return this._afterConnect(client, pendingItem, idleListener)\n }\n })\n }\n\n _afterConnect(client, pendingItem, idleListener) {\n if (this.options.maxLifetimeSeconds !== 0) {\n const maxLifetimeTimeout = setTimeout(() => {\n this.log('ending client due to expired lifetime')\n this._expired.add(client)\n const idleIndex = this._idle.findIndex((idleItem) => idleItem.client === client)\n if (idleIndex !== -1) {\n this._acquireClient(\n client,\n new PendingItem((err, client, clientRelease) => clientRelease()),\n idleListener,\n false\n )\n }\n }, this.options.maxLifetimeSeconds * 1000)\n\n maxLifetimeTimeout.unref()\n client.once('end', () => clearTimeout(maxLifetimeTimeout))\n }\n\n return this._acquireClient(client, pendingItem, idleListener, true)\n }\n\n // acquire a client for a pending work item\n _acquireClient(client, pendingItem, idleListener, isNew) {\n if (isNew) {\n this.emit('connect', client)\n }\n\n this.emit('acquire', client)\n\n client.release = this._releaseOnce(client, idleListener)\n\n client.removeListener('error', idleListener)\n\n if (!pendingItem.timedOut) {\n if (isNew && this.options.verify) {\n this.options.verify(client, (err) => {\n if (err) {\n client.release(err)\n return pendingItem.callback(err, undefined, NOOP)\n }\n\n pendingItem.callback(undefined, client, client.release)\n })\n } else {\n pendingItem.callback(undefined, client, client.release)\n }\n } else {\n if (isNew && this.options.verify) {\n this.options.verify(client, client.release)\n } else {\n client.release()\n }\n }\n }\n\n // returns a function that wraps _release and throws if called more than once\n _releaseOnce(client, idleListener) {\n let released = false\n\n return (err) => {\n if (released) {\n throwOnDoubleRelease()\n }\n\n released = true\n this._release(client, idleListener, err)\n }\n }\n\n // release a client back to the poll, include an error\n // to remove it from the pool\n _release(client, idleListener, err) {\n client.on('error', idleListener)\n\n client._poolUseCount = (client._poolUseCount || 0) + 1\n\n this.emit('release', err, client)\n\n // TODO(bmc): expose a proper, public interface _queryable and _ending\n if (err || this.ending || !client._queryable || client._ending || client._poolUseCount >= this.options.maxUses) {\n if (client._poolUseCount >= this.options.maxUses) {\n this.log('remove expended client')\n }\n\n return this._remove(client, this._pulseQueue.bind(this))\n }\n\n const isExpired = this._expired.has(client)\n if (isExpired) {\n this.log('remove expired client')\n this._expired.delete(client)\n return this._remove(client, this._pulseQueue.bind(this))\n }\n\n // idle timeout\n let tid\n if (this.options.idleTimeoutMillis && this._isAboveMin()) {\n tid = setTimeout(() => {\n if (this._isAboveMin()) {\n this.log('remove idle client')\n this._remove(client, this._pulseQueue.bind(this))\n }\n }, this.options.idleTimeoutMillis)\n\n if (this.options.allowExitOnIdle) {\n // allow Node to exit if this is all that's left\n tid.unref()\n }\n }\n\n if (this.options.allowExitOnIdle) {\n client.unref()\n }\n\n this._idle.push(new IdleItem(client, idleListener, tid))\n this._pulseQueue()\n }\n\n query(text, values, cb) {\n // guard clause against passing a function as the first parameter\n if (typeof text === 'function') {\n const response = promisify(this.Promise, text)\n setImmediate(function () {\n return response.callback(new Error('Passing a function as the first parameter to pool.query is not supported'))\n })\n return response.result\n }\n\n // allow plain text query without values, but callback\n if (typeof values === 'function') {\n cb = values\n values = undefined\n }\n const response = promisify(this.Promise, cb)\n cb = response.callback\n\n this.connect((err, client) => {\n if (err) {\n return cb(err)\n }\n\n let clientReleased = false\n const onError = (err) => {\n if (clientReleased) {\n return\n }\n clientReleased = true\n client.release(err)\n cb(err)\n }\n\n client.once('error', onError)\n this.log('dispatching query')\n try {\n client.query(text, values, (err, res) => {\n this.log('query dispatched')\n client.removeListener('error', onError)\n if (clientReleased) {\n return\n }\n clientReleased = true\n client.release(err)\n if (err) {\n return cb(err)\n }\n return cb(undefined, res)\n })\n } catch (err) {\n client.release(err)\n return cb(err)\n }\n })\n return response.result\n }\n\n end(cb) {\n this.log('ending')\n if (this.ending) {\n const err = new Error('Called end on pool more than once')\n return cb ? cb(err) : this.Promise.reject(err)\n }\n this.ending = true\n const promised = promisify(this.Promise, cb)\n this._endCallback = promised.callback\n this._pulseQueue()\n return promised.result\n }\n\n get waitingCount() {\n return this._pendingQueue.length\n }\n\n get idleCount() {\n return this._idle.length\n }\n\n get expiredCount() {\n return this._clients.reduce((acc, client) => acc + (this._expired.has(client) ? 1 : 0), 0)\n }\n\n get totalCount() {\n return this._clients.length\n }\n}\nmodule.exports = Pool\n","import { Buffer } from \"buffer\";\nimport BaseClient from \"pg/lib/client.js\";\nimport BasePool from \"pg-pool\";\nimport type { ClientConfig, PoolConfig } from \"pg\";\nimport { PgWebTransportSocket } from \"./socket\";\nimport { PgWebTransport } from \"./transport\";\n\nif (!(globalThis as any).Buffer) (globalThis as any).Buffer = Buffer;\n\nexport interface PgquicClientConfig extends ClientConfig {\n transport: PgWebTransport;\n enableChannelBinding?: boolean;\n}\nexport interface PgquicPoolConfig extends PoolConfig {\n transport: PgWebTransport;\n enableChannelBinding?: boolean;\n}\n\nexport class Client extends (BaseClient as any) {\n constructor(config: PgquicClientConfig) {\n if (!config?.transport)\n throw new Error(\"@ooraini/pgquic requires a PgWebTransport instance\");\n if (config.ssl !== false)\n throw new Error(\n \"@ooraini/pgquic requires ssl: false; WebTransport supplies encryption\",\n );\n if (config.enableChannelBinding)\n throw new Error(\n \"channel binding is unavailable without end-to-end PostgreSQL TLS\",\n );\n const socket = new PgWebTransportSocket(config.transport);\n super({ ...config, password: config.password, stream: socket });\n }\n}\n\nexport class Pool extends (BasePool as any) {\n constructor(config: PgquicPoolConfig) {\n super(config, Client);\n }\n}\n\nexport { PgWebTransport, PgWebTransportSocket };\nexport type {\n PgWebTransportOptions,\n TransportState,\n TokenProvider,\n} from \"./types\";\n","// ESM wrapper for pg-pool\nimport Pool from '../index.js'\n\n// Export as default only to match CJS module\nexport default Pool\n","import { Buffer } from \"buffer\";\nimport { EventEmitter } from \"events\";\nimport type { PgWebTransport } from \"./transport\";\n\nexport class PgWebTransportSocket extends EventEmitter {\n writable = true;\n connecting = false;\n destroyed = false;\n readonly generation: number | undefined = undefined;\n private stream?: WebTransportBidirectionalStream;\n private writer?: WritableStreamDefaultWriter<Uint8Array>;\n private reader?: ReadableStreamDefaultReader<Uint8Array>;\n private queue: Array<{\n value: Uint8Array;\n callback?: (error?: Error) => void;\n }> = [];\n private queuedBytes = 0;\n private pumping = false;\n private pressured = false;\n private closeEmitted = false;\n\n constructor(\n private readonly transport: PgWebTransport,\n private readonly limits = transport.queueLimits,\n ) {\n super();\n }\n\n connect(..._ignored: unknown[]): this {\n if (this.connecting || this.stream) return this;\n this.connecting = true;\n void this.open();\n return this;\n }\n\n private async open(): Promise<void> {\n try {\n const opened = await this.transport.openStream(this);\n if (this.destroyed) {\n await opened.writable.abort(\n new Error(\"socket destroyed during connect\"),\n );\n return;\n }\n this.stream = opened;\n this.writer = opened.writable.getWriter();\n this.reader = opened.readable.getReader();\n this.connecting = false;\n this.emit(\"connect\");\n void this.readLoop();\n void this.pump();\n } catch (error) {\n this.fail(error);\n }\n }\n\n write(\n chunk: Uint8Array | string,\n encoding?: BufferEncoding,\n callback?: (error?: Error) => void,\n ): boolean {\n if (this.destroyed || !this.writable) {\n const error = new Error(\"write after end\");\n queueMicrotask(() => callback?.(error));\n this.fail(error);\n return false;\n }\n const copy =\n typeof chunk === \"string\"\n ? Buffer.from(chunk, encoding)\n : Buffer.from(chunk).slice();\n if (this.queuedBytes + copy.byteLength > this.limits.maximum) {\n const error = new Error(\"WebTransport socket write queue limit exceeded\");\n queueMicrotask(() => callback?.(error));\n this.destroy(error);\n return false;\n }\n this.queue.push({ value: copy, callback });\n this.queuedBytes += copy.byteLength;\n if (this.queuedBytes >= this.limits.high) this.pressured = true;\n void this.pump();\n return !this.pressured;\n }\n\n private async pump(): Promise<void> {\n if (this.pumping || !this.writer || this.destroyed) return;\n this.pumping = true;\n try {\n while (this.queue.length && !this.destroyed) {\n const item = this.queue.shift()!;\n const value = item.value;\n await this.writer.ready;\n await this.writer.write(value);\n this.queuedBytes -= value.byteLength;\n item.callback?.();\n if (this.pressured && this.queuedBytes <= this.limits.low) {\n this.pressured = false;\n this.emit(\"drain\");\n }\n }\n } catch (error) {\n for (const item of this.queue.splice(0)) item.callback?.(asError(error));\n this.fail(error);\n } finally {\n this.pumping = false;\n }\n }\n\n private async readLoop(): Promise<void> {\n try {\n while (!this.destroyed && this.reader) {\n const { value, done } = await this.reader.read();\n if (done) break;\n if (value?.byteLength) this.emit(\"data\", Buffer.from(value));\n }\n this.finishClose();\n } catch (error) {\n this.fail(error);\n }\n }\n\n end(\n chunk?: Uint8Array | string,\n encoding?: BufferEncoding,\n callback?: () => void,\n ): this {\n if (chunk !== undefined) this.write(chunk, encoding);\n this.writable = false;\n void (async () => {\n while ((this.queue.length || this.pumping) && !this.destroyed)\n await new Promise((r) => setTimeout(r, 0));\n try {\n await this.writer?.close();\n callback?.();\n } catch (error) {\n this.fail(error);\n }\n })();\n return this;\n }\n\n destroy(error?: Error): this {\n if (this.destroyed) return this;\n this.destroyed = true;\n this.writable = false;\n this.queue = [];\n this.queuedBytes = 0;\n void this.reader?.cancel(error).catch(() => undefined);\n void this.writer?.abort(error).catch(() => undefined);\n if (error) queueMicrotask(() => this.emit(\"error\", error));\n this.finishClose();\n return this;\n }\n\n private fail(value: unknown): void {\n this.destroy(asError(value));\n }\n private finishClose(): void {\n if (this.closeEmitted) return;\n this.closeEmitted = true;\n this.destroyed = true;\n this.writable = false;\n this.transport.release(this);\n queueMicrotask(() => this.emit(\"close\"));\n }\n setNoDelay(_enabled?: boolean): this {\n return this;\n }\n setKeepAlive(_enabled?: boolean, _delay?: number): this {\n return this;\n }\n ref(): this {\n return this;\n }\n unref(): this {\n return this;\n }\n}\nfunction asError(value: unknown): Error {\n return value instanceof Error ? value : new Error(String(value));\n}\n","import { encodeControl, readControl } from \"./framing\";\nimport { PgWebTransportSocket } from \"./socket\";\nimport type {\n PgWebTransportOptions,\n TransportState,\n WebTransportLike,\n} from \"./types\";\n\nexport class PgWebTransport extends EventTarget {\n readonly queueLimits: { high: number; low: number; maximum: number };\n private session?: WebTransportLike;\n private connecting?: Promise<WebTransportLike>;\n private sockets = new Set<PgWebTransportSocket>();\n private status: TransportState[\"status\"] = \"idle\";\n private generation = 0;\n private totalSessions = 0;\n private sessionId?: string;\n private terminal = false;\n private lastFailureAt = 0;\n private failures = 0;\n\n constructor(private readonly options: PgWebTransportOptions) {\n super();\n const high = options.highWaterMark ?? 64 * 1024;\n const low = options.lowWaterMark ?? Math.floor(high / 2);\n const maximum = options.maxQueuedBytes ?? 256 * 1024;\n if (!options.url.startsWith(\"https://\"))\n throw new Error(\"WebTransport URL must use https://\");\n if (!(low >= 0 && low < high && high <= maximum))\n throw new Error(\"invalid write queue watermarks\");\n this.queueLimits = { high, low, maximum };\n }\n\n get state(): TransportState {\n return {\n status: this.status,\n generation: this.generation,\n sessionId: this.sessionId,\n activeConnections: this.sockets.size,\n maxConnections: this.options.maxConnections ?? 10,\n totalSessions: this.totalSessions,\n };\n }\n\n createSocket(): PgWebTransportSocket {\n return new PgWebTransportSocket(this);\n }\n\n async openStream(\n socket: PgWebTransportSocket,\n ): Promise<WebTransportBidirectionalStream> {\n if (this.terminal) throw new Error(\"PgWebTransport is closed\");\n if (this.sockets.size >= (this.options.maxConnections ?? 10))\n throw new Error(\"local WebTransport stream limit reached\");\n const session = await this.ensureSession();\n const stream = await session.createBidirectionalStream();\n this.sockets.add(socket);\n this.changed();\n return stream;\n }\n\n release(socket: PgWebTransportSocket): void {\n if (this.sockets.delete(socket)) this.changed();\n }\n\n private async ensureSession(): Promise<WebTransportLike> {\n if (this.session) return this.session;\n if (this.connecting) return this.connecting;\n this.connecting = this.connectSession();\n try {\n return await this.connecting;\n } finally {\n this.connecting = undefined;\n }\n }\n\n private async connectSession(): Promise<WebTransportLike> {\n if (this.failures) {\n this.status = \"backoff\";\n this.changed();\n const base = this.options.reconnectBaseDelayMs ?? 100;\n const cap = this.options.reconnectMaxDelayMs ?? 5_000;\n const delay = Math.min(cap, base * 2 ** Math.min(this.failures - 1, 8));\n const remaining = Math.max(\n 0,\n this.lastFailureAt + delay * (0.5 + Math.random()) - Date.now(),\n );\n if (remaining)\n await new Promise((resolve) => setTimeout(resolve, remaining));\n }\n this.status = \"connecting\";\n this.changed();\n const factory = this.options.webTransportFactory ?? defaultFactory;\n const session = factory(\n this.options.url,\n this.options.serverCertificateHashes\n ? { serverCertificateHashes: this.options.serverCertificateHashes }\n : {},\n );\n try {\n await session.ready;\n const control = await session.createBidirectionalStream();\n const writer = control.writable.getWriter();\n const reader = control.readable.getReader();\n const token =\n typeof this.options.token === \"function\"\n ? await this.options.token()\n : (this.options.token ?? \"\");\n await writer.write(encodeControl(token));\n const welcome = await readControl(reader);\n if (!welcome.ok)\n throw new Error(welcome.error || \"pgquic authentication failed\");\n writer.releaseLock();\n reader.releaseLock();\n this.session = session;\n this.sessionId = welcome.sessionId;\n this.generation++;\n this.totalSessions++;\n this.failures = 0;\n this.status = \"ready\";\n this.changed();\n void session.closed.then(\n () => this.sessionFailed(new Error(\"WebTransport session closed\")),\n (e) => this.sessionFailed(asError(e)),\n );\n return session;\n } catch (error) {\n session.close({ closeCode: 1, reason: \"control handshake failed\" });\n this.noteFailure();\n throw error;\n }\n }\n\n private sessionFailed(error: Error): void {\n if (!this.session || this.terminal) return;\n this.session = undefined;\n this.sessionId = undefined;\n this.noteFailure();\n for (const socket of [...this.sockets]) socket.destroy(error);\n }\n private noteFailure(): void {\n this.lastFailureAt = Date.now();\n this.failures++;\n this.status = this.terminal ? \"closed\" : \"idle\";\n this.changed();\n }\n async close(): Promise<void> {\n this.terminal = true;\n this.status = \"closed\";\n const current = this.session;\n this.session = undefined;\n for (const socket of [...this.sockets])\n socket.destroy(new Error(\"PgWebTransport closed\"));\n current?.close({ closeCode: 0, reason: \"client closed\" });\n this.changed();\n }\n private changed(): void {\n this.dispatchEvent(new CustomEvent(\"statechange\", { detail: this.state }));\n }\n}\nfunction defaultFactory(\n url: string,\n options: Record<string, unknown>,\n): WebTransportLike {\n return new WebTransport(\n url,\n options as WebTransportOptions,\n ) as unknown as WebTransportLike;\n}\nfunction asError(value: unknown): Error {\n return value instanceof Error ? value : new Error(String(value));\n}\n","import { Buffer } from \"buffer\";\n\nexport interface ControlWelcome {\n ok: boolean;\n version: number;\n sessionId?: string;\n maxStreams?: number;\n error?: string;\n}\n\nexport function encodeControl(token: string): Uint8Array {\n const payload = Buffer.from(JSON.stringify({ version: 1, token }), \"utf8\");\n const result = Buffer.allocUnsafe(4 + payload.length);\n result.writeUInt32BE(payload.length, 0);\n payload.copy(result, 4);\n return result;\n}\n\nexport async function readControl(\n reader: ReadableStreamDefaultReader<Uint8Array>,\n maximum = 32 * 1024,\n): Promise<ControlWelcome> {\n let buffered = new Uint8Array(0);\n const exact = async (length: number): Promise<Uint8Array> => {\n while (buffered.length < length) {\n const { value, done } = await reader.read();\n if (done) throw new Error(\"control stream ended unexpectedly\");\n const next = new Uint8Array(buffered.length + value.length);\n next.set(buffered);\n next.set(value, buffered.length);\n buffered = next;\n }\n const out = buffered.slice(0, length);\n buffered = buffered.slice(length);\n return out;\n };\n const header = await exact(4);\n const length = new DataView(header.buffer, header.byteOffset, 4).getUint32(0);\n if (length === 0 || length > maximum)\n throw new Error(`invalid control frame length ${length}`);\n const decoded = JSON.parse(\n new TextDecoder().decode(await exact(length)),\n ) as ControlWelcome;\n if (decoded.version !== 1)\n throw new Error(\"unsupported pgquic protocol version\");\n return decoded;\n}\n"],"mappings":"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","names":["len","i","len2","Buffer","i","byteLength","ReflectApply","ReflectOwnKeys","NumberIsNaN","EventEmitter","once","bits","value","elementType","i","require_utils","config","types","EventEmitter","password","query","getStream","getSecureStream","EventEmitter","stream","EventEmitter","Client","EventEmitter","Promise","Pool","Client","client","response","err","import_buffer","Pool","import_buffer","import_buffer","length","asError","BaseClient","Pool"]}
|