crossws 0.3.5 → 0.4.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.
Files changed (53) hide show
  1. package/adapters/bun.d.ts +2 -2
  2. package/adapters/cloudflare.d.ts +2 -2
  3. package/adapters/deno.d.ts +2 -2
  4. package/adapters/node.d.ts +2 -2
  5. package/adapters/sse.d.ts +2 -2
  6. package/adapters/uws.d.ts +2 -2
  7. package/dist/adapters/bun.d.mts +5 -3
  8. package/dist/adapters/bun.mjs +23 -13
  9. package/dist/adapters/cloudflare.d.mts +40 -7
  10. package/dist/adapters/cloudflare.mjs +172 -14
  11. package/dist/adapters/deno.mjs +18 -9
  12. package/dist/adapters/node.d.mts +1 -1
  13. package/dist/adapters/node.mjs +28 -29
  14. package/dist/adapters/sse.mjs +8 -7
  15. package/dist/adapters/uws.d.mts +12 -9
  16. package/dist/adapters/uws.mjs +25 -27
  17. package/dist/index.d.mts +33 -20
  18. package/dist/index.mjs +1 -1
  19. package/dist/server/bun.d.mts +24 -0
  20. package/dist/server/bun.mjs +37 -0
  21. package/dist/server/cloudflare.d.mts +24 -0
  22. package/dist/server/cloudflare.mjs +36 -0
  23. package/dist/server/default.d.mts +24 -0
  24. package/dist/server/default.mjs +32 -0
  25. package/dist/server/deno.d.mts +24 -0
  26. package/dist/server/deno.mjs +30 -0
  27. package/dist/server/node.d.mts +24 -0
  28. package/dist/server/node.mjs +43 -0
  29. package/dist/shared/crossws.95-eYp2D.d.mts +23 -0
  30. package/dist/shared/crossws.B31KJMcF.mjs +83 -0
  31. package/dist/shared/{crossws.D9ehKjSh.mjs → crossws.CPlNx7g8.mjs} +44 -25
  32. package/dist/shared/{crossws.DfCzGthR.mjs → crossws.WpyOHUXc.mjs} +18 -13
  33. package/package.json +42 -53
  34. package/server/bun.d.ts +2 -0
  35. package/server/deno.d.ts +2 -0
  36. package/server/node.d.ts +2 -0
  37. package/server.d.ts +2 -0
  38. package/websocket/sse.d.ts +2 -0
  39. package/websocket.d.ts +2 -2
  40. package/dist/adapters/bun.d.ts +0 -39
  41. package/dist/adapters/cloudflare-durable.d.mts +0 -42
  42. package/dist/adapters/cloudflare-durable.d.ts +0 -42
  43. package/dist/adapters/cloudflare-durable.mjs +0 -141
  44. package/dist/adapters/cloudflare.d.ts +0 -13
  45. package/dist/adapters/deno.d.ts +0 -19
  46. package/dist/adapters/node.d.ts +0 -299
  47. package/dist/adapters/sse.d.ts +0 -13
  48. package/dist/adapters/uws.d.ts +0 -59
  49. package/dist/index.d.ts +0 -157
  50. package/dist/shared/crossws.BQXMA5bH.d.ts +0 -297
  51. package/dist/websocket/native.d.ts +0 -3
  52. package/dist/websocket/node.d.ts +0 -3
  53. package/dist/websocket/sse.d.ts +0 -42
@@ -1,299 +0,0 @@
1
- import { Adapter, AdapterInstance, AdapterOptions } from '../index.js';
2
- import { Agent, ClientRequestArgs, IncomingMessage, ClientRequest, Server as Server$1, OutgoingHttpHeaders } from 'node:http';
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.js';
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): 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,13 +0,0 @@
1
- import { Adapter, AdapterInstance, AdapterOptions } from '../index.js';
2
- import '../shared/crossws.BQXMA5bH.js';
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,59 +0,0 @@
1
- import { Adapter, AdapterInstance, Peer, AdapterOptions } from '../index.js';
2
- import { W as WebSocket } from '../shared/crossws.BQXMA5bH.js';
3
- import uws from 'uWebSockets.js';
4
-
5
- type UserData = {
6
- peer?: UWSPeer;
7
- req: uws.HttpRequest;
8
- res: uws.HttpResponse;
9
- protocol: string;
10
- extensions: string;
11
- context: Peer["context"];
12
- };
13
- type WebSocketHandler = uws.WebSocketBehavior<UserData>;
14
- interface UWSAdapter extends AdapterInstance {
15
- websocket: WebSocketHandler;
16
- }
17
- interface UWSOptions extends AdapterOptions {
18
- uws?: Exclude<uws.WebSocketBehavior<any>, "close" | "drain" | "message" | "open" | "ping" | "pong" | "subscription" | "upgrade">;
19
- }
20
- declare const uwsAdapter: Adapter<UWSAdapter, UWSOptions>;
21
-
22
- declare class UWSPeer extends Peer<{
23
- peers: Set<UWSPeer>;
24
- request: UWSReqProxy;
25
- uws: uws.WebSocket<UserData>;
26
- ws: UwsWebSocketProxy;
27
- uwsData: UserData;
28
- }> {
29
- get remoteAddress(): string | undefined;
30
- get context(): Record<string, unknown>;
31
- send(data: unknown, options?: {
32
- compress?: boolean;
33
- }): number;
34
- subscribe(topic: string): void;
35
- unsubscribe(topic: string): void;
36
- publish(topic: string, message: string, options?: {
37
- compress?: boolean;
38
- }): number;
39
- close(code?: number, reason?: uws.RecognizedString): void;
40
- terminate(): void;
41
- }
42
- declare class UWSReqProxy {
43
- private _headers?;
44
- private _rawHeaders;
45
- url: string;
46
- constructor(_req: uws.HttpRequest);
47
- get headers(): Headers;
48
- }
49
- declare class UwsWebSocketProxy implements Partial<WebSocket> {
50
- private _uws;
51
- readyState?: number;
52
- constructor(_uws: uws.WebSocket<UserData>);
53
- get bufferedAmount(): number;
54
- get protocol(): string;
55
- get extensions(): string;
56
- }
57
-
58
- export { uwsAdapter as default };
59
- export type { UWSAdapter, UWSOptions };
package/dist/index.d.ts DELETED
@@ -1,157 +0,0 @@
1
- import { W as WebSocket } from './shared/crossws.BQXMA5bH.js';
2
-
3
- declare const kNodeInspect: unique symbol;
4
-
5
- interface AdapterInternal {
6
- ws: unknown;
7
- request: UpgradeRequest;
8
- peers?: Set<Peer>;
9
- context?: Peer["context"];
10
- }
11
- declare abstract class Peer<Internal extends AdapterInternal = AdapterInternal> {
12
- #private;
13
- protected _internal: Internal;
14
- protected _topics: Set<string>;
15
- protected _id?: string;
16
- constructor(internal: Internal);
17
- get context(): Record<string, unknown>;
18
- /**
19
- * Unique random [uuid v4](https://developer.mozilla.org/en-US/docs/Glossary/UUID) identifier for the peer.
20
- */
21
- get id(): string;
22
- /** IP address of the peer */
23
- get remoteAddress(): string | undefined;
24
- /** upgrade request */
25
- get request(): UpgradeRequest;
26
- /**
27
- * Get the [WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) instance.
28
- *
29
- * **Note:** crossws adds polyfill for the following properties if native values are not available:
30
- * - `protocol`: Extracted from the `sec-websocket-protocol` header.
31
- * - `extensions`: Extracted from the `sec-websocket-extensions` header.
32
- * - `url`: Extracted from the request URL (http -> ws).
33
- * */
34
- get websocket(): Partial<WebSocket>;
35
- /** All connected peers to the server */
36
- get peers(): Set<Peer>;
37
- /** All topics, this peer has been subscribed to. */
38
- get topics(): Set<string>;
39
- abstract close(code?: number, reason?: string): void;
40
- /** Abruptly close the connection */
41
- terminate(): void;
42
- /** Subscribe to a topic */
43
- subscribe(topic: string): void;
44
- /** Unsubscribe from a topic */
45
- unsubscribe(topic: string): void;
46
- /** Send a message to the peer. */
47
- abstract send(data: unknown, options?: {
48
- compress?: boolean;
49
- }): number | void | undefined;
50
- /** Send message to subscribes of topic */
51
- abstract publish(topic: string, data: unknown, options?: {
52
- compress?: boolean;
53
- }): void;
54
- toString(): string;
55
- [Symbol.toPrimitive](): string;
56
- [Symbol.toStringTag](): "WebSocket";
57
- [kNodeInspect](): Record<string, unknown>;
58
- }
59
-
60
- interface AdapterInstance {
61
- readonly peers: Set<Peer>;
62
- readonly publish: Peer["publish"];
63
- }
64
- interface AdapterOptions {
65
- resolve?: ResolveHooks;
66
- hooks?: Partial<Hooks>;
67
- }
68
- type Adapter<AdapterT extends AdapterInstance = AdapterInstance, Options extends AdapterOptions = AdapterOptions> = (options?: Options) => AdapterT;
69
- declare function defineWebSocketAdapter<AdapterT extends AdapterInstance = AdapterInstance, Options extends AdapterOptions = AdapterOptions>(factory: Adapter<AdapterT, Options>): Adapter<AdapterT, Options>;
70
-
71
- declare class WSError extends Error {
72
- constructor(...args: any[]);
73
- }
74
-
75
- declare class Message implements Partial<MessageEvent> {
76
- #private;
77
- /** Access to the original [message event](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/message_event) if available. */
78
- readonly event?: MessageEvent;
79
- /** Access to the Peer that emitted the message. */
80
- readonly peer?: Peer;
81
- /** Raw message data (can be of any type). */
82
- readonly rawData: unknown;
83
- constructor(rawData: unknown, peer: Peer, event?: MessageEvent);
84
- /**
85
- * Unique random [uuid v4](https://developer.mozilla.org/en-US/docs/Glossary/UUID) identifier for the message.
86
- */
87
- get id(): string;
88
- /**
89
- * Get data as [Uint8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) value.
90
- *
91
- * If raw data is in any other format or string, it will be automatically converted and encoded.
92
- */
93
- uint8Array(): Uint8Array;
94
- /**
95
- * Get data as [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) or [SharedArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) value.
96
- *
97
- * If raw data is in any other format or string, it will be automatically converted and encoded.
98
- */
99
- arrayBuffer(): ArrayBuffer | SharedArrayBuffer;
100
- /**
101
- * Get data as [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) value.
102
- *
103
- * If raw data is in any other format or string, it will be automatically converted and encoded. */
104
- blob(): Blob;
105
- /**
106
- * Get stringified text version of the message.
107
- *
108
- * If raw data is in any other format, it will be automatically converted and decoded.
109
- */
110
- text(): string;
111
- /**
112
- * Get parsed version of the message text with [`JSON.parse()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse).
113
- */
114
- json<T = unknown>(): T;
115
- /**
116
- * Message data (value varies based on `peer.websocket.binaryType`).
117
- */
118
- get data(): unknown;
119
- toString(): string;
120
- [Symbol.toPrimitive](): string;
121
- [kNodeInspect](): {
122
- data: unknown;
123
- };
124
- }
125
-
126
- declare function defineHooks<T extends Partial<Hooks> = Partial<Hooks>>(hooks: T): T;
127
- type ResolveHooks = (info: RequestInit | Peer) => Partial<Hooks> | Promise<Partial<Hooks>>;
128
- type MaybePromise<T> = T | Promise<T>;
129
- type UpgradeRequest = Request | {
130
- url: string;
131
- headers: Headers;
132
- };
133
- interface Hooks {
134
- /** Upgrading */
135
- /**
136
- *
137
- * @param request
138
- * @throws {Response}
139
- */
140
- upgrade: (request: UpgradeRequest & {
141
- context: Peer["context"];
142
- }) => MaybePromise<Response | ResponseInit | void>;
143
- /** A message is received */
144
- message: (peer: Peer, message: Message) => MaybePromise<void>;
145
- /** A socket is opened */
146
- open: (peer: Peer) => MaybePromise<void>;
147
- /** A socket is closed */
148
- close: (peer: Peer, details: {
149
- code?: number;
150
- reason?: string;
151
- }) => MaybePromise<void>;
152
- /** An error occurs */
153
- error: (peer: Peer, error: WSError) => MaybePromise<void>;
154
- }
155
-
156
- export { Message, Peer, WSError, defineHooks, defineWebSocketAdapter };
157
- export type { Adapter, AdapterInstance, AdapterInternal, AdapterOptions, Hooks, ResolveHooks };