crossws 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +155 -56
  2. package/adapters/bun.d.ts +1 -0
  3. package/adapters/cloudflare.d.ts +1 -0
  4. package/adapters/deno.d.ts +1 -0
  5. package/adapters/node.d.ts +1 -0
  6. package/dist/adapters/bun.cjs +44 -29
  7. package/dist/adapters/bun.d.cts +5 -35
  8. package/dist/adapters/bun.d.mts +5 -35
  9. package/dist/adapters/bun.d.ts +5 -35
  10. package/dist/adapters/bun.mjs +44 -26
  11. package/dist/adapters/cloudflare.cjs +52 -0
  12. package/dist/adapters/cloudflare.d.cts +12 -0
  13. package/dist/adapters/cloudflare.d.mts +12 -0
  14. package/dist/adapters/cloudflare.d.ts +12 -0
  15. package/dist/adapters/cloudflare.mjs +50 -0
  16. package/dist/adapters/deno.cjs +20 -29
  17. package/dist/adapters/deno.d.cts +2 -10
  18. package/dist/adapters/deno.d.mts +2 -10
  19. package/dist/adapters/deno.d.ts +2 -10
  20. package/dist/adapters/deno.mjs +20 -26
  21. package/dist/adapters/node.cjs +57 -3891
  22. package/dist/adapters/node.d.cts +36 -37
  23. package/dist/adapters/node.d.mts +36 -37
  24. package/dist/adapters/node.d.ts +36 -37
  25. package/dist/adapters/node.mjs +48 -3872
  26. package/dist/index.cjs +5 -5
  27. package/dist/index.d.cts +40 -10
  28. package/dist/index.d.mts +40 -10
  29. package/dist/index.d.ts +40 -10
  30. package/dist/index.mjs +4 -4
  31. package/dist/shared/{crossws.002417e5.cjs → crossws.21e14e0d.cjs} +7 -4
  32. package/dist/shared/crossws.2ed26345.cjs +3931 -0
  33. package/dist/shared/{crossws.08866fa6.mjs → crossws.9536f626.mjs} +7 -4
  34. package/dist/shared/crossws.a5db571c.mjs +3910 -0
  35. package/dist/websocket/index.cjs +5 -0
  36. package/dist/websocket/index.d.cts +10 -0
  37. package/dist/websocket/index.d.mts +10 -0
  38. package/dist/websocket/index.d.ts +10 -0
  39. package/dist/websocket/index.mjs +3 -0
  40. package/dist/websocket/node.cjs +17 -0
  41. package/dist/websocket/node.d.cts +10 -0
  42. package/dist/websocket/node.d.mts +10 -0
  43. package/dist/websocket/node.d.ts +10 -0
  44. package/dist/websocket/node.mjs +15 -0
  45. package/package.json +44 -17
  46. package/websocket.d.ts +1 -0
package/dist/index.cjs CHANGED
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- const peer = require('./shared/crossws.002417e5.cjs');
3
+ const peer = require('./shared/crossws.21e14e0d.cjs');
4
4
 
5
- function defineWebSocketHandler(handler) {
6
- return handler;
5
+ function defineWebSocketHooks(hooks) {
6
+ return hooks;
7
7
  }
8
8
 
9
9
  exports.WebSocketError = peer.WebSocketError;
10
10
  exports.WebSocketMessage = peer.WebSocketMessage;
11
- exports.WebSocketPeer = peer.WebSocketPeer;
11
+ exports.WebSocketPeerBase = peer.WebSocketPeerBase;
12
12
  exports.defineWebSocketAdapter = peer.defineWebSocketAdapter;
13
- exports.defineWebSocketHandler = defineWebSocketHandler;
13
+ exports.defineWebSocketHooks = defineWebSocketHooks;
package/dist/index.d.cts CHANGED
@@ -11,27 +11,57 @@ declare class WebSocketMessage {
11
11
  }
12
12
 
13
13
  type ReadyState = 0 | 1 | 2 | 3;
14
- declare abstract class WebSocketPeer {
14
+ interface WebSocketContext {
15
+ }
16
+ declare abstract class WebSocketPeerBase<T extends WebSocketContext = WebSocketContext> {
17
+ ctx: T;
18
+ constructor(ctx: T);
15
19
  get id(): string | undefined;
16
20
  get readyState(): ReadyState | -1;
17
21
  abstract send(message: string | ArrayBuffer | Uint8Array, compress?: boolean): number;
18
22
  toString(): string;
19
23
  }
20
24
 
21
- interface WebSocketHandler {
22
- onEvent?(event: string, ...args: any[]): void;
25
+ type WSHook<ArgsT extends Array<any> = []> = (peer: WebSocketPeerBase, ...args: ArgsT) => void | Promise<void>;
26
+ declare function defineWebSocketHooks(hooks: Partial<WebSocketHooks>): Partial<WebSocketHooks>;
27
+ interface WebSocketHooks {
23
28
  /** A message is received */
24
- onMessage?(peer: WebSocketPeer, message: WebSocketMessage): void;
29
+ message: WSHook<[WebSocketMessage]>;
25
30
  /** A socket is opened */
26
- onOpen?(peer: WebSocketPeer): void;
31
+ open: WSHook<[]>;
27
32
  /** A socket is closed */
28
- onClose?(peer: WebSocketPeer, code: number, reason: string): void;
33
+ close: WSHook<[{
34
+ code?: number;
35
+ reason?: string;
36
+ }]>;
29
37
  /** An error occurs */
30
- onError?(peer: WebSocketPeer, error: WebSocketError): void;
38
+ error: WSHook<[WebSocketError]>;
39
+ "bun:message": WSHook<[ws: any, message: any]>;
40
+ "bun:open": WSHook<[ws: any]>;
41
+ "bun:close": WSHook<[ws: any]>;
42
+ "bun:drain": WSHook<[]>;
43
+ "bun:error": WSHook<[ws: any, error: any]>;
44
+ "bun:ping": WSHook<[ws: any, data: any]>;
45
+ "bun:pong": WSHook<[ws: any, data: any]>;
46
+ "cloudflare:accept": WSHook<[]>;
47
+ "cloudflare:message": WSHook<[event: any]>;
48
+ "cloudflare:error": WSHook<[event: any]>;
49
+ "cloudflare:close": WSHook<[event: any]>;
50
+ "deno:open": WSHook<[]>;
51
+ "deno:message": WSHook<[event: any]>;
52
+ "deno:close": WSHook<[]>;
53
+ "deno:error": WSHook<[error: any]>;
54
+ "node:open": WSHook<[]>;
55
+ "node:message": WSHook<[data: any, isBinary: boolean]>;
56
+ "node:close": WSHook<[code: number, reason: Buffer]>;
57
+ "node:error": WSHook<[error: any]>;
58
+ "node:ping": WSHook<[data: Buffer]>;
59
+ "node:pong": WSHook<[data: Buffer]>;
60
+ "node:unexpected-response": WSHook<[req: any, res: any]>;
61
+ "node:upgrade": WSHook<[req: any]>;
31
62
  }
32
- declare function defineWebSocketHandler(handler: WebSocketHandler): WebSocketHandler;
33
63
 
34
- type WebSocketAdapter<RT = any, OT = any> = (handler: WebSocketHandler, opts: OT) => RT;
64
+ type WebSocketAdapter<RT = any, OT = any> = (hooks: Partial<WebSocketHooks>, opts: OT) => RT;
35
65
  declare function defineWebSocketAdapter<RT, OT>(factory: WebSocketAdapter<RT, OT>): WebSocketAdapter<RT, OT>;
36
66
 
37
- export { type WebSocketAdapter, WebSocketError, type WebSocketHandler, WebSocketMessage, WebSocketPeer, defineWebSocketAdapter, defineWebSocketHandler };
67
+ export { type WebSocketAdapter, type WebSocketContext, WebSocketError, type WebSocketHooks, WebSocketMessage, WebSocketPeerBase, defineWebSocketAdapter, defineWebSocketHooks };
package/dist/index.d.mts CHANGED
@@ -11,27 +11,57 @@ declare class WebSocketMessage {
11
11
  }
12
12
 
13
13
  type ReadyState = 0 | 1 | 2 | 3;
14
- declare abstract class WebSocketPeer {
14
+ interface WebSocketContext {
15
+ }
16
+ declare abstract class WebSocketPeerBase<T extends WebSocketContext = WebSocketContext> {
17
+ ctx: T;
18
+ constructor(ctx: T);
15
19
  get id(): string | undefined;
16
20
  get readyState(): ReadyState | -1;
17
21
  abstract send(message: string | ArrayBuffer | Uint8Array, compress?: boolean): number;
18
22
  toString(): string;
19
23
  }
20
24
 
21
- interface WebSocketHandler {
22
- onEvent?(event: string, ...args: any[]): void;
25
+ type WSHook<ArgsT extends Array<any> = []> = (peer: WebSocketPeerBase, ...args: ArgsT) => void | Promise<void>;
26
+ declare function defineWebSocketHooks(hooks: Partial<WebSocketHooks>): Partial<WebSocketHooks>;
27
+ interface WebSocketHooks {
23
28
  /** A message is received */
24
- onMessage?(peer: WebSocketPeer, message: WebSocketMessage): void;
29
+ message: WSHook<[WebSocketMessage]>;
25
30
  /** A socket is opened */
26
- onOpen?(peer: WebSocketPeer): void;
31
+ open: WSHook<[]>;
27
32
  /** A socket is closed */
28
- onClose?(peer: WebSocketPeer, code: number, reason: string): void;
33
+ close: WSHook<[{
34
+ code?: number;
35
+ reason?: string;
36
+ }]>;
29
37
  /** An error occurs */
30
- onError?(peer: WebSocketPeer, error: WebSocketError): void;
38
+ error: WSHook<[WebSocketError]>;
39
+ "bun:message": WSHook<[ws: any, message: any]>;
40
+ "bun:open": WSHook<[ws: any]>;
41
+ "bun:close": WSHook<[ws: any]>;
42
+ "bun:drain": WSHook<[]>;
43
+ "bun:error": WSHook<[ws: any, error: any]>;
44
+ "bun:ping": WSHook<[ws: any, data: any]>;
45
+ "bun:pong": WSHook<[ws: any, data: any]>;
46
+ "cloudflare:accept": WSHook<[]>;
47
+ "cloudflare:message": WSHook<[event: any]>;
48
+ "cloudflare:error": WSHook<[event: any]>;
49
+ "cloudflare:close": WSHook<[event: any]>;
50
+ "deno:open": WSHook<[]>;
51
+ "deno:message": WSHook<[event: any]>;
52
+ "deno:close": WSHook<[]>;
53
+ "deno:error": WSHook<[error: any]>;
54
+ "node:open": WSHook<[]>;
55
+ "node:message": WSHook<[data: any, isBinary: boolean]>;
56
+ "node:close": WSHook<[code: number, reason: Buffer]>;
57
+ "node:error": WSHook<[error: any]>;
58
+ "node:ping": WSHook<[data: Buffer]>;
59
+ "node:pong": WSHook<[data: Buffer]>;
60
+ "node:unexpected-response": WSHook<[req: any, res: any]>;
61
+ "node:upgrade": WSHook<[req: any]>;
31
62
  }
32
- declare function defineWebSocketHandler(handler: WebSocketHandler): WebSocketHandler;
33
63
 
34
- type WebSocketAdapter<RT = any, OT = any> = (handler: WebSocketHandler, opts: OT) => RT;
64
+ type WebSocketAdapter<RT = any, OT = any> = (hooks: Partial<WebSocketHooks>, opts: OT) => RT;
35
65
  declare function defineWebSocketAdapter<RT, OT>(factory: WebSocketAdapter<RT, OT>): WebSocketAdapter<RT, OT>;
36
66
 
37
- export { type WebSocketAdapter, WebSocketError, type WebSocketHandler, WebSocketMessage, WebSocketPeer, defineWebSocketAdapter, defineWebSocketHandler };
67
+ export { type WebSocketAdapter, type WebSocketContext, WebSocketError, type WebSocketHooks, WebSocketMessage, WebSocketPeerBase, defineWebSocketAdapter, defineWebSocketHooks };
package/dist/index.d.ts CHANGED
@@ -11,27 +11,57 @@ declare class WebSocketMessage {
11
11
  }
12
12
 
13
13
  type ReadyState = 0 | 1 | 2 | 3;
14
- declare abstract class WebSocketPeer {
14
+ interface WebSocketContext {
15
+ }
16
+ declare abstract class WebSocketPeerBase<T extends WebSocketContext = WebSocketContext> {
17
+ ctx: T;
18
+ constructor(ctx: T);
15
19
  get id(): string | undefined;
16
20
  get readyState(): ReadyState | -1;
17
21
  abstract send(message: string | ArrayBuffer | Uint8Array, compress?: boolean): number;
18
22
  toString(): string;
19
23
  }
20
24
 
21
- interface WebSocketHandler {
22
- onEvent?(event: string, ...args: any[]): void;
25
+ type WSHook<ArgsT extends Array<any> = []> = (peer: WebSocketPeerBase, ...args: ArgsT) => void | Promise<void>;
26
+ declare function defineWebSocketHooks(hooks: Partial<WebSocketHooks>): Partial<WebSocketHooks>;
27
+ interface WebSocketHooks {
23
28
  /** A message is received */
24
- onMessage?(peer: WebSocketPeer, message: WebSocketMessage): void;
29
+ message: WSHook<[WebSocketMessage]>;
25
30
  /** A socket is opened */
26
- onOpen?(peer: WebSocketPeer): void;
31
+ open: WSHook<[]>;
27
32
  /** A socket is closed */
28
- onClose?(peer: WebSocketPeer, code: number, reason: string): void;
33
+ close: WSHook<[{
34
+ code?: number;
35
+ reason?: string;
36
+ }]>;
29
37
  /** An error occurs */
30
- onError?(peer: WebSocketPeer, error: WebSocketError): void;
38
+ error: WSHook<[WebSocketError]>;
39
+ "bun:message": WSHook<[ws: any, message: any]>;
40
+ "bun:open": WSHook<[ws: any]>;
41
+ "bun:close": WSHook<[ws: any]>;
42
+ "bun:drain": WSHook<[]>;
43
+ "bun:error": WSHook<[ws: any, error: any]>;
44
+ "bun:ping": WSHook<[ws: any, data: any]>;
45
+ "bun:pong": WSHook<[ws: any, data: any]>;
46
+ "cloudflare:accept": WSHook<[]>;
47
+ "cloudflare:message": WSHook<[event: any]>;
48
+ "cloudflare:error": WSHook<[event: any]>;
49
+ "cloudflare:close": WSHook<[event: any]>;
50
+ "deno:open": WSHook<[]>;
51
+ "deno:message": WSHook<[event: any]>;
52
+ "deno:close": WSHook<[]>;
53
+ "deno:error": WSHook<[error: any]>;
54
+ "node:open": WSHook<[]>;
55
+ "node:message": WSHook<[data: any, isBinary: boolean]>;
56
+ "node:close": WSHook<[code: number, reason: Buffer]>;
57
+ "node:error": WSHook<[error: any]>;
58
+ "node:ping": WSHook<[data: Buffer]>;
59
+ "node:pong": WSHook<[data: Buffer]>;
60
+ "node:unexpected-response": WSHook<[req: any, res: any]>;
61
+ "node:upgrade": WSHook<[req: any]>;
31
62
  }
32
- declare function defineWebSocketHandler(handler: WebSocketHandler): WebSocketHandler;
33
63
 
34
- type WebSocketAdapter<RT = any, OT = any> = (handler: WebSocketHandler, opts: OT) => RT;
64
+ type WebSocketAdapter<RT = any, OT = any> = (hooks: Partial<WebSocketHooks>, opts: OT) => RT;
35
65
  declare function defineWebSocketAdapter<RT, OT>(factory: WebSocketAdapter<RT, OT>): WebSocketAdapter<RT, OT>;
36
66
 
37
- export { type WebSocketAdapter, WebSocketError, type WebSocketHandler, WebSocketMessage, WebSocketPeer, defineWebSocketAdapter, defineWebSocketHandler };
67
+ export { type WebSocketAdapter, type WebSocketContext, WebSocketError, type WebSocketHooks, WebSocketMessage, WebSocketPeerBase, defineWebSocketAdapter, defineWebSocketHooks };
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
- export { W as WebSocketError, a as WebSocketMessage, b as WebSocketPeer, d as defineWebSocketAdapter } from './shared/crossws.08866fa6.mjs';
1
+ export { W as WebSocketError, a as WebSocketMessage, b as WebSocketPeerBase, d as defineWebSocketAdapter } from './shared/crossws.9536f626.mjs';
2
2
 
3
- function defineWebSocketHandler(handler) {
4
- return handler;
3
+ function defineWebSocketHooks(hooks) {
4
+ return hooks;
5
5
  }
6
6
 
7
- export { defineWebSocketHandler };
7
+ export { defineWebSocketHooks };
@@ -20,7 +20,7 @@ class WebSocketMessage {
20
20
  return this.rawData.toString();
21
21
  }
22
22
  toString() {
23
- return `[WebSocketMessage] ${this.text()}`;
23
+ return `<WebSocketMessage: ${this.text()}>`;
24
24
  }
25
25
  [Symbol.for("nodejs.util.inspect.custom")]() {
26
26
  return this.toString();
@@ -34,7 +34,10 @@ const ReadyStateMap = {
34
34
  2: "closing",
35
35
  3: "closed"
36
36
  };
37
- class WebSocketPeer {
37
+ class WebSocketPeerBase {
38
+ constructor(ctx) {
39
+ this.ctx = ctx;
40
+ }
38
41
  get id() {
39
42
  return void 0;
40
43
  }
@@ -43,7 +46,7 @@ class WebSocketPeer {
43
46
  }
44
47
  toString() {
45
48
  const readyState = ReadyStateMap[this.readyState];
46
- return `[WebSocketPeer] ${this.id || "-"} (${readyState})`;
49
+ return `<WebSocketPeer${this.id ? ` ${this.id}` : ""} (${readyState})>`;
47
50
  }
48
51
  [Symbol.for("nodejs.util.inspect.custom")]() {
49
52
  return this.toString();
@@ -52,5 +55,5 @@ class WebSocketPeer {
52
55
 
53
56
  exports.WebSocketError = WebSocketError;
54
57
  exports.WebSocketMessage = WebSocketMessage;
55
- exports.WebSocketPeer = WebSocketPeer;
58
+ exports.WebSocketPeerBase = WebSocketPeerBase;
56
59
  exports.defineWebSocketAdapter = defineWebSocketAdapter;