@symbo.ls/sdk 3.1.1 → 3.2.3

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 (83) hide show
  1. package/README.md +174 -13
  2. package/dist/cjs/config/environment.js +32 -42
  3. package/dist/cjs/index.js +31 -24
  4. package/dist/cjs/services/AIService.js +3 -3
  5. package/dist/cjs/services/AuthService.js +44 -3
  6. package/dist/cjs/services/BasedService.js +530 -24
  7. package/dist/cjs/services/CollabService.js +420 -0
  8. package/dist/cjs/services/CoreService.js +2295 -0
  9. package/dist/cjs/services/SocketService.js +207 -59
  10. package/dist/cjs/services/SymstoryService.js +135 -49
  11. package/dist/cjs/services/index.js +8 -16
  12. package/dist/cjs/state/RootStateManager.js +86 -0
  13. package/dist/cjs/state/rootEventBus.js +65 -0
  14. package/dist/cjs/utils/CollabClient.js +157 -0
  15. package/dist/cjs/utils/TokenManager.js +409 -0
  16. package/dist/cjs/utils/basedQuerys.js +120 -0
  17. package/dist/cjs/utils/jsonDiff.js +103 -0
  18. package/dist/cjs/utils/permission.js +4 -4
  19. package/dist/cjs/utils/services.js +133 -69
  20. package/dist/cjs/utils/symstoryClient.js +33 -2
  21. package/dist/esm/config/environment.js +32 -42
  22. package/dist/esm/index.js +20586 -11525
  23. package/dist/esm/services/AIService.js +3 -3
  24. package/dist/esm/services/AuthService.js +48 -7
  25. package/dist/esm/services/BasedService.js +676 -65
  26. package/dist/esm/services/CollabService.js +18028 -0
  27. package/dist/esm/services/CoreService.js +2827 -0
  28. package/dist/esm/services/SocketService.js +323 -58
  29. package/dist/esm/services/SymstoryService.js +287 -111
  30. package/dist/esm/services/index.js +20456 -11470
  31. package/dist/esm/state/RootStateManager.js +102 -0
  32. package/dist/esm/state/rootEventBus.js +47 -0
  33. package/dist/esm/utils/CollabClient.js +17483 -0
  34. package/dist/esm/utils/TokenManager.js +395 -0
  35. package/dist/esm/utils/basedQuerys.js +120 -0
  36. package/dist/esm/utils/jsonDiff.js +6096 -0
  37. package/dist/esm/utils/permission.js +4 -4
  38. package/dist/esm/utils/services.js +133 -69
  39. package/dist/esm/utils/symstoryClient.js +63 -43
  40. package/dist/esm/utils/validation.js +89 -19
  41. package/dist/node/config/environment.js +32 -42
  42. package/dist/node/index.js +37 -28
  43. package/dist/node/services/AIService.js +3 -3
  44. package/dist/node/services/AuthService.js +44 -3
  45. package/dist/node/services/BasedService.js +531 -25
  46. package/dist/node/services/CollabService.js +401 -0
  47. package/dist/node/services/CoreService.js +2266 -0
  48. package/dist/node/services/SocketService.js +197 -59
  49. package/dist/node/services/SymstoryService.js +135 -49
  50. package/dist/node/services/index.js +8 -16
  51. package/dist/node/state/RootStateManager.js +57 -0
  52. package/dist/node/state/rootEventBus.js +46 -0
  53. package/dist/node/utils/CollabClient.js +128 -0
  54. package/dist/node/utils/TokenManager.js +390 -0
  55. package/dist/node/utils/basedQuerys.js +120 -0
  56. package/dist/node/utils/jsonDiff.js +74 -0
  57. package/dist/node/utils/permission.js +4 -4
  58. package/dist/node/utils/services.js +133 -69
  59. package/dist/node/utils/symstoryClient.js +33 -2
  60. package/package.json +23 -14
  61. package/src/config/environment.js +33 -42
  62. package/src/index.js +45 -28
  63. package/src/services/AIService.js +3 -3
  64. package/src/services/AuthService.js +52 -3
  65. package/src/services/BasedService.js +603 -23
  66. package/src/services/CollabService.js +491 -0
  67. package/src/services/CoreService.js +2548 -0
  68. package/src/services/SocketService.js +227 -59
  69. package/src/services/SymstoryService.js +150 -64
  70. package/src/services/index.js +7 -14
  71. package/src/state/RootStateManager.js +71 -0
  72. package/src/state/rootEventBus.js +48 -0
  73. package/src/utils/CollabClient.js +161 -0
  74. package/src/utils/TokenManager.js +462 -0
  75. package/src/utils/basedQuerys.js +123 -0
  76. package/src/utils/jsonDiff.js +109 -0
  77. package/src/utils/permission.js +4 -4
  78. package/src/utils/services.js +144 -69
  79. package/src/utils/symstoryClient.js +36 -2
  80. package/dist/cjs/services/SocketIOService.js +0 -309
  81. package/dist/esm/services/SocketIOService.js +0 -467
  82. package/dist/node/services/SocketIOService.js +0 -280
  83. package/src/services/SocketIOService.js +0 -356
@@ -1,91 +1,166 @@
1
1
  export const SERVICE_METHODS = {
2
- // Auth service methods
2
+ // Auth service methods (legacy - keeping for backward compatibility)
3
3
  auth: 'auth',
4
4
  login: 'auth',
5
5
  register: 'auth',
6
6
  googleAuth: 'auth',
7
+ googleAuthCallback: 'auth',
7
8
  githubAuth: 'auth',
8
9
  confirmRegistration: 'auth',
9
10
  logout: 'auth',
10
11
  updateUserRole: 'auth',
11
12
  hasPermission: 'auth',
13
+ hasGlobalPermission: 'auth',
12
14
  getProjectMembers: 'auth',
13
15
  inviteMember: 'auth',
14
16
  acceptInvite: 'auth',
15
17
  updateMemberRole: 'auth',
16
18
  removeMember: 'auth',
17
19
  updateProjectTier: 'auth',
18
- requestPasswordReset: 'auth',
19
- confirmPasswordReset: 'auth',
20
20
  subscribeToAuthChanges: 'auth',
21
- getStoredAuthState: 'auth',
21
+ getStoredAuthState: 'core',
22
22
 
23
- // AI service methods
24
- prompt: 'ai',
23
+ // Collab service methods
24
+ connect: 'collab',
25
+ disconnect: 'collab',
26
+ isConnected: 'collab',
27
+ updateData: 'collab',
28
+ addItem: 'collab',
29
+ addMultipleItems: 'collab',
30
+ updateItem: 'collab',
31
+ deleteItem: 'collab',
32
+ undo: 'collab',
33
+ redo: 'collab',
34
+ checkpoint: 'collab',
25
35
 
26
- // Based service methods
27
- query: 'based',
28
- setProject: 'based',
29
- setUser: 'based',
30
- subscribe: 'based',
31
- call: 'based',
32
- getProject: 'based',
33
- getProjectByKey: 'based',
34
- createProject: 'based',
35
- fetchUser: 'based',
36
- fetchProject: 'based',
37
- setBucket: 'based',
38
- getUser: 'based',
39
- getUserByEmail: 'based',
40
- setProjectDomains: 'based',
41
- checkProjectKeyAvailability: 'based',
42
- removeProject: 'based',
43
- getAvailableLibraries: 'based',
44
- addProjectLibraries: 'based',
45
- removeProjectLibraries: 'based',
46
- getProjectLibraries: 'based',
47
- checkout: 'based',
48
- uploadFile: 'based',
49
- updateProjectIcon: 'based',
50
- updateProject: 'based',
51
- updateProjectSettings: 'based',
52
- updateProjectComponents: 'based',
53
- updateProjectName: 'based',
54
- updateProjectPackage: 'based',
55
- createDnsRecord: 'based',
56
- getDnsRecord: 'based',
57
- removeDnsRecord: 'based',
58
- createStorageBucket: 'based',
59
- getStorageBucket: 'based',
60
- removeStorageBucket: 'based',
61
- requestPasswordChange: 'based',
62
- confirmPasswordChange: 'based',
63
- updateUserProfile: 'based',
64
- duplicateProject: 'based',
36
+ // Realtime collaboration helper methods
37
+ sendCursor: 'collab',
38
+ sendPresence: 'collab',
39
+ toggleLive: 'collab',
65
40
 
66
- // Symstory service methods
67
- set: 'symstory',
68
- getData: 'symstory',
69
- updateData: 'symstory',
70
- getBranches: 'symstory',
71
- createBranch: 'symstory',
72
- editBranch: 'symstory',
73
- deleteBranch: 'symstory',
74
- mergeBranch: 'symstory',
75
- restoreVersion: 'symstory',
76
- getItem: 'symstory',
77
- addItem: 'symstory',
78
- updateItem: 'symstory',
79
- deleteItem: 'symstory',
80
- switchVersion: 'symstory',
81
- switchBranch: 'symstory',
82
- undo: 'symstory',
83
- redo: 'symstory',
41
+ // Core service methods (new - replaces most based/auth functionality)
42
+ // Auth methods
43
+ register: 'core',
44
+ login: 'core',
45
+ logout: 'core',
46
+ refreshToken: 'core',
47
+ googleAuth: 'core',
48
+ googleAuthCallback: 'core',
49
+ githubAuth: 'core',
50
+ requestPasswordReset: 'core',
51
+ confirmPasswordReset: 'core',
52
+ confirmRegistration: 'core',
53
+ requestPasswordChange: 'core',
54
+ confirmPasswordChange: 'core',
55
+ getMe: 'core',
84
56
 
85
- // Socket service methods
86
- send: 'socket',
87
- subscribeChannel: 'socket',
88
- connect: 'socket',
89
- reconnect: 'socket',
90
- destroy: 'socket'
57
+ // User methods
58
+ getUserProfile: 'core',
59
+ updateUserProfile: 'core',
60
+ getUserProjects: 'core',
61
+ getUser: 'core',
62
+ getUserByEmail: 'core',
63
+
64
+ // Project methods
65
+ createProject: 'core',
66
+ getProjects: 'core',
67
+ getProject: 'core',
68
+ getProjectByKey: 'core',
69
+ getPublicProject: 'core',
70
+ listPublicProjects: 'core',
71
+ listProjects: 'core',
72
+ updateProject: 'core',
73
+ updateProjectComponents: 'core',
74
+ updateProjectSettings: 'core',
75
+ updateProjectName: 'core',
76
+ updateProjectPackage: 'core',
77
+ duplicateProject: 'core',
78
+ removeProject: 'core',
79
+ checkProjectKeyAvailability: 'core',
80
+
81
+ // Project member methods
82
+ getProjectMembers: 'core',
83
+ inviteMember: 'core',
84
+ acceptInvite: 'core',
85
+ updateMemberRole: 'core',
86
+ removeMember: 'core',
87
+
88
+ // Project library methods
89
+ getAvailableLibraries: 'core',
90
+ getProjectLibraries: 'core',
91
+ addProjectLibraries: 'core',
92
+ removeProjectLibraries: 'core',
93
+
94
+ // File methods
95
+ uploadFile: 'core',
96
+ updateProjectIcon: 'core',
97
+
98
+ // Payment methods
99
+ checkout: 'core',
100
+ getSubscriptionStatus: 'core',
101
+
102
+ // DNS methods
103
+ createDnsRecord: 'core',
104
+ getDnsRecord: 'core',
105
+ removeDnsRecord: 'core',
106
+ setProjectDomains: 'core',
107
+
108
+ // Utility methods
109
+ getHealthStatus: 'core',
110
+ getTokenDebugInfo: 'core',
111
+
112
+ // Project Data methods (Symstory replacement)
113
+ applyProjectChanges: 'core',
114
+ getProjectData: 'core',
115
+ getProjectVersions: 'core',
116
+ restoreProjectVersion: 'core',
117
+ updateProjectItem: 'core',
118
+ deleteProjectItem: 'core',
119
+ setProjectValue: 'core',
120
+ addProjectItems: 'core',
121
+ getProjectItemByPath: 'core',
122
+
123
+ // Pull Request methods
124
+ createPullRequest: 'core',
125
+ listPullRequests: 'core',
126
+ getPullRequest: 'core',
127
+ reviewPullRequest: 'core',
128
+ addPullRequestComment: 'core',
129
+ mergePullRequest: 'core',
130
+ getPullRequestDiff: 'core',
131
+ createPullRequestWithValidation: 'core',
132
+ approvePullRequest: 'core',
133
+ requestPullRequestChanges: 'core',
134
+ getOpenPullRequests: 'core',
135
+ getClosedPullRequests: 'core',
136
+ getMergedPullRequests: 'core',
137
+ isPullRequestMergeable: 'core',
138
+ getPullRequestStatusSummary: 'core',
139
+
140
+ // Branch Management methods
141
+ listBranches: 'core',
142
+ createBranch: 'core',
143
+ deleteBranch: 'core',
144
+ renameBranch: 'core',
145
+ getBranchChanges: 'core',
146
+ mergeBranch: 'core',
147
+ resetBranch: 'core',
148
+ publishVersion: 'core',
149
+ createBranchWithValidation: 'core',
150
+ branchExists: 'core',
151
+ previewMerge: 'core',
152
+ commitMerge: 'core',
153
+ createFeatureBranch: 'core',
154
+ createHotfixBranch: 'core',
155
+ getBranchStatus: 'core',
156
+ deleteBranchSafely: 'core',
157
+
158
+ // Admin methods
159
+ getAdminUsers: 'core',
160
+ assignProjectsToUser: 'core',
161
+ searchAdminUsers: 'core',
162
+ getAdminUsersByEmails: 'core',
163
+ getAdminUsersByIds: 'core',
164
+ assignSpecificProjectsToUser: 'core',
165
+ assignAllProjectsToUser: 'core'
91
166
  }
@@ -1,7 +1,7 @@
1
1
  import config from '../config/environment.js'
2
2
 
3
3
  const DEFAULT_OPTIONS = {
4
- baseUrl: config.baseUrl
4
+ apiUrl: config.apiUrl
5
5
  }
6
6
 
7
7
  class SymstoryClient {
@@ -30,7 +30,7 @@ class SymstoryClient {
30
30
  * @returns {Promise<any>} - The response data.
31
31
  */
32
32
  async request (path = '', options = {}) {
33
- const url = `${this.options.baseUrl}/${this.appKey}${path}`
33
+ const url = `${this.options.apiUrl}/symstory/${this.appKey}${path}`
34
34
  const response = await fetch(url, {
35
35
  ...options,
36
36
  headers: { ...this.headers, ...options.headers }
@@ -194,6 +194,40 @@ class SymstoryClient {
194
194
  body: JSON.stringify({ branch, version, type, message })
195
195
  })
196
196
  }
197
+
198
+ /**
199
+ * Publishes an existing version of the project.
200
+ * @param {string} version - The version ID/number to publish.
201
+ * @param {object} [options={}] - The publishing options.
202
+ * @param {string} [options.branch='main'] - The branch name. (Only if version number is provided)
203
+ * @returns {Promise<any>} - The response data.
204
+ */
205
+ publishVersion (version) {
206
+ return this.request('/publish', {
207
+ method: 'POST',
208
+ body: JSON.stringify({ version })
209
+ })
210
+ }
211
+
212
+ /**
213
+ * Retrieves all changes after a specific version.
214
+ * @param {object} [options={}] - The changes options.
215
+ * @param {string} [options.versionId] - The version ID to publish.
216
+ * @param {string} [options.versionValue] - The version ID to publish. (alternative to versionId)
217
+ * @param {string} [options.branch] - The branch to publish (Only in combination to versionValue)
218
+ * @returns {Promise<any>} - The changes data.
219
+ */
220
+ getChanges ({ versionId, versionValue, branch } = {}) {
221
+ return this.request(
222
+ `/changes?${
223
+ new URLSearchParams({
224
+ ...(versionId ? { versionId } : {}),
225
+ ...(versionValue ? { versionValue } : {}),
226
+ ...(branch ? { branch } : {})
227
+ }).toString()}`,
228
+ {}
229
+ )
230
+ }
197
231
  }
198
232
 
199
233
  export default {
@@ -1,309 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
- var SocketIOService_exports = {};
29
- __export(SocketIOService_exports, {
30
- SocketService: () => SocketService
31
- });
32
- module.exports = __toCommonJS(SocketIOService_exports);
33
- var import_client = require("@symbo.ls/socket/client.js");
34
- var import_BaseService = require("./BaseService.js");
35
- var utils = __toESM(require("@domql/utils"), 1);
36
- var import_router = require("@symbo.ls/router");
37
- var import_environment = __toESM(require("../config/environment.js"), 1);
38
- const { deepStringify, deepDestringify, isString } = utils.default || utils;
39
- class SocketService extends import_BaseService.BaseService {
40
- constructor(config) {
41
- super(config);
42
- this._socket = null;
43
- this._reconnectAttempts = 0;
44
- this._maxReconnectAttempts = (config == null ? void 0 : config.maxReconnectAttempts) || 5;
45
- this._reconnectDelay = (config == null ? void 0 : config.reconnectDelay) || 1e3;
46
- this._handlers = /* @__PURE__ */ new Map();
47
- this._sessionId = Math.random();
48
- this._ignoreSync = [
49
- "userId",
50
- "username",
51
- "usersName",
52
- "email",
53
- "projects",
54
- "feedbacks",
55
- "userRoles",
56
- "loading",
57
- "appKey",
58
- "projectName",
59
- "followingUser",
60
- "activeProject",
61
- "user",
62
- "sessionId",
63
- "clients"
64
- ];
65
- }
66
- init() {
67
- try {
68
- const { _context, _options } = this;
69
- const socketUrl = import_environment.default.socketUrl || _options.socketUrl || "https://socket.symbols.app/";
70
- if (!socketUrl) {
71
- throw new Error("Socket URL is required");
72
- }
73
- this._info = {
74
- config: {
75
- url: socketUrl,
76
- hasToken: Boolean(_context.authToken),
77
- status: "initializing"
78
- }
79
- };
80
- this._setReady();
81
- } catch (error) {
82
- this._setError(error);
83
- throw error;
84
- }
85
- }
86
- connect() {
87
- var _a, _b, _c, _d, _e, _f, _g;
88
- try {
89
- if (this._socket && ["connected", "connecting"].includes((_b = (_a = this._info) == null ? void 0 : _a.config) == null ? void 0 : _b.status)) {
90
- console.warn(
91
- "Socket connection already exists:",
92
- (_d = (_c = this._info) == null ? void 0 : _c.config) == null ? void 0 : _d.status
93
- );
94
- return true;
95
- }
96
- const { _context } = this;
97
- if (!_context.appKey) {
98
- throw new Error("App key is required");
99
- }
100
- this._updateStatus("connecting");
101
- const config = {
102
- source: "platform",
103
- userId: (_e = _context.user) == null ? void 0 : _e.id,
104
- socketUrl: this._info.config.url,
105
- location: window.location.host,
106
- onChange: this._handleMessage.bind(this),
107
- sessionId: this._sessionId,
108
- usersName: (_f = _context.user) == null ? void 0 : _f.name,
109
- route: window.location.pathname,
110
- onDisconnect: this._handleDisconnect.bind(this)
111
- };
112
- if (this._socket) {
113
- this.destroy();
114
- }
115
- this._socket = (0, import_client.connect)(_context.appKey, config);
116
- this._updateStatus("connected");
117
- if (import_environment.default.isDevelopment) {
118
- console.log("Socket connection established:", {
119
- appKey: _context.appKey,
120
- userId: (_g = _context.user) == null ? void 0 : _g.id,
121
- sessionId: this._sessionId,
122
- url: this._info.config.url
123
- });
124
- }
125
- return true;
126
- } catch (error) {
127
- this._updateStatus("failed");
128
- console.error("Socket connection failed:", error);
129
- throw new Error(`Socket connection failed: ${error.message}`);
130
- }
131
- }
132
- send(type, data, opts = {}) {
133
- var _a, _b;
134
- this._requireReady();
135
- if (!this._socket) {
136
- throw new Error("Socket is not connected");
137
- }
138
- const payload = {
139
- sessionId: this._sessionId,
140
- userId: (_a = this._context.user) == null ? void 0 : _a.id,
141
- usersName: (_b = this._context.user) == null ? void 0 : _b.name,
142
- ...data
143
- };
144
- import_client.send.call(
145
- this._socket,
146
- type,
147
- opts.preventDeepStringify ? payload : deepStringify(payload)
148
- );
149
- }
150
- _handleMessage(event, data) {
151
- try {
152
- const d = isString(data) ? deepDestringify(JSON.parse(data)) : data;
153
- if (this._sessionId === d.sessionId) {
154
- return;
155
- }
156
- const handlers = this._handlers.get(event);
157
- if (handlers) {
158
- handlers.forEach((handler) => handler(d));
159
- }
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
- _handleChangeEvent(data) {
178
- var _a, _b, _c;
179
- if (data.canvas) {
180
- const { clients } = data.canvas;
181
- const [firstClientKey] = Object.keys(clients);
182
- const monaco = clients && clients[firstClientKey] && clients[firstClientKey].monaco;
183
- if (monaco) {
184
- const Canvas = this._context.element && this._context.element.getCanvas();
185
- if (Canvas) {
186
- Canvas.Chosen.EditorPanels.update({}, { forceMonacoUpdate: true });
187
- }
188
- }
189
- return;
190
- }
191
- const componentUpdates = ((_a = data.schema) == null ? void 0 : _a.components) || ((_b = data.schema) == null ? void 0 : _b.pages);
192
- if (window.location.pathname.includes("/canvas") && componentUpdates) {
193
- for (const updatedComponent in componentUpdates) {
194
- if (Object.hasOwn(componentUpdates, updatedComponent)) {
195
- (_c = this._context.element) == null ? void 0 : _c.updateComponentOnCanvas(updatedComponent);
196
- }
197
- }
198
- }
199
- }
200
- _handleClientsEvent(data) {
201
- const { root } = Object.getPrototypeOf(this._context.state);
202
- root.replace(
203
- { clients: data },
204
- {
205
- fromSync: true,
206
- preventUpdate: ["Iframe"],
207
- preventModalUpdate: true,
208
- preventStateUpdateListener: true,
209
- execStateFunction: true
210
- }
211
- );
212
- }
213
- _handleRouteEvent(data) {
214
- const { element } = this._context;
215
- const { state } = this._context;
216
- if (data.userId && data.type === "routeChanged") {
217
- const isModalOpen = this.getWindow("modal");
218
- const isFollowing = state.followingUser === data.userId;
219
- const isRouteSyncEnabled = element.getUserSettings("presentMode") && data.userId === state.userId;
220
- if ((isFollowing || isRouteSyncEnabled) && !isModalOpen) {
221
- (0, import_router.router)(
222
- data.route,
223
- element.__ref.root,
224
- {},
225
- {
226
- fromSync: true,
227
- updateStateOptions: {
228
- fromSync: true,
229
- preventStateUpdateListener: 1
230
- // !isModalRoute(data.route, element)
231
- }
232
- }
233
- );
234
- }
235
- } else if (data.reload) {
236
- window.location.reload();
237
- } else if (data.route && data.type === "routeForced") {
238
- (0, import_router.router)(
239
- data.route,
240
- element.__ref.root,
241
- {},
242
- {
243
- fromSync: true,
244
- updateStateOptions: {
245
- fromSync: true
246
- }
247
- }
248
- );
249
- } else if (data.componentKey) {
250
- if (!element.getData("components")[data.componentKey]) {
251
- return;
252
- }
253
- element.activateSelected(data.componentKey);
254
- }
255
- }
256
- _handleDisconnect() {
257
- this._updateStatus("disconnected");
258
- this._handleReconnect();
259
- }
260
- _handleReconnect() {
261
- if (this._reconnectAttempts < this._maxReconnectAttempts) {
262
- this._reconnectAttempts++;
263
- this._updateStatus("reconnecting");
264
- setTimeout(() => {
265
- this.connect().then(() => {
266
- this._reconnectAttempts = 0;
267
- }).catch(() => {
268
- this._handleReconnect();
269
- });
270
- }, this._reconnectDelay * this._reconnectAttempts);
271
- } else {
272
- this._updateStatus("failed");
273
- this._setError(new Error("Max reconnection attempts reached"));
274
- }
275
- }
276
- _updateStatus(status) {
277
- this._info = {
278
- ...this._info,
279
- config: {
280
- ...this._info.config,
281
- status
282
- }
283
- };
284
- }
285
- destroy() {
286
- if (this._socket) {
287
- import_client.disconnect.call(this._socket);
288
- this._socket = null;
289
- }
290
- this._handlers.clear();
291
- this._setReady(false);
292
- }
293
- reconnect() {
294
- this.destroy();
295
- this.connect();
296
- }
297
- _checkRequiredContext() {
298
- var _a, _b;
299
- return Boolean(
300
- ((_a = this._context) == null ? void 0 : _a.appKey) && ((_b = this._context) == null ? void 0 : _b.authToken) && this._socket
301
- );
302
- }
303
- isReady() {
304
- if (this._checkRequiredContext()) {
305
- this._setReady(true);
306
- }
307
- return this._ready;
308
- }
309
- }