@sogni-ai/sogni-client 4.2.0-alpha.21 → 4.2.0-alpha.22
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 +7 -0
- package/CLAUDE.md +7 -0
- package/README.md +45 -25
- package/dist/Chat/ChatTools.js +30 -16
- package/dist/Chat/ChatTools.js.map +1 -1
- package/dist/Chat/hostedToolValidation.generated.d.ts +46 -0
- package/dist/Chat/hostedToolValidation.generated.js +306 -0
- package/dist/Chat/hostedToolValidation.generated.js.map +1 -0
- package/dist/Chat/index.d.ts +41 -1
- package/dist/Chat/index.js +166 -2
- package/dist/Chat/index.js.map +1 -1
- package/dist/Chat/modelRouting.d.ts +8 -26
- package/dist/Chat/modelRouting.js +11 -106
- package/dist/Chat/modelRouting.js.map +1 -1
- package/dist/Chat/sogniHostedTools.generated.json +1285 -283
- package/dist/Chat/tools.d.ts +52 -3
- package/dist/Chat/tools.js +80 -27
- package/dist/Chat/tools.js.map +1 -1
- package/dist/Chat/types.d.ts +119 -3
- package/dist/CreativeWorkflows/index.d.ts +1 -7
- package/dist/CreativeWorkflows/index.js +23 -21
- package/dist/CreativeWorkflows/index.js.map +1 -1
- package/dist/CreativeWorkflows/types.d.ts +27 -33
- package/dist/index.d.ts +19 -4
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/Cache.js +6 -1
- package/dist/lib/Cache.js.map +1 -1
- package/dist-esm/Account/CurrentAccount.js +59 -0
- package/dist-esm/Account/CurrentAccount.js.map +1 -0
- package/dist-esm/Account/index.js +543 -0
- package/dist-esm/Account/index.js.map +1 -0
- package/dist-esm/Account/types.js +2 -0
- package/dist-esm/Account/types.js.map +1 -0
- package/dist-esm/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.js +327 -0
- package/dist-esm/ApiClient/WebSocketClient/BrowserWebSocketClient/ChannelCoordinator.js.map +1 -0
- package/dist-esm/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js +222 -0
- package/dist-esm/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js.map +1 -0
- package/dist-esm/ApiClient/WebSocketClient/ErrorCode.js +15 -0
- package/dist-esm/ApiClient/WebSocketClient/ErrorCode.js.map +1 -0
- package/dist-esm/ApiClient/WebSocketClient/eventSubscriptions.js +35 -0
- package/dist-esm/ApiClient/WebSocketClient/eventSubscriptions.js.map +1 -0
- package/dist-esm/ApiClient/WebSocketClient/events.js +2 -0
- package/dist-esm/ApiClient/WebSocketClient/events.js.map +1 -0
- package/dist-esm/ApiClient/WebSocketClient/index.js +221 -0
- package/dist-esm/ApiClient/WebSocketClient/index.js.map +1 -0
- package/dist-esm/ApiClient/WebSocketClient/messages.js +2 -0
- package/dist-esm/ApiClient/WebSocketClient/messages.js.map +1 -0
- package/dist-esm/ApiClient/WebSocketClient/types.js +2 -0
- package/dist-esm/ApiClient/WebSocketClient/types.js.map +1 -0
- package/dist-esm/ApiClient/events.js +2 -0
- package/dist-esm/ApiClient/events.js.map +1 -0
- package/dist-esm/ApiClient/index.js +120 -0
- package/dist-esm/ApiClient/index.js.map +1 -0
- package/dist-esm/ApiGroup.js +10 -0
- package/dist-esm/ApiGroup.js.map +1 -0
- package/dist-esm/Chat/ChatStream.js +181 -0
- package/dist-esm/Chat/ChatStream.js.map +1 -0
- package/dist-esm/Chat/ChatTools.js +562 -0
- package/dist-esm/Chat/ChatTools.js.map +1 -0
- package/dist-esm/Chat/hostedToolValidation.generated.js +301 -0
- package/dist-esm/Chat/hostedToolValidation.generated.js.map +1 -0
- package/dist-esm/Chat/index.js +598 -0
- package/dist-esm/Chat/index.js.map +1 -0
- package/dist-esm/Chat/modelRouting.js +326 -0
- package/dist-esm/Chat/modelRouting.js.map +1 -0
- package/dist-esm/Chat/sogniHostedTools.generated.json +1531 -0
- package/dist-esm/Chat/tools.js +149 -0
- package/dist-esm/Chat/tools.js.map +1 -0
- package/dist-esm/Chat/types.js +2 -0
- package/dist-esm/Chat/types.js.map +1 -0
- package/dist-esm/CreativeWorkflows/index.js +256 -0
- package/dist-esm/CreativeWorkflows/index.js.map +1 -0
- package/dist-esm/CreativeWorkflows/types.js +2 -0
- package/dist-esm/CreativeWorkflows/types.js.map +1 -0
- package/dist-esm/Projects/Job.js +391 -0
- package/dist-esm/Projects/Job.js.map +1 -0
- package/dist-esm/Projects/Project.js +295 -0
- package/dist-esm/Projects/Project.js.map +1 -0
- package/dist-esm/Projects/createJobRequestMessage.js +528 -0
- package/dist-esm/Projects/createJobRequestMessage.js.map +1 -0
- package/dist-esm/Projects/index.js +1309 -0
- package/dist-esm/Projects/index.js.map +1 -0
- package/dist-esm/Projects/types/ComfySamplerParams.js +2 -0
- package/dist-esm/Projects/types/ComfySamplerParams.js.map +1 -0
- package/dist-esm/Projects/types/ControlNetParams.js +2 -0
- package/dist-esm/Projects/types/ControlNetParams.js.map +1 -0
- package/dist-esm/Projects/types/EstimationResponse.js +2 -0
- package/dist-esm/Projects/types/EstimationResponse.js.map +1 -0
- package/dist-esm/Projects/types/ModelOptions.js +89 -0
- package/dist-esm/Projects/types/ModelOptions.js.map +1 -0
- package/dist-esm/Projects/types/ModelTiersRaw.js +13 -0
- package/dist-esm/Projects/types/ModelTiersRaw.js.map +1 -0
- package/dist-esm/Projects/types/RawProject.js +2 -0
- package/dist-esm/Projects/types/RawProject.js.map +1 -0
- package/dist-esm/Projects/types/events.js +2 -0
- package/dist-esm/Projects/types/events.js.map +1 -0
- package/dist-esm/Projects/types/index.js +10 -0
- package/dist-esm/Projects/types/index.js.map +1 -0
- package/dist-esm/Projects/utils/index.js +229 -0
- package/dist-esm/Projects/utils/index.js.map +1 -0
- package/dist-esm/Projects/utils/samplers.js +36 -0
- package/dist-esm/Projects/utils/samplers.js.map +1 -0
- package/dist-esm/Projects/utils/scheduler.js +27 -0
- package/dist-esm/Projects/utils/scheduler.js.map +1 -0
- package/dist-esm/Stats/index.js +20 -0
- package/dist-esm/Stats/index.js.map +1 -0
- package/dist-esm/Stats/types.js +2 -0
- package/dist-esm/Stats/types.js.map +1 -0
- package/dist-esm/events.js +2 -0
- package/dist-esm/events.js.map +1 -0
- package/dist-esm/index.js +144 -0
- package/dist-esm/index.js.map +1 -0
- package/dist-esm/lib/AuthManager/ApiKeyAuthManager.js +58 -0
- package/dist-esm/lib/AuthManager/ApiKeyAuthManager.js.map +1 -0
- package/dist-esm/lib/AuthManager/AuthManagerBase.js +9 -0
- package/dist-esm/lib/AuthManager/AuthManagerBase.js.map +1 -0
- package/dist-esm/lib/AuthManager/CookieAuthManager.js +48 -0
- package/dist-esm/lib/AuthManager/CookieAuthManager.js.map +1 -0
- package/dist-esm/lib/AuthManager/TokenAuthManager.js +186 -0
- package/dist-esm/lib/AuthManager/TokenAuthManager.js.map +1 -0
- package/dist-esm/lib/AuthManager/index.js +5 -0
- package/dist-esm/lib/AuthManager/index.js.map +1 -0
- package/dist-esm/lib/Cache.js +32 -0
- package/dist-esm/lib/Cache.js.map +1 -0
- package/dist-esm/lib/DataEntity.js +30 -0
- package/dist-esm/lib/DataEntity.js.map +1 -0
- package/dist-esm/lib/DefaultLogger.js +32 -0
- package/dist-esm/lib/DefaultLogger.js.map +1 -0
- package/dist-esm/lib/EIP712Helper.js +37 -0
- package/dist-esm/lib/EIP712Helper.js.map +1 -0
- package/dist-esm/lib/RestClient.js +90 -0
- package/dist-esm/lib/RestClient.js.map +1 -0
- package/dist-esm/lib/TypedEventEmitter.js +68 -0
- package/dist-esm/lib/TypedEventEmitter.js.map +1 -0
- package/dist-esm/lib/base64.js +18 -0
- package/dist-esm/lib/base64.js.map +1 -0
- package/dist-esm/lib/getUUID.js +7 -0
- package/dist-esm/lib/getUUID.js.map +1 -0
- package/dist-esm/lib/isNodejs.js +3 -0
- package/dist-esm/lib/isNodejs.js.map +1 -0
- package/dist-esm/lib/mediaValidation.js +277 -0
- package/dist-esm/lib/mediaValidation.js.map +1 -0
- package/dist-esm/lib/utils/index.js +30 -0
- package/dist-esm/lib/utils/index.js.map +1 -0
- package/dist-esm/lib/validation.js +138 -0
- package/dist-esm/lib/validation.js.map +1 -0
- package/dist-esm/package.json +3 -0
- package/dist-esm/types/ErrorData.js +2 -0
- package/dist-esm/types/ErrorData.js.map +1 -0
- package/dist-esm/types/json.js +2 -0
- package/dist-esm/types/json.js.map +1 -0
- package/dist-esm/types/token.js +2 -0
- package/dist-esm/types/token.js.map +1 -0
- package/dist-esm/version.js +3 -0
- package/dist-esm/version.js.map +1 -0
- package/llms-full.txt +11 -20
- package/llms.txt +9 -18
- package/package.json +21 -5
- package/src/Chat/ChatTools.ts +36 -16
- package/src/Chat/hostedToolValidation.generated.ts +453 -0
- package/src/Chat/index.ts +198 -3
- package/src/Chat/modelRouting.ts +26 -150
- package/src/Chat/sogniHostedTools.generated.json +1285 -283
- package/src/Chat/tools.ts +106 -41
- package/src/Chat/types.ts +131 -3
- package/src/CreativeWorkflows/index.ts +22 -41
- package/src/CreativeWorkflows/types.ts +69 -42
- package/src/index.ts +33 -12
- package/src/lib/Cache.ts +8 -1
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import Job from './Job';
|
|
11
|
+
import DataEntity from '../lib/DataEntity';
|
|
12
|
+
import { isImageParams } from './types';
|
|
13
|
+
import cloneDeep from 'lodash/cloneDeep';
|
|
14
|
+
import getUUID from '../lib/getUUID';
|
|
15
|
+
// If project is not finished and had no updates for 2 minutes, force refresh
|
|
16
|
+
const PROJECT_TIMEOUT = 2 * 60 * 1000;
|
|
17
|
+
const MAX_FAILED_SYNC_ATTEMPTS = 3;
|
|
18
|
+
const PROJECT_STATUS_MAP = {
|
|
19
|
+
pending: 'pending',
|
|
20
|
+
active: 'queued',
|
|
21
|
+
assigned: 'processing',
|
|
22
|
+
progress: 'processing',
|
|
23
|
+
completed: 'completed',
|
|
24
|
+
errored: 'failed',
|
|
25
|
+
cancelled: 'canceled'
|
|
26
|
+
};
|
|
27
|
+
class Project extends DataEntity {
|
|
28
|
+
constructor(data, options) {
|
|
29
|
+
super({
|
|
30
|
+
id: getUUID(),
|
|
31
|
+
startedAt: new Date(),
|
|
32
|
+
params: data,
|
|
33
|
+
queuePosition: -1,
|
|
34
|
+
status: 'pending'
|
|
35
|
+
});
|
|
36
|
+
this._jobs = [];
|
|
37
|
+
this._lastEmitedProgress = -1;
|
|
38
|
+
this._timeout = null;
|
|
39
|
+
this._failedSyncAttempts = 0;
|
|
40
|
+
this._api = options.api;
|
|
41
|
+
this._logger = options.logger;
|
|
42
|
+
this._timeout = setInterval(this._checkForTimeout.bind(this), PROJECT_TIMEOUT);
|
|
43
|
+
this.on('updated', this.handleUpdated.bind(this));
|
|
44
|
+
}
|
|
45
|
+
get id() {
|
|
46
|
+
return this.data.id;
|
|
47
|
+
}
|
|
48
|
+
get params() {
|
|
49
|
+
return this.data.params;
|
|
50
|
+
}
|
|
51
|
+
get type() {
|
|
52
|
+
return this.params.type;
|
|
53
|
+
}
|
|
54
|
+
get status() {
|
|
55
|
+
return this.data.status;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Estimated time of completion in seconds (for long-running projects like video generation).
|
|
59
|
+
* Updated by ComfyUI workers during inference.
|
|
60
|
+
*/
|
|
61
|
+
get eta() {
|
|
62
|
+
return this.data.eta;
|
|
63
|
+
}
|
|
64
|
+
get finished() {
|
|
65
|
+
return ['completed', 'failed', 'canceled'].includes(this.status);
|
|
66
|
+
}
|
|
67
|
+
get error() {
|
|
68
|
+
return this.data.error;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Progress of the project in percentage (0-100).
|
|
72
|
+
*/
|
|
73
|
+
get progress() {
|
|
74
|
+
var _a;
|
|
75
|
+
if (this.status === 'completed')
|
|
76
|
+
return 100;
|
|
77
|
+
// Worker can reduce the number of steps in the job, so we need to calculate the progress based on the actual number of steps
|
|
78
|
+
const jobCount = Math.max(1, this.data.params.numberOfMedia);
|
|
79
|
+
if (this._jobs.length) {
|
|
80
|
+
const progressTotal = this._jobs.reduce((acc, job) => acc + job.progress, 0);
|
|
81
|
+
return Math.max(0, Math.min(100, Math.round(progressTotal / jobCount)));
|
|
82
|
+
}
|
|
83
|
+
const stepsPerJob = (_a = this.data.params.steps) !== null && _a !== void 0 ? _a : 0;
|
|
84
|
+
if (stepsPerJob <= 0)
|
|
85
|
+
return 0;
|
|
86
|
+
const stepsDone = this._jobs.reduce((acc, job) => acc + job.step, 0);
|
|
87
|
+
return Math.max(0, Math.min(100, Math.round((stepsDone / (stepsPerJob * jobCount)) * 100)));
|
|
88
|
+
}
|
|
89
|
+
get queuePosition() {
|
|
90
|
+
return this.data.queuePosition;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* List of jobs in the project. Note that jobs will be added to this list as
|
|
94
|
+
* workers start processing them. So initially this list will be empty.
|
|
95
|
+
* Subscribe to project `updated` event to get notified about any update, including new jobs.
|
|
96
|
+
* @example
|
|
97
|
+
* project.on('updated', (keys) => {
|
|
98
|
+
* if (keys.includes('jobs')) {
|
|
99
|
+
* // Project jobs have been updated
|
|
100
|
+
* }
|
|
101
|
+
* });
|
|
102
|
+
*/
|
|
103
|
+
get jobs() {
|
|
104
|
+
return this._jobs.slice(0);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* List of result URLs for all completed jobs in the project.
|
|
108
|
+
*/
|
|
109
|
+
get resultUrls() {
|
|
110
|
+
return this.jobs.map((job) => job.resultUrl).filter((r) => !!r);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Wait for the project to complete, then return the result URLs, or throw an error if the project fails.
|
|
114
|
+
* @returns Promise<string[]> - Promise that resolves to the list of result URLs
|
|
115
|
+
* @throws ErrorData
|
|
116
|
+
*/
|
|
117
|
+
waitForCompletion() {
|
|
118
|
+
if (this.status === 'completed') {
|
|
119
|
+
return Promise.resolve(this.resultUrls);
|
|
120
|
+
}
|
|
121
|
+
if (this.status === 'failed') {
|
|
122
|
+
return Promise.reject(this.error);
|
|
123
|
+
}
|
|
124
|
+
return new Promise((resolve, reject) => {
|
|
125
|
+
this.once('completed', (images) => {
|
|
126
|
+
resolve(images);
|
|
127
|
+
});
|
|
128
|
+
this.once('failed', (error) => {
|
|
129
|
+
reject(error);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Cancel the project. This will cancel all jobs in the project.
|
|
135
|
+
*/
|
|
136
|
+
cancel() {
|
|
137
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
138
|
+
yield this._api.cancel(this.id);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Find a job by id
|
|
143
|
+
* @param id
|
|
144
|
+
*/
|
|
145
|
+
job(id) {
|
|
146
|
+
return this._jobs.find((job) => job.id === id);
|
|
147
|
+
}
|
|
148
|
+
handleUpdated(keys) {
|
|
149
|
+
const progress = this.progress;
|
|
150
|
+
if (progress !== this._lastEmitedProgress) {
|
|
151
|
+
this.emit('progress', progress);
|
|
152
|
+
this._lastEmitedProgress = progress;
|
|
153
|
+
}
|
|
154
|
+
// If project is finished stop watching for timeout
|
|
155
|
+
if (this._timeout && this.finished) {
|
|
156
|
+
clearInterval(this._timeout);
|
|
157
|
+
this._timeout = null;
|
|
158
|
+
}
|
|
159
|
+
if (keys.includes('status') || keys.includes('jobs')) {
|
|
160
|
+
const allJobsStarted = this.jobs.length >= this.params.numberOfMedia;
|
|
161
|
+
const allJobsDone = this.jobs.every((job) => job.finished);
|
|
162
|
+
if (this.data.status === 'completed' && allJobsStarted && allJobsDone) {
|
|
163
|
+
return this.emit('completed', this.resultUrls);
|
|
164
|
+
}
|
|
165
|
+
if (this.data.status === 'failed') {
|
|
166
|
+
this.emit('failed', this.data.error);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Refresh the lastUpdated timestamp to prevent timeout.
|
|
172
|
+
* Used when receiving socket events that indicate the project is still active
|
|
173
|
+
* (e.g., jobETA events during long-running video generation).
|
|
174
|
+
* @internal
|
|
175
|
+
*/
|
|
176
|
+
_keepAlive() {
|
|
177
|
+
this.lastUpdated = new Date();
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* This is internal method to add a job to the project. Do not call this directly.
|
|
181
|
+
* @internal
|
|
182
|
+
* @param data
|
|
183
|
+
*/
|
|
184
|
+
_addJob(data) {
|
|
185
|
+
const job = data instanceof Job
|
|
186
|
+
? data
|
|
187
|
+
: new Job(data, { api: this._api, logger: this._logger, project: this });
|
|
188
|
+
this._jobs.push(job);
|
|
189
|
+
job.on('updated', () => {
|
|
190
|
+
this.lastUpdated = new Date();
|
|
191
|
+
this.emit('updated', ['jobs']);
|
|
192
|
+
});
|
|
193
|
+
this.emit('jobStarted', job);
|
|
194
|
+
job.on('completed', () => {
|
|
195
|
+
this.emit('jobCompleted', job);
|
|
196
|
+
});
|
|
197
|
+
job.on('failed', () => {
|
|
198
|
+
this.emit('jobFailed', job);
|
|
199
|
+
});
|
|
200
|
+
return job;
|
|
201
|
+
}
|
|
202
|
+
_checkForTimeout() {
|
|
203
|
+
if (this.lastUpdated.getTime() + PROJECT_TIMEOUT < Date.now()) {
|
|
204
|
+
this._syncToServer().catch((error) => {
|
|
205
|
+
// 404 errors are expected when project is still initializing and not yet available via REST API
|
|
206
|
+
// Only log non-404 errors to avoid confusing users
|
|
207
|
+
if (error.status !== 404) {
|
|
208
|
+
this._logger.error(error);
|
|
209
|
+
}
|
|
210
|
+
this._failedSyncAttempts++;
|
|
211
|
+
if (this._failedSyncAttempts >= MAX_FAILED_SYNC_ATTEMPTS) {
|
|
212
|
+
this._logger.error(`Failed to sync project data after ${MAX_FAILED_SYNC_ATTEMPTS} attempts. Stopping further attempts.`);
|
|
213
|
+
this._api._notifyProjectTimedOut(this.id).catch((cancelError) => {
|
|
214
|
+
this._logger.error(`Failed to notify socket server that project ${this.id} timed out`);
|
|
215
|
+
this._logger.error(cancelError);
|
|
216
|
+
});
|
|
217
|
+
clearInterval(this._timeout);
|
|
218
|
+
this._timeout = null;
|
|
219
|
+
this.jobs.forEach((job) => {
|
|
220
|
+
if (!job.finished) {
|
|
221
|
+
job._update({
|
|
222
|
+
status: 'failed',
|
|
223
|
+
error: { code: 0, message: 'Job timed out' }
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
this._update({
|
|
228
|
+
status: 'failed',
|
|
229
|
+
error: { code: 0, message: 'Project timed out. Please try again or contact support.' }
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Sync project data with the data received from the REST API.
|
|
237
|
+
* @internal
|
|
238
|
+
*/
|
|
239
|
+
_syncToServer() {
|
|
240
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
241
|
+
const data = yield this._api.get(this.id);
|
|
242
|
+
const jobData = data.completedWorkerJobs.reduce((acc, job) => {
|
|
243
|
+
const jobId = job.imgID || getUUID();
|
|
244
|
+
acc[jobId] = job;
|
|
245
|
+
return acc;
|
|
246
|
+
}, {});
|
|
247
|
+
for (const job of this._jobs) {
|
|
248
|
+
const restJob = jobData[job.id];
|
|
249
|
+
// This should never happen, but just in case we log a warning
|
|
250
|
+
if (!restJob) {
|
|
251
|
+
this._logger.warn(`Job with id ${job.id} not found in the REST project data`);
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
try {
|
|
255
|
+
yield job._syncWithRestData(restJob);
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
this._logger.error(error);
|
|
259
|
+
this._logger.error(`Failed to sync job ${job.id}`);
|
|
260
|
+
}
|
|
261
|
+
delete jobData[job.id];
|
|
262
|
+
}
|
|
263
|
+
// If there are any jobs left in jobData, it means they are new jobs that are not in the project yet
|
|
264
|
+
if (Object.keys(jobData).length) {
|
|
265
|
+
for (const job of Object.values(jobData)) {
|
|
266
|
+
const jobInstance = Job.fromRaw(data, job, {
|
|
267
|
+
api: this._api,
|
|
268
|
+
logger: this._logger,
|
|
269
|
+
project: this
|
|
270
|
+
});
|
|
271
|
+
this._addJob(jobInstance);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
const delta = {
|
|
275
|
+
params: Object.assign(Object.assign({}, this.data.params), { numberOfMedia: data.imageCount, steps: data.stepCount })
|
|
276
|
+
};
|
|
277
|
+
if (delta.params && isImageParams(delta.params)) {
|
|
278
|
+
delta.params.numberOfPreviews = data.previewCount;
|
|
279
|
+
}
|
|
280
|
+
if (PROJECT_STATUS_MAP[data.status]) {
|
|
281
|
+
delta.status = PROJECT_STATUS_MAP[data.status];
|
|
282
|
+
}
|
|
283
|
+
this._update(delta);
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Get full project data snapshot. Can be used to serialize the project and store it in a database.
|
|
288
|
+
*/
|
|
289
|
+
toJSON() {
|
|
290
|
+
const data = cloneDeep(this.data);
|
|
291
|
+
return Object.assign(Object.assign({}, data), { jobs: this._jobs.map((job) => job.toJSON()) });
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
export default Project;
|
|
295
|
+
//# sourceMappingURL=Project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Project.js","sourceRoot":"","sources":["../../src/Projects/Project.ts"],"names":[],"mappings":"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"}
|