Index: node_modules/pg-protocol/src/messages.ts
===================================================================
--- node_modules/pg-protocol/src/messages.ts	(revision 62b296460f935ff5cc47a75f6567f97df5a244a7)
+++ node_modules/pg-protocol/src/messages.ts	(revision 62b296460f935ff5cc47a75f6567f97df5a244a7)
@@ -0,0 +1,262 @@
+export type Mode = 'text' | 'binary'
+
+export type MessageName =
+  | 'parseComplete'
+  | 'bindComplete'
+  | 'closeComplete'
+  | 'noData'
+  | 'portalSuspended'
+  | 'replicationStart'
+  | 'emptyQuery'
+  | 'copyDone'
+  | 'copyData'
+  | 'rowDescription'
+  | 'parameterDescription'
+  | 'parameterStatus'
+  | 'backendKeyData'
+  | 'notification'
+  | 'readyForQuery'
+  | 'commandComplete'
+  | 'dataRow'
+  | 'copyInResponse'
+  | 'copyOutResponse'
+  | 'authenticationOk'
+  | 'authenticationMD5Password'
+  | 'authenticationCleartextPassword'
+  | 'authenticationSASL'
+  | 'authenticationSASLContinue'
+  | 'authenticationSASLFinal'
+  | 'error'
+  | 'notice'
+
+export interface BackendMessage {
+  name: MessageName
+  length: number
+}
+
+export const parseComplete: BackendMessage = {
+  name: 'parseComplete',
+  length: 5,
+}
+
+export const bindComplete: BackendMessage = {
+  name: 'bindComplete',
+  length: 5,
+}
+
+export const closeComplete: BackendMessage = {
+  name: 'closeComplete',
+  length: 5,
+}
+
+export const noData: BackendMessage = {
+  name: 'noData',
+  length: 5,
+}
+
+export const portalSuspended: BackendMessage = {
+  name: 'portalSuspended',
+  length: 5,
+}
+
+export const replicationStart: BackendMessage = {
+  name: 'replicationStart',
+  length: 4,
+}
+
+export const emptyQuery: BackendMessage = {
+  name: 'emptyQuery',
+  length: 4,
+}
+
+export const copyDone: BackendMessage = {
+  name: 'copyDone',
+  length: 4,
+}
+
+interface NoticeOrError {
+  message: string | undefined
+  severity: string | undefined
+  code: string | undefined
+  detail: string | undefined
+  hint: string | undefined
+  position: string | undefined
+  internalPosition: string | undefined
+  internalQuery: string | undefined
+  where: string | undefined
+  schema: string | undefined
+  table: string | undefined
+  column: string | undefined
+  dataType: string | undefined
+  constraint: string | undefined
+  file: string | undefined
+  line: string | undefined
+  routine: string | undefined
+}
+
+export class DatabaseError extends Error implements NoticeOrError {
+  public severity: string | undefined
+  public code: string | undefined
+  public detail: string | undefined
+  public hint: string | undefined
+  public position: string | undefined
+  public internalPosition: string | undefined
+  public internalQuery: string | undefined
+  public where: string | undefined
+  public schema: string | undefined
+  public table: string | undefined
+  public column: string | undefined
+  public dataType: string | undefined
+  public constraint: string | undefined
+  public file: string | undefined
+  public line: string | undefined
+  public routine: string | undefined
+  constructor(
+    message: string,
+    public readonly length: number,
+    public readonly name: MessageName
+  ) {
+    super(message)
+  }
+}
+
+export class CopyDataMessage {
+  public readonly name = 'copyData'
+  constructor(
+    public readonly length: number,
+    public readonly chunk: Buffer
+  ) {}
+}
+
+export class CopyResponse {
+  public readonly columnTypes: number[]
+  constructor(
+    public readonly length: number,
+    public readonly name: MessageName,
+    public readonly binary: boolean,
+    columnCount: number
+  ) {
+    this.columnTypes = new Array(columnCount)
+  }
+}
+
+export class Field {
+  constructor(
+    public readonly name: string,
+    public readonly tableID: number,
+    public readonly columnID: number,
+    public readonly dataTypeID: number,
+    public readonly dataTypeSize: number,
+    public readonly dataTypeModifier: number,
+    public readonly format: Mode
+  ) {}
+}
+
+export class RowDescriptionMessage {
+  public readonly name: MessageName = 'rowDescription'
+  public readonly fields: Field[]
+  constructor(
+    public readonly length: number,
+    public readonly fieldCount: number
+  ) {
+    this.fields = new Array(this.fieldCount)
+  }
+}
+
+export class ParameterDescriptionMessage {
+  public readonly name: MessageName = 'parameterDescription'
+  public readonly dataTypeIDs: number[]
+  constructor(
+    public readonly length: number,
+    public readonly parameterCount: number
+  ) {
+    this.dataTypeIDs = new Array(this.parameterCount)
+  }
+}
+
+export class ParameterStatusMessage {
+  public readonly name: MessageName = 'parameterStatus'
+  constructor(
+    public readonly length: number,
+    public readonly parameterName: string,
+    public readonly parameterValue: string
+  ) {}
+}
+
+export class AuthenticationMD5Password implements BackendMessage {
+  public readonly name: MessageName = 'authenticationMD5Password'
+  constructor(
+    public readonly length: number,
+    public readonly salt: Buffer
+  ) {}
+}
+
+export class BackendKeyDataMessage {
+  public readonly name: MessageName = 'backendKeyData'
+  constructor(
+    public readonly length: number,
+    public readonly processID: number,
+    public readonly secretKey: number
+  ) {}
+}
+
+export class NotificationResponseMessage {
+  public readonly name: MessageName = 'notification'
+  constructor(
+    public readonly length: number,
+    public readonly processId: number,
+    public readonly channel: string,
+    public readonly payload: string
+  ) {}
+}
+
+export class ReadyForQueryMessage {
+  public readonly name: MessageName = 'readyForQuery'
+  constructor(
+    public readonly length: number,
+    public readonly status: string
+  ) {}
+}
+
+export class CommandCompleteMessage {
+  public readonly name: MessageName = 'commandComplete'
+  constructor(
+    public readonly length: number,
+    public readonly text: string
+  ) {}
+}
+
+export class DataRowMessage {
+  public readonly fieldCount: number
+  public readonly name: MessageName = 'dataRow'
+  constructor(
+    public length: number,
+    public fields: any[]
+  ) {
+    this.fieldCount = fields.length
+  }
+}
+
+export class NoticeMessage implements BackendMessage, NoticeOrError {
+  constructor(
+    public readonly length: number,
+    public readonly message: string | undefined
+  ) {}
+  public readonly name = 'notice'
+  public severity: string | undefined
+  public code: string | undefined
+  public detail: string | undefined
+  public hint: string | undefined
+  public position: string | undefined
+  public internalPosition: string | undefined
+  public internalQuery: string | undefined
+  public where: string | undefined
+  public schema: string | undefined
+  public table: string | undefined
+  public column: string | undefined
+  public dataType: string | undefined
+  public constraint: string | undefined
+  public file: string | undefined
+  public line: string | undefined
+  public routine: string | undefined
+}
