mirror of
https://github.com/brianc/node-postgres.git
synced 2026-01-18 15:55:05 +00:00
* Remove unused travis CI config * Bump eslint and friends * Fix lint errors after eslint upgrade * Remove windows and macos from CI workflow as they are actually running linux Removes the windows and macos matrix from the CI workflow as they were never actually setting the OS. Both were running against the "ubuntu-latest" OS. Trying to actually use them would not work either as neither windows or macos is supported for service containers. A different means will be needed to test on those platforms. Until that's done, this removes those from the matrix as we were simply running the same thing 3x for the same node versions.
263 lines
6.3 KiB
TypeScript
263 lines
6.3 KiB
TypeScript
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
|
|
}
|