@sogni-ai/sogni-client 4.0.0-alpha.5 → 4.0.0-alpha.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +357 -0
- package/README.md +295 -58
- package/dist/Account/index.d.ts +18 -16
- package/dist/Account/index.js +42 -21
- package/dist/Account/index.js.map +1 -1
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.d.ts +66 -0
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.js +332 -0
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.js.map +1 -0
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.d.ts +28 -0
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js +203 -0
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js.map +1 -0
- package/dist/ApiClient/WebSocketClient/events.d.ts +12 -0
- package/dist/ApiClient/WebSocketClient/index.d.ts +2 -2
- package/dist/ApiClient/WebSocketClient/index.js +13 -3
- package/dist/ApiClient/WebSocketClient/index.js.map +1 -1
- package/dist/ApiClient/WebSocketClient/types.d.ts +13 -0
- package/dist/ApiClient/index.d.ts +4 -4
- package/dist/ApiClient/index.js +23 -4
- package/dist/ApiClient/index.js.map +1 -1
- package/dist/Projects/Job.d.ts +44 -4
- package/dist/Projects/Job.js +83 -16
- package/dist/Projects/Job.js.map +1 -1
- package/dist/Projects/Project.d.ts +18 -0
- package/dist/Projects/Project.js +38 -10
- package/dist/Projects/Project.js.map +1 -1
- package/dist/Projects/createJobRequestMessage.d.ts +2 -1
- package/dist/Projects/createJobRequestMessage.js +173 -14
- package/dist/Projects/createJobRequestMessage.js.map +1 -1
- package/dist/Projects/index.d.ts +114 -11
- package/dist/Projects/index.js +504 -47
- package/dist/Projects/index.js.map +1 -1
- package/dist/Projects/types/ComfySamplerParams.d.ts +0 -0
- package/dist/Projects/types/ComfySamplerParams.js +2 -0
- package/dist/Projects/types/ComfySamplerParams.js.map +1 -0
- package/dist/Projects/types/EstimationResponse.d.ts +2 -0
- package/dist/Projects/types/ModelOptions.d.ts +31 -0
- package/dist/Projects/types/ModelOptions.js +56 -0
- package/dist/Projects/types/ModelOptions.js.map +1 -0
- package/dist/Projects/types/ModelTiersRaw.d.ts +67 -0
- package/dist/Projects/types/ModelTiersRaw.js +15 -0
- package/dist/Projects/types/ModelTiersRaw.js.map +1 -0
- package/dist/Projects/types/events.d.ts +5 -1
- package/dist/Projects/types/index.d.ts +219 -42
- package/dist/Projects/types/index.js +8 -0
- package/dist/Projects/types/index.js.map +1 -1
- package/dist/Projects/utils/index.d.ts +20 -0
- package/dist/Projects/utils/index.js +91 -0
- package/dist/Projects/utils/index.js.map +1 -0
- package/dist/Projects/utils/samplers.d.ts +6 -0
- package/dist/Projects/utils/samplers.js +39 -0
- package/dist/Projects/utils/samplers.js.map +1 -0
- package/dist/Projects/utils/scheduler.d.ts +6 -0
- package/dist/Projects/utils/scheduler.js +30 -0
- package/dist/Projects/utils/scheduler.js.map +1 -0
- package/dist/index.d.ts +11 -3
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/AuthManager/TokenAuthManager.js +0 -2
- package/dist/lib/AuthManager/TokenAuthManager.js.map +1 -1
- package/dist/lib/DataEntity.js +4 -2
- package/dist/lib/DataEntity.js.map +1 -1
- package/dist/lib/RestClient.js +15 -2
- package/dist/lib/RestClient.js.map +1 -1
- package/dist/lib/{utils.js → utils/index.js} +1 -1
- package/dist/lib/utils/index.js.map +1 -0
- package/dist/lib/validation.d.ts +31 -2
- package/dist/lib/validation.js +80 -13
- package/dist/lib/validation.js.map +1 -1
- package/package.json +4 -4
- package/src/Account/index.ts +39 -20
- package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.ts +426 -0
- package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/index.ts +237 -0
- package/src/ApiClient/WebSocketClient/events.ts +14 -0
- package/src/ApiClient/WebSocketClient/index.ts +15 -5
- package/src/ApiClient/WebSocketClient/types.ts +16 -0
- package/src/ApiClient/index.ts +30 -8
- package/src/Projects/Job.ts +97 -16
- package/src/Projects/Project.ts +46 -13
- package/src/Projects/createJobRequestMessage.ts +239 -34
- package/src/Projects/index.ts +533 -51
- package/src/Projects/types/ComfySamplerParams.ts +0 -0
- package/src/Projects/types/EstimationResponse.ts +2 -0
- package/src/Projects/types/ModelOptions.ts +92 -0
- package/src/Projects/types/ModelTiersRaw.ts +86 -0
- package/src/Projects/types/events.ts +6 -0
- package/src/Projects/types/index.ts +253 -45
- package/src/Projects/utils/index.ts +90 -0
- package/src/Projects/utils/samplers.ts +36 -0
- package/src/Projects/utils/scheduler.ts +27 -0
- package/src/index.ts +36 -9
- package/src/lib/AuthManager/TokenAuthManager.ts +0 -2
- package/src/lib/DataEntity.ts +4 -2
- package/src/lib/RestClient.ts +16 -2
- package/src/lib/validation.ts +90 -17
- package/dist/Projects/types/SamplerParams.d.ts +0 -15
- package/dist/Projects/types/SamplerParams.js +0 -21
- package/dist/Projects/types/SamplerParams.js.map +0 -1
- package/dist/Projects/types/SchedulerParams.d.ts +0 -13
- package/dist/Projects/types/SchedulerParams.js +0 -19
- package/dist/Projects/types/SchedulerParams.js.map +0 -1
- package/dist/Projects/utils.d.ts +0 -2
- package/dist/Projects/utils.js +0 -14
- package/dist/Projects/utils.js.map +0 -1
- package/dist/lib/utils.js.map +0 -1
- package/src/Projects/types/SamplerParams.ts +0 -19
- package/src/Projects/types/SchedulerParams.ts +0 -17
- package/src/Projects/utils.ts +0 -12
- /package/dist/lib/{utils.d.ts → utils/index.d.ts} +0 -0
- /package/src/lib/{utils.ts → utils/index.ts} +0 -0
package/dist/Account/index.js
CHANGED
|
@@ -26,11 +26,11 @@ var ErrorCode;
|
|
|
26
26
|
})(ErrorCode || (ErrorCode = {}));
|
|
27
27
|
/**
|
|
28
28
|
* Account API methods that let you interact with the user's account.
|
|
29
|
-
* Can be accessed via `
|
|
29
|
+
* Can be accessed via `sogni.account`. Look for more samples below.
|
|
30
30
|
*
|
|
31
31
|
* @example Retrieve the current account balance
|
|
32
32
|
* ```typescript
|
|
33
|
-
* const balance = await
|
|
33
|
+
* const balance = await sogni.account.refreshBalance();
|
|
34
34
|
* console.log(balance);
|
|
35
35
|
* ```
|
|
36
36
|
*
|
|
@@ -39,7 +39,12 @@ class AccountApi extends ApiGroup_1.default {
|
|
|
39
39
|
constructor(config) {
|
|
40
40
|
super(config);
|
|
41
41
|
this.currentAccount = new CurrentAccount_1.default();
|
|
42
|
+
this.currentAccount._update({
|
|
43
|
+
networkStatus: this.client.socket.isConnected ? 'connected' : 'disconnected',
|
|
44
|
+
network: this.client.socket.supernetType
|
|
45
|
+
});
|
|
42
46
|
this.client.socket.on('balanceUpdate', this.handleBalanceUpdate.bind(this));
|
|
47
|
+
this.client.socket.on('changeNetwork', this.handleChangeNetwork.bind(this));
|
|
43
48
|
this.client.on('connected', this.handleServerConnected.bind(this));
|
|
44
49
|
this.client.on('disconnected', this.handleServerDisconnected.bind(this));
|
|
45
50
|
this.client.auth.on('updated', this.handleAuthUpdated.bind(this));
|
|
@@ -47,6 +52,9 @@ class AccountApi extends ApiGroup_1.default {
|
|
|
47
52
|
handleBalanceUpdate(data) {
|
|
48
53
|
this.currentAccount._update({ balance: data });
|
|
49
54
|
}
|
|
55
|
+
handleChangeNetwork({ network }) {
|
|
56
|
+
this.currentAccount._update({ network, networkStatus: 'connected' });
|
|
57
|
+
}
|
|
50
58
|
handleServerConnected({ network }) {
|
|
51
59
|
this.currentAccount._update({
|
|
52
60
|
networkStatus: 'connected',
|
|
@@ -63,6 +71,9 @@ class AccountApi extends ApiGroup_1.default {
|
|
|
63
71
|
if (!isAuthenticated) {
|
|
64
72
|
this.currentAccount._clear();
|
|
65
73
|
}
|
|
74
|
+
else {
|
|
75
|
+
this.me();
|
|
76
|
+
}
|
|
66
77
|
}
|
|
67
78
|
/**
|
|
68
79
|
* Get the nonce for the given wallet address.
|
|
@@ -84,7 +95,7 @@ class AccountApi extends ApiGroup_1.default {
|
|
|
84
95
|
*
|
|
85
96
|
* @example Create a wallet from username and password
|
|
86
97
|
* ```typescript
|
|
87
|
-
* const wallet =
|
|
98
|
+
* const wallet = sogni.account.getWallet('username', 'password');
|
|
88
99
|
* console.log(wallet.address);
|
|
89
100
|
* ```
|
|
90
101
|
*
|
|
@@ -124,7 +135,6 @@ class AccountApi extends ApiGroup_1.default {
|
|
|
124
135
|
else {
|
|
125
136
|
yield auth.authenticate();
|
|
126
137
|
}
|
|
127
|
-
yield this.me();
|
|
128
138
|
return res.data;
|
|
129
139
|
});
|
|
130
140
|
}
|
|
@@ -133,7 +143,7 @@ class AccountApi extends ApiGroup_1.default {
|
|
|
133
143
|
*
|
|
134
144
|
* @example Login with username and password
|
|
135
145
|
* ```typescript
|
|
136
|
-
* await
|
|
146
|
+
* await sogni.account.login('username', 'password');
|
|
137
147
|
* console.log('Logged in');
|
|
138
148
|
* ```
|
|
139
149
|
*
|
|
@@ -162,7 +172,6 @@ class AccountApi extends ApiGroup_1.default {
|
|
|
162
172
|
else {
|
|
163
173
|
yield auth.authenticate();
|
|
164
174
|
}
|
|
165
|
-
yield this.me();
|
|
166
175
|
return res.data;
|
|
167
176
|
});
|
|
168
177
|
}
|
|
@@ -171,13 +180,23 @@ class AccountApi extends ApiGroup_1.default {
|
|
|
171
180
|
*
|
|
172
181
|
* @example Logout the user
|
|
173
182
|
* ```typescript
|
|
174
|
-
* await
|
|
183
|
+
* await sogni.account.logout();
|
|
175
184
|
* console.log('Logged out');
|
|
176
185
|
* ```
|
|
177
186
|
*/
|
|
178
187
|
logout() {
|
|
179
188
|
return __awaiter(this, void 0, void 0, function* () {
|
|
180
|
-
|
|
189
|
+
try {
|
|
190
|
+
yield this.client.rest.post('/v1/account/logout');
|
|
191
|
+
}
|
|
192
|
+
catch (e) {
|
|
193
|
+
if (e instanceof ApiClient_1.ApiError && e.status === 401) {
|
|
194
|
+
this.client.logger.warn('Failed to logout, probably already logged out');
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
throw e;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
181
200
|
this.client.auth.clear();
|
|
182
201
|
});
|
|
183
202
|
}
|
|
@@ -190,7 +209,7 @@ class AccountApi extends ApiGroup_1.default {
|
|
|
190
209
|
*
|
|
191
210
|
* @example Refresh user account balance
|
|
192
211
|
* ```typescript
|
|
193
|
-
* const balance = await
|
|
212
|
+
* const balance = await sogni.account.refreshBalance();
|
|
194
213
|
* console.log(balance);
|
|
195
214
|
* ```
|
|
196
215
|
*/
|
|
@@ -207,7 +226,7 @@ class AccountApi extends ApiGroup_1.default {
|
|
|
207
226
|
*
|
|
208
227
|
* @example Get the account balance of the current user
|
|
209
228
|
* ```typescript
|
|
210
|
-
* const balance = await
|
|
229
|
+
* const balance = await sogni.account.accountBalance();
|
|
211
230
|
* console.log(balance);
|
|
212
231
|
* ```
|
|
213
232
|
*/
|
|
@@ -224,18 +243,20 @@ class AccountApi extends ApiGroup_1.default {
|
|
|
224
243
|
*
|
|
225
244
|
* @example Get the balance of the wallet address
|
|
226
245
|
* ```typescript
|
|
227
|
-
* const address =
|
|
228
|
-
* const balance = await
|
|
246
|
+
* const address = sogni.account.currentAccount.walletAddress;
|
|
247
|
+
* const balance = await sogni.account.walletBalance(address);
|
|
229
248
|
* console.log(balance);
|
|
230
249
|
* // { token: '100.000000', ether: '0.000000' }
|
|
231
250
|
* ```
|
|
232
251
|
*
|
|
233
252
|
* @param walletAddress
|
|
253
|
+
* @param provider - blockchain provider, 'base' or 'etherlink' defaults to 'base'
|
|
234
254
|
*/
|
|
235
|
-
walletBalance(
|
|
236
|
-
return __awaiter(this,
|
|
255
|
+
walletBalance(walletAddress_1) {
|
|
256
|
+
return __awaiter(this, arguments, void 0, function* (walletAddress, provider = 'base') {
|
|
237
257
|
const res = yield this.client.rest.get('/v2/wallet/balance', {
|
|
238
|
-
walletAddress
|
|
258
|
+
walletAddress,
|
|
259
|
+
provider
|
|
239
260
|
});
|
|
240
261
|
return res.data;
|
|
241
262
|
});
|
|
@@ -281,9 +302,9 @@ class AccountApi extends ApiGroup_1.default {
|
|
|
281
302
|
*
|
|
282
303
|
* @example Switch to the fast network
|
|
283
304
|
* ```typescript
|
|
284
|
-
* await
|
|
305
|
+
* await sogni.account.switchNetwork('fast');
|
|
285
306
|
* console.log('Switched to the fast network, now lets wait until we get list of models');
|
|
286
|
-
* await
|
|
307
|
+
* await sogni.projects.waitForModels();
|
|
287
308
|
* ```
|
|
288
309
|
* @param network - Network type to switch to
|
|
289
310
|
*/
|
|
@@ -306,10 +327,10 @@ class AccountApi extends ApiGroup_1.default {
|
|
|
306
327
|
*
|
|
307
328
|
* @example Get the transaction history
|
|
308
329
|
* ```typescript
|
|
309
|
-
* const { entries, next } = await
|
|
330
|
+
* const { entries, next } = await sogni.account.transactionHistory({
|
|
310
331
|
* status: 'completed',
|
|
311
332
|
* limit: 10,
|
|
312
|
-
* address:
|
|
333
|
+
* address: sogni.account.currentAccount.walletAddress
|
|
313
334
|
* });
|
|
314
335
|
* ```
|
|
315
336
|
*
|
|
@@ -397,7 +418,7 @@ class AccountApi extends ApiGroup_1.default {
|
|
|
397
418
|
* Withdraw funds from the current account to wallet.
|
|
398
419
|
* @example withdraw to current wallet address
|
|
399
420
|
* ```typescript
|
|
400
|
-
* await
|
|
421
|
+
* await sogni.account.withdraw('your-account-password', 100);
|
|
401
422
|
* ```
|
|
402
423
|
*
|
|
403
424
|
* @param password - account password
|
|
@@ -427,7 +448,7 @@ class AccountApi extends ApiGroup_1.default {
|
|
|
427
448
|
* Deposit tokens from wallet to account
|
|
428
449
|
* @example withdraw to current wallet address
|
|
429
450
|
* ```typescript
|
|
430
|
-
* await
|
|
451
|
+
* await sogni.account.deposit('your-account-password', 100);
|
|
431
452
|
* ```
|
|
432
453
|
*
|
|
433
454
|
* @param password - account password
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Account/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Account/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Logger } from '../../../lib/DefaultLogger';
|
|
2
|
+
interface Callbacks<M, N> {
|
|
3
|
+
onRoleChange: (isPrimary: boolean) => void;
|
|
4
|
+
onMessage: (message: M) => Promise<void>;
|
|
5
|
+
onNotification: (notification: N) => void;
|
|
6
|
+
}
|
|
7
|
+
interface Options<M, N> {
|
|
8
|
+
callbacks: Callbacks<M, N>;
|
|
9
|
+
logger: Logger;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A class responsible for coordinating communication across browser tabs or windows via BroadcastChannel API.
|
|
13
|
+
* It handles the role election of the primary (leader) tab, message broadcasting, heartbeats for primary tab monitoring,
|
|
14
|
+
* and message acknowledgment for reliable communication.
|
|
15
|
+
*
|
|
16
|
+
* The `ChannelCoordinator` ensures that one tab per session is assigned as the primary, while allowing others to act as secondaries,
|
|
17
|
+
* utilizing various message types for communication and coordination.
|
|
18
|
+
*
|
|
19
|
+
* Message is sent by secondary tabs to the primary tab via the `sendMessage` method. By sending message
|
|
20
|
+
* tab can tell primary to connect, disconnect, send message to socket etc.
|
|
21
|
+
*
|
|
22
|
+
* Notification is type of message broadcasted by primary to secondary tabs. This is mostly used to
|
|
23
|
+
* broadcast socket events from primary to secondary tabs.
|
|
24
|
+
*
|
|
25
|
+
* @template M - The type of messages being broadcast to other tabs/windows.
|
|
26
|
+
* @template N - The type of notifications being handled within the coordinator.
|
|
27
|
+
*/
|
|
28
|
+
declare class ChannelCoordinator<M, N> {
|
|
29
|
+
private readonly id;
|
|
30
|
+
private priority;
|
|
31
|
+
private readonly channel;
|
|
32
|
+
private _isPrimary;
|
|
33
|
+
private callbacks;
|
|
34
|
+
private logger;
|
|
35
|
+
private ackCallbacks;
|
|
36
|
+
private electionInProgress;
|
|
37
|
+
private electionResponses;
|
|
38
|
+
private lastPrimaryHeartbeat;
|
|
39
|
+
private heartbeatTimer;
|
|
40
|
+
private primaryCheckTimer;
|
|
41
|
+
private readyCallback;
|
|
42
|
+
private readonly readyPromise;
|
|
43
|
+
constructor({ callbacks, logger }: Options<M, N>);
|
|
44
|
+
get isPrimary(): boolean;
|
|
45
|
+
private get currentPriority();
|
|
46
|
+
isReady(): Promise<void>;
|
|
47
|
+
private startElections;
|
|
48
|
+
private finishElections;
|
|
49
|
+
private becomePrimary;
|
|
50
|
+
private startHeartbeat;
|
|
51
|
+
private stopHeartbeat;
|
|
52
|
+
private startPrimaryMonitor;
|
|
53
|
+
private handleMessage;
|
|
54
|
+
private handleElection;
|
|
55
|
+
private handleElectionResponse;
|
|
56
|
+
private handlePrimaryAnnounce;
|
|
57
|
+
private handlePrimaryHeartbeat;
|
|
58
|
+
private handleBroadcast;
|
|
59
|
+
private handleRequest;
|
|
60
|
+
private handleRequestAck;
|
|
61
|
+
private send;
|
|
62
|
+
private broadcast;
|
|
63
|
+
sendMessage(message: M): Promise<any>;
|
|
64
|
+
notify(message: N): void;
|
|
65
|
+
}
|
|
66
|
+
export default ChannelCoordinator;
|
|
@@ -0,0 +1,332 @@
|
|
|
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
|
+
const PRIMARY_HEARTBEAT_INTERVAL = 2000;
|
|
17
|
+
const PRIMARY_TIMEOUT = 4000;
|
|
18
|
+
const ACK_TIMEOUT = 5000;
|
|
19
|
+
var MessageType;
|
|
20
|
+
(function (MessageType) {
|
|
21
|
+
MessageType["ELECTION"] = "election";
|
|
22
|
+
MessageType["ELECTION_RESPONSE"] = "election_response";
|
|
23
|
+
MessageType["PRIMARY_ANNOUNCE"] = "primary_announce";
|
|
24
|
+
MessageType["PRIMARY_HEARTBEAT"] = "primary_heartbeat";
|
|
25
|
+
MessageType["BROADCAST"] = "broadcast";
|
|
26
|
+
MessageType["REQUEST"] = "request";
|
|
27
|
+
MessageType["REQUEST_ACK"] = "request_ack";
|
|
28
|
+
})(MessageType || (MessageType = {}));
|
|
29
|
+
const CHANNEL_NAME = 'sogni-websocket-channel';
|
|
30
|
+
let isActiveTab = false;
|
|
31
|
+
if (typeof window !== 'undefined' && window.location.protocol === 'https:') {
|
|
32
|
+
isActiveTab = window.document.visibilityState === 'visible';
|
|
33
|
+
window.addEventListener('visibilitychange', () => (isActiveTab = window.document.visibilityState === 'visible'));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A class responsible for coordinating communication across browser tabs or windows via BroadcastChannel API.
|
|
37
|
+
* It handles the role election of the primary (leader) tab, message broadcasting, heartbeats for primary tab monitoring,
|
|
38
|
+
* and message acknowledgment for reliable communication.
|
|
39
|
+
*
|
|
40
|
+
* The `ChannelCoordinator` ensures that one tab per session is assigned as the primary, while allowing others to act as secondaries,
|
|
41
|
+
* utilizing various message types for communication and coordination.
|
|
42
|
+
*
|
|
43
|
+
* Message is sent by secondary tabs to the primary tab via the `sendMessage` method. By sending message
|
|
44
|
+
* tab can tell primary to connect, disconnect, send message to socket etc.
|
|
45
|
+
*
|
|
46
|
+
* Notification is type of message broadcasted by primary to secondary tabs. This is mostly used to
|
|
47
|
+
* broadcast socket events from primary to secondary tabs.
|
|
48
|
+
*
|
|
49
|
+
* @template M - The type of messages being broadcast to other tabs/windows.
|
|
50
|
+
* @template N - The type of notifications being handled within the coordinator.
|
|
51
|
+
*/
|
|
52
|
+
class ChannelCoordinator {
|
|
53
|
+
constructor({ callbacks, logger }) {
|
|
54
|
+
this.id = (0, getUUID_1.default)();
|
|
55
|
+
this.priority = Date.now();
|
|
56
|
+
this.channel = new BroadcastChannel(CHANNEL_NAME);
|
|
57
|
+
this._isPrimary = false;
|
|
58
|
+
this.ackCallbacks = {};
|
|
59
|
+
// User to handle election of primary tab
|
|
60
|
+
this.electionInProgress = false;
|
|
61
|
+
this.electionResponses = new Map();
|
|
62
|
+
// Heartbeat to detect primary tab death
|
|
63
|
+
this.lastPrimaryHeartbeat = Date.now();
|
|
64
|
+
this.heartbeatTimer = null;
|
|
65
|
+
this.primaryCheckTimer = null;
|
|
66
|
+
this.readyCallback = () => { };
|
|
67
|
+
this.readyPromise = new Promise((resolve) => {
|
|
68
|
+
let called = false;
|
|
69
|
+
this.readyCallback = () => {
|
|
70
|
+
if (!called) {
|
|
71
|
+
called = true;
|
|
72
|
+
resolve();
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
this.callbacks = callbacks;
|
|
77
|
+
this.logger = logger;
|
|
78
|
+
this.channel.addEventListener('message', (event) => this.handleMessage(event.data));
|
|
79
|
+
this.startElections();
|
|
80
|
+
this.startPrimaryMonitor();
|
|
81
|
+
// Listen for tab closing to gracefully release primary role
|
|
82
|
+
if (typeof window !== 'undefined') {
|
|
83
|
+
window.addEventListener('beforeunload', () => {
|
|
84
|
+
this.priority = 0;
|
|
85
|
+
this.startElections();
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
get isPrimary() {
|
|
90
|
+
return this._isPrimary;
|
|
91
|
+
}
|
|
92
|
+
get currentPriority() {
|
|
93
|
+
return isActiveTab ? this.priority * 10 : this.priority;
|
|
94
|
+
}
|
|
95
|
+
isReady() {
|
|
96
|
+
return this.readyPromise;
|
|
97
|
+
}
|
|
98
|
+
startElections() {
|
|
99
|
+
this.logger.debug(`Start primary elections, my priority is ${this.currentPriority}, tab visibility is ${isActiveTab}`);
|
|
100
|
+
this.electionInProgress = true;
|
|
101
|
+
this.electionResponses.clear();
|
|
102
|
+
this.electionResponses.set(this.id, this.currentPriority);
|
|
103
|
+
this.broadcast({
|
|
104
|
+
type: MessageType.ELECTION,
|
|
105
|
+
payload: { priority: this.currentPriority }
|
|
106
|
+
});
|
|
107
|
+
setTimeout(() => {
|
|
108
|
+
this.finishElections();
|
|
109
|
+
}, 500);
|
|
110
|
+
}
|
|
111
|
+
finishElections() {
|
|
112
|
+
if (!this.electionInProgress) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
// Find highest priority
|
|
116
|
+
let highestPriority = -Infinity;
|
|
117
|
+
let winnerId = null;
|
|
118
|
+
for (const [id, priority] of this.electionResponses) {
|
|
119
|
+
if (priority > highestPriority || (priority === highestPriority && id > (winnerId || ''))) {
|
|
120
|
+
highestPriority = priority;
|
|
121
|
+
winnerId = id;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (winnerId === this.id) {
|
|
125
|
+
this.becomePrimary();
|
|
126
|
+
this.logger.debug(`Won elections! ${winnerId}`);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
this.logger.debug(`Lost elections! Winner is ${winnerId}`);
|
|
130
|
+
}
|
|
131
|
+
this.electionInProgress = false;
|
|
132
|
+
this.electionResponses.clear();
|
|
133
|
+
}
|
|
134
|
+
becomePrimary() {
|
|
135
|
+
this._isPrimary = true;
|
|
136
|
+
this.lastPrimaryHeartbeat = Date.now();
|
|
137
|
+
this.broadcast({
|
|
138
|
+
type: MessageType.PRIMARY_ANNOUNCE,
|
|
139
|
+
payload: { id: this.id, priority: this.currentPriority }
|
|
140
|
+
});
|
|
141
|
+
this.startHeartbeat();
|
|
142
|
+
this.callbacks.onRoleChange(true);
|
|
143
|
+
this.readyCallback();
|
|
144
|
+
}
|
|
145
|
+
startHeartbeat() {
|
|
146
|
+
if (this.heartbeatTimer) {
|
|
147
|
+
clearInterval(this.heartbeatTimer);
|
|
148
|
+
}
|
|
149
|
+
this.heartbeatTimer = setInterval(() => {
|
|
150
|
+
if (this._isPrimary) {
|
|
151
|
+
this.broadcast({
|
|
152
|
+
type: MessageType.PRIMARY_HEARTBEAT,
|
|
153
|
+
payload: { id: this.id, priority: this.currentPriority }
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
this.stopHeartbeat();
|
|
158
|
+
}
|
|
159
|
+
}, PRIMARY_HEARTBEAT_INTERVAL);
|
|
160
|
+
}
|
|
161
|
+
stopHeartbeat() {
|
|
162
|
+
if (this.heartbeatTimer) {
|
|
163
|
+
clearInterval(this.heartbeatTimer);
|
|
164
|
+
this.heartbeatTimer = null;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
startPrimaryMonitor() {
|
|
168
|
+
if (this.primaryCheckTimer) {
|
|
169
|
+
clearInterval(this.primaryCheckTimer);
|
|
170
|
+
}
|
|
171
|
+
this.primaryCheckTimer = setInterval(() => {
|
|
172
|
+
if (!this._isPrimary) {
|
|
173
|
+
const timeSinceLastHeartbeat = Date.now() - this.lastPrimaryHeartbeat;
|
|
174
|
+
if (timeSinceLastHeartbeat > PRIMARY_TIMEOUT) {
|
|
175
|
+
this.startElections();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
this.lastPrimaryHeartbeat = Date.now();
|
|
180
|
+
}
|
|
181
|
+
}, PRIMARY_HEARTBEAT_INTERVAL);
|
|
182
|
+
}
|
|
183
|
+
handleMessage(envelope) {
|
|
184
|
+
const { senderId, recipientId, message } = envelope;
|
|
185
|
+
const isForOtherClient = recipientId && recipientId !== this.id;
|
|
186
|
+
if (senderId === this.id || isForOtherClient) {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
switch (message.type) {
|
|
190
|
+
case MessageType.ELECTION:
|
|
191
|
+
return this.handleElection(message);
|
|
192
|
+
case MessageType.ELECTION_RESPONSE:
|
|
193
|
+
return this.handleElectionResponse(message);
|
|
194
|
+
case MessageType.PRIMARY_ANNOUNCE:
|
|
195
|
+
return this.handlePrimaryAnnounce(message);
|
|
196
|
+
case MessageType.PRIMARY_HEARTBEAT:
|
|
197
|
+
return this.handlePrimaryHeartbeat();
|
|
198
|
+
case MessageType.BROADCAST:
|
|
199
|
+
return this.handleBroadcast(message);
|
|
200
|
+
case MessageType.REQUEST:
|
|
201
|
+
return this.handleRequest(message, envelope);
|
|
202
|
+
case MessageType.REQUEST_ACK:
|
|
203
|
+
return this.handleRequestAck(message);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
handleElection(message) {
|
|
207
|
+
this.broadcast({
|
|
208
|
+
type: MessageType.ELECTION_RESPONSE,
|
|
209
|
+
payload: { id: this.id, priority: this.currentPriority }
|
|
210
|
+
});
|
|
211
|
+
if (this.currentPriority > message.payload.priority && !this.electionInProgress) {
|
|
212
|
+
this.startElections();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
handleElectionResponse(message) {
|
|
216
|
+
if (this.electionInProgress) {
|
|
217
|
+
this.electionResponses.set(message.payload.id, message.payload.priority);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
handlePrimaryAnnounce(message) {
|
|
221
|
+
this.logger.debug(`Primary announced: ${message.payload.id}`);
|
|
222
|
+
const wasPrimary = this._isPrimary;
|
|
223
|
+
this._isPrimary = false;
|
|
224
|
+
this.lastPrimaryHeartbeat = Date.now();
|
|
225
|
+
this.electionInProgress = false;
|
|
226
|
+
this.electionResponses.clear();
|
|
227
|
+
if (this.heartbeatTimer) {
|
|
228
|
+
clearInterval(this.heartbeatTimer);
|
|
229
|
+
this.heartbeatTimer = null;
|
|
230
|
+
}
|
|
231
|
+
if (wasPrimary) {
|
|
232
|
+
this.callbacks.onRoleChange(false);
|
|
233
|
+
}
|
|
234
|
+
this.readyCallback();
|
|
235
|
+
}
|
|
236
|
+
handlePrimaryHeartbeat() {
|
|
237
|
+
this.lastPrimaryHeartbeat = Date.now();
|
|
238
|
+
}
|
|
239
|
+
handleBroadcast(message) {
|
|
240
|
+
this.logger.debug(`Received broadcast from primary`, message.payload);
|
|
241
|
+
this.callbacks.onNotification(message.payload);
|
|
242
|
+
}
|
|
243
|
+
handleRequest(message, envelope) {
|
|
244
|
+
if (!this.isPrimary) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
this.logger.debug(`Received request from secondary`, message.payload);
|
|
248
|
+
this.callbacks
|
|
249
|
+
.onMessage(message.payload)
|
|
250
|
+
.then(() => {
|
|
251
|
+
this.send({
|
|
252
|
+
type: MessageType.REQUEST_ACK,
|
|
253
|
+
payload: { id: envelope.id }
|
|
254
|
+
}, envelope.senderId);
|
|
255
|
+
})
|
|
256
|
+
.catch((error) => {
|
|
257
|
+
this.send({
|
|
258
|
+
type: MessageType.REQUEST_ACK,
|
|
259
|
+
payload: { id: envelope.id, error }
|
|
260
|
+
}, envelope.senderId);
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
handleRequestAck(message) {
|
|
264
|
+
const ackCallback = this.ackCallbacks[message.payload.id];
|
|
265
|
+
if (ackCallback) {
|
|
266
|
+
ackCallback(message.payload.error);
|
|
267
|
+
delete this.ackCallbacks[message.payload.id];
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
send(message, recipientId) {
|
|
271
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
272
|
+
const envelope = {
|
|
273
|
+
id: (0, getUUID_1.default)(),
|
|
274
|
+
senderId: this.id,
|
|
275
|
+
recipientId,
|
|
276
|
+
timestamp: Date.now(),
|
|
277
|
+
message: message
|
|
278
|
+
};
|
|
279
|
+
if (message.type !== MessageType.REQUEST) {
|
|
280
|
+
this.channel.postMessage(envelope);
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
return new Promise((resolve, reject) => {
|
|
284
|
+
const ackTimeout = setTimeout(() => {
|
|
285
|
+
if (this.ackCallbacks[envelope.id]) {
|
|
286
|
+
this.ackCallbacks[envelope.id](new Error('Message delivery timeout'));
|
|
287
|
+
delete this.ackCallbacks[envelope.id];
|
|
288
|
+
}
|
|
289
|
+
}, ACK_TIMEOUT);
|
|
290
|
+
this.ackCallbacks[envelope.id] = (error) => {
|
|
291
|
+
clearTimeout(ackTimeout);
|
|
292
|
+
delete this.ackCallbacks[envelope.id];
|
|
293
|
+
if (error) {
|
|
294
|
+
reject(error);
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
resolve();
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
this.channel.postMessage(envelope);
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
broadcast(message) {
|
|
305
|
+
const envelope = {
|
|
306
|
+
id: (0, getUUID_1.default)(),
|
|
307
|
+
senderId: this.id,
|
|
308
|
+
timestamp: Date.now(),
|
|
309
|
+
message: message
|
|
310
|
+
};
|
|
311
|
+
this.channel.postMessage(envelope);
|
|
312
|
+
return envelope.id;
|
|
313
|
+
}
|
|
314
|
+
sendMessage(message) {
|
|
315
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
316
|
+
this.logger.debug(`Sending message to primary`, message);
|
|
317
|
+
return this.send({
|
|
318
|
+
type: MessageType.REQUEST,
|
|
319
|
+
payload: message
|
|
320
|
+
});
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
notify(message) {
|
|
324
|
+
this.logger.debug(`Sending notification to secondary tabs`, message);
|
|
325
|
+
this.broadcast({
|
|
326
|
+
type: MessageType.BROADCAST,
|
|
327
|
+
payload: message
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
exports.default = ChannelCoordinator;
|
|
332
|
+
//# sourceMappingURL=ChannelCoordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelCoordinator.js","sourceRoot":"","sources":["../../../../src/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.ts"],"names":[],"mappings":"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"}
|