@rlanz/socket 0.0.1-4 → 0.0.1-5

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 (55) hide show
  1. package/README.md +427 -22
  2. package/build/chunk-ANT2E3LT.js +136 -0
  3. package/build/chunk-ANT2E3LT.js.map +1 -0
  4. package/build/chunk-B4Y3TNDI.js +159 -0
  5. package/build/chunk-B4Y3TNDI.js.map +1 -0
  6. package/build/{chunk-GKAD2UOA.js → chunk-D3HUBCBW.js} +1 -1
  7. package/build/chunk-D3HUBCBW.js.map +1 -0
  8. package/build/chunk-SFAY2ZA4.js +28 -0
  9. package/build/chunk-SFAY2ZA4.js.map +1 -0
  10. package/build/{chunk-XUDFDJME.js → chunk-SHH6U4CI.js} +12 -9
  11. package/build/chunk-SHH6U4CI.js.map +1 -0
  12. package/build/chunk-YAX5EHHB.js +453 -0
  13. package/build/chunk-YAX5EHHB.js.map +1 -0
  14. package/build/framework-CvxgHwbv.d.ts +12 -0
  15. package/build/index.d.ts +7 -13
  16. package/build/index.js +18 -10
  17. package/build/index.js.map +1 -1
  18. package/build/providers/socket_provider.d.ts +4 -3
  19. package/build/providers/socket_provider.js +1774 -57
  20. package/build/providers/socket_provider.js.map +1 -1
  21. package/build/services/socket.d.ts +4 -3
  22. package/build/socket_service-mybqv1hj.d.ts +105 -0
  23. package/build/src/assembler_hook.d.ts +13 -0
  24. package/build/src/assembler_hook.js +249 -0
  25. package/build/src/assembler_hook.js.map +1 -0
  26. package/build/src/client/index.d.ts +46 -12
  27. package/build/src/client/index.js +223 -76
  28. package/build/src/client/index.js.map +1 -1
  29. package/build/src/client/react.d.ts +27 -0
  30. package/build/src/client/react.js +69 -0
  31. package/build/src/client/react.js.map +1 -0
  32. package/build/src/client/svelte.d.ts +22 -0
  33. package/build/src/client/svelte.js +82 -0
  34. package/build/src/client/svelte.js.map +1 -0
  35. package/build/src/client/types.d.ts +68 -5
  36. package/build/src/client/vue.d.ts +25 -0
  37. package/build/src/client/vue.js +81 -0
  38. package/build/src/client/vue.js.map +1 -0
  39. package/build/src/decorators.d.ts +4 -4
  40. package/build/src/decorators.js +1 -1
  41. package/build/src/health_check.d.ts +4 -3
  42. package/build/src/otel.js +4 -5
  43. package/build/src/otel.js.map +1 -1
  44. package/build/src/testing.d.ts +54 -0
  45. package/build/src/testing.js +7 -0
  46. package/build/src/testing.js.map +1 -0
  47. package/build/src/types.d.ts +2 -2
  48. package/build/{types-BBLNfcWk.d.ts → types-C7Q36ryo.d.ts} +110 -65
  49. package/package.json +41 -6
  50. package/build/chunk-GKAD2UOA.js.map +0 -1
  51. package/build/chunk-ILDK672E.js +0 -1921
  52. package/build/chunk-ILDK672E.js.map +0 -1
  53. package/build/chunk-XUDFDJME.js.map +0 -1
  54. package/build/shared_types-Dw9AphfO.d.ts +0 -21
  55. package/build/socket_service-CRmPa74K.d.ts +0 -144
@@ -1,8 +1,8 @@
1
1
  import { WebSocket } from 'ws';
2
2
  import { IncomingMessage } from 'node:http';
3
3
  import { MiddlewareAsClass } from '@adonisjs/core/types/http';
4
+ import { HttpContext } from '@adonisjs/core/http';
4
5
  import { TransportFactory } from '@boringnode/bus/types/main';
5
- import './shared_types-Dw9AphfO.js';
6
6
 
7
7
  declare const PRESENCE_DATA_KEY = "__rlanzSocketPresence";
8
8
  type PresenceSocketData = Record<string, unknown> & {
@@ -10,7 +10,6 @@ type PresenceSocketData = Record<string, unknown> & {
10
10
  };
11
11
  interface PresenceUser {
12
12
  id: string;
13
- name: string;
14
13
  joinedAt: Date;
15
14
  [key: string]: unknown;
16
15
  }
@@ -33,11 +32,11 @@ declare class PresenceManager {
33
32
  /**
34
33
  * Sets the socket fetcher used to build distributed snapshots.
35
34
  */
36
- setSocketFetcher(fetchSockets: (channel: string) => Promise<PresenceSocket[]>): void;
35
+ setSocketFetcher(fetchSockets: ((channel: string) => Promise<PresenceSocket[]>) | null): void;
37
36
  /**
38
37
  * Adds a user to a channel.
39
38
  */
40
- join(channel: string, socket: PresenceSocket, member: string | PresenceMember): void;
39
+ join(channel: string, socket: PresenceSocket, member: PresenceInfo): PresenceUser;
41
40
  /**
42
41
  * Removes a user from a channel.
43
42
  */
@@ -59,6 +58,10 @@ declare class PresenceManager {
59
58
  * Checks whether a socket is locally present in a channel.
60
59
  */
61
60
  hasLocal(channel: string, socketId: string): boolean;
61
+ /**
62
+ * Gets the presence user retained for one local socket.
63
+ */
64
+ getLocalUser(channel: string, socketId: string): PresenceUser | undefined;
62
65
  /**
63
66
  * Lists every local channel where a socket is present.
64
67
  */
@@ -77,6 +80,11 @@ interface ChannelBroadcaster {
77
80
  };
78
81
  };
79
82
  }
83
+ /**
84
+ * Error whose message may intentionally be returned to a socket client.
85
+ */
86
+ declare class SocketResponseError extends Error {
87
+ }
80
88
  /**
81
89
  * Abstract class used to define a channel.
82
90
  *
@@ -121,7 +129,9 @@ interface ChannelBroadcaster {
121
129
  * }
122
130
  * ```
123
131
  */
124
- declare class BaseChannel<User = unknown, Events extends ChannelEventMap = ChannelEventMap, HttpContext = unknown> {
132
+ declare class BaseChannel<User = unknown, ServerEvents = unknown> {
133
+ /** Type-only server event declarations consumed by generated browser client types. */
134
+ readonly $serverEvents: ServerEvents;
125
135
  /**
126
136
  * URL-like channel pattern, for example: 'chat/:roomId'.
127
137
  */
@@ -133,12 +143,12 @@ declare class BaseChannel<User = unknown, Events extends ChannelEventMap = Chann
133
143
  /**
134
144
  * Middlewares to run before subscription.
135
145
  */
136
- static middlewares?: Middleware<any, any>[];
146
+ static middlewares?: Middleware<any>[];
137
147
  /**
138
148
  * Event handler map.
139
149
  * Ex: { 'chat:send': 'handleSend' }
140
150
  */
141
- protected handlers: ChannelHandlerMap<User, Events, HttpContext>;
151
+ protected handlers: ChannelHandlerMap<User>;
142
152
  /**
143
153
  * Injected socket service.
144
154
  */
@@ -162,58 +172,60 @@ declare class BaseChannel<User = unknown, Events extends ChannelEventMap = Chann
162
172
  /**
163
173
  * Emits to every channel member.
164
174
  */
165
- protected broadcast(event: string, data: unknown): void;
175
+ protected broadcast<K extends unknown extends ServerEvents ? string : keyof ServerEvents & string>(event: K, data: unknown extends ServerEvents ? unknown : ServerEvents[K & keyof ServerEvents]): void;
166
176
  /**
167
177
  * Emits to every channel member except one socket.
168
178
  */
169
- protected broadcastExcept(socketId: string, event: string, data: unknown): void;
179
+ protected broadcastExcept<K extends unknown extends ServerEvents ? string : keyof ServerEvents & string>(socketId: string, event: K, data: unknown extends ServerEvents ? unknown : ServerEvents[K & keyof ServerEvents]): void;
170
180
  /**
171
181
  * Runs the middleware chain.
172
182
  *
173
183
  * middleware[0] -> middleware[1] -> ... -> subscribe
174
184
  */
175
- $runMiddlewares(ctx: MiddlewareContext<User, HttpContext>): Promise<void>;
185
+ $runMiddlewares(ctx: MiddlewareContext<User>): Promise<void>;
176
186
  /**
177
187
  * Returns member information for presence.
178
188
  * Implement when options.presence = true.
179
189
  */
180
- getPresenceInfo?(socket: AuthenticatedSocket<User, HttpContext>): PresenceMember;
190
+ getPresenceInfo?(socket: AuthenticatedSocket<User>): PresenceInfo;
181
191
  /**
182
192
  * Hook called when a socket joins the channel.
183
193
  */
184
- onJoin?(socket: AuthenticatedSocket<User, HttpContext>, ...params: string[]): Promise<void>;
194
+ onJoin?(socket: AuthenticatedSocket<User>, ...params: string[]): Promise<void>;
185
195
  /**
186
196
  * Hook called when a socket leaves the channel.
187
197
  */
188
- onLeave?(socket: AuthenticatedSocket<User, HttpContext>, ...params: string[]): Promise<void>;
198
+ onLeave?(socket: AuthenticatedSocket<User>, ...params: string[]): Promise<void>;
189
199
  /**
190
200
  * Hook called when a message is received on the channel.
191
201
  * Used as fallback when no event handler matches.
192
202
  */
193
- onMessage?(socket: AuthenticatedSocket<User, HttpContext>, event: string, data: unknown): Promise<void>;
203
+ onMessage?(socket: AuthenticatedSocket<User>, event: string, data: unknown): Promise<void>;
194
204
  /**
195
205
  * Hook called when a member joins a presence channel.
196
206
  */
197
- onMemberJoin?(socket: AuthenticatedSocket<User, HttpContext>, member: PresenceMember, ...params: string[]): Promise<void>;
207
+ onMemberJoin?(socket: AuthenticatedSocket<User>, member: PresenceMember, ...params: string[]): Promise<void>;
198
208
  /**
199
209
  * Hook called when a member leaves a presence channel.
200
210
  */
201
- onMemberLeave?(socket: AuthenticatedSocket<User, HttpContext>, member: PresenceMember, ...params: string[]): Promise<void>;
211
+ onMemberLeave?(socket: AuthenticatedSocket<User>, member: PresenceMember, ...params: string[]): Promise<void>;
202
212
  /**
203
213
  * Dispatches a message to the matching handler.
204
214
  * Called by SocketService. Do not override.
205
215
  */
206
- $handleMessage(socket: AuthenticatedSocket<User, HttpContext>, event: string, data: unknown): Promise<unknown>;
216
+ $handleMessage(socket: AuthenticatedSocket<User>, event: string, data: unknown): Promise<unknown>;
207
217
  /**
208
218
  * Runs the generic join hook. ChannelSubscriptions owns subscription lifecycle.
209
219
  */
210
- $handleJoin(socket: AuthenticatedSocket<User, HttpContext>, ...params: string[]): Promise<void>;
220
+ $handleJoin(socket: AuthenticatedSocket<User>, ...params: string[]): Promise<void>;
211
221
  /**
212
222
  * Runs the generic leave hook. ChannelSubscriptions owns subscription lifecycle.
213
223
  */
214
- $handleLeave(socket: AuthenticatedSocket<User, HttpContext>, ...params: string[]): Promise<void>;
215
- $getPresenceInfo(socket: AuthenticatedSocket<User, HttpContext>): PresenceMember;
224
+ $handleLeave(socket: AuthenticatedSocket<User>, ...params: string[]): Promise<void>;
225
+ $getPresenceInfo(socket: AuthenticatedSocket<User>): PresenceInfo;
216
226
  }
227
+ /** Constructor for any BaseChannel specialization. */
228
+ type BaseChannelConstructor = typeof BaseChannel<any, any>;
217
229
 
218
230
  /**
219
231
  * Duration can be specified as milliseconds or as a human-readable string.
@@ -229,17 +241,37 @@ interface SocketTransportConfig {
229
241
  presenceTimeout?: Duration;
230
242
  }
231
243
 
232
- interface RawSocket<HttpContext = unknown> {
244
+ /**
245
+ * Types shared between the server and the client.
246
+ */
247
+ /**
248
+ * Message sent by the client to a channel.
249
+ */
250
+ interface ChannelMessage {
251
+ channel: string;
252
+ event: string;
253
+ data?: unknown;
254
+ }
255
+ /**
256
+ * Channel handler acknowledgement response.
257
+ */
258
+ interface ChannelAck<T = unknown> {
259
+ ok: boolean;
260
+ data?: T;
261
+ error?: string;
262
+ }
263
+
264
+ interface RawSocket {
233
265
  id: string;
234
266
  data: Record<string, unknown>;
235
267
  connection: WebSocket;
236
268
  request: IncomingMessage;
237
- httpContext?: HttpContext;
269
+ httpContext: HttpContext;
238
270
  }
239
271
  /**
240
272
  * Socket exposed to channels after the HTTP upgrade.
241
273
  */
242
- interface AuthenticatedSocket<User = unknown, HttpContext = unknown> {
274
+ interface AuthenticatedSocket<User = unknown> {
243
275
  /**
244
276
  * Unique socket ID.
245
277
  */
@@ -248,10 +280,6 @@ interface AuthenticatedSocket<User = unknown, HttpContext = unknown> {
248
280
  * Authenticated user resolved during the HTTP upgrade.
249
281
  */
250
282
  user: User | undefined;
251
- /**
252
- * Channels this socket is subscribed to.
253
- */
254
- channels: Set<string>;
255
283
  /**
256
284
  * Emits an event to this socket.
257
285
  */
@@ -271,14 +299,17 @@ interface AuthenticatedSocket<User = unknown, HttpContext = unknown> {
271
299
  /**
272
300
  * Raw WebSocket connection metadata.
273
301
  */
274
- raw: RawSocket<HttpContext>;
302
+ raw: RawSocket;
275
303
  }
276
- interface SocketUpgradeContext<HttpContext = unknown> {
277
- httpContext?: HttpContext;
304
+ /**
305
+ * Short-lived context for preparing and authenticating a WebSocket upgrade.
306
+ * Socket-lifetime mutable state belongs in AuthenticatedSocket.raw.data.
307
+ */
308
+ interface SocketUpgradeContext {
309
+ httpContext: HttpContext;
278
310
  }
279
311
  type SocketAuthenticationResult<User = unknown> = User | false | null;
280
- type SocketAuthenticationHandler<User = unknown, HttpContext = unknown> = (ctx: SocketUpgradeContext<HttpContext>) => SocketAuthenticationResult<User> | Promise<SocketAuthenticationResult<User>>;
281
- type SocketHttpContextFactory<HttpContext = unknown> = (request: IncomingMessage) => HttpContext | Promise<HttpContext>;
312
+ type SocketAuthenticationHandler<User = unknown> = (ctx: SocketUpgradeContext) => SocketAuthenticationResult<User> | Promise<SocketAuthenticationResult<User>>;
282
313
  /**
283
314
  * AdonisJS HTTP middleware executed for the WebSocket upgrade request.
284
315
  */
@@ -289,7 +320,7 @@ type SocketHttpMiddleware = (() => Promise<{
289
320
  * Result of matching a channel.
290
321
  */
291
322
  interface ChannelMatch {
292
- channel: typeof BaseChannel;
323
+ channel: BaseChannelConstructor;
293
324
  pattern: string;
294
325
  params: Record<string, string>;
295
326
  }
@@ -300,18 +331,25 @@ interface ChannelOptions {
300
331
  presence?: boolean;
301
332
  }
302
333
  /**
303
- * Presence member information.
334
+ * Identity and channel-specific data returned for a presence member.
335
+ */
336
+ interface PresenceInfo {
337
+ id: string;
338
+ data?: Record<string, unknown>;
339
+ }
340
+ /**
341
+ * Presence member exposed to snapshots and channel hooks.
304
342
  */
305
343
  interface PresenceMember {
306
344
  id: string;
307
- name: string;
345
+ joinedAt?: never;
308
346
  [key: string]: unknown;
309
347
  }
310
348
  /**
311
349
  * Context passed to middlewares.
312
350
  */
313
- interface MiddlewareContext<User = unknown, HttpContext = unknown> {
314
- socket: AuthenticatedSocket<User, HttpContext>;
351
+ interface MiddlewareContext<User = unknown> {
352
+ socket: AuthenticatedSocket<User>;
315
353
  channel: string;
316
354
  params: Record<string, string>;
317
355
  presenceData?: Record<string, unknown> | PresenceData;
@@ -320,35 +358,34 @@ interface MiddlewareContext<User = unknown, HttpContext = unknown> {
320
358
  /**
321
359
  * Middleware function.
322
360
  */
323
- type MiddlewareFn<User = unknown, HttpContext = unknown> = (ctx: MiddlewareContext<User, HttpContext>, next: () => Promise<void>) => Promise<void>;
361
+ type MiddlewareFn<User = unknown> = (ctx: MiddlewareContext<User>, next: () => Promise<void>) => Promise<void>;
324
362
  /**
325
363
  * Middleware class.
326
364
  */
327
- interface MiddlewareClass<User = unknown, HttpContext = unknown> {
328
- handle: MiddlewareFn<User, HttpContext>;
365
+ interface MiddlewareClass<User = unknown> {
366
+ handle: MiddlewareFn<User>;
329
367
  }
330
368
  /**
331
369
  * Middleware, either a function or a class.
332
370
  */
333
- type Middleware<User = unknown, HttpContext = unknown> = MiddlewareFn<User, HttpContext> | MiddlewareClass<User, HttpContext>;
334
- /**
335
- * Event handler map.
336
- */
337
- type ChannelEventMap = Record<string, unknown>;
338
- type ChannelHandlerFn<User = unknown, Events extends ChannelEventMap = ChannelEventMap, HttpContext = unknown, K extends keyof Events = keyof Events> = (socket: AuthenticatedSocket<User, HttpContext>, data: Events[K]) => unknown | Promise<unknown>;
339
- type ChannelHandlerMap<User = unknown, Events extends ChannelEventMap = ChannelEventMap, HttpContext = unknown> = {
340
- [K in keyof Events]?: ChannelHandlerFn<User, Events, HttpContext, K>;
341
- };
371
+ type Middleware<User = unknown> = MiddlewareFn<User> | MiddlewareClass<User>;
372
+ /** Extracts the server-to-client event map declared by a channel instance. */
373
+ type ChannelServerEventsOf<T> = T extends {
374
+ readonly $serverEvents: infer Events;
375
+ } ? Events : unknown;
376
+ type ChannelHandlerFn<User = unknown> = (socket: AuthenticatedSocket<User>, data: any) => unknown | Promise<unknown>;
377
+ type ChannelHandlerMap<User = unknown> = Record<string, ChannelHandlerFn<User>>;
342
378
  /**
343
379
  * Package configuration.
344
380
  */
345
- interface SocketConfig<User = unknown, HttpContext = unknown> {
346
- channels?: {
347
- patterns?: string[];
348
- };
381
+ interface SocketConfig<User = unknown> {
349
382
  websocket?: {
350
383
  path?: string;
351
- createContext?: SocketHttpContextFactory<HttpContext>;
384
+ /**
385
+ * Additional browser origins allowed to open a WebSocket connection.
386
+ * Same-origin requests and clients without an Origin header are allowed by default.
387
+ */
388
+ allowedOrigins?: string[];
352
389
  /**
353
390
  * HTTP middleware executed only for the WebSocket upgrade request.
354
391
  *
@@ -356,11 +393,7 @@ interface SocketConfig<User = unknown, HttpContext = unknown> {
356
393
  * websocket.authenticate. Channel middleware should be declared on channel classes.
357
394
  */
358
395
  middleware?: SocketHttpMiddleware[];
359
- /**
360
- * @internal
361
- */
362
- createContextOnUpgrade?: boolean;
363
- authenticate?: SocketAuthenticationHandler<User, HttpContext>;
396
+ authenticate?: SocketAuthenticationHandler<User>;
364
397
  /**
365
398
  * Sends a WebSocket ping every configured duration.
366
399
  *
@@ -393,6 +426,18 @@ interface SocketConfig<User = unknown, HttpContext = unknown> {
393
426
  * Maximum buffered outbound WebSocket bytes accepted before the service closes the socket.
394
427
  */
395
428
  maxBufferedAmount?: number;
429
+ /**
430
+ * Maximum serialized size of one outbound WebSocket protocol message in bytes.
431
+ */
432
+ maxOutboundPayload?: number;
433
+ /**
434
+ * Maximum number of active channel subscriptions retained by one socket.
435
+ */
436
+ maxSubscriptionsPerSocket?: number;
437
+ /**
438
+ * Maximum accepted channel name length in characters.
439
+ */
440
+ maxChannelNameLength?: number;
396
441
  };
397
442
  /**
398
443
  * Optional transport used to synchronize broadcasts between SocketService instances.
@@ -410,22 +455,22 @@ interface SocketHealthSnapshot {
410
455
  /**
411
456
  * Events emitted by the service.
412
457
  */
413
- interface SocketEvents<User = unknown, HttpContext = unknown> {
458
+ interface SocketEvents<User = unknown> {
414
459
  connect: {
415
- socket: AuthenticatedSocket<User, HttpContext>;
460
+ socket: AuthenticatedSocket<User>;
416
461
  };
417
462
  disconnect: {
418
- socket: AuthenticatedSocket<User, HttpContext>;
463
+ socket: AuthenticatedSocket<User>;
419
464
  reason: string;
420
465
  };
421
466
  subscribe: {
422
- socket: AuthenticatedSocket<User, HttpContext>;
467
+ socket: AuthenticatedSocket<User>;
423
468
  channel: string;
424
469
  };
425
470
  unsubscribe: {
426
- socket: AuthenticatedSocket<User, HttpContext>;
471
+ socket: AuthenticatedSocket<User>;
427
472
  channel: string;
428
473
  };
429
474
  }
430
475
 
431
- export { type AuthenticatedSocket as A, BaseChannel as B, type ChannelEventMap as C, type Duration as D, type Middleware as M, PresenceManager as P, type RawSocket as R, type SocketConfig as S, type SocketAuthenticationHandler as a, type ChannelHandlerFn as b, type ChannelHandlerMap as c, type ChannelMatch as d, type ChannelOptions as e, type MiddlewareClass as f, type MiddlewareContext as g, type MiddlewareFn as h, type PresenceMember as i, type SocketAuthenticationResult as j, type SocketEvents as k, type SocketHealthSnapshot as l, type SocketHttpContextFactory as m, type SocketHttpMiddleware as n, type SocketServiceStatus as o, type SocketUpgradeContext as p, type PresenceData as q };
476
+ export { type AuthenticatedSocket as A, BaseChannel as B, type ChannelHandlerMap as C, type Duration as D, type Middleware as M, PresenceManager as P, type RawSocket as R, type SocketConfig as S, type ChannelServerEventsOf as a, type ChannelAck as b, type ChannelMessage as c, type SocketAuthenticationHandler as d, type BaseChannelConstructor as e, type ChannelHandlerFn as f, type ChannelMatch as g, type ChannelOptions as h, type MiddlewareClass as i, type MiddlewareContext as j, type MiddlewareFn as k, type PresenceInfo as l, type PresenceMember as m, type SocketAuthenticationResult as n, type SocketEvents as o, type SocketHealthSnapshot as p, type SocketHttpMiddleware as q, SocketResponseError as r, type SocketServiceStatus as s, type SocketUpgradeContext as t, type PresenceData as u };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rlanz/socket",
3
- "version": "0.0.1-4",
3
+ "version": "0.0.1-5",
4
4
  "description": "WebSocket integration for AdonisJS",
5
5
  "type": "module",
6
6
  "main": "./build/index.js",
@@ -15,6 +15,7 @@
15
15
  "exports": {
16
16
  ".": "./build/index.js",
17
17
  "./provider": "./build/providers/socket_provider.js",
18
+ "./assembler_hook": "./build/src/assembler_hook.js",
18
19
  "./services/main": "./build/services/socket.js",
19
20
  "./decorators": "./build/src/decorators.js",
20
21
  "./health_check": "./build/src/health_check.js",
@@ -23,30 +24,35 @@
23
24
  "./types": "./build/src/types.js",
24
25
  "./types/tracing_channels": "./build/src/types/tracing_channels.js",
25
26
  "./client": "./build/src/client/index.js",
26
- "./client/types": "./build/src/client/types.js"
27
+ "./client/types": "./build/src/client/types.js",
28
+ "./client/react": "./build/src/client/react.js",
29
+ "./client/vue": "./build/src/client/vue.js",
30
+ "./client/svelte": "./build/src/client/svelte.js"
27
31
  },
28
32
  "scripts": {
29
33
  "build": "npm run compile",
30
34
  "clean": "del-cli build",
31
35
  "compile": "npm run clean && tsup-node",
36
+ "check:package": "node --import=@poppinss/ts-exec bin/check_package.ts",
32
37
  "lint": "oxlint",
33
38
  "lint:fix": "oxlint --fix",
34
39
  "format": "oxfmt --check .",
35
40
  "format:fix": "oxfmt --write .",
36
- "prepublishOnly": "npm run build",
41
+ "prepublishOnly": "npm run build && npm run check:package",
37
42
  "release": "release-it",
38
43
  "test": "node --import=@poppinss/ts-exec --enable-source-maps bin/test.ts",
39
44
  "typecheck": "tsc --noEmit",
40
45
  "version": "npm run build"
41
46
  },
42
47
  "dependencies": {
43
- "@boringnode/bus": "^0.9.0",
48
+ "@boringnode/bus": "^0.9.1",
44
49
  "@lukeed/ms": "^2.0.2",
45
50
  "@poppinss/matchit": "^3.2.0",
46
51
  "emittery": "^1.2.0",
47
52
  "ws": "^8.21.0"
48
53
  },
49
54
  "devDependencies": {
55
+ "@adonisjs/assembler": "^8.0.0",
50
56
  "@adonisjs/core": "^7.0.1",
51
57
  "@adonisjs/tsconfig": "^2.0.0",
52
58
  "@japa/assert": "^4.2.0",
@@ -58,21 +64,38 @@
58
64
  "@opentelemetry/sdk-metrics": "^2.7.1",
59
65
  "@opentelemetry/sdk-trace-base": "^2.7.1",
60
66
  "@poppinss/ts-exec": "^1.4.4",
67
+ "@types/node": "^24.0.0",
68
+ "@types/react": "^19.1.9",
69
+ "@types/react-test-renderer": "^19.1.0",
70
+ "@types/scheduler": "^0",
61
71
  "@types/ws": "^8.18.1",
62
72
  "del-cli": "^7.0.0",
63
73
  "oxfmt": "^0.38.0",
64
74
  "oxlint": "^1.53.0",
75
+ "react": "^19.1.1",
76
+ "react-test-renderer": "^19.1.1",
65
77
  "release-it": "^19.2.4",
78
+ "scheduler": "^0.27.0",
79
+ "svelte": "^5.38.0",
66
80
  "tsup": "^8.5.1",
67
- "typescript": "^5.9.3"
81
+ "typescript": "^5.9.3",
82
+ "vue": "^3.5.18"
68
83
  },
69
84
  "peerDependencies": {
85
+ "@adonisjs/assembler": "^8.0.0",
70
86
  "@adonisjs/core": "^7.0.1",
71
87
  "@opentelemetry/api": "^1.9.0",
72
88
  "@opentelemetry/core": "^1.30.0 || ^2.0.0",
73
- "@opentelemetry/instrumentation": "^0.200.0"
89
+ "@opentelemetry/instrumentation": "^0.200.0",
90
+ "react": "^18.0.0 || ^19.0.0",
91
+ "svelte": "^4.0.0 || ^5.0.0",
92
+ "typescript": "^5.9.0 || ^6.0.0",
93
+ "vue": "^3.3.0"
74
94
  },
75
95
  "peerDependenciesMeta": {
96
+ "@adonisjs/assembler": {
97
+ "optional": true
98
+ },
76
99
  "@opentelemetry/api": {
77
100
  "optional": true
78
101
  },
@@ -81,6 +104,18 @@
81
104
  },
82
105
  "@opentelemetry/instrumentation": {
83
106
  "optional": true
107
+ },
108
+ "react": {
109
+ "optional": true
110
+ },
111
+ "svelte": {
112
+ "optional": true
113
+ },
114
+ "typescript": {
115
+ "optional": true
116
+ },
117
+ "vue": {
118
+ "optional": true
84
119
  }
85
120
  },
86
121
  "keywords": [
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/tracing_channels.ts"],"sourcesContent":["import diagnostics_channel from 'node:diagnostics_channel'\nimport type {\n SocketBroadcastMessage,\n SocketChannelMessage,\n SocketConnectMessage,\n SocketDisconnectMessage,\n SocketSubscribeMessage,\n SocketUnsubscribeMessage,\n} from './types/tracing_channels.js'\n\nexport const connectChannel = diagnostics_channel.tracingChannel<\n 'rlanz.socket.connect',\n SocketConnectMessage\n>('rlanz.socket.connect')\n\nexport const disconnectChannel = diagnostics_channel.tracingChannel<\n 'rlanz.socket.disconnect',\n SocketDisconnectMessage\n>('rlanz.socket.disconnect')\n\nexport const subscribeChannel = diagnostics_channel.tracingChannel<\n 'rlanz.socket.subscribe',\n SocketSubscribeMessage\n>('rlanz.socket.subscribe')\n\nexport const unsubscribeChannel = diagnostics_channel.tracingChannel<\n 'rlanz.socket.unsubscribe',\n SocketUnsubscribeMessage\n>('rlanz.socket.unsubscribe')\n\nexport const channelMessageChannel = diagnostics_channel.tracingChannel<\n 'rlanz.socket.message',\n SocketChannelMessage\n>('rlanz.socket.message')\n\nexport const broadcastChannel = diagnostics_channel.tracingChannel<\n 'rlanz.socket.broadcast',\n SocketBroadcastMessage\n>('rlanz.socket.broadcast')\n"],"mappings":";AAAA,OAAO,yBAAyB;AAUzB,IAAM,iBAAiB,oBAAoB,eAGhD,sBAAsB;AAEjB,IAAM,oBAAoB,oBAAoB,eAGnD,yBAAyB;AAEpB,IAAM,mBAAmB,oBAAoB,eAGlD,wBAAwB;AAEnB,IAAM,qBAAqB,oBAAoB,eAGpD,0BAA0B;AAErB,IAAM,wBAAwB,oBAAoB,eAGvD,sBAAsB;AAEjB,IAAM,mBAAmB,oBAAoB,eAGlD,wBAAwB;","names":[]}