@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.
Files changed (82) hide show
  1. package/dist/cjs/config/environment.js +8 -43
  2. package/dist/cjs/index.js +4 -12
  3. package/dist/cjs/services/AdminService.js +4 -4
  4. package/dist/cjs/services/AuthService.js +149 -36
  5. package/dist/cjs/services/BaseService.js +18 -5
  6. package/dist/cjs/services/BranchService.js +10 -10
  7. package/dist/cjs/services/CollabService.js +61 -163
  8. package/dist/cjs/services/CoreService.js +19 -19
  9. package/dist/cjs/services/DnsService.js +4 -4
  10. package/dist/cjs/services/FileService.js +2 -2
  11. package/dist/cjs/services/PaymentService.js +2 -2
  12. package/dist/cjs/services/PlanService.js +12 -12
  13. package/dist/cjs/services/ProjectService.js +34 -39
  14. package/dist/cjs/services/PullRequestService.js +7 -7
  15. package/dist/cjs/services/SubscriptionService.js +14 -14
  16. package/dist/cjs/services/index.js +0 -4
  17. package/dist/cjs/utils/TokenManager.js +5 -16
  18. package/dist/cjs/utils/services.js +1 -14
  19. package/dist/esm/config/environment.js +8 -43
  20. package/dist/esm/index.js +343 -937
  21. package/dist/esm/services/AdminService.js +35 -68
  22. package/dist/esm/services/AuthService.js +168 -100
  23. package/dist/esm/services/BaseService.js +31 -64
  24. package/dist/esm/services/BranchService.js +41 -74
  25. package/dist/esm/services/CollabService.js +93 -482
  26. package/dist/esm/services/CoreService.js +50 -83
  27. package/dist/esm/services/DnsService.js +35 -68
  28. package/dist/esm/services/FileService.js +33 -66
  29. package/dist/esm/services/PaymentService.js +33 -66
  30. package/dist/esm/services/PlanService.js +43 -76
  31. package/dist/esm/services/ProjectService.js +65 -356
  32. package/dist/esm/services/PullRequestService.js +38 -71
  33. package/dist/esm/services/SubscriptionService.js +45 -78
  34. package/dist/esm/services/index.js +338 -914
  35. package/dist/esm/utils/CollabClient.js +8 -43
  36. package/dist/esm/utils/TokenManager.js +5 -16
  37. package/dist/esm/utils/services.js +1 -14
  38. package/dist/node/config/environment.js +8 -43
  39. package/dist/node/index.js +5 -14
  40. package/dist/node/services/AdminService.js +4 -4
  41. package/dist/node/services/AuthService.js +139 -36
  42. package/dist/node/services/BaseService.js +18 -5
  43. package/dist/node/services/BranchService.js +10 -10
  44. package/dist/node/services/CollabService.js +62 -164
  45. package/dist/node/services/CoreService.js +19 -19
  46. package/dist/node/services/DnsService.js +4 -4
  47. package/dist/node/services/FileService.js +2 -2
  48. package/dist/node/services/PaymentService.js +2 -2
  49. package/dist/node/services/PlanService.js +12 -12
  50. package/dist/node/services/ProjectService.js +34 -39
  51. package/dist/node/services/PullRequestService.js +7 -7
  52. package/dist/node/services/SubscriptionService.js +14 -14
  53. package/dist/node/services/index.js +0 -4
  54. package/dist/node/utils/TokenManager.js +5 -16
  55. package/dist/node/utils/services.js +1 -14
  56. package/package.json +6 -7
  57. package/src/config/environment.js +9 -48
  58. package/src/index.js +22 -38
  59. package/src/services/AdminService.js +4 -4
  60. package/src/services/AuthService.js +175 -42
  61. package/src/services/BaseService.js +24 -7
  62. package/src/services/BranchService.js +10 -10
  63. package/src/services/CollabService.js +72 -203
  64. package/src/services/CoreService.js +19 -19
  65. package/src/services/DnsService.js +4 -4
  66. package/src/services/FileService.js +2 -2
  67. package/src/services/PaymentService.js +2 -2
  68. package/src/services/PlanService.js +12 -12
  69. package/src/services/ProjectService.js +34 -41
  70. package/src/services/PullRequestService.js +7 -7
  71. package/src/services/SubscriptionService.js +14 -14
  72. package/src/services/index.js +1 -6
  73. package/src/utils/TokenManager.js +5 -19
  74. package/src/utils/services.js +1 -15
  75. package/dist/cjs/services/ScreenshotService.js +0 -304
  76. package/dist/cjs/utils/ordering.js +0 -276
  77. package/dist/esm/services/ScreenshotService.js +0 -992
  78. package/dist/esm/utils/ordering.js +0 -258
  79. package/dist/node/services/ScreenshotService.js +0 -285
  80. package/dist/node/utils/ordering.js +0 -257
  81. package/src/services/ScreenshotService.js +0 -258
  82. package/src/utils/ordering.js +0 -244
@@ -4,9 +4,7 @@ import { RootStateManager } from '../state/RootStateManager.js'
4
4
  import { rootBus } from '../state/rootEventBus.js'
5
5
  import { validateParams } from '../utils/validation.js'
6
6
  // Direct import to allow deep stringification in non-browser (Node) environments
7
- import { deepStringifyFunctions } from '@domql/utils'
8
- import { diffJson } from '../utils/jsonDiff.js'
9
- import { computeOrdersForTuples } from '../utils/ordering.js'
7
+ import { deepStringify } from '@domql/utils'
10
8
  // (helper conversions reserved for future features)
11
9
 
12
10
  export class CollabService extends BaseService {
@@ -73,7 +71,7 @@ export class CollabService extends BaseService {
73
71
  }
74
72
 
75
73
  // 🌐 Ensure we always have a usable `__element` stub so that calls like
76
- // `el.call('openNotification', …)` or `el.call('deepStringifyFunctions', …)` do not
74
+ // `el.call('openNotification', …)` or `el.call('deepStringify', …)` do not
77
75
  // crash in headless / Node.js environments (e.g. integration tests).
78
76
  const root = this._stateManager?.root
79
77
 
@@ -94,9 +92,9 @@ export class CollabService extends BaseService {
94
92
  logger(`[Notification] ${title}${message ? ` – ${message}` : ''}`)
95
93
  return
96
94
  }
97
- case 'deepStringifyFunctions': {
95
+ case 'deepStringify': {
98
96
  // Pass-through to the shared utility from `smbls`
99
- return deepStringifyFunctions(...args)
97
+ return deepStringify(...args)
100
98
  }
101
99
  default:
102
100
  return {}
@@ -139,65 +137,73 @@ export class CollabService extends BaseService {
139
137
  await this.disconnect()
140
138
  }
141
139
 
142
- this._client = new CollabClient({
143
- jwt,
144
- projectId,
145
- branch,
146
- live: Boolean(pro)
147
- })
140
+ try {
141
+ this._client = new CollabClient({
142
+ jwt,
143
+ projectId,
144
+ branch,
145
+ live: Boolean(pro)
146
+ })
148
147
 
149
- // Mark as connected once the socket establishes a connection. This prevents
150
- // the SDK from being stuck waiting for an initial snapshot that may never
151
- // arrive (e.g. for new/empty documents).
152
- await new Promise((resolve) => {
153
- if (this._client.socket?.connected) {
154
- resolve()
155
- } else {
156
- this._client.socket?.once('connect', resolve)
157
- }
158
- })
148
+ // Mark as connected once the socket establishes a connection. This prevents
149
+ // the SDK from being stuck waiting for an initial snapshot that may never
150
+ // arrive (e.g. for new/empty documents).
151
+ await new Promise((resolve) => {
152
+ if (this._client.socket?.connected) {
153
+ resolve()
154
+ } else {
155
+ this._client.socket?.once('connect', resolve)
156
+ }
157
+ })
159
158
 
160
- // Set up event listeners
161
- this._client.socket?.on('ops', ({ changes }) => {
162
- console.log(`ops event`)
163
- this._stateManager.applyChanges(changes, { fromSocket: true })
164
- })
159
+ console.log('[CollabService] socket connected')
165
160
 
166
- this._client.socket?.on('commit', ({ version }) => {
167
- if (version) {
168
- this._stateManager.setVersion(version)
169
- }
161
+ // Set up event listeners
162
+ this._client.socket?.on('ops', ({ changes }) => {
163
+ console.log(`ops event`)
164
+ console.log(changes)
165
+ this._stateManager.applyChanges(changes, { fromSocket: true })
166
+ })
170
167
 
171
- // Inform UI about automatic commit
172
- rootBus.emit('checkpoint:done', { version, origin: 'auto' })
173
- })
168
+ this._client.socket?.on('commit', ({ version }) => {
169
+ if (version) {
170
+ this._stateManager.setVersion(version)
171
+ }
174
172
 
175
- // 🔄 Presence / members / cursor updates
176
- this._client.socket?.on('clients', this._handleClientsEvent.bind(this))
177
-
178
- // 🗜️ Bundle events – emitted by the dependency bundler service
179
- this._client.socket?.on(
180
- 'bundle:done',
181
- this._handleBundleDoneEvent.bind(this)
182
- )
183
- this._client.socket?.on(
184
- 'bundle:error',
185
- this._handleBundleErrorEvent.bind(this)
186
- )
187
-
188
- // Flush any operations that were queued while we were offline.
189
- if (this._pendingOps.length) {
190
- console.log(
191
- `[CollabService] Flushing ${this._pendingOps.length} offline operation batch(es)`
192
- )
193
- this._pendingOps.forEach(({ changes, orders }) => {
194
- this.socket.emit('ops', { changes, orders, ts: Date.now() })
173
+ // Inform UI about automatic commit
174
+ rootBus.emit('checkpoint:done', { version, origin: 'auto' })
195
175
  })
196
- this._pendingOps.length = 0
197
- }
198
176
 
199
- this._connected = true
200
- // console.log('[CollabService] Connected to project:', projectId)
177
+ // 🔄 Presence / members / cursor updates
178
+ this._client.socket?.on('clients', this._handleClientsEvent.bind(this))
179
+
180
+ // 🗜️ Bundle events – emitted by the dependency bundler service
181
+ this._client.socket?.on(
182
+ 'bundle:done',
183
+ this._handleBundleDoneEvent.bind(this)
184
+ )
185
+ this._client.socket?.on(
186
+ 'bundle:error',
187
+ this._handleBundleErrorEvent.bind(this)
188
+ )
189
+
190
+ // Flush any operations that were queued while we were offline.
191
+ if (this._pendingOps.length) {
192
+ console.log(
193
+ `[CollabService] Flushing ${this._pendingOps.length} offline operation batch(es)`
194
+ )
195
+ this._pendingOps.forEach(({ tuples }) => {
196
+ this.socket.emit('ops', { changes: tuples, ts: Date.now() })
197
+ })
198
+ this._pendingOps.length = 0
199
+ }
200
+
201
+ this._connected = true
202
+ console.log('[CollabService] Connected to project:', projectId)
203
+ } catch (err) {
204
+ console.error('[CollabService] Connection failed:', err)
205
+ throw err
206
+ }
201
207
  }
202
208
 
203
209
  disconnect() {
@@ -243,159 +249,26 @@ export class CollabService extends BaseService {
243
249
  this._trackForUndo(tuples, options)
244
250
  }
245
251
 
246
- // Minimize broad updates into granular update/delete tuples
247
- // Rules:
248
- // - Only transform ['update', [<rootKey>, ...], <object>] where <object> is a plain object
249
- // - Use current root state at the same path as baseline
250
- // - Emit ['delete', path] for missing keys and ['update', path, value] for changed keys
251
- // - Preserve non-object updates as-is
252
- // - Preserve explicit ['delete', ...] tuples as-is
253
- // - Keep schema updates untouched
254
- const processedTuples = (() => {
255
- try {
256
- const root = this._stateManager?.root
257
- const isPlainObject = (o) =>
258
- o && typeof o === 'object' && !Array.isArray(o)
259
-
260
- const getByPath = (state, path) => {
261
- if (!state || typeof state.getByPath !== 'function') {
262
- return null
263
- }
264
- try {
265
- return state.getByPath(path)
266
- } catch {
267
- return null
268
- }
269
- }
270
-
271
- const expandTuple = (t) => {
272
- const [action, path, value] = t || []
273
- const isSchemaPath = Array.isArray(path) && path[0] === 'schema'
274
- if (action === 'delete' || isSchemaPath) {
275
- return [t]
276
- }
277
- const canConsiderExpansion =
278
- action === 'update' &&
279
- Array.isArray(path) &&
280
- (path.length === 1 || path.length === 2) &&
281
- isPlainObject(value)
282
- if (!canConsiderExpansion) {
283
- return [t]
284
- }
285
- const prev = getByPath(root, path) || {}
286
- const next = value || {}
287
- if (!isPlainObject(prev) || !isPlainObject(next)) {
288
- return [t]
289
- }
290
- const ops = diffJson(prev, next, [])
291
- if (!ops.length) {
292
- return []
293
- }
294
- const arr = []
295
- for (let j = 0; j < ops.length; j++) {
296
- const op = ops[j]
297
- const fullPath = [...path, ...op.path]
298
- const last = fullPath[fullPath.length - 1]
299
- if (op.action === 'set') {
300
- arr.push(['update', fullPath, op.value])
301
- } else if (op.action === 'del') {
302
- // Do not generate deletes for __order keys
303
- if (last !== '__order') {
304
- arr.push(['delete', fullPath])
305
- }
306
- }
307
- }
308
- return arr
309
- }
310
-
311
- const minimizeTuples = (inputTuples) => {
312
- const out = []
313
- for (let i = 0; i < inputTuples.length; i++) {
314
- const expanded = expandTuple(inputTuples[i])
315
- for (let k = 0; k < expanded.length; k++) {
316
- const tuple = expanded[k]
317
- // Filter out any explicit deletes targeting __order keys
318
- const isDelete = Array.isArray(tuple) && tuple[0] === 'delete'
319
- const isOrderKey =
320
- isDelete &&
321
- Array.isArray(tuple[1]) &&
322
- tuple[1][tuple[1].length - 1] === '__order'
323
- if (!isOrderKey) {
324
- out.push(tuple)
325
- }
326
- }
327
- }
328
- console.log(`Minimized tuples`, out)
329
- return out
330
- }
331
- console.log(`Processing tuples`, tuples)
332
- return minimizeTuples(tuples)
333
- } catch (err) {
334
- console.warn(
335
- '[CollabService] Minimal diff expansion failed – using original tuples',
336
- err
337
- )
338
- return tuples
339
- }
340
- })()
341
-
342
252
  // Include any additional changes passed via opts
343
253
  if (options.append && options.append.length) {
344
- processedTuples.push(...options.append)
254
+ tuples.push(...options.append)
345
255
  }
346
256
 
347
257
  // Apply changes to local state tree immediately.
348
258
  this._stateManager.applyChanges(tuples, { ...options })
349
259
 
350
- const state = this._stateManager?.root
351
- const el = state?.__element
352
-
353
- // Derive ordering info for parent objects affected by these tuples
354
- const orders = computeOrdersForTuples(state, processedTuples)
355
-
356
- const stringifiedGranularTuples = el?.call
357
- ? el.call(
358
- 'deepStringifyFunctions',
359
- processedTuples,
360
- Array.isArray(processedTuples) ? [] : {}
361
- )
362
- : deepStringifyFunctions(
363
- processedTuples,
364
- Array.isArray(processedTuples) ? [] : {}
365
- )
366
-
367
- const stringifiedTuples = el?.call
368
- ? el.call(
369
- 'deepStringifyFunctions',
370
- tuples,
371
- Array.isArray(tuples) ? [] : {}
372
- )
373
- : deepStringifyFunctions(
374
- tuples,
375
- Array.isArray(tuples) ? [] : {}
376
- )
260
+ tuples = deepStringify(tuples, [])
377
261
 
378
262
  // If not connected yet, queue the operations for later synchronisation.
379
263
  if (!this.isConnected()) {
380
264
  console.warn('[CollabService] Not connected, queuing real-time update')
381
- this._pendingOps.push({ changes: stringifiedTuples, granularChanges: stringifiedGranularTuples, orders, options })
265
+ this._pendingOps.push({ tuples, options })
382
266
  return
383
267
  }
384
268
 
385
269
  // When connected, send the operations to the backend.
386
270
  if (this.socket?.connected) {
387
- console.log('[CollabService] Sending operations to the backend', {
388
- changes: stringifiedTuples,
389
- granularChanges: stringifiedGranularTuples,
390
- orders,
391
- ts: Date.now()
392
- })
393
- this.socket.emit('ops', {
394
- changes: stringifiedTuples,
395
- granularChanges: stringifiedGranularTuples,
396
- orders,
397
- ts: Date.now()
398
- })
271
+ this.socket.emit('ops', { changes: tuples, ts: Date.now() })
399
272
  }
400
273
 
401
274
  return { success: true }
@@ -573,7 +446,7 @@ export class CollabService extends BaseService {
573
446
 
574
447
  return this.updateData(tuples, updatedOpts)
575
448
  } catch (error) {
576
- throw new Error(`Failed to add item: ${error.message}`, { cause: error })
449
+ throw new Error(`Failed to add item: ${error.message}`)
577
450
  }
578
451
  }
579
452
 
@@ -606,7 +479,7 @@ export class CollabService extends BaseService {
606
479
  title: 'Failed to add item',
607
480
  message: error.message
608
481
  })
609
- throw new Error(`Failed to add item: ${error.message}`, { cause: error })
482
+ throw new Error(`Failed to add item: ${error.message}`)
610
483
  }
611
484
  }
612
485
 
@@ -629,9 +502,7 @@ export class CollabService extends BaseService {
629
502
  title: 'Failed to update item',
630
503
  message: error.message
631
504
  })
632
- throw new Error(`Failed to update item: ${error.message}`, {
633
- cause: error
634
- })
505
+ throw new Error(`Failed to update item: ${error.message}`)
635
506
  }
636
507
  }
637
508
 
@@ -657,9 +528,7 @@ export class CollabService extends BaseService {
657
528
  title: 'Failed to delete item',
658
529
  message: error.message
659
530
  })
660
- throw new Error(`Failed to delete item: ${error.message}`, {
661
- cause: error
662
- })
531
+ throw new Error(`Failed to delete item: ${error.message}`)
663
532
  }
664
533
  }
665
534
 
@@ -186,12 +186,12 @@ export class CoreService extends BaseService {
186
186
  } catch {
187
187
  // Use default error message
188
188
  }
189
- throw new Error(error.message || error.error || 'Request failed', { cause: error })
189
+ throw new Error(error.message || error.error || 'Request failed')
190
190
  }
191
191
 
192
192
  return response.status === 204 ? null : response.json()
193
193
  } catch (error) {
194
- throw new Error(`Request failed: ${error.message}`, { cause: error })
194
+ throw new Error(`Request failed: ${error.message}`)
195
195
  }
196
196
  }
197
197
 
@@ -209,7 +209,7 @@ export class CoreService extends BaseService {
209
209
  }
210
210
  throw new Error(response.message)
211
211
  } catch (error) {
212
- throw new Error(`Registration failed: ${error.message}`, { cause: error })
212
+ throw new Error(`Registration failed: ${error.message}`)
213
213
  }
214
214
  }
215
215
 
@@ -245,7 +245,7 @@ export class CoreService extends BaseService {
245
245
  }
246
246
  throw new Error(response.message)
247
247
  } catch (error) {
248
- throw new Error(`Login failed: ${error.message}`, { cause: error })
248
+ throw new Error(`Login failed: ${error.message}`)
249
249
  }
250
250
  }
251
251
 
@@ -270,7 +270,7 @@ export class CoreService extends BaseService {
270
270
  }
271
271
  this.updateContext({ authToken: null })
272
272
 
273
- throw new Error(`Logout failed: ${error.message}`, { cause: error })
273
+ throw new Error(`Logout failed: ${error.message}`)
274
274
  }
275
275
  }
276
276
 
@@ -286,7 +286,7 @@ export class CoreService extends BaseService {
286
286
  }
287
287
  throw new Error(response.message)
288
288
  } catch (error) {
289
- throw new Error(`Token refresh failed: ${error.message}`, { cause: error })
289
+ throw new Error(`Token refresh failed: ${error.message}`)
290
290
  }
291
291
  }
292
292
 
@@ -325,7 +325,7 @@ export class CoreService extends BaseService {
325
325
  }
326
326
  throw new Error(response.message)
327
327
  } catch (error) {
328
- throw new Error(`Google auth failed: ${error.message}`, { cause: error })
328
+ throw new Error(`Google auth failed: ${error.message}`)
329
329
  }
330
330
  }
331
331
 
@@ -364,7 +364,7 @@ export class CoreService extends BaseService {
364
364
  }
365
365
  throw new Error(response.message)
366
366
  } catch (error) {
367
- throw new Error(`GitHub auth failed: ${error.message}`, { cause: error })
367
+ throw new Error(`GitHub auth failed: ${error.message}`)
368
368
  }
369
369
  }
370
370
 
@@ -405,7 +405,7 @@ export class CoreService extends BaseService {
405
405
  }
406
406
  throw new Error(response.message)
407
407
  } catch (error) {
408
- throw new Error(`Google auth callback failed: ${error.message}`, { cause: error })
408
+ throw new Error(`Google auth callback failed: ${error.message}`)
409
409
  }
410
410
  }
411
411
 
@@ -421,7 +421,7 @@ export class CoreService extends BaseService {
421
421
  }
422
422
  throw new Error(response.message)
423
423
  } catch (error) {
424
- throw new Error(`Password reset request failed: ${error.message}`, { cause: error })
424
+ throw new Error(`Password reset request failed: ${error.message}`)
425
425
  }
426
426
  }
427
427
 
@@ -437,7 +437,7 @@ export class CoreService extends BaseService {
437
437
  }
438
438
  throw new Error(response.message)
439
439
  } catch (error) {
440
- throw new Error(`Password reset confirmation failed: ${error.message}`, { cause: error })
440
+ throw new Error(`Password reset confirmation failed: ${error.message}`)
441
441
  }
442
442
  }
443
443
 
@@ -453,7 +453,7 @@ export class CoreService extends BaseService {
453
453
  }
454
454
  throw new Error(response.message)
455
455
  } catch (error) {
456
- throw new Error(`Registration confirmation failed: ${error.message}`, { cause: error })
456
+ throw new Error(`Registration confirmation failed: ${error.message}`)
457
457
  }
458
458
  }
459
459
 
@@ -469,7 +469,7 @@ export class CoreService extends BaseService {
469
469
  }
470
470
  throw new Error(response.message)
471
471
  } catch (error) {
472
- throw new Error(`Password change request failed: ${error.message}`, { cause: error })
472
+ throw new Error(`Password change request failed: ${error.message}`)
473
473
  }
474
474
  }
475
475
 
@@ -486,7 +486,7 @@ export class CoreService extends BaseService {
486
486
  }
487
487
  throw new Error(response.message)
488
488
  } catch (error) {
489
- throw new Error(`Password change confirmation failed: ${error.message}`, { cause: error })
489
+ throw new Error(`Password change confirmation failed: ${error.message}`)
490
490
  }
491
491
  }
492
492
 
@@ -502,7 +502,7 @@ export class CoreService extends BaseService {
502
502
  }
503
503
  throw new Error(response.message)
504
504
  } catch (error) {
505
- throw new Error(`Failed to get user profile: ${error.message}`, { cause: error })
505
+ throw new Error(`Failed to get user profile: ${error.message}`)
506
506
  }
507
507
  }
508
508
 
@@ -643,7 +643,7 @@ export class CoreService extends BaseService {
643
643
  }
644
644
  throw new Error(response.message)
645
645
  } catch (error) {
646
- throw new Error(`Failed to update user profile: ${error.message}`, { cause: error })
646
+ throw new Error(`Failed to update user profile: ${error.message}`)
647
647
  }
648
648
  }
649
649
 
@@ -667,7 +667,7 @@ export class CoreService extends BaseService {
667
667
  }
668
668
  throw new Error(response.message)
669
669
  } catch (error) {
670
- throw new Error(`Failed to get user projects: ${error.message}`, { cause: error })
670
+ throw new Error(`Failed to get user projects: ${error.message}`)
671
671
  }
672
672
  }
673
673
 
@@ -686,7 +686,7 @@ export class CoreService extends BaseService {
686
686
  }
687
687
  throw new Error(response.message)
688
688
  } catch (error) {
689
- throw new Error(`Failed to get user: ${error.message}`, { cause: error })
689
+ throw new Error(`Failed to get user: ${error.message}`)
690
690
  }
691
691
  }
692
692
 
@@ -705,7 +705,7 @@ export class CoreService extends BaseService {
705
705
  }
706
706
  throw new Error(response.message)
707
707
  } catch (error) {
708
- throw new Error(`Failed to get user by email: ${error.message}`, { cause: error })
708
+ throw new Error(`Failed to get user by email: ${error.message}`)
709
709
  }
710
710
  }
711
711
 
@@ -19,7 +19,7 @@ export class DnsService extends BaseService {
19
19
  }
20
20
  throw new Error(response.message)
21
21
  } catch (error) {
22
- throw new Error(`Failed to create DNS record: ${error.message}`, { cause: error })
22
+ throw new Error(`Failed to create DNS record: ${error.message}`)
23
23
  }
24
24
  }
25
25
 
@@ -38,7 +38,7 @@ export class DnsService extends BaseService {
38
38
  }
39
39
  throw new Error(response.message)
40
40
  } catch (error) {
41
- throw new Error(`Failed to get DNS record: ${error.message}`, { cause: error })
41
+ throw new Error(`Failed to get DNS record: ${error.message}`)
42
42
  }
43
43
  }
44
44
 
@@ -76,7 +76,7 @@ export class DnsService extends BaseService {
76
76
  }
77
77
  throw new Error(response.message)
78
78
  } catch (error) {
79
- throw new Error(`Failed to remove DNS record: ${error.message}`, { cause: error })
79
+ throw new Error(`Failed to remove DNS record: ${error.message}`)
80
80
  }
81
81
  }
82
82
 
@@ -105,7 +105,7 @@ export class DnsService extends BaseService {
105
105
  }
106
106
  throw new Error(response.message)
107
107
  } catch (error) {
108
- throw new Error(`Failed to set project domains: ${error.message}`, { cause: error })
108
+ throw new Error(`Failed to set project domains: ${error.message}`)
109
109
  }
110
110
  }
111
111
 
@@ -45,7 +45,7 @@ export class FileService extends BaseService {
45
45
  message: response.message
46
46
  }
47
47
  } catch (error) {
48
- throw new Error(`File upload failed: ${error.message}`, { cause: error })
48
+ throw new Error(`File upload failed: ${error.message}`)
49
49
  }
50
50
  }
51
51
 
@@ -71,7 +71,7 @@ export class FileService extends BaseService {
71
71
  }
72
72
  throw new Error(response.message)
73
73
  } catch (error) {
74
- throw new Error(`Failed to update project icon: ${error.message}`, { cause: error })
74
+ throw new Error(`Failed to update project icon: ${error.message}`)
75
75
  }
76
76
  }
77
77
 
@@ -34,7 +34,7 @@ export class PaymentService extends BaseService {
34
34
  }
35
35
  throw new Error(response.message)
36
36
  } catch (error) {
37
- throw new Error(`Failed to checkout: ${error.message}`, { cause: error })
37
+ throw new Error(`Failed to checkout: ${error.message}`)
38
38
  }
39
39
  }
40
40
 
@@ -56,7 +56,7 @@ export class PaymentService extends BaseService {
56
56
  }
57
57
  throw new Error(response.message)
58
58
  } catch (error) {
59
- throw new Error(`Failed to get subscription status: ${error.message}`, { cause: error })
59
+ throw new Error(`Failed to get subscription status: ${error.message}`)
60
60
  }
61
61
  }
62
62