/// /// import * as net from 'net'; import { State } from './state'; import Readable from './readable'; import Writable from './writable'; import { Handlers } from './handlers'; import { HandlerResolve } from './handler'; import Event from './event'; import Request from './request'; import ObfsMethod from '../obfs/obfs'; export type EventTypes = { data: (data: Buffer) => void; error: (err: Error) => void; close: (connection: Connection) => void; terminate: () => void; }; export type Options = { socks5: boolean; socks4: boolean; }; /** * The Connection class set up listeners and handles incoming data. * a new instance get constructed pre each connection */ declare class Connection { /** * Resolve function for client only */ resolve?: (value: PromiseLike | HandlerResolve) => void; /** * Reject function for client only */ reject?: (reason?: any) => void; /** * Current state */ private state; /** * Connection socket */ socket: net.Socket; /** * Readable data */ readable: Readable; /** * Authentication and request handlers */ handlers: Handlers; /** * Main event instance */ event: Event; /** * Server options */ options: Options; /** * The obfuscation method */ obfs: ObfsMethod; /** * Clients Request */ request?: Request; constructor(event: Event, socket: net.Socket, handlers: Handlers, options?: Options); /** * Writes the writable on the socket * @param writable - writable to write on socket * @returns void */ write(writable: Writable): void; /** * Read n bytes of data without the modification of the readable object data * @param bytes - Number of bytes to be read from data * @returns Buffer */ cat(bytes?: number): Buffer; /** * Read n bytes of data * @param bytes - Number of bytes to be read from data * @returns Buffer */ read(bytes?: number): Buffer; /** * Read from data until a specific bytes * @param value - Buffer in which the reading process continues until it appears * @returns Buffer */ readUntil(value: Buffer | number): Buffer; /** * Checks if the connection is alive * @returns void */ isAlive(): boolean; /** * Closes the connection * @returns void */ close(): void; /** * Change state from one to other * @param state - The state to change to * @returns void */ transitionTo(state: State): void; /** * Parse request * @returns void */ parse(): void; /** * Reply to the user with a proper response * @returns void */ reply(): void; } export default Connection;