@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
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { IWebSocketClient, SupernetType } from '../types';
|
|
2
|
+
import { AuthManager } from '../../../lib/AuthManager';
|
|
3
|
+
import { Logger } from '../../../lib/DefaultLogger';
|
|
4
|
+
import RestClient from '../../../lib/RestClient';
|
|
5
|
+
import { SocketEventMap } from '../events';
|
|
6
|
+
import { MessageType, SocketMessageMap } from '../messages';
|
|
7
|
+
declare class BrowserWebSocketClient extends RestClient<SocketEventMap> implements IWebSocketClient {
|
|
8
|
+
appId: string;
|
|
9
|
+
baseUrl: string;
|
|
10
|
+
private socketClient;
|
|
11
|
+
private coordinator;
|
|
12
|
+
private _isConnected;
|
|
13
|
+
private _supernetType;
|
|
14
|
+
constructor(baseUrl: string, auth: AuthManager, appId: string, supernetType: SupernetType, logger: Logger);
|
|
15
|
+
get isConnected(): boolean;
|
|
16
|
+
get supernetType(): SupernetType;
|
|
17
|
+
connect(): Promise<void>;
|
|
18
|
+
disconnect(): Promise<void>;
|
|
19
|
+
switchNetwork(supernetType: SupernetType): Promise<SupernetType>;
|
|
20
|
+
send<T extends MessageType>(messageType: T, data: SocketMessageMap[T]): Promise<void>;
|
|
21
|
+
private handleMessage;
|
|
22
|
+
private handleNotification;
|
|
23
|
+
private handleAuthChanged;
|
|
24
|
+
private handleSocketEvent;
|
|
25
|
+
private handleAuthUpdated;
|
|
26
|
+
private handleRoleChange;
|
|
27
|
+
}
|
|
28
|
+
export default BrowserWebSocketClient;
|
|
@@ -0,0 +1,203 @@
|
|
|
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 ChannelCoordinator_1 = __importDefault(require("./ChannelCoordinator"));
|
|
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._isConnected = false;
|
|
39
|
+
this.socketClient = socketClient;
|
|
40
|
+
this.appId = appId;
|
|
41
|
+
this.baseUrl = socketClient.baseUrl;
|
|
42
|
+
this._supernetType = supernetType;
|
|
43
|
+
this.coordinator = new ChannelCoordinator_1.default({
|
|
44
|
+
callbacks: {
|
|
45
|
+
onRoleChange: this.handleRoleChange.bind(this),
|
|
46
|
+
onMessage: this.handleMessage.bind(this),
|
|
47
|
+
onNotification: this.handleNotification.bind(this)
|
|
48
|
+
},
|
|
49
|
+
logger
|
|
50
|
+
});
|
|
51
|
+
this.auth.on('updated', this.handleAuthUpdated.bind(this));
|
|
52
|
+
this.socketClient.intercept(this.handleSocketEvent.bind(this));
|
|
53
|
+
}
|
|
54
|
+
get isConnected() {
|
|
55
|
+
return this.coordinator.isPrimary ? this.socketClient.isConnected : this._isConnected;
|
|
56
|
+
}
|
|
57
|
+
get supernetType() {
|
|
58
|
+
return this.coordinator.isPrimary ? this.socketClient.supernetType : this._supernetType;
|
|
59
|
+
}
|
|
60
|
+
connect() {
|
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
yield this.coordinator.isReady();
|
|
63
|
+
if (this.coordinator.isPrimary) {
|
|
64
|
+
yield this.socketClient.connect();
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
return this.coordinator.sendMessage({
|
|
68
|
+
type: 'connect'
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
disconnect() {
|
|
74
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
yield this.coordinator.isReady();
|
|
76
|
+
if (this.coordinator.isPrimary) {
|
|
77
|
+
this.socketClient.disconnect();
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
this.coordinator.sendMessage({
|
|
81
|
+
type: 'disconnect'
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
switchNetwork(supernetType) {
|
|
87
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
yield this.coordinator.isReady();
|
|
89
|
+
if (this.coordinator.isPrimary) {
|
|
90
|
+
return this.socketClient.switchNetwork(supernetType);
|
|
91
|
+
}
|
|
92
|
+
yield this.coordinator.sendMessage({
|
|
93
|
+
type: 'switchNetwork',
|
|
94
|
+
payload: supernetType
|
|
95
|
+
});
|
|
96
|
+
this._supernetType = supernetType;
|
|
97
|
+
return supernetType;
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
send(messageType, data) {
|
|
101
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
102
|
+
yield this.coordinator.isReady();
|
|
103
|
+
if (this.coordinator.isPrimary) {
|
|
104
|
+
if (!this.socketClient.isConnected) {
|
|
105
|
+
yield this.socketClient.connect();
|
|
106
|
+
}
|
|
107
|
+
return this.socketClient.send(messageType, data);
|
|
108
|
+
}
|
|
109
|
+
return this.coordinator.sendMessage({
|
|
110
|
+
type: 'socket-send',
|
|
111
|
+
payload: { type: messageType, data }
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
handleMessage(message) {
|
|
116
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
117
|
+
this._logger.debug('Received control message', message);
|
|
118
|
+
switch (message.type) {
|
|
119
|
+
case 'socket-send': {
|
|
120
|
+
if (!this.socketClient.isConnected) {
|
|
121
|
+
yield this.socketClient.connect();
|
|
122
|
+
}
|
|
123
|
+
return this.socketClient.send(message.payload.type, message.payload.data);
|
|
124
|
+
}
|
|
125
|
+
case 'connect': {
|
|
126
|
+
if (!this.socketClient.isConnected) {
|
|
127
|
+
yield this.socketClient.connect();
|
|
128
|
+
}
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
case 'disconnect': {
|
|
132
|
+
if (this.socketClient.isConnected) {
|
|
133
|
+
this.socketClient.disconnect();
|
|
134
|
+
}
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
case 'switchNetwork': {
|
|
138
|
+
yield this.switchNetwork(message.payload);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
default: {
|
|
142
|
+
this._logger.error('Received unknown message type:', message);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
handleNotification(notification) {
|
|
148
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
149
|
+
this._logger.debug('Received notification', notification.type, notification.payload);
|
|
150
|
+
switch (notification.type) {
|
|
151
|
+
case 'socket-event': {
|
|
152
|
+
this.emit(notification.payload.type, notification.payload.data);
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
case 'auth-state-changed': {
|
|
156
|
+
this.handleAuthChanged(notification.payload);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
default: {
|
|
160
|
+
this._logger.error('Received unknown notification type:', notification);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
handleAuthChanged(isAuthenticated) {
|
|
166
|
+
if (this.auth instanceof AuthManager_1.TokenAuthManager) {
|
|
167
|
+
throw new Error('TokenAuthManager is not supported in multi client mode');
|
|
168
|
+
}
|
|
169
|
+
if (this.auth.isAuthenticated !== isAuthenticated) {
|
|
170
|
+
if (isAuthenticated) {
|
|
171
|
+
this.auth.authenticate();
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
this.auth.clear();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
handleSocketEvent(eventType, payload) {
|
|
179
|
+
if (this.coordinator.isPrimary) {
|
|
180
|
+
this.coordinator.notify({
|
|
181
|
+
type: 'socket-event',
|
|
182
|
+
payload: { type: eventType, data: payload }
|
|
183
|
+
});
|
|
184
|
+
this.emit(eventType, payload);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
handleAuthUpdated(isAuthenticated) {
|
|
188
|
+
this.coordinator.notify({
|
|
189
|
+
type: 'auth-state-changed',
|
|
190
|
+
payload: isAuthenticated
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
handleRoleChange(isPrimary) {
|
|
194
|
+
if (isPrimary && !this.socketClient.isConnected && this.isConnected) {
|
|
195
|
+
this.socketClient.connect();
|
|
196
|
+
}
|
|
197
|
+
else if (!isPrimary && this.socketClient.isConnected) {
|
|
198
|
+
this.socketClient.disconnect();
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
exports.default = BrowserWebSocketClient;
|
|
203
|
+
//# 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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"}
|
|
@@ -44,6 +44,11 @@ export type JobProgressData = {
|
|
|
44
44
|
step: number;
|
|
45
45
|
stepCount: number;
|
|
46
46
|
};
|
|
47
|
+
export type JobETAData = {
|
|
48
|
+
jobID: string;
|
|
49
|
+
imgID?: string;
|
|
50
|
+
etaSeconds: number;
|
|
51
|
+
};
|
|
47
52
|
export type JobResultData = {
|
|
48
53
|
jobID: string;
|
|
49
54
|
imgID: string;
|
|
@@ -51,6 +56,7 @@ export type JobResultData = {
|
|
|
51
56
|
lastSeed: string;
|
|
52
57
|
userCanceled: boolean;
|
|
53
58
|
triggeredNSFWFilter: boolean;
|
|
59
|
+
resultUrl?: string;
|
|
54
60
|
};
|
|
55
61
|
export type JobStateData = {
|
|
56
62
|
type: 'initiatingModel' | 'jobStarted';
|
|
@@ -109,6 +115,11 @@ export type SocketEventMap = {
|
|
|
109
115
|
* @event WebSocketClient#jobProgress - Job progress update
|
|
110
116
|
*/
|
|
111
117
|
jobProgress: JobProgressData;
|
|
118
|
+
/**
|
|
119
|
+
* @event WebSocketClient#jobETA - Job ETA update (sent every second during inference by ComfyUI workers)
|
|
120
|
+
* Note: Only available for ComfyUI-based workers during video generation
|
|
121
|
+
*/
|
|
122
|
+
jobETA: JobETAData;
|
|
112
123
|
/**
|
|
113
124
|
* @event WebSocketClient#jobResult - Job result received
|
|
114
125
|
*/
|
|
@@ -135,3 +146,4 @@ export type SocketEventMap = {
|
|
|
135
146
|
toastMessage: ToastMessage;
|
|
136
147
|
artistCancelConfirmation: ArtistCancelConfirmation;
|
|
137
148
|
};
|
|
149
|
+
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;
|
|
@@ -80,7 +80,7 @@ class WebSocketClient extends RestClient_1.default {
|
|
|
80
80
|
socket.onmessage = null;
|
|
81
81
|
socket.onopen = null;
|
|
82
82
|
this.stopPing();
|
|
83
|
-
socket.close();
|
|
83
|
+
socket.close(1000, 'Client disconnected');
|
|
84
84
|
}
|
|
85
85
|
startPing(socket) {
|
|
86
86
|
if (!isNodejs_1.default) {
|
|
@@ -139,9 +139,16 @@ class WebSocketClient extends RestClient_1.default {
|
|
|
139
139
|
this.emit('connected', { network: this._supernetType });
|
|
140
140
|
}
|
|
141
141
|
handleClose(e) {
|
|
142
|
-
|
|
142
|
+
const socket = e.target;
|
|
143
|
+
socket.onerror = null;
|
|
144
|
+
socket.onmessage = null;
|
|
145
|
+
socket.onopen = null;
|
|
146
|
+
if (socket === this.socket || !this.socket) {
|
|
143
147
|
this._logger.info('WebSocket disconnected, cleanup', e);
|
|
144
|
-
this.
|
|
148
|
+
if (socket === this.socket) {
|
|
149
|
+
this.stopPing();
|
|
150
|
+
this.socket = null;
|
|
151
|
+
}
|
|
145
152
|
this.emit('disconnected', {
|
|
146
153
|
code: e.code,
|
|
147
154
|
reason: e.reason
|
|
@@ -183,6 +190,9 @@ class WebSocketClient extends RestClient_1.default {
|
|
|
183
190
|
}
|
|
184
191
|
send(messageType, data) {
|
|
185
192
|
return __awaiter(this, void 0, void 0, function* () {
|
|
193
|
+
if (!this.isConnected) {
|
|
194
|
+
yield this.connect();
|
|
195
|
+
}
|
|
186
196
|
yield this.waitForConnection();
|
|
187
197
|
this._logger.debug('WebSocket send:', messageType, data);
|
|
188
198
|
this.socket.send(JSON.stringify({ type: messageType, data: (0, base64_1.base64Encode)(JSON.stringify(data)) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ApiClient/WebSocketClient/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ApiClient/WebSocketClient/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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> {
|
|
@@ -30,6 +29,7 @@ export interface ApiClientOptions {
|
|
|
30
29
|
logger: Logger;
|
|
31
30
|
authType: 'token' | 'cookies';
|
|
32
31
|
disableSocket?: boolean;
|
|
32
|
+
multiInstance?: boolean;
|
|
33
33
|
}
|
|
34
34
|
declare class ApiClient extends TypedEventEmitter<ApiClientEvents> {
|
|
35
35
|
readonly appId: string;
|
|
@@ -39,10 +39,10 @@ declare class ApiClient extends TypedEventEmitter<ApiClientEvents> {
|
|
|
39
39
|
private _auth;
|
|
40
40
|
private _reconnectAttempts;
|
|
41
41
|
private _disableSocket;
|
|
42
|
-
constructor({ baseUrl, socketUrl, appId, networkType, authType, logger, disableSocket }: ApiClientOptions);
|
|
42
|
+
constructor({ baseUrl, socketUrl, appId, networkType, authType, logger, disableSocket, multiInstance }: ApiClientOptions);
|
|
43
43
|
get isAuthenticated(): boolean;
|
|
44
44
|
get auth(): AuthManager;
|
|
45
|
-
get socket():
|
|
45
|
+
get socket(): IWebSocketClient;
|
|
46
46
|
get rest(): RestClient;
|
|
47
47
|
get socketEnabled(): boolean;
|
|
48
48
|
handleSocketConnect({ network }: ServerConnectData): void;
|
package/dist/ApiClient/index.js
CHANGED
|
@@ -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) {
|
|
@@ -20,7 +22,7 @@ class ApiError extends Error {
|
|
|
20
22
|
}
|
|
21
23
|
exports.ApiError = ApiError;
|
|
22
24
|
class ApiClient extends TypedEventEmitter_1.default {
|
|
23
|
-
constructor({ baseUrl, socketUrl, appId, networkType, authType, logger, disableSocket = false }) {
|
|
25
|
+
constructor({ baseUrl, socketUrl, appId, networkType, authType, logger, disableSocket = false, multiInstance = false }) {
|
|
24
26
|
super();
|
|
25
27
|
this._reconnectAttempts = WS_RECONNECT_ATTEMPTS;
|
|
26
28
|
this._disableSocket = false;
|
|
@@ -29,7 +31,14 @@ 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
|
-
|
|
34
|
+
const supportMultiInstance = !isNodejs_1.default && this._auth instanceof CookieAuthManager_1.default;
|
|
35
|
+
if (supportMultiInstance && multiInstance) {
|
|
36
|
+
// Use coordinated WebSocket client to share single connection between tabs
|
|
37
|
+
this._socket = new BrowserWebSocketClient_1.default(socketUrl, this._auth, appId, networkType, logger);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this._socket = new WebSocketClient_1.default(socketUrl, this._auth, appId, networkType, logger);
|
|
41
|
+
}
|
|
33
42
|
this._disableSocket = disableSocket;
|
|
34
43
|
this._auth.on('updated', this.handleAuthUpdated.bind(this));
|
|
35
44
|
this._socket.on('connected', this.handleSocketConnect.bind(this));
|
|
@@ -55,14 +64,24 @@ class ApiClient extends TypedEventEmitter_1.default {
|
|
|
55
64
|
this.emit('connected', { network });
|
|
56
65
|
}
|
|
57
66
|
handleSocketDisconnect(data) {
|
|
67
|
+
// If user is not authenticated, we don't need to reconnect
|
|
68
|
+
if (!this.auth.isAuthenticated || data.code === 1000) {
|
|
69
|
+
this.emit('disconnected', data);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
58
72
|
if (!data.code || (0, ErrorCode_1.isNotRecoverable)(data.code)) {
|
|
73
|
+
// If this is browser, another tab is probably claiming the connection, so we don't need to reconnect
|
|
74
|
+
if (this._socket instanceof BrowserWebSocketClient_1.default &&
|
|
75
|
+
data.code === ErrorCode_1.ErrorCode.SWITCH_CONNECTION) {
|
|
76
|
+
this.logger.debug('Switching network connection, not reconnecting');
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
59
79
|
this.auth.clear();
|
|
60
80
|
this.emit('disconnected', data);
|
|
61
81
|
this.logger.error('Not recoverable socket error', data);
|
|
62
82
|
return;
|
|
63
83
|
}
|
|
64
84
|
if (this._reconnectAttempts <= 0) {
|
|
65
|
-
this.auth.clear();
|
|
66
85
|
this.emit('disconnected', data);
|
|
67
86
|
this._reconnectAttempts = WS_RECONNECT_ATTEMPTS;
|
|
68
87
|
return;
|
|
@@ -76,7 +95,7 @@ class ApiClient extends TypedEventEmitter_1.default {
|
|
|
76
95
|
this.socket.disconnect();
|
|
77
96
|
}
|
|
78
97
|
}
|
|
79
|
-
else if (!this._disableSocket) {
|
|
98
|
+
else if (!this._disableSocket && !this.socket.isConnected) {
|
|
80
99
|
this.socket.connect();
|
|
81
100
|
}
|
|
82
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ApiClient/index.ts"],"names":[],"mappings":";;;;;;AAAA,mEAA2C;AAC3C,wEAAgD;AAChD,iFAAyD;AAGzD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ApiClient/index.ts"],"names":[],"mappings":"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"}
|
package/dist/Projects/Job.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export declare const enhancementDefaults: {
|
|
|
16
16
|
startingImageStrength: number;
|
|
17
17
|
steps: number;
|
|
18
18
|
guidance: number;
|
|
19
|
-
|
|
19
|
+
numberOfMedia: number;
|
|
20
20
|
numberOfPreviews: number;
|
|
21
21
|
};
|
|
22
22
|
export type JobStatus = 'pending' | 'initiating' | 'processing' | 'completed' | 'failed' | 'canceled';
|
|
@@ -39,6 +39,17 @@ export interface JobData {
|
|
|
39
39
|
positivePrompt?: string;
|
|
40
40
|
negativePrompt?: string;
|
|
41
41
|
jobIndex?: number;
|
|
42
|
+
/**
|
|
43
|
+
* Estimated time remaining in seconds (for long-running jobs like video generation).
|
|
44
|
+
* Updated by ComfyUI workers during inference.
|
|
45
|
+
* @deprecated Use `eta` instead.
|
|
46
|
+
*/
|
|
47
|
+
etaSeconds?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Estimate completion time of the job (for long-running jobs like video generation).
|
|
50
|
+
* Updated by ComfyUI workers during inference.
|
|
51
|
+
*/
|
|
52
|
+
eta?: Date;
|
|
42
53
|
}
|
|
43
54
|
export interface JobEventMap extends EntityEvents {
|
|
44
55
|
progress: number;
|
|
@@ -91,7 +102,15 @@ declare class Job extends DataEntity<JobData, JobEventMap> {
|
|
|
91
102
|
get resultUrl(): string | null | undefined;
|
|
92
103
|
get imageUrl(): string | undefined;
|
|
93
104
|
get error(): ErrorData | undefined;
|
|
94
|
-
|
|
105
|
+
/**
|
|
106
|
+
* Whether this job has a result media file available for download.
|
|
107
|
+
* Returns true if completed and not NSFW filtered.
|
|
108
|
+
*/
|
|
109
|
+
get hasResultMedia(): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Whether this job produces video output (based on the model used)
|
|
112
|
+
*/
|
|
113
|
+
get type(): 'image' | 'video';
|
|
95
114
|
get enhancedImage(): {
|
|
96
115
|
status: import("./Project").ProjectStatus;
|
|
97
116
|
progress: number;
|
|
@@ -101,7 +120,8 @@ declare class Job extends DataEntity<JobData, JobEventMap> {
|
|
|
101
120
|
} | null;
|
|
102
121
|
/**
|
|
103
122
|
* Get the result URL of the job. This method will make a request to the API to get signed URL.
|
|
104
|
-
* IMPORTANT: URL expires after 30 minutes, so make sure to download the
|
|
123
|
+
* IMPORTANT: URL expires after 30 minutes, so make sure to download the result as soon as possible.
|
|
124
|
+
* For video jobs, this returns a video URL. For image jobs, this returns an image URL.
|
|
105
125
|
*/
|
|
106
126
|
getResultUrl(): Promise<string>;
|
|
107
127
|
/**
|
|
@@ -114,15 +134,35 @@ declare class Job extends DataEntity<JobData, JobEventMap> {
|
|
|
114
134
|
* Name of the worker that is processing this job.
|
|
115
135
|
*/
|
|
116
136
|
get workerName(): string | undefined;
|
|
137
|
+
/**
|
|
138
|
+
* Estimated time remaining in seconds for long-running jobs (e.g., video generation).
|
|
139
|
+
* Only available for ComfyUI-based workers during inference.
|
|
140
|
+
* Returns undefined if no ETA has been received.
|
|
141
|
+
* @deprecated Use `timeLeft` instead.
|
|
142
|
+
*/
|
|
143
|
+
get etaSeconds(): number | undefined;
|
|
144
|
+
/**
|
|
145
|
+
* Estimate completion time of the job.
|
|
146
|
+
* Only available for ComfyUI-based workers during inference.
|
|
147
|
+
* Is useful when data is persisted
|
|
148
|
+
* Returns undefined if no ETA has been received.
|
|
149
|
+
*/
|
|
150
|
+
get eta(): Date | undefined;
|
|
117
151
|
/**
|
|
118
152
|
* Syncs the job data with the data received from the REST API.
|
|
119
153
|
* @internal
|
|
120
154
|
* @param data
|
|
121
155
|
*/
|
|
122
156
|
_syncWithRestData(data: RawJob): Promise<void>;
|
|
157
|
+
/**
|
|
158
|
+
* Updates the job data with the provided delta.
|
|
159
|
+
* @internal
|
|
160
|
+
* @param delta
|
|
161
|
+
*/
|
|
162
|
+
_update(delta: Partial<JobData>): void;
|
|
123
163
|
private handleUpdated;
|
|
124
164
|
private handleEnhancementUpdate;
|
|
125
|
-
getResultData(): Promise<
|
|
165
|
+
getResultData(): Promise<Blob>;
|
|
126
166
|
/**
|
|
127
167
|
* Enhance the image using the Flux model. This method will create a new project with the
|
|
128
168
|
* enhancement parameters and use the result image of the current job as the starting image.
|