sockress 0.2.6 → 0.2.7

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.
@@ -0,0 +1,269 @@
1
+ import http, { IncomingMessage, ServerResponse } from 'http';
2
+ import { AddressInfo } from 'net';
3
+ import { WebSocket } from 'ws';
4
+ import type { CookieSerializeOptions } from 'cookie';
5
+ import { Options as MulterOptions } from 'multer';
6
+ export interface SockressAddress extends AddressInfo {
7
+ hostname: string;
8
+ url: string;
9
+ }
10
+ type ListenCallback = (error: Error | null, address?: SockressAddress) => void;
11
+ type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';
12
+ export type NextFunction = (err?: unknown) => void;
13
+ export type SockressHandler = (req: SockressRequest, res: SockressResponse, next: NextFunction) => unknown;
14
+ export type SockressErrorHandler = (err: unknown, req: SockressRequest, res: SockressResponse, next: NextFunction) => unknown;
15
+ export interface SockressOptions {
16
+ cors?: Partial<CorsOptions>;
17
+ socket?: Partial<SocketOptions>;
18
+ bodyLimit?: number;
19
+ }
20
+ interface SocketOptions {
21
+ path: string;
22
+ heartbeatInterval: number;
23
+ idleTimeout: number;
24
+ }
25
+ interface CorsOptions {
26
+ origin: string | string[];
27
+ credentials: boolean;
28
+ methods: HTTPMethod[];
29
+ allowedHeaders: string[];
30
+ exposedHeaders: string[];
31
+ maxAge: number;
32
+ }
33
+ interface NormalizedOptions {
34
+ cors: CorsOptions;
35
+ socket: SocketOptions;
36
+ bodyLimit: number;
37
+ }
38
+ export interface SockressUploaderOptions {
39
+ dest?: string;
40
+ limits?: MulterOptions['limits'];
41
+ preserveFilename?: boolean;
42
+ }
43
+ export interface SockressUploader {
44
+ single(field: string): SockressHandler;
45
+ array(field: string, maxCount?: number): SockressHandler;
46
+ fields(fields: Array<{
47
+ name: string;
48
+ maxCount?: number;
49
+ }>): SockressHandler;
50
+ any(): SockressHandler;
51
+ }
52
+ export interface StaticOptions {
53
+ index?: string;
54
+ maxAge?: number;
55
+ stripPrefix?: string;
56
+ }
57
+ interface MiddlewareLayer {
58
+ path: string;
59
+ handler: SockressHandler | SockressErrorHandler;
60
+ isErrorHandler: boolean;
61
+ }
62
+ interface RouteLayer {
63
+ method: HTTPMethod | 'ALL';
64
+ matcher: PathMatcher;
65
+ handlers: Array<SockressHandler | SockressErrorHandler>;
66
+ }
67
+ interface PathMatcher {
68
+ raw: string;
69
+ match: (path: string) => PathMatchResult | null;
70
+ }
71
+ interface PathMatchResult {
72
+ params: Record<string, string>;
73
+ }
74
+ type RequestMode = {
75
+ kind: 'http';
76
+ req: IncomingMessage;
77
+ res: ServerResponse;
78
+ } | {
79
+ kind: 'socket';
80
+ socket: WebSocket;
81
+ requestId: string;
82
+ };
83
+ export interface SockressUploadedFile {
84
+ fieldName: string;
85
+ name: string;
86
+ type: string;
87
+ size: number;
88
+ buffer: Buffer;
89
+ lastModified?: number;
90
+ path?: string;
91
+ }
92
+ export interface SockressRequest {
93
+ readonly id: string;
94
+ readonly method: HTTPMethod;
95
+ path: string;
96
+ query: Record<string, string | string[]>;
97
+ params: Record<string, string>;
98
+ headers: Record<string, string | string[] | undefined>;
99
+ body: unknown;
100
+ cookies: Record<string, string>;
101
+ file?: SockressUploadedFile;
102
+ files?: Record<string, SockressUploadedFile[]>;
103
+ readonly type: 'http' | 'socket';
104
+ readonly ip: string | undefined;
105
+ readonly protocol: 'http' | 'https' | 'ws' | 'wss';
106
+ readonly secure: boolean;
107
+ context: Record<string, unknown>;
108
+ raw?: IncomingMessage;
109
+ readonly hostname?: string;
110
+ readonly originalUrl?: string;
111
+ readonly baseUrl?: string;
112
+ readonly subdomains?: string[];
113
+ get(field: string): string | undefined;
114
+ accepts(types: string | string[]): string | false;
115
+ is(type: string | string[]): string | false | null;
116
+ param(name: string, defaultValue?: string): string;
117
+ }
118
+ export declare class SockressRequestImpl implements SockressRequest {
119
+ readonly id: string;
120
+ readonly method: HTTPMethod;
121
+ path: string;
122
+ query: Record<string, string | string[]>;
123
+ headers: Record<string, string | string[] | undefined>;
124
+ body: unknown;
125
+ cookies: Record<string, string>;
126
+ files: Record<string, SockressUploadedFile[]> | undefined;
127
+ file: SockressUploadedFile | undefined;
128
+ readonly type: 'http' | 'socket';
129
+ readonly ip: string | undefined;
130
+ readonly protocol: 'http' | 'https' | 'ws' | 'wss';
131
+ readonly secure: boolean;
132
+ raw?: IncomingMessage | undefined;
133
+ params: Record<string, string>;
134
+ context: Record<string, unknown>;
135
+ readonly hostname?: string;
136
+ readonly originalUrl?: string;
137
+ readonly baseUrl?: string;
138
+ readonly subdomains?: string[];
139
+ constructor(id: string, method: HTTPMethod, path: string, query: Record<string, string | string[]>, headers: Record<string, string | string[] | undefined>, body: unknown, cookies: Record<string, string>, files: Record<string, SockressUploadedFile[]> | undefined, file: SockressUploadedFile | undefined, type: 'http' | 'socket', ip: string | undefined, protocol: 'http' | 'https' | 'ws' | 'wss', secure: boolean, raw?: IncomingMessage | undefined, originalUrl?: string, baseUrl?: string);
140
+ get(field: string): string | undefined;
141
+ accepts(types: string | string[]): string | false;
142
+ is(type: string | string[]): string | false | null;
143
+ param(name: string, defaultValue?: string): string;
144
+ }
145
+ export declare class SockressResponse {
146
+ private readonly mode;
147
+ private readonly cors;
148
+ private readonly allowedOrigin;
149
+ private statusCode;
150
+ private sent;
151
+ private headers;
152
+ private cookies;
153
+ readonly raw?: ServerResponse;
154
+ constructor(mode: RequestMode, cors: CorsOptions, allowedOrigin: string);
155
+ status(code: number): this;
156
+ set(field: string, value: string): this;
157
+ append(field: string, value: string): this;
158
+ cookie(name: string, value: string, options?: CookieSerializeOptions): this;
159
+ clearCookie(name: string, options?: CookieSerializeOptions): this;
160
+ json(payload: unknown): this;
161
+ send(payload?: unknown): this;
162
+ end(): this;
163
+ isSent(): boolean;
164
+ redirect(url: string | number, statusOrUrl?: number | string): this;
165
+ sendFile(filePath: string, options?: {
166
+ root?: string;
167
+ headers?: Record<string, string>;
168
+ }): Promise<this>;
169
+ download(filePath: string, filename?: string, options?: {
170
+ root?: string;
171
+ headers?: Record<string, string>;
172
+ }): Promise<this>;
173
+ sendStatus(code: number): this;
174
+ format(obj: Record<string, (req: SockressRequest, res: SockressResponse) => void>, req: SockressRequest): this;
175
+ location(url: string): this;
176
+ vary(field: string): this;
177
+ private buildHeaders;
178
+ }
179
+ export declare class SockressRouter {
180
+ private middlewares;
181
+ private routes;
182
+ use(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
183
+ use(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
184
+ private register;
185
+ get(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
186
+ post(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
187
+ put(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
188
+ patch(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
189
+ delete(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
190
+ head(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
191
+ options(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
192
+ all(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
193
+ route(path: string): SockressRoute;
194
+ getStack(): {
195
+ middlewares: MiddlewareLayer[];
196
+ routes: RouteLayer[];
197
+ };
198
+ }
199
+ export declare class SockressRoute {
200
+ private router;
201
+ private path;
202
+ constructor(router: SockressRouter, path: string);
203
+ get(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
204
+ post(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
205
+ put(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
206
+ patch(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
207
+ delete(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
208
+ head(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
209
+ options(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
210
+ all(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
211
+ }
212
+ export declare class SockressAppRoute {
213
+ private app;
214
+ private path;
215
+ constructor(app: SockressApp, path: string);
216
+ get(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
217
+ post(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
218
+ put(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
219
+ patch(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
220
+ delete(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
221
+ head(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
222
+ options(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
223
+ all(...handlers: Array<SockressHandler | SockressErrorHandler>): this;
224
+ }
225
+ export declare class SockressApp {
226
+ private readonly config;
227
+ private middlewares;
228
+ private routes;
229
+ private paramHandlers;
230
+ private server?;
231
+ private wss?;
232
+ private heartbeatInterval?;
233
+ private shutdownRegistered;
234
+ private shuttingDown;
235
+ constructor(config: NormalizedOptions);
236
+ static Router(): SockressRouter;
237
+ static create(options?: SockressOptions): SockressApp;
238
+ use(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler | SockressRouter>): this;
239
+ use(...handlers: Array<SockressHandler | SockressErrorHandler | SockressRouter>): this;
240
+ useStatic(route: string, directory: string, options?: StaticOptions): this;
241
+ private register;
242
+ get(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
243
+ post(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
244
+ put(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
245
+ patch(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
246
+ delete(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
247
+ head(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
248
+ options(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
249
+ all(path: string, ...handlers: Array<SockressHandler | SockressErrorHandler>): this;
250
+ param(name: string, handler: SockressHandler): this;
251
+ route(path: string): SockressAppRoute;
252
+ listen(port: number, callback?: ListenCallback): http.Server;
253
+ listen(port: number, host: string, callback?: ListenCallback): http.Server;
254
+ close(): Promise<void>;
255
+ private startHeartbeat;
256
+ private registerShutdownHooks;
257
+ private handleHttp;
258
+ private handleSocket;
259
+ private runPipeline;
260
+ private composeStack;
261
+ private renderError;
262
+ }
263
+ export declare function sockress(options?: SockressOptions): SockressApp;
264
+ export declare const createSockress: typeof sockress;
265
+ export declare const Router: typeof SockressApp.Router;
266
+ export declare function createUploader(options?: SockressUploaderOptions): SockressUploader;
267
+ export declare function serveStatic(root: string, options?: StaticOptions): SockressHandler;
268
+ export {};
269
+ //# 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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"}