@4players/odin-common 1.4.1 → 1.5.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.
package/CHANGELOG.md CHANGED
@@ -1,8 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.5.0
4
+
5
+ - Added `generateUUID`
6
+ - Added `validateUUID`
7
+ - Added re-exports for WebSocket package types
8
+
9
+ ## 1.4.3
10
+
11
+ - Added union zod schemas for room event validation
12
+
13
+ ## 1.4.2
14
+
15
+ - Fixed `isSharedArrayBufferCapable`
16
+
3
17
  ## 1.4.1
4
18
 
5
- - Added the claim `ups` to the Token schema
19
+ - Added `ups` claim to `TokenClaimsSchema`
6
20
 
7
21
  ## 1.4.0
8
22
 
package/README.md CHANGED
@@ -6,6 +6,22 @@
6
6
 
7
7
  A collection of commonly used type definitions and schemas across ODIN web projects.
8
8
 
9
+ ## Opt-in for Improved WebSocket Performance
10
+
11
+ This package provides WebSocket client functionality using the [ws](https://www.npmjs.com/package/ws) Node.js Websocket library. Optionally, you can use the binary addons [bufferutil](https://github.com/websockets/bufferutil) and [utf-8-validate](https://github.com/websockets/utf-8-validate) to improve the performance of certain operations.
12
+
13
+ ```bash
14
+ npm install --save-optional bufferutil
15
+ ```
16
+
17
+ To force ws to not use bufferutil, use the `WS_NO_BUFFER_UTIL` environment variable.
18
+
19
+ ```bash
20
+ npm install --save-optional utf-8-validate
21
+ ```
22
+
23
+ To force ws to not use utf-8-validate, use the `WS_NO_UTF_8_VALIDATE` environment variable.
24
+
9
25
  ## Troubleshooting
10
26
 
11
27
  Contact us through the listed methods below to receive answers to your questions and learn more about ODIN.
package/lib/cjs/index.js CHANGED
@@ -34,6 +34,7 @@ __exportStar(require("./utility/selector"), exports);
34
34
  __exportStar(require("./utility/sleep"), exports);
35
35
  __exportStar(require("./utility/strand"), exports);
36
36
  __exportStar(require("./utility/url"), exports);
37
+ __exportStar(require("./utility/uuid"), exports);
37
38
  __exportStar(require("./utility/validation"), exports);
38
39
  __exportStar(require("./utility/websocket"), exports);
39
40
  __exportStar(require("./plugin/api"), exports);
@@ -1,13 +1,36 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RoomNotificationsRpc = exports.MainNotificationsRpc = void 0;
3
+ exports.RoomNotificationsRpc = exports.RoomNotificationsSchema = exports.MainNotificationsRpc = exports.MainNotificationsSchema = void 0;
4
+ const z = require("zod");
4
5
  const room_1 = require("../schema/room");
5
6
  const peer_1 = require("../schema/peer");
6
7
  const message_1 = require("../schema/message");
7
8
  const webrtc_1 = require("../schema/webrtc");
9
+ exports.MainNotificationsSchema = z.object({
10
+ name: z.literal('WebRtcUpdate'),
11
+ properties: webrtc_1.WebRtcUpdateSchema,
12
+ });
8
13
  exports.MainNotificationsRpc = {
9
14
  WebRtcUpdate: webrtc_1.WebRtcUpdateSchema,
10
15
  };
16
+ exports.RoomNotificationsSchema = z.union([
17
+ z.object({
18
+ name: z.literal('RoomStatusChanged'),
19
+ properties: room_1.RoomStatusChangedSchema,
20
+ }),
21
+ z.object({
22
+ name: z.literal('RoomUpdated'),
23
+ properties: room_1.RoomUpdatesSchema,
24
+ }),
25
+ z.object({
26
+ name: z.literal('PeerUpdated'),
27
+ properties: peer_1.PeerUpdateSchema,
28
+ }),
29
+ z.object({
30
+ name: z.literal('MessageReceived'),
31
+ properties: message_1.MessageReceivedSchema,
32
+ }),
33
+ ]);
11
34
  exports.RoomNotificationsRpc = {
12
35
  RoomStatusChanged: room_1.RoomStatusChangedSchema,
13
36
  RoomUpdated: room_1.RoomUpdatesSchema,
@@ -6,7 +6,7 @@ function isAudioCapable() {
6
6
  }
7
7
  exports.isAudioCapable = isAudioCapable;
8
8
  function isSharedArrayBufferCapable() {
9
- return typeof self !== 'undefined' && self.crossOriginIsolated;
9
+ return typeof SharedArrayBuffer !== 'undefined';
10
10
  }
11
11
  exports.isSharedArrayBufferCapable = isSharedArrayBufferCapable;
12
12
  function isBlinkBrowser() {
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateUUID = exports.generateUUID = void 0;
4
+ const uuid_1 = require("uuid");
5
+ function generateUUID() {
6
+ return (0, uuid_1.v4)();
7
+ }
8
+ exports.generateUUID = generateUUID;
9
+ function validateUUID(uuid) {
10
+ return (0, uuid_1.validate)(uuid);
11
+ }
12
+ exports.validateUUID = validateUUID;
@@ -9,8 +9,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.webSocketConnectOnce = exports.webSocketConnect = void 0;
12
+ exports.webSocketConnectOnce = exports.webSocketConnect = exports.WebSocketClient = void 0;
13
13
  const ws_1 = require("ws");
14
+ Object.defineProperty(exports, "WebSocketClient", { enumerable: true, get: function () { return ws_1.WebSocket; } });
14
15
  const result_1 = require("./result");
15
16
  const sleep_1 = require("./sleep");
16
17
  function webSocketConnect(url, connectIntervals, clientOptions, onFailure) {
package/lib/esm/index.js CHANGED
@@ -18,6 +18,7 @@ export * from './utility/selector';
18
18
  export * from './utility/sleep';
19
19
  export * from './utility/strand';
20
20
  export * from './utility/url';
21
+ export * from './utility/uuid';
21
22
  export * from './utility/validation';
22
23
  export * from './utility/websocket';
23
24
  export * from './plugin/api';
@@ -1,10 +1,33 @@
1
+ import * as z from 'zod';
1
2
  import { RoomStatusChangedSchema, RoomUpdatesSchema } from '../schema/room';
2
3
  import { PeerUpdateSchema } from '../schema/peer';
3
4
  import { MessageReceivedSchema } from '../schema/message';
4
5
  import { WebRtcUpdateSchema } from '../schema/webrtc';
6
+ export const MainNotificationsSchema = z.object({
7
+ name: z.literal('WebRtcUpdate'),
8
+ properties: WebRtcUpdateSchema,
9
+ });
5
10
  export const MainNotificationsRpc = {
6
11
  WebRtcUpdate: WebRtcUpdateSchema,
7
12
  };
13
+ export const RoomNotificationsSchema = z.union([
14
+ z.object({
15
+ name: z.literal('RoomStatusChanged'),
16
+ properties: RoomStatusChangedSchema,
17
+ }),
18
+ z.object({
19
+ name: z.literal('RoomUpdated'),
20
+ properties: RoomUpdatesSchema,
21
+ }),
22
+ z.object({
23
+ name: z.literal('PeerUpdated'),
24
+ properties: PeerUpdateSchema,
25
+ }),
26
+ z.object({
27
+ name: z.literal('MessageReceived'),
28
+ properties: MessageReceivedSchema,
29
+ }),
30
+ ]);
8
31
  export const RoomNotificationsRpc = {
9
32
  RoomStatusChanged: RoomStatusChangedSchema,
10
33
  RoomUpdated: RoomUpdatesSchema,
@@ -2,7 +2,7 @@ export function isAudioCapable() {
2
2
  return typeof AudioContext !== 'undefined' && typeof Worker !== 'undefined';
3
3
  }
4
4
  export function isSharedArrayBufferCapable() {
5
- return typeof self !== 'undefined' && self.crossOriginIsolated;
5
+ return typeof SharedArrayBuffer !== 'undefined';
6
6
  }
7
7
  export function isBlinkBrowser() {
8
8
  const pattern = /(apple)?webkit\/537\.36/i;
@@ -0,0 +1,7 @@
1
+ import { v4, validate } from 'uuid';
2
+ export function generateUUID() {
3
+ return v4();
4
+ }
5
+ export function validateUUID(uuid) {
6
+ return validate(uuid);
7
+ }
@@ -7,9 +7,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { WebSocket } from 'ws';
10
+ import { WebSocket as WebSocketClient, } from 'ws';
11
11
  import { failure, success } from './result';
12
12
  import { sleep } from './sleep';
13
+ export { WebSocketClient, };
13
14
  export function webSocketConnect(url, connectIntervals, clientOptions, onFailure) {
14
15
  return __awaiter(this, void 0, void 0, function* () {
15
16
  const start = performance.now();
@@ -42,7 +43,7 @@ export function webSocketConnectOnce(url, clientOptions) {
42
43
  return __awaiter(this, void 0, void 0, function* () {
43
44
  let webSocket;
44
45
  try {
45
- webSocket = new WebSocket(url, clientOptions);
46
+ webSocket = new WebSocketClient(url, clientOptions);
46
47
  }
47
48
  catch (reason) {
48
49
  return failure(`unable to create websocket; ${reason}`);
package/lib/index.d.ts CHANGED
@@ -18,6 +18,7 @@ export * from './utility/selector';
18
18
  export * from './utility/sleep';
19
19
  export * from './utility/strand';
20
20
  export * from './utility/url';
21
+ export * from './utility/uuid';
21
22
  export * from './utility/validation';
22
23
  export * from './utility/websocket';
23
24
  export * from './plugin/api';
@@ -1,5 +1,80 @@
1
1
  import * as z from 'zod';
2
2
  export type Notifications = Record<string, z.ZodTypeAny>;
3
+ export declare const MainNotificationsSchema: z.ZodObject<{
4
+ name: z.ZodLiteral<"WebRtcUpdate">;
5
+ properties: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
6
+ kind: z.ZodLiteral<"Sdp">;
7
+ type: z.ZodEnum<["Answer", "Offer"]>;
8
+ sdp: z.ZodString;
9
+ media_map: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodString], null>, "many">;
10
+ }, "strip", z.ZodTypeAny, {
11
+ type: "Answer" | "Offer";
12
+ kind: "Sdp";
13
+ sdp: string;
14
+ media_map: [number, string][];
15
+ }, {
16
+ type: "Answer" | "Offer";
17
+ kind: "Sdp";
18
+ sdp: string;
19
+ media_map: [number, string][];
20
+ }>, z.ZodObject<{
21
+ kind: z.ZodLiteral<"Trickle">;
22
+ candidate: z.ZodString;
23
+ spd_mid: z.ZodOptional<z.ZodString>;
24
+ spd_mline_index: z.ZodOptional<z.ZodNumber>;
25
+ username_fragment: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNull]>>;
26
+ }, "strip", z.ZodTypeAny, {
27
+ kind: "Trickle";
28
+ candidate: string;
29
+ spd_mid?: string | undefined;
30
+ spd_mline_index?: number | undefined;
31
+ username_fragment?: string | null | undefined;
32
+ }, {
33
+ kind: "Trickle";
34
+ candidate: string;
35
+ spd_mid?: string | undefined;
36
+ spd_mline_index?: number | undefined;
37
+ username_fragment?: string | null | undefined;
38
+ }>, z.ZodObject<{
39
+ kind: z.ZodLiteral<"TrickleFinished">;
40
+ }, "strip", z.ZodTypeAny, {
41
+ kind: "TrickleFinished";
42
+ }, {
43
+ kind: "TrickleFinished";
44
+ }>]>;
45
+ }, "strip", z.ZodTypeAny, {
46
+ properties: {
47
+ type: "Answer" | "Offer";
48
+ kind: "Sdp";
49
+ sdp: string;
50
+ media_map: [number, string][];
51
+ } | {
52
+ kind: "Trickle";
53
+ candidate: string;
54
+ spd_mid?: string | undefined;
55
+ spd_mline_index?: number | undefined;
56
+ username_fragment?: string | null | undefined;
57
+ } | {
58
+ kind: "TrickleFinished";
59
+ };
60
+ name: "WebRtcUpdate";
61
+ }, {
62
+ properties: {
63
+ type: "Answer" | "Offer";
64
+ kind: "Sdp";
65
+ sdp: string;
66
+ media_map: [number, string][];
67
+ } | {
68
+ kind: "Trickle";
69
+ candidate: string;
70
+ spd_mid?: string | undefined;
71
+ spd_mline_index?: number | undefined;
72
+ username_fragment?: string | null | undefined;
73
+ } | {
74
+ kind: "TrickleFinished";
75
+ };
76
+ name: "WebRtcUpdate";
77
+ }>;
3
78
  export declare const MainNotificationsRpc: {
4
79
  WebRtcUpdate: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
5
80
  kind: z.ZodLiteral<"Sdp">;
@@ -43,6 +118,986 @@ export declare const MainNotificationsRpc: {
43
118
  }>]>;
44
119
  };
45
120
  export type MainNotifications = typeof MainNotificationsRpc;
121
+ export declare const RoomNotificationsSchema: z.ZodUnion<[z.ZodObject<{
122
+ name: z.ZodLiteral<"RoomStatusChanged">;
123
+ properties: z.ZodObject<{
124
+ status: z.ZodEnum<["Joining", "Joined", "Closed"]>;
125
+ message: z.ZodOptional<z.ZodString>;
126
+ }, "strip", z.ZodTypeAny, {
127
+ status: "Joined" | "Joining" | "Closed";
128
+ message?: string | undefined;
129
+ }, {
130
+ status: "Joined" | "Joining" | "Closed";
131
+ message?: string | undefined;
132
+ }>;
133
+ }, "strip", z.ZodTypeAny, {
134
+ properties: {
135
+ status: "Joined" | "Joining" | "Closed";
136
+ message?: string | undefined;
137
+ };
138
+ name: "RoomStatusChanged";
139
+ }, {
140
+ properties: {
141
+ status: "Joined" | "Joining" | "Closed";
142
+ message?: string | undefined;
143
+ };
144
+ name: "RoomStatusChanged";
145
+ }>, z.ZodObject<{
146
+ name: z.ZodLiteral<"RoomUpdated">;
147
+ properties: z.ZodObject<{
148
+ updates: z.ZodArray<z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
149
+ kind: z.ZodLiteral<"Joined">;
150
+ room: z.ZodObject<{
151
+ id: z.ZodString;
152
+ customer: z.ZodString;
153
+ user_data: z.ZodType<Uint8Array, z.ZodTypeDef, Uint8Array>;
154
+ peers: z.ZodArray<z.ZodObject<{
155
+ id: z.ZodNumber;
156
+ user_id: z.ZodString;
157
+ user_data: z.ZodType<Uint8Array, z.ZodTypeDef, Uint8Array>;
158
+ medias: z.ZodArray<z.ZodObject<{
159
+ id: z.ZodNumber;
160
+ properties: z.ZodUnion<[z.ZodObject<{
161
+ kind: z.ZodOptional<z.ZodLiteral<"audio">>;
162
+ uid: z.ZodOptional<z.ZodString>;
163
+ }, "strip", z.ZodTypeAny, {
164
+ kind?: "audio" | undefined;
165
+ uid?: string | undefined;
166
+ }, {
167
+ kind?: "audio" | undefined;
168
+ uid?: string | undefined;
169
+ }>, z.ZodObject<{
170
+ kind: z.ZodOptional<z.ZodLiteral<"video">>;
171
+ codec: z.ZodOptional<z.ZodString>;
172
+ uid: z.ZodOptional<z.ZodString>;
173
+ }, "strip", z.ZodTypeAny, {
174
+ kind?: "video" | undefined;
175
+ codec?: string | undefined;
176
+ uid?: string | undefined;
177
+ }, {
178
+ kind?: "video" | undefined;
179
+ codec?: string | undefined;
180
+ uid?: string | undefined;
181
+ }>]>;
182
+ paused: z.ZodBoolean;
183
+ }, "strip", z.ZodTypeAny, {
184
+ id: number;
185
+ properties: ({
186
+ kind?: "audio" | undefined;
187
+ uid?: string | undefined;
188
+ } | {
189
+ kind?: "video" | undefined;
190
+ codec?: string | undefined;
191
+ uid?: string | undefined;
192
+ }) & ({
193
+ kind?: "audio" | undefined;
194
+ uid?: string | undefined;
195
+ } | {
196
+ kind?: "video" | undefined;
197
+ codec?: string | undefined;
198
+ uid?: string | undefined;
199
+ } | undefined);
200
+ paused: boolean;
201
+ }, {
202
+ id: number;
203
+ properties: ({
204
+ kind?: "audio" | undefined;
205
+ uid?: string | undefined;
206
+ } | {
207
+ kind?: "video" | undefined;
208
+ codec?: string | undefined;
209
+ uid?: string | undefined;
210
+ }) & ({
211
+ kind?: "audio" | undefined;
212
+ uid?: string | undefined;
213
+ } | {
214
+ kind?: "video" | undefined;
215
+ codec?: string | undefined;
216
+ uid?: string | undefined;
217
+ } | undefined);
218
+ paused: boolean;
219
+ }>, "many">;
220
+ }, "strip", z.ZodTypeAny, {
221
+ id: number;
222
+ user_id: string;
223
+ user_data: Uint8Array;
224
+ medias: {
225
+ id: number;
226
+ properties: ({
227
+ kind?: "audio" | undefined;
228
+ uid?: string | undefined;
229
+ } | {
230
+ kind?: "video" | undefined;
231
+ codec?: string | undefined;
232
+ uid?: string | undefined;
233
+ }) & ({
234
+ kind?: "audio" | undefined;
235
+ uid?: string | undefined;
236
+ } | {
237
+ kind?: "video" | undefined;
238
+ codec?: string | undefined;
239
+ uid?: string | undefined;
240
+ } | undefined);
241
+ paused: boolean;
242
+ }[];
243
+ }, {
244
+ id: number;
245
+ user_id: string;
246
+ user_data: Uint8Array;
247
+ medias: {
248
+ id: number;
249
+ properties: ({
250
+ kind?: "audio" | undefined;
251
+ uid?: string | undefined;
252
+ } | {
253
+ kind?: "video" | undefined;
254
+ codec?: string | undefined;
255
+ uid?: string | undefined;
256
+ }) & ({
257
+ kind?: "audio" | undefined;
258
+ uid?: string | undefined;
259
+ } | {
260
+ kind?: "video" | undefined;
261
+ codec?: string | undefined;
262
+ uid?: string | undefined;
263
+ } | undefined);
264
+ paused: boolean;
265
+ }[];
266
+ }>, "many">;
267
+ }, "strip", z.ZodTypeAny, {
268
+ id: string;
269
+ user_data: Uint8Array;
270
+ customer: string;
271
+ peers: {
272
+ id: number;
273
+ user_id: string;
274
+ user_data: Uint8Array;
275
+ medias: {
276
+ id: number;
277
+ properties: ({
278
+ kind?: "audio" | undefined;
279
+ uid?: string | undefined;
280
+ } | {
281
+ kind?: "video" | undefined;
282
+ codec?: string | undefined;
283
+ uid?: string | undefined;
284
+ }) & ({
285
+ kind?: "audio" | undefined;
286
+ uid?: string | undefined;
287
+ } | {
288
+ kind?: "video" | undefined;
289
+ codec?: string | undefined;
290
+ uid?: string | undefined;
291
+ } | undefined);
292
+ paused: boolean;
293
+ }[];
294
+ }[];
295
+ }, {
296
+ id: string;
297
+ user_data: Uint8Array;
298
+ customer: string;
299
+ peers: {
300
+ id: number;
301
+ user_id: string;
302
+ user_data: Uint8Array;
303
+ medias: {
304
+ id: number;
305
+ properties: ({
306
+ kind?: "audio" | undefined;
307
+ uid?: string | undefined;
308
+ } | {
309
+ kind?: "video" | undefined;
310
+ codec?: string | undefined;
311
+ uid?: string | undefined;
312
+ }) & ({
313
+ kind?: "audio" | undefined;
314
+ uid?: string | undefined;
315
+ } | {
316
+ kind?: "video" | undefined;
317
+ codec?: string | undefined;
318
+ uid?: string | undefined;
319
+ } | undefined);
320
+ paused: boolean;
321
+ }[];
322
+ }[];
323
+ }>;
324
+ media_ids: z.ZodArray<z.ZodNumber, "many">;
325
+ own_peer_id: z.ZodNumber;
326
+ }, "strip", z.ZodTypeAny, {
327
+ kind: "Joined";
328
+ room: {
329
+ id: string;
330
+ user_data: Uint8Array;
331
+ customer: string;
332
+ peers: {
333
+ id: number;
334
+ user_id: string;
335
+ user_data: Uint8Array;
336
+ medias: {
337
+ id: number;
338
+ properties: ({
339
+ kind?: "audio" | undefined;
340
+ uid?: string | undefined;
341
+ } | {
342
+ kind?: "video" | undefined;
343
+ codec?: string | undefined;
344
+ uid?: string | undefined;
345
+ }) & ({
346
+ kind?: "audio" | undefined;
347
+ uid?: string | undefined;
348
+ } | {
349
+ kind?: "video" | undefined;
350
+ codec?: string | undefined;
351
+ uid?: string | undefined;
352
+ } | undefined);
353
+ paused: boolean;
354
+ }[];
355
+ }[];
356
+ };
357
+ media_ids: number[];
358
+ own_peer_id: number;
359
+ }, {
360
+ kind: "Joined";
361
+ room: {
362
+ id: string;
363
+ user_data: Uint8Array;
364
+ customer: string;
365
+ peers: {
366
+ id: number;
367
+ user_id: string;
368
+ user_data: Uint8Array;
369
+ medias: {
370
+ id: number;
371
+ properties: ({
372
+ kind?: "audio" | undefined;
373
+ uid?: string | undefined;
374
+ } | {
375
+ kind?: "video" | undefined;
376
+ codec?: string | undefined;
377
+ uid?: string | undefined;
378
+ }) & ({
379
+ kind?: "audio" | undefined;
380
+ uid?: string | undefined;
381
+ } | {
382
+ kind?: "video" | undefined;
383
+ codec?: string | undefined;
384
+ uid?: string | undefined;
385
+ } | undefined);
386
+ paused: boolean;
387
+ }[];
388
+ }[];
389
+ };
390
+ media_ids: number[];
391
+ own_peer_id: number;
392
+ }>, z.ZodObject<{
393
+ kind: z.ZodLiteral<"Left">;
394
+ reason: z.ZodEnum<["RoomClosing", "ServerClosing", "PeerKicked"]>;
395
+ }, "strip", z.ZodTypeAny, {
396
+ kind: "Left";
397
+ reason: "RoomClosing" | "ServerClosing" | "PeerKicked";
398
+ }, {
399
+ kind: "Left";
400
+ reason: "RoomClosing" | "ServerClosing" | "PeerKicked";
401
+ }>, z.ZodObject<{
402
+ kind: z.ZodLiteral<"UserDataChanged">;
403
+ user_data: z.ZodOptional<z.ZodType<Uint8Array, z.ZodTypeDef, Uint8Array>>;
404
+ }, "strip", z.ZodTypeAny, {
405
+ kind: "UserDataChanged";
406
+ user_data?: Uint8Array | undefined;
407
+ }, {
408
+ kind: "UserDataChanged";
409
+ user_data?: Uint8Array | undefined;
410
+ }>, z.ZodObject<{
411
+ kind: z.ZodLiteral<"PeerJoined">;
412
+ peer: z.ZodObject<{
413
+ id: z.ZodNumber;
414
+ user_id: z.ZodString;
415
+ user_data: z.ZodType<Uint8Array, z.ZodTypeDef, Uint8Array>;
416
+ medias: z.ZodArray<z.ZodObject<{
417
+ id: z.ZodNumber;
418
+ properties: z.ZodUnion<[z.ZodObject<{
419
+ kind: z.ZodOptional<z.ZodLiteral<"audio">>;
420
+ uid: z.ZodOptional<z.ZodString>;
421
+ }, "strip", z.ZodTypeAny, {
422
+ kind?: "audio" | undefined;
423
+ uid?: string | undefined;
424
+ }, {
425
+ kind?: "audio" | undefined;
426
+ uid?: string | undefined;
427
+ }>, z.ZodObject<{
428
+ kind: z.ZodOptional<z.ZodLiteral<"video">>;
429
+ codec: z.ZodOptional<z.ZodString>;
430
+ uid: z.ZodOptional<z.ZodString>;
431
+ }, "strip", z.ZodTypeAny, {
432
+ kind?: "video" | undefined;
433
+ codec?: string | undefined;
434
+ uid?: string | undefined;
435
+ }, {
436
+ kind?: "video" | undefined;
437
+ codec?: string | undefined;
438
+ uid?: string | undefined;
439
+ }>]>;
440
+ paused: z.ZodBoolean;
441
+ }, "strip", z.ZodTypeAny, {
442
+ id: number;
443
+ properties: ({
444
+ kind?: "audio" | undefined;
445
+ uid?: string | undefined;
446
+ } | {
447
+ kind?: "video" | undefined;
448
+ codec?: string | undefined;
449
+ uid?: string | undefined;
450
+ }) & ({
451
+ kind?: "audio" | undefined;
452
+ uid?: string | undefined;
453
+ } | {
454
+ kind?: "video" | undefined;
455
+ codec?: string | undefined;
456
+ uid?: string | undefined;
457
+ } | undefined);
458
+ paused: boolean;
459
+ }, {
460
+ id: number;
461
+ properties: ({
462
+ kind?: "audio" | undefined;
463
+ uid?: string | undefined;
464
+ } | {
465
+ kind?: "video" | undefined;
466
+ codec?: string | undefined;
467
+ uid?: string | undefined;
468
+ }) & ({
469
+ kind?: "audio" | undefined;
470
+ uid?: string | undefined;
471
+ } | {
472
+ kind?: "video" | undefined;
473
+ codec?: string | undefined;
474
+ uid?: string | undefined;
475
+ } | undefined);
476
+ paused: boolean;
477
+ }>, "many">;
478
+ }, "strip", z.ZodTypeAny, {
479
+ id: number;
480
+ user_id: string;
481
+ user_data: Uint8Array;
482
+ medias: {
483
+ id: number;
484
+ properties: ({
485
+ kind?: "audio" | undefined;
486
+ uid?: string | undefined;
487
+ } | {
488
+ kind?: "video" | undefined;
489
+ codec?: string | undefined;
490
+ uid?: string | undefined;
491
+ }) & ({
492
+ kind?: "audio" | undefined;
493
+ uid?: string | undefined;
494
+ } | {
495
+ kind?: "video" | undefined;
496
+ codec?: string | undefined;
497
+ uid?: string | undefined;
498
+ } | undefined);
499
+ paused: boolean;
500
+ }[];
501
+ }, {
502
+ id: number;
503
+ user_id: string;
504
+ user_data: Uint8Array;
505
+ medias: {
506
+ id: number;
507
+ properties: ({
508
+ kind?: "audio" | undefined;
509
+ uid?: string | undefined;
510
+ } | {
511
+ kind?: "video" | undefined;
512
+ codec?: string | undefined;
513
+ uid?: string | undefined;
514
+ }) & ({
515
+ kind?: "audio" | undefined;
516
+ uid?: string | undefined;
517
+ } | {
518
+ kind?: "video" | undefined;
519
+ codec?: string | undefined;
520
+ uid?: string | undefined;
521
+ } | undefined);
522
+ paused: boolean;
523
+ }[];
524
+ }>;
525
+ }, "strip", z.ZodTypeAny, {
526
+ kind: "PeerJoined";
527
+ peer: {
528
+ id: number;
529
+ user_id: string;
530
+ user_data: Uint8Array;
531
+ medias: {
532
+ id: number;
533
+ properties: ({
534
+ kind?: "audio" | undefined;
535
+ uid?: string | undefined;
536
+ } | {
537
+ kind?: "video" | undefined;
538
+ codec?: string | undefined;
539
+ uid?: string | undefined;
540
+ }) & ({
541
+ kind?: "audio" | undefined;
542
+ uid?: string | undefined;
543
+ } | {
544
+ kind?: "video" | undefined;
545
+ codec?: string | undefined;
546
+ uid?: string | undefined;
547
+ } | undefined);
548
+ paused: boolean;
549
+ }[];
550
+ };
551
+ }, {
552
+ kind: "PeerJoined";
553
+ peer: {
554
+ id: number;
555
+ user_id: string;
556
+ user_data: Uint8Array;
557
+ medias: {
558
+ id: number;
559
+ properties: ({
560
+ kind?: "audio" | undefined;
561
+ uid?: string | undefined;
562
+ } | {
563
+ kind?: "video" | undefined;
564
+ codec?: string | undefined;
565
+ uid?: string | undefined;
566
+ }) & ({
567
+ kind?: "audio" | undefined;
568
+ uid?: string | undefined;
569
+ } | {
570
+ kind?: "video" | undefined;
571
+ codec?: string | undefined;
572
+ uid?: string | undefined;
573
+ } | undefined);
574
+ paused: boolean;
575
+ }[];
576
+ };
577
+ }>, z.ZodObject<{
578
+ kind: z.ZodLiteral<"PeerLeft">;
579
+ peer_id: z.ZodNumber;
580
+ }, "strip", z.ZodTypeAny, {
581
+ kind: "PeerLeft";
582
+ peer_id: number;
583
+ }, {
584
+ kind: "PeerLeft";
585
+ peer_id: number;
586
+ }>]>, "many">;
587
+ }, "strip", z.ZodTypeAny, {
588
+ updates: ({
589
+ kind: "Joined";
590
+ room: {
591
+ id: string;
592
+ user_data: Uint8Array;
593
+ customer: string;
594
+ peers: {
595
+ id: number;
596
+ user_id: string;
597
+ user_data: Uint8Array;
598
+ medias: {
599
+ id: number;
600
+ properties: ({
601
+ kind?: "audio" | undefined;
602
+ uid?: string | undefined;
603
+ } | {
604
+ kind?: "video" | undefined;
605
+ codec?: string | undefined;
606
+ uid?: string | undefined;
607
+ }) & ({
608
+ kind?: "audio" | undefined;
609
+ uid?: string | undefined;
610
+ } | {
611
+ kind?: "video" | undefined;
612
+ codec?: string | undefined;
613
+ uid?: string | undefined;
614
+ } | undefined);
615
+ paused: boolean;
616
+ }[];
617
+ }[];
618
+ };
619
+ media_ids: number[];
620
+ own_peer_id: number;
621
+ } | {
622
+ kind: "Left";
623
+ reason: "RoomClosing" | "ServerClosing" | "PeerKicked";
624
+ } | {
625
+ kind: "UserDataChanged";
626
+ user_data?: Uint8Array | undefined;
627
+ } | {
628
+ kind: "PeerJoined";
629
+ peer: {
630
+ id: number;
631
+ user_id: string;
632
+ user_data: Uint8Array;
633
+ medias: {
634
+ id: number;
635
+ properties: ({
636
+ kind?: "audio" | undefined;
637
+ uid?: string | undefined;
638
+ } | {
639
+ kind?: "video" | undefined;
640
+ codec?: string | undefined;
641
+ uid?: string | undefined;
642
+ }) & ({
643
+ kind?: "audio" | undefined;
644
+ uid?: string | undefined;
645
+ } | {
646
+ kind?: "video" | undefined;
647
+ codec?: string | undefined;
648
+ uid?: string | undefined;
649
+ } | undefined);
650
+ paused: boolean;
651
+ }[];
652
+ };
653
+ } | {
654
+ kind: "PeerLeft";
655
+ peer_id: number;
656
+ })[];
657
+ }, {
658
+ updates: ({
659
+ kind: "Joined";
660
+ room: {
661
+ id: string;
662
+ user_data: Uint8Array;
663
+ customer: string;
664
+ peers: {
665
+ id: number;
666
+ user_id: string;
667
+ user_data: Uint8Array;
668
+ medias: {
669
+ id: number;
670
+ properties: ({
671
+ kind?: "audio" | undefined;
672
+ uid?: string | undefined;
673
+ } | {
674
+ kind?: "video" | undefined;
675
+ codec?: string | undefined;
676
+ uid?: string | undefined;
677
+ }) & ({
678
+ kind?: "audio" | undefined;
679
+ uid?: string | undefined;
680
+ } | {
681
+ kind?: "video" | undefined;
682
+ codec?: string | undefined;
683
+ uid?: string | undefined;
684
+ } | undefined);
685
+ paused: boolean;
686
+ }[];
687
+ }[];
688
+ };
689
+ media_ids: number[];
690
+ own_peer_id: number;
691
+ } | {
692
+ kind: "Left";
693
+ reason: "RoomClosing" | "ServerClosing" | "PeerKicked";
694
+ } | {
695
+ kind: "UserDataChanged";
696
+ user_data?: Uint8Array | undefined;
697
+ } | {
698
+ kind: "PeerJoined";
699
+ peer: {
700
+ id: number;
701
+ user_id: string;
702
+ user_data: Uint8Array;
703
+ medias: {
704
+ id: number;
705
+ properties: ({
706
+ kind?: "audio" | undefined;
707
+ uid?: string | undefined;
708
+ } | {
709
+ kind?: "video" | undefined;
710
+ codec?: string | undefined;
711
+ uid?: string | undefined;
712
+ }) & ({
713
+ kind?: "audio" | undefined;
714
+ uid?: string | undefined;
715
+ } | {
716
+ kind?: "video" | undefined;
717
+ codec?: string | undefined;
718
+ uid?: string | undefined;
719
+ } | undefined);
720
+ paused: boolean;
721
+ }[];
722
+ };
723
+ } | {
724
+ kind: "PeerLeft";
725
+ peer_id: number;
726
+ })[];
727
+ }>;
728
+ }, "strip", z.ZodTypeAny, {
729
+ properties: {
730
+ updates: ({
731
+ kind: "Joined";
732
+ room: {
733
+ id: string;
734
+ user_data: Uint8Array;
735
+ customer: string;
736
+ peers: {
737
+ id: number;
738
+ user_id: string;
739
+ user_data: Uint8Array;
740
+ medias: {
741
+ id: number;
742
+ properties: ({
743
+ kind?: "audio" | undefined;
744
+ uid?: string | undefined;
745
+ } | {
746
+ kind?: "video" | undefined;
747
+ codec?: string | undefined;
748
+ uid?: string | undefined;
749
+ }) & ({
750
+ kind?: "audio" | undefined;
751
+ uid?: string | undefined;
752
+ } | {
753
+ kind?: "video" | undefined;
754
+ codec?: string | undefined;
755
+ uid?: string | undefined;
756
+ } | undefined);
757
+ paused: boolean;
758
+ }[];
759
+ }[];
760
+ };
761
+ media_ids: number[];
762
+ own_peer_id: number;
763
+ } | {
764
+ kind: "Left";
765
+ reason: "RoomClosing" | "ServerClosing" | "PeerKicked";
766
+ } | {
767
+ kind: "UserDataChanged";
768
+ user_data?: Uint8Array | undefined;
769
+ } | {
770
+ kind: "PeerJoined";
771
+ peer: {
772
+ id: number;
773
+ user_id: string;
774
+ user_data: Uint8Array;
775
+ medias: {
776
+ id: number;
777
+ properties: ({
778
+ kind?: "audio" | undefined;
779
+ uid?: string | undefined;
780
+ } | {
781
+ kind?: "video" | undefined;
782
+ codec?: string | undefined;
783
+ uid?: string | undefined;
784
+ }) & ({
785
+ kind?: "audio" | undefined;
786
+ uid?: string | undefined;
787
+ } | {
788
+ kind?: "video" | undefined;
789
+ codec?: string | undefined;
790
+ uid?: string | undefined;
791
+ } | undefined);
792
+ paused: boolean;
793
+ }[];
794
+ };
795
+ } | {
796
+ kind: "PeerLeft";
797
+ peer_id: number;
798
+ })[];
799
+ };
800
+ name: "RoomUpdated";
801
+ }, {
802
+ properties: {
803
+ updates: ({
804
+ kind: "Joined";
805
+ room: {
806
+ id: string;
807
+ user_data: Uint8Array;
808
+ customer: string;
809
+ peers: {
810
+ id: number;
811
+ user_id: string;
812
+ user_data: Uint8Array;
813
+ medias: {
814
+ id: number;
815
+ properties: ({
816
+ kind?: "audio" | undefined;
817
+ uid?: string | undefined;
818
+ } | {
819
+ kind?: "video" | undefined;
820
+ codec?: string | undefined;
821
+ uid?: string | undefined;
822
+ }) & ({
823
+ kind?: "audio" | undefined;
824
+ uid?: string | undefined;
825
+ } | {
826
+ kind?: "video" | undefined;
827
+ codec?: string | undefined;
828
+ uid?: string | undefined;
829
+ } | undefined);
830
+ paused: boolean;
831
+ }[];
832
+ }[];
833
+ };
834
+ media_ids: number[];
835
+ own_peer_id: number;
836
+ } | {
837
+ kind: "Left";
838
+ reason: "RoomClosing" | "ServerClosing" | "PeerKicked";
839
+ } | {
840
+ kind: "UserDataChanged";
841
+ user_data?: Uint8Array | undefined;
842
+ } | {
843
+ kind: "PeerJoined";
844
+ peer: {
845
+ id: number;
846
+ user_id: string;
847
+ user_data: Uint8Array;
848
+ medias: {
849
+ id: number;
850
+ properties: ({
851
+ kind?: "audio" | undefined;
852
+ uid?: string | undefined;
853
+ } | {
854
+ kind?: "video" | undefined;
855
+ codec?: string | undefined;
856
+ uid?: string | undefined;
857
+ }) & ({
858
+ kind?: "audio" | undefined;
859
+ uid?: string | undefined;
860
+ } | {
861
+ kind?: "video" | undefined;
862
+ codec?: string | undefined;
863
+ uid?: string | undefined;
864
+ } | undefined);
865
+ paused: boolean;
866
+ }[];
867
+ };
868
+ } | {
869
+ kind: "PeerLeft";
870
+ peer_id: number;
871
+ })[];
872
+ };
873
+ name: "RoomUpdated";
874
+ }>, z.ZodObject<{
875
+ name: z.ZodLiteral<"PeerUpdated">;
876
+ properties: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
877
+ kind: z.ZodLiteral<"UserDataChanged">;
878
+ peer_id: z.ZodNumber;
879
+ user_data: z.ZodType<Uint8Array, z.ZodTypeDef, Uint8Array>;
880
+ }, "strip", z.ZodTypeAny, {
881
+ kind: "UserDataChanged";
882
+ user_data: Uint8Array;
883
+ peer_id: number;
884
+ }, {
885
+ kind: "UserDataChanged";
886
+ user_data: Uint8Array;
887
+ peer_id: number;
888
+ }>, z.ZodObject<{
889
+ kind: z.ZodLiteral<"MediaStarted">;
890
+ peer_id: z.ZodNumber;
891
+ media: z.ZodObject<{
892
+ id: z.ZodNumber;
893
+ properties: z.ZodUnion<[z.ZodObject<{
894
+ kind: z.ZodOptional<z.ZodLiteral<"audio">>;
895
+ uid: z.ZodOptional<z.ZodString>;
896
+ }, "strip", z.ZodTypeAny, {
897
+ kind?: "audio" | undefined;
898
+ uid?: string | undefined;
899
+ }, {
900
+ kind?: "audio" | undefined;
901
+ uid?: string | undefined;
902
+ }>, z.ZodObject<{
903
+ kind: z.ZodOptional<z.ZodLiteral<"video">>;
904
+ codec: z.ZodOptional<z.ZodString>;
905
+ uid: z.ZodOptional<z.ZodString>;
906
+ }, "strip", z.ZodTypeAny, {
907
+ kind?: "video" | undefined;
908
+ codec?: string | undefined;
909
+ uid?: string | undefined;
910
+ }, {
911
+ kind?: "video" | undefined;
912
+ codec?: string | undefined;
913
+ uid?: string | undefined;
914
+ }>]>;
915
+ paused: z.ZodBoolean;
916
+ }, "strip", z.ZodTypeAny, {
917
+ id: number;
918
+ properties: ({
919
+ kind?: "audio" | undefined;
920
+ uid?: string | undefined;
921
+ } | {
922
+ kind?: "video" | undefined;
923
+ codec?: string | undefined;
924
+ uid?: string | undefined;
925
+ }) & ({
926
+ kind?: "audio" | undefined;
927
+ uid?: string | undefined;
928
+ } | {
929
+ kind?: "video" | undefined;
930
+ codec?: string | undefined;
931
+ uid?: string | undefined;
932
+ } | undefined);
933
+ paused: boolean;
934
+ }, {
935
+ id: number;
936
+ properties: ({
937
+ kind?: "audio" | undefined;
938
+ uid?: string | undefined;
939
+ } | {
940
+ kind?: "video" | undefined;
941
+ codec?: string | undefined;
942
+ uid?: string | undefined;
943
+ }) & ({
944
+ kind?: "audio" | undefined;
945
+ uid?: string | undefined;
946
+ } | {
947
+ kind?: "video" | undefined;
948
+ codec?: string | undefined;
949
+ uid?: string | undefined;
950
+ } | undefined);
951
+ paused: boolean;
952
+ }>;
953
+ }, "strip", z.ZodTypeAny, {
954
+ kind: "MediaStarted";
955
+ peer_id: number;
956
+ media: {
957
+ id: number;
958
+ properties: ({
959
+ kind?: "audio" | undefined;
960
+ uid?: string | undefined;
961
+ } | {
962
+ kind?: "video" | undefined;
963
+ codec?: string | undefined;
964
+ uid?: string | undefined;
965
+ }) & ({
966
+ kind?: "audio" | undefined;
967
+ uid?: string | undefined;
968
+ } | {
969
+ kind?: "video" | undefined;
970
+ codec?: string | undefined;
971
+ uid?: string | undefined;
972
+ } | undefined);
973
+ paused: boolean;
974
+ };
975
+ }, {
976
+ kind: "MediaStarted";
977
+ peer_id: number;
978
+ media: {
979
+ id: number;
980
+ properties: ({
981
+ kind?: "audio" | undefined;
982
+ uid?: string | undefined;
983
+ } | {
984
+ kind?: "video" | undefined;
985
+ codec?: string | undefined;
986
+ uid?: string | undefined;
987
+ }) & ({
988
+ kind?: "audio" | undefined;
989
+ uid?: string | undefined;
990
+ } | {
991
+ kind?: "video" | undefined;
992
+ codec?: string | undefined;
993
+ uid?: string | undefined;
994
+ } | undefined);
995
+ paused: boolean;
996
+ };
997
+ }>, z.ZodObject<{
998
+ kind: z.ZodLiteral<"MediaStopped">;
999
+ peer_id: z.ZodNumber;
1000
+ media_id: z.ZodNumber;
1001
+ }, "strip", z.ZodTypeAny, {
1002
+ kind: "MediaStopped";
1003
+ peer_id: number;
1004
+ media_id: number;
1005
+ }, {
1006
+ kind: "MediaStopped";
1007
+ peer_id: number;
1008
+ media_id: number;
1009
+ }>]>;
1010
+ }, "strip", z.ZodTypeAny, {
1011
+ properties: {
1012
+ kind: "UserDataChanged";
1013
+ user_data: Uint8Array;
1014
+ peer_id: number;
1015
+ } | {
1016
+ kind: "MediaStarted";
1017
+ peer_id: number;
1018
+ media: {
1019
+ id: number;
1020
+ properties: ({
1021
+ kind?: "audio" | undefined;
1022
+ uid?: string | undefined;
1023
+ } | {
1024
+ kind?: "video" | undefined;
1025
+ codec?: string | undefined;
1026
+ uid?: string | undefined;
1027
+ }) & ({
1028
+ kind?: "audio" | undefined;
1029
+ uid?: string | undefined;
1030
+ } | {
1031
+ kind?: "video" | undefined;
1032
+ codec?: string | undefined;
1033
+ uid?: string | undefined;
1034
+ } | undefined);
1035
+ paused: boolean;
1036
+ };
1037
+ } | {
1038
+ kind: "MediaStopped";
1039
+ peer_id: number;
1040
+ media_id: number;
1041
+ };
1042
+ name: "PeerUpdated";
1043
+ }, {
1044
+ properties: {
1045
+ kind: "UserDataChanged";
1046
+ user_data: Uint8Array;
1047
+ peer_id: number;
1048
+ } | {
1049
+ kind: "MediaStarted";
1050
+ peer_id: number;
1051
+ media: {
1052
+ id: number;
1053
+ properties: ({
1054
+ kind?: "audio" | undefined;
1055
+ uid?: string | undefined;
1056
+ } | {
1057
+ kind?: "video" | undefined;
1058
+ codec?: string | undefined;
1059
+ uid?: string | undefined;
1060
+ }) & ({
1061
+ kind?: "audio" | undefined;
1062
+ uid?: string | undefined;
1063
+ } | {
1064
+ kind?: "video" | undefined;
1065
+ codec?: string | undefined;
1066
+ uid?: string | undefined;
1067
+ } | undefined);
1068
+ paused: boolean;
1069
+ };
1070
+ } | {
1071
+ kind: "MediaStopped";
1072
+ peer_id: number;
1073
+ media_id: number;
1074
+ };
1075
+ name: "PeerUpdated";
1076
+ }>, z.ZodObject<{
1077
+ name: z.ZodLiteral<"MessageReceived">;
1078
+ properties: z.ZodObject<{
1079
+ sender_peer_id: z.ZodNumber;
1080
+ message: z.ZodType<Uint8Array, z.ZodTypeDef, Uint8Array>;
1081
+ }, "strip", z.ZodTypeAny, {
1082
+ message: Uint8Array;
1083
+ sender_peer_id: number;
1084
+ }, {
1085
+ message: Uint8Array;
1086
+ sender_peer_id: number;
1087
+ }>;
1088
+ }, "strip", z.ZodTypeAny, {
1089
+ properties: {
1090
+ message: Uint8Array;
1091
+ sender_peer_id: number;
1092
+ };
1093
+ name: "MessageReceived";
1094
+ }, {
1095
+ properties: {
1096
+ message: Uint8Array;
1097
+ sender_peer_id: number;
1098
+ };
1099
+ name: "MessageReceived";
1100
+ }>]>;
46
1101
  export declare const RoomNotificationsRpc: {
47
1102
  RoomStatusChanged: z.ZodObject<{
48
1103
  status: z.ZodEnum<["Joining", "Joined", "Closed"]>;
@@ -0,0 +1,2 @@
1
+ export declare function generateUUID(): string;
2
+ export declare function validateUUID(uuid: string): boolean;
@@ -1,7 +1,8 @@
1
- import { ClientOptions, WebSocket } from 'ws';
1
+ import { WebSocket as WebSocketClient, ClientOptions as WebSocketClientOptions, CloseEvent as WebSocketCloseEvent, ErrorEvent as WebSocketErrorEvent, MessageEvent as WebSocketMessageEvent, EventListenerOptions as WebSocketEventListenerOptions, Event as WebSocketEvent } from 'ws';
2
2
  import { Result } from './result';
3
- export declare function webSocketConnect(url: URL, connectIntervals: number[], clientOptions?: ClientOptions, onFailure?: (failures: number, cancel: () => void) => void): Promise<{
4
- connect: () => Promise<Result<WebSocket>>;
3
+ export { WebSocketClient, WebSocketClientOptions, WebSocketCloseEvent, WebSocketErrorEvent, WebSocketMessageEvent, WebSocketEventListenerOptions, WebSocketEvent, };
4
+ export declare function webSocketConnect(url: URL, connectIntervals: number[], clientOptions?: WebSocketClientOptions, onFailure?: (failures: number, cancel: () => void) => void): Promise<{
5
+ connect: () => Promise<Result<WebSocketClient>>;
5
6
  cancel: () => void;
6
7
  }>;
7
- export declare function webSocketConnectOnce(url: URL, clientOptions?: ClientOptions): Promise<Result<WebSocket>>;
8
+ export declare function webSocketConnectOnce(url: URL, clientOptions?: WebSocketClientOptions): Promise<Result<WebSocketClient>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@4players/odin-common",
3
- "version": "1.4.1",
3
+ "version": "1.5.0",
4
4
  "description": "A collection of commonly used type definitions and utility functions across ODIN web projects",
5
5
  "author": "Josho Bleicker <josho.bleicker@4players.io> (https://www.4players.io)",
6
6
  "homepage": "https://www.4players.io",
@@ -24,19 +24,19 @@
24
24
  "lint": "eslint . --ext .ts",
25
25
  "test": "testyts"
26
26
  },
27
- "engines": {
28
- "node": ">=14"
29
- },
30
27
  "dependencies": {
31
28
  "@msgpack/msgpack": "~3.0.0-beta2",
32
- "@types/ws": "~8.5.0",
29
+ "uuid": "~9.0.0",
33
30
  "ws": "~8.16.0",
34
31
  "zod": "~3.22.0"
35
32
  },
36
33
  "devDependencies": {
37
- "@typescript-eslint/eslint-plugin": "~6.19.0",
38
- "@typescript-eslint/parser": "~6.19.0",
39
- "eslint": "~8.56.0",
34
+ "@types/node": "~20.11.0",
35
+ "@types/uuid": "~9.0.0",
36
+ "@types/ws": "~8.5.0",
37
+ "@typescript-eslint/eslint-plugin": "~7.1.0",
38
+ "@typescript-eslint/parser": "~7.1.0",
39
+ "eslint": "~8.57.0",
40
40
  "eslint-config-semistandard": "~17.0.0",
41
41
  "eslint-plugin-import": "~2.29.0",
42
42
  "eslint-plugin-node": "~11.1.0",