@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
@@ -1,336 +0,0 @@
1
- import { connect, send, disconnect } from '@symbo.ls/socket/client.js'
2
- import { BaseService } from './BaseService.js'
3
-
4
- import * as utils from '@domql/utils'
5
- import { router } from '@symbo.ls/router'
6
- import environment from '../config/environment.js'
7
-
8
- const { deepStringify, deepDestringify, isString } = utils.default || utils
9
-
10
- export class SocketService extends BaseService {
11
- constructor (config) {
12
- super(config)
13
- this._socket = null
14
- this._reconnectAttempts = 0
15
- this._maxReconnectAttempts = config?.maxReconnectAttempts || 5
16
- this._reconnectDelay = config?.reconnectDelay || 1000
17
- this._handlers = new Map()
18
- this._sessionId = Math.random()
19
-
20
- this._ignoreSync = [
21
- 'userId',
22
- 'username',
23
- 'usersName',
24
- 'email',
25
- 'projects',
26
- 'feedbacks',
27
- 'userRoles',
28
- 'loading',
29
- 'appKey',
30
- 'projectName',
31
- 'followingUser',
32
- 'activeProject',
33
- 'user',
34
- 'sessionId',
35
- 'clients'
36
- ]
37
- }
38
-
39
- init () {
40
- try {
41
- const { _context, _options } = this
42
- const socketUrl = environment.socketUrl || _options.socketUrl
43
-
44
- if (!socketUrl) {
45
- throw new Error('Socket URL is required')
46
- }
47
-
48
- this._info = {
49
- config: {
50
- url: socketUrl,
51
- hasToken: Boolean(_context.authToken),
52
- status: 'initializing'
53
- }
54
- }
55
-
56
- this._setReady()
57
- } catch (error) {
58
- this._setError(error)
59
- throw error
60
- }
61
- }
62
-
63
- connect () {
64
- try {
65
- // Check if already connected or connecting
66
- if (
67
- this._socket &&
68
- ['connected', 'connecting'].includes(this._info?.config?.status)
69
- ) {
70
- console.warn(
71
- 'Socket connection already exists:',
72
- this._info?.config?.status
73
- )
74
- return true
75
- }
76
-
77
- const { _context } = this
78
-
79
- if (!_context.appKey) {
80
- throw new Error('App key is required')
81
- }
82
-
83
- // Update status to connecting before attempting connection
84
- this._updateStatus('connecting')
85
-
86
- const config = {
87
- source: 'platform',
88
- userId: _context.user?.id,
89
- socketUrl: this._info.config.url,
90
- location: window.location.host,
91
- // onConnect: () => {
92
- // console.log('waz')
93
- // },
94
- onChange: this._handleMessage.bind(this),
95
- sessionId: this._sessionId,
96
- usersName: _context.user?.name,
97
- route: window.location.pathname,
98
- onDisconnect: this._handleDisconnect.bind(this)
99
- }
100
-
101
- // If a previous socket exists but wasn't properly cleaned up, destroy it
102
- if (this._socket) {
103
- this.destroy()
104
- }
105
-
106
- this._socket = connect(_context.appKey, config)
107
- this._updateStatus('connected')
108
-
109
- if (environment.isDevelopment) {
110
- console.log('Socket connection established:', {
111
- appKey: _context.appKey,
112
- userId: _context.user?.id,
113
- sessionId: this._sessionId,
114
- url: this._info.config.url
115
- })
116
- }
117
-
118
- return true
119
- } catch (error) {
120
- this._updateStatus('failed')
121
- console.error('Socket connection failed:', error)
122
- throw new Error(`Socket connection failed: ${error.message}`)
123
- }
124
- }
125
-
126
- send (type, data, opts = {}) {
127
- this._requireReady()
128
-
129
- if (!this._socket) {
130
- throw new Error('Socket is not connected')
131
- }
132
-
133
- const payload = {
134
- sessionId: this._sessionId,
135
- userId: this._context.user?.id,
136
- usersName: this._context.user?.name,
137
- ...data
138
- }
139
-
140
- send.call(
141
- this._socket,
142
- type,
143
- opts.useDeepStringify ? deepStringify(payload) : payload
144
- )
145
- }
146
-
147
- _handleMessage (event, data) {
148
- try {
149
- const d = isString(data) ? deepDestringify(JSON.parse(data)) : data
150
- if (this._sessionId === d.sessionId) {
151
- return
152
- }
153
-
154
- const handlers = this._handlers.get(event)
155
- if (handlers) {
156
- handlers.forEach(handler => handler(d))
157
- }
158
-
159
- // Handle specific events
160
- switch (event) {
161
- case 'change':
162
- this._handleChangeEvent(d)
163
- break
164
- case 'clients':
165
- this._handleClientsEvent(d)
166
- break
167
- case 'route':
168
- this._handleRouteEvent(d)
169
- break
170
- default:
171
- break
172
- }
173
- } catch (error) {
174
- this._setError(new Error(`Failed to handle message: ${error.message}`))
175
- }
176
- }
177
-
178
- _handleChangeEvent (data) {
179
- const { type, changes, version } = data
180
- if (version) {
181
- this._context.state.version = version
182
- }
183
- if (changes) {
184
- window.requestAnimationFrame(async () => {
185
- await this._context.state.setPathCollection(changes, {
186
- preventReplace: type === 'canvas',
187
- preventUpdate: true,
188
- fromSocket: true,
189
- userId: data.userId,
190
- changes
191
- })
192
- })
193
- }
194
-
195
- // monaco updates
196
- // if (data.canvas) {
197
- // const { clients } = data.canvas
198
- // const [firstClientKey] = Object.keys(clients)
199
- // const monaco =
200
- // clients && clients[firstClientKey] && clients[firstClientKey].monaco
201
- // if (monaco) {
202
- // const Canvas =
203
- // this._context.element && this._context.element.getCanvas()
204
- // if (Canvas) {
205
- // Canvas.Chosen.EditorPanels.update({}, { forceMonacoUpdate: true })
206
- // }
207
- // }
208
- // return
209
- // }
210
- }
211
-
212
- _handleClientsEvent (data) {
213
- const { root } = this._context.state
214
-
215
- root.replace(
216
- { clients: data },
217
- {
218
- fromSocket: true,
219
- preventUpdate: true
220
- }
221
- )
222
- }
223
-
224
- _handleRouteEvent (data) {
225
- const { element } = this._context
226
- const { state } = this._context
227
-
228
- if (data.userId && data.type === 'routeChanged') {
229
- const isModalOpen = this.getWindow('modal')
230
- const isFollowing = state.followingUser === data.userId
231
- const isRouteSyncEnabled =
232
- element.getUserSettings('presentMode') && data.userId === state.userId
233
-
234
- if ((isFollowing || isRouteSyncEnabled) && !isModalOpen) {
235
- router(
236
- data.route,
237
- element.__ref.root,
238
- {},
239
- {
240
- fromSocket: true,
241
- updateStateOptions: {
242
- fromSocket: true,
243
- preventStateUpdateListener: 1 // !isModalRoute(data.route, element)
244
- }
245
- }
246
- )
247
- }
248
- } else if (data.reload) {
249
- window.location.reload()
250
- } else if (data.route && data.type === 'routeForced') {
251
- router(
252
- data.route,
253
- element.__ref.root,
254
- {},
255
- {
256
- fromSocket: true,
257
- updateStateOptions: {
258
- fromSocket: true
259
- }
260
- }
261
- )
262
- } else if (data.componentKey) {
263
- if (!element.getData('components')[data.componentKey]) {
264
- return
265
- }
266
- element.activateSelected(data.componentKey)
267
- }
268
- }
269
-
270
- _handleDisconnect () {
271
- this._updateStatus('disconnected')
272
- this._handleReconnect()
273
- }
274
-
275
- _handleReconnect () {
276
- if (this._reconnectAttempts < this._maxReconnectAttempts) {
277
- this._reconnectAttempts++
278
- this._updateStatus('reconnecting')
279
-
280
- setTimeout(() => {
281
- try {
282
- const connected = this.connect()
283
- if (connected) {
284
- this._reconnectAttempts = 0
285
- } else {
286
- this._handleReconnect()
287
- }
288
- } catch (error) {
289
- console.error('Reconnection failed:', error)
290
- this._handleReconnect()
291
- }
292
- }, this._reconnectDelay * this._reconnectAttempts)
293
- } else {
294
- this._updateStatus('failed')
295
- this._setError(new Error('Max reconnection attempts reached'))
296
- }
297
- }
298
-
299
- _updateStatus (status) {
300
- this._info = {
301
- ...this._info,
302
- config: {
303
- ...this._info.config,
304
- status
305
- }
306
- }
307
- }
308
-
309
- destroy () {
310
- if (this._socket) {
311
- disconnect.call(this._socket)
312
- this._socket = null
313
- }
314
- this._handlers.clear()
315
- this._setReady(false)
316
- }
317
-
318
- reconnect () {
319
- this.destroy()
320
- this.connect()
321
- }
322
-
323
- _checkRequiredContext () {
324
- return Boolean(
325
- this._context?.appKey && this._context?.authToken && this._socket
326
- )
327
- }
328
-
329
- isReady () {
330
- if (this._checkRequiredContext()) {
331
- this._setReady(true)
332
- }
333
-
334
- return this._ready
335
- }
336
- }