@symbo.ls/sdk 2.32.2 → 2.32.4
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 +43 -8
- package/dist/cjs/index.js +12 -4
- package/dist/cjs/services/AdminService.js +4 -4
- package/dist/cjs/services/AuthService.js +36 -149
- package/dist/cjs/services/BaseService.js +5 -18
- package/dist/cjs/services/BranchService.js +10 -10
- package/dist/cjs/services/CollabService.js +94 -61
- 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 +45 -35
- package/dist/cjs/services/PullRequestService.js +7 -7
- package/dist/cjs/services/ScreenshotService.js +304 -0
- package/dist/cjs/services/SubscriptionService.js +14 -14
- package/dist/cjs/services/index.js +4 -0
- package/dist/cjs/utils/TokenManager.js +16 -5
- package/dist/cjs/utils/changePreprocessor.js +134 -0
- package/dist/cjs/utils/jsonDiff.js +46 -4
- package/dist/cjs/utils/ordering.js +274 -0
- package/dist/cjs/utils/services.js +14 -1
- package/dist/esm/config/environment.js +43 -8
- package/dist/esm/index.js +1099 -417
- package/dist/esm/services/AdminService.js +68 -35
- package/dist/esm/services/AuthService.js +100 -168
- package/dist/esm/services/BaseService.js +64 -31
- package/dist/esm/services/BranchService.js +74 -41
- package/dist/esm/services/CollabService.js +570 -97
- package/dist/esm/services/CoreService.js +83 -50
- package/dist/esm/services/DnsService.js +68 -35
- package/dist/esm/services/FileService.js +66 -33
- package/dist/esm/services/PaymentService.js +66 -33
- package/dist/esm/services/PlanService.js +76 -43
- package/dist/esm/services/ProjectService.js +547 -66
- package/dist/esm/services/PullRequestService.js +71 -38
- package/dist/esm/services/ScreenshotService.js +992 -0
- package/dist/esm/services/SubscriptionService.js +78 -45
- package/dist/esm/services/index.js +1076 -412
- package/dist/esm/utils/CollabClient.js +89 -12
- package/dist/esm/utils/TokenManager.js +16 -5
- package/dist/esm/utils/changePreprocessor.js +442 -0
- package/dist/esm/utils/jsonDiff.js +46 -4
- package/dist/esm/utils/ordering.js +256 -0
- package/dist/esm/utils/services.js +14 -1
- package/dist/node/config/environment.js +43 -8
- package/dist/node/index.js +14 -5
- package/dist/node/services/AdminService.js +4 -4
- package/dist/node/services/AuthService.js +36 -139
- package/dist/node/services/BaseService.js +5 -18
- package/dist/node/services/BranchService.js +10 -10
- package/dist/node/services/CollabService.js +95 -62
- 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 +45 -35
- package/dist/node/services/PullRequestService.js +7 -7
- package/dist/node/services/ScreenshotService.js +285 -0
- package/dist/node/services/SubscriptionService.js +14 -14
- package/dist/node/services/index.js +4 -0
- package/dist/node/utils/TokenManager.js +16 -5
- package/dist/node/utils/changePreprocessor.js +115 -0
- package/dist/node/utils/jsonDiff.js +46 -4
- package/dist/node/utils/ordering.js +255 -0
- package/dist/node/utils/services.js +14 -1
- package/package.json +7 -6
- package/src/config/environment.js +48 -9
- package/src/index.js +38 -22
- package/src/services/AdminService.js +4 -4
- package/src/services/AuthService.js +42 -175
- package/src/services/BaseService.js +7 -24
- package/src/services/BranchService.js +10 -10
- package/src/services/CollabService.js +115 -74
- 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 +50 -35
- package/src/services/PullRequestService.js +7 -7
- package/src/services/ScreenshotService.js +258 -0
- package/src/services/SubscriptionService.js +14 -14
- package/src/services/index.js +6 -1
- package/src/utils/TokenManager.js +19 -5
- package/src/utils/changePreprocessor.js +139 -0
- package/src/utils/jsonDiff.js +40 -5
- package/src/utils/ordering.js +244 -0
- package/src/utils/services.js +15 -1
|
@@ -3,7 +3,8 @@ 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 {
|
|
6
|
+
import { deepStringifyFunctions } from "@domql/utils";
|
|
7
|
+
import { preprocessChanges } from "../utils/changePreprocessor.js";
|
|
7
8
|
class CollabService extends BaseService {
|
|
8
9
|
constructor(config) {
|
|
9
10
|
super(config);
|
|
@@ -67,8 +68,8 @@ class CollabService extends BaseService {
|
|
|
67
68
|
logger(`[Notification] ${title}${message ? ` \u2013 ${message}` : ""}`);
|
|
68
69
|
return;
|
|
69
70
|
}
|
|
70
|
-
case "
|
|
71
|
-
return
|
|
71
|
+
case "deepStringifyFunctions": {
|
|
72
|
+
return deepStringifyFunctions(...args);
|
|
72
73
|
}
|
|
73
74
|
default:
|
|
74
75
|
return {};
|
|
@@ -103,57 +104,49 @@ class CollabService extends BaseService {
|
|
|
103
104
|
if (this._client) {
|
|
104
105
|
await this.disconnect();
|
|
105
106
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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 });
|
|
126
|
-
});
|
|
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;
|
|
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);
|
|
150
119
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
120
|
+
});
|
|
121
|
+
(_b = this._client.socket) == null ? void 0 : _b.on("ops", ({ changes }) => {
|
|
122
|
+
console.log(`ops event`);
|
|
123
|
+
this._stateManager.applyChanges(changes, { fromSocket: true });
|
|
124
|
+
});
|
|
125
|
+
(_c = this._client.socket) == null ? void 0 : _c.on("commit", ({ version }) => {
|
|
126
|
+
if (version) {
|
|
127
|
+
this._stateManager.setVersion(version);
|
|
128
|
+
}
|
|
129
|
+
rootBus.emit("checkpoint:done", { version, origin: "auto" });
|
|
130
|
+
});
|
|
131
|
+
(_d = this._client.socket) == null ? void 0 : _d.on("clients", this._handleClientsEvent.bind(this));
|
|
132
|
+
(_e = this._client.socket) == null ? void 0 : _e.on(
|
|
133
|
+
"bundle:done",
|
|
134
|
+
this._handleBundleDoneEvent.bind(this)
|
|
135
|
+
);
|
|
136
|
+
(_f = this._client.socket) == null ? void 0 : _f.on(
|
|
137
|
+
"bundle:error",
|
|
138
|
+
this._handleBundleErrorEvent.bind(this)
|
|
139
|
+
);
|
|
140
|
+
if (this._pendingOps.length) {
|
|
141
|
+
console.log(
|
|
142
|
+
`[CollabService] Flushing ${this._pendingOps.length} offline operation batch(es)`
|
|
143
|
+
);
|
|
144
|
+
this._pendingOps.forEach(({ changes, granularChanges, orders }) => {
|
|
145
|
+
this.socket.emit("ops", { changes, granularChanges, orders, ts: Date.now() });
|
|
146
|
+
});
|
|
147
|
+
this._pendingOps.length = 0;
|
|
156
148
|
}
|
|
149
|
+
this._connected = true;
|
|
157
150
|
}
|
|
158
151
|
disconnect() {
|
|
159
152
|
var _a;
|
|
@@ -191,24 +184,60 @@ class CollabService extends BaseService {
|
|
|
191
184
|
}
|
|
192
185
|
/* ---------- data helpers ---------- */
|
|
193
186
|
updateData(tuples, options = {}) {
|
|
194
|
-
var _a;
|
|
187
|
+
var _a, _b, _c;
|
|
195
188
|
this._ensureStateManager();
|
|
196
189
|
const { isUndo = false, isRedo = false } = options;
|
|
197
190
|
if (!isUndo && !isRedo && !this._isUndoRedo) {
|
|
198
191
|
this._trackForUndo(tuples, options);
|
|
199
192
|
}
|
|
193
|
+
const root = (_a = this._stateManager) == null ? void 0 : _a.root;
|
|
194
|
+
const { granularChanges: processedTuples, orders } = preprocessChanges(
|
|
195
|
+
root,
|
|
196
|
+
tuples,
|
|
197
|
+
options
|
|
198
|
+
);
|
|
200
199
|
if (options.append && options.append.length) {
|
|
201
|
-
|
|
200
|
+
processedTuples.push(...options.append);
|
|
202
201
|
}
|
|
203
202
|
this._stateManager.applyChanges(tuples, { ...options });
|
|
204
|
-
|
|
203
|
+
const state = (_b = this._stateManager) == null ? void 0 : _b.root;
|
|
204
|
+
const el = state == null ? void 0 : state.__element;
|
|
205
|
+
const stringifiedGranularTuples = (el == null ? void 0 : el.call) ? el.call(
|
|
206
|
+
"deepStringifyFunctions",
|
|
207
|
+
processedTuples,
|
|
208
|
+
Array.isArray(processedTuples) ? [] : {}
|
|
209
|
+
) : deepStringifyFunctions(
|
|
210
|
+
processedTuples,
|
|
211
|
+
Array.isArray(processedTuples) ? [] : {}
|
|
212
|
+
);
|
|
213
|
+
const stringifiedTuples = (el == null ? void 0 : el.call) ? el.call(
|
|
214
|
+
"deepStringifyFunctions",
|
|
215
|
+
tuples,
|
|
216
|
+
Array.isArray(tuples) ? [] : {}
|
|
217
|
+
) : deepStringifyFunctions(tuples, Array.isArray(tuples) ? [] : {});
|
|
205
218
|
if (!this.isConnected()) {
|
|
206
219
|
console.warn("[CollabService] Not connected, queuing real-time update");
|
|
207
|
-
this._pendingOps.push({
|
|
220
|
+
this._pendingOps.push({
|
|
221
|
+
changes: stringifiedTuples,
|
|
222
|
+
granularChanges: stringifiedGranularTuples,
|
|
223
|
+
orders,
|
|
224
|
+
options
|
|
225
|
+
});
|
|
208
226
|
return;
|
|
209
227
|
}
|
|
210
|
-
if ((
|
|
211
|
-
|
|
228
|
+
if ((_c = this.socket) == null ? void 0 : _c.connected) {
|
|
229
|
+
console.log("[CollabService] Sending operations to the backend", {
|
|
230
|
+
changes: stringifiedTuples,
|
|
231
|
+
granularChanges: stringifiedGranularTuples,
|
|
232
|
+
orders,
|
|
233
|
+
ts: Date.now()
|
|
234
|
+
});
|
|
235
|
+
this.socket.emit("ops", {
|
|
236
|
+
changes: stringifiedTuples,
|
|
237
|
+
granularChanges: stringifiedGranularTuples,
|
|
238
|
+
orders,
|
|
239
|
+
ts: Date.now()
|
|
240
|
+
});
|
|
212
241
|
}
|
|
213
242
|
return { success: true };
|
|
214
243
|
}
|
|
@@ -349,7 +378,7 @@ class CollabService extends BaseService {
|
|
|
349
378
|
const updatedOpts = { ...opts, skipComponentsChangedEvent: true };
|
|
350
379
|
return this.updateData(tuples, updatedOpts);
|
|
351
380
|
} catch (error) {
|
|
352
|
-
throw new Error(`Failed to add item: ${error.message}
|
|
381
|
+
throw new Error(`Failed to add item: ${error.message}`, { cause: error });
|
|
353
382
|
}
|
|
354
383
|
}
|
|
355
384
|
addMultipleItems(items, opts = {}) {
|
|
@@ -378,7 +407,7 @@ class CollabService extends BaseService {
|
|
|
378
407
|
title: "Failed to add item",
|
|
379
408
|
message: error.message
|
|
380
409
|
});
|
|
381
|
-
throw new Error(`Failed to add item: ${error.message}
|
|
410
|
+
throw new Error(`Failed to add item: ${error.message}`, { cause: error });
|
|
382
411
|
}
|
|
383
412
|
}
|
|
384
413
|
updateItem(type, data, opts = {}) {
|
|
@@ -400,7 +429,9 @@ class CollabService extends BaseService {
|
|
|
400
429
|
title: "Failed to update item",
|
|
401
430
|
message: error.message
|
|
402
431
|
});
|
|
403
|
-
throw new Error(`Failed to update item: ${error.message}
|
|
432
|
+
throw new Error(`Failed to update item: ${error.message}`, {
|
|
433
|
+
cause: error
|
|
434
|
+
});
|
|
404
435
|
}
|
|
405
436
|
}
|
|
406
437
|
deleteItem(type, key, opts = {}) {
|
|
@@ -425,7 +456,9 @@ class CollabService extends BaseService {
|
|
|
425
456
|
title: "Failed to delete item",
|
|
426
457
|
message: error.message
|
|
427
458
|
});
|
|
428
|
-
throw new Error(`Failed to delete item: ${error.message}
|
|
459
|
+
throw new Error(`Failed to delete item: ${error.message}`, {
|
|
460
|
+
cause: error
|
|
461
|
+
});
|
|
429
462
|
}
|
|
430
463
|
}
|
|
431
464
|
/* ---------- 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", { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
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}`, { cause: error });
|
|
260
260
|
}
|
|
261
261
|
}
|
|
262
262
|
}
|