///
import { ServerResponse, IncomingMessage } from 'http';
type Listener> = (...args: T) => void;
declare class EventEmitter<
E extends Record> = Record,
> {
private listenerMap;
on(key: K, listener: Listener): () => void;
addListener(key: K, listener: Listener): () => void;
off(key: K, listener: Listener): void;
removeListener(key: K, listener: Listener): void;
emit(key: K, ...args: E[K]): void;
}
type Headers$2 = Record>;
declare class Response$1 {
private _super;
req: Request$1 | undefined;
constructor(httpRes: ServerResponse);
writeHead(statusCode: number, statusReason: string, headers: Headers$2): void;
write(data: Buffer | string): void;
end(): void;
}
type Events$2 = {
end: [];
};
declare class Request$1 extends EventEmitter {
private _super;
res: Response$1 | undefined;
constructor(req: IncomingMessage);
getMethod(): string;
getURL(): string;
getHeaders(): Record;
getRemoteAddress(): string | undefined;
getReadStream(): NodeJS.ReadableStream;
read(_bytes: number): void;
}
type RedirectType = 'html' | '301' | '302' | '303';
type Cookie = {
value: string;
domain?: string;
path?: string;
expires?: Date;
httpOnly?: boolean;
secure?: boolean;
};
declare class Response {
private _super;
private buffer;
req: Request | undefined;
constructor(res: Response$1);
clear(type?: string, status?: string): void;
status(status?: string | number): string | this;
charset(charset?: string): string;
headers<
T extends
| []
| [name: string]
| [name: string, value: string | null]
| [Record],
>(
...args: T
): T extends []
? Record>
: T extends [string]
? string | undefined
: Response;
write(data: unknown): void;
contentType(type: string): void;
cookies<
T extends
| []
| [name: string]
| [name: string, value: Cookie | string | null]
| [Record],
>(
...args: T
): T extends []
? Record
: T extends [string]
? Cookie | undefined
: Response;
_prepHeaders(): void;
_writeHead(): void;
end(...args: Array): void;
die(...args: Array): void;
redirect(url: string, type?: RedirectType): void;
htmlRedirect(url: string): void;
}
type Headers$1 = Record>;
type ParsedUrl = {
raw: string;
rawPath: string;
path: string;
search: string;
qs: string;
};
type UrlPartName = keyof ParsedUrl;
type Events$1 = {
'parse-error': [Error];
'no-route': [];
end: [];
};
declare class Request extends EventEmitter {
private _super;
private _headers;
private _cookies;
private _url;
private _method;
private _query;
private _body;
res: Response | undefined;
constructor(req: Request$1);
url(part?: UrlPartName): string;
private getMethod;
method(
...args: T
): T extends [] ? string : boolean;
getRemoteIP(): string | undefined;
headers(
...args: T
): T extends [] ? Headers$1 : string | undefined;
cookies(n?: string): string | Record;
query(
...args: T
): T extends [] ? Record : string | undefined;
body(
...args: T
): T extends [] ? Record : unknown;
_maybeParseBody(): Record;
_parseBody(): Record;
}
type Events = {
request: [Request, Response];
};
declare class App extends EventEmitter {
private router;
private routeRequest;
route(pattern: string, handler: () => void): void;
getRequestHandler(): (req: IncomingMessage, res: ServerResponse) => void;
}
declare function createApp(): App;
type Headers = Record>;
type Params = Record>;
type Options = {
path: string;
params?: Params;
headers?: Headers;
method?: string;
body?: string | Buffer | Params;
data?: string | Buffer | Params;
protocol?: string;
enc?: 'utf8';
};
type Result = {
statusCode: number;
headers: Headers;
body: string | Buffer;
};
declare const request: (input: Options) => Result;
declare const http_d_request: typeof request;
declare namespace http_d {
export { http_d_request as request };
}
export { createApp, http_d as http };