@symbo.ls/sdk 2.32.0 → 2.32.2
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/dist/cjs/config/environment.js +8 -43
- package/dist/cjs/index.js +4 -12
- package/dist/cjs/services/AdminService.js +4 -4
- package/dist/cjs/services/AuthService.js +149 -36
- package/dist/cjs/services/BaseService.js +18 -5
- package/dist/cjs/services/BranchService.js +10 -10
- package/dist/cjs/services/CollabService.js +18 -114
- package/dist/cjs/services/CoreService.js +19 -19
- package/dist/cjs/services/DnsService.js +4 -4
- package/dist/cjs/services/FileService.js +2 -2
- package/dist/cjs/services/PaymentService.js +2 -2
- package/dist/cjs/services/PlanService.js +12 -12
- package/dist/cjs/services/ProjectService.js +34 -39
- package/dist/cjs/services/PullRequestService.js +7 -7
- package/dist/cjs/services/SubscriptionService.js +14 -14
- package/dist/cjs/services/index.js +0 -4
- package/dist/cjs/utils/TokenManager.js +5 -16
- package/dist/cjs/utils/services.js +1 -14
- package/dist/esm/config/environment.js +8 -43
- package/dist/esm/index.js +300 -907
- package/dist/esm/services/AdminService.js +35 -68
- package/dist/esm/services/AuthService.js +168 -100
- package/dist/esm/services/BaseService.js +31 -64
- package/dist/esm/services/BranchService.js +41 -74
- package/dist/esm/services/CollabService.js +50 -452
- package/dist/esm/services/CoreService.js +50 -83
- package/dist/esm/services/DnsService.js +35 -68
- package/dist/esm/services/FileService.js +33 -66
- package/dist/esm/services/PaymentService.js +33 -66
- package/dist/esm/services/PlanService.js +43 -76
- package/dist/esm/services/ProjectService.js +65 -375
- package/dist/esm/services/PullRequestService.js +38 -71
- package/dist/esm/services/SubscriptionService.js +45 -78
- package/dist/esm/services/index.js +295 -884
- package/dist/esm/utils/CollabClient.js +8 -43
- package/dist/esm/utils/TokenManager.js +5 -16
- package/dist/esm/utils/services.js +1 -14
- package/dist/node/config/environment.js +8 -43
- package/dist/node/index.js +5 -14
- package/dist/node/services/AdminService.js +4 -4
- package/dist/node/services/AuthService.js +139 -36
- package/dist/node/services/BaseService.js +18 -5
- package/dist/node/services/BranchService.js +10 -10
- package/dist/node/services/CollabService.js +19 -115
- package/dist/node/services/CoreService.js +19 -19
- package/dist/node/services/DnsService.js +4 -4
- package/dist/node/services/FileService.js +2 -2
- package/dist/node/services/PaymentService.js +2 -2
- package/dist/node/services/PlanService.js +12 -12
- package/dist/node/services/ProjectService.js +34 -39
- package/dist/node/services/PullRequestService.js +7 -7
- package/dist/node/services/SubscriptionService.js +14 -14
- package/dist/node/services/index.js +0 -4
- package/dist/node/utils/TokenManager.js +5 -16
- package/dist/node/utils/services.js +1 -14
- package/package.json +6 -7
- package/src/config/environment.js +9 -48
- package/src/index.js +22 -38
- package/src/services/AdminService.js +4 -4
- package/src/services/AuthService.js +175 -42
- package/src/services/BaseService.js +24 -7
- package/src/services/BranchService.js +10 -10
- package/src/services/CollabService.js +19 -142
- package/src/services/CoreService.js +19 -19
- package/src/services/DnsService.js +4 -4
- package/src/services/FileService.js +2 -2
- package/src/services/PaymentService.js +2 -2
- package/src/services/PlanService.js +12 -12
- package/src/services/ProjectService.js +34 -41
- package/src/services/PullRequestService.js +7 -7
- package/src/services/SubscriptionService.js +14 -14
- package/src/services/index.js +1 -6
- package/src/utils/TokenManager.js +5 -19
- package/src/utils/services.js +1 -15
- package/dist/cjs/services/ScreenshotService.js +0 -304
- package/dist/cjs/utils/ordering.js +0 -295
- package/dist/esm/services/ScreenshotService.js +0 -992
- package/dist/esm/utils/ordering.js +0 -277
- package/dist/node/services/ScreenshotService.js +0 -285
- package/dist/node/utils/ordering.js +0 -276
- package/src/services/ScreenshotService.js +0 -258
- package/src/utils/ordering.js +0 -240
|
@@ -3,9 +3,7 @@ import { CollabClient } from "../utils/CollabClient.js";
|
|
|
3
3
|
import { RootStateManager } from "../state/RootStateManager.js";
|
|
4
4
|
import { rootBus } from "../state/rootEventBus.js";
|
|
5
5
|
import { validateParams } from "../utils/validation.js";
|
|
6
|
-
import {
|
|
7
|
-
import { diffJson } from "../utils/jsonDiff.js";
|
|
8
|
-
import { computeOrdersForTuples } from "../utils/ordering.js";
|
|
6
|
+
import { deepStringify } from "@domql/utils";
|
|
9
7
|
class CollabService extends BaseService {
|
|
10
8
|
constructor(config) {
|
|
11
9
|
super(config);
|
|
@@ -69,8 +67,8 @@ class CollabService extends BaseService {
|
|
|
69
67
|
logger(`[Notification] ${title}${message ? ` \u2013 ${message}` : ""}`);
|
|
70
68
|
return;
|
|
71
69
|
}
|
|
72
|
-
case "
|
|
73
|
-
return
|
|
70
|
+
case "deepStringify": {
|
|
71
|
+
return deepStringify(...args);
|
|
74
72
|
}
|
|
75
73
|
default:
|
|
76
74
|
return {};
|
|
@@ -120,8 +118,10 @@ class CollabService extends BaseService {
|
|
|
120
118
|
(_b2 = this._client.socket) == null ? void 0 : _b2.once("connect", resolve);
|
|
121
119
|
}
|
|
122
120
|
});
|
|
121
|
+
console.log("[CollabService] socket connected");
|
|
123
122
|
(_b = this._client.socket) == null ? void 0 : _b.on("ops", ({ changes }) => {
|
|
124
123
|
console.log(`ops event`);
|
|
124
|
+
console.log(changes);
|
|
125
125
|
this._stateManager.applyChanges(changes, { fromSocket: true });
|
|
126
126
|
});
|
|
127
127
|
(_c = this._client.socket) == null ? void 0 : _c.on("commit", ({ version }) => {
|
|
@@ -143,13 +143,15 @@ class CollabService extends BaseService {
|
|
|
143
143
|
console.log(
|
|
144
144
|
`[CollabService] Flushing ${this._pendingOps.length} offline operation batch(es)`
|
|
145
145
|
);
|
|
146
|
-
this._pendingOps.forEach(({
|
|
147
|
-
this.socket.emit("ops", { changes
|
|
146
|
+
this._pendingOps.forEach(({ tuples }) => {
|
|
147
|
+
this.socket.emit("ops", { changes: tuples, ts: Date.now() });
|
|
148
148
|
});
|
|
149
149
|
this._pendingOps.length = 0;
|
|
150
150
|
}
|
|
151
151
|
this._connected = true;
|
|
152
|
+
console.log("[CollabService] Connected to project:", projectId);
|
|
152
153
|
} catch (err) {
|
|
154
|
+
console.error("[CollabService] Connection failed:", err);
|
|
153
155
|
throw err;
|
|
154
156
|
}
|
|
155
157
|
}
|
|
@@ -189,118 +191,24 @@ class CollabService extends BaseService {
|
|
|
189
191
|
}
|
|
190
192
|
/* ---------- data helpers ---------- */
|
|
191
193
|
updateData(tuples, options = {}) {
|
|
192
|
-
var _a
|
|
194
|
+
var _a;
|
|
193
195
|
this._ensureStateManager();
|
|
194
196
|
const { isUndo = false, isRedo = false } = options;
|
|
195
197
|
if (!isUndo && !isRedo && !this._isUndoRedo) {
|
|
196
198
|
this._trackForUndo(tuples, options);
|
|
197
199
|
}
|
|
198
|
-
const processedTuples = (() => {
|
|
199
|
-
var _a2;
|
|
200
|
-
try {
|
|
201
|
-
const root = (_a2 = this._stateManager) == null ? void 0 : _a2.root;
|
|
202
|
-
const isPlainObject = (o) => o && typeof o === "object" && !Array.isArray(o);
|
|
203
|
-
const getByPath = (state2, path) => {
|
|
204
|
-
if (!state2 || typeof state2.getByPath !== "function") {
|
|
205
|
-
return null;
|
|
206
|
-
}
|
|
207
|
-
try {
|
|
208
|
-
return state2.getByPath(path);
|
|
209
|
-
} catch {
|
|
210
|
-
return null;
|
|
211
|
-
}
|
|
212
|
-
};
|
|
213
|
-
const expandTuple = (t) => {
|
|
214
|
-
const [action, path, value] = t || [];
|
|
215
|
-
const isSchemaPath = Array.isArray(path) && path[0] === "schema";
|
|
216
|
-
if (action === "delete" || isSchemaPath) {
|
|
217
|
-
return [t];
|
|
218
|
-
}
|
|
219
|
-
const canConsiderExpansion = action === "update" && Array.isArray(path) && (path.length === 1 || path.length === 2) && isPlainObject(value);
|
|
220
|
-
if (!canConsiderExpansion) {
|
|
221
|
-
return [t];
|
|
222
|
-
}
|
|
223
|
-
const prev = getByPath(root, path) || {};
|
|
224
|
-
const next = value || {};
|
|
225
|
-
if (!isPlainObject(prev) || !isPlainObject(next)) {
|
|
226
|
-
return [t];
|
|
227
|
-
}
|
|
228
|
-
const ops = diffJson(prev, next, []);
|
|
229
|
-
if (!ops.length) {
|
|
230
|
-
return [];
|
|
231
|
-
}
|
|
232
|
-
const arr = [];
|
|
233
|
-
for (let j = 0; j < ops.length; j++) {
|
|
234
|
-
const op = ops[j];
|
|
235
|
-
const fullPath = [...path, ...op.path];
|
|
236
|
-
const last = fullPath[fullPath.length - 1];
|
|
237
|
-
if (op.action === "set") {
|
|
238
|
-
arr.push(["update", fullPath, op.value]);
|
|
239
|
-
} else if (op.action === "del") {
|
|
240
|
-
if (last !== "__order") {
|
|
241
|
-
arr.push(["delete", fullPath]);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
return arr;
|
|
246
|
-
};
|
|
247
|
-
const minimizeTuples = (inputTuples) => {
|
|
248
|
-
const out = [];
|
|
249
|
-
for (let i = 0; i < inputTuples.length; i++) {
|
|
250
|
-
const expanded = expandTuple(inputTuples[i]);
|
|
251
|
-
for (let k = 0; k < expanded.length; k++) {
|
|
252
|
-
const tuple = expanded[k];
|
|
253
|
-
const isDelete = Array.isArray(tuple) && tuple[0] === "delete";
|
|
254
|
-
const isOrderKey = isDelete && Array.isArray(tuple[1]) && tuple[1][tuple[1].length - 1] === "__order";
|
|
255
|
-
if (!isOrderKey) {
|
|
256
|
-
out.push(tuple);
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
console.log(`Minimized tuples`, out);
|
|
261
|
-
return out;
|
|
262
|
-
};
|
|
263
|
-
console.log(`Processing tuples`, tuples);
|
|
264
|
-
return minimizeTuples(tuples);
|
|
265
|
-
} catch (err) {
|
|
266
|
-
console.warn(
|
|
267
|
-
"[CollabService] Minimal diff expansion failed \u2013 using original tuples",
|
|
268
|
-
err
|
|
269
|
-
);
|
|
270
|
-
return tuples;
|
|
271
|
-
}
|
|
272
|
-
})();
|
|
273
200
|
if (options.append && options.append.length) {
|
|
274
|
-
|
|
201
|
+
tuples.push(...options.append);
|
|
275
202
|
}
|
|
276
203
|
this._stateManager.applyChanges(tuples, { ...options });
|
|
277
|
-
|
|
278
|
-
const el = state == null ? void 0 : state.__element;
|
|
279
|
-
const orders = computeOrdersForTuples(state, processedTuples);
|
|
280
|
-
const stringifiedTuples = (el == null ? void 0 : el.call) ? el.call(
|
|
281
|
-
"deepStringifyFunctions",
|
|
282
|
-
processedTuples,
|
|
283
|
-
Array.isArray(processedTuples) ? [] : {}
|
|
284
|
-
) : deepStringifyFunctions(
|
|
285
|
-
processedTuples,
|
|
286
|
-
Array.isArray(processedTuples) ? [] : {}
|
|
287
|
-
);
|
|
204
|
+
tuples = deepStringify(tuples, []);
|
|
288
205
|
if (!this.isConnected()) {
|
|
289
206
|
console.warn("[CollabService] Not connected, queuing real-time update");
|
|
290
|
-
this._pendingOps.push({
|
|
207
|
+
this._pendingOps.push({ tuples, options });
|
|
291
208
|
return;
|
|
292
209
|
}
|
|
293
|
-
if ((
|
|
294
|
-
|
|
295
|
-
changes: stringifiedTuples,
|
|
296
|
-
orders,
|
|
297
|
-
ts: Date.now()
|
|
298
|
-
});
|
|
299
|
-
this.socket.emit("ops", {
|
|
300
|
-
changes: stringifiedTuples,
|
|
301
|
-
orders,
|
|
302
|
-
ts: Date.now()
|
|
303
|
-
});
|
|
210
|
+
if ((_a = this.socket) == null ? void 0 : _a.connected) {
|
|
211
|
+
this.socket.emit("ops", { changes: tuples, ts: Date.now() });
|
|
304
212
|
}
|
|
305
213
|
return { success: true };
|
|
306
214
|
}
|
|
@@ -441,7 +349,7 @@ class CollabService extends BaseService {
|
|
|
441
349
|
const updatedOpts = { ...opts, skipComponentsChangedEvent: true };
|
|
442
350
|
return this.updateData(tuples, updatedOpts);
|
|
443
351
|
} catch (error) {
|
|
444
|
-
throw new Error(`Failed to add item: ${error.message}
|
|
352
|
+
throw new Error(`Failed to add item: ${error.message}`);
|
|
445
353
|
}
|
|
446
354
|
}
|
|
447
355
|
addMultipleItems(items, opts = {}) {
|
|
@@ -470,7 +378,7 @@ class CollabService extends BaseService {
|
|
|
470
378
|
title: "Failed to add item",
|
|
471
379
|
message: error.message
|
|
472
380
|
});
|
|
473
|
-
throw new Error(`Failed to add item: ${error.message}
|
|
381
|
+
throw new Error(`Failed to add item: ${error.message}`);
|
|
474
382
|
}
|
|
475
383
|
}
|
|
476
384
|
updateItem(type, data, opts = {}) {
|
|
@@ -492,9 +400,7 @@ class CollabService extends BaseService {
|
|
|
492
400
|
title: "Failed to update item",
|
|
493
401
|
message: error.message
|
|
494
402
|
});
|
|
495
|
-
throw new Error(`Failed to update item: ${error.message}
|
|
496
|
-
cause: error
|
|
497
|
-
});
|
|
403
|
+
throw new Error(`Failed to update item: ${error.message}`);
|
|
498
404
|
}
|
|
499
405
|
}
|
|
500
406
|
deleteItem(type, key, opts = {}) {
|
|
@@ -519,9 +425,7 @@ class CollabService extends BaseService {
|
|
|
519
425
|
title: "Failed to delete item",
|
|
520
426
|
message: error.message
|
|
521
427
|
});
|
|
522
|
-
throw new Error(`Failed to delete item: ${error.message}
|
|
523
|
-
cause: error
|
|
524
|
-
});
|
|
428
|
+
throw new Error(`Failed to delete item: ${error.message}`);
|
|
525
429
|
}
|
|
526
430
|
}
|
|
527
431
|
/* ---------- socket event helpers ---------- */
|
|
@@ -148,11 +148,11 @@ class CoreService extends BaseService {
|
|
|
148
148
|
error = await response.json();
|
|
149
149
|
} catch {
|
|
150
150
|
}
|
|
151
|
-
throw new Error(error.message || error.error || "Request failed"
|
|
151
|
+
throw new Error(error.message || error.error || "Request failed");
|
|
152
152
|
}
|
|
153
153
|
return response.status === 204 ? null : response.json();
|
|
154
154
|
} catch (error) {
|
|
155
|
-
throw new Error(`Request failed: ${error.message}
|
|
155
|
+
throw new Error(`Request failed: ${error.message}`);
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
// ==================== AUTH METHODS ====================
|
|
@@ -168,7 +168,7 @@ class CoreService extends BaseService {
|
|
|
168
168
|
}
|
|
169
169
|
throw new Error(response.message);
|
|
170
170
|
} catch (error) {
|
|
171
|
-
throw new Error(`Registration failed: ${error.message}
|
|
171
|
+
throw new Error(`Registration failed: ${error.message}`);
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
async login(email, password) {
|
|
@@ -197,7 +197,7 @@ class CoreService extends BaseService {
|
|
|
197
197
|
}
|
|
198
198
|
throw new Error(response.message);
|
|
199
199
|
} catch (error) {
|
|
200
|
-
throw new Error(`Login failed: ${error.message}
|
|
200
|
+
throw new Error(`Login failed: ${error.message}`);
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
203
|
async logout() {
|
|
@@ -216,7 +216,7 @@ class CoreService extends BaseService {
|
|
|
216
216
|
this._tokenManager.clearTokens();
|
|
217
217
|
}
|
|
218
218
|
this.updateContext({ authToken: null });
|
|
219
|
-
throw new Error(`Logout failed: ${error.message}
|
|
219
|
+
throw new Error(`Logout failed: ${error.message}`);
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
222
|
async refreshToken(refreshToken) {
|
|
@@ -231,7 +231,7 @@ class CoreService extends BaseService {
|
|
|
231
231
|
}
|
|
232
232
|
throw new Error(response.message);
|
|
233
233
|
} catch (error) {
|
|
234
|
-
throw new Error(`Token refresh failed: ${error.message}
|
|
234
|
+
throw new Error(`Token refresh failed: ${error.message}`);
|
|
235
235
|
}
|
|
236
236
|
}
|
|
237
237
|
async googleAuth(idToken, inviteToken = null) {
|
|
@@ -264,7 +264,7 @@ class CoreService extends BaseService {
|
|
|
264
264
|
}
|
|
265
265
|
throw new Error(response.message);
|
|
266
266
|
} catch (error) {
|
|
267
|
-
throw new Error(`Google auth failed: ${error.message}
|
|
267
|
+
throw new Error(`Google auth failed: ${error.message}`);
|
|
268
268
|
}
|
|
269
269
|
}
|
|
270
270
|
async githubAuth(code, inviteToken = null) {
|
|
@@ -297,7 +297,7 @@ class CoreService extends BaseService {
|
|
|
297
297
|
}
|
|
298
298
|
throw new Error(response.message);
|
|
299
299
|
} catch (error) {
|
|
300
|
-
throw new Error(`GitHub auth failed: ${error.message}
|
|
300
|
+
throw new Error(`GitHub auth failed: ${error.message}`);
|
|
301
301
|
}
|
|
302
302
|
}
|
|
303
303
|
async googleAuthCallback(code, redirectUri, inviteToken = null) {
|
|
@@ -330,7 +330,7 @@ class CoreService extends BaseService {
|
|
|
330
330
|
}
|
|
331
331
|
throw new Error(response.message);
|
|
332
332
|
} catch (error) {
|
|
333
|
-
throw new Error(`Google auth callback failed: ${error.message}
|
|
333
|
+
throw new Error(`Google auth callback failed: ${error.message}`);
|
|
334
334
|
}
|
|
335
335
|
}
|
|
336
336
|
async requestPasswordReset(email) {
|
|
@@ -345,7 +345,7 @@ class CoreService extends BaseService {
|
|
|
345
345
|
}
|
|
346
346
|
throw new Error(response.message);
|
|
347
347
|
} catch (error) {
|
|
348
|
-
throw new Error(`Password reset request failed: ${error.message}
|
|
348
|
+
throw new Error(`Password reset request failed: ${error.message}`);
|
|
349
349
|
}
|
|
350
350
|
}
|
|
351
351
|
async confirmPasswordReset(token, password) {
|
|
@@ -360,7 +360,7 @@ class CoreService extends BaseService {
|
|
|
360
360
|
}
|
|
361
361
|
throw new Error(response.message);
|
|
362
362
|
} catch (error) {
|
|
363
|
-
throw new Error(`Password reset confirmation failed: ${error.message}
|
|
363
|
+
throw new Error(`Password reset confirmation failed: ${error.message}`);
|
|
364
364
|
}
|
|
365
365
|
}
|
|
366
366
|
async confirmRegistration(token) {
|
|
@@ -375,7 +375,7 @@ class CoreService extends BaseService {
|
|
|
375
375
|
}
|
|
376
376
|
throw new Error(response.message);
|
|
377
377
|
} catch (error) {
|
|
378
|
-
throw new Error(`Registration confirmation failed: ${error.message}
|
|
378
|
+
throw new Error(`Registration confirmation failed: ${error.message}`);
|
|
379
379
|
}
|
|
380
380
|
}
|
|
381
381
|
async requestPasswordChange() {
|
|
@@ -390,7 +390,7 @@ class CoreService extends BaseService {
|
|
|
390
390
|
}
|
|
391
391
|
throw new Error(response.message);
|
|
392
392
|
} catch (error) {
|
|
393
|
-
throw new Error(`Password change request failed: ${error.message}
|
|
393
|
+
throw new Error(`Password change request failed: ${error.message}`);
|
|
394
394
|
}
|
|
395
395
|
}
|
|
396
396
|
async confirmPasswordChange(currentPassword, newPassword, code) {
|
|
@@ -406,7 +406,7 @@ class CoreService extends BaseService {
|
|
|
406
406
|
}
|
|
407
407
|
throw new Error(response.message);
|
|
408
408
|
} catch (error) {
|
|
409
|
-
throw new Error(`Password change confirmation failed: ${error.message}
|
|
409
|
+
throw new Error(`Password change confirmation failed: ${error.message}`);
|
|
410
410
|
}
|
|
411
411
|
}
|
|
412
412
|
async getMe() {
|
|
@@ -421,7 +421,7 @@ class CoreService extends BaseService {
|
|
|
421
421
|
}
|
|
422
422
|
throw new Error(response.message);
|
|
423
423
|
} catch (error) {
|
|
424
|
-
throw new Error(`Failed to get user profile: ${error.message}
|
|
424
|
+
throw new Error(`Failed to get user profile: ${error.message}`);
|
|
425
425
|
}
|
|
426
426
|
}
|
|
427
427
|
/**
|
|
@@ -537,7 +537,7 @@ class CoreService extends BaseService {
|
|
|
537
537
|
}
|
|
538
538
|
throw new Error(response.message);
|
|
539
539
|
} catch (error) {
|
|
540
|
-
throw new Error(`Failed to update user profile: ${error.message}
|
|
540
|
+
throw new Error(`Failed to update user profile: ${error.message}`);
|
|
541
541
|
}
|
|
542
542
|
}
|
|
543
543
|
async getUserProjects() {
|
|
@@ -560,7 +560,7 @@ class CoreService extends BaseService {
|
|
|
560
560
|
}
|
|
561
561
|
throw new Error(response.message);
|
|
562
562
|
} catch (error) {
|
|
563
|
-
throw new Error(`Failed to get user projects: ${error.message}
|
|
563
|
+
throw new Error(`Failed to get user projects: ${error.message}`);
|
|
564
564
|
}
|
|
565
565
|
}
|
|
566
566
|
async getUser(userId) {
|
|
@@ -578,7 +578,7 @@ class CoreService extends BaseService {
|
|
|
578
578
|
}
|
|
579
579
|
throw new Error(response.message);
|
|
580
580
|
} catch (error) {
|
|
581
|
-
throw new Error(`Failed to get user: ${error.message}
|
|
581
|
+
throw new Error(`Failed to get user: ${error.message}`);
|
|
582
582
|
}
|
|
583
583
|
}
|
|
584
584
|
async getUserByEmail(email) {
|
|
@@ -596,7 +596,7 @@ class CoreService extends BaseService {
|
|
|
596
596
|
}
|
|
597
597
|
throw new Error(response.message);
|
|
598
598
|
} catch (error) {
|
|
599
|
-
throw new Error(`Failed to get user by email: ${error.message}
|
|
599
|
+
throw new Error(`Failed to get user by email: ${error.message}`);
|
|
600
600
|
}
|
|
601
601
|
}
|
|
602
602
|
// ==================== PROJECT METHODS ====================
|
|
@@ -17,7 +17,7 @@ class DnsService extends BaseService {
|
|
|
17
17
|
}
|
|
18
18
|
throw new Error(response.message);
|
|
19
19
|
} catch (error) {
|
|
20
|
-
throw new Error(`Failed to create DNS record: ${error.message}
|
|
20
|
+
throw new Error(`Failed to create DNS record: ${error.message}`);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
async getDnsRecord(domain) {
|
|
@@ -35,7 +35,7 @@ class DnsService extends BaseService {
|
|
|
35
35
|
}
|
|
36
36
|
throw new Error(response.message);
|
|
37
37
|
} catch (error) {
|
|
38
|
-
throw new Error(`Failed to get DNS record: ${error.message}
|
|
38
|
+
throw new Error(`Failed to get DNS record: ${error.message}`);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
async getCustomHost(hostname) {
|
|
@@ -71,7 +71,7 @@ class DnsService extends BaseService {
|
|
|
71
71
|
}
|
|
72
72
|
throw new Error(response.message);
|
|
73
73
|
} catch (error) {
|
|
74
|
-
throw new Error(`Failed to remove DNS record: ${error.message}
|
|
74
|
+
throw new Error(`Failed to remove DNS record: ${error.message}`);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
// Deprecated, use addProjectCustomDomains instead
|
|
@@ -95,7 +95,7 @@ class DnsService extends BaseService {
|
|
|
95
95
|
}
|
|
96
96
|
throw new Error(response.message);
|
|
97
97
|
} catch (error) {
|
|
98
|
-
throw new Error(`Failed to set project domains: ${error.message}
|
|
98
|
+
throw new Error(`Failed to set project domains: ${error.message}`);
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
// customDomains could be a string or an array of strings
|
|
@@ -38,7 +38,7 @@ class FileService extends BaseService {
|
|
|
38
38
|
message: response.message
|
|
39
39
|
};
|
|
40
40
|
} catch (error) {
|
|
41
|
-
throw new Error(`File upload failed: ${error.message}
|
|
41
|
+
throw new Error(`File upload failed: ${error.message}`);
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
async updateProjectIcon(projectId, iconFile) {
|
|
@@ -62,7 +62,7 @@ class FileService extends BaseService {
|
|
|
62
62
|
}
|
|
63
63
|
throw new Error(response.message);
|
|
64
64
|
} catch (error) {
|
|
65
|
-
throw new Error(`Failed to update project icon: ${error.message}
|
|
65
|
+
throw new Error(`Failed to update project icon: ${error.message}`);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
// ==================== FILE HELPER METHODS ====================
|
|
@@ -30,7 +30,7 @@ class PaymentService extends BaseService {
|
|
|
30
30
|
}
|
|
31
31
|
throw new Error(response.message);
|
|
32
32
|
} catch (error) {
|
|
33
|
-
throw new Error(`Failed to checkout: ${error.message}
|
|
33
|
+
throw new Error(`Failed to checkout: ${error.message}`);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
async getSubscriptionStatus(projectId) {
|
|
@@ -51,7 +51,7 @@ class PaymentService extends BaseService {
|
|
|
51
51
|
}
|
|
52
52
|
throw new Error(response.message);
|
|
53
53
|
} catch (error) {
|
|
54
|
-
throw new Error(`Failed to get subscription status: ${error.message}
|
|
54
|
+
throw new Error(`Failed to get subscription status: ${error.message}`);
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
// ==================== PAYMENT HELPER METHODS ====================
|
|
@@ -15,7 +15,7 @@ class PlanService extends BaseService {
|
|
|
15
15
|
}
|
|
16
16
|
throw new Error(response.message);
|
|
17
17
|
} catch (error) {
|
|
18
|
-
throw new Error(`Failed to get plans: ${error.message}
|
|
18
|
+
throw new Error(`Failed to get plans: ${error.message}`);
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
@@ -35,7 +35,7 @@ class PlanService extends BaseService {
|
|
|
35
35
|
}
|
|
36
36
|
throw new Error(response.message);
|
|
37
37
|
} catch (error) {
|
|
38
|
-
throw new Error(`Failed to get plan: ${error.message}
|
|
38
|
+
throw new Error(`Failed to get plan: ${error.message}`);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
// ==================== ADMIN PLAN METHODS ====================
|
|
@@ -54,7 +54,7 @@ class PlanService extends BaseService {
|
|
|
54
54
|
}
|
|
55
55
|
throw new Error(response.message);
|
|
56
56
|
} catch (error) {
|
|
57
|
-
throw new Error(`Failed to get admin plans: ${error.message}
|
|
57
|
+
throw new Error(`Failed to get admin plans: ${error.message}`);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
@@ -76,7 +76,7 @@ class PlanService extends BaseService {
|
|
|
76
76
|
}
|
|
77
77
|
throw new Error(response.message);
|
|
78
78
|
} catch (error) {
|
|
79
|
-
throw new Error(`Failed to create plan: ${error.message}
|
|
79
|
+
throw new Error(`Failed to create plan: ${error.message}`);
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
@@ -101,7 +101,7 @@ class PlanService extends BaseService {
|
|
|
101
101
|
}
|
|
102
102
|
throw new Error(response.message);
|
|
103
103
|
} catch (error) {
|
|
104
|
-
throw new Error(`Failed to update plan: ${error.message}
|
|
104
|
+
throw new Error(`Failed to update plan: ${error.message}`);
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
/**
|
|
@@ -122,7 +122,7 @@ class PlanService extends BaseService {
|
|
|
122
122
|
}
|
|
123
123
|
throw new Error(response.message);
|
|
124
124
|
} catch (error) {
|
|
125
|
-
throw new Error(`Failed to delete plan: ${error.message}
|
|
125
|
+
throw new Error(`Failed to delete plan: ${error.message}`);
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
/**
|
|
@@ -140,7 +140,7 @@ class PlanService extends BaseService {
|
|
|
140
140
|
}
|
|
141
141
|
throw new Error(response.message);
|
|
142
142
|
} catch (error) {
|
|
143
|
-
throw new Error(`Failed to initialize plans: ${error.message}
|
|
143
|
+
throw new Error(`Failed to initialize plans: ${error.message}`);
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
146
|
// ==================== PLAN HELPER METHODS ====================
|
|
@@ -155,7 +155,7 @@ class PlanService extends BaseService {
|
|
|
155
155
|
}
|
|
156
156
|
return plans;
|
|
157
157
|
} catch (error) {
|
|
158
|
-
throw new Error(`Failed to get plans with validation: ${error.message}
|
|
158
|
+
throw new Error(`Failed to get plans with validation: ${error.message}`);
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
/**
|
|
@@ -172,7 +172,7 @@ class PlanService extends BaseService {
|
|
|
172
172
|
}
|
|
173
173
|
return plan;
|
|
174
174
|
} catch (error) {
|
|
175
|
-
throw new Error(`Failed to get plan with validation: ${error.message}
|
|
175
|
+
throw new Error(`Failed to get plan with validation: ${error.message}`);
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
178
|
/**
|
|
@@ -224,7 +224,7 @@ class PlanService extends BaseService {
|
|
|
224
224
|
const plans = await this.getPlans();
|
|
225
225
|
return plans.filter((plan) => plan.active !== false);
|
|
226
226
|
} catch (error) {
|
|
227
|
-
throw new Error(`Failed to get active plans: ${error.message}
|
|
227
|
+
throw new Error(`Failed to get active plans: ${error.message}`);
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
230
|
/**
|
|
@@ -238,7 +238,7 @@ class PlanService extends BaseService {
|
|
|
238
238
|
return price >= minPrice && price <= maxPrice;
|
|
239
239
|
});
|
|
240
240
|
} catch (error) {
|
|
241
|
-
throw new Error(`Failed to get plans by price range: ${error.message}
|
|
241
|
+
throw new Error(`Failed to get plans by price range: ${error.message}`);
|
|
242
242
|
}
|
|
243
243
|
}
|
|
244
244
|
/**
|
|
@@ -256,7 +256,7 @@ class PlanService extends BaseService {
|
|
|
256
256
|
}
|
|
257
257
|
return plan;
|
|
258
258
|
} catch (error) {
|
|
259
|
-
throw new Error(`Failed to get plan by key: ${error.message}
|
|
259
|
+
throw new Error(`Failed to get plan by key: ${error.message}`);
|
|
260
260
|
}
|
|
261
261
|
}
|
|
262
262
|
}
|