@teneo-protocol/sdk 1.0.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/.dockerignore +14 -0
- package/.env.test.example +14 -0
- package/.eslintrc.json +26 -0
- package/.github/workflows/claude-code-review.yml +78 -0
- package/.github/workflows/claude-reviewer.yml +64 -0
- package/.github/workflows/publish-npm.yml +38 -0
- package/.github/workflows/push-to-main.yml +23 -0
- package/.node-version +1 -0
- package/.prettierrc +11 -0
- package/Dockerfile +25 -0
- package/LICENCE +661 -0
- package/README.md +709 -0
- package/dist/constants.d.ts +42 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +45 -0
- package/dist/constants.js.map +1 -0
- package/dist/core/websocket-client.d.ts +261 -0
- package/dist/core/websocket-client.d.ts.map +1 -0
- package/dist/core/websocket-client.js +875 -0
- package/dist/core/websocket-client.js.map +1 -0
- package/dist/formatters/response-formatter.d.ts +354 -0
- package/dist/formatters/response-formatter.d.ts.map +1 -0
- package/dist/formatters/response-formatter.js +575 -0
- package/dist/formatters/response-formatter.js.map +1 -0
- package/dist/handlers/message-handler-registry.d.ts +155 -0
- package/dist/handlers/message-handler-registry.d.ts.map +1 -0
- package/dist/handlers/message-handler-registry.js +216 -0
- package/dist/handlers/message-handler-registry.js.map +1 -0
- package/dist/handlers/message-handlers/agent-selected-handler.d.ts +112 -0
- package/dist/handlers/message-handlers/agent-selected-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/agent-selected-handler.js +40 -0
- package/dist/handlers/message-handlers/agent-selected-handler.js.map +1 -0
- package/dist/handlers/message-handlers/agents-list-handler.d.ts +14 -0
- package/dist/handlers/message-handlers/agents-list-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/agents-list-handler.js +25 -0
- package/dist/handlers/message-handlers/agents-list-handler.js.map +1 -0
- package/dist/handlers/message-handlers/auth-error-handler.d.ts +71 -0
- package/dist/handlers/message-handlers/auth-error-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/auth-error-handler.js +30 -0
- package/dist/handlers/message-handlers/auth-error-handler.js.map +1 -0
- package/dist/handlers/message-handlers/auth-message-handler.d.ts +18 -0
- package/dist/handlers/message-handlers/auth-message-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/auth-message-handler.js +60 -0
- package/dist/handlers/message-handlers/auth-message-handler.js.map +1 -0
- package/dist/handlers/message-handlers/auth-required-handler.d.ts +76 -0
- package/dist/handlers/message-handlers/auth-required-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/auth-required-handler.js +23 -0
- package/dist/handlers/message-handlers/auth-required-handler.js.map +1 -0
- package/dist/handlers/message-handlers/auth-success-handler.d.ts +18 -0
- package/dist/handlers/message-handlers/auth-success-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/auth-success-handler.js +51 -0
- package/dist/handlers/message-handlers/auth-success-handler.js.map +1 -0
- package/dist/handlers/message-handlers/base-handler.d.ts +55 -0
- package/dist/handlers/message-handlers/base-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/base-handler.js +83 -0
- package/dist/handlers/message-handlers/base-handler.js.map +1 -0
- package/dist/handlers/message-handlers/challenge-handler.d.ts +73 -0
- package/dist/handlers/message-handlers/challenge-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/challenge-handler.js +47 -0
- package/dist/handlers/message-handlers/challenge-handler.js.map +1 -0
- package/dist/handlers/message-handlers/error-message-handler.d.ts +76 -0
- package/dist/handlers/message-handlers/error-message-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/error-message-handler.js +29 -0
- package/dist/handlers/message-handlers/error-message-handler.js.map +1 -0
- package/dist/handlers/message-handlers/index.d.ts +28 -0
- package/dist/handlers/message-handlers/index.d.ts.map +1 -0
- package/dist/handlers/message-handlers/index.js +100 -0
- package/dist/handlers/message-handlers/index.js.map +1 -0
- package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts +122 -0
- package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/list-rooms-response-handler.js +30 -0
- package/dist/handlers/message-handlers/list-rooms-response-handler.js.map +1 -0
- package/dist/handlers/message-handlers/ping-pong-handler.d.ts +104 -0
- package/dist/handlers/message-handlers/ping-pong-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/ping-pong-handler.js +36 -0
- package/dist/handlers/message-handlers/ping-pong-handler.js.map +1 -0
- package/dist/handlers/message-handlers/regular-message-handler.d.ts +56 -0
- package/dist/handlers/message-handlers/regular-message-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/regular-message-handler.js +59 -0
- package/dist/handlers/message-handlers/regular-message-handler.js.map +1 -0
- package/dist/handlers/message-handlers/subscribe-response-handler.d.ts +81 -0
- package/dist/handlers/message-handlers/subscribe-response-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/subscribe-response-handler.js +48 -0
- package/dist/handlers/message-handlers/subscribe-response-handler.js.map +1 -0
- package/dist/handlers/message-handlers/task-response-handler.d.ts +14 -0
- package/dist/handlers/message-handlers/task-response-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/task-response-handler.js +44 -0
- package/dist/handlers/message-handlers/task-response-handler.js.map +1 -0
- package/dist/handlers/message-handlers/types.d.ts +51 -0
- package/dist/handlers/message-handlers/types.d.ts.map +1 -0
- package/dist/handlers/message-handlers/types.js +7 -0
- package/dist/handlers/message-handlers/types.js.map +1 -0
- package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts +81 -0
- package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/unsubscribe-response-handler.js +48 -0
- package/dist/handlers/message-handlers/unsubscribe-response-handler.js.map +1 -0
- package/dist/handlers/webhook-handler.d.ts +202 -0
- package/dist/handlers/webhook-handler.d.ts.map +1 -0
- package/dist/handlers/webhook-handler.js +511 -0
- package/dist/handlers/webhook-handler.js.map +1 -0
- package/dist/index.d.ts +71 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +217 -0
- package/dist/index.js.map +1 -0
- package/dist/managers/agent-registry.d.ts +173 -0
- package/dist/managers/agent-registry.d.ts.map +1 -0
- package/dist/managers/agent-registry.js +310 -0
- package/dist/managers/agent-registry.js.map +1 -0
- package/dist/managers/connection-manager.d.ts +134 -0
- package/dist/managers/connection-manager.d.ts.map +1 -0
- package/dist/managers/connection-manager.js +176 -0
- package/dist/managers/connection-manager.js.map +1 -0
- package/dist/managers/index.d.ts +9 -0
- package/dist/managers/index.d.ts.map +1 -0
- package/dist/managers/index.js +16 -0
- package/dist/managers/index.js.map +1 -0
- package/dist/managers/message-router.d.ts +112 -0
- package/dist/managers/message-router.d.ts.map +1 -0
- package/dist/managers/message-router.js +260 -0
- package/dist/managers/message-router.js.map +1 -0
- package/dist/managers/room-manager.d.ts +165 -0
- package/dist/managers/room-manager.d.ts.map +1 -0
- package/dist/managers/room-manager.js +227 -0
- package/dist/managers/room-manager.js.map +1 -0
- package/dist/teneo-sdk.d.ts +703 -0
- package/dist/teneo-sdk.d.ts.map +1 -0
- package/dist/teneo-sdk.js +907 -0
- package/dist/teneo-sdk.js.map +1 -0
- package/dist/types/config.d.ts +1047 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +720 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/error-codes.d.ts +29 -0
- package/dist/types/error-codes.d.ts.map +1 -0
- package/dist/types/error-codes.js +41 -0
- package/dist/types/error-codes.js.map +1 -0
- package/dist/types/events.d.ts +616 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +261 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/health.d.ts +40 -0
- package/dist/types/health.d.ts.map +1 -0
- package/dist/types/health.js +6 -0
- package/dist/types/health.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +123 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/messages.d.ts +3734 -0
- package/dist/types/messages.d.ts.map +1 -0
- package/dist/types/messages.js +482 -0
- package/dist/types/messages.js.map +1 -0
- package/dist/types/validation.d.ts +81 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/dist/types/validation.js +115 -0
- package/dist/types/validation.js.map +1 -0
- package/dist/utils/bounded-queue.d.ts +127 -0
- package/dist/utils/bounded-queue.d.ts.map +1 -0
- package/dist/utils/bounded-queue.js +181 -0
- package/dist/utils/bounded-queue.js.map +1 -0
- package/dist/utils/circuit-breaker.d.ts +141 -0
- package/dist/utils/circuit-breaker.d.ts.map +1 -0
- package/dist/utils/circuit-breaker.js +215 -0
- package/dist/utils/circuit-breaker.js.map +1 -0
- package/dist/utils/deduplication-cache.d.ts +110 -0
- package/dist/utils/deduplication-cache.d.ts.map +1 -0
- package/dist/utils/deduplication-cache.js +177 -0
- package/dist/utils/deduplication-cache.js.map +1 -0
- package/dist/utils/event-waiter.d.ts +101 -0
- package/dist/utils/event-waiter.d.ts.map +1 -0
- package/dist/utils/event-waiter.js +118 -0
- package/dist/utils/event-waiter.js.map +1 -0
- package/dist/utils/index.d.ts +51 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +72 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +22 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +91 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +122 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +190 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/dist/utils/retry-policy.d.ts +191 -0
- package/dist/utils/retry-policy.d.ts.map +1 -0
- package/dist/utils/retry-policy.js +225 -0
- package/dist/utils/retry-policy.js.map +1 -0
- package/dist/utils/secure-private-key.d.ts +113 -0
- package/dist/utils/secure-private-key.d.ts.map +1 -0
- package/dist/utils/secure-private-key.js +188 -0
- package/dist/utils/secure-private-key.js.map +1 -0
- package/dist/utils/signature-verifier.d.ts +143 -0
- package/dist/utils/signature-verifier.d.ts.map +1 -0
- package/dist/utils/signature-verifier.js +238 -0
- package/dist/utils/signature-verifier.js.map +1 -0
- package/dist/utils/ssrf-validator.d.ts +36 -0
- package/dist/utils/ssrf-validator.d.ts.map +1 -0
- package/dist/utils/ssrf-validator.js +195 -0
- package/dist/utils/ssrf-validator.js.map +1 -0
- package/examples/.env.example +17 -0
- package/examples/basic-usage.ts +211 -0
- package/examples/production-dashboard/.env.example +153 -0
- package/examples/production-dashboard/package.json +39 -0
- package/examples/production-dashboard/public/dashboard.html +642 -0
- package/examples/production-dashboard/server.ts +753 -0
- package/examples/webhook-integration.ts +239 -0
- package/examples/x-influencer-battle-redesign.html +1065 -0
- package/examples/x-influencer-battle-server.ts +217 -0
- package/examples/x-influencer-battle.html +787 -0
- package/package.json +65 -0
- package/src/constants.ts +43 -0
- package/src/core/websocket-client.test.ts +512 -0
- package/src/core/websocket-client.ts +1056 -0
- package/src/formatters/response-formatter.test.ts +571 -0
- package/src/formatters/response-formatter.ts +677 -0
- package/src/handlers/message-handler-registry.ts +239 -0
- package/src/handlers/message-handlers/agent-selected-handler.ts +40 -0
- package/src/handlers/message-handlers/agents-list-handler.ts +26 -0
- package/src/handlers/message-handlers/auth-error-handler.ts +31 -0
- package/src/handlers/message-handlers/auth-message-handler.ts +66 -0
- package/src/handlers/message-handlers/auth-required-handler.ts +23 -0
- package/src/handlers/message-handlers/auth-success-handler.ts +57 -0
- package/src/handlers/message-handlers/base-handler.ts +101 -0
- package/src/handlers/message-handlers/challenge-handler.ts +57 -0
- package/src/handlers/message-handlers/error-message-handler.ts +27 -0
- package/src/handlers/message-handlers/index.ts +77 -0
- package/src/handlers/message-handlers/list-rooms-response-handler.ts +28 -0
- package/src/handlers/message-handlers/ping-pong-handler.ts +30 -0
- package/src/handlers/message-handlers/regular-message-handler.ts +65 -0
- package/src/handlers/message-handlers/subscribe-response-handler.ts +47 -0
- package/src/handlers/message-handlers/task-response-handler.ts +45 -0
- package/src/handlers/message-handlers/types.ts +77 -0
- package/src/handlers/message-handlers/unsubscribe-response-handler.ts +47 -0
- package/src/handlers/webhook-handler.test.ts +789 -0
- package/src/handlers/webhook-handler.ts +576 -0
- package/src/index.ts +269 -0
- package/src/managers/agent-registry.test.ts +466 -0
- package/src/managers/agent-registry.ts +347 -0
- package/src/managers/connection-manager.ts +195 -0
- package/src/managers/index.ts +9 -0
- package/src/managers/message-router.ts +349 -0
- package/src/managers/room-manager.ts +248 -0
- package/src/teneo-sdk.ts +1022 -0
- package/src/types/config.test.ts +325 -0
- package/src/types/config.ts +799 -0
- package/src/types/error-codes.ts +44 -0
- package/src/types/events.test.ts +302 -0
- package/src/types/events.ts +382 -0
- package/src/types/health.ts +46 -0
- package/src/types/index.ts +199 -0
- package/src/types/messages.test.ts +660 -0
- package/src/types/messages.ts +570 -0
- package/src/types/validation.ts +123 -0
- package/src/utils/bounded-queue.test.ts +356 -0
- package/src/utils/bounded-queue.ts +205 -0
- package/src/utils/circuit-breaker.test.ts +394 -0
- package/src/utils/circuit-breaker.ts +262 -0
- package/src/utils/deduplication-cache.test.ts +380 -0
- package/src/utils/deduplication-cache.ts +198 -0
- package/src/utils/event-waiter.test.ts +381 -0
- package/src/utils/event-waiter.ts +172 -0
- package/src/utils/index.ts +74 -0
- package/src/utils/logger.ts +87 -0
- package/src/utils/rate-limiter.test.ts +341 -0
- package/src/utils/rate-limiter.ts +211 -0
- package/src/utils/retry-policy.test.ts +558 -0
- package/src/utils/retry-policy.ts +272 -0
- package/src/utils/secure-private-key.test.ts +356 -0
- package/src/utils/secure-private-key.ts +205 -0
- package/src/utils/signature-verifier.test.ts +464 -0
- package/src/utils/signature-verifier.ts +298 -0
- package/src/utils/ssrf-validator.test.ts +372 -0
- package/src/utils/ssrf-validator.ts +224 -0
- package/tests/integration/real-server.test.ts +740 -0
- package/tests/integration/websocket.test.ts +381 -0
- package/tests/integration-setup.ts +16 -0
- package/tests/setup.ts +34 -0
- package/tsconfig.json +32 -0
- package/vitest.config.ts +42 -0
- package/vitest.integration.config.ts +23 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* RoomManager - Manages room state and operations
|
|
4
|
+
* Handles joining, leaving, and tracking rooms
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.RoomManager = void 0;
|
|
8
|
+
const eventemitter3_1 = require("eventemitter3");
|
|
9
|
+
const types_1 = require("../types");
|
|
10
|
+
const events_1 = require("../types/events");
|
|
11
|
+
const error_codes_1 = require("../types/error-codes");
|
|
12
|
+
const validation_1 = require("../types/validation");
|
|
13
|
+
class RoomManager extends eventemitter3_1.EventEmitter {
|
|
14
|
+
constructor(wsClient, logger) {
|
|
15
|
+
super();
|
|
16
|
+
this.rooms = new Map();
|
|
17
|
+
this.subscribedRooms = new Set();
|
|
18
|
+
this.wsClient = wsClient;
|
|
19
|
+
this.logger = logger;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Subscribes to a public room in the Teneo network.
|
|
23
|
+
* Validates room ID and sends subscribe message to the server.
|
|
24
|
+
* The actual subscription state is updated when the server confirms via room:subscribed event.
|
|
25
|
+
*
|
|
26
|
+
* @param roomId - The ID of the room to subscribe to
|
|
27
|
+
* @returns Promise that resolves when subscribed
|
|
28
|
+
* @throws {SDKError} If not connected to the network
|
|
29
|
+
* @throws {ValidationError} If roomId is empty or invalid
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* await roomManager.subscribeToRoom('general');
|
|
34
|
+
* console.log('Subscription request sent to general room');
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
async subscribeToRoom(roomId) {
|
|
38
|
+
if (!this.wsClient.isConnected) {
|
|
39
|
+
throw new events_1.SDKError("Not connected to Teneo network", error_codes_1.ErrorCode.NOT_CONNECTED);
|
|
40
|
+
}
|
|
41
|
+
// Validate room ID
|
|
42
|
+
const validatedRoomId = validation_1.RoomIdSchema.parse(roomId);
|
|
43
|
+
this.logger.info("RoomManager: Subscribing to room", { roomId: validatedRoomId });
|
|
44
|
+
const message = (0, types_1.createSubscribe)(validatedRoomId);
|
|
45
|
+
await this.wsClient.sendMessage(message);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Unsubscribes from a room in the Teneo network.
|
|
49
|
+
* Validates room ID and sends unsubscribe message to the server.
|
|
50
|
+
* The actual subscription state is updated when the server confirms via room:unsubscribed event.
|
|
51
|
+
*
|
|
52
|
+
* @param roomId - The ID of the room to unsubscribe from
|
|
53
|
+
* @returns Promise that resolves when unsubscribed
|
|
54
|
+
* @throws {SDKError} If not connected to the network
|
|
55
|
+
* @throws {ValidationError} If roomId is empty or invalid
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* await roomManager.unsubscribeFromRoom('general');
|
|
60
|
+
* console.log('Unsubscription request sent for general room');
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
async unsubscribeFromRoom(roomId) {
|
|
64
|
+
if (!this.wsClient.isConnected) {
|
|
65
|
+
throw new events_1.SDKError("Not connected to Teneo network", error_codes_1.ErrorCode.NOT_CONNECTED);
|
|
66
|
+
}
|
|
67
|
+
// Validate room ID
|
|
68
|
+
const validatedRoomId = validation_1.RoomIdSchema.parse(roomId);
|
|
69
|
+
this.logger.info("RoomManager: Unsubscribing from room", { roomId: validatedRoomId });
|
|
70
|
+
const message = (0, types_1.createUnsubscribe)(validatedRoomId);
|
|
71
|
+
await this.wsClient.sendMessage(message);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Updates the subscription state from server response.
|
|
75
|
+
* This is the authoritative source of which rooms you're subscribed to.
|
|
76
|
+
* Called internally when receiving subscribe/unsubscribe responses.
|
|
77
|
+
*
|
|
78
|
+
* @internal
|
|
79
|
+
* @param subscriptions - Array of room IDs from server response
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```typescript
|
|
83
|
+
* // Internal SDK usage
|
|
84
|
+
* roomManager.updateSubscriptions(['general', 'support', 'trading']);
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
updateSubscriptions(subscriptions) {
|
|
88
|
+
this.subscribedRooms.clear();
|
|
89
|
+
subscriptions.forEach(roomId => this.subscribedRooms.add(roomId));
|
|
90
|
+
this.logger.debug("RoomManager: Subscriptions updated", {
|
|
91
|
+
count: subscriptions.length,
|
|
92
|
+
rooms: subscriptions
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Gets all rooms currently subscribed to.
|
|
97
|
+
* Returns array of room IDs that you're actively listening to.
|
|
98
|
+
*
|
|
99
|
+
* @returns Array of subscribed room IDs
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* const rooms = roomManager.getSubscribedRooms();
|
|
104
|
+
* console.log(`Subscribed to ${rooms.length} rooms:`, rooms);
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
getSubscribedRooms() {
|
|
108
|
+
return Array.from(this.subscribedRooms);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Gets a list of all available rooms.
|
|
112
|
+
* Returns rooms the user has access to based on authentication.
|
|
113
|
+
* Returns a read-only array with defensive copies to prevent external modification.
|
|
114
|
+
*
|
|
115
|
+
* @returns Read-only array of room copies
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* const rooms = roomManager.getRooms();
|
|
120
|
+
* rooms.forEach(room => console.log(`${room.id}: ${room.name}`));
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
getRooms() {
|
|
124
|
+
return Array.from(this.rooms.values()).map((room) => ({ ...room }));
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Gets a specific room by its ID.
|
|
128
|
+
* Returns a defensive copy to prevent external modification of room state.
|
|
129
|
+
* Returns undefined if room doesn't exist or user doesn't have access.
|
|
130
|
+
*
|
|
131
|
+
* @param roomId - The ID of the room to retrieve
|
|
132
|
+
* @returns Copy of the room object if found, undefined otherwise
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```typescript
|
|
136
|
+
* const room = roomManager.getRoom('general');
|
|
137
|
+
* if (room) {
|
|
138
|
+
* console.log(`Room: ${room.name}`);
|
|
139
|
+
* console.log(`Members: ${room.members?.length ?? 0}`);
|
|
140
|
+
* }
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
getRoom(roomId) {
|
|
144
|
+
const room = this.rooms.get(roomId);
|
|
145
|
+
return room ? { ...room } : undefined;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Fetches the list of rooms from the server.
|
|
149
|
+
* Sends list_rooms message and waits for response from server.
|
|
150
|
+
* Returns array of rooms the user owns or has access to.
|
|
151
|
+
*
|
|
152
|
+
* @returns Promise that resolves to array of room information
|
|
153
|
+
* @throws {SDKError} If not connected to the network
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```typescript
|
|
157
|
+
* const rooms = await roomManager.listRooms();
|
|
158
|
+
* rooms.forEach(room => {
|
|
159
|
+
* console.log(`${room.name} (${room.is_public ? 'public' : 'private'})`);
|
|
160
|
+
* console.log(`Owner: ${room.is_owner}`);
|
|
161
|
+
* });
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
async listRooms() {
|
|
165
|
+
if (!this.wsClient.isConnected) {
|
|
166
|
+
throw new events_1.SDKError("Not connected to Teneo network", error_codes_1.ErrorCode.NOT_CONNECTED);
|
|
167
|
+
}
|
|
168
|
+
this.logger.info("RoomManager: Listing rooms");
|
|
169
|
+
const message = (0, types_1.createListRooms)();
|
|
170
|
+
await this.wsClient.sendMessage(message);
|
|
171
|
+
// Room list will be received via list_rooms response handler
|
|
172
|
+
// For now, return empty array as this is async
|
|
173
|
+
// TODO: Implement response waiting mechanism
|
|
174
|
+
return [];
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Updates the room list from authentication state.
|
|
178
|
+
* Called internally after successful authentication to populate accessible rooms.
|
|
179
|
+
*
|
|
180
|
+
* @internal This method is for internal SDK use
|
|
181
|
+
* @param rooms - Array of rooms to update in the manager
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```typescript
|
|
185
|
+
* // Internal SDK usage after auth
|
|
186
|
+
* roomManager.updateRoomsFromAuth(authState.roomObjects);
|
|
187
|
+
* ```
|
|
188
|
+
*/
|
|
189
|
+
updateRoomsFromAuth(rooms) {
|
|
190
|
+
this.logger.debug("RoomManager: Updating rooms from auth", { count: rooms.length });
|
|
191
|
+
for (const room of rooms) {
|
|
192
|
+
this.rooms.set(room.id, room);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Clears all rooms from the manager.
|
|
197
|
+
* Clears subscription state.
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```typescript
|
|
201
|
+
* roomManager.clear();
|
|
202
|
+
* console.log('All rooms cleared');
|
|
203
|
+
* ```
|
|
204
|
+
*/
|
|
205
|
+
clear() {
|
|
206
|
+
this.rooms.clear();
|
|
207
|
+
this.subscribedRooms.clear();
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Destroys the room manager and cleans up resources.
|
|
211
|
+
* Clears all rooms and removes all event listeners.
|
|
212
|
+
* After destruction, the manager cannot be reused.
|
|
213
|
+
*
|
|
214
|
+
* @example
|
|
215
|
+
* ```typescript
|
|
216
|
+
* roomManager.destroy();
|
|
217
|
+
* console.log('Room manager destroyed');
|
|
218
|
+
* ```
|
|
219
|
+
*/
|
|
220
|
+
destroy() {
|
|
221
|
+
this.logger.info("RoomManager: Destroying");
|
|
222
|
+
this.clear();
|
|
223
|
+
this.removeAllListeners();
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
exports.RoomManager = RoomManager;
|
|
227
|
+
//# sourceMappingURL=room-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-manager.js","sourceRoot":"","sources":["../../src/managers/room-manager.ts"],"names":[],"mappings":"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"}
|