@sogni-ai/sogni-client 4.0.0-alpha.12 → 4.0.0-alpha.14

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 (36) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/Account/index.d.ts +1 -0
  3. package/dist/Account/index.js +11 -2
  4. package/dist/Account/index.js.map +1 -1
  5. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/WSCoordinator.d.ts +101 -0
  6. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/WSCoordinator.js +359 -0
  7. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/WSCoordinator.js.map +1 -0
  8. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.d.ts +34 -0
  9. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js +195 -0
  10. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js.map +1 -0
  11. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/types.d.ts +101 -0
  12. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/types.js +3 -0
  13. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/types.js.map +1 -0
  14. package/dist/ApiClient/WebSocketClient/events.d.ts +1 -0
  15. package/dist/ApiClient/WebSocketClient/index.d.ts +2 -2
  16. package/dist/ApiClient/WebSocketClient/types.d.ts +13 -0
  17. package/dist/ApiClient/index.d.ts +2 -3
  18. package/dist/ApiClient/index.js +20 -2
  19. package/dist/ApiClient/index.js.map +1 -1
  20. package/dist/Projects/Job.d.ts +1 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.js +6 -2
  23. package/dist/index.js.map +1 -1
  24. package/dist/lib/DataEntity.js +4 -2
  25. package/dist/lib/DataEntity.js.map +1 -1
  26. package/package.json +4 -4
  27. package/src/Account/index.ts +11 -2
  28. package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/WSCoordinator.ts +425 -0
  29. package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/index.ts +206 -0
  30. package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/types.ts +107 -0
  31. package/src/ApiClient/WebSocketClient/events.ts +2 -0
  32. package/src/ApiClient/WebSocketClient/index.ts +2 -2
  33. package/src/ApiClient/WebSocketClient/types.ts +16 -0
  34. package/src/ApiClient/index.ts +25 -6
  35. package/src/index.ts +7 -3
  36. package/src/lib/DataEntity.ts +4 -2
@@ -0,0 +1,195 @@
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 AuthManager_1 = require("../../../lib/AuthManager");
16
+ const index_1 = __importDefault(require("../index"));
17
+ const RestClient_1 = __importDefault(require("../../../lib/RestClient"));
18
+ const WSCoordinator_1 = __importDefault(require("./WSCoordinator"));
19
+ class WrappedClient extends index_1.default {
20
+ constructor() {
21
+ super(...arguments);
22
+ this.interceptor = undefined;
23
+ }
24
+ intercept(interceptor) {
25
+ this.interceptor = interceptor;
26
+ }
27
+ emit(event, data) {
28
+ super.emit(event, data);
29
+ if (this.interceptor) {
30
+ this.interceptor(event, data);
31
+ }
32
+ }
33
+ }
34
+ class BrowserWebSocketClient extends RestClient_1.default {
35
+ constructor(baseUrl, auth, appId, supernetType, logger) {
36
+ const socketClient = new WrappedClient(baseUrl, auth, appId, supernetType, logger);
37
+ super(socketClient.baseUrl, auth, logger);
38
+ this.isPrimary = false;
39
+ this._isConnected = false;
40
+ this.socketClient = socketClient;
41
+ this.appId = appId;
42
+ this.baseUrl = socketClient.baseUrl;
43
+ this._supernetType = supernetType;
44
+ this.coordinator = new WSCoordinator_1.default({
45
+ onAuthChanged: this.handleAuthChanged.bind(this),
46
+ onRoleChange: this.handleRoleChange.bind(this),
47
+ onConnectionToggle: this.handleConnectionToggle.bind(this),
48
+ onMessageFromPrimary: this.handleMessageFromPrimary.bind(this),
49
+ onSendRequest: this.handleSendRequest.bind(this)
50
+ }, logger);
51
+ this.auth.on('updated', this.handleAuthUpdated.bind(this));
52
+ this.socketClient.intercept(this.handleSocketEvent.bind(this));
53
+ }
54
+ get isConnected() {
55
+ return this.isPrimary ? this.socketClient.isConnected : this._isConnected;
56
+ }
57
+ get supernetType() {
58
+ return this.isPrimary ? this.socketClient.supernetType : this._supernetType;
59
+ }
60
+ connect() {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ const isPrimary = yield this.coordinator.initialize();
63
+ this.isPrimary = isPrimary;
64
+ if (isPrimary) {
65
+ yield this.socketClient.connect();
66
+ }
67
+ else {
68
+ this.coordinator.connect();
69
+ }
70
+ });
71
+ }
72
+ disconnect() {
73
+ if (this.isPrimary) {
74
+ this.socketClient.disconnect();
75
+ }
76
+ else {
77
+ this.coordinator.disconnect();
78
+ }
79
+ }
80
+ switchNetwork(supernetType) {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ if (this.isPrimary) {
83
+ return this.socketClient.switchNetwork(supernetType);
84
+ }
85
+ return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
86
+ this.once('changeNetwork', ({ network }) => {
87
+ this._supernetType = network;
88
+ resolve(network);
89
+ });
90
+ yield this.send('changeNetwork', supernetType);
91
+ }));
92
+ });
93
+ }
94
+ send(messageType, data) {
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ if (this.isPrimary) {
97
+ return this.socketClient.send(messageType, data);
98
+ }
99
+ return this.coordinator.sendToSocket(messageType, data);
100
+ });
101
+ }
102
+ handleAuthChanged(isAuthenticated) {
103
+ if (this.auth instanceof AuthManager_1.TokenAuthManager) {
104
+ throw new Error('TokenAuthManager is not supported in multi client mode');
105
+ }
106
+ if (this.auth.isAuthenticated !== isAuthenticated) {
107
+ if (isAuthenticated) {
108
+ this.auth.authenticate();
109
+ }
110
+ else {
111
+ this.auth.clear();
112
+ }
113
+ }
114
+ }
115
+ handleSocketEvent(eventType, payload) {
116
+ if (this.isPrimary) {
117
+ this.coordinator.broadcastSocketEvent(eventType, payload);
118
+ this.emit(eventType, payload);
119
+ }
120
+ }
121
+ handleAuthUpdated(isAuthenticated) {
122
+ this.coordinator.changeAuthState(isAuthenticated);
123
+ }
124
+ handleRoleChange(isPrimary) {
125
+ this.isPrimary = isPrimary;
126
+ if (isPrimary && !this.socketClient.isConnected && this.isConnected) {
127
+ this.socketClient.connect();
128
+ }
129
+ else if (!isPrimary && this.socketClient.isConnected) {
130
+ this.socketClient.disconnect();
131
+ }
132
+ }
133
+ handleConnectionToggle(isConnected) {
134
+ if (this.isPrimary) {
135
+ if (isConnected && !this.socketClient.isConnected) {
136
+ this.socketClient.connect();
137
+ }
138
+ else if (!isConnected && this.socketClient.isConnected) {
139
+ this.socketClient.disconnect();
140
+ }
141
+ }
142
+ }
143
+ /**
144
+ * Emit events from socket to listeners
145
+ * @param message
146
+ */
147
+ handleMessageFromPrimary(message) {
148
+ if (this.isPrimary) {
149
+ throw new Error('Received message from primary socket, but it is primary');
150
+ }
151
+ this._logger.debug('Received message from primary client:', message.type, message.payload);
152
+ if (message.type === 'primary-present') {
153
+ const shouldUpdateStatus = message.payload.connected !== this._isConnected;
154
+ if (shouldUpdateStatus) {
155
+ this._isConnected = message.payload.connected;
156
+ if (message.payload.connected) {
157
+ this._logger.debug('Primary socket is active emitting connected event');
158
+ this.emit('connected', { network: this._supernetType });
159
+ }
160
+ else {
161
+ this._logger.debug('Primary socket is inactive emitting disconnected event');
162
+ this.emit('disconnected', { code: 5000, reason: 'Primary socket disconnected' });
163
+ }
164
+ }
165
+ return;
166
+ }
167
+ const event = message.payload;
168
+ switch (event.eventType) {
169
+ case 'connected': {
170
+ if (!this._isConnected) {
171
+ this._isConnected = true;
172
+ this.emit('connected', { network: this._supernetType });
173
+ }
174
+ return;
175
+ }
176
+ case 'disconnected': {
177
+ this._isConnected = false;
178
+ this.emit('disconnected', event.payload);
179
+ return;
180
+ }
181
+ default: {
182
+ this.emit(event.eventType, event.payload);
183
+ }
184
+ }
185
+ }
186
+ handleSendRequest(message) {
187
+ if (!this.isPrimary) {
188
+ // Should never happen, but just in case
189
+ return Promise.resolve();
190
+ }
191
+ return this.socketClient.send(message.payload.messageType, message.payload.data);
192
+ }
193
+ }
194
+ exports.default = BrowserWebSocketClient;
195
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ApiClient/WebSocketClient/BrowserWebSocketClient/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
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
+ };
35
+ }
36
+ /**
37
+ * Sent by the primary tab to notify the secondary tabs that the primary tab is still alive.
38
+ * @param connected - true if the primary tab is connected to the server, false otherwise.
39
+ */
40
+ export interface Heartbeat {
41
+ type: 'primary-present';
42
+ payload: {
43
+ connected: boolean;
44
+ };
45
+ }
46
+ /**
47
+ * Used to tell the primary tab to connect/disconnect socket.
48
+ * @param connected - true to connect, false to disconnect.
49
+ */
50
+ export interface ConnectionToggle {
51
+ type: 'connection-toggle';
52
+ payload: {
53
+ connected: boolean;
54
+ };
55
+ }
56
+ /**
57
+ * Sent by tab when it is opened to notify other tabs. If another tab is present,
58
+ * it will respond with {@link Heartbeat}.
59
+ */
60
+ export interface ClientAnnounce {
61
+ type: 'announce';
62
+ }
63
+ /**
64
+ * Sent by the client to let other know that it is claiming the primary role.
65
+ */
66
+ export interface PrimaryClaim {
67
+ type: 'primary-claim';
68
+ }
69
+ /**
70
+ * Sent by the client to let other know that it is releasing the primary role.
71
+ * This usually happens when the tab is closed.
72
+ */
73
+ export interface PrimaryRelease {
74
+ type: 'primary-release';
75
+ }
76
+ /**
77
+ * Sent by the tab where user has auth state changed.
78
+ * @param authenticated - true if the user is authenticated, false otherwise.
79
+ */
80
+ export interface AuthenticationChange {
81
+ type: 'authentication';
82
+ payload: {
83
+ authenticated: boolean;
84
+ };
85
+ }
86
+ export type ChannelMessage = AuthenticationChange | SocketEventReceived | SendSocketMessage | SocketMessageAck | ConnectionToggle | Heartbeat | ClientAnnounce | PrimaryClaim | PrimaryRelease;
87
+ /**
88
+ * Envelope for messages sent between tabs.
89
+ * @param id - Unique message ID.
90
+ * @param senderId - ID of the tab that sent the message.
91
+ * @param recipientId - ID of the tab that should receive the message. If not specified, the message will be broadcasted to all tabs.
92
+ * @param timestamp - Timestamp of the message.
93
+ * @param payload - Message payload.
94
+ */
95
+ export interface MessageEnvelope {
96
+ id: string;
97
+ senderId: string;
98
+ recipientId?: string;
99
+ timestamp: number;
100
+ payload: ChannelMessage;
101
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/ApiClient/WebSocketClient/BrowserWebSocketClient/types.ts"],"names":[],"mappings":""}
@@ -135,3 +135,4 @@ export type SocketEventMap = {
135
135
  toastMessage: ToastMessage;
136
136
  artistCancelConfirmation: ArtistCancelConfirmation;
137
137
  };
138
+ export type SocketEventName = keyof SocketEventMap;
@@ -1,10 +1,10 @@
1
1
  import { MessageType, SocketMessageMap } from './messages';
2
2
  import { SocketEventMap } from './events';
3
3
  import RestClient from '../../lib/RestClient';
4
- import { SupernetType } from './types';
4
+ import { IWebSocketClient, SupernetType } from './types';
5
5
  import { Logger } from '../../lib/DefaultLogger';
6
6
  import { AuthManager } from '../../lib/AuthManager';
7
- declare class WebSocketClient extends RestClient<SocketEventMap> {
7
+ declare class WebSocketClient extends RestClient<SocketEventMap> implements IWebSocketClient {
8
8
  appId: string;
9
9
  baseUrl: string;
10
10
  private socket;
@@ -1 +1,14 @@
1
+ import { MessageType, SocketMessageMap } from './messages';
2
+ import RestClient from '../../lib/RestClient';
3
+ import { SocketEventMap } from './events';
1
4
  export type SupernetType = 'relaxed' | 'fast';
5
+ export interface IWebSocketClient extends RestClient<SocketEventMap> {
6
+ appId: string;
7
+ baseUrl: string;
8
+ isConnected: boolean;
9
+ supernetType: SupernetType;
10
+ connect(): Promise<void>;
11
+ disconnect(): void;
12
+ send<T extends MessageType>(messageType: T, data: SocketMessageMap[T]): Promise<void>;
13
+ switchNetwork(supernetType: SupernetType): Promise<SupernetType>;
14
+ }
@@ -1,10 +1,9 @@
1
1
  import RestClient from '../lib/RestClient';
2
- import WebSocketClient from './WebSocketClient';
3
2
  import TypedEventEmitter from '../lib/TypedEventEmitter';
4
3
  import { ApiClientEvents } from './events';
5
4
  import { ServerConnectData, ServerDisconnectData } from './WebSocketClient/events';
6
5
  import { JSONValue } from '../types/json';
7
- import { SupernetType } from './WebSocketClient/types';
6
+ import { IWebSocketClient, SupernetType } from './WebSocketClient/types';
8
7
  import { Logger } from '../lib/DefaultLogger';
9
8
  import { AuthManager } from '../lib/AuthManager';
10
9
  export interface ApiResponse<D = JSONValue> {
@@ -42,7 +41,7 @@ declare class ApiClient extends TypedEventEmitter<ApiClientEvents> {
42
41
  constructor({ baseUrl, socketUrl, appId, networkType, authType, logger, disableSocket }: ApiClientOptions);
43
42
  get isAuthenticated(): boolean;
44
43
  get auth(): AuthManager;
45
- get socket(): WebSocketClient;
44
+ get socket(): IWebSocketClient;
46
45
  get rest(): RestClient;
47
46
  get socketEnabled(): boolean;
48
47
  handleSocketConnect({ network }: ServerConnectData): void;
@@ -10,6 +10,8 @@ const TypedEventEmitter_1 = __importDefault(require("../lib/TypedEventEmitter"))
10
10
  const ErrorCode_1 = require("./WebSocketClient/ErrorCode");
11
11
  const CookieAuthManager_1 = __importDefault(require("../lib/AuthManager/CookieAuthManager"));
12
12
  const AuthManager_1 = require("../lib/AuthManager");
13
+ const isNodejs_1 = __importDefault(require("../lib/isNodejs"));
14
+ const BrowserWebSocketClient_1 = __importDefault(require("./WebSocketClient/BrowserWebSocketClient"));
13
15
  const WS_RECONNECT_ATTEMPTS = 5;
14
16
  class ApiError extends Error {
15
17
  constructor(status, payload) {
@@ -29,7 +31,13 @@ class ApiClient extends TypedEventEmitter_1.default {
29
31
  this._auth =
30
32
  authType === 'token' ? new AuthManager_1.TokenAuthManager(baseUrl, logger) : new CookieAuthManager_1.default(logger);
31
33
  this._rest = new RestClient_1.default(baseUrl, this._auth, logger);
32
- this._socket = new WebSocketClient_1.default(socketUrl, this._auth, appId, networkType, logger);
34
+ // Use coordinated WebSocket client in browser, regular in Node.js
35
+ if (this._auth instanceof AuthManager_1.TokenAuthManager || isNodejs_1.default) {
36
+ this._socket = new WebSocketClient_1.default(socketUrl, this._auth, appId, networkType, logger);
37
+ }
38
+ else {
39
+ this._socket = new BrowserWebSocketClient_1.default(socketUrl, this._auth, appId, networkType, logger);
40
+ }
33
41
  this._disableSocket = disableSocket;
34
42
  this._auth.on('updated', this.handleAuthUpdated.bind(this));
35
43
  this._socket.on('connected', this.handleSocketConnect.bind(this));
@@ -55,14 +63,24 @@ class ApiClient extends TypedEventEmitter_1.default {
55
63
  this.emit('connected', { network });
56
64
  }
57
65
  handleSocketDisconnect(data) {
66
+ // If user is not authenticated, we don't need to reconnect
67
+ if (!this.auth.isAuthenticated) {
68
+ this.emit('disconnected', data);
69
+ return;
70
+ }
58
71
  if (!data.code || (0, ErrorCode_1.isNotRecoverable)(data.code)) {
72
+ // If this is browser, another tab is probably claiming the connection, so we don't need to reconnect
73
+ if (this._socket instanceof BrowserWebSocketClient_1.default &&
74
+ data.code === ErrorCode_1.ErrorCode.SWITCH_CONNECTION) {
75
+ this.logger.debug('Switching network connection, not reconnecting');
76
+ return;
77
+ }
59
78
  this.auth.clear();
60
79
  this.emit('disconnected', data);
61
80
  this.logger.error('Not recoverable socket error', data);
62
81
  return;
63
82
  }
64
83
  if (this._reconnectAttempts <= 0) {
65
- this.auth.clear();
66
84
  this.emit('disconnected', data);
67
85
  this._reconnectAttempts = WS_RECONNECT_ATTEMPTS;
68
86
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ApiClient/index.ts"],"names":[],"mappings":";;;;;;AAAA,mEAA2C;AAC3C,wEAAgD;AAChD,iFAAyD;AAGzD,2DAA+D;AAI/D,6FAAqE;AACrE,oDAAmE;AAEnE,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAchC,MAAa,QAAS,SAAQ,KAAK;IAGjC,YAAY,MAAc,EAAE,OAAyB;QACnD,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AARD,4BAQC;AAYD,MAAM,SAAU,SAAQ,2BAAkC;IASxD,YAAY,EACV,OAAO,EACP,SAAS,EACT,KAAK,EACL,WAAW,EACX,QAAQ,EACR,MAAM,EACN,aAAa,GAAG,KAAK,EACJ;QACjB,KAAK,EAAE,CAAC;QAZF,uBAAkB,GAAG,qBAAqB,CAAC;QAC3C,mBAAc,GAAY,KAAK,CAAC;QAYtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK;YACR,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,8BAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,2BAAiB,CAAC,MAAM,CAAC,CAAC;QAC/F,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAU,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,IAAI,yBAAe,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACtF,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;IACnC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;IAC9B,CAAC;IAED,mBAAmB,CAAC,EAAE,OAAO,EAAqB;QAChD,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,sBAAsB,CAAC,IAA0B;QAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAA,4BAAgB,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC;YAChD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB,CAAC,eAAwB;QACxC,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;CACF;AAED,kBAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ApiClient/index.ts"],"names":[],"mappings":"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"}
@@ -122,7 +122,7 @@ declare class Job extends DataEntity<JobData, JobEventMap> {
122
122
  _syncWithRestData(data: RawJob): Promise<void>;
123
123
  private handleUpdated;
124
124
  private handleEnhancementUpdate;
125
- getResultData(): Promise<import("buffer").Blob>;
125
+ getResultData(): Promise<Blob>;
126
126
  /**
127
127
  * Enhance the image using the Flux model. This method will create a new project with the
128
128
  * enhancement parameters and use the result image of the current job as the starting image.
package/dist/index.d.ts CHANGED
@@ -30,7 +30,7 @@ export interface SogniClientConfig {
30
30
  socketEndpoint?: string;
31
31
  /**
32
32
  * Disable WebSocket connection. Useful for testing or when WebSocket is not needed.
33
- * Note that many may not work without WebSocket connection.
33
+ * Note that many APIs may not work without WebSocket connection.
34
34
  * @experimental
35
35
  * @internal
36
36
  */
package/dist/index.js CHANGED
@@ -95,9 +95,13 @@ class SogniClient {
95
95
  throw Error('This method should only be called when using cookie auth');
96
96
  }
97
97
  try {
98
- yield this.apiClient.rest.get('/v1/account/me');
98
+ const res = yield this.apiClient.rest.get('/v1/account/me');
99
99
  yield auth.authenticate();
100
- yield this.account.me();
100
+ this.currentAccount._update({
101
+ username: res.data.username,
102
+ email: res.data.currentEmail,
103
+ walletAddress: res.data.walletAddress
104
+ });
101
105
  return true;
102
106
  }
103
107
  catch (e) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,cAAc;AACd,wDAAmC;AACnC,8EAAsD;AA4CnC,yBA5CZ,wBAAc,CA4CY;AA3CjC,YAAY;AACZ,yDAA+D;AA0CtD,yFA1CW,oBAAQ,OA0CX;AAvCjB,QAAQ;AACR,uDAAsE;AACtE,sEAA8C;AAC9C,eAAe;AACf,0DAAqC;AACrC,yDAAgD;AAkCb,cAlC5B,aAAG,CAkC4B;AAjCtC,iEAA4D;AAiCpB,kBAjCjC,iBAAO,CAiCiC;AAhC/C,4CAQ0B;AAwBuB,kGA1B/C,yBAAiB,OA0B+C;AAAE,oGAzBlE,2BAAmB,OAyBkE;AAvBvF,YAAY;AACZ,oDAA+B;AAI/B,mDAAuF;AAuEvF,MAAa,WAAW;IAOtB,YAAoB,MAAiB;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAU,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAW,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,eAAQ,CAAC,MAAM,CAAC,CAAC;QAElC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACG,SAAS,CAAC,MAAqB;;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YACjC,IAAI,CAAC,CAAC,IAAI,YAAY,8BAAgB,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC1E,CAAC;YACD,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAC1B,CAAC;KAAA;IAED;;;;OAIG;IACG,SAAS;;YACb,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YACjC,IAAI,CAAC,CAAC,IAAI,YAAY,+BAAiB,CAAC,EAAE,CAAC;gBACzC,MAAM,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAsB,gBAAgB,CAAC,CAAC;gBACjF,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;oBAC1B,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ;oBAC3B,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;oBAC5B,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa;iBACtC,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAC1D,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;KAAA;IAED;;;OAGG;IACH,MAAM,CAAO,cAAc,CAAC,MAAyB;;YACnD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,sBAAsB,CAAC;YACnE,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,uBAAuB,CAAC;YACxE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,6BAAa,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;YAC7E,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YAExE,MAAM,MAAM,GAAG,IAAI,mBAAS,CAAC;gBAC3B,OAAO,EAAE,YAAY;gBACrB,SAAS,EAAE,cAAc;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,OAAO;gBACpB,MAAM;gBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO;gBACpC,aAAa,EAAE,MAAM,CAAC,aAAa;aACpC,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,sBAAY,CAAC;gBAC9B,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU;gBAC9C,OAAO,EAAE,GAAG;gBACZ,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;aACtC,CAAC,CAAC;YACH,OAAO,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC;KAAA;CACF;AArFD,kCAqFC"}
@@ -18,9 +18,11 @@ class DataEntity extends TypedEventEmitter_1.default {
18
18
  _update(delta) {
19
19
  //@ts-ignore
20
20
  const changedKeys = Object.keys(delta).filter((key) => this.data[key] !== delta[key]);
21
- this.data = Object.assign(Object.assign({}, this.data), delta);
22
21
  this.lastUpdated = new Date();
23
- this.emit('updated', changedKeys);
22
+ if (changedKeys.length > 0) {
23
+ this.data = Object.assign(Object.assign({}, this.data), delta);
24
+ this.emit('updated', changedKeys);
25
+ }
24
26
  }
25
27
  /**
26
28
  * Get a copy of the entity's data
@@ -1 +1 @@
1
- {"version":3,"file":"DataEntity.js","sourceRoot":"","sources":["../../src/lib/DataEntity.ts"],"names":[],"mappings":";;;;;AAAA,mCAAmC;AACnC,4EAAoD;AASpD,MAAe,UAAqD,SAAQ,2BAAoB;IAK9F,YAAY,IAAO;QACjB,KAAK,EAAE,CAAC;QAHA,gBAAW,GAAS,IAAI,IAAI,EAAE,CAAC;QAIvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,KAAiB;QACvB,YAAY;QACZ,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,IAAI,mCAAQ,IAAI,CAAC,IAAI,GAAK,KAAK,CAAE,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAA,kBAAS,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF;AAED,kBAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"DataEntity.js","sourceRoot":"","sources":["../../src/lib/DataEntity.ts"],"names":[],"mappings":";;;;;AAAA,mCAAmC;AACnC,4EAAoD;AASpD,MAAe,UAAqD,SAAQ,2BAAoB;IAK9F,YAAY,IAAO;QACjB,KAAK,EAAE,CAAC;QAHA,gBAAW,GAAS,IAAI,IAAI,EAAE,CAAC;QAIvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,KAAiB;QACvB,YAAY;QACZ,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,mCAAQ,IAAI,CAAC,IAAI,GAAK,KAAK,CAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAA,kBAAS,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF;AAED,kBAAe,UAAU,CAAC"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "4.0.0-alpha.12",
6
+ "version": "4.0.0-alpha.14",
7
7
  "description": "Sogni Supernet Client",
8
8
  "main": "dist/index.js",
9
9
  "types": "dist/index.d.ts",
@@ -37,6 +37,9 @@
37
37
  "homepage": "https://github.com/Sogni-AI/sogni-client#readme",
38
38
  "dependencies": {
39
39
  "@lukeed/uuid": "^2.0.1",
40
+ "@types/js-cookie": "^3.0.6",
41
+ "@types/lodash": "^4.17.13",
42
+ "@types/ws": "^8.5.13",
40
43
  "ethers": "^6.13.4",
41
44
  "isomorphic-ws": "^5.0.0",
42
45
  "js-cookie": "^3.0.5",
@@ -47,9 +50,6 @@
47
50
  "devDependencies": {
48
51
  "@semantic-release/changelog": "^6.0.3",
49
52
  "@semantic-release/git": "^10.0.1",
50
- "@types/js-cookie": "^3.0.6",
51
- "@types/lodash": "^4.17.13",
52
- "@types/ws": "^8.5.13",
53
53
  "prettier": "^3.3.3",
54
54
  "rimraf": "^6.0.1",
55
55
  "semantic-release": "^24.2.1",
@@ -43,7 +43,12 @@ class AccountApi extends ApiGroup {
43
43
 
44
44
  constructor(config: ApiConfig) {
45
45
  super(config);
46
+ this.currentAccount._update({
47
+ networkStatus: this.client.socket.isConnected ? 'connected' : 'disconnected',
48
+ network: this.client.socket.supernetType
49
+ });
46
50
  this.client.socket.on('balanceUpdate', this.handleBalanceUpdate.bind(this));
51
+ this.client.socket.on('changeNetwork', this.handleChangeNetwork.bind(this));
47
52
  this.client.on('connected', this.handleServerConnected.bind(this));
48
53
  this.client.on('disconnected', this.handleServerDisconnected.bind(this));
49
54
  this.client.auth.on('updated', this.handleAuthUpdated.bind(this));
@@ -53,6 +58,10 @@ class AccountApi extends ApiGroup {
53
58
  this.currentAccount._update({ balance: data });
54
59
  }
55
60
 
61
+ private handleChangeNetwork({ network }: { network: SupernetType }) {
62
+ this.currentAccount._update({ network, networkStatus: 'connected' });
63
+ }
64
+
56
65
  private handleServerConnected({ network }: { network: SupernetType }) {
57
66
  this.currentAccount._update({
58
67
  networkStatus: 'connected',
@@ -70,6 +79,8 @@ class AccountApi extends ApiGroup {
70
79
  private handleAuthUpdated(isAuthenticated: boolean) {
71
80
  if (!isAuthenticated) {
72
81
  this.currentAccount._clear();
82
+ } else {
83
+ this.me();
73
84
  }
74
85
  }
75
86
 
@@ -137,7 +148,6 @@ class AccountApi extends ApiGroup {
137
148
  } else {
138
149
  await auth.authenticate();
139
150
  }
140
- await this.me();
141
151
  return res.data;
142
152
  }
143
153
 
@@ -173,7 +183,6 @@ class AccountApi extends ApiGroup {
173
183
  } else {
174
184
  await auth.authenticate();
175
185
  }
176
- await this.me();
177
186
  return res.data;
178
187
  }
179
188