@sogni-ai/sogni-client 4.0.0-alpha.19 → 4.0.0-alpha.20

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 (24) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.d.ts +66 -0
  3. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.js +332 -0
  4. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.js.map +1 -0
  5. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.d.ts +3 -9
  6. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js +104 -100
  7. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js.map +1 -1
  8. package/dist/ApiClient/WebSocketClient/index.js +2 -2
  9. package/dist/ApiClient/WebSocketClient/index.js.map +1 -1
  10. package/dist/ApiClient/index.js +1 -1
  11. package/dist/ApiClient/index.js.map +1 -1
  12. package/package.json +1 -1
  13. package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.ts +426 -0
  14. package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/index.ts +127 -98
  15. package/src/ApiClient/WebSocketClient/index.ts +2 -2
  16. package/src/ApiClient/index.ts +1 -1
  17. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/WSCoordinator.d.ts +0 -102
  18. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/WSCoordinator.js +0 -378
  19. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/WSCoordinator.js.map +0 -1
  20. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/types.d.ts +0 -102
  21. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/types.js +0 -3
  22. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/types.js.map +0 -1
  23. package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/WSCoordinator.ts +0 -443
  24. package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/types.ts +0 -107
@@ -1,378 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const getUUID_1 = __importDefault(require("../../../lib/getUUID"));
16
- class WSCoordinator {
17
- constructor(callbacks, logger) {
18
- this._isConnected = false;
19
- this.lastPrimaryHeartbeat = 0;
20
- this.heartbeatInterval = null;
21
- this.primaryCheckInterval = null;
22
- this.startingEvents = {};
23
- this.ackCallbacks = {};
24
- this.initialized = false;
25
- /**
26
- * Handle tab closing event
27
- */
28
- this.handleBeforeUnload = () => {
29
- if (this._isPrimary) {
30
- this.logger.info(`Client ${this.id} closing, releasing primary role`);
31
- this.releasePrimary();
32
- }
33
- };
34
- this.id = (0, getUUID_1.default)();
35
- this.logger = logger;
36
- this.callbacks = callbacks;
37
- this.channel = new BroadcastChannel(WSCoordinator.CHANNEL_NAME);
38
- this.channel.onmessage = this.handleMessage.bind(this);
39
- this._isPrimary = false;
40
- // Listen for tab closing to gracefully release primary role
41
- if (typeof window !== 'undefined') {
42
- window.addEventListener('beforeunload', this.handleBeforeUnload.bind(this));
43
- }
44
- }
45
- /**
46
- * Initialize tab coordination and determine role
47
- */
48
- initialize() {
49
- return __awaiter(this, void 0, void 0, function* () {
50
- if (this.initialized) {
51
- return this._isPrimary;
52
- }
53
- this.initialized = true;
54
- this.logger.info(`WSCoordinator ${this.id} initializing...`);
55
- // Announce our presence
56
- this.broadcast({
57
- type: 'announce'
58
- });
59
- // Wait to see if there's an existing primary
60
- yield this.waitForPrimaryResponse();
61
- if (!this._isPrimary) {
62
- this.logger.info(`Client ${this.id} is secondary, primary exists`);
63
- this.startPrimaryCheck();
64
- }
65
- else {
66
- this.logger.info(`Client ${this.id} becoming primary`);
67
- this.stopPrimaryCheck();
68
- this.becomePrimary();
69
- }
70
- return this._isPrimary;
71
- });
72
- }
73
- connect() {
74
- if (this._isPrimary) {
75
- throw new Error('Primary should connect the socket directly.');
76
- }
77
- this.broadcast({
78
- type: 'connection-toggle',
79
- payload: { connected: true }
80
- });
81
- }
82
- disconnect() {
83
- if (this._isPrimary) {
84
- throw new Error('Primary should disconnect socket directly.');
85
- }
86
- this.broadcast({
87
- type: 'connection-toggle',
88
- payload: { connected: false }
89
- });
90
- }
91
- changeAuthState(isAuthenticated) {
92
- return __awaiter(this, void 0, void 0, function* () {
93
- this.broadcast({
94
- type: 'authentication',
95
- payload: { authenticated: isAuthenticated }
96
- });
97
- });
98
- }
99
- /**
100
- * Wait briefly to see if a primary tab responds
101
- */
102
- waitForPrimaryResponse() {
103
- return new Promise((resolve) => {
104
- const timeout = setTimeout(() => {
105
- // No primary responded, we become primary
106
- this._isPrimary = true;
107
- resolve();
108
- }, 500);
109
- const messageHandler = (e) => {
110
- const envelope = e.data;
111
- const message = envelope.payload;
112
- if (message.type === 'primary-present' || message.type === 'primary-claim') {
113
- // Primary exists
114
- this._isPrimary = false;
115
- this.lastPrimaryHeartbeat = envelope.timestamp;
116
- clearTimeout(timeout);
117
- this.channel.removeEventListener('message', messageHandler);
118
- resolve();
119
- }
120
- };
121
- this.channel.addEventListener('message', messageHandler);
122
- });
123
- }
124
- /**
125
- * Become the primary tab
126
- */
127
- becomePrimary() {
128
- this._isPrimary = true;
129
- this.callbacks.onRoleChange(true);
130
- // Broadcast that we're claiming primary role
131
- this.broadcast({
132
- type: 'primary-claim'
133
- });
134
- // Start sending heartbeats
135
- this.startHeartbeat();
136
- }
137
- /**
138
- * Release primary role (when closing)
139
- */
140
- releasePrimary() {
141
- if (this._isPrimary) {
142
- this.broadcast({
143
- type: 'primary-release'
144
- });
145
- this.stopHeartbeat();
146
- }
147
- }
148
- /**
149
- * Start sending heartbeat messages as primary
150
- */
151
- startHeartbeat() {
152
- if (this.heartbeatInterval) {
153
- throw new Error('Heartbeat interval already started. This should never happen.');
154
- }
155
- this.heartbeatInterval = setInterval(() => {
156
- this.broadcast({
157
- type: 'primary-present',
158
- payload: { connected: this._isConnected }
159
- });
160
- }, WSCoordinator.HEARTBEAT_INTERVAL);
161
- }
162
- /**
163
- * Stop sending heartbeat messages
164
- */
165
- stopHeartbeat() {
166
- if (this.heartbeatInterval) {
167
- clearInterval(this.heartbeatInterval);
168
- this.heartbeatInterval = null;
169
- }
170
- }
171
- /**
172
- * Start checking for primary heartbeat (as secondary)
173
- */
174
- startPrimaryCheck() {
175
- this.primaryCheckInterval = setInterval(() => {
176
- const timeSinceLastHeartbeat = Date.now() - this.lastPrimaryHeartbeat;
177
- if (timeSinceLastHeartbeat > WSCoordinator.PRIMARY_TIMEOUT) {
178
- this.logger.warn(`Primary tab timeout, becoming primary`);
179
- this.stopPrimaryCheck();
180
- this.becomePrimary();
181
- }
182
- }, 1000);
183
- }
184
- /**
185
- * Stop checking for primary heartbeat
186
- */
187
- stopPrimaryCheck() {
188
- if (this.primaryCheckInterval) {
189
- clearInterval(this.primaryCheckInterval);
190
- this.primaryCheckInterval = null;
191
- }
192
- }
193
- handleMessage(e) {
194
- const envelope = e.data;
195
- const message = envelope.payload;
196
- // If a message sent to specific recipient and not to us, ignore it
197
- if (!!envelope.recipientId && envelope.recipientId !== this.id) {
198
- return;
199
- }
200
- switch (message.type) {
201
- case 'announce':
202
- if (this._isPrimary) {
203
- this.broadcast({
204
- type: 'primary-present',
205
- payload: { connected: this._isConnected }
206
- });
207
- // Re-broadcast starting events for the new tab
208
- Object.entries(this.startingEvents).forEach(([eventType, payload]) => {
209
- this.broadcast({
210
- type: 'socket-event',
211
- payload: { eventType: eventType, payload }
212
- }, envelope.senderId);
213
- });
214
- }
215
- return;
216
- case 'primary-claim':
217
- case 'primary-present':
218
- this.lastPrimaryHeartbeat = envelope.timestamp;
219
- if (this._isPrimary) {
220
- this.logger.info(`Stepping down from primary, ${envelope.senderId} claimed it`);
221
- this.stopHeartbeat();
222
- this._isPrimary = false;
223
- this.callbacks.onRoleChange(false);
224
- this.startPrimaryCheck();
225
- }
226
- return;
227
- case 'primary-release':
228
- if (!this._isPrimary) {
229
- // Wait random time (0 - 300ms) before claiming "primary" role, so not all tabs try to claim at the same time
230
- setTimeout(() => {
231
- const timeSinceRelease = Date.now() - envelope.timestamp;
232
- const timeSinceLastHeartbeat = Date.now() - this.lastPrimaryHeartbeat;
233
- if (timeSinceLastHeartbeat > timeSinceRelease) {
234
- this.logger.info(`Primary released, becoming primary`);
235
- this.stopPrimaryCheck();
236
- this.becomePrimary();
237
- }
238
- else {
239
- this.logger.info(`Another primary exists, do nothing`);
240
- }
241
- }, Math.round(Math.random() * 300));
242
- }
243
- return;
244
- case 'authentication':
245
- this.callbacks.onAuthChanged(message.payload.authenticated);
246
- return;
247
- case 'connection-toggle':
248
- if (this._isPrimary) {
249
- this.logger.info(`Should ${message.payload.connected ? 'connect' : 'disconnect'} socket.`);
250
- this.callbacks.onConnectionToggle(message.payload.connected);
251
- }
252
- return;
253
- case 'socket-event': {
254
- if (!this._isPrimary) {
255
- this.callbacks.onMessageFromPrimary(message);
256
- }
257
- return;
258
- }
259
- case 'socket-send': {
260
- if (this._isPrimary) {
261
- this.callbacks
262
- .onSendRequest(message)
263
- .then(() => {
264
- //Acknowledge the request
265
- this.broadcast({
266
- type: 'socket-ack',
267
- payload: {
268
- envelopeId: envelope.id
269
- }
270
- });
271
- })
272
- .catch((e) => {
273
- this.logger.error(`Error sending socket message: ${e}`);
274
- this.broadcast({
275
- type: 'socket-ack',
276
- payload: {
277
- envelopeId: envelope.id,
278
- error: e.message
279
- }
280
- });
281
- });
282
- }
283
- return;
284
- }
285
- case 'socket-ack': {
286
- if (!this._isPrimary) {
287
- if (this.ackCallbacks[message.payload.envelopeId]) {
288
- this.ackCallbacks[message.payload.envelopeId](message.payload.error);
289
- }
290
- }
291
- }
292
- }
293
- }
294
- broadcast(message, recipientId) {
295
- const envelope = {
296
- id: (0, getUUID_1.default)(),
297
- senderId: this.id,
298
- timestamp: Date.now(),
299
- payload: message
300
- };
301
- if (recipientId) {
302
- envelope.recipientId = recipientId;
303
- }
304
- this.channel.postMessage(envelope);
305
- return envelope.id;
306
- }
307
- /**
308
- * Send a message to be transmitted over the socket (from secondary to primary)
309
- */
310
- sendToSocket(messageType, data) {
311
- if (this._isPrimary) {
312
- throw new Error('Primary tab should send directly');
313
- }
314
- this.logger.debug(`Sending socket message ${messageType}`, data);
315
- const messageId = this.broadcast({
316
- type: 'socket-send',
317
- payload: { messageType, data }
318
- });
319
- return new Promise((resolve, reject) => {
320
- const ackTimeout = setTimeout(() => {
321
- //If callback is not called within 5 seconds, call it with an error
322
- if (this.ackCallbacks[messageId]) {
323
- this.ackCallbacks[messageId](new Error('Message delivery timeout'));
324
- }
325
- }, WSCoordinator.ACK_TIMEOUT);
326
- this.ackCallbacks[messageId] = (error) => {
327
- delete this.ackCallbacks[messageId];
328
- clearTimeout(ackTimeout);
329
- if (error) {
330
- reject(error);
331
- }
332
- else {
333
- resolve();
334
- }
335
- };
336
- });
337
- }
338
- /**
339
- * Broadcast a socket event from primary to all secondaries
340
- */
341
- broadcastSocketEvent(eventType, payload) {
342
- if (!this._isPrimary) {
343
- throw new Error('Only primary tab can broadcast socket events');
344
- }
345
- if (eventType === 'connected') {
346
- this._isConnected = true;
347
- }
348
- else if (eventType === 'disconnected') {
349
- this._isConnected = false;
350
- }
351
- this.updateStartingState(eventType, payload);
352
- this.logger.debug(`Broadcasting socket event ${eventType}`, payload);
353
- this.broadcast({
354
- type: 'socket-event',
355
- payload: { eventType, payload }
356
- });
357
- }
358
- updateStartingState(eventType, payload) {
359
- if (eventType === 'authenticated') {
360
- this.startingEvents.authenticated = payload;
361
- }
362
- else if (eventType === 'balanceUpdate') {
363
- this.startingEvents.balanceUpdate = payload;
364
- }
365
- else if (eventType === 'swarmModels') {
366
- this.startingEvents.swarmModels = payload;
367
- }
368
- }
369
- isPrimary() {
370
- return this._isPrimary;
371
- }
372
- }
373
- WSCoordinator.HEARTBEAT_INTERVAL = 2000;
374
- WSCoordinator.PRIMARY_TIMEOUT = 5000;
375
- WSCoordinator.CHANNEL_NAME = 'sogni-websocket-clients';
376
- WSCoordinator.ACK_TIMEOUT = 5000;
377
- exports.default = WSCoordinator;
378
- //# sourceMappingURL=WSCoordinator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WSCoordinator.js","sourceRoot":"","sources":["../../../../src/ApiClient/WebSocketClient/BrowserWebSocketClient/WSCoordinator.ts"],"names":[],"mappings":"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"}
@@ -1,102 +0,0 @@
1
- import { SocketEventMap, SocketEventName } from '../events';
2
- import { MessageType, SocketMessageMap } from '../messages';
3
- /**
4
- * Primary tab to broadcast socket events to secondary tabs.
5
- * @param eventType - The event type.
6
- * @param payload - The event payload. See {@link SocketEventMap} for the list of available events.
7
- */
8
- export interface SocketEventReceived<T extends SocketEventName = SocketEventName> {
9
- type: 'socket-event';
10
- payload: {
11
- eventType: T;
12
- payload: SocketEventMap[T];
13
- };
14
- }
15
- /**
16
- * Sent by secondary tabs to the primary tab to send a message to WebSocket.
17
- * @param messageType - The message type.
18
- * @param data - The message payload. See {@link SocketMessageMap} for the list of available messages.
19
- */
20
- export interface SendSocketMessage<T extends MessageType = MessageType> {
21
- type: 'socket-send';
22
- payload: {
23
- messageType: T;
24
- data: SocketMessageMap[T];
25
- };
26
- }
27
- /**
28
- * Sent by the primary tab to acknowledge that a message was sent to WebSocket.
29
- */
30
- export interface SocketMessageAck {
31
- type: 'socket-ack';
32
- payload: {
33
- envelopeId: string;
34
- error?: any;
35
- };
36
- }
37
- /**
38
- * Sent by the primary tab to notify the secondary tabs that the primary tab is still alive.
39
- * @param connected - true if the primary tab is connected to the server, false otherwise.
40
- */
41
- export interface Heartbeat {
42
- type: 'primary-present';
43
- payload: {
44
- connected: boolean;
45
- };
46
- }
47
- /**
48
- * Used to tell the primary tab to connect/disconnect socket.
49
- * @param connected - true to connect, false to disconnect.
50
- */
51
- export interface ConnectionToggle {
52
- type: 'connection-toggle';
53
- payload: {
54
- connected: boolean;
55
- };
56
- }
57
- /**
58
- * Sent by tab when it is opened to notify other tabs. If another tab is present,
59
- * it will respond with {@link Heartbeat}.
60
- */
61
- export interface ClientAnnounce {
62
- type: 'announce';
63
- }
64
- /**
65
- * Sent by the client to let other know that it is claiming the primary role.
66
- */
67
- export interface PrimaryClaim {
68
- type: 'primary-claim';
69
- }
70
- /**
71
- * Sent by the client to let other know that it is releasing the primary role.
72
- * This usually happens when the tab is closed.
73
- */
74
- export interface PrimaryRelease {
75
- type: 'primary-release';
76
- }
77
- /**
78
- * Sent by the tab where user has auth state changed.
79
- * @param authenticated - true if the user is authenticated, false otherwise.
80
- */
81
- export interface AuthenticationChange {
82
- type: 'authentication';
83
- payload: {
84
- authenticated: boolean;
85
- };
86
- }
87
- export type ChannelMessage = AuthenticationChange | SocketEventReceived | SendSocketMessage | SocketMessageAck | ConnectionToggle | Heartbeat | ClientAnnounce | PrimaryClaim | PrimaryRelease;
88
- /**
89
- * Envelope for messages sent between tabs.
90
- * @param id - Unique message ID.
91
- * @param senderId - ID of the tab that sent the message.
92
- * @param recipientId - ID of the tab that should receive the message. If not specified, the message will be broadcasted to all tabs.
93
- * @param timestamp - Timestamp of the message.
94
- * @param payload - Message payload.
95
- */
96
- export interface MessageEnvelope {
97
- id: string;
98
- senderId: string;
99
- recipientId?: string;
100
- timestamp: number;
101
- payload: ChannelMessage;
102
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/ApiClient/WebSocketClient/BrowserWebSocketClient/types.ts"],"names":[],"mappings":""}