@principal-ai/control-tower-core 0.1.24 → 0.2.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 (117) hide show
  1. package/dist/abstractions/AuthAdapter.d.ts +1 -1
  2. package/dist/abstractions/AuthAdapter.d.ts.map +1 -1
  3. package/dist/abstractions/DefaultLockManager.d.ts +2 -2
  4. package/dist/abstractions/DefaultLockManager.d.ts.map +1 -1
  5. package/dist/abstractions/DefaultLockManager.js +7 -8
  6. package/dist/abstractions/DefaultPresenceManager.d.ts +4 -4
  7. package/dist/abstractions/DefaultPresenceManager.d.ts.map +1 -1
  8. package/dist/abstractions/DefaultPresenceManager.js +25 -25
  9. package/dist/abstractions/DefaultRoomManager.d.ts +3 -3
  10. package/dist/abstractions/DefaultRoomManager.d.ts.map +1 -1
  11. package/dist/abstractions/DefaultRoomManager.js +6 -4
  12. package/dist/abstractions/EventEmitter.d.ts.map +1 -1
  13. package/dist/abstractions/LockManager.d.ts +1 -1
  14. package/dist/abstractions/LockManager.d.ts.map +1 -1
  15. package/dist/abstractions/LockManager.js +1 -1
  16. package/dist/abstractions/PresenceExtension.d.ts +2 -2
  17. package/dist/abstractions/PresenceExtension.d.ts.map +1 -1
  18. package/dist/abstractions/PresenceManager.d.ts +1 -1
  19. package/dist/abstractions/PresenceManager.d.ts.map +1 -1
  20. package/dist/abstractions/PresenceManager.js +5 -5
  21. package/dist/abstractions/RoomManager.d.ts +2 -2
  22. package/dist/abstractions/RoomManager.d.ts.map +1 -1
  23. package/dist/abstractions/StorageAdapter.d.ts +4 -4
  24. package/dist/abstractions/StorageAdapter.d.ts.map +1 -1
  25. package/dist/abstractions/TransportAdapter.d.ts +4 -4
  26. package/dist/abstractions/TransportAdapter.d.ts.map +1 -1
  27. package/dist/abstractions/index.d.ts +11 -11
  28. package/dist/abstractions/index.d.ts.map +1 -1
  29. package/dist/abstractions/index.js +9 -9
  30. package/dist/adapters/mock/MockAuthAdapter.d.ts +2 -2
  31. package/dist/adapters/mock/MockAuthAdapter.d.ts.map +1 -1
  32. package/dist/adapters/mock/MockAuthAdapter.js +13 -11
  33. package/dist/adapters/mock/MockRTCDataChannel.d.ts +83 -0
  34. package/dist/adapters/mock/MockRTCDataChannel.d.ts.map +1 -0
  35. package/dist/adapters/mock/MockRTCDataChannel.js +146 -0
  36. package/dist/adapters/mock/MockRTCPeerConnection.d.ts +168 -0
  37. package/dist/adapters/mock/MockRTCPeerConnection.d.ts.map +1 -0
  38. package/dist/adapters/mock/MockRTCPeerConnection.js +449 -0
  39. package/dist/adapters/mock/MockStorageAdapter.d.ts +1 -1
  40. package/dist/adapters/mock/MockStorageAdapter.d.ts.map +1 -1
  41. package/dist/adapters/mock/MockStorageAdapter.js +18 -18
  42. package/dist/adapters/mock/MockTransportAdapter.d.ts +2 -2
  43. package/dist/adapters/mock/MockTransportAdapter.d.ts.map +1 -1
  44. package/dist/adapters/mock/MockTransportAdapter.js +38 -38
  45. package/dist/adapters/mock/index.d.ts +5 -3
  46. package/dist/adapters/mock/index.d.ts.map +1 -1
  47. package/dist/adapters/mock/index.js +10 -5
  48. package/dist/adapters/webrtc/WebRTCSignalingAdapter.d.ts +135 -0
  49. package/dist/adapters/webrtc/WebRTCSignalingAdapter.d.ts.map +1 -0
  50. package/dist/adapters/webrtc/WebRTCSignalingAdapter.js +368 -0
  51. package/dist/adapters/webrtc/index.d.ts +2 -0
  52. package/dist/adapters/webrtc/index.d.ts.map +1 -0
  53. package/dist/adapters/webrtc/index.js +5 -0
  54. package/dist/adapters/websocket/BrowserWebSocketTransportAdapter.d.ts +75 -0
  55. package/dist/adapters/websocket/BrowserWebSocketTransportAdapter.d.ts.map +1 -0
  56. package/dist/adapters/websocket/BrowserWebSocketTransportAdapter.js +231 -0
  57. package/dist/adapters/websocket/WebSocketClientTransportAdapter.d.ts +3 -3
  58. package/dist/adapters/websocket/WebSocketClientTransportAdapter.d.ts.map +1 -1
  59. package/dist/adapters/websocket/WebSocketClientTransportAdapter.js +38 -38
  60. package/dist/adapters/websocket/WebSocketServerTransportAdapter.d.ts +7 -7
  61. package/dist/adapters/websocket/WebSocketServerTransportAdapter.d.ts.map +1 -1
  62. package/dist/adapters/websocket/WebSocketServerTransportAdapter.js +94 -91
  63. package/dist/adapters/websocket/browser.d.ts +2 -0
  64. package/dist/adapters/websocket/browser.d.ts.map +1 -0
  65. package/dist/adapters/websocket/browser.js +6 -0
  66. package/dist/adapters/websocket/index.d.ts +3 -2
  67. package/dist/adapters/websocket/index.d.ts.map +1 -1
  68. package/dist/adapters/websocket/index.js +7 -3
  69. package/dist/adapters/websocket/node.d.ts +3 -0
  70. package/dist/adapters/websocket/node.d.ts.map +1 -0
  71. package/dist/adapters/websocket/node.js +8 -0
  72. package/dist/client/BaseClient.d.ts +6 -6
  73. package/dist/client/BaseClient.d.ts.map +1 -1
  74. package/dist/client/BaseClient.js +86 -72
  75. package/dist/client/ClientBuilder.d.ts +5 -5
  76. package/dist/client/ClientBuilder.d.ts.map +1 -1
  77. package/dist/client/ClientBuilder.js +3 -3
  78. package/dist/client/PresenceClient.d.ts +4 -4
  79. package/dist/client/PresenceClient.d.ts.map +1 -1
  80. package/dist/client/PresenceClient.js +30 -30
  81. package/dist/client/index.d.ts +3 -3
  82. package/dist/client/index.d.ts.map +1 -1
  83. package/dist/index.d.ts +7 -6
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +27 -19
  86. package/dist/index.js.map +27 -23
  87. package/dist/index.mjs +1590 -558
  88. package/dist/index.mjs.map +27 -23
  89. package/dist/server/BaseServer.d.ts +13 -13
  90. package/dist/server/BaseServer.d.ts.map +1 -1
  91. package/dist/server/BaseServer.js +224 -143
  92. package/dist/server/ExperimentalAPI.d.ts +7 -7
  93. package/dist/server/ExperimentalAPI.d.ts.map +1 -1
  94. package/dist/server/ExperimentalAPI.js +22 -22
  95. package/dist/server/ServerBuilder.d.ts +11 -11
  96. package/dist/server/ServerBuilder.d.ts.map +1 -1
  97. package/dist/server/ServerBuilder.js +10 -10
  98. package/dist/server/index.d.ts +3 -3
  99. package/dist/server/index.d.ts.map +1 -1
  100. package/dist/server/index.js +3 -3
  101. package/dist/types/auth.d.ts.map +1 -1
  102. package/dist/types/events.d.ts +10 -10
  103. package/dist/types/events.d.ts.map +1 -1
  104. package/dist/types/experimental.d.ts +2 -2
  105. package/dist/types/experimental.d.ts.map +1 -1
  106. package/dist/types/experimental.js +1 -1
  107. package/dist/types/index.d.ts +7 -7
  108. package/dist/types/index.d.ts.map +1 -1
  109. package/dist/types/index.js +2 -2
  110. package/dist/types/lock.d.ts +2 -2
  111. package/dist/types/lock.d.ts.map +1 -1
  112. package/dist/types/presence.d.ts +3 -3
  113. package/dist/types/presence.d.ts.map +1 -1
  114. package/dist/types/room.d.ts +4 -4
  115. package/dist/types/room.d.ts.map +1 -1
  116. package/dist/types/room.js +2 -2
  117. package/package.json +15 -7
@@ -4,18 +4,18 @@ exports.WebSocketServerTransportAdapter = void 0;
4
4
  const ws_1 = require("ws");
5
5
  class WebSocketServerTransportAdapter {
6
6
  constructor(config) {
7
- this.state = 'disconnected';
7
+ this.state = "disconnected";
8
8
  this.messageHandlers = new Set();
9
9
  this.errorHandlers = new Set();
10
10
  this.closeHandlers = new Set();
11
11
  // Client management
12
12
  this.clients = new Map();
13
- this.mode = 'standalone';
13
+ this.mode = "standalone";
14
14
  this.config = {
15
15
  authTimeout: config?.authTimeout ?? 5000,
16
16
  closeOnAuthFailure: config?.closeOnAuthFailure ?? false,
17
17
  requireAuth: config?.requireAuth ?? false,
18
- ...config
18
+ ...config,
19
19
  };
20
20
  }
21
21
  // Set the auth adapter
@@ -33,83 +33,83 @@ class WebSocketServerTransportAdapter {
33
33
  }
34
34
  // Standalone mode implementation
35
35
  async connect(url, _options) {
36
- if (this.state === 'connected' || this.state === 'connecting') {
37
- throw new Error('Already connected or connecting');
36
+ if (this.state === "connected" || this.state === "connecting") {
37
+ throw new Error("Already connected or connecting");
38
38
  }
39
- this.state = 'connecting';
39
+ this.state = "connecting";
40
40
  this.serverUrl = url;
41
- this.mode = 'standalone';
41
+ this.mode = "standalone";
42
42
  try {
43
43
  // Extract port from URL
44
44
  const urlObj = new URL(url);
45
- const port = parseInt(urlObj.port) || (urlObj.protocol === 'wss:' ? 443 : 80);
45
+ const port = parseInt(urlObj.port) || (urlObj.protocol === "wss:" ? 443 : 80);
46
46
  // Create WebSocket server
47
47
  this.wss = new ws_1.WebSocketServer({ port });
48
- this.wss.on('connection', (ws, req) => {
48
+ this.wss.on("connection", (ws, req) => {
49
49
  this.handleConnection(ws, req);
50
50
  });
51
- this.wss.on('error', (error) => {
52
- this.errorHandlers.forEach(handler => handler(error));
51
+ this.wss.on("error", (error) => {
52
+ this.errorHandlers.forEach((handler) => handler(error));
53
53
  });
54
- this.wss.on('close', () => {
55
- this.state = 'disconnected';
56
- this.closeHandlers.forEach(handler => handler(1000, 'Server closed'));
54
+ this.wss.on("close", () => {
55
+ this.state = "disconnected";
56
+ this.closeHandlers.forEach((handler) => handler(1000, "Server closed"));
57
57
  });
58
- this.state = 'connected';
58
+ this.state = "connected";
59
59
  }
60
60
  catch (error) {
61
- this.state = 'disconnected';
61
+ this.state = "disconnected";
62
62
  throw error;
63
63
  }
64
64
  }
65
65
  // Integration mode implementation
66
- async attach(server, path = '/ws') {
67
- if (this.state === 'connected' || this.state === 'connecting') {
68
- throw new Error('Already connected or connecting');
66
+ async attach(server, path = "/ws") {
67
+ if (this.state === "connected" || this.state === "connecting") {
68
+ throw new Error("Already connected or connecting");
69
69
  }
70
- this.state = 'connecting';
70
+ this.state = "connecting";
71
71
  this.attachedServer = server;
72
72
  this.webSocketPath = path;
73
- this.mode = 'integration';
73
+ this.mode = "integration";
74
74
  try {
75
75
  // Create WebSocket server attached to the existing HTTP server
76
76
  this.wss = new ws_1.WebSocketServer({
77
77
  server,
78
78
  path,
79
- perMessageDeflate: false
79
+ perMessageDeflate: false,
80
80
  });
81
- this.wss.on('connection', (ws, req) => {
81
+ this.wss.on("connection", (ws, req) => {
82
82
  this.handleConnection(ws, req);
83
83
  });
84
- this.wss.on('error', (error) => {
85
- this.errorHandlers.forEach(handler => handler(error));
84
+ this.wss.on("error", (error) => {
85
+ this.errorHandlers.forEach((handler) => handler(error));
86
86
  });
87
- this.state = 'connected';
87
+ this.state = "connected";
88
88
  }
89
89
  catch (error) {
90
- this.state = 'disconnected';
90
+ this.state = "disconnected";
91
91
  throw error;
92
92
  }
93
93
  }
94
94
  async attachToWebSocketServer(wss) {
95
- if (this.state === 'connected' || this.state === 'connecting') {
96
- throw new Error('Already connected or connecting');
95
+ if (this.state === "connected" || this.state === "connecting") {
96
+ throw new Error("Already connected or connecting");
97
97
  }
98
- this.state = 'connecting';
98
+ this.state = "connecting";
99
99
  this.attachedWss = wss;
100
- this.mode = 'integration';
100
+ this.mode = "integration";
101
101
  try {
102
102
  this.wss = wss;
103
- this.wss.on('connection', (ws, req) => {
103
+ this.wss.on("connection", (ws, req) => {
104
104
  this.handleConnection(ws, req);
105
105
  });
106
- this.wss.on('error', (error) => {
107
- this.errorHandlers.forEach(handler => handler(error));
106
+ this.wss.on("error", (error) => {
107
+ this.errorHandlers.forEach((handler) => handler(error));
108
108
  });
109
- this.state = 'connected';
109
+ this.state = "connected";
110
110
  }
111
111
  catch (error) {
112
- this.state = 'disconnected';
112
+ this.state = "disconnected";
113
113
  throw error;
114
114
  }
115
115
  }
@@ -141,17 +141,17 @@ class WebSocketServerTransportAdapter {
141
141
  authenticated,
142
142
  userId,
143
143
  metadata,
144
- connectedAt: Date.now()
144
+ connectedAt: Date.now(),
145
145
  };
146
146
  this.clients.set(clientId, client);
147
147
  // Step 3: Set up message handling
148
- ws.on('message', (data) => {
148
+ ws.on("message", (data) => {
149
149
  this.handleClientMessage(clientId, data);
150
150
  });
151
- ws.on('error', (error) => {
152
- this.errorHandlers.forEach(handler => handler(error));
151
+ ws.on("error", (error) => {
152
+ this.errorHandlers.forEach((handler) => handler(error));
153
153
  });
154
- ws.on('close', (_code, _reason) => {
154
+ ws.on("close", (_code, _reason) => {
155
155
  // Clear auth timeout if exists
156
156
  if (client.authTimeout) {
157
157
  clearTimeout(client.authTimeout);
@@ -162,7 +162,7 @@ class WebSocketServerTransportAdapter {
162
162
  if (!authenticated && this.config.requireAuth && this.authAdapter) {
163
163
  client.authTimeout = setTimeout(() => {
164
164
  if (!client.authenticated) {
165
- ws.close(1008, 'Authentication timeout');
165
+ ws.close(1008, "Authentication timeout");
166
166
  this.clients.delete(clientId);
167
167
  }
168
168
  }, this.config.authTimeout);
@@ -170,16 +170,16 @@ class WebSocketServerTransportAdapter {
170
170
  // Step 5: Notify about connection (with auth status)
171
171
  const connectionMessage = {
172
172
  id: this.generateId(),
173
- type: 'connection',
173
+ type: "connection",
174
174
  payload: {
175
175
  clientId,
176
176
  authenticated,
177
177
  userId: client.userId,
178
- metadata: client.metadata
178
+ metadata: client.metadata,
179
179
  },
180
- timestamp: Date.now()
180
+ timestamp: Date.now(),
181
181
  };
182
- this.messageHandlers.forEach(handler => handler(connectionMessage));
182
+ this.messageHandlers.forEach((handler) => handler(connectionMessage));
183
183
  }
184
184
  async handleClientMessage(clientId, data) {
185
185
  const client = this.clients.get(clientId);
@@ -188,7 +188,9 @@ class WebSocketServerTransportAdapter {
188
188
  try {
189
189
  const message = JSON.parse(data.toString());
190
190
  // Special handling for authentication messages
191
- if (message.type === 'authenticate' && !client.authenticated && this.authAdapter) {
191
+ if (message.type === "authenticate" &&
192
+ !client.authenticated &&
193
+ this.authAdapter) {
192
194
  await this.handleAuthMessage(client, message);
193
195
  return;
194
196
  }
@@ -196,9 +198,9 @@ class WebSocketServerTransportAdapter {
196
198
  if (this.config.requireAuth && !client.authenticated) {
197
199
  this.sendToClient(client, {
198
200
  id: this.generateId(),
199
- type: 'error',
200
- payload: { error: 'Authentication required' },
201
- timestamp: Date.now()
201
+ type: "error",
202
+ payload: { error: "Authentication required" },
203
+ timestamp: Date.now(),
202
204
  });
203
205
  return;
204
206
  }
@@ -207,33 +209,33 @@ class WebSocketServerTransportAdapter {
207
209
  ...message,
208
210
  payload: {
209
211
  ...message.payload,
210
- clientId
211
- }
212
+ clientId,
213
+ },
212
214
  };
213
- this.messageHandlers.forEach(handler => handler(enrichedMessage));
215
+ this.messageHandlers.forEach((handler) => handler(enrichedMessage));
214
216
  }
215
217
  catch (error) {
216
- this.errorHandlers.forEach(handler => handler(error));
218
+ this.errorHandlers.forEach((handler) => handler(error));
217
219
  }
218
220
  }
219
221
  async handleAuthMessage(client, message) {
220
222
  if (!this.authAdapter) {
221
223
  this.sendToClient(client, {
222
224
  id: this.generateId(),
223
- type: 'auth_result',
224
- payload: { success: false, error: 'No auth adapter configured' },
225
- timestamp: Date.now()
225
+ type: "auth_result",
226
+ payload: { success: false, error: "No auth adapter configured" },
227
+ timestamp: Date.now(),
226
228
  });
227
229
  return;
228
230
  }
229
231
  const payload = message.payload;
230
232
  // Token-based authentication only
231
- if (!payload.token || typeof payload.token !== 'string') {
233
+ if (!payload.token || typeof payload.token !== "string") {
232
234
  this.sendToClient(client, {
233
235
  id: this.generateId(),
234
- type: 'auth_result',
235
- payload: { success: false, error: 'Token required for authentication' },
236
- timestamp: Date.now()
236
+ type: "auth_result",
237
+ payload: { success: false, error: "Token required for authentication" },
238
+ timestamp: Date.now(),
237
239
  });
238
240
  return;
239
241
  }
@@ -251,45 +253,45 @@ class WebSocketServerTransportAdapter {
251
253
  // Send success response
252
254
  this.sendToClient(client, {
253
255
  id: this.generateId(),
254
- type: 'auth_result',
256
+ type: "auth_result",
255
257
  payload: {
256
258
  success: true,
257
- userId: client.userId
259
+ userId: client.userId,
258
260
  },
259
- timestamp: Date.now()
261
+ timestamp: Date.now(),
260
262
  });
261
263
  // Notify handlers about authentication
262
264
  const authMessage = {
263
265
  id: this.generateId(),
264
- type: 'client_authenticated',
266
+ type: "client_authenticated",
265
267
  payload: {
266
268
  clientId: client.id,
267
269
  userId: client.userId,
268
- metadata: client.metadata
270
+ metadata: client.metadata,
269
271
  },
270
- timestamp: Date.now()
272
+ timestamp: Date.now(),
271
273
  };
272
- this.messageHandlers.forEach(handler => handler(authMessage));
274
+ this.messageHandlers.forEach((handler) => handler(authMessage));
273
275
  }
274
276
  catch (error) {
275
277
  this.sendToClient(client, {
276
278
  id: this.generateId(),
277
- type: 'auth_result',
279
+ type: "auth_result",
278
280
  payload: {
279
281
  success: false,
280
- error: error.message
282
+ error: error.message,
281
283
  },
282
- timestamp: Date.now()
284
+ timestamp: Date.now(),
283
285
  });
284
286
  // Optionally close connection on auth failure
285
287
  if (this.config.closeOnAuthFailure) {
286
- client.ws.close(1008, 'Authentication failed');
288
+ client.ws.close(1008, "Authentication failed");
287
289
  this.clients.delete(client.id);
288
290
  }
289
291
  }
290
292
  }
291
293
  extractBearerToken(authHeader) {
292
- if (authHeader.startsWith('Bearer ')) {
294
+ if (authHeader.startsWith("Bearer ")) {
293
295
  return authHeader.substring(7);
294
296
  }
295
297
  return null;
@@ -300,17 +302,17 @@ class WebSocketServerTransportAdapter {
300
302
  }
301
303
  }
302
304
  async disconnect() {
303
- if (this.state === 'disconnected') {
305
+ if (this.state === "disconnected") {
304
306
  return;
305
307
  }
306
- this.state = 'disconnecting';
308
+ this.state = "disconnecting";
307
309
  // Close all client connections
308
310
  for (const [_clientId, client] of this.clients) {
309
311
  try {
310
312
  if (client.authTimeout) {
311
313
  clearTimeout(client.authTimeout);
312
314
  }
313
- client.ws.close(1000, 'Server shutting down');
315
+ client.ws.close(1000, "Server shutting down");
314
316
  }
315
317
  catch {
316
318
  // Ignore errors when closing individual connections
@@ -318,25 +320,25 @@ class WebSocketServerTransportAdapter {
318
320
  }
319
321
  this.clients.clear();
320
322
  // Close the WebSocket server (only if we created it)
321
- if (this.wss && this.mode === 'standalone') {
323
+ if (this.wss && this.mode === "standalone") {
322
324
  await new Promise((resolve) => {
323
325
  this.wss.close(() => resolve());
324
326
  });
325
327
  }
326
- this.state = 'disconnected';
328
+ this.state = "disconnected";
327
329
  this.wss = undefined;
328
330
  this.attachedServer = undefined;
329
331
  this.attachedWss = undefined;
330
332
  }
331
333
  async send(message) {
332
- if (this.state !== 'connected') {
333
- throw new Error('Not connected');
334
+ if (this.state !== "connected") {
335
+ throw new Error("Not connected");
334
336
  }
335
337
  // Extract clientId from message payload for routing
336
338
  const payload = message.payload;
337
339
  const { clientId, ...clientMessage } = payload;
338
340
  if (!clientId) {
339
- throw new Error('Message must contain clientId in payload for routing');
341
+ throw new Error("Message must contain clientId in payload for routing");
340
342
  }
341
343
  const client = this.clients.get(clientId);
342
344
  if (!client) {
@@ -348,20 +350,21 @@ class WebSocketServerTransportAdapter {
348
350
  // Fully unwrap the server_message envelope
349
351
  // The server_message wrapper is used internally for routing between BaseServer and transport
350
352
  // We need to extract the actual message from inside the wrapper before sending to the client
351
- const messageToSend = message.type === 'server_message' && clientMessage.type
353
+ const messageToSend = message.type === "server_message" && clientMessage.type
352
354
  ? {
353
355
  id: message.id,
354
356
  type: clientMessage.type,
355
- payload: clientMessage.payload || (() => {
356
- // If there's no explicit payload field, use all remaining fields except 'type'
357
- const { type, ...rest } = clientMessage;
358
- return rest;
359
- })(),
360
- timestamp: message.timestamp
357
+ payload: clientMessage.payload ||
358
+ (() => {
359
+ // If there's no explicit payload field, use all remaining fields except 'type'
360
+ const { type, ...rest } = clientMessage;
361
+ return rest;
362
+ })(),
363
+ timestamp: message.timestamp,
361
364
  }
362
365
  : {
363
366
  ...message,
364
- payload: clientMessage
367
+ payload: clientMessage,
365
368
  };
366
369
  client.ws.send(JSON.stringify(messageToSend));
367
370
  }
@@ -378,14 +381,14 @@ class WebSocketServerTransportAdapter {
378
381
  return this.state;
379
382
  }
380
383
  isConnected() {
381
- return this.state === 'connected';
384
+ return this.state === "connected";
382
385
  }
383
386
  // Utility methods
384
387
  getConnectedClients() {
385
388
  return Array.from(this.clients.values());
386
389
  }
387
390
  getAuthenticatedClients() {
388
- return Array.from(this.clients.values()).filter(c => c.authenticated);
391
+ return Array.from(this.clients.values()).filter((c) => c.authenticated);
389
392
  }
390
393
  getClientCount() {
391
394
  return this.clients.size;
@@ -0,0 +1,2 @@
1
+ export { BrowserWebSocketTransportAdapter, type BrowserWebSocketConfig, } from "./BrowserWebSocketTransportAdapter.js";
2
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/adapters/websocket/browser.ts"],"names":[],"mappings":"AACA,OAAO,EACN,gCAAgC,EAChC,KAAK,sBAAsB,GAC3B,MAAM,uCAAuC,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BrowserWebSocketTransportAdapter = void 0;
4
+ // Browser WebSocket adapter (uses native WebSocket API, no dependencies)
5
+ var BrowserWebSocketTransportAdapter_js_1 = require("./BrowserWebSocketTransportAdapter.js");
6
+ Object.defineProperty(exports, "BrowserWebSocketTransportAdapter", { enumerable: true, get: function () { return BrowserWebSocketTransportAdapter_js_1.BrowserWebSocketTransportAdapter; } });
@@ -1,3 +1,4 @@
1
- export { WebSocketServerTransportAdapter, type WebSocketServerTransportConfig } from './WebSocketServerTransportAdapter.js';
2
- export { WebSocketClientTransportAdapter, type WebSocketClientConfig } from './WebSocketClientTransportAdapter.js';
1
+ export { type WebSocketClientConfig, WebSocketClientTransportAdapter, } from "./WebSocketClientTransportAdapter.js";
2
+ export { WebSocketServerTransportAdapter, type WebSocketServerTransportConfig, } from "./WebSocketServerTransportAdapter.js";
3
+ export { BrowserWebSocketTransportAdapter, type BrowserWebSocketConfig, } from "./BrowserWebSocketTransportAdapter.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/websocket/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,KAAK,8BAA8B,EACpC,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,+BAA+B,EAC/B,KAAK,qBAAqB,EAC3B,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/websocket/index.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,qBAAqB,EAC1B,+BAA+B,GAC/B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACN,+BAA+B,EAC/B,KAAK,8BAA8B,GACnC,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EACN,gCAAgC,EAChC,KAAK,sBAAsB,GAC3B,MAAM,uCAAuC,CAAC"}
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WebSocketClientTransportAdapter = exports.WebSocketServerTransportAdapter = void 0;
4
- var WebSocketServerTransportAdapter_js_1 = require("./WebSocketServerTransportAdapter.js");
5
- Object.defineProperty(exports, "WebSocketServerTransportAdapter", { enumerable: true, get: function () { return WebSocketServerTransportAdapter_js_1.WebSocketServerTransportAdapter; } });
3
+ exports.BrowserWebSocketTransportAdapter = exports.WebSocketServerTransportAdapter = exports.WebSocketClientTransportAdapter = void 0;
4
+ // Node.js WebSocket adapter (requires 'ws' package)
6
5
  var WebSocketClientTransportAdapter_js_1 = require("./WebSocketClientTransportAdapter.js");
7
6
  Object.defineProperty(exports, "WebSocketClientTransportAdapter", { enumerable: true, get: function () { return WebSocketClientTransportAdapter_js_1.WebSocketClientTransportAdapter; } });
7
+ var WebSocketServerTransportAdapter_js_1 = require("./WebSocketServerTransportAdapter.js");
8
+ Object.defineProperty(exports, "WebSocketServerTransportAdapter", { enumerable: true, get: function () { return WebSocketServerTransportAdapter_js_1.WebSocketServerTransportAdapter; } });
9
+ // Browser WebSocket adapter (uses native WebSocket API)
10
+ var BrowserWebSocketTransportAdapter_js_1 = require("./BrowserWebSocketTransportAdapter.js");
11
+ Object.defineProperty(exports, "BrowserWebSocketTransportAdapter", { enumerable: true, get: function () { return BrowserWebSocketTransportAdapter_js_1.BrowserWebSocketTransportAdapter; } });
@@ -0,0 +1,3 @@
1
+ export { type WebSocketClientConfig, WebSocketClientTransportAdapter, } from "./WebSocketClientTransportAdapter.js";
2
+ export { WebSocketServerTransportAdapter, type WebSocketServerTransportConfig, } from "./WebSocketServerTransportAdapter.js";
3
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/adapters/websocket/node.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,qBAAqB,EAC1B,+BAA+B,GAC/B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACN,+BAA+B,EAC/B,KAAK,8BAA8B,GACnC,MAAM,sCAAsC,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebSocketServerTransportAdapter = exports.WebSocketClientTransportAdapter = void 0;
4
+ // Node.js WebSocket adapters (requires 'ws' package)
5
+ var WebSocketClientTransportAdapter_js_1 = require("./WebSocketClientTransportAdapter.js");
6
+ Object.defineProperty(exports, "WebSocketClientTransportAdapter", { enumerable: true, get: function () { return WebSocketClientTransportAdapter_js_1.WebSocketClientTransportAdapter; } });
7
+ var WebSocketServerTransportAdapter_js_1 = require("./WebSocketServerTransportAdapter.js");
8
+ Object.defineProperty(exports, "WebSocketServerTransportAdapter", { enumerable: true, get: function () { return WebSocketServerTransportAdapter_js_1.WebSocketServerTransportAdapter; } });
@@ -1,8 +1,8 @@
1
- import type { ConnectionState, Event, RoomState, RoomUser, LockRequest, Lock, AuthenticatePayload } from '../types/index.js';
2
- import type { ITransportAdapter } from '../abstractions/TransportAdapter.js';
3
- import type { IAuthAdapter } from '../abstractions/AuthAdapter.js';
4
- import type { IStorageAdapter } from '../abstractions/StorageAdapter.js';
5
- import { TypedEventEmitter } from '../abstractions/EventEmitter.js';
1
+ import type { IAuthAdapter } from "../abstractions/AuthAdapter.js";
2
+ import { TypedEventEmitter } from "../abstractions/EventEmitter.js";
3
+ import type { IStorageAdapter } from "../abstractions/StorageAdapter.js";
4
+ import type { ITransportAdapter } from "../abstractions/TransportAdapter.js";
5
+ import type { AuthenticatePayload, ConnectionState, Event, Lock, LockRequest, RoomState, RoomUser } from "../types/index.js";
6
6
  export interface ClientConfig {
7
7
  transport: ITransportAdapter;
8
8
  auth?: IAuthAdapter;
@@ -95,7 +95,7 @@ export declare class BaseClient extends TypedEventEmitter<ClientEvents> {
95
95
  * @param options Optional authentication options including deviceId and metadata
96
96
  * @throws Error if client is not connected or no auth token is available
97
97
  */
98
- authenticate(options?: Omit<AuthenticatePayload, 'token'>): Promise<void>;
98
+ authenticate(options?: Omit<AuthenticatePayload, "token">): Promise<void>;
99
99
  /**
100
100
  * Check if the client has an auth token available.
101
101
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BaseClient.d.ts","sourceRoot":"","sources":["../../src/client/BaseClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseClient.d.ts","sourceRoot":"","sources":["../../src/client/BaseClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,EACX,mBAAmB,EAGnB,eAAe,EACf,KAAK,EACL,IAAI,EACJ,WAAW,EAEX,SAAS,EACT,QAAQ,EACR,MAAM,mBAAmB,CAAC;AAI3B,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,YAAY,CAAC,EAAE;QACd,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;KACtB,CAAC;CACF;AAED,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B,aAAa,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,qBAAqB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,YAAY,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,WAAW,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,KAAK,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC;IACxB,WAAW,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CAAC;IAClD,SAAS,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,cAAc,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC;IACjC,aAAa,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC;IAC9B,aAAa,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,WAAW,EAAE;QAAE,OAAO,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,gBAAgB,EAAE;QAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;KAAE,CAAC;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,qBAAa,UAAW,SAAQ,iBAAiB,CAAC,YAAY,CAAC;IAC9D,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,IAAI,CAAC,CAAe;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAkB;IAClC,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,MAAM,CAAuB;IAGrC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,SAAS,CAAuB;gBAE5B,MAAM,EAAE,YAAY;IAchC;;;;;OAKG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyDnD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAmC3B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAahC;;;;;;OAMG;IACG,YAAY,CACjB,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC;IA2BhB;;OAEG;IACH,YAAY,IAAI,OAAO;IAKjB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBvC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB1B,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBtC,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhD,kBAAkB,IAAI,eAAe;IAIrC,YAAY,IAAI,SAAS,GAAG,IAAI;IAIhC,WAAW,IAAI,QAAQ,EAAE;IAMzB,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,SAAS,IAAI,MAAM,GAAG,IAAI;YAKZ,aAAa;YA2Cb,WAAW;YAIX,WAAW;YAcX,gBAAgB;YAahB,gBAAgB;YAgBhB,cAAc;YAQd,oBAAoB;YAIpB,kBAAkB;YAIlB,kBAAkB;YAIlB,gBAAgB;YAOhB,qBAAqB;YAYrB,iBAAiB;YAKjB,iBAAiB;IAiC/B,OAAO,CAAC,UAAU;CAGlB"}