crossws 0.4.2 → 0.4.4
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/_chunks/_request.mjs +83 -0
- package/dist/_chunks/_types.d.mts +24 -0
- package/dist/_chunks/adapter.d.mts +174 -0
- package/dist/_chunks/adapter.mjs +93 -0
- package/dist/_chunks/bun.d.mts +38 -0
- package/dist/_chunks/cloudflare.d.mts +45 -0
- package/dist/_chunks/deno.d.mts +17 -0
- package/dist/_chunks/error.mjs +10 -0
- package/dist/_chunks/libs/ws.mjs +3531 -0
- package/dist/_chunks/node.d.mts +299 -0
- package/dist/_chunks/peer.mjs +244 -0
- package/dist/_chunks/rolldown-runtime.mjs +32 -0
- package/dist/_chunks/sse.d.mts +12 -0
- package/dist/_chunks/web.d.mts +298 -0
- package/dist/adapters/bun.d.mts +2 -41
- package/dist/adapters/bun.mjs +83 -93
- package/dist/adapters/cloudflare.d.mts +2 -46
- package/dist/adapters/cloudflare.mjs +173 -219
- package/dist/adapters/deno.d.mts +2 -19
- package/dist/adapters/deno.mjs +65 -74
- package/dist/adapters/node.d.mts +2 -299
- package/dist/adapters/node.mjs +119 -156
- package/dist/adapters/sse.d.mts +2 -13
- package/dist/adapters/sse.mjs +98 -118
- package/dist/adapters/uws.d.mts +44 -44
- package/dist/adapters/uws.mjs +152 -175
- package/dist/index.d.mts +2 -170
- package/dist/index.mjs +3 -1
- package/dist/server/bun.d.mts +8 -21
- package/dist/server/bun.mjs +24 -31
- package/dist/server/cloudflare.d.mts +8 -21
- package/dist/server/cloudflare.mjs +21 -30
- package/dist/server/default.d.mts +8 -21
- package/dist/server/default.mjs +22 -26
- package/dist/server/deno.d.mts +8 -21
- package/dist/server/deno.mjs +21 -24
- package/dist/server/node.d.mts +8 -21
- package/dist/server/node.mjs +32 -43
- package/dist/websocket/native.d.mts +3 -2
- package/dist/websocket/native.mjs +4 -1
- package/dist/websocket/node.d.mts +3 -2
- package/dist/websocket/node.mjs +7 -13
- package/dist/websocket/sse.d.mts +34 -34
- package/dist/websocket/sse.mjs +112 -121
- package/package.json +14 -13
- package/dist/shared/crossws.B31KJMcF.mjs +0 -83
- package/dist/shared/crossws.BQXMA5bH.d.mts +0 -297
- package/dist/shared/crossws.By9qWDAI.mjs +0 -8
- package/dist/shared/crossws.C5pESzqN.mjs +0 -4993
- package/dist/shared/crossws.CP-89VBK.d.mts +0 -23
- package/dist/shared/crossws.CPlNx7g8.mjs +0 -105
- package/dist/shared/crossws.WpyOHUXc.mjs +0 -330
package/dist/adapters/node.d.mts
CHANGED
|
@@ -1,299 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { DuplexOptions, Duplex } from 'node:stream';
|
|
4
|
-
import { EventEmitter } from 'events';
|
|
5
|
-
import { Server as Server$2 } from 'node:https';
|
|
6
|
-
import { SecureContextOptions } from 'node:tls';
|
|
7
|
-
import { URL } from 'node:url';
|
|
8
|
-
import { ZlibOptions } from 'node:zlib';
|
|
9
|
-
import '../shared/crossws.BQXMA5bH.mjs';
|
|
10
|
-
|
|
11
|
-
type BufferLike = string | Buffer | DataView | number | ArrayBufferView | Uint8Array | ArrayBuffer | SharedArrayBuffer | readonly any[] | readonly number[] | {
|
|
12
|
-
valueOf(): ArrayBuffer;
|
|
13
|
-
} | {
|
|
14
|
-
valueOf(): SharedArrayBuffer;
|
|
15
|
-
} | {
|
|
16
|
-
valueOf(): Uint8Array;
|
|
17
|
-
} | {
|
|
18
|
-
valueOf(): readonly number[];
|
|
19
|
-
} | {
|
|
20
|
-
valueOf(): string;
|
|
21
|
-
} | {
|
|
22
|
-
[Symbol.toPrimitive](hint: string): string;
|
|
23
|
-
};
|
|
24
|
-
declare class WebSocket extends EventEmitter {
|
|
25
|
-
static readonly createWebSocketStream: typeof createWebSocketStream;
|
|
26
|
-
static readonly WebSocketServer: WebSocketServer;
|
|
27
|
-
static readonly Server: typeof Server;
|
|
28
|
-
static readonly WebSocket: typeof WebSocket;
|
|
29
|
-
/** The connection is not yet open. */
|
|
30
|
-
static readonly CONNECTING: 0;
|
|
31
|
-
/** The connection is open and ready to communicate. */
|
|
32
|
-
static readonly OPEN: 1;
|
|
33
|
-
/** The connection is in the process of closing. */
|
|
34
|
-
static readonly CLOSING: 2;
|
|
35
|
-
/** The connection is closed. */
|
|
36
|
-
static readonly CLOSED: 3;
|
|
37
|
-
binaryType: "nodebuffer" | "arraybuffer" | "fragments";
|
|
38
|
-
readonly bufferedAmount: number;
|
|
39
|
-
readonly extensions: string;
|
|
40
|
-
/** Indicates whether the websocket is paused */
|
|
41
|
-
readonly isPaused: boolean;
|
|
42
|
-
readonly protocol: string;
|
|
43
|
-
/** The current state of the connection */
|
|
44
|
-
readonly readyState: typeof WebSocket.CONNECTING | typeof WebSocket.OPEN | typeof WebSocket.CLOSING | typeof WebSocket.CLOSED;
|
|
45
|
-
readonly url: string;
|
|
46
|
-
/** The connection is not yet open. */
|
|
47
|
-
readonly CONNECTING: 0;
|
|
48
|
-
/** The connection is open and ready to communicate. */
|
|
49
|
-
readonly OPEN: 1;
|
|
50
|
-
/** The connection is in the process of closing. */
|
|
51
|
-
readonly CLOSING: 2;
|
|
52
|
-
/** The connection is closed. */
|
|
53
|
-
readonly CLOSED: 3;
|
|
54
|
-
onopen: ((event: Event) => void) | null;
|
|
55
|
-
onerror: ((event: ErrorEvent) => void) | null;
|
|
56
|
-
onclose: ((event: CloseEvent) => void) | null;
|
|
57
|
-
onmessage: ((event: MessageEvent) => void) | null;
|
|
58
|
-
constructor(address: null);
|
|
59
|
-
constructor(address: string | URL, options?: ClientOptions | ClientRequestArgs);
|
|
60
|
-
constructor(address: string | URL, protocols?: string | string[], options?: ClientOptions | ClientRequestArgs);
|
|
61
|
-
close(code?: number, data?: string | Buffer): void;
|
|
62
|
-
ping(data?: any, mask?: boolean, cb?: (err: Error) => void): void;
|
|
63
|
-
pong(data?: any, mask?: boolean, cb?: (err: Error) => void): void;
|
|
64
|
-
send(data: BufferLike, cb?: (err?: Error) => void): void;
|
|
65
|
-
send(data: BufferLike, options: {
|
|
66
|
-
mask?: boolean | undefined;
|
|
67
|
-
binary?: boolean | undefined;
|
|
68
|
-
compress?: boolean | undefined;
|
|
69
|
-
fin?: boolean | undefined;
|
|
70
|
-
}, cb?: (err?: Error) => void): void;
|
|
71
|
-
terminate(): void;
|
|
72
|
-
/**
|
|
73
|
-
* Pause the websocket causing it to stop emitting events. Some events can still be
|
|
74
|
-
* emitted after this is called, until all buffered data is consumed. This method
|
|
75
|
-
* is a noop if the ready state is `CONNECTING` or `CLOSED`.
|
|
76
|
-
*/
|
|
77
|
-
pause(): void;
|
|
78
|
-
/**
|
|
79
|
-
* Make a paused socket resume emitting events. This method is a noop if the ready
|
|
80
|
-
* state is `CONNECTING` or `CLOSED`.
|
|
81
|
-
*/
|
|
82
|
-
resume(): void;
|
|
83
|
-
addEventListener(method: "message", cb: (event: MessageEvent) => void, options?: EventListenerOptions): void;
|
|
84
|
-
addEventListener(method: "close", cb: (event: CloseEvent) => void, options?: EventListenerOptions): void;
|
|
85
|
-
addEventListener(method: "error", cb: (event: ErrorEvent) => void, options?: EventListenerOptions): void;
|
|
86
|
-
addEventListener(method: "open", cb: (event: Event) => void, options?: EventListenerOptions): void;
|
|
87
|
-
removeEventListener(method: "message", cb: (event: MessageEvent) => void): void;
|
|
88
|
-
removeEventListener(method: "close", cb: (event: CloseEvent) => void): void;
|
|
89
|
-
removeEventListener(method: "error", cb: (event: ErrorEvent) => void): void;
|
|
90
|
-
removeEventListener(method: "open", cb: (event: Event) => void): void;
|
|
91
|
-
on(event: "close", listener: (this: WebSocket, code: number, reason: Buffer) => void): this;
|
|
92
|
-
on(event: "error", listener: (this: WebSocket, err: Error) => void): this;
|
|
93
|
-
on(event: "upgrade", listener: (this: WebSocket, request: IncomingMessage) => void): this;
|
|
94
|
-
on(event: "message", listener: (this: WebSocket, data: RawData, isBinary: boolean) => void): this;
|
|
95
|
-
on(event: "open", listener: (this: WebSocket) => void): this;
|
|
96
|
-
on(event: "ping" | "pong", listener: (this: WebSocket, data: Buffer) => void): this;
|
|
97
|
-
on(event: "unexpected-response", listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void): this;
|
|
98
|
-
on(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;
|
|
99
|
-
once(event: "close", listener: (this: WebSocket, code: number, reason: Buffer) => void): this;
|
|
100
|
-
once(event: "error", listener: (this: WebSocket, err: Error) => void): this;
|
|
101
|
-
once(event: "upgrade", listener: (this: WebSocket, request: IncomingMessage) => void): this;
|
|
102
|
-
once(event: "message", listener: (this: WebSocket, data: RawData, isBinary: boolean) => void): this;
|
|
103
|
-
once(event: "open", listener: (this: WebSocket) => void): this;
|
|
104
|
-
once(event: "ping" | "pong", listener: (this: WebSocket, data: Buffer) => void): this;
|
|
105
|
-
once(event: "unexpected-response", listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void): this;
|
|
106
|
-
once(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;
|
|
107
|
-
off(event: "close", listener: (this: WebSocket, code: number, reason: Buffer) => void): this;
|
|
108
|
-
off(event: "error", listener: (this: WebSocket, err: Error) => void): this;
|
|
109
|
-
off(event: "upgrade", listener: (this: WebSocket, request: IncomingMessage) => void): this;
|
|
110
|
-
off(event: "message", listener: (this: WebSocket, data: RawData, isBinary: boolean) => void): this;
|
|
111
|
-
off(event: "open", listener: (this: WebSocket) => void): this;
|
|
112
|
-
off(event: "ping" | "pong", listener: (this: WebSocket, data: Buffer) => void): this;
|
|
113
|
-
off(event: "unexpected-response", listener: (this: WebSocket, request: ClientRequest, response: IncomingMessage) => void): this;
|
|
114
|
-
off(event: string | symbol, listener: (this: WebSocket, ...args: any[]) => void): this;
|
|
115
|
-
addListener(event: "close", listener: (code: number, reason: Buffer) => void): this;
|
|
116
|
-
addListener(event: "error", listener: (err: Error) => void): this;
|
|
117
|
-
addListener(event: "upgrade", listener: (request: IncomingMessage) => void): this;
|
|
118
|
-
addListener(event: "message", listener: (data: RawData, isBinary: boolean) => void): this;
|
|
119
|
-
addListener(event: "open", listener: () => void): this;
|
|
120
|
-
addListener(event: "ping" | "pong", listener: (data: Buffer) => void): this;
|
|
121
|
-
addListener(event: "unexpected-response", listener: (request: ClientRequest, response: IncomingMessage) => void): this;
|
|
122
|
-
addListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
|
123
|
-
removeListener(event: "close", listener: (code: number, reason: Buffer) => void): this;
|
|
124
|
-
removeListener(event: "error", listener: (err: Error) => void): this;
|
|
125
|
-
removeListener(event: "upgrade", listener: (request: IncomingMessage) => void): this;
|
|
126
|
-
removeListener(event: "message", listener: (data: RawData, isBinary: boolean) => void): this;
|
|
127
|
-
removeListener(event: "open", listener: () => void): this;
|
|
128
|
-
removeListener(event: "ping" | "pong", listener: (data: Buffer) => void): this;
|
|
129
|
-
removeListener(event: "unexpected-response", listener: (request: ClientRequest, response: IncomingMessage) => void): this;
|
|
130
|
-
removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Data represents the raw message payload received over the
|
|
134
|
-
*/
|
|
135
|
-
type RawData = Buffer | ArrayBuffer | Buffer[];
|
|
136
|
-
/**
|
|
137
|
-
* Data represents the message payload received over the
|
|
138
|
-
*/
|
|
139
|
-
type Data = string | Buffer | ArrayBuffer | Buffer[];
|
|
140
|
-
/**
|
|
141
|
-
* CertMeta represents the accepted types for certificate & key data.
|
|
142
|
-
*/
|
|
143
|
-
type CertMeta = string | string[] | Buffer | Buffer[];
|
|
144
|
-
/**
|
|
145
|
-
* VerifyClientCallbackSync is a synchronous callback used to inspect the
|
|
146
|
-
* incoming message. The return value (boolean) of the function determines
|
|
147
|
-
* whether or not to accept the handshake.
|
|
148
|
-
*/
|
|
149
|
-
type VerifyClientCallbackSync<Request extends IncomingMessage = IncomingMessage> = (info: {
|
|
150
|
-
origin: string;
|
|
151
|
-
secure: boolean;
|
|
152
|
-
req: Request;
|
|
153
|
-
}) => boolean;
|
|
154
|
-
/**
|
|
155
|
-
* VerifyClientCallbackAsync is an asynchronous callback used to inspect the
|
|
156
|
-
* incoming message. The return value (boolean) of the function determines
|
|
157
|
-
* whether or not to accept the handshake.
|
|
158
|
-
*/
|
|
159
|
-
type VerifyClientCallbackAsync<Request extends IncomingMessage = IncomingMessage> = (info: {
|
|
160
|
-
origin: string;
|
|
161
|
-
secure: boolean;
|
|
162
|
-
req: Request;
|
|
163
|
-
}, callback: (res: boolean, code?: number, message?: string, headers?: OutgoingHttpHeaders) => void) => void;
|
|
164
|
-
interface ClientOptions extends SecureContextOptions {
|
|
165
|
-
protocol?: string | undefined;
|
|
166
|
-
followRedirects?: boolean | undefined;
|
|
167
|
-
generateMask?(mask: Buffer): void;
|
|
168
|
-
handshakeTimeout?: number | undefined;
|
|
169
|
-
maxRedirects?: number | undefined;
|
|
170
|
-
perMessageDeflate?: boolean | PerMessageDeflateOptions | undefined;
|
|
171
|
-
localAddress?: string | undefined;
|
|
172
|
-
protocolVersion?: number | undefined;
|
|
173
|
-
headers?: {
|
|
174
|
-
[key: string]: string;
|
|
175
|
-
} | undefined;
|
|
176
|
-
origin?: string | undefined;
|
|
177
|
-
agent?: Agent | undefined;
|
|
178
|
-
host?: string | undefined;
|
|
179
|
-
family?: number | undefined;
|
|
180
|
-
checkServerIdentity?(servername: string, cert: CertMeta): boolean;
|
|
181
|
-
rejectUnauthorized?: boolean | undefined;
|
|
182
|
-
maxPayload?: number | undefined;
|
|
183
|
-
skipUTF8Validation?: boolean | undefined;
|
|
184
|
-
}
|
|
185
|
-
interface PerMessageDeflateOptions {
|
|
186
|
-
serverNoContextTakeover?: boolean | undefined;
|
|
187
|
-
clientNoContextTakeover?: boolean | undefined;
|
|
188
|
-
serverMaxWindowBits?: number | undefined;
|
|
189
|
-
clientMaxWindowBits?: number | undefined;
|
|
190
|
-
zlibDeflateOptions?: {
|
|
191
|
-
flush?: number | undefined;
|
|
192
|
-
finishFlush?: number | undefined;
|
|
193
|
-
chunkSize?: number | undefined;
|
|
194
|
-
windowBits?: number | undefined;
|
|
195
|
-
level?: number | undefined;
|
|
196
|
-
memLevel?: number | undefined;
|
|
197
|
-
strategy?: number | undefined;
|
|
198
|
-
dictionary?: Buffer | Buffer[] | DataView | undefined;
|
|
199
|
-
info?: boolean | undefined;
|
|
200
|
-
} | undefined;
|
|
201
|
-
zlibInflateOptions?: ZlibOptions | undefined;
|
|
202
|
-
threshold?: number | undefined;
|
|
203
|
-
concurrencyLimit?: number | undefined;
|
|
204
|
-
}
|
|
205
|
-
interface Event {
|
|
206
|
-
type: string;
|
|
207
|
-
target: WebSocket;
|
|
208
|
-
}
|
|
209
|
-
interface ErrorEvent {
|
|
210
|
-
error: any;
|
|
211
|
-
message: string;
|
|
212
|
-
type: string;
|
|
213
|
-
target: WebSocket;
|
|
214
|
-
}
|
|
215
|
-
interface CloseEvent {
|
|
216
|
-
wasClean: boolean;
|
|
217
|
-
code: number;
|
|
218
|
-
reason: string;
|
|
219
|
-
type: string;
|
|
220
|
-
target: WebSocket;
|
|
221
|
-
}
|
|
222
|
-
interface MessageEvent {
|
|
223
|
-
data: Data;
|
|
224
|
-
type: string;
|
|
225
|
-
target: WebSocket;
|
|
226
|
-
}
|
|
227
|
-
interface EventListenerOptions {
|
|
228
|
-
once?: boolean | undefined;
|
|
229
|
-
}
|
|
230
|
-
interface ServerOptions<U extends typeof WebSocket = typeof WebSocket, V extends typeof IncomingMessage = typeof IncomingMessage> {
|
|
231
|
-
host?: string | undefined;
|
|
232
|
-
port?: number | undefined;
|
|
233
|
-
backlog?: number | undefined;
|
|
234
|
-
server?: Server$1<V> | Server$2<V> | undefined;
|
|
235
|
-
verifyClient?: VerifyClientCallbackAsync<InstanceType<V>> | VerifyClientCallbackSync<InstanceType<V>> | undefined;
|
|
236
|
-
handleProtocols?: (protocols: Set<string>, request: InstanceType<V>) => string | false;
|
|
237
|
-
path?: string | undefined;
|
|
238
|
-
noServer?: boolean | undefined;
|
|
239
|
-
clientTracking?: boolean | undefined;
|
|
240
|
-
perMessageDeflate?: boolean | PerMessageDeflateOptions | undefined;
|
|
241
|
-
maxPayload?: number | undefined;
|
|
242
|
-
skipUTF8Validation?: boolean | undefined;
|
|
243
|
-
WebSocket?: U | undefined;
|
|
244
|
-
}
|
|
245
|
-
interface AddressInfo {
|
|
246
|
-
address: string;
|
|
247
|
-
family: string;
|
|
248
|
-
port: number;
|
|
249
|
-
}
|
|
250
|
-
declare class Server<T extends typeof WebSocket = typeof WebSocket, U extends typeof IncomingMessage = typeof IncomingMessage> extends EventEmitter {
|
|
251
|
-
options: ServerOptions<T, U>;
|
|
252
|
-
path: string;
|
|
253
|
-
clients: Set<InstanceType<T>>;
|
|
254
|
-
constructor(options?: ServerOptions<T, U>, callback?: () => void);
|
|
255
|
-
address(): AddressInfo | string;
|
|
256
|
-
close(cb?: (err?: Error) => void): void;
|
|
257
|
-
handleUpgrade(request: InstanceType<U>, socket: Duplex, upgradeHead: Buffer, callback: (client: InstanceType<T>, request: InstanceType<U>) => void): void;
|
|
258
|
-
shouldHandle(request: InstanceType<U>): boolean | Promise<boolean>;
|
|
259
|
-
on(event: "connection", cb: (this: Server<T>, socket: InstanceType<T>, request: InstanceType<U>) => void): this;
|
|
260
|
-
on(event: "error", cb: (this: Server<T>, error: Error) => void): this;
|
|
261
|
-
on(event: "headers", cb: (this: Server<T>, headers: string[], request: InstanceType<U>) => void): this;
|
|
262
|
-
on(event: "close" | "listening", cb: (this: Server<T>) => void): this;
|
|
263
|
-
on(event: string | symbol, listener: (this: Server<T>, ...args: any[]) => void): this;
|
|
264
|
-
once(event: "connection", cb: (this: Server<T>, socket: InstanceType<T>, request: InstanceType<U>) => void): this;
|
|
265
|
-
once(event: "error", cb: (this: Server<T>, error: Error) => void): this;
|
|
266
|
-
once(event: "headers", cb: (this: Server<T>, headers: string[], request: InstanceType<U>) => void): this;
|
|
267
|
-
once(event: "close" | "listening", cb: (this: Server<T>) => void): this;
|
|
268
|
-
once(event: string | symbol, listener: (this: Server<T>, ...args: any[]) => void): this;
|
|
269
|
-
off(event: "connection", cb: (this: Server<T>, socket: InstanceType<T>, request: InstanceType<U>) => void): this;
|
|
270
|
-
off(event: "error", cb: (this: Server<T>, error: Error) => void): this;
|
|
271
|
-
off(event: "headers", cb: (this: Server<T>, headers: string[], request: InstanceType<U>) => void): this;
|
|
272
|
-
off(event: "close" | "listening", cb: (this: Server<T>) => void): this;
|
|
273
|
-
off(event: string | symbol, listener: (this: Server<T>, ...args: any[]) => void): this;
|
|
274
|
-
addListener(event: "connection", cb: (client: InstanceType<T>, request: InstanceType<U>) => void): this;
|
|
275
|
-
addListener(event: "error", cb: (err: Error) => void): this;
|
|
276
|
-
addListener(event: "headers", cb: (headers: string[], request: InstanceType<U>) => void): this;
|
|
277
|
-
addListener(event: "close" | "listening", cb: () => void): this;
|
|
278
|
-
addListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
|
279
|
-
removeListener(event: "connection", cb: (client: InstanceType<T>, request: InstanceType<U>) => void): this;
|
|
280
|
-
removeListener(event: "error", cb: (err: Error) => void): this;
|
|
281
|
-
removeListener(event: "headers", cb: (headers: string[], request: InstanceType<U>) => void): this;
|
|
282
|
-
removeListener(event: "close" | "listening", cb: () => void): this;
|
|
283
|
-
removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
|
284
|
-
}
|
|
285
|
-
type WebSocketServer = Server;
|
|
286
|
-
declare function createWebSocketStream(websocket: WebSocket, options?: DuplexOptions): Duplex;
|
|
287
|
-
|
|
288
|
-
interface NodeAdapter extends AdapterInstance {
|
|
289
|
-
handleUpgrade(req: IncomingMessage, socket: Duplex, head: Buffer, webRequest?: Request): Promise<void>;
|
|
290
|
-
closeAll: (code?: number, data?: string | Buffer, force?: boolean) => void;
|
|
291
|
-
}
|
|
292
|
-
interface NodeOptions extends AdapterOptions {
|
|
293
|
-
wss?: WebSocketServer;
|
|
294
|
-
serverOptions?: ServerOptions;
|
|
295
|
-
}
|
|
296
|
-
declare const nodeAdapter: Adapter<NodeAdapter, NodeOptions>;
|
|
297
|
-
|
|
298
|
-
export { nodeAdapter as default };
|
|
299
|
-
export type { NodeAdapter, NodeOptions };
|
|
1
|
+
import { n as NodeOptions, r as nodeAdapter, t as NodeAdapter } from "../_chunks/node.mjs";
|
|
2
|
+
export { NodeAdapter, NodeOptions, nodeAdapter as default };
|
package/dist/adapters/node.mjs
CHANGED
|
@@ -1,162 +1,125 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import 'events';
|
|
8
|
-
import 'http';
|
|
9
|
-
import 'crypto';
|
|
10
|
-
import 'buffer';
|
|
11
|
-
import 'zlib';
|
|
12
|
-
import 'https';
|
|
13
|
-
import 'net';
|
|
14
|
-
import 'tls';
|
|
15
|
-
import 'url';
|
|
1
|
+
import "../_chunks/rolldown-runtime.mjs";
|
|
2
|
+
import { i as AdapterHookable, r as getPeers, t as adapterUtils } from "../_chunks/adapter.mjs";
|
|
3
|
+
import { n as import_websocket_server } from "../_chunks/libs/ws.mjs";
|
|
4
|
+
import { n as Message, r as toBufferLike, t as Peer } from "../_chunks/peer.mjs";
|
|
5
|
+
import { t as StubRequest } from "../_chunks/_request.mjs";
|
|
6
|
+
import { t as WSError } from "../_chunks/error.mjs";
|
|
16
7
|
|
|
8
|
+
//#region src/adapters/node.ts
|
|
17
9
|
const nodeAdapter = (options = {}) => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
10
|
+
if ("Deno" in globalThis || "Bun" in globalThis) throw new Error("[crossws] Using Node.js adapter in an incompatible environment.");
|
|
11
|
+
const hooks = new AdapterHookable(options);
|
|
12
|
+
const globalPeers = /* @__PURE__ */ new Map();
|
|
13
|
+
const wss = options.wss || new import_websocket_server.default({
|
|
14
|
+
noServer: true,
|
|
15
|
+
handleProtocols: () => false,
|
|
16
|
+
...options.serverOptions
|
|
17
|
+
});
|
|
18
|
+
wss.on("connection", (ws, nodeReq) => {
|
|
19
|
+
const request = new NodeReqProxy(nodeReq);
|
|
20
|
+
const peers = getPeers(globalPeers, nodeReq._namespace);
|
|
21
|
+
const peer = new NodePeer({
|
|
22
|
+
ws,
|
|
23
|
+
request,
|
|
24
|
+
peers,
|
|
25
|
+
nodeReq,
|
|
26
|
+
namespace: nodeReq._namespace
|
|
27
|
+
});
|
|
28
|
+
peers.add(peer);
|
|
29
|
+
hooks.callHook("open", peer);
|
|
30
|
+
ws.on("message", (data) => {
|
|
31
|
+
if (Array.isArray(data)) data = Buffer.concat(data);
|
|
32
|
+
hooks.callHook("message", peer, new Message(data, peer));
|
|
33
|
+
});
|
|
34
|
+
ws.on("error", (error) => {
|
|
35
|
+
peers.delete(peer);
|
|
36
|
+
hooks.callHook("error", peer, new WSError(error));
|
|
37
|
+
});
|
|
38
|
+
ws.on("close", (code, reason) => {
|
|
39
|
+
peers.delete(peer);
|
|
40
|
+
hooks.callHook("close", peer, {
|
|
41
|
+
code,
|
|
42
|
+
reason: reason?.toString()
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
wss.on("headers", (outgoingHeaders, req) => {
|
|
47
|
+
const upgradeHeaders = req._upgradeHeaders;
|
|
48
|
+
if (upgradeHeaders) for (const [key, value] of new Headers(upgradeHeaders)) outgoingHeaders.push(`${key}: ${value}`);
|
|
49
|
+
});
|
|
50
|
+
return {
|
|
51
|
+
...adapterUtils(globalPeers),
|
|
52
|
+
handleUpgrade: async (nodeReq, socket, head, webRequest) => {
|
|
53
|
+
const request = webRequest || new NodeReqProxy(nodeReq);
|
|
54
|
+
const { upgradeHeaders, endResponse, context, namespace } = await hooks.upgrade(request);
|
|
55
|
+
if (endResponse) return sendResponse(socket, endResponse);
|
|
56
|
+
nodeReq._request = request;
|
|
57
|
+
nodeReq._upgradeHeaders = upgradeHeaders;
|
|
58
|
+
nodeReq._context = context;
|
|
59
|
+
nodeReq._namespace = namespace;
|
|
60
|
+
wss.handleUpgrade(nodeReq, socket, head, (ws) => {
|
|
61
|
+
wss.emit("connection", ws, nodeReq);
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
closeAll: (code, data, force) => {
|
|
65
|
+
for (const client of wss.clients) if (force) client.terminate();
|
|
66
|
+
else client.close(code, data);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
var node_default = nodeAdapter;
|
|
71
|
+
var NodePeer = class extends Peer {
|
|
72
|
+
get remoteAddress() {
|
|
73
|
+
return this._internal.nodeReq.socket?.remoteAddress;
|
|
74
|
+
}
|
|
75
|
+
get context() {
|
|
76
|
+
return this._internal.nodeReq._context;
|
|
77
|
+
}
|
|
78
|
+
send(data, options) {
|
|
79
|
+
const dataBuff = toBufferLike(data);
|
|
80
|
+
const isBinary = typeof dataBuff !== "string";
|
|
81
|
+
this._internal.ws.send(dataBuff, {
|
|
82
|
+
compress: options?.compress,
|
|
83
|
+
binary: isBinary,
|
|
84
|
+
...options
|
|
85
|
+
});
|
|
86
|
+
return 0;
|
|
87
|
+
}
|
|
88
|
+
publish(topic, data, options) {
|
|
89
|
+
const dataBuff = toBufferLike(data);
|
|
90
|
+
const isBinary = typeof data !== "string";
|
|
91
|
+
const sendOptions = {
|
|
92
|
+
compress: options?.compress,
|
|
93
|
+
binary: isBinary,
|
|
94
|
+
...options
|
|
95
|
+
};
|
|
96
|
+
for (const peer of this._internal.peers) if (peer !== this && peer._topics.has(topic)) peer._internal.ws.send(dataBuff, sendOptions);
|
|
97
|
+
}
|
|
98
|
+
close(code, data) {
|
|
99
|
+
this._internal.ws.close(code, data);
|
|
100
|
+
}
|
|
101
|
+
terminate() {
|
|
102
|
+
this._internal.ws.terminate();
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
var NodeReqProxy = class extends StubRequest {
|
|
106
|
+
constructor(req) {
|
|
107
|
+
const host = req.headers["host"] || "localhost";
|
|
108
|
+
const url = `${req.socket?.encrypted ?? req.headers["x-forwarded-proto"] === "https" ? "https" : "http"}://${host}${req.url}`;
|
|
109
|
+
super(url, { headers: req.headers });
|
|
110
|
+
}
|
|
94
111
|
};
|
|
95
|
-
class NodePeer extends Peer {
|
|
96
|
-
get remoteAddress() {
|
|
97
|
-
return this._internal.nodeReq.socket?.remoteAddress;
|
|
98
|
-
}
|
|
99
|
-
get context() {
|
|
100
|
-
return this._internal.nodeReq._context;
|
|
101
|
-
}
|
|
102
|
-
send(data, options) {
|
|
103
|
-
const dataBuff = toBufferLike(data);
|
|
104
|
-
const isBinary = typeof dataBuff !== "string";
|
|
105
|
-
this._internal.ws.send(dataBuff, {
|
|
106
|
-
compress: options?.compress,
|
|
107
|
-
binary: isBinary,
|
|
108
|
-
...options
|
|
109
|
-
});
|
|
110
|
-
return 0;
|
|
111
|
-
}
|
|
112
|
-
publish(topic, data, options) {
|
|
113
|
-
const dataBuff = toBufferLike(data);
|
|
114
|
-
const isBinary = typeof data !== "string";
|
|
115
|
-
const sendOptions = {
|
|
116
|
-
compress: options?.compress,
|
|
117
|
-
binary: isBinary,
|
|
118
|
-
...options
|
|
119
|
-
};
|
|
120
|
-
for (const peer of this._internal.peers) {
|
|
121
|
-
if (peer !== this && peer._topics.has(topic)) {
|
|
122
|
-
peer._internal.ws.send(dataBuff, sendOptions);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
close(code, data) {
|
|
127
|
-
this._internal.ws.close(code, data);
|
|
128
|
-
}
|
|
129
|
-
terminate() {
|
|
130
|
-
this._internal.ws.terminate();
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
class NodeReqProxy extends StubRequest {
|
|
134
|
-
constructor(req) {
|
|
135
|
-
const host = req.headers["host"] || "localhost";
|
|
136
|
-
const isSecure = req.socket?.encrypted ?? req.headers["x-forwarded-proto"] === "https";
|
|
137
|
-
const url = `${isSecure ? "https" : "http"}://${host}${req.url}`;
|
|
138
|
-
super(url, { headers: req.headers });
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
112
|
async function sendResponse(socket, res) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
socket.write(chunk);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return new Promise((resolve) => {
|
|
155
|
-
socket.end(() => {
|
|
156
|
-
socket.destroy();
|
|
157
|
-
resolve();
|
|
158
|
-
});
|
|
159
|
-
});
|
|
113
|
+
const head = [`HTTP/1.1 ${res.status || 200} ${res.statusText || ""}`, ...[...res.headers.entries()].map(([key, value]) => `${encodeURIComponent(key)}: ${encodeURIComponent(value)}`)];
|
|
114
|
+
socket.write(head.join("\r\n") + "\r\n\r\n");
|
|
115
|
+
if (res.body) for await (const chunk of res.body) socket.write(chunk);
|
|
116
|
+
return new Promise((resolve) => {
|
|
117
|
+
socket.end(() => {
|
|
118
|
+
socket.destroy();
|
|
119
|
+
resolve();
|
|
120
|
+
});
|
|
121
|
+
});
|
|
160
122
|
}
|
|
161
123
|
|
|
162
|
-
|
|
124
|
+
//#endregion
|
|
125
|
+
export { node_default as default };
|
package/dist/adapters/sse.d.mts
CHANGED
|
@@ -1,13 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
interface SSEAdapter extends AdapterInstance {
|
|
5
|
-
fetch(req: Request): Promise<Response>;
|
|
6
|
-
}
|
|
7
|
-
interface SSEOptions extends AdapterOptions {
|
|
8
|
-
bidir?: boolean;
|
|
9
|
-
}
|
|
10
|
-
declare const sseAdapter: Adapter<SSEAdapter, SSEOptions>;
|
|
11
|
-
|
|
12
|
-
export { sseAdapter as default };
|
|
13
|
-
export type { SSEAdapter, SSEOptions };
|
|
1
|
+
import { n as SSEOptions, r as sseAdapter, t as SSEAdapter } from "../_chunks/sse.mjs";
|
|
2
|
+
export { SSEAdapter, SSEOptions, sseAdapter as default };
|