@rsbuild/core 2.0.0-beta.7 → 2.0.0-beta.8

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.
Files changed (56) hide show
  1. package/bin/rsbuild.js +13 -0
  2. package/compiled/connect-next/index.d.ts +56 -0
  3. package/compiled/{connect → connect-next}/license +1 -0
  4. package/compiled/connect-next/package.json +1 -0
  5. package/compiled/css-loader/index.js +2 -2
  6. package/compiled/html-rspack-plugin/index.js +14 -14
  7. package/compiled/jiti/dist/babel.cjs +60 -60
  8. package/compiled/jiti/dist/jiti.cjs +2 -2
  9. package/compiled/postcss-loader/index.js +6 -6
  10. package/compiled/rslog/index.d.ts +17 -1
  11. package/compiled/rslog/package.json +1 -1
  12. package/dist/{131.js → 958.js} +254 -357
  13. package/dist/chokidar.js +59 -57
  14. package/dist/client/hmr.js +1 -1
  15. package/dist/client/overlay.js +1 -1
  16. package/dist/connect-next.js +268 -0
  17. package/dist/{connect.js.LICENSE.txt → connect-next.js.LICENSE.txt} +3 -13
  18. package/dist/cors.js +2 -2
  19. package/dist/http-proxy-middleware.js +57 -552
  20. package/dist/index.js +1 -1
  21. package/dist/launch-editor-middleware.js +23 -8
  22. package/dist/manifest-plugin.js +18 -18
  23. package/dist/memfs.js +178 -717
  24. package/dist/{710.js → mrmime.js} +2 -1
  25. package/dist/open.js +35 -32
  26. package/dist/range-parser.js +2 -2
  27. package/dist/remapping.js +2 -2
  28. package/dist/rslib-runtime.js +3 -3
  29. package/dist/sirv.js +14 -14
  30. package/dist/src.js +510 -0
  31. package/dist/tinyglobby.js +25 -25
  32. package/dist/transformLoader.mjs +38 -1
  33. package/dist/transformRawLoader.mjs +1 -1
  34. package/dist/ws.js +1541 -0
  35. package/dist-types/helpers/index.d.ts +1 -1
  36. package/dist-types/helpers/vendors.d.ts +0 -1
  37. package/dist-types/server/runner/asModule.d.ts +1 -1
  38. package/dist-types/server/socketServer.d.ts +1 -1
  39. package/dist-types/types/thirdParty.d.ts +1 -1
  40. package/package.json +7 -8
  41. package/compiled/connect/index.d.ts +0 -90
  42. package/compiled/connect/package.json +0 -1
  43. package/compiled/ws/index.d.ts +0 -437
  44. package/compiled/ws/index.js +0 -3166
  45. package/compiled/ws/license +0 -20
  46. package/compiled/ws/package.json +0 -1
  47. package/dist/397.js +0 -11
  48. package/dist/7.js +0 -1
  49. package/dist/712.js +0 -15
  50. package/dist/743.js +0 -7
  51. package/dist/88.js +0 -40
  52. package/dist/connect.js +0 -574
  53. package/dist-types/helpers/color.d.ts +0 -4
  54. /package/dist/{131.js.LICENSE.txt → 958.js.LICENSE.txt} +0 -0
  55. /package/dist/client/{59.js → 797.js} +0 -0
  56. /package/dist/{31.js → trace-mapping.js} +0 -0
@@ -1,6 +1,6 @@
1
+ import { color } from '../../compiled/rslog';
1
2
  import RspackChain from '../../compiled/rspack-chain/types';
2
3
  import type { FilenameConfig, NormalizedConfig, NormalizedEnvironmentConfig, RsbuildTarget, Rspack } from '../types';
3
- import { color } from './color';
4
4
  export { require } from './vendors';
5
5
  export { color, RspackChain };
6
6
  export declare const getNodeEnv: () => string;
@@ -1,5 +1,4 @@
1
1
  type CompiledPackages = {
2
- ws: typeof import('../../compiled/ws').default;
3
2
  'webpack-merge': typeof import('../../compiled/webpack-merge');
4
3
  'html-rspack-plugin': typeof import('../../compiled/html-rspack-plugin').default;
5
4
  };
@@ -1,2 +1,2 @@
1
1
  import type { Module, SyntheticModule } from 'node:vm';
2
- export declare const asModule: (something: Record<string, any>, context: Record<string, any>, unlinked?: boolean) => Promise<Module | SyntheticModule>;
2
+ export declare const asModule: (moduleExports: Record<string, unknown>, context: Record<string, unknown>, unlinked?: boolean) => Promise<Module | SyntheticModule>;
@@ -63,7 +63,7 @@ export declare class SocketServer {
63
63
  upgrade: (req: IncomingMessage, socket: Socket, head: Buffer) => void;
64
64
  private checkSockets;
65
65
  private clearHeartbeatTimer;
66
- prepare(): void;
66
+ prepare(): Promise<void>;
67
67
  onBuildDone(): void;
68
68
  /**
69
69
  * Send error messages to the client and render error overlay
@@ -1,5 +1,5 @@
1
1
  import type { CssExtractRspackLoaderOptions, CssExtractRspackPluginOptions } from '@rspack/core';
2
- import type Connect from '../../compiled/connect';
2
+ import type * as Connect from '../../compiled/connect-next';
3
3
  import type HtmlRspackPlugin from '../../compiled/html-rspack-plugin';
4
4
  import type { AcceptedPlugin, ProcessOptions } from '../../compiled/postcss';
5
5
  import type { Rspack } from './rspack';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsbuild/core",
3
- "version": "2.0.0-beta.7",
3
+ "version": "2.0.0-beta.8",
4
4
  "description": "The Rspack-based build tool.",
5
5
  "homepage": "https://rsbuild.rs",
6
6
  "bugs": {
@@ -36,7 +36,7 @@
36
36
  "types.d.ts"
37
37
  ],
38
38
  "dependencies": {
39
- "@rspack/core": "2.0.0-beta.5",
39
+ "@rspack/core": "2.0.0-beta.6",
40
40
  "@swc/helpers": "^0.5.19"
41
41
  },
42
42
  "peerDependencies": {
@@ -50,17 +50,16 @@
50
50
  "devDependencies": {
51
51
  "@jridgewell/remapping": "^2.3.5",
52
52
  "@jridgewell/trace-mapping": "^0.3.31",
53
- "@rslib/core": "0.19.6",
54
- "@types/connect": "3.4.38",
53
+ "@rslib/core": "0.20.0-canary-202603101",
55
54
  "@types/cors": "^2.8.19",
56
- "@types/node": "^24.11.0",
55
+ "@types/node": "^24.12.0",
57
56
  "@types/on-finished": "2.3.5",
58
57
  "@types/range-parser": "^1.2.7",
59
58
  "@types/ws": "^8.18.1",
60
59
  "browserslist-load-config": "1.0.1",
61
60
  "cac": "^7.0.0",
62
61
  "chokidar": "^5.0.0",
63
- "connect": "3.7.0",
62
+ "connect-next": "4.0.0",
64
63
  "cors": "^2.8.6",
65
64
  "css-loader": "7.1.4",
66
65
  "deepmerge": "^4.3.1",
@@ -69,7 +68,7 @@
69
68
  "http-proxy-middleware": "^3.0.5",
70
69
  "jiti": "^2.6.1",
71
70
  "launch-editor-middleware": "^2.13.1",
72
- "memfs": "^4.56.10",
71
+ "memfs": "^4.56.11",
73
72
  "mrmime": "^2.0.1",
74
73
  "on-finished": "2.4.1",
75
74
  "open": "^11.0.0",
@@ -79,7 +78,7 @@
79
78
  "prebundle": "1.6.2",
80
79
  "range-parser": "^1.2.1",
81
80
  "reduce-configs": "^1.1.1",
82
- "rslog": "^2.0.0",
81
+ "rslog": "^2.0.1",
83
82
  "rspack-chain": "^2.0.0-beta.0",
84
83
  "rspack-manifest-plugin": "5.2.1",
85
84
  "sirv": "^3.0.2",
@@ -1,90 +0,0 @@
1
- /// <reference types="node" />
2
- import * as http from 'http';
3
-
4
- /**
5
- * Create a new connect server.
6
- */
7
- declare function createServer(): createServer.Server;
8
-
9
- declare namespace createServer {
10
- export type ServerHandle = HandleFunction | http.Server;
11
-
12
- export class IncomingMessage extends http.IncomingMessage {
13
- originalUrl?: http.IncomingMessage["url"] | undefined;
14
- }
15
-
16
- type NextFunction = (err?: any) => void;
17
-
18
- export type SimpleHandleFunction = (req: IncomingMessage, res: http.ServerResponse) => void;
19
- export type NextHandleFunction = (req: IncomingMessage, res: http.ServerResponse, next: NextFunction) => void;
20
- export type ErrorHandleFunction = (
21
- err: any,
22
- req: IncomingMessage,
23
- res: http.ServerResponse,
24
- next: NextFunction,
25
- ) => void;
26
- export type HandleFunction = SimpleHandleFunction | NextHandleFunction | ErrorHandleFunction;
27
-
28
- export interface ServerStackItem {
29
- route: string;
30
- handle: ServerHandle;
31
- }
32
-
33
- export interface Server extends NodeJS.EventEmitter {
34
- (req: http.IncomingMessage, res: http.ServerResponse, next?: Function): void;
35
-
36
- route: string;
37
- stack: ServerStackItem[];
38
-
39
- /**
40
- * Utilize the given middleware `handle` to the given `route`,
41
- * defaulting to _/_. This "route" is the mount-point for the
42
- * middleware, when given a value other than _/_ the middleware
43
- * is only effective when that segment is present in the request's
44
- * pathname.
45
- *
46
- * For example if we were to mount a function at _/admin_, it would
47
- * be invoked on _/admin_, and _/admin/settings_, however it would
48
- * not be invoked for _/_, or _/posts_.
49
- */
50
- use(fn: NextHandleFunction): Server;
51
- use(fn: HandleFunction): Server;
52
- use(route: string, fn: NextHandleFunction): Server;
53
- use(route: string, fn: HandleFunction): Server;
54
-
55
- /**
56
- * Handle server requests, punting them down
57
- * the middleware stack.
58
- */
59
- handle(req: http.IncomingMessage, res: http.ServerResponse, next: Function): void;
60
-
61
- /**
62
- * Listen for connections.
63
- *
64
- * This method takes the same arguments
65
- * as node's `http.Server#listen()`.
66
- *
67
- * HTTP and HTTPS:
68
- *
69
- * If you run your application both as HTTP
70
- * and HTTPS you may wrap them individually,
71
- * since your Connect "server" is really just
72
- * a JavaScript `Function`.
73
- *
74
- * var connect = require('connect')
75
- * , http = require('http')
76
- * , https = require('https');
77
- *
78
- * var app = connect();
79
- *
80
- * http.createServer(app).listen(80);
81
- * https.createServer(options, app).listen(443);
82
- */
83
- listen(port: number, hostname?: string, backlog?: number, callback?: Function): http.Server;
84
- listen(port: number, hostname?: string, callback?: Function): http.Server;
85
- listen(path: string, callback?: Function): http.Server;
86
- listen(handle: any, listeningListener?: Function): http.Server;
87
- }
88
- }
89
-
90
- export { createServer as default };
@@ -1 +0,0 @@
1
- {"name":"connect","author":"TJ Holowaychuk <tj@vision-media.ca> (http://tjholowaychuk.com)","version":"3.7.0","license":"MIT","types":"index.d.ts","type":"commonjs"}
@@ -1,437 +0,0 @@
1
- /// <reference types="node" />
2
- import { EventEmitter } from 'events';
3
- import { ClientRequestArgs, IncomingMessage, ClientRequest, OutgoingHttpHeaders, Agent, Server } from 'http';
4
- import { Server as Server$1 } from 'https';
5
- import { createConnection } from 'net';
6
- import { Duplex, DuplexOptions } from 'stream';
7
- import { SecureContextOptions } from 'tls';
8
- import { URL } from 'url';
9
- import { ZlibOptions } from 'zlib';
10
-
11
- // can not get all overload of BufferConstructor['from'], need to copy all it's first arguments here
12
- // https://github.com/microsoft/TypeScript/issues/32164
13
- type BufferLike =
14
- | string
15
- | Buffer
16
- | DataView
17
- | number
18
- | ArrayBufferView
19
- | Uint8Array
20
- | ArrayBuffer
21
- | SharedArrayBuffer
22
- | Blob
23
- | readonly any[]
24
- | readonly number[]
25
- | { valueOf(): ArrayBuffer }
26
- | { valueOf(): SharedArrayBuffer }
27
- | { valueOf(): Uint8Array }
28
- | { valueOf(): readonly number[] }
29
- | { valueOf(): string }
30
- | { [Symbol.toPrimitive](hint: string): string };
31
-
32
- declare const WebSocketAlias: typeof WebSocket;
33
- interface WebSocketAlias extends WebSocket {}
34
- // WebSocket socket.
35
- declare class WebSocket extends EventEmitter {
36
- /** The connection is not yet open. */
37
- static readonly CONNECTING: 0;
38
- /** The connection is open and ready to communicate. */
39
- static readonly OPEN: 1;
40
- /** The connection is in the process of closing. */
41
- static readonly CLOSING: 2;
42
- /** The connection is closed. */
43
- static readonly CLOSED: 3;
44
-
45
- binaryType: "nodebuffer" | "arraybuffer" | "fragments";
46
- readonly bufferedAmount: number;
47
- readonly extensions: string;
48
- /** Indicates whether the websocket is paused */
49
- readonly isPaused: boolean;
50
- readonly protocol: string;
51
- /** The current state of the connection */
52
- readonly readyState:
53
- | typeof WebSocket.CONNECTING
54
- | typeof WebSocket.OPEN
55
- | typeof WebSocket.CLOSING
56
- | typeof WebSocket.CLOSED;
57
- readonly url: string;
58
-
59
- /** The connection is not yet open. */
60
- readonly CONNECTING: 0;
61
- /** The connection is open and ready to communicate. */
62
- readonly OPEN: 1;
63
- /** The connection is in the process of closing. */
64
- readonly CLOSING: 2;
65
- /** The connection is closed. */
66
- readonly CLOSED: 3;
67
-
68
- onopen: ((event: WebSocket.Event) => void) | null;
69
- onerror: ((event: WebSocket.ErrorEvent) => void) | null;
70
- onclose: ((event: WebSocket.CloseEvent) => void) | null;
71
- onmessage: ((event: WebSocket.MessageEvent) => void) | null;
72
-
73
- constructor(address: null);
74
- constructor(address: string | URL, options?: WebSocket.ClientOptions | ClientRequestArgs);
75
- constructor(
76
- address: string | URL,
77
- protocols?: string | string[],
78
- options?: WebSocket.ClientOptions | ClientRequestArgs,
79
- );
80
-
81
- close(code?: number, data?: string | Buffer): void;
82
- ping(data?: any, mask?: boolean, cb?: (err: Error) => void): void;
83
- pong(data?: any, mask?: boolean, cb?: (err: Error) => void): void;
84
- // https://github.com/websockets/ws/issues/2076#issuecomment-1250354722
85
- send(data: BufferLike, cb?: (err?: Error) => void): void;
86
- send(
87
- data: BufferLike,
88
- options: {
89
- mask?: boolean | undefined;
90
- binary?: boolean | undefined;
91
- compress?: boolean | undefined;
92
- fin?: boolean | undefined;
93
- },
94
- cb?: (err?: Error) => void,
95
- ): void;
96
- terminate(): void;
97
-
98
- /**
99
- * Pause the websocket causing it to stop emitting events. Some events can still be
100
- * emitted after this is called, until all buffered data is consumed. This method
101
- * is a noop if the ready state is `CONNECTING` or `CLOSED`.
102
- */
103
- pause(): void;
104
- /**
105
- * Make a paused socket resume emitting events. This method is a noop if the ready
106
- * state is `CONNECTING` or `CLOSED`.
107
- */
108
- resume(): void;
109
-
110
- // HTML5 WebSocket events
111
- addEventListener<K extends keyof WebSocket.WebSocketEventMap>(
112
- type: K,
113
- listener:
114
- | ((event: WebSocket.WebSocketEventMap[K]) => void)
115
- | { handleEvent(event: WebSocket.WebSocketEventMap[K]): void },
116
- options?: WebSocket.EventListenerOptions,
117
- ): void;
118
- removeEventListener<K extends keyof WebSocket.WebSocketEventMap>(
119
- type: K,
120
- listener:
121
- | ((event: WebSocket.WebSocketEventMap[K]) => void)
122
- | { handleEvent(event: WebSocket.WebSocketEventMap[K]): void },
123
- ): void;
124
-
125
- // Events
126
- on(event: "close", listener: (this: WebSocket, code: number, reason: Buffer) => void): this;
127
- on(event: "error", listener: (this: WebSocket, error: Error) => void): this;
128
- on(event: "upgrade", listener: (this: WebSocket, request: IncomingMessage) => void): this;
129
- on(event: "message", listener: (this: WebSocket, data: WebSocket.RawData, isBinary: boolean) => void): this;
130
- on(event: "open", listener: (this: WebSocket) => void): this;
131
- on(event: "ping" | "pong", listener: (this: WebSocket, data: Buffer) => void): this;
132
- on(event: "redirect", listener: (this: WebSocket, url: string, request: ClientRequest) => void): this;
133
- on(
134
- event: "unexpected-response",
135
- listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void,
136
- ): this;
137
- on(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;
138
-
139
- once(event: "close", listener: (this: WebSocket, code: number, reason: Buffer) => void): this;
140
- once(event: "error", listener: (this: WebSocket, error: Error) => void): this;
141
- once(event: "upgrade", listener: (this: WebSocket, request: IncomingMessage) => void): this;
142
- once(event: "message", listener: (this: WebSocket, data: WebSocket.RawData, isBinary: boolean) => void): this;
143
- once(event: "open", listener: (this: WebSocket) => void): this;
144
- once(event: "ping" | "pong", listener: (this: WebSocket, data: Buffer) => void): this;
145
- once(event: "redirect", listener: (this: WebSocket, url: string, request: ClientRequest) => void): this;
146
- once(
147
- event: "unexpected-response",
148
- listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void,
149
- ): this;
150
- once(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;
151
-
152
- off(event: "close", listener: (this: WebSocket, code: number, reason: Buffer) => void): this;
153
- off(event: "error", listener: (this: WebSocket, error: Error) => void): this;
154
- off(event: "upgrade", listener: (this: WebSocket, request: IncomingMessage) => void): this;
155
- off(event: "message", listener: (this: WebSocket, data: WebSocket.RawData, isBinary: boolean) => void): this;
156
- off(event: "open", listener: (this: WebSocket) => void): this;
157
- off(event: "ping" | "pong", listener: (this: WebSocket, data: Buffer) => void): this;
158
- off(event: "redirect", listener: (this: WebSocket, url: string, request: ClientRequest) => void): this;
159
- off(
160
- event: "unexpected-response",
161
- listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void,
162
- ): this;
163
- off(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;
164
-
165
- addListener(event: "close", listener: (code: number, reason: Buffer) => void): this;
166
- addListener(event: "error", listener: (error: Error) => void): this;
167
- addListener(event: "upgrade", listener: (request: IncomingMessage) => void): this;
168
- addListener(event: "message", listener: (data: WebSocket.RawData, isBinary: boolean) => void): this;
169
- addListener(event: "open", listener: () => void): this;
170
- addListener(event: "ping" | "pong", listener: (data: Buffer) => void): this;
171
- addListener(event: "redirect", listener: (url: string, request: ClientRequest) => void): this;
172
- addListener(
173
- event: "unexpected-response",
174
- listener: (request: ClientRequest, response: IncomingMessage) => void,
175
- ): this;
176
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
177
-
178
- removeListener(event: "close", listener: (code: number, reason: Buffer) => void): this;
179
- removeListener(event: "error", listener: (error: Error) => void): this;
180
- removeListener(event: "upgrade", listener: (request: IncomingMessage) => void): this;
181
- removeListener(event: "message", listener: (data: WebSocket.RawData, isBinary: boolean) => void): this;
182
- removeListener(event: "open", listener: () => void): this;
183
- removeListener(event: "ping" | "pong", listener: (data: Buffer) => void): this;
184
- removeListener(event: "redirect", listener: (url: string, request: ClientRequest) => void): this;
185
- removeListener(
186
- event: "unexpected-response",
187
- listener: (request: ClientRequest, response: IncomingMessage) => void,
188
- ): this;
189
- removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
190
- }
191
- // eslint-disable-line @typescript-eslint/no-empty-interface
192
-
193
- declare namespace WebSocket {
194
- /**
195
- * Data represents the raw message payload received over the WebSocket.
196
- */
197
- type RawData = Buffer | ArrayBuffer | Buffer[];
198
-
199
- /**
200
- * Data represents the message payload received over the WebSocket.
201
- */
202
- type Data = string | Buffer | ArrayBuffer | Buffer[];
203
-
204
- /**
205
- * CertMeta represents the accepted types for certificate & key data.
206
- */
207
- type CertMeta = string | string[] | Buffer | Buffer[];
208
-
209
- /**
210
- * VerifyClientCallbackSync is a synchronous callback used to inspect the
211
- * incoming message. The return value (boolean) of the function determines
212
- * whether or not to accept the handshake.
213
- */
214
- type VerifyClientCallbackSync<Request extends IncomingMessage = IncomingMessage> = (info: {
215
- origin: string;
216
- secure: boolean;
217
- req: Request;
218
- }) => boolean;
219
-
220
- /**
221
- * VerifyClientCallbackAsync is an asynchronous callback used to inspect the
222
- * incoming message. The return value (boolean) of the function determines
223
- * whether or not to accept the handshake.
224
- */
225
- type VerifyClientCallbackAsync<Request extends IncomingMessage = IncomingMessage> = (
226
- info: { origin: string; secure: boolean; req: Request },
227
- callback: (res: boolean, code?: number, message?: string, headers?: OutgoingHttpHeaders) => void,
228
- ) => void;
229
-
230
- /**
231
- * FinishRequestCallback is a callback for last minute customization of the
232
- * headers. If finishRequest is set, then it has the responsibility to call
233
- * request.end() once it is done setting request headers.
234
- */
235
- type FinishRequestCallback = (request: ClientRequest, websocket: WebSocket) => void;
236
-
237
- interface ClientOptions extends SecureContextOptions {
238
- protocol?: string | undefined;
239
- followRedirects?: boolean | undefined;
240
- generateMask?(mask: Buffer): void;
241
- handshakeTimeout?: number | undefined;
242
- maxRedirects?: number | undefined;
243
- perMessageDeflate?: boolean | PerMessageDeflateOptions | undefined;
244
- localAddress?: string | undefined;
245
- protocolVersion?: number | undefined;
246
- headers?: { [key: string]: string } | undefined;
247
- origin?: string | undefined;
248
- agent?: Agent | undefined;
249
- host?: string | undefined;
250
- family?: number | undefined;
251
- checkServerIdentity?(servername: string, cert: CertMeta): boolean;
252
- rejectUnauthorized?: boolean | undefined;
253
- allowSynchronousEvents?: boolean | undefined;
254
- autoPong?: boolean | undefined;
255
- maxPayload?: number | undefined;
256
- skipUTF8Validation?: boolean | undefined;
257
- createConnection?: typeof createConnection | undefined;
258
- finishRequest?: FinishRequestCallback | undefined;
259
- }
260
-
261
- interface PerMessageDeflateOptions {
262
- serverNoContextTakeover?: boolean | undefined;
263
- clientNoContextTakeover?: boolean | undefined;
264
- serverMaxWindowBits?: number | undefined;
265
- clientMaxWindowBits?: number | undefined;
266
- zlibDeflateOptions?: {
267
- flush?: number | undefined;
268
- finishFlush?: number | undefined;
269
- chunkSize?: number | undefined;
270
- windowBits?: number | undefined;
271
- level?: number | undefined;
272
- memLevel?: number | undefined;
273
- strategy?: number | undefined;
274
- dictionary?: Buffer | Buffer[] | DataView | undefined;
275
- info?: boolean | undefined;
276
- } | undefined;
277
- zlibInflateOptions?: ZlibOptions | undefined;
278
- threshold?: number | undefined;
279
- concurrencyLimit?: number | undefined;
280
- }
281
-
282
- interface Event {
283
- type: string;
284
- target: WebSocket;
285
- }
286
-
287
- interface ErrorEvent {
288
- error: any;
289
- message: string;
290
- type: string;
291
- target: WebSocket;
292
- }
293
-
294
- interface CloseEvent {
295
- wasClean: boolean;
296
- code: number;
297
- reason: string;
298
- type: string;
299
- target: WebSocket;
300
- }
301
-
302
- interface MessageEvent {
303
- data: Data;
304
- type: string;
305
- target: WebSocket;
306
- }
307
-
308
- interface WebSocketEventMap {
309
- open: Event;
310
- error: ErrorEvent;
311
- close: CloseEvent;
312
- message: MessageEvent;
313
- }
314
-
315
- interface EventListenerOptions {
316
- once?: boolean | undefined;
317
- }
318
-
319
- interface ServerOptions<
320
- U extends typeof WebSocket.WebSocket = typeof WebSocket.WebSocket,
321
- V extends typeof IncomingMessage = typeof IncomingMessage,
322
- > {
323
- host?: string | undefined;
324
- port?: number | undefined;
325
- backlog?: number | undefined;
326
- server?: Server<V> | Server$1<V> | undefined;
327
- verifyClient?:
328
- | VerifyClientCallbackAsync<InstanceType<V>>
329
- | VerifyClientCallbackSync<InstanceType<V>>
330
- | undefined;
331
- handleProtocols?: (protocols: Set<string>, request: InstanceType<V>) => string | false;
332
- path?: string | undefined;
333
- noServer?: boolean | undefined;
334
- allowSynchronousEvents?: boolean | undefined;
335
- autoPong?: boolean | undefined;
336
- clientTracking?: boolean | undefined;
337
- perMessageDeflate?: boolean | PerMessageDeflateOptions | undefined;
338
- maxPayload?: number | undefined;
339
- skipUTF8Validation?: boolean | undefined;
340
- WebSocket?: U | undefined;
341
- }
342
-
343
- interface AddressInfo {
344
- address: string;
345
- family: string;
346
- port: number;
347
- }
348
-
349
- // WebSocket Server
350
- class Server<
351
- T extends typeof WebSocket.WebSocket = typeof WebSocket.WebSocket,
352
- U extends typeof IncomingMessage = typeof IncomingMessage,
353
- > extends EventEmitter {
354
- options: ServerOptions<T, U>;
355
- path: string;
356
- clients: Set<InstanceType<T>>;
357
-
358
- constructor(options?: ServerOptions<T, U>, callback?: () => void);
359
-
360
- address(): AddressInfo | string | null;
361
- close(cb?: (err?: Error) => void): void;
362
- handleUpgrade(
363
- request: InstanceType<U>,
364
- socket: Duplex,
365
- upgradeHead: Buffer,
366
- callback: (client: InstanceType<T>, request: InstanceType<U>) => void,
367
- ): void;
368
- shouldHandle(request: InstanceType<U>): boolean | Promise<boolean>;
369
-
370
- // Events
371
- on(
372
- event: "connection",
373
- cb: (this: Server<T>, websocket: InstanceType<T>, request: InstanceType<U>) => void,
374
- ): this;
375
- on(event: "error", cb: (this: Server<T>, error: Error) => void): this;
376
- on(event: "headers", cb: (this: Server<T>, headers: string[], request: InstanceType<U>) => void): this;
377
- on(event: "close" | "listening", cb: (this: Server<T>) => void): this;
378
- on(
379
- event: "wsClientError",
380
- cb: (this: Server<T>, error: Error, socket: Duplex, request: InstanceType<U>) => void,
381
- ): this;
382
- on(event: string | symbol, listener: (this: Server<T>, ...args: any[]) => void): this;
383
-
384
- once(
385
- event: "connection",
386
- cb: (this: Server<T>, websocket: InstanceType<T>, request: InstanceType<U>) => void,
387
- ): this;
388
- once(event: "error", cb: (this: Server<T>, error: Error) => void): this;
389
- once(event: "headers", cb: (this: Server<T>, headers: string[], request: InstanceType<U>) => void): this;
390
- once(event: "close" | "listening", cb: (this: Server<T>) => void): this;
391
- once(
392
- event: "wsClientError",
393
- cb: (this: Server<T>, error: Error, socket: Duplex, request: InstanceType<U>) => void,
394
- ): this;
395
- once(event: string | symbol, listener: (this: Server<T>, ...args: any[]) => void): this;
396
-
397
- off(
398
- event: "connection",
399
- cb: (this: Server<T>, socket: InstanceType<T>, request: InstanceType<U>) => void,
400
- ): this;
401
- off(event: "error", cb: (this: Server<T>, error: Error) => void): this;
402
- off(event: "headers", cb: (this: Server<T>, headers: string[], request: InstanceType<U>) => void): this;
403
- off(event: "close" | "listening", cb: (this: Server<T>) => void): this;
404
- off(
405
- event: "wsClientError",
406
- cb: (this: Server<T>, error: Error, socket: Duplex, request: InstanceType<U>) => void,
407
- ): this;
408
- off(event: string | symbol, listener: (this: Server<T>, ...args: any[]) => void): this;
409
-
410
- addListener(event: "connection", cb: (websocket: InstanceType<T>, request: InstanceType<U>) => void): this;
411
- addListener(event: "error", cb: (error: Error) => void): this;
412
- addListener(event: "headers", cb: (headers: string[], request: InstanceType<U>) => void): this;
413
- addListener(event: "close" | "listening", cb: () => void): this;
414
- addListener(event: "wsClientError", cb: (error: Error, socket: Duplex, request: InstanceType<U>) => void): this;
415
- addListener(event: string | symbol, listener: (...args: any[]) => void): this;
416
-
417
- removeListener(event: "connection", cb: (websocket: InstanceType<T>, request: InstanceType<U>) => void): this;
418
- removeListener(event: "error", cb: (error: Error) => void): this;
419
- removeListener(event: "headers", cb: (headers: string[], request: InstanceType<U>) => void): this;
420
- removeListener(event: "close" | "listening", cb: () => void): this;
421
- removeListener(
422
- event: "wsClientError",
423
- cb: (error: Error, socket: Duplex, request: InstanceType<U>) => void,
424
- ): this;
425
- removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
426
- }
427
-
428
- const WebSocketServer: typeof Server;
429
- interface WebSocketServer extends Server {} // eslint-disable-line @typescript-eslint/no-empty-interface
430
- const WebSocket: typeof WebSocketAlias;
431
- interface WebSocket extends WebSocketAlias {} // eslint-disable-line @typescript-eslint/no-empty-interface
432
-
433
- // WebSocket stream
434
- function createWebSocketStream(websocket: WebSocket, options?: DuplexOptions): Duplex;
435
- }
436
-
437
- export { WebSocket as default };