@rivetkit/virtual-websocket 2.0.33 → 2.2.1-pr.4600.b74ff3b

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/mod.cjs CHANGED
@@ -162,10 +162,11 @@ var VirtualWebSocket = class {
162
162
  };
163
163
  this.#dispatch("open", event);
164
164
  }
165
- triggerMessage(data) {
165
+ triggerMessage(data, rivetMessageIndex) {
166
166
  const event = {
167
167
  type: "message",
168
168
  data,
169
+ rivetMessageIndex,
169
170
  target: this,
170
171
  currentTarget: this
171
172
  };
package/dist/mod.d.cts CHANGED
@@ -4,7 +4,12 @@ interface RivetEvent {
4
4
  currentTarget?: any;
5
5
  /**
6
6
  * @experimental
7
- * Request ID for hibernatable websockets (provided by engine runner)
7
+ * Gateway ID for hibernatable websockets (provided by engine envoy)
8
+ **/
9
+ rivetGatewayId?: ArrayBuffer;
10
+ /**
11
+ * @experimental
12
+ * Request ID for hibernatable websockets (provided by engine envoy)
8
13
  **/
9
14
  rivetRequestId?: ArrayBuffer;
10
15
  }
@@ -12,7 +17,7 @@ interface RivetMessageEvent extends RivetEvent {
12
17
  data: any;
13
18
  /**
14
19
  * @experimental
15
- * Message index for hibernatable websockets (provided by engine runner)
20
+ * Message index for hibernatable websockets (provided by engine envoy)
16
21
  **/
17
22
  rivetMessageIndex?: number;
18
23
  }
@@ -38,13 +43,13 @@ interface UniversalWebSocket {
38
43
  readonly url: string;
39
44
  send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
40
45
  close(code?: number, reason?: string): void;
41
- addEventListener(type: string, listener: (event: any) => void): void;
42
- removeEventListener(type: string, listener: (event: any) => void): void;
46
+ addEventListener(type: string, listener: (event: any) => void | Promise<void>): void;
47
+ removeEventListener(type: string, listener: (event: any) => void | Promise<void>): void;
43
48
  dispatchEvent(event: RivetEvent): boolean;
44
- onopen?: ((event: RivetEvent) => void) | null;
45
- onclose?: ((event: RivetCloseEvent) => void) | null;
46
- onerror?: ((event: RivetEvent) => void) | null;
47
- onmessage?: ((event: RivetMessageEvent) => void) | null;
49
+ onopen?: ((event: RivetEvent) => void | Promise<void>) | null;
50
+ onclose?: ((event: RivetCloseEvent) => void | Promise<void>) | null;
51
+ onerror?: ((event: RivetEvent) => void | Promise<void>) | null;
52
+ onmessage?: ((event: RivetMessageEvent) => void | Promise<void>) | null;
48
53
  }
49
54
 
50
55
  interface VirtualWebSocketOptions {
@@ -87,19 +92,19 @@ declare class VirtualWebSocket implements UniversalWebSocket {
87
92
  close(code?: number, reason?: string): void;
88
93
  /** @experimental Immediate close without close frame */
89
94
  terminate(): void;
90
- addEventListener(type: string, listener: (ev: any) => void): void;
91
- removeEventListener(type: string, listener: (ev: any) => void): void;
95
+ addEventListener(type: string, listener: (ev: any) => void | Promise<void>): void;
96
+ removeEventListener(type: string, listener: (ev: any) => void | Promise<void>): void;
92
97
  dispatchEvent(event: RivetEvent): boolean;
93
- get onopen(): ((event: RivetEvent) => void) | null;
94
- set onopen(fn: ((event: RivetEvent) => void) | null);
95
- get onclose(): ((event: RivetCloseEvent) => void) | null;
96
- set onclose(fn: ((event: RivetCloseEvent) => void) | null);
97
- get onerror(): ((event: RivetEvent) => void) | null;
98
- set onerror(fn: ((event: RivetEvent) => void) | null);
99
- get onmessage(): ((event: RivetMessageEvent) => void) | null;
100
- set onmessage(fn: ((event: RivetMessageEvent) => void) | null);
98
+ get onopen(): ((event: RivetEvent) => void | Promise<void>) | null;
99
+ set onopen(fn: ((event: RivetEvent) => void | Promise<void>) | null);
100
+ get onclose(): ((event: RivetCloseEvent) => void | Promise<void>) | null;
101
+ set onclose(fn: ((event: RivetCloseEvent) => void | Promise<void>) | null);
102
+ get onerror(): ((event: RivetEvent) => void | Promise<void>) | null;
103
+ set onerror(fn: ((event: RivetEvent) => void | Promise<void>) | null);
104
+ get onmessage(): ((event: RivetMessageEvent) => void | Promise<void>) | null;
105
+ set onmessage(fn: ((event: RivetMessageEvent) => void | Promise<void>) | null);
101
106
  triggerOpen(): void;
102
- triggerMessage(data: any): void;
107
+ triggerMessage(data: any, rivetMessageIndex?: number): void;
103
108
  triggerClose(code: number, reason: string, wasClean?: boolean): void;
104
109
  triggerError(error: unknown): void;
105
110
  }
package/dist/mod.d.ts CHANGED
@@ -4,7 +4,12 @@ interface RivetEvent {
4
4
  currentTarget?: any;
5
5
  /**
6
6
  * @experimental
7
- * Request ID for hibernatable websockets (provided by engine runner)
7
+ * Gateway ID for hibernatable websockets (provided by engine envoy)
8
+ **/
9
+ rivetGatewayId?: ArrayBuffer;
10
+ /**
11
+ * @experimental
12
+ * Request ID for hibernatable websockets (provided by engine envoy)
8
13
  **/
9
14
  rivetRequestId?: ArrayBuffer;
10
15
  }
@@ -12,7 +17,7 @@ interface RivetMessageEvent extends RivetEvent {
12
17
  data: any;
13
18
  /**
14
19
  * @experimental
15
- * Message index for hibernatable websockets (provided by engine runner)
20
+ * Message index for hibernatable websockets (provided by engine envoy)
16
21
  **/
17
22
  rivetMessageIndex?: number;
18
23
  }
@@ -38,13 +43,13 @@ interface UniversalWebSocket {
38
43
  readonly url: string;
39
44
  send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
40
45
  close(code?: number, reason?: string): void;
41
- addEventListener(type: string, listener: (event: any) => void): void;
42
- removeEventListener(type: string, listener: (event: any) => void): void;
46
+ addEventListener(type: string, listener: (event: any) => void | Promise<void>): void;
47
+ removeEventListener(type: string, listener: (event: any) => void | Promise<void>): void;
43
48
  dispatchEvent(event: RivetEvent): boolean;
44
- onopen?: ((event: RivetEvent) => void) | null;
45
- onclose?: ((event: RivetCloseEvent) => void) | null;
46
- onerror?: ((event: RivetEvent) => void) | null;
47
- onmessage?: ((event: RivetMessageEvent) => void) | null;
49
+ onopen?: ((event: RivetEvent) => void | Promise<void>) | null;
50
+ onclose?: ((event: RivetCloseEvent) => void | Promise<void>) | null;
51
+ onerror?: ((event: RivetEvent) => void | Promise<void>) | null;
52
+ onmessage?: ((event: RivetMessageEvent) => void | Promise<void>) | null;
48
53
  }
49
54
 
50
55
  interface VirtualWebSocketOptions {
@@ -87,19 +92,19 @@ declare class VirtualWebSocket implements UniversalWebSocket {
87
92
  close(code?: number, reason?: string): void;
88
93
  /** @experimental Immediate close without close frame */
89
94
  terminate(): void;
90
- addEventListener(type: string, listener: (ev: any) => void): void;
91
- removeEventListener(type: string, listener: (ev: any) => void): void;
95
+ addEventListener(type: string, listener: (ev: any) => void | Promise<void>): void;
96
+ removeEventListener(type: string, listener: (ev: any) => void | Promise<void>): void;
92
97
  dispatchEvent(event: RivetEvent): boolean;
93
- get onopen(): ((event: RivetEvent) => void) | null;
94
- set onopen(fn: ((event: RivetEvent) => void) | null);
95
- get onclose(): ((event: RivetCloseEvent) => void) | null;
96
- set onclose(fn: ((event: RivetCloseEvent) => void) | null);
97
- get onerror(): ((event: RivetEvent) => void) | null;
98
- set onerror(fn: ((event: RivetEvent) => void) | null);
99
- get onmessage(): ((event: RivetMessageEvent) => void) | null;
100
- set onmessage(fn: ((event: RivetMessageEvent) => void) | null);
98
+ get onopen(): ((event: RivetEvent) => void | Promise<void>) | null;
99
+ set onopen(fn: ((event: RivetEvent) => void | Promise<void>) | null);
100
+ get onclose(): ((event: RivetCloseEvent) => void | Promise<void>) | null;
101
+ set onclose(fn: ((event: RivetCloseEvent) => void | Promise<void>) | null);
102
+ get onerror(): ((event: RivetEvent) => void | Promise<void>) | null;
103
+ set onerror(fn: ((event: RivetEvent) => void | Promise<void>) | null);
104
+ get onmessage(): ((event: RivetMessageEvent) => void | Promise<void>) | null;
105
+ set onmessage(fn: ((event: RivetMessageEvent) => void | Promise<void>) | null);
101
106
  triggerOpen(): void;
102
- triggerMessage(data: any): void;
107
+ triggerMessage(data: any, rivetMessageIndex?: number): void;
103
108
  triggerClose(code: number, reason: string, wasClean?: boolean): void;
104
109
  triggerError(error: unknown): void;
105
110
  }
package/dist/mod.js CHANGED
@@ -136,10 +136,11 @@ var VirtualWebSocket = class {
136
136
  };
137
137
  this.#dispatch("open", event);
138
138
  }
139
- triggerMessage(data) {
139
+ triggerMessage(data, rivetMessageIndex) {
140
140
  const event = {
141
141
  type: "message",
142
142
  data,
143
+ rivetMessageIndex,
143
144
  target: this,
144
145
  currentTarget: this
145
146
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rivetkit/virtual-websocket",
3
- "version": "2.0.33",
3
+ "version": "2.2.1-pr.4600.b74ff3b",
4
4
  "description": "Virtual WebSocket implementation for creating linked WebSocket pairs",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
package/src/interface.ts CHANGED
@@ -5,7 +5,12 @@ export interface RivetEvent {
5
5
  currentTarget?: any;
6
6
  /**
7
7
  * @experimental
8
- * Request ID for hibernatable websockets (provided by engine runner)
8
+ * Gateway ID for hibernatable websockets (provided by engine envoy)
9
+ **/
10
+ rivetGatewayId?: ArrayBuffer;
11
+ /**
12
+ * @experimental
13
+ * Request ID for hibernatable websockets (provided by engine envoy)
9
14
  **/
10
15
  rivetRequestId?: ArrayBuffer;
11
16
  }
@@ -14,7 +19,7 @@ export interface RivetMessageEvent extends RivetEvent {
14
19
  data: any;
15
20
  /**
16
21
  * @experimental
17
- * Message index for hibernatable websockets (provided by engine runner)
22
+ * Message index for hibernatable websockets (provided by engine envoy)
18
23
  **/
19
24
  rivetMessageIndex?: number;
20
25
  }
@@ -47,13 +52,19 @@ export interface UniversalWebSocket {
47
52
  // Methods
48
53
  send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
49
54
  close(code?: number, reason?: string): void;
50
- addEventListener(type: string, listener: (event: any) => void): void;
51
- removeEventListener(type: string, listener: (event: any) => void): void;
55
+ addEventListener(
56
+ type: string,
57
+ listener: (event: any) => void | Promise<void>,
58
+ ): void;
59
+ removeEventListener(
60
+ type: string,
61
+ listener: (event: any) => void | Promise<void>,
62
+ ): void;
52
63
  dispatchEvent(event: RivetEvent): boolean;
53
64
 
54
65
  // Event handlers (optional)
55
- onopen?: ((event: RivetEvent) => void) | null;
56
- onclose?: ((event: RivetCloseEvent) => void) | null;
57
- onerror?: ((event: RivetEvent) => void) | null;
58
- onmessage?: ((event: RivetMessageEvent) => void) | null;
66
+ onopen?: ((event: RivetEvent) => void | Promise<void>) | null;
67
+ onclose?: ((event: RivetCloseEvent) => void | Promise<void>) | null;
68
+ onerror?: ((event: RivetEvent) => void | Promise<void>) | null;
69
+ onmessage?: ((event: RivetMessageEvent) => void | Promise<void>) | null;
59
70
  }
@@ -32,11 +32,16 @@ export class VirtualWebSocket implements UniversalWebSocket {
32
32
  readonly CLOSED = 3 as const;
33
33
 
34
34
  #options: VirtualWebSocketOptions;
35
- #listeners: Map<string, ((ev: any) => void)[]> = new Map();
36
- #onopen: ((event: RivetEvent) => void) | null = null;
37
- #onclose: ((event: RivetCloseEvent) => void) | null = null;
38
- #onerror: ((event: RivetEvent) => void) | null = null;
39
- #onmessage: ((event: RivetMessageEvent) => void) | null = null;
35
+ #listeners: Map<string, ((ev: any) => void | Promise<void>)[]> =
36
+ new Map();
37
+ #onopen: ((event: RivetEvent) => void | Promise<void>) | null = null;
38
+ #onclose:
39
+ | ((event: RivetCloseEvent) => void | Promise<void>)
40
+ | null = null;
41
+ #onerror: ((event: RivetEvent) => void | Promise<void>) | null = null;
42
+ #onmessage:
43
+ | ((event: RivetMessageEvent) => void | Promise<void>)
44
+ | null = null;
40
45
 
41
46
  constructor(options: VirtualWebSocketOptions) {
42
47
  this.#options = options;
@@ -133,14 +138,20 @@ export class VirtualWebSocket implements UniversalWebSocket {
133
138
  }
134
139
  }
135
140
 
136
- addEventListener(type: string, listener: (ev: any) => void): void {
141
+ addEventListener(
142
+ type: string,
143
+ listener: (ev: any) => void | Promise<void>,
144
+ ): void {
137
145
  if (!this.#listeners.has(type)) {
138
146
  this.#listeners.set(type, []);
139
147
  }
140
148
  this.#listeners.get(type)!.push(listener);
141
149
  }
142
150
 
143
- removeEventListener(type: string, listener: (ev: any) => void): void {
151
+ removeEventListener(
152
+ type: string,
153
+ listener: (ev: any) => void | Promise<void>,
154
+ ): void {
144
155
  const listeners = this.#listeners.get(type);
145
156
  if (listeners) {
146
157
  const index = listeners.indexOf(listener);
@@ -156,31 +167,39 @@ export class VirtualWebSocket implements UniversalWebSocket {
156
167
  }
157
168
 
158
169
  // on* property getters/setters
159
- get onopen(): ((event: RivetEvent) => void) | null {
170
+ get onopen(): ((event: RivetEvent) => void | Promise<void>) | null {
160
171
  return this.#onopen;
161
172
  }
162
- set onopen(fn: ((event: RivetEvent) => void) | null) {
173
+ set onopen(fn: ((event: RivetEvent) => void | Promise<void>) | null) {
163
174
  this.#onopen = fn;
164
175
  }
165
176
 
166
- get onclose(): ((event: RivetCloseEvent) => void) | null {
177
+ get onclose():
178
+ | ((event: RivetCloseEvent) => void | Promise<void>)
179
+ | null {
167
180
  return this.#onclose;
168
181
  }
169
- set onclose(fn: ((event: RivetCloseEvent) => void) | null) {
182
+ set onclose(
183
+ fn: ((event: RivetCloseEvent) => void | Promise<void>) | null,
184
+ ) {
170
185
  this.#onclose = fn;
171
186
  }
172
187
 
173
- get onerror(): ((event: RivetEvent) => void) | null {
188
+ get onerror(): ((event: RivetEvent) => void | Promise<void>) | null {
174
189
  return this.#onerror;
175
190
  }
176
- set onerror(fn: ((event: RivetEvent) => void) | null) {
191
+ set onerror(fn: ((event: RivetEvent) => void | Promise<void>) | null) {
177
192
  this.#onerror = fn;
178
193
  }
179
194
 
180
- get onmessage(): ((event: RivetMessageEvent) => void) | null {
195
+ get onmessage():
196
+ | ((event: RivetMessageEvent) => void | Promise<void>)
197
+ | null {
181
198
  return this.#onmessage;
182
199
  }
183
- set onmessage(fn: ((event: RivetMessageEvent) => void) | null) {
200
+ set onmessage(
201
+ fn: ((event: RivetMessageEvent) => void | Promise<void>) | null,
202
+ ) {
184
203
  this.#onmessage = fn;
185
204
  }
186
205
 
@@ -194,10 +213,11 @@ export class VirtualWebSocket implements UniversalWebSocket {
194
213
  this.#dispatch("open", event);
195
214
  }
196
215
 
197
- triggerMessage(data: any): void {
216
+ triggerMessage(data: any, rivetMessageIndex?: number): void {
198
217
  const event = {
199
218
  type: "message",
200
219
  data,
220
+ rivetMessageIndex,
201
221
  target: this,
202
222
  currentTarget: this,
203
223
  } as unknown as RivetMessageEvent;