sockress 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/dist/index.d.ts +127 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +580 -0
- package/dist/index.js.map +1 -0
- package/package.json +29 -0
- package/src/index.ts +725 -0
- package/tsconfig.json +8 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import http, { IncomingMessage, ServerResponse } from 'http';
|
|
2
|
+
import { AddressInfo } from 'net';
|
|
3
|
+
import { WebSocket } from 'ws';
|
|
4
|
+
import type { CookieSerializeOptions } from 'cookie';
|
|
5
|
+
type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';
|
|
6
|
+
export type NextFunction = (err?: unknown) => void;
|
|
7
|
+
export type SockressHandler = (req: SockressRequest, res: SockressResponse, next: NextFunction) => unknown;
|
|
8
|
+
export type SockressErrorHandler = (err: unknown, req: SockressRequest, res: SockressResponse, next: NextFunction) => unknown;
|
|
9
|
+
export interface SockressOptions {
|
|
10
|
+
cors?: Partial<CorsOptions>;
|
|
11
|
+
socket?: Partial<SocketOptions>;
|
|
12
|
+
bodyLimit?: number;
|
|
13
|
+
}
|
|
14
|
+
interface SocketOptions {
|
|
15
|
+
path: string;
|
|
16
|
+
heartbeatInterval: number;
|
|
17
|
+
idleTimeout: number;
|
|
18
|
+
}
|
|
19
|
+
interface CorsOptions {
|
|
20
|
+
origin: string | string[];
|
|
21
|
+
credentials: boolean;
|
|
22
|
+
methods: HTTPMethod[];
|
|
23
|
+
allowedHeaders: string[];
|
|
24
|
+
exposedHeaders: string[];
|
|
25
|
+
maxAge: number;
|
|
26
|
+
}
|
|
27
|
+
interface NormalizedOptions {
|
|
28
|
+
cors: CorsOptions;
|
|
29
|
+
socket: SocketOptions;
|
|
30
|
+
bodyLimit: number;
|
|
31
|
+
}
|
|
32
|
+
type RequestMode = {
|
|
33
|
+
kind: 'http';
|
|
34
|
+
req: IncomingMessage;
|
|
35
|
+
res: ServerResponse;
|
|
36
|
+
} | {
|
|
37
|
+
kind: 'socket';
|
|
38
|
+
socket: WebSocket;
|
|
39
|
+
requestId: string;
|
|
40
|
+
};
|
|
41
|
+
export interface SockressRequest {
|
|
42
|
+
readonly id: string;
|
|
43
|
+
readonly method: HTTPMethod;
|
|
44
|
+
path: string;
|
|
45
|
+
query: Record<string, string | string[]>;
|
|
46
|
+
params: Record<string, string>;
|
|
47
|
+
headers: Record<string, string | string[] | undefined>;
|
|
48
|
+
body: unknown;
|
|
49
|
+
cookies: Record<string, string>;
|
|
50
|
+
readonly type: 'http' | 'socket';
|
|
51
|
+
readonly ip: string | undefined;
|
|
52
|
+
readonly protocol: 'http' | 'https' | 'ws' | 'wss';
|
|
53
|
+
readonly secure: boolean;
|
|
54
|
+
context: Record<string, unknown>;
|
|
55
|
+
raw?: IncomingMessage;
|
|
56
|
+
get(field: string): string | undefined;
|
|
57
|
+
}
|
|
58
|
+
export declare class SockressRequestImpl implements SockressRequest {
|
|
59
|
+
readonly id: string;
|
|
60
|
+
readonly method: HTTPMethod;
|
|
61
|
+
path: string;
|
|
62
|
+
query: Record<string, string | string[]>;
|
|
63
|
+
headers: Record<string, string | string[] | undefined>;
|
|
64
|
+
body: unknown;
|
|
65
|
+
cookies: Record<string, string>;
|
|
66
|
+
readonly type: 'http' | 'socket';
|
|
67
|
+
readonly ip: string | undefined;
|
|
68
|
+
readonly protocol: 'http' | 'https' | 'ws' | 'wss';
|
|
69
|
+
readonly secure: boolean;
|
|
70
|
+
raw?: IncomingMessage | undefined;
|
|
71
|
+
params: Record<string, string>;
|
|
72
|
+
context: Record<string, unknown>;
|
|
73
|
+
constructor(id: string, method: HTTPMethod, path: string, query: Record<string, string | string[]>, headers: Record<string, string | string[] | undefined>, body: unknown, cookies: Record<string, string>, type: 'http' | 'socket', ip: string | undefined, protocol: 'http' | 'https' | 'ws' | 'wss', secure: boolean, raw?: IncomingMessage | undefined);
|
|
74
|
+
get(field: string): string | undefined;
|
|
75
|
+
}
|
|
76
|
+
export declare class SockressResponse {
|
|
77
|
+
private readonly mode;
|
|
78
|
+
private readonly cors;
|
|
79
|
+
private readonly allowedOrigin;
|
|
80
|
+
private statusCode;
|
|
81
|
+
private sent;
|
|
82
|
+
private headers;
|
|
83
|
+
private cookies;
|
|
84
|
+
constructor(mode: RequestMode, cors: CorsOptions, allowedOrigin: string);
|
|
85
|
+
status(code: number): this;
|
|
86
|
+
set(field: string, value: string): this;
|
|
87
|
+
append(field: string, value: string): this;
|
|
88
|
+
cookie(name: string, value: string, options?: CookieSerializeOptions): this;
|
|
89
|
+
clearCookie(name: string, options?: CookieSerializeOptions): this;
|
|
90
|
+
json(payload: unknown): this;
|
|
91
|
+
send(payload?: unknown): this;
|
|
92
|
+
end(): this;
|
|
93
|
+
isSent(): boolean;
|
|
94
|
+
private buildHeaders;
|
|
95
|
+
}
|
|
96
|
+
export declare class SockressApp {
|
|
97
|
+
private readonly config;
|
|
98
|
+
private middlewares;
|
|
99
|
+
private routes;
|
|
100
|
+
private server?;
|
|
101
|
+
private wss?;
|
|
102
|
+
private heartbeatInterval?;
|
|
103
|
+
constructor(config: NormalizedOptions);
|
|
104
|
+
static create(options?: SockressOptions): SockressApp;
|
|
105
|
+
use(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
|
|
106
|
+
use(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
|
|
107
|
+
private register;
|
|
108
|
+
get(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
|
|
109
|
+
post(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
|
|
110
|
+
put(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
|
|
111
|
+
patch(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
|
|
112
|
+
delete(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
|
|
113
|
+
head(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
|
|
114
|
+
options(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
|
|
115
|
+
all(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
|
|
116
|
+
listen(port: number, host?: string, callback?: (address: AddressInfo) => void): http.Server;
|
|
117
|
+
close(): Promise<void>;
|
|
118
|
+
private startHeartbeat;
|
|
119
|
+
private handleHttp;
|
|
120
|
+
private handleSocket;
|
|
121
|
+
private runPipeline;
|
|
122
|
+
private composeStack;
|
|
123
|
+
private renderError;
|
|
124
|
+
}
|
|
125
|
+
export declare function createSockress(options?: SockressOptions): SockressApp;
|
|
126
|
+
export {};
|
|
127
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|