@symbo.ls/sdk 2.32.1 → 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 +61 -163
- 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 +343 -937
- 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 +93 -482
- 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 -356
- package/dist/esm/services/PullRequestService.js +38 -71
- package/dist/esm/services/SubscriptionService.js +45 -78
- package/dist/esm/services/index.js +338 -914
- 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 +62 -164
- 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 +72 -203
- 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 -276
- package/dist/esm/services/ScreenshotService.js +0 -992
- package/dist/esm/utils/ordering.js +0 -258
- package/dist/node/services/ScreenshotService.js +0 -285
- package/dist/node/utils/ordering.js +0 -257
- package/src/services/ScreenshotService.js +0 -258
- package/src/utils/ordering.js +0 -244
|
@@ -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 {};
|
|
@@ -105,49 +103,57 @@ class CollabService extends BaseService {
|
|
|
105
103
|
if (this._client) {
|
|
106
104
|
await this.disconnect();
|
|
107
105
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
console.log(
|
|
124
|
-
this.
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
this._stateManager.setVersion(version);
|
|
129
|
-
}
|
|
130
|
-
rootBus.emit("checkpoint:done", { version, origin: "auto" });
|
|
131
|
-
});
|
|
132
|
-
(_d = this._client.socket) == null ? void 0 : _d.on("clients", this._handleClientsEvent.bind(this));
|
|
133
|
-
(_e = this._client.socket) == null ? void 0 : _e.on(
|
|
134
|
-
"bundle:done",
|
|
135
|
-
this._handleBundleDoneEvent.bind(this)
|
|
136
|
-
);
|
|
137
|
-
(_f = this._client.socket) == null ? void 0 : _f.on(
|
|
138
|
-
"bundle:error",
|
|
139
|
-
this._handleBundleErrorEvent.bind(this)
|
|
140
|
-
);
|
|
141
|
-
if (this._pendingOps.length) {
|
|
142
|
-
console.log(
|
|
143
|
-
`[CollabService] Flushing ${this._pendingOps.length} offline operation batch(es)`
|
|
144
|
-
);
|
|
145
|
-
this._pendingOps.forEach(({ changes, orders }) => {
|
|
146
|
-
this.socket.emit("ops", { changes, orders, ts: Date.now() });
|
|
106
|
+
try {
|
|
107
|
+
this._client = new CollabClient({
|
|
108
|
+
jwt,
|
|
109
|
+
projectId,
|
|
110
|
+
branch,
|
|
111
|
+
live: Boolean(pro)
|
|
112
|
+
});
|
|
113
|
+
await new Promise((resolve) => {
|
|
114
|
+
var _a2, _b2;
|
|
115
|
+
if ((_a2 = this._client.socket) == null ? void 0 : _a2.connected) {
|
|
116
|
+
resolve();
|
|
117
|
+
} else {
|
|
118
|
+
(_b2 = this._client.socket) == null ? void 0 : _b2.once("connect", resolve);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
console.log("[CollabService] socket connected");
|
|
122
|
+
(_b = this._client.socket) == null ? void 0 : _b.on("ops", ({ changes }) => {
|
|
123
|
+
console.log(`ops event`);
|
|
124
|
+
console.log(changes);
|
|
125
|
+
this._stateManager.applyChanges(changes, { fromSocket: true });
|
|
147
126
|
});
|
|
148
|
-
this.
|
|
127
|
+
(_c = this._client.socket) == null ? void 0 : _c.on("commit", ({ version }) => {
|
|
128
|
+
if (version) {
|
|
129
|
+
this._stateManager.setVersion(version);
|
|
130
|
+
}
|
|
131
|
+
rootBus.emit("checkpoint:done", { version, origin: "auto" });
|
|
132
|
+
});
|
|
133
|
+
(_d = this._client.socket) == null ? void 0 : _d.on("clients", this._handleClientsEvent.bind(this));
|
|
134
|
+
(_e = this._client.socket) == null ? void 0 : _e.on(
|
|
135
|
+
"bundle:done",
|
|
136
|
+
this._handleBundleDoneEvent.bind(this)
|
|
137
|
+
);
|
|
138
|
+
(_f = this._client.socket) == null ? void 0 : _f.on(
|
|
139
|
+
"bundle:error",
|
|
140
|
+
this._handleBundleErrorEvent.bind(this)
|
|
141
|
+
);
|
|
142
|
+
if (this._pendingOps.length) {
|
|
143
|
+
console.log(
|
|
144
|
+
`[CollabService] Flushing ${this._pendingOps.length} offline operation batch(es)`
|
|
145
|
+
);
|
|
146
|
+
this._pendingOps.forEach(({ tuples }) => {
|
|
147
|
+
this.socket.emit("ops", { changes: tuples, ts: Date.now() });
|
|
148
|
+
});
|
|
149
|
+
this._pendingOps.length = 0;
|
|
150
|
+
}
|
|
151
|
+
this._connected = true;
|
|
152
|
+
console.log("[CollabService] Connected to project:", projectId);
|
|
153
|
+
} catch (err) {
|
|
154
|
+
console.error("[CollabService] Connection failed:", err);
|
|
155
|
+
throw err;
|
|
149
156
|
}
|
|
150
|
-
this._connected = true;
|
|
151
157
|
}
|
|
152
158
|
disconnect() {
|
|
153
159
|
var _a;
|
|
@@ -185,128 +191,24 @@ class CollabService extends BaseService {
|
|
|
185
191
|
}
|
|
186
192
|
/* ---------- data helpers ---------- */
|
|
187
193
|
updateData(tuples, options = {}) {
|
|
188
|
-
var _a
|
|
194
|
+
var _a;
|
|
189
195
|
this._ensureStateManager();
|
|
190
196
|
const { isUndo = false, isRedo = false } = options;
|
|
191
197
|
if (!isUndo && !isRedo && !this._isUndoRedo) {
|
|
192
198
|
this._trackForUndo(tuples, options);
|
|
193
199
|
}
|
|
194
|
-
const processedTuples = (() => {
|
|
195
|
-
var _a2;
|
|
196
|
-
try {
|
|
197
|
-
const root = (_a2 = this._stateManager) == null ? void 0 : _a2.root;
|
|
198
|
-
const isPlainObject = (o) => o && typeof o === "object" && !Array.isArray(o);
|
|
199
|
-
const getByPath = (state2, path) => {
|
|
200
|
-
if (!state2 || typeof state2.getByPath !== "function") {
|
|
201
|
-
return null;
|
|
202
|
-
}
|
|
203
|
-
try {
|
|
204
|
-
return state2.getByPath(path);
|
|
205
|
-
} catch {
|
|
206
|
-
return null;
|
|
207
|
-
}
|
|
208
|
-
};
|
|
209
|
-
const expandTuple = (t) => {
|
|
210
|
-
const [action, path, value] = t || [];
|
|
211
|
-
const isSchemaPath = Array.isArray(path) && path[0] === "schema";
|
|
212
|
-
if (action === "delete" || isSchemaPath) {
|
|
213
|
-
return [t];
|
|
214
|
-
}
|
|
215
|
-
const canConsiderExpansion = action === "update" && Array.isArray(path) && (path.length === 1 || path.length === 2) && isPlainObject(value);
|
|
216
|
-
if (!canConsiderExpansion) {
|
|
217
|
-
return [t];
|
|
218
|
-
}
|
|
219
|
-
const prev = getByPath(root, path) || {};
|
|
220
|
-
const next = value || {};
|
|
221
|
-
if (!isPlainObject(prev) || !isPlainObject(next)) {
|
|
222
|
-
return [t];
|
|
223
|
-
}
|
|
224
|
-
const ops = diffJson(prev, next, []);
|
|
225
|
-
if (!ops.length) {
|
|
226
|
-
return [];
|
|
227
|
-
}
|
|
228
|
-
const arr = [];
|
|
229
|
-
for (let j = 0; j < ops.length; j++) {
|
|
230
|
-
const op = ops[j];
|
|
231
|
-
const fullPath = [...path, ...op.path];
|
|
232
|
-
const last = fullPath[fullPath.length - 1];
|
|
233
|
-
if (op.action === "set") {
|
|
234
|
-
arr.push(["update", fullPath, op.value]);
|
|
235
|
-
} else if (op.action === "del") {
|
|
236
|
-
if (last !== "__order") {
|
|
237
|
-
arr.push(["delete", fullPath]);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
return arr;
|
|
242
|
-
};
|
|
243
|
-
const minimizeTuples = (inputTuples) => {
|
|
244
|
-
const out = [];
|
|
245
|
-
for (let i = 0; i < inputTuples.length; i++) {
|
|
246
|
-
const expanded = expandTuple(inputTuples[i]);
|
|
247
|
-
for (let k = 0; k < expanded.length; k++) {
|
|
248
|
-
const tuple = expanded[k];
|
|
249
|
-
const isDelete = Array.isArray(tuple) && tuple[0] === "delete";
|
|
250
|
-
const isOrderKey = isDelete && Array.isArray(tuple[1]) && tuple[1][tuple[1].length - 1] === "__order";
|
|
251
|
-
if (!isOrderKey) {
|
|
252
|
-
out.push(tuple);
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
console.log(`Minimized tuples`, out);
|
|
257
|
-
return out;
|
|
258
|
-
};
|
|
259
|
-
console.log(`Processing tuples`, tuples);
|
|
260
|
-
return minimizeTuples(tuples);
|
|
261
|
-
} catch (err) {
|
|
262
|
-
console.warn(
|
|
263
|
-
"[CollabService] Minimal diff expansion failed \u2013 using original tuples",
|
|
264
|
-
err
|
|
265
|
-
);
|
|
266
|
-
return tuples;
|
|
267
|
-
}
|
|
268
|
-
})();
|
|
269
200
|
if (options.append && options.append.length) {
|
|
270
|
-
|
|
201
|
+
tuples.push(...options.append);
|
|
271
202
|
}
|
|
272
203
|
this._stateManager.applyChanges(tuples, { ...options });
|
|
273
|
-
|
|
274
|
-
const el = state == null ? void 0 : state.__element;
|
|
275
|
-
const orders = computeOrdersForTuples(state, processedTuples);
|
|
276
|
-
const stringifiedGranularTuples = (el == null ? void 0 : el.call) ? el.call(
|
|
277
|
-
"deepStringifyFunctions",
|
|
278
|
-
processedTuples,
|
|
279
|
-
Array.isArray(processedTuples) ? [] : {}
|
|
280
|
-
) : deepStringifyFunctions(
|
|
281
|
-
processedTuples,
|
|
282
|
-
Array.isArray(processedTuples) ? [] : {}
|
|
283
|
-
);
|
|
284
|
-
const stringifiedTuples = (el == null ? void 0 : el.call) ? el.call(
|
|
285
|
-
"deepStringifyFunctions",
|
|
286
|
-
tuples,
|
|
287
|
-
Array.isArray(tuples) ? [] : {}
|
|
288
|
-
) : deepStringifyFunctions(
|
|
289
|
-
tuples,
|
|
290
|
-
Array.isArray(tuples) ? [] : {}
|
|
291
|
-
);
|
|
204
|
+
tuples = deepStringify(tuples, []);
|
|
292
205
|
if (!this.isConnected()) {
|
|
293
206
|
console.warn("[CollabService] Not connected, queuing real-time update");
|
|
294
|
-
this._pendingOps.push({
|
|
207
|
+
this._pendingOps.push({ tuples, options });
|
|
295
208
|
return;
|
|
296
209
|
}
|
|
297
|
-
if ((
|
|
298
|
-
|
|
299
|
-
changes: stringifiedTuples,
|
|
300
|
-
granularChanges: stringifiedGranularTuples,
|
|
301
|
-
orders,
|
|
302
|
-
ts: Date.now()
|
|
303
|
-
});
|
|
304
|
-
this.socket.emit("ops", {
|
|
305
|
-
changes: stringifiedTuples,
|
|
306
|
-
granularChanges: stringifiedGranularTuples,
|
|
307
|
-
orders,
|
|
308
|
-
ts: Date.now()
|
|
309
|
-
});
|
|
210
|
+
if ((_a = this.socket) == null ? void 0 : _a.connected) {
|
|
211
|
+
this.socket.emit("ops", { changes: tuples, ts: Date.now() });
|
|
310
212
|
}
|
|
311
213
|
return { success: true };
|
|
312
214
|
}
|
|
@@ -447,7 +349,7 @@ class CollabService extends BaseService {
|
|
|
447
349
|
const updatedOpts = { ...opts, skipComponentsChangedEvent: true };
|
|
448
350
|
return this.updateData(tuples, updatedOpts);
|
|
449
351
|
} catch (error) {
|
|
450
|
-
throw new Error(`Failed to add item: ${error.message}
|
|
352
|
+
throw new Error(`Failed to add item: ${error.message}`);
|
|
451
353
|
}
|
|
452
354
|
}
|
|
453
355
|
addMultipleItems(items, opts = {}) {
|
|
@@ -476,7 +378,7 @@ class CollabService extends BaseService {
|
|
|
476
378
|
title: "Failed to add item",
|
|
477
379
|
message: error.message
|
|
478
380
|
});
|
|
479
|
-
throw new Error(`Failed to add item: ${error.message}
|
|
381
|
+
throw new Error(`Failed to add item: ${error.message}`);
|
|
480
382
|
}
|
|
481
383
|
}
|
|
482
384
|
updateItem(type, data, opts = {}) {
|
|
@@ -498,9 +400,7 @@ class CollabService extends BaseService {
|
|
|
498
400
|
title: "Failed to update item",
|
|
499
401
|
message: error.message
|
|
500
402
|
});
|
|
501
|
-
throw new Error(`Failed to update item: ${error.message}
|
|
502
|
-
cause: error
|
|
503
|
-
});
|
|
403
|
+
throw new Error(`Failed to update item: ${error.message}`);
|
|
504
404
|
}
|
|
505
405
|
}
|
|
506
406
|
deleteItem(type, key, opts = {}) {
|
|
@@ -525,9 +425,7 @@ class CollabService extends BaseService {
|
|
|
525
425
|
title: "Failed to delete item",
|
|
526
426
|
message: error.message
|
|
527
427
|
});
|
|
528
|
-
throw new Error(`Failed to delete item: ${error.message}
|
|
529
|
-
cause: error
|
|
530
|
-
});
|
|
428
|
+
throw new Error(`Failed to delete item: ${error.message}`);
|
|
531
429
|
}
|
|
532
430
|
}
|
|
533
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
|
}
|