@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
|
@@ -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 {
|
|
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('
|
|
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 '
|
|
95
|
+
case 'deepStringify': {
|
|
98
96
|
// Pass-through to the shared utility from `smbls`
|
|
99
|
-
return
|
|
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
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
140
|
+
try {
|
|
141
|
+
this._client = new CollabClient({
|
|
142
|
+
jwt,
|
|
143
|
+
projectId,
|
|
144
|
+
branch,
|
|
145
|
+
live: Boolean(pro)
|
|
146
|
+
})
|
|
148
147
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
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
|
-
|
|
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
|
-
|
|
167
|
-
|
|
168
|
-
|
|
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
|
-
|
|
172
|
-
|
|
173
|
-
|
|
168
|
+
this._client.socket?.on('commit', ({ version }) => {
|
|
169
|
+
if (version) {
|
|
170
|
+
this._stateManager.setVersion(version)
|
|
171
|
+
}
|
|
174
172
|
|
|
175
|
-
|
|
176
|
-
|
|
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
|
-
|
|
200
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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({
|
|
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
|
-
|
|
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}
|
|
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}
|
|
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'
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
59
|
+
throw new Error(`Failed to get subscription status: ${error.message}`)
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
|