@symbo.ls/sdk 3.2.3 → 3.2.7

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 (183) hide show
  1. package/README.md +141 -0
  2. package/dist/cjs/config/environment.js +94 -10
  3. package/dist/cjs/index.js +152 -12
  4. package/dist/cjs/services/AdminService.js +351 -0
  5. package/dist/cjs/services/AuthService.js +738 -305
  6. package/dist/cjs/services/BaseService.js +158 -6
  7. package/dist/cjs/services/BranchService.js +484 -0
  8. package/dist/cjs/services/CollabService.js +439 -116
  9. package/dist/cjs/services/DnsService.js +340 -0
  10. package/dist/cjs/services/FeatureFlagService.js +175 -0
  11. package/dist/cjs/services/FileService.js +201 -0
  12. package/dist/cjs/services/IntegrationService.js +538 -0
  13. package/dist/cjs/services/MetricsService.js +62 -0
  14. package/dist/cjs/services/PaymentService.js +271 -0
  15. package/dist/cjs/services/PlanService.js +426 -0
  16. package/dist/cjs/services/ProjectService.js +1207 -0
  17. package/dist/cjs/services/PullRequestService.js +503 -0
  18. package/dist/cjs/services/ScreenshotService.js +304 -0
  19. package/dist/cjs/services/SubscriptionService.js +396 -0
  20. package/dist/cjs/services/TrackingService.js +661 -0
  21. package/dist/cjs/services/WaitlistService.js +148 -0
  22. package/dist/cjs/services/index.js +60 -4
  23. package/dist/cjs/state/RootStateManager.js +2 -23
  24. package/dist/cjs/state/rootEventBus.js +9 -0
  25. package/dist/cjs/utils/CollabClient.js +78 -12
  26. package/dist/cjs/utils/TokenManager.js +16 -3
  27. package/dist/cjs/utils/changePreprocessor.js +199 -0
  28. package/dist/cjs/utils/jsonDiff.js +46 -4
  29. package/dist/cjs/utils/ordering.js +309 -0
  30. package/dist/cjs/utils/services.js +285 -128
  31. package/dist/cjs/utils/validation.js +0 -3
  32. package/dist/esm/config/environment.js +94 -10
  33. package/dist/esm/index.js +47862 -18248
  34. package/dist/esm/services/AdminService.js +1132 -0
  35. package/dist/esm/services/AuthService.js +1493 -386
  36. package/dist/esm/services/BaseService.js +757 -6
  37. package/dist/esm/services/BranchService.js +1265 -0
  38. package/dist/esm/services/CollabService.js +24956 -16089
  39. package/dist/esm/services/DnsService.js +1121 -0
  40. package/dist/esm/services/FeatureFlagService.js +956 -0
  41. package/dist/esm/services/FileService.js +982 -0
  42. package/dist/esm/services/IntegrationService.js +1319 -0
  43. package/dist/esm/services/MetricsService.js +843 -0
  44. package/dist/esm/services/PaymentService.js +1052 -0
  45. package/dist/esm/services/PlanService.js +1207 -0
  46. package/dist/esm/services/ProjectService.js +2526 -0
  47. package/dist/esm/services/PullRequestService.js +1284 -0
  48. package/dist/esm/services/ScreenshotService.js +1085 -0
  49. package/dist/esm/services/SubscriptionService.js +1177 -0
  50. package/dist/esm/services/TrackingService.js +18454 -0
  51. package/dist/esm/services/WaitlistService.js +929 -0
  52. package/dist/esm/services/index.js +47373 -18027
  53. package/dist/esm/state/RootStateManager.js +11 -23
  54. package/dist/esm/state/rootEventBus.js +9 -0
  55. package/dist/esm/utils/CollabClient.js +17526 -16120
  56. package/dist/esm/utils/TokenManager.js +16 -3
  57. package/dist/esm/utils/changePreprocessor.js +542 -0
  58. package/dist/esm/utils/jsonDiff.js +958 -43
  59. package/dist/esm/utils/ordering.js +291 -0
  60. package/dist/esm/utils/services.js +285 -128
  61. package/dist/esm/utils/validation.js +116 -50
  62. package/dist/node/config/environment.js +94 -10
  63. package/dist/node/index.js +183 -16
  64. package/dist/node/services/AdminService.js +332 -0
  65. package/dist/node/services/AuthService.js +742 -310
  66. package/dist/node/services/BaseService.js +148 -6
  67. package/dist/node/services/BranchService.js +465 -0
  68. package/dist/node/services/CollabService.js +439 -116
  69. package/dist/node/services/DnsService.js +321 -0
  70. package/dist/node/services/FeatureFlagService.js +156 -0
  71. package/dist/node/services/FileService.js +182 -0
  72. package/dist/node/services/IntegrationService.js +519 -0
  73. package/dist/node/services/MetricsService.js +43 -0
  74. package/dist/node/services/PaymentService.js +252 -0
  75. package/dist/node/services/PlanService.js +407 -0
  76. package/dist/node/services/ProjectService.js +1188 -0
  77. package/dist/node/services/PullRequestService.js +484 -0
  78. package/dist/node/services/ScreenshotService.js +285 -0
  79. package/dist/node/services/SubscriptionService.js +377 -0
  80. package/dist/node/services/TrackingService.js +632 -0
  81. package/dist/node/services/WaitlistService.js +129 -0
  82. package/dist/node/services/index.js +60 -4
  83. package/dist/node/state/RootStateManager.js +2 -23
  84. package/dist/node/state/rootEventBus.js +9 -0
  85. package/dist/node/utils/CollabClient.js +77 -11
  86. package/dist/node/utils/TokenManager.js +16 -3
  87. package/dist/node/utils/changePreprocessor.js +180 -0
  88. package/dist/node/utils/jsonDiff.js +46 -4
  89. package/dist/node/utils/ordering.js +290 -0
  90. package/dist/node/utils/services.js +285 -128
  91. package/dist/node/utils/validation.js +0 -3
  92. package/package.json +30 -18
  93. package/src/config/environment.js +95 -10
  94. package/src/index.js +190 -23
  95. package/src/services/AdminService.js +374 -0
  96. package/src/services/AuthService.js +874 -328
  97. package/src/services/BaseService.js +166 -6
  98. package/src/services/BranchService.js +536 -0
  99. package/src/services/CollabService.js +557 -148
  100. package/src/services/DnsService.js +366 -0
  101. package/src/services/FeatureFlagService.js +174 -0
  102. package/src/services/FileService.js +213 -0
  103. package/src/services/IntegrationService.js +548 -0
  104. package/src/services/MetricsService.js +40 -0
  105. package/src/services/PaymentService.js +287 -0
  106. package/src/services/PlanService.js +468 -0
  107. package/src/services/ProjectService.js +1366 -0
  108. package/src/services/PullRequestService.js +537 -0
  109. package/src/services/ScreenshotService.js +258 -0
  110. package/src/services/SubscriptionService.js +425 -0
  111. package/src/services/TrackingService.js +853 -0
  112. package/src/services/WaitlistService.js +130 -0
  113. package/src/services/index.js +79 -5
  114. package/src/services/tests/BranchService/createBranch.test.js +153 -0
  115. package/src/services/tests/BranchService/deleteBranch.test.js +173 -0
  116. package/src/services/tests/BranchService/getBranchChanges.test.js +146 -0
  117. package/src/services/tests/BranchService/listBranches.test.js +87 -0
  118. package/src/services/tests/BranchService/mergeBranch.test.js +210 -0
  119. package/src/services/tests/BranchService/publishVersion.test.js +183 -0
  120. package/src/services/tests/BranchService/renameBranch.test.js +240 -0
  121. package/src/services/tests/BranchService/resetBranch.test.js +152 -0
  122. package/src/services/tests/FeatureFlagService/adminFeatureFlags.test.js +67 -0
  123. package/src/services/tests/FeatureFlagService/getFeatureFlags.test.js +75 -0
  124. package/src/services/tests/FileService/createFileFormData.test.js +74 -0
  125. package/src/services/tests/FileService/getFileUrl.test.js +69 -0
  126. package/src/services/tests/FileService/updateProjectIcon.test.js +109 -0
  127. package/src/services/tests/FileService/uploadDocument.test.js +36 -0
  128. package/src/services/tests/FileService/uploadFile.test.js +78 -0
  129. package/src/services/tests/FileService/uploadFileWithValidation.test.js +114 -0
  130. package/src/services/tests/FileService/uploadImage.test.js +36 -0
  131. package/src/services/tests/FileService/uploadMultipleFiles.test.js +111 -0
  132. package/src/services/tests/FileService/validateFile.test.js +63 -0
  133. package/src/services/tests/PlanService/createPlan.test.js +104 -0
  134. package/src/services/tests/PlanService/createPlanWithValidation.test.js +523 -0
  135. package/src/services/tests/PlanService/deletePlan.test.js +92 -0
  136. package/src/services/tests/PlanService/getActivePlans.test.js +123 -0
  137. package/src/services/tests/PlanService/getAdminPlans.test.js +84 -0
  138. package/src/services/tests/PlanService/getPlan.test.js +50 -0
  139. package/src/services/tests/PlanService/getPlanByKey.test.js +109 -0
  140. package/src/services/tests/PlanService/getPlanWithValidation.test.js +85 -0
  141. package/src/services/tests/PlanService/getPlans.test.js +53 -0
  142. package/src/services/tests/PlanService/getPlansByPriceRange.test.js +109 -0
  143. package/src/services/tests/PlanService/getPlansWithValidation.test.js +48 -0
  144. package/src/services/tests/PlanService/initializePlans.test.js +75 -0
  145. package/src/services/tests/PlanService/updatePlan.test.js +111 -0
  146. package/src/services/tests/PlanService/updatePlanWithValidation.test.js +556 -0
  147. package/src/state/RootStateManager.js +37 -32
  148. package/src/state/rootEventBus.js +19 -0
  149. package/src/utils/CollabClient.js +99 -12
  150. package/src/utils/TokenManager.js +20 -3
  151. package/src/utils/changePreprocessor.js +239 -0
  152. package/src/utils/jsonDiff.js +40 -5
  153. package/src/utils/ordering.js +271 -0
  154. package/src/utils/services.js +306 -139
  155. package/src/utils/validation.js +0 -3
  156. package/dist/cjs/services/AIService.js +0 -155
  157. package/dist/cjs/services/BasedService.js +0 -1185
  158. package/dist/cjs/services/CoreService.js +0 -2295
  159. package/dist/cjs/services/SocketService.js +0 -309
  160. package/dist/cjs/services/SymstoryService.js +0 -571
  161. package/dist/cjs/utils/basedQuerys.js +0 -181
  162. package/dist/cjs/utils/symstoryClient.js +0 -259
  163. package/dist/esm/services/AIService.js +0 -185
  164. package/dist/esm/services/BasedService.js +0 -5262
  165. package/dist/esm/services/CoreService.js +0 -2827
  166. package/dist/esm/services/SocketService.js +0 -456
  167. package/dist/esm/services/SymstoryService.js +0 -7025
  168. package/dist/esm/utils/basedQuerys.js +0 -163
  169. package/dist/esm/utils/symstoryClient.js +0 -354
  170. package/dist/node/services/AIService.js +0 -136
  171. package/dist/node/services/BasedService.js +0 -1156
  172. package/dist/node/services/CoreService.js +0 -2266
  173. package/dist/node/services/SocketService.js +0 -280
  174. package/dist/node/services/SymstoryService.js +0 -542
  175. package/dist/node/utils/basedQuerys.js +0 -162
  176. package/dist/node/utils/symstoryClient.js +0 -230
  177. package/src/services/AIService.js +0 -150
  178. package/src/services/BasedService.js +0 -1302
  179. package/src/services/CoreService.js +0 -2548
  180. package/src/services/SocketService.js +0 -336
  181. package/src/services/SymstoryService.js +0 -649
  182. package/src/utils/basedQuerys.js +0 -164
  183. package/src/utils/symstoryClient.js +0 -252
@@ -0,0 +1,201 @@
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 FileService_exports = {};
19
+ __export(FileService_exports, {
20
+ FileService: () => FileService
21
+ });
22
+ module.exports = __toCommonJS(FileService_exports);
23
+ var import_BaseService = require("./BaseService.js");
24
+ class FileService extends import_BaseService.BaseService {
25
+ // ==================== FILE METHODS ====================
26
+ async uploadFile(file, options = {}) {
27
+ var _a;
28
+ this._requireReady("uploadFile");
29
+ if (!file) {
30
+ throw new Error("File is required for upload");
31
+ }
32
+ const formData = new FormData();
33
+ formData.append("file", file);
34
+ const hasProjectIdOption = Object.hasOwn(options, "projectId");
35
+ const projectId = hasProjectIdOption ? options.projectId : (_a = this._context.project) == null ? void 0 : _a.id;
36
+ if (projectId != null && projectId !== "") {
37
+ formData.append("projectId", projectId);
38
+ }
39
+ if (options.tags) {
40
+ formData.append("tags", JSON.stringify(options.tags));
41
+ }
42
+ if (options.visibility) {
43
+ formData.append("visibility", options.visibility || "public");
44
+ }
45
+ if (options.metadata) {
46
+ formData.append("metadata", JSON.stringify(options.metadata));
47
+ }
48
+ try {
49
+ const response = await this._request("/files/upload", {
50
+ method: "POST",
51
+ body: formData,
52
+ headers: {},
53
+ // Let browser set Content-Type for FormData
54
+ methodName: "uploadFile"
55
+ });
56
+ if (!response.success) {
57
+ throw new Error(response.message);
58
+ }
59
+ return response.data;
60
+ } catch (error) {
61
+ throw new Error(`File upload failed: ${error.message}`, { cause: error });
62
+ }
63
+ }
64
+ async updateProjectIcon(projectId, iconFile) {
65
+ this._requireReady("updateProjectIcon");
66
+ if (!projectId || !iconFile) {
67
+ throw new Error("Project ID and icon file are required");
68
+ }
69
+ const formData = new FormData();
70
+ formData.append("icon", iconFile);
71
+ formData.append("projectId", projectId);
72
+ try {
73
+ const response = await this._request("/files/upload-project-icon", {
74
+ method: "POST",
75
+ body: formData,
76
+ headers: {},
77
+ // Let browser set Content-Type for FormData
78
+ methodName: "updateProjectIcon"
79
+ });
80
+ if (response.success) {
81
+ return response.data;
82
+ }
83
+ throw new Error(response.message);
84
+ } catch (error) {
85
+ throw new Error(`Failed to update project icon: ${error.message}`, { cause: error });
86
+ }
87
+ }
88
+ // ==================== FILE HELPER METHODS ====================
89
+ /**
90
+ * Helper method to upload file with validation
91
+ */
92
+ async uploadFileWithValidation(file, options = {}) {
93
+ if (!file) {
94
+ throw new Error("File is required");
95
+ }
96
+ const maxSize = options.maxSize || 10 * 1024 * 1024;
97
+ if (file.size > maxSize) {
98
+ throw new Error(`File size exceeds maximum allowed size of ${maxSize / (1024 * 1024)}MB`);
99
+ }
100
+ const allowedTypes = options.allowedTypes || ["image/*", "application/pdf", "text/*"];
101
+ if (allowedTypes.length > 0) {
102
+ const isValidType = allowedTypes.some((type) => {
103
+ if (type.endsWith("/*")) {
104
+ return file.type.startsWith(type.replace("/*", ""));
105
+ }
106
+ return file.type === type;
107
+ });
108
+ if (!isValidType) {
109
+ throw new Error(`File type '${file.type}' is not allowed. Allowed types: ${allowedTypes.join(", ")}`);
110
+ }
111
+ }
112
+ return await this.uploadFile(file, options);
113
+ }
114
+ /**
115
+ * Helper method to upload image file specifically
116
+ */
117
+ async uploadImage(imageFile, options = {}) {
118
+ const imageOptions = {
119
+ ...options,
120
+ allowedTypes: ["image/jpeg", "image/png", "image/gif", "image/webp"],
121
+ maxSize: options.maxSize || 5 * 1024 * 1024
122
+ // 5MB for images
123
+ };
124
+ return await this.uploadFileWithValidation(imageFile, imageOptions);
125
+ }
126
+ /**
127
+ * Helper method to upload document file
128
+ */
129
+ async uploadDocument(documentFile, options = {}) {
130
+ const documentOptions = {
131
+ ...options,
132
+ allowedTypes: ["application/pdf", "text/plain", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"],
133
+ maxSize: options.maxSize || 20 * 1024 * 1024
134
+ // 20MB for documents
135
+ };
136
+ return await this.uploadFileWithValidation(documentFile, documentOptions);
137
+ }
138
+ /**
139
+ * Helper method to get file URL by ID
140
+ */
141
+ getFileUrl(fileId) {
142
+ if (!fileId) {
143
+ throw new Error("File ID is required");
144
+ }
145
+ return `${this._apiUrl}/core/files/public/${fileId}/download`;
146
+ }
147
+ /**
148
+ * Helper method to validate file before upload
149
+ */
150
+ validateFile(file, options = {}) {
151
+ const errors = [];
152
+ if (!file) {
153
+ errors.push("File is required");
154
+ return errors;
155
+ }
156
+ const maxSize = options.maxSize || 10 * 1024 * 1024;
157
+ if (file.size > maxSize) {
158
+ errors.push(`File size (${(file.size / (1024 * 1024)).toFixed(2)}MB) exceeds maximum allowed size of ${maxSize / (1024 * 1024)}MB`);
159
+ }
160
+ const allowedTypes = options.allowedTypes || [];
161
+ if (allowedTypes.length > 0) {
162
+ const isValidType = allowedTypes.some((type) => {
163
+ if (type.endsWith("/*")) {
164
+ return file.type.startsWith(type.replace("/*", ""));
165
+ }
166
+ return file.type === type;
167
+ });
168
+ if (!isValidType) {
169
+ errors.push(`File type '${file.type}' is not allowed. Allowed types: ${allowedTypes.join(", ")}`);
170
+ }
171
+ }
172
+ return errors;
173
+ }
174
+ /**
175
+ * Helper method to create FormData with file and metadata
176
+ */
177
+ createFileFormData(file, metadata = {}) {
178
+ const formData = new FormData();
179
+ formData.append("file", file);
180
+ if (Object.keys(metadata).length > 0) {
181
+ formData.append("metadata", JSON.stringify(metadata));
182
+ }
183
+ return formData;
184
+ }
185
+ /**
186
+ * Helper method to upload multiple files
187
+ */
188
+ async uploadMultipleFiles(files, options = {}) {
189
+ if (!Array.isArray(files) || files.length === 0) {
190
+ throw new Error("Files array is required and must not be empty");
191
+ }
192
+ const uploadPromises = files.map((file) => this.uploadFile(file, options));
193
+ const results = await Promise.allSettled(uploadPromises);
194
+ return results.map((result, index) => ({
195
+ file: files[index],
196
+ success: result.status === "fulfilled",
197
+ data: result.status === "fulfilled" ? result.value : null,
198
+ error: result.status === "rejected" ? result.reason.message : null
199
+ }));
200
+ }
201
+ }