@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
|
@@ -21,6 +21,9 @@ __export(ProjectService_exports, {
|
|
|
21
21
|
});
|
|
22
22
|
module.exports = __toCommonJS(ProjectService_exports);
|
|
23
23
|
var import_BaseService = require("./BaseService.js");
|
|
24
|
+
var import_ordering = require("../utils/ordering.js");
|
|
25
|
+
var import_changePreprocessor = require("../utils/changePreprocessor.js");
|
|
26
|
+
var import_utils = require("@domql/utils");
|
|
24
27
|
class ProjectService extends import_BaseService.BaseService {
|
|
25
28
|
// ==================== PROJECT METHODS ====================
|
|
26
29
|
async createProject(projectData) {
|
|
@@ -36,7 +39,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
36
39
|
}
|
|
37
40
|
throw new Error(response.message);
|
|
38
41
|
} catch (error) {
|
|
39
|
-
throw new Error(`Failed to create project: ${error.message}
|
|
42
|
+
throw new Error(`Failed to create project: ${error.message}`, { cause: error });
|
|
40
43
|
}
|
|
41
44
|
}
|
|
42
45
|
async getProjects(params = {}) {
|
|
@@ -59,7 +62,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
59
62
|
}
|
|
60
63
|
throw new Error(response.message);
|
|
61
64
|
} catch (error) {
|
|
62
|
-
throw new Error(`Failed to get projects: ${error.message}
|
|
65
|
+
throw new Error(`Failed to get projects: ${error.message}`, { cause: error });
|
|
63
66
|
}
|
|
64
67
|
}
|
|
65
68
|
/**
|
|
@@ -90,7 +93,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
90
93
|
}
|
|
91
94
|
throw new Error(response.message);
|
|
92
95
|
} catch (error) {
|
|
93
|
-
throw new Error(`Failed to list public projects: ${error.message}
|
|
96
|
+
throw new Error(`Failed to list public projects: ${error.message}`, { cause: error });
|
|
94
97
|
}
|
|
95
98
|
}
|
|
96
99
|
async getProject(projectId) {
|
|
@@ -112,7 +115,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
112
115
|
}
|
|
113
116
|
throw new Error(response.message);
|
|
114
117
|
} catch (error) {
|
|
115
|
-
throw new Error(`Failed to get project: ${error.message}
|
|
118
|
+
throw new Error(`Failed to get project: ${error.message}`, { cause: error });
|
|
116
119
|
}
|
|
117
120
|
}
|
|
118
121
|
/**
|
|
@@ -137,7 +140,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
137
140
|
}
|
|
138
141
|
throw new Error(response.message);
|
|
139
142
|
} catch (error) {
|
|
140
|
-
throw new Error(`Failed to get public project: ${error.message}
|
|
143
|
+
throw new Error(`Failed to get public project: ${error.message}`, { cause: error });
|
|
141
144
|
}
|
|
142
145
|
}
|
|
143
146
|
async getProjectByKey(key) {
|
|
@@ -159,7 +162,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
159
162
|
}
|
|
160
163
|
throw new Error(response.message);
|
|
161
164
|
} catch (error) {
|
|
162
|
-
throw new Error(`Failed to get project by key: ${error.message}
|
|
165
|
+
throw new Error(`Failed to get project by key: ${error.message}`, { cause: error });
|
|
163
166
|
}
|
|
164
167
|
}
|
|
165
168
|
/**
|
|
@@ -193,7 +196,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
193
196
|
}
|
|
194
197
|
throw new Error(response.message);
|
|
195
198
|
} catch (error) {
|
|
196
|
-
throw new Error(`Failed to get project data by key: ${error.message}
|
|
199
|
+
throw new Error(`Failed to get project data by key: ${error.message}`, { cause: error });
|
|
197
200
|
}
|
|
198
201
|
}
|
|
199
202
|
async updateProject(projectId, data) {
|
|
@@ -212,7 +215,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
212
215
|
}
|
|
213
216
|
throw new Error(response.message);
|
|
214
217
|
} catch (error) {
|
|
215
|
-
throw new Error(`Failed to update project: ${error.message}
|
|
218
|
+
throw new Error(`Failed to update project: ${error.message}`, { cause: error });
|
|
216
219
|
}
|
|
217
220
|
}
|
|
218
221
|
async updateProjectComponents(projectId, components) {
|
|
@@ -234,7 +237,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
234
237
|
}
|
|
235
238
|
throw new Error(response.message);
|
|
236
239
|
} catch (error) {
|
|
237
|
-
throw new Error(`Failed to update project components: ${error.message}
|
|
240
|
+
throw new Error(`Failed to update project components: ${error.message}`, { cause: error });
|
|
238
241
|
}
|
|
239
242
|
}
|
|
240
243
|
async updateProjectSettings(projectId, settings) {
|
|
@@ -253,7 +256,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
253
256
|
}
|
|
254
257
|
throw new Error(response.message);
|
|
255
258
|
} catch (error) {
|
|
256
|
-
throw new Error(`Failed to update project settings: ${error.message}
|
|
259
|
+
throw new Error(`Failed to update project settings: ${error.message}`, { cause: error });
|
|
257
260
|
}
|
|
258
261
|
}
|
|
259
262
|
async updateProjectName(projectId, name) {
|
|
@@ -272,7 +275,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
272
275
|
}
|
|
273
276
|
throw new Error(response.message);
|
|
274
277
|
} catch (error) {
|
|
275
|
-
throw new Error(`Failed to update project name: ${error.message}
|
|
278
|
+
throw new Error(`Failed to update project name: ${error.message}`, { cause: error });
|
|
276
279
|
}
|
|
277
280
|
}
|
|
278
281
|
async updateProjectPackage(projectId, pkg) {
|
|
@@ -291,7 +294,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
291
294
|
}
|
|
292
295
|
throw new Error(response.message);
|
|
293
296
|
} catch (error) {
|
|
294
|
-
throw new Error(`Failed to update project package: ${error.message}
|
|
297
|
+
throw new Error(`Failed to update project package: ${error.message}`, { cause: error });
|
|
295
298
|
}
|
|
296
299
|
}
|
|
297
300
|
async duplicateProject(projectId, newName, newKey, targetUserId) {
|
|
@@ -310,7 +313,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
310
313
|
}
|
|
311
314
|
throw new Error(response.message);
|
|
312
315
|
} catch (error) {
|
|
313
|
-
throw new Error(`Failed to duplicate project: ${error.message}
|
|
316
|
+
throw new Error(`Failed to duplicate project: ${error.message}`, { cause: error });
|
|
314
317
|
}
|
|
315
318
|
}
|
|
316
319
|
async removeProject(projectId) {
|
|
@@ -328,7 +331,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
328
331
|
}
|
|
329
332
|
throw new Error(response.message);
|
|
330
333
|
} catch (error) {
|
|
331
|
-
throw new Error(`Failed to remove project: ${error.message}
|
|
334
|
+
throw new Error(`Failed to remove project: ${error.message}`, { cause: error });
|
|
332
335
|
}
|
|
333
336
|
}
|
|
334
337
|
async checkProjectKeyAvailability(key) {
|
|
@@ -347,7 +350,8 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
347
350
|
throw new Error(response.message);
|
|
348
351
|
} catch (error) {
|
|
349
352
|
throw new Error(
|
|
350
|
-
`Failed to check project key availability: ${error.message}
|
|
353
|
+
`Failed to check project key availability: ${error.message}`,
|
|
354
|
+
{ cause: error }
|
|
351
355
|
);
|
|
352
356
|
}
|
|
353
357
|
}
|
|
@@ -367,7 +371,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
367
371
|
}
|
|
368
372
|
throw new Error(response.message);
|
|
369
373
|
} catch (error) {
|
|
370
|
-
throw new Error(`Failed to get project members: ${error.message}
|
|
374
|
+
throw new Error(`Failed to get project members: ${error.message}`, { cause: error });
|
|
371
375
|
}
|
|
372
376
|
}
|
|
373
377
|
async inviteMember(projectId, email, role = "guest", options = {}) {
|
|
@@ -396,7 +400,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
396
400
|
}
|
|
397
401
|
throw new Error(response.message);
|
|
398
402
|
} catch (error) {
|
|
399
|
-
throw new Error(`Failed to invite member: ${error.message}
|
|
403
|
+
throw new Error(`Failed to invite member: ${error.message}`, { cause: error });
|
|
400
404
|
}
|
|
401
405
|
}
|
|
402
406
|
async acceptInvite(token) {
|
|
@@ -415,7 +419,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
415
419
|
}
|
|
416
420
|
throw new Error(response.message);
|
|
417
421
|
} catch (error) {
|
|
418
|
-
throw new Error(`Failed to accept invite: ${error.message}
|
|
422
|
+
throw new Error(`Failed to accept invite: ${error.message}`, { cause: error });
|
|
419
423
|
}
|
|
420
424
|
}
|
|
421
425
|
async updateMemberRole(projectId, memberId, role) {
|
|
@@ -437,7 +441,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
437
441
|
}
|
|
438
442
|
throw new Error(response.message);
|
|
439
443
|
} catch (error) {
|
|
440
|
-
throw new Error(`Failed to update member role: ${error.message}
|
|
444
|
+
throw new Error(`Failed to update member role: ${error.message}`, { cause: error });
|
|
441
445
|
}
|
|
442
446
|
}
|
|
443
447
|
async removeMember(projectId, memberId) {
|
|
@@ -458,7 +462,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
458
462
|
}
|
|
459
463
|
throw new Error(response.message);
|
|
460
464
|
} catch (error) {
|
|
461
|
-
throw new Error(`Failed to remove member: ${error.message}
|
|
465
|
+
throw new Error(`Failed to remove member: ${error.message}`, { cause: error });
|
|
462
466
|
}
|
|
463
467
|
}
|
|
464
468
|
// ==================== PROJECT LIBRARY METHODS ====================
|
|
@@ -478,7 +482,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
478
482
|
}
|
|
479
483
|
throw new Error(response.message);
|
|
480
484
|
} catch (error) {
|
|
481
|
-
throw new Error(`Failed to get available libraries: ${error.message}
|
|
485
|
+
throw new Error(`Failed to get available libraries: ${error.message}`, { cause: error });
|
|
482
486
|
}
|
|
483
487
|
}
|
|
484
488
|
async getProjectLibraries(projectId) {
|
|
@@ -496,7 +500,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
496
500
|
}
|
|
497
501
|
throw new Error(response.message);
|
|
498
502
|
} catch (error) {
|
|
499
|
-
throw new Error(`Failed to get project libraries: ${error.message}
|
|
503
|
+
throw new Error(`Failed to get project libraries: ${error.message}`, { cause: error });
|
|
500
504
|
}
|
|
501
505
|
}
|
|
502
506
|
async addProjectLibraries(projectId, libraryIds) {
|
|
@@ -511,11 +515,11 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
511
515
|
methodName: "addProjectLibraries"
|
|
512
516
|
});
|
|
513
517
|
if (response.success) {
|
|
514
|
-
return response
|
|
518
|
+
return response;
|
|
515
519
|
}
|
|
516
520
|
throw new Error(response.message);
|
|
517
521
|
} catch (error) {
|
|
518
|
-
throw new Error(`Failed to add project libraries: ${error.message}
|
|
522
|
+
throw new Error(`Failed to add project libraries: ${error.message}`, { cause: error });
|
|
519
523
|
}
|
|
520
524
|
}
|
|
521
525
|
async removeProjectLibraries(projectId, libraryIds) {
|
|
@@ -534,7 +538,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
534
538
|
}
|
|
535
539
|
throw new Error(response.message);
|
|
536
540
|
} catch (error) {
|
|
537
|
-
throw new Error(`Failed to remove project libraries: ${error.message}
|
|
541
|
+
throw new Error(`Failed to remove project libraries: ${error.message}`, { cause: error });
|
|
538
542
|
}
|
|
539
543
|
}
|
|
540
544
|
// ==================== PROJECT DATA METHODS (SYMSTORY REPLACEMENT) ====================
|
|
@@ -551,14 +555,20 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
551
555
|
throw new Error("Changes must be an array");
|
|
552
556
|
}
|
|
553
557
|
const { message, branch = "main", type = "patch" } = options;
|
|
558
|
+
const state = this._context && this._context.state;
|
|
559
|
+
const { granularChanges, orders: preprocessorOrders } = (0, import_changePreprocessor.preprocessChanges)(state, changes, options);
|
|
560
|
+
const derivedOrders = options.orders || (preprocessorOrders && preprocessorOrders.length ? preprocessorOrders : state ? (0, import_ordering.computeOrdersForTuples)(state, granularChanges) : []);
|
|
561
|
+
const stringify = (val) => (0, import_utils.deepStringifyFunctions)(val, Array.isArray(val) ? [] : {});
|
|
554
562
|
try {
|
|
555
563
|
const response = await this._request(`/projects/${projectId}/changes`, {
|
|
556
564
|
method: "POST",
|
|
557
565
|
body: JSON.stringify({
|
|
558
|
-
changes,
|
|
566
|
+
changes: stringify(changes),
|
|
567
|
+
granularChanges: stringify(granularChanges),
|
|
559
568
|
message,
|
|
560
569
|
branch,
|
|
561
|
-
type
|
|
570
|
+
type,
|
|
571
|
+
...derivedOrders && derivedOrders.length ? { orders: derivedOrders } : {}
|
|
562
572
|
}),
|
|
563
573
|
methodName: "applyProjectChanges"
|
|
564
574
|
});
|
|
@@ -567,7 +577,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
567
577
|
}
|
|
568
578
|
throw new Error(response.message);
|
|
569
579
|
} catch (error) {
|
|
570
|
-
throw new Error(`Failed to apply project changes: ${error.message}
|
|
580
|
+
throw new Error(`Failed to apply project changes: ${error.message}`, { cause: error });
|
|
571
581
|
}
|
|
572
582
|
}
|
|
573
583
|
/**
|
|
@@ -602,7 +612,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
602
612
|
}
|
|
603
613
|
throw new Error(response.message);
|
|
604
614
|
} catch (error) {
|
|
605
|
-
throw new Error(`Failed to get project data: ${error.message}
|
|
615
|
+
throw new Error(`Failed to get project data: ${error.message}`, { cause: error });
|
|
606
616
|
}
|
|
607
617
|
}
|
|
608
618
|
/**
|
|
@@ -632,7 +642,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
632
642
|
}
|
|
633
643
|
throw new Error(response.message);
|
|
634
644
|
} catch (error) {
|
|
635
|
-
throw new Error(`Failed to get project versions: ${error.message}
|
|
645
|
+
throw new Error(`Failed to get project versions: ${error.message}`, { cause: error });
|
|
636
646
|
}
|
|
637
647
|
}
|
|
638
648
|
/**
|
|
@@ -664,7 +674,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
664
674
|
}
|
|
665
675
|
throw new Error(response.message);
|
|
666
676
|
} catch (error) {
|
|
667
|
-
throw new Error(`Failed to restore project version: ${error.message}
|
|
677
|
+
throw new Error(`Failed to restore project version: ${error.message}`, { cause: error });
|
|
668
678
|
}
|
|
669
679
|
}
|
|
670
680
|
/**
|
|
@@ -764,7 +774,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
764
774
|
}
|
|
765
775
|
throw new Error(response.message);
|
|
766
776
|
} catch (error) {
|
|
767
|
-
throw new Error(`Failed to get favorite projects: ${error.message}
|
|
777
|
+
throw new Error(`Failed to get favorite projects: ${error.message}`, { cause: error });
|
|
768
778
|
}
|
|
769
779
|
}
|
|
770
780
|
async addFavoriteProject(projectId) {
|
|
@@ -782,7 +792,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
782
792
|
}
|
|
783
793
|
throw new Error(response.message);
|
|
784
794
|
} catch (error) {
|
|
785
|
-
throw new Error(`Failed to add favorite project: ${error.message}
|
|
795
|
+
throw new Error(`Failed to add favorite project: ${error.message}`, { cause: error });
|
|
786
796
|
}
|
|
787
797
|
}
|
|
788
798
|
async removeFavoriteProject(projectId) {
|
|
@@ -800,7 +810,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
800
810
|
}
|
|
801
811
|
throw new Error(response.message);
|
|
802
812
|
} catch (error) {
|
|
803
|
-
throw new Error(`Failed to remove favorite project: ${error.message}
|
|
813
|
+
throw new Error(`Failed to remove favorite project: ${error.message}`, { cause: error });
|
|
804
814
|
}
|
|
805
815
|
}
|
|
806
816
|
// ==================== RECENT PROJECT METHODS ====================
|
|
@@ -829,7 +839,7 @@ class ProjectService extends import_BaseService.BaseService {
|
|
|
829
839
|
}
|
|
830
840
|
throw new Error(response.message);
|
|
831
841
|
} catch (error) {
|
|
832
|
-
throw new Error(`Failed to get recent projects: ${error.message}
|
|
842
|
+
throw new Error(`Failed to get recent projects: ${error.message}`, { cause: error });
|
|
833
843
|
}
|
|
834
844
|
}
|
|
835
845
|
}
|
|
@@ -48,7 +48,7 @@ class PullRequestService extends import_BaseService.BaseService {
|
|
|
48
48
|
}
|
|
49
49
|
throw new Error(response.message);
|
|
50
50
|
} catch (error) {
|
|
51
|
-
throw new Error(`Failed to create pull request: ${error.message}
|
|
51
|
+
throw new Error(`Failed to create pull request: ${error.message}`, { cause: error });
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
@@ -84,7 +84,7 @@ class PullRequestService extends import_BaseService.BaseService {
|
|
|
84
84
|
}
|
|
85
85
|
throw new Error(response.message);
|
|
86
86
|
} catch (error) {
|
|
87
|
-
throw new Error(`Failed to list pull requests: ${error.message}
|
|
87
|
+
throw new Error(`Failed to list pull requests: ${error.message}`, { cause: error });
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
/**
|
|
@@ -111,7 +111,7 @@ class PullRequestService extends import_BaseService.BaseService {
|
|
|
111
111
|
}
|
|
112
112
|
throw new Error(response.message);
|
|
113
113
|
} catch (error) {
|
|
114
|
-
throw new Error(`Failed to get pull request: ${error.message}
|
|
114
|
+
throw new Error(`Failed to get pull request: ${error.message}`, { cause: error });
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
/**
|
|
@@ -145,7 +145,7 @@ class PullRequestService extends import_BaseService.BaseService {
|
|
|
145
145
|
}
|
|
146
146
|
throw new Error(response.message);
|
|
147
147
|
} catch (error) {
|
|
148
|
-
throw new Error(`Failed to review pull request: ${error.message}
|
|
148
|
+
throw new Error(`Failed to review pull request: ${error.message}`, { cause: error });
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
/**
|
|
@@ -176,7 +176,7 @@ class PullRequestService extends import_BaseService.BaseService {
|
|
|
176
176
|
}
|
|
177
177
|
throw new Error(response.message);
|
|
178
178
|
} catch (error) {
|
|
179
|
-
throw new Error(`Failed to add pull request comment: ${error.message}
|
|
179
|
+
throw new Error(`Failed to add pull request comment: ${error.message}`, { cause: error });
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
182
|
/**
|
|
@@ -206,7 +206,7 @@ class PullRequestService extends import_BaseService.BaseService {
|
|
|
206
206
|
if (error.message.includes("conflicts") || error.message.includes("409")) {
|
|
207
207
|
throw new Error(`Pull request has merge conflicts: ${error.message}`);
|
|
208
208
|
}
|
|
209
|
-
throw new Error(`Failed to merge pull request: ${error.message}
|
|
209
|
+
throw new Error(`Failed to merge pull request: ${error.message}`, { cause: error });
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
212
|
/**
|
|
@@ -233,7 +233,7 @@ class PullRequestService extends import_BaseService.BaseService {
|
|
|
233
233
|
}
|
|
234
234
|
throw new Error(response.message);
|
|
235
235
|
} catch (error) {
|
|
236
|
-
throw new Error(`Failed to get pull request diff: ${error.message}
|
|
236
|
+
throw new Error(`Failed to get pull request diff: ${error.message}`, { cause: error });
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
239
|
// ==================== PULL REQUEST HELPER METHODS ====================
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var ScreenshotService_exports = {};
|
|
19
|
+
__export(ScreenshotService_exports, {
|
|
20
|
+
ScreenshotService: () => ScreenshotService,
|
|
21
|
+
default: () => ScreenshotService_default
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(ScreenshotService_exports);
|
|
24
|
+
var import_BaseService = require("./BaseService.js");
|
|
25
|
+
class ScreenshotService extends import_BaseService.BaseService {
|
|
26
|
+
constructor(config) {
|
|
27
|
+
super(config);
|
|
28
|
+
this._debounceTimers = /* @__PURE__ */ new Map();
|
|
29
|
+
this._inflightRefreshes = /* @__PURE__ */ new Map();
|
|
30
|
+
}
|
|
31
|
+
// ==================== PROJECT-LEVEL OPERATIONS ====================
|
|
32
|
+
async createScreenshotProject(payload) {
|
|
33
|
+
this._requireReady("createScreenshotProject");
|
|
34
|
+
try {
|
|
35
|
+
const response = await this._request("/screenshots/projects", {
|
|
36
|
+
method: "POST",
|
|
37
|
+
body: JSON.stringify(payload),
|
|
38
|
+
methodName: "createScreenshotProject"
|
|
39
|
+
});
|
|
40
|
+
if (response.success) {
|
|
41
|
+
return response;
|
|
42
|
+
}
|
|
43
|
+
throw new Error(response.message);
|
|
44
|
+
} catch (error) {
|
|
45
|
+
throw new Error(`Failed to create screenshot project: ${error.message}`, { cause: error });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async getProjectScreenshots(projectKey, params = {}) {
|
|
49
|
+
this._requireReady("getProjectScreenshots");
|
|
50
|
+
if (!projectKey) {
|
|
51
|
+
throw new Error("projectKey is required");
|
|
52
|
+
}
|
|
53
|
+
const { type = "all", status, limit = 50, offset = 0 } = params;
|
|
54
|
+
const qs = new URLSearchParams();
|
|
55
|
+
if (type) {
|
|
56
|
+
qs.set("type", type);
|
|
57
|
+
}
|
|
58
|
+
if (status) {
|
|
59
|
+
qs.set("status", status);
|
|
60
|
+
}
|
|
61
|
+
if (limit != null) {
|
|
62
|
+
qs.set("limit", String(limit));
|
|
63
|
+
}
|
|
64
|
+
if (offset != null) {
|
|
65
|
+
qs.set("offset", String(offset));
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
const response = await this._request(
|
|
69
|
+
`/screenshots/projects/${encodeURIComponent(projectKey)}${qs.toString() ? `?${qs.toString()}` : ""}`,
|
|
70
|
+
{ method: "GET", methodName: "getProjectScreenshots" }
|
|
71
|
+
);
|
|
72
|
+
if (response.success) {
|
|
73
|
+
return response;
|
|
74
|
+
}
|
|
75
|
+
throw new Error(response.message);
|
|
76
|
+
} catch (error) {
|
|
77
|
+
throw new Error(`Failed to get project screenshots: ${error.message}`, { cause: error });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async reprocessProjectScreenshots(projectKey, body = {}) {
|
|
81
|
+
this._requireReady("reprocessProjectScreenshots");
|
|
82
|
+
if (!projectKey) {
|
|
83
|
+
throw new Error("projectKey is required");
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
const response = await this._request(
|
|
87
|
+
`/screenshots/projects/${encodeURIComponent(projectKey)}/reprocess`,
|
|
88
|
+
{ method: "POST", body: JSON.stringify(body), methodName: "reprocessProjectScreenshots" }
|
|
89
|
+
);
|
|
90
|
+
if (response.success) {
|
|
91
|
+
return response;
|
|
92
|
+
}
|
|
93
|
+
throw new Error(response.message);
|
|
94
|
+
} catch (error) {
|
|
95
|
+
throw new Error(`Failed to reprocess screenshots: ${error.message}`, { cause: error });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async recreateProjectScreenshots(projectKey, body = {}) {
|
|
99
|
+
this._requireReady("recreateProjectScreenshots");
|
|
100
|
+
if (!projectKey) {
|
|
101
|
+
throw new Error("projectKey is required");
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
const response = await this._request(
|
|
105
|
+
`/screenshots/projects/${encodeURIComponent(projectKey)}/recreate`,
|
|
106
|
+
{ method: "POST", body: JSON.stringify(body), methodName: "recreateProjectScreenshots" }
|
|
107
|
+
);
|
|
108
|
+
if (response.success) {
|
|
109
|
+
return response;
|
|
110
|
+
}
|
|
111
|
+
throw new Error(response.message);
|
|
112
|
+
} catch (error) {
|
|
113
|
+
throw new Error(`Failed to recreate screenshots: ${error.message}`, { cause: error });
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async deleteProjectScreenshots(projectKey) {
|
|
117
|
+
this._requireReady("deleteProjectScreenshots");
|
|
118
|
+
if (!projectKey) {
|
|
119
|
+
throw new Error("projectKey is required");
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
const response = await this._request(
|
|
123
|
+
`/screenshots/projects/${encodeURIComponent(projectKey)}`,
|
|
124
|
+
{ method: "DELETE", methodName: "deleteProjectScreenshots" }
|
|
125
|
+
);
|
|
126
|
+
if (response.success) {
|
|
127
|
+
return response;
|
|
128
|
+
}
|
|
129
|
+
throw new Error(response.message);
|
|
130
|
+
} catch (error) {
|
|
131
|
+
throw new Error(`Failed to delete project screenshots: ${error.message}`, { cause: error });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// ==================== THUMBNAIL ====================
|
|
135
|
+
async getThumbnailCandidate(projectKey, options = {}) {
|
|
136
|
+
this._requireReady("getThumbnailCandidate");
|
|
137
|
+
if (!projectKey) {
|
|
138
|
+
throw new Error("projectKey is required");
|
|
139
|
+
}
|
|
140
|
+
const { includeData = false } = options;
|
|
141
|
+
const qs = new URLSearchParams();
|
|
142
|
+
if (includeData) {
|
|
143
|
+
qs.set("include_data", "true");
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
const response = await this._request(
|
|
147
|
+
`/screenshots/projects/${encodeURIComponent(projectKey)}/thumbnail/candidate${qs.toString() ? `?${qs.toString()}` : ""}`,
|
|
148
|
+
{ method: "GET", methodName: "getThumbnailCandidate" }
|
|
149
|
+
);
|
|
150
|
+
if (response.success) {
|
|
151
|
+
return response;
|
|
152
|
+
}
|
|
153
|
+
throw new Error(response.message);
|
|
154
|
+
} catch (error) {
|
|
155
|
+
throw new Error(`Failed to get thumbnail candidate: ${error.message}`, { cause: error });
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
async updateProjectThumbnail(projectKey, body = {}) {
|
|
159
|
+
this._requireReady("updateProjectThumbnail");
|
|
160
|
+
if (!projectKey) {
|
|
161
|
+
throw new Error("projectKey is required");
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const response = await this._request(
|
|
165
|
+
`/screenshots/projects/${encodeURIComponent(projectKey)}/thumbnail`,
|
|
166
|
+
{ method: "POST", body: JSON.stringify(body), methodName: "updateProjectThumbnail" }
|
|
167
|
+
);
|
|
168
|
+
if (response.success) {
|
|
169
|
+
return response;
|
|
170
|
+
}
|
|
171
|
+
throw new Error(response.message);
|
|
172
|
+
} catch (error) {
|
|
173
|
+
throw new Error(`Failed to update project thumbnail: ${error.message}`, { cause: error });
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// ==================== INDIVIDUAL SHOTS ====================
|
|
177
|
+
async getPageScreenshot(screenshotId, format = "json") {
|
|
178
|
+
this._requireReady("getPageScreenshot");
|
|
179
|
+
if (!screenshotId) {
|
|
180
|
+
throw new Error("screenshotId is required");
|
|
181
|
+
}
|
|
182
|
+
const qs = new URLSearchParams();
|
|
183
|
+
if (format) {
|
|
184
|
+
qs.set("format", format);
|
|
185
|
+
}
|
|
186
|
+
try {
|
|
187
|
+
return await this._request(
|
|
188
|
+
`/screenshots/pages/${encodeURIComponent(screenshotId)}${qs.toString() ? `?${qs.toString()}` : ""}`,
|
|
189
|
+
{ method: "GET", methodName: "getPageScreenshot" }
|
|
190
|
+
);
|
|
191
|
+
} catch (error) {
|
|
192
|
+
throw new Error(`Failed to get page screenshot: ${error.message}`, { cause: error });
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
async getComponentScreenshot(screenshotId, format = "json") {
|
|
196
|
+
this._requireReady("getComponentScreenshot");
|
|
197
|
+
if (!screenshotId) {
|
|
198
|
+
throw new Error("screenshotId is required");
|
|
199
|
+
}
|
|
200
|
+
const qs = new URLSearchParams();
|
|
201
|
+
if (format) {
|
|
202
|
+
qs.set("format", format);
|
|
203
|
+
}
|
|
204
|
+
try {
|
|
205
|
+
return await this._request(
|
|
206
|
+
`/screenshots/components/${encodeURIComponent(screenshotId)}${qs.toString() ? `?${qs.toString()}` : ""}`,
|
|
207
|
+
{ method: "GET", methodName: "getComponentScreenshot" }
|
|
208
|
+
);
|
|
209
|
+
} catch (error) {
|
|
210
|
+
throw new Error(`Failed to get component screenshot: ${error.message}`, { cause: error });
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
async getScreenshotByKey(projectKey, type, key, format = "json") {
|
|
214
|
+
this._requireReady("getScreenshotByKey");
|
|
215
|
+
if (!projectKey) {
|
|
216
|
+
throw new Error("projectKey is required");
|
|
217
|
+
}
|
|
218
|
+
if (!type || !["component", "page"].includes(String(type))) {
|
|
219
|
+
throw new Error("type must be 'component' or 'page'");
|
|
220
|
+
}
|
|
221
|
+
if (!key) {
|
|
222
|
+
throw new Error("key is required");
|
|
223
|
+
}
|
|
224
|
+
const qs = new URLSearchParams();
|
|
225
|
+
if (format) {
|
|
226
|
+
qs.set("format", format);
|
|
227
|
+
}
|
|
228
|
+
const sub = type === "component" ? "components" : "pages";
|
|
229
|
+
try {
|
|
230
|
+
return await this._request(
|
|
231
|
+
`/screenshots/projects/${encodeURIComponent(projectKey)}/${sub}/${encodeURIComponent(key)}${qs.toString() ? `?${qs.toString()}` : ""}`,
|
|
232
|
+
{ method: "GET", methodName: "getScreenshotByKey" }
|
|
233
|
+
);
|
|
234
|
+
} catch (error) {
|
|
235
|
+
throw new Error(`Failed to get screenshot by key: ${error.message}`, { cause: error });
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
async getQueueStatistics() {
|
|
239
|
+
this._requireReady("getQueueStatistics");
|
|
240
|
+
try {
|
|
241
|
+
const response = await this._request("/screenshots/queue/stats", {
|
|
242
|
+
method: "GET",
|
|
243
|
+
methodName: "getQueueStatistics"
|
|
244
|
+
});
|
|
245
|
+
if (response.success) {
|
|
246
|
+
return response;
|
|
247
|
+
}
|
|
248
|
+
throw new Error(response.message);
|
|
249
|
+
} catch (error) {
|
|
250
|
+
throw new Error(`Failed to get queue statistics: ${error.message}`, { cause: error });
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// ==================== COMBINATION/DEBOUNCED ====================
|
|
254
|
+
/**
|
|
255
|
+
* Debounced thumbnail refresh that recreates screenshots and then updates thumbnail.
|
|
256
|
+
* Subsequent calls within debounce window reset the timer.
|
|
257
|
+
*/
|
|
258
|
+
async refreshThumbnail(projectKey, options = {}) {
|
|
259
|
+
this._requireReady("refreshThumbnail");
|
|
260
|
+
if (!projectKey) {
|
|
261
|
+
throw new Error("projectKey is required");
|
|
262
|
+
}
|
|
263
|
+
const {
|
|
264
|
+
debounceMs = 15e3,
|
|
265
|
+
waitAfterRecreateMs = 2e4,
|
|
266
|
+
recreate = {
|
|
267
|
+
process_pages: true,
|
|
268
|
+
process_components: false,
|
|
269
|
+
process_descriptions: false,
|
|
270
|
+
force: false,
|
|
271
|
+
priority: 5
|
|
272
|
+
},
|
|
273
|
+
thumbnail = {
|
|
274
|
+
strategy: "auto",
|
|
275
|
+
force: true
|
|
276
|
+
}
|
|
277
|
+
} = options;
|
|
278
|
+
const existingTimer = this._debounceTimers.get(projectKey);
|
|
279
|
+
if (existingTimer) {
|
|
280
|
+
clearTimeout(existingTimer);
|
|
281
|
+
}
|
|
282
|
+
const executionPromise = await new Promise((resolve) => {
|
|
283
|
+
const timer = setTimeout(async () => {
|
|
284
|
+
try {
|
|
285
|
+
await this.recreateProjectScreenshots(projectKey, recreate);
|
|
286
|
+
await new Promise((resolveDelay) => {
|
|
287
|
+
setTimeout(resolveDelay, waitAfterRecreateMs);
|
|
288
|
+
});
|
|
289
|
+
const result = await this.updateProjectThumbnail(projectKey, thumbnail);
|
|
290
|
+
resolve(result);
|
|
291
|
+
} catch (e) {
|
|
292
|
+
resolve({ success: false, error: (e == null ? void 0 : e.message) || String(e) });
|
|
293
|
+
} finally {
|
|
294
|
+
this._debounceTimers.delete(projectKey);
|
|
295
|
+
this._inflightRefreshes.delete(projectKey);
|
|
296
|
+
}
|
|
297
|
+
}, debounceMs);
|
|
298
|
+
this._debounceTimers.set(projectKey, timer);
|
|
299
|
+
});
|
|
300
|
+
this._inflightRefreshes.set(projectKey, executionPromise);
|
|
301
|
+
return executionPromise;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
var ScreenshotService_default = ScreenshotService;
|