@symbo.ls/sdk 3.1.2 → 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.
- package/README.md +2 -2
- package/dist/cjs/config/environment.js +5 -21
- package/dist/cjs/index.js +6 -26
- package/dist/cjs/services/AIService.js +3 -3
- package/dist/cjs/services/CollabService.js +420 -0
- package/dist/cjs/services/CoreService.js +651 -107
- package/dist/cjs/services/SocketService.js +207 -59
- package/dist/cjs/services/index.js +5 -13
- package/dist/cjs/state/RootStateManager.js +86 -0
- package/dist/cjs/state/rootEventBus.js +65 -0
- package/dist/cjs/utils/CollabClient.js +157 -0
- package/dist/cjs/utils/TokenManager.js +62 -27
- package/dist/cjs/utils/jsonDiff.js +103 -0
- package/dist/cjs/utils/services.js +129 -88
- package/dist/cjs/utils/symstoryClient.js +5 -5
- package/dist/esm/config/environment.js +5 -21
- package/dist/esm/index.js +20459 -9286
- package/dist/esm/services/AIService.js +3 -3
- package/dist/esm/services/BasedService.js +5 -21
- package/dist/esm/services/CollabService.js +18028 -0
- package/dist/esm/services/CoreService.js +718 -155
- package/dist/esm/services/SocketService.js +323 -58
- package/dist/esm/services/SymstoryService.js +10 -26
- package/dist/esm/services/index.js +20305 -9158
- package/dist/esm/state/RootStateManager.js +102 -0
- package/dist/esm/state/rootEventBus.js +47 -0
- package/dist/esm/utils/CollabClient.js +17483 -0
- package/dist/esm/utils/TokenManager.js +62 -27
- package/dist/esm/utils/jsonDiff.js +6096 -0
- package/dist/esm/utils/services.js +129 -88
- package/dist/esm/utils/symstoryClient.js +10 -26
- package/dist/node/config/environment.js +5 -21
- package/dist/node/index.js +10 -34
- package/dist/node/services/AIService.js +3 -3
- package/dist/node/services/CollabService.js +401 -0
- package/dist/node/services/CoreService.js +651 -107
- package/dist/node/services/SocketService.js +197 -59
- package/dist/node/services/index.js +5 -13
- package/dist/node/state/RootStateManager.js +57 -0
- package/dist/node/state/rootEventBus.js +46 -0
- package/dist/node/utils/CollabClient.js +128 -0
- package/dist/node/utils/TokenManager.js +62 -27
- package/dist/node/utils/jsonDiff.js +74 -0
- package/dist/node/utils/services.js +129 -88
- package/dist/node/utils/symstoryClient.js +5 -5
- package/package.json +12 -6
- package/src/config/environment.js +5 -19
- package/src/index.js +9 -31
- package/src/services/AIService.js +3 -3
- package/src/services/BasedService.js +1 -0
- package/src/services/CollabService.js +491 -0
- package/src/services/CoreService.js +715 -110
- package/src/services/SocketService.js +227 -59
- package/src/services/index.js +6 -13
- package/src/state/RootStateManager.js +71 -0
- package/src/state/rootEventBus.js +48 -0
- package/src/utils/CollabClient.js +161 -0
- package/src/utils/TokenManager.js +68 -30
- package/src/utils/jsonDiff.js +109 -0
- package/src/utils/services.js +140 -88
- package/src/utils/symstoryClient.js +5 -5
- package/dist/cjs/services/SocketIOService.js +0 -307
- package/dist/esm/services/SocketIOService.js +0 -470
- package/dist/node/services/SocketIOService.js +0 -278
- package/src/services/SocketIOService.js +0 -334
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// src/services/SocketService.js
|
|
2
|
+
import { connect, send, disconnect } from "@symbo.ls/socket/client.js";
|
|
3
|
+
|
|
1
4
|
// src/services/BaseService.js
|
|
2
5
|
var BaseService = class {
|
|
3
6
|
constructor({ context, options } = {}) {
|
|
@@ -48,6 +51,134 @@ var BaseService = class {
|
|
|
48
51
|
};
|
|
49
52
|
|
|
50
53
|
// src/services/SocketService.js
|
|
54
|
+
import * as utils from "@domql/utils";
|
|
55
|
+
import { router } from "@symbo.ls/router";
|
|
56
|
+
|
|
57
|
+
// src/config/environment.js
|
|
58
|
+
import { isDevelopment } from "@domql/utils";
|
|
59
|
+
var CONFIG = {
|
|
60
|
+
// Common defaults for all environments
|
|
61
|
+
common: {
|
|
62
|
+
// NOTE: Google client id for google auth, need to configure URLs for each environment in Google console
|
|
63
|
+
googleClientId: "686286207466-bvd2fqs31rlm64fgich7rtpnc8ns2tqg.apps.googleusercontent.com",
|
|
64
|
+
// Feature toggles that apply across all environments by default
|
|
65
|
+
features: {
|
|
66
|
+
newUserOnboarding: true,
|
|
67
|
+
betaFeatures: false
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
// Environment-specific configurations
|
|
71
|
+
local: {
|
|
72
|
+
// local
|
|
73
|
+
socketUrl: "http://localhost:8080",
|
|
74
|
+
// For socket api
|
|
75
|
+
apiUrl: "http://localhost:8080",
|
|
76
|
+
// For server api
|
|
77
|
+
basedEnv: "development",
|
|
78
|
+
// For based api
|
|
79
|
+
basedProject: "platform-v2-sm",
|
|
80
|
+
// For based api
|
|
81
|
+
basedOrg: "symbols",
|
|
82
|
+
// For based api
|
|
83
|
+
githubClientId: "Ov23liHxyWFBxS8f1gnF",
|
|
84
|
+
// For github api
|
|
85
|
+
// Environment-specific feature toggles (override common)
|
|
86
|
+
features: {
|
|
87
|
+
betaFeatures: true
|
|
88
|
+
// Enable beta features in local dev
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
development: {
|
|
92
|
+
socketUrl: "https://dev.api.symbols.app",
|
|
93
|
+
apiUrl: "https://dev.api.symbols.app",
|
|
94
|
+
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
95
|
+
},
|
|
96
|
+
testing: {
|
|
97
|
+
socketUrl: "https://test.api.symbols.app",
|
|
98
|
+
apiUrl: "https://test.api.symbols.app",
|
|
99
|
+
basedEnv: "testing",
|
|
100
|
+
basedProject: "platform-v2-sm",
|
|
101
|
+
basedOrg: "symbols",
|
|
102
|
+
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
103
|
+
},
|
|
104
|
+
upcoming: {
|
|
105
|
+
socketUrl: "https://upcoming.api.symbols.app",
|
|
106
|
+
apiUrl: "https://upcoming.api.symbols.app",
|
|
107
|
+
githubClientId: "Ov23liWF7NvdZ056RV5J"
|
|
108
|
+
},
|
|
109
|
+
staging: {
|
|
110
|
+
socketUrl: "https://staging.api.symbols.app",
|
|
111
|
+
apiUrl: "https://staging.api.symbols.app",
|
|
112
|
+
basedEnv: "staging",
|
|
113
|
+
basedProject: "platform-v2-sm",
|
|
114
|
+
basedOrg: "symbols",
|
|
115
|
+
githubClientId: "Ov23ligwZDQVD0VfuWNa"
|
|
116
|
+
},
|
|
117
|
+
production: {
|
|
118
|
+
socketUrl: "https://api.symbols.app",
|
|
119
|
+
apiUrl: "https://api.symbols.app",
|
|
120
|
+
basedEnv: "production",
|
|
121
|
+
basedProject: "platform-v2-sm",
|
|
122
|
+
basedOrg: "symbols",
|
|
123
|
+
githubClientId: "Ov23liFAlOEIXtX3dBtR"
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
var getEnvironment = () => {
|
|
127
|
+
const env = process.env.SYMBOLS_APP_ENV || process.env.NODE_ENV;
|
|
128
|
+
if (!CONFIG[env]) {
|
|
129
|
+
throw new Error(`Unknown environment "${env}"`);
|
|
130
|
+
}
|
|
131
|
+
return env;
|
|
132
|
+
};
|
|
133
|
+
var getConfig = () => {
|
|
134
|
+
try {
|
|
135
|
+
const env = getEnvironment();
|
|
136
|
+
const envConfig = { ...CONFIG.common, ...CONFIG[env] };
|
|
137
|
+
const finalConfig = {
|
|
138
|
+
...envConfig,
|
|
139
|
+
socketUrl: process.env.SYMBOLS_APP_SOCKET_URL || envConfig.socketUrl,
|
|
140
|
+
apiUrl: process.env.SYMBOLS_APP_API_URL || envConfig.apiUrl,
|
|
141
|
+
basedEnv: process.env.SYMBOLS_APP_BASED_ENV || envConfig.basedEnv,
|
|
142
|
+
basedProject: process.env.SYMBOLS_APP_BASED_PROJECT || envConfig.basedProject,
|
|
143
|
+
basedOrg: process.env.SYMBOLS_APP_BASED_ORG || envConfig.basedOrg,
|
|
144
|
+
githubClientId: process.env.SYMBOLS_APP_GITHUB_CLIENT_ID || envConfig.githubClientId,
|
|
145
|
+
isDevelopment: isDevelopment(env),
|
|
146
|
+
isTesting: env === "testing",
|
|
147
|
+
isStaging: env === "staging",
|
|
148
|
+
isProduction: env === "production"
|
|
149
|
+
// Store all environment variables for potential future use
|
|
150
|
+
};
|
|
151
|
+
const requiredFields = [
|
|
152
|
+
"socketUrl",
|
|
153
|
+
"apiUrl",
|
|
154
|
+
"githubClientId",
|
|
155
|
+
"googleClientId"
|
|
156
|
+
];
|
|
157
|
+
const missingFields = requiredFields.filter((field) => !finalConfig[field]);
|
|
158
|
+
if (missingFields.length > 0) {
|
|
159
|
+
console.error(
|
|
160
|
+
`Missing required configuration: ${missingFields.join(", ")}`
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
if (finalConfig.isDevelopment) {
|
|
164
|
+
console.log(
|
|
165
|
+
"environment in SDK:",
|
|
166
|
+
env || process.env.NODE_ENV || process.env.NODE_ENV
|
|
167
|
+
);
|
|
168
|
+
console.log(finalConfig);
|
|
169
|
+
}
|
|
170
|
+
return finalConfig;
|
|
171
|
+
} catch (error) {
|
|
172
|
+
console.error("Failed to load environment configuration:", error);
|
|
173
|
+
return {
|
|
174
|
+
...CONFIG.development
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
var environment_default = getConfig();
|
|
179
|
+
|
|
180
|
+
// src/services/SocketService.js
|
|
181
|
+
var { deepStringify, deepDestringify, isString } = utils.default || utils;
|
|
51
182
|
var SocketService = class extends BaseService {
|
|
52
183
|
constructor(config) {
|
|
53
184
|
super(config);
|
|
@@ -56,24 +187,39 @@ var SocketService = class extends BaseService {
|
|
|
56
187
|
this._maxReconnectAttempts = (config == null ? void 0 : config.maxReconnectAttempts) || 5;
|
|
57
188
|
this._reconnectDelay = (config == null ? void 0 : config.reconnectDelay) || 1e3;
|
|
58
189
|
this._handlers = /* @__PURE__ */ new Map();
|
|
190
|
+
this._sessionId = Math.random();
|
|
191
|
+
this._ignoreSync = [
|
|
192
|
+
"userId",
|
|
193
|
+
"username",
|
|
194
|
+
"usersName",
|
|
195
|
+
"email",
|
|
196
|
+
"projects",
|
|
197
|
+
"feedbacks",
|
|
198
|
+
"userRoles",
|
|
199
|
+
"loading",
|
|
200
|
+
"appKey",
|
|
201
|
+
"projectName",
|
|
202
|
+
"followingUser",
|
|
203
|
+
"activeProject",
|
|
204
|
+
"user",
|
|
205
|
+
"sessionId",
|
|
206
|
+
"clients"
|
|
207
|
+
];
|
|
59
208
|
}
|
|
60
|
-
|
|
209
|
+
init() {
|
|
61
210
|
try {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const { authToken } = context;
|
|
65
|
-
const { socketUrl } = context.socket || {};
|
|
211
|
+
const { _context, _options } = this;
|
|
212
|
+
const socketUrl = environment_default.socketUrl || _options.socketUrl;
|
|
66
213
|
if (!socketUrl) {
|
|
67
214
|
throw new Error("Socket URL is required");
|
|
68
215
|
}
|
|
69
216
|
this._info = {
|
|
70
217
|
config: {
|
|
71
218
|
url: socketUrl,
|
|
72
|
-
hasToken: Boolean(authToken),
|
|
219
|
+
hasToken: Boolean(_context.authToken),
|
|
73
220
|
status: "initializing"
|
|
74
221
|
}
|
|
75
222
|
};
|
|
76
|
-
await this.connect();
|
|
77
223
|
this._setReady();
|
|
78
224
|
} catch (error) {
|
|
79
225
|
this._setError(error);
|
|
@@ -81,76 +227,189 @@ var SocketService = class extends BaseService {
|
|
|
81
227
|
}
|
|
82
228
|
}
|
|
83
229
|
connect() {
|
|
230
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
84
231
|
try {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
this.
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
232
|
+
if (this._socket && ["connected", "connecting"].includes((_b = (_a = this._info) == null ? void 0 : _a.config) == null ? void 0 : _b.status)) {
|
|
233
|
+
console.warn(
|
|
234
|
+
"Socket connection already exists:",
|
|
235
|
+
(_d = (_c = this._info) == null ? void 0 : _c.config) == null ? void 0 : _d.status
|
|
236
|
+
);
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
const { _context } = this;
|
|
240
|
+
if (!_context.appKey) {
|
|
241
|
+
throw new Error("App key is required");
|
|
242
|
+
}
|
|
243
|
+
this._updateStatus("connecting");
|
|
244
|
+
const config = {
|
|
245
|
+
source: "platform",
|
|
246
|
+
userId: (_e = _context.user) == null ? void 0 : _e.id,
|
|
247
|
+
socketUrl: this._info.config.url,
|
|
248
|
+
location: window.location.host,
|
|
249
|
+
// onConnect: () => {
|
|
250
|
+
// console.log('waz')
|
|
251
|
+
// },
|
|
252
|
+
onChange: this._handleMessage.bind(this),
|
|
253
|
+
sessionId: this._sessionId,
|
|
254
|
+
usersName: (_f = _context.user) == null ? void 0 : _f.name,
|
|
255
|
+
route: window.location.pathname,
|
|
256
|
+
onDisconnect: this._handleDisconnect.bind(this)
|
|
104
257
|
};
|
|
258
|
+
if (this._socket) {
|
|
259
|
+
this.destroy();
|
|
260
|
+
}
|
|
261
|
+
this._socket = connect(_context.appKey, config);
|
|
262
|
+
this._updateStatus("connected");
|
|
263
|
+
if (environment_default.isDevelopment) {
|
|
264
|
+
console.log("Socket connection established:", {
|
|
265
|
+
appKey: _context.appKey,
|
|
266
|
+
userId: (_g = _context.user) == null ? void 0 : _g.id,
|
|
267
|
+
sessionId: this._sessionId,
|
|
268
|
+
url: this._info.config.url
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
return true;
|
|
105
272
|
} catch (error) {
|
|
273
|
+
this._updateStatus("failed");
|
|
274
|
+
console.error("Socket connection failed:", error);
|
|
106
275
|
throw new Error(`Socket connection failed: ${error.message}`);
|
|
107
276
|
}
|
|
108
277
|
}
|
|
109
|
-
|
|
110
|
-
|
|
278
|
+
send(type, data, opts = {}) {
|
|
279
|
+
var _a, _b;
|
|
111
280
|
this._requireReady();
|
|
112
|
-
if (!this._socket
|
|
281
|
+
if (!this._socket) {
|
|
113
282
|
throw new Error("Socket is not connected");
|
|
114
283
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
this._handlers.set(type, /* @__PURE__ */ new Set());
|
|
121
|
-
}
|
|
122
|
-
this._handlers.get(type).add(handler);
|
|
123
|
-
return () => {
|
|
124
|
-
const handlers = this._handlers.get(type);
|
|
125
|
-
if (handlers) {
|
|
126
|
-
handlers.delete(handler);
|
|
127
|
-
if (handlers.size === 0) {
|
|
128
|
-
this._handlers.delete(type);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
284
|
+
const payload = {
|
|
285
|
+
sessionId: this._sessionId,
|
|
286
|
+
userId: (_a = this._context.user) == null ? void 0 : _a.id,
|
|
287
|
+
usersName: (_b = this._context.user) == null ? void 0 : _b.name,
|
|
288
|
+
...data
|
|
131
289
|
};
|
|
290
|
+
send.call(
|
|
291
|
+
this._socket,
|
|
292
|
+
type,
|
|
293
|
+
opts.useDeepStringify ? deepStringify(payload) : payload
|
|
294
|
+
);
|
|
132
295
|
}
|
|
133
|
-
|
|
134
|
-
return this.subscribe(type, handler);
|
|
135
|
-
}
|
|
136
|
-
// Private methods
|
|
137
|
-
_handleMessage(rawData) {
|
|
296
|
+
_handleMessage(event, data) {
|
|
138
297
|
try {
|
|
139
|
-
const
|
|
140
|
-
|
|
298
|
+
const d = isString(data) ? deepDestringify(JSON.parse(data)) : data;
|
|
299
|
+
if (this._sessionId === d.sessionId) {
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
const handlers = this._handlers.get(event);
|
|
141
303
|
if (handlers) {
|
|
142
|
-
handlers.forEach((handler) => handler(
|
|
304
|
+
handlers.forEach((handler) => handler(d));
|
|
305
|
+
}
|
|
306
|
+
switch (event) {
|
|
307
|
+
case "change":
|
|
308
|
+
this._handleChangeEvent(d);
|
|
309
|
+
break;
|
|
310
|
+
case "clients":
|
|
311
|
+
this._handleClientsEvent(d);
|
|
312
|
+
break;
|
|
313
|
+
case "route":
|
|
314
|
+
this._handleRouteEvent(d);
|
|
315
|
+
break;
|
|
316
|
+
default:
|
|
317
|
+
break;
|
|
143
318
|
}
|
|
144
319
|
} catch (error) {
|
|
145
320
|
this._setError(new Error(`Failed to handle message: ${error.message}`));
|
|
146
321
|
}
|
|
147
322
|
}
|
|
323
|
+
_handleChangeEvent(data) {
|
|
324
|
+
const { type, changes, version } = data;
|
|
325
|
+
if (version) {
|
|
326
|
+
this._context.state.version = version;
|
|
327
|
+
}
|
|
328
|
+
if (changes) {
|
|
329
|
+
window.requestAnimationFrame(async () => {
|
|
330
|
+
await this._context.state.setPathCollection(changes, {
|
|
331
|
+
preventReplace: type === "canvas",
|
|
332
|
+
preventUpdate: true,
|
|
333
|
+
fromSocket: true,
|
|
334
|
+
userId: data.userId,
|
|
335
|
+
changes
|
|
336
|
+
});
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
_handleClientsEvent(data) {
|
|
341
|
+
const { root } = this._context.state;
|
|
342
|
+
root.replace(
|
|
343
|
+
{ clients: data },
|
|
344
|
+
{
|
|
345
|
+
fromSocket: true,
|
|
346
|
+
preventUpdate: true
|
|
347
|
+
}
|
|
348
|
+
);
|
|
349
|
+
}
|
|
350
|
+
_handleRouteEvent(data) {
|
|
351
|
+
const { element } = this._context;
|
|
352
|
+
const { state } = this._context;
|
|
353
|
+
if (data.userId && data.type === "routeChanged") {
|
|
354
|
+
const isModalOpen = this.getWindow("modal");
|
|
355
|
+
const isFollowing = state.followingUser === data.userId;
|
|
356
|
+
const isRouteSyncEnabled = element.getUserSettings("presentMode") && data.userId === state.userId;
|
|
357
|
+
if ((isFollowing || isRouteSyncEnabled) && !isModalOpen) {
|
|
358
|
+
router(
|
|
359
|
+
data.route,
|
|
360
|
+
element.__ref.root,
|
|
361
|
+
{},
|
|
362
|
+
{
|
|
363
|
+
fromSocket: true,
|
|
364
|
+
updateStateOptions: {
|
|
365
|
+
fromSocket: true,
|
|
366
|
+
preventStateUpdateListener: 1
|
|
367
|
+
// !isModalRoute(data.route, element)
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
);
|
|
371
|
+
}
|
|
372
|
+
} else if (data.reload) {
|
|
373
|
+
window.location.reload();
|
|
374
|
+
} else if (data.route && data.type === "routeForced") {
|
|
375
|
+
router(
|
|
376
|
+
data.route,
|
|
377
|
+
element.__ref.root,
|
|
378
|
+
{},
|
|
379
|
+
{
|
|
380
|
+
fromSocket: true,
|
|
381
|
+
updateStateOptions: {
|
|
382
|
+
fromSocket: true
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
);
|
|
386
|
+
} else if (data.componentKey) {
|
|
387
|
+
if (!element.getData("components")[data.componentKey]) {
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
element.activateSelected(data.componentKey);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
_handleDisconnect() {
|
|
394
|
+
this._updateStatus("disconnected");
|
|
395
|
+
this._handleReconnect();
|
|
396
|
+
}
|
|
148
397
|
_handleReconnect() {
|
|
149
398
|
if (this._reconnectAttempts < this._maxReconnectAttempts) {
|
|
150
399
|
this._reconnectAttempts++;
|
|
151
400
|
this._updateStatus("reconnecting");
|
|
152
401
|
setTimeout(() => {
|
|
153
|
-
|
|
402
|
+
try {
|
|
403
|
+
const connected = this.connect();
|
|
404
|
+
if (connected) {
|
|
405
|
+
this._reconnectAttempts = 0;
|
|
406
|
+
} else {
|
|
407
|
+
this._handleReconnect();
|
|
408
|
+
}
|
|
409
|
+
} catch (error) {
|
|
410
|
+
console.error("Reconnection failed:", error);
|
|
411
|
+
this._handleReconnect();
|
|
412
|
+
}
|
|
154
413
|
}, this._reconnectDelay * this._reconnectAttempts);
|
|
155
414
|
} else {
|
|
156
415
|
this._updateStatus("failed");
|
|
@@ -166,18 +425,23 @@ var SocketService = class extends BaseService {
|
|
|
166
425
|
}
|
|
167
426
|
};
|
|
168
427
|
}
|
|
169
|
-
// Cleanup
|
|
170
428
|
destroy() {
|
|
171
429
|
if (this._socket) {
|
|
172
|
-
this._socket
|
|
430
|
+
disconnect.call(this._socket);
|
|
173
431
|
this._socket = null;
|
|
174
432
|
}
|
|
175
433
|
this._handlers.clear();
|
|
176
434
|
this._setReady(false);
|
|
177
435
|
}
|
|
436
|
+
reconnect() {
|
|
437
|
+
this.destroy();
|
|
438
|
+
this.connect();
|
|
439
|
+
}
|
|
178
440
|
_checkRequiredContext() {
|
|
179
|
-
|
|
180
|
-
return Boolean(
|
|
441
|
+
var _a, _b;
|
|
442
|
+
return Boolean(
|
|
443
|
+
((_a = this._context) == null ? void 0 : _a.appKey) && ((_b = this._context) == null ? void 0 : _b.authToken) && this._socket
|
|
444
|
+
);
|
|
181
445
|
}
|
|
182
446
|
isReady() {
|
|
183
447
|
if (this._checkRequiredContext()) {
|
|
@@ -189,3 +453,4 @@ var SocketService = class extends BaseService {
|
|
|
189
453
|
export {
|
|
190
454
|
SocketService
|
|
191
455
|
};
|
|
456
|
+
// @preserve-env
|
|
@@ -63,12 +63,8 @@ var CONFIG = {
|
|
|
63
63
|
// Environment-specific configurations
|
|
64
64
|
local: {
|
|
65
65
|
// local
|
|
66
|
-
baseUrl: "http://localhost:8080",
|
|
67
|
-
// For symstory api
|
|
68
66
|
socketUrl: "http://localhost:8080",
|
|
69
67
|
// For socket api
|
|
70
|
-
routerUrl: "http://localhost:8080",
|
|
71
|
-
// For router api
|
|
72
68
|
apiUrl: "http://localhost:8080",
|
|
73
69
|
// For server api
|
|
74
70
|
basedEnv: "development",
|
|
@@ -86,29 +82,25 @@ var CONFIG = {
|
|
|
86
82
|
}
|
|
87
83
|
},
|
|
88
84
|
development: {
|
|
89
|
-
baseUrl: "https://dev.api.symbols.app",
|
|
90
85
|
socketUrl: "https://dev.api.symbols.app",
|
|
91
|
-
routerUrl: "https://dev.api.symbols.app",
|
|
92
86
|
apiUrl: "https://dev.api.symbols.app",
|
|
93
|
-
basedEnv: "development",
|
|
94
|
-
basedProject: "platform-v2-sm",
|
|
95
|
-
basedOrg: "symbols",
|
|
96
87
|
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
97
88
|
},
|
|
98
89
|
testing: {
|
|
99
|
-
baseUrl: "https://test.api.symbols.app",
|
|
100
90
|
socketUrl: "https://test.api.symbols.app",
|
|
101
|
-
routerUrl: "https://test.api.symbols.app",
|
|
102
91
|
apiUrl: "https://test.api.symbols.app",
|
|
103
92
|
basedEnv: "testing",
|
|
104
93
|
basedProject: "platform-v2-sm",
|
|
105
94
|
basedOrg: "symbols",
|
|
106
95
|
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
107
96
|
},
|
|
97
|
+
upcoming: {
|
|
98
|
+
socketUrl: "https://upcoming.api.symbols.app",
|
|
99
|
+
apiUrl: "https://upcoming.api.symbols.app",
|
|
100
|
+
githubClientId: "Ov23liWF7NvdZ056RV5J"
|
|
101
|
+
},
|
|
108
102
|
staging: {
|
|
109
|
-
baseUrl: "https://staging.api.symbols.app",
|
|
110
103
|
socketUrl: "https://staging.api.symbols.app",
|
|
111
|
-
routerUrl: "https://staging.api.symbols.app",
|
|
112
104
|
apiUrl: "https://staging.api.symbols.app",
|
|
113
105
|
basedEnv: "staging",
|
|
114
106
|
basedProject: "platform-v2-sm",
|
|
@@ -116,9 +108,7 @@ var CONFIG = {
|
|
|
116
108
|
githubClientId: "Ov23ligwZDQVD0VfuWNa"
|
|
117
109
|
},
|
|
118
110
|
production: {
|
|
119
|
-
baseUrl: "https://api.symbols.app",
|
|
120
111
|
socketUrl: "https://api.symbols.app",
|
|
121
|
-
routerUrl: "https://api.symbols.app",
|
|
122
112
|
apiUrl: "https://api.symbols.app",
|
|
123
113
|
basedEnv: "production",
|
|
124
114
|
basedProject: "platform-v2-sm",
|
|
@@ -139,9 +129,7 @@ var getConfig = () => {
|
|
|
139
129
|
const envConfig = { ...CONFIG.common, ...CONFIG[env] };
|
|
140
130
|
const finalConfig = {
|
|
141
131
|
...envConfig,
|
|
142
|
-
baseUrl: process.env.SYMBOLS_APP_BASE_URL || envConfig.baseUrl,
|
|
143
132
|
socketUrl: process.env.SYMBOLS_APP_SOCKET_URL || envConfig.socketUrl,
|
|
144
|
-
routerUrl: process.env.SYMBOLS_APP_ROUTER_URL || envConfig.routerUrl,
|
|
145
133
|
apiUrl: process.env.SYMBOLS_APP_API_URL || envConfig.apiUrl,
|
|
146
134
|
basedEnv: process.env.SYMBOLS_APP_BASED_ENV || envConfig.basedEnv,
|
|
147
135
|
basedProject: process.env.SYMBOLS_APP_BASED_PROJECT || envConfig.basedProject,
|
|
@@ -154,12 +142,8 @@ var getConfig = () => {
|
|
|
154
142
|
// Store all environment variables for potential future use
|
|
155
143
|
};
|
|
156
144
|
const requiredFields = [
|
|
157
|
-
"baseUrl",
|
|
158
145
|
"socketUrl",
|
|
159
146
|
"apiUrl",
|
|
160
|
-
"basedEnv",
|
|
161
|
-
"basedProject",
|
|
162
|
-
"basedOrg",
|
|
163
147
|
"githubClientId",
|
|
164
148
|
"googleClientId"
|
|
165
149
|
];
|
|
@@ -188,7 +172,7 @@ var environment_default = getConfig();
|
|
|
188
172
|
|
|
189
173
|
// src/utils/symstoryClient.js
|
|
190
174
|
var DEFAULT_OPTIONS = {
|
|
191
|
-
|
|
175
|
+
apiUrl: environment_default.apiUrl
|
|
192
176
|
};
|
|
193
177
|
var SymstoryClient = class {
|
|
194
178
|
/**
|
|
@@ -215,7 +199,7 @@ var SymstoryClient = class {
|
|
|
215
199
|
* @returns {Promise<any>} - The response data.
|
|
216
200
|
*/
|
|
217
201
|
async request(path = "", options = {}) {
|
|
218
|
-
const url = `${this.options.
|
|
202
|
+
const url = `${this.options.apiUrl}/symstory/${this.appKey}${path}`;
|
|
219
203
|
const response = await fetch(url, {
|
|
220
204
|
...options,
|
|
221
205
|
headers: { ...this.headers, ...options.headers }
|
|
@@ -369,7 +353,7 @@ var SymstoryClient = class {
|
|
|
369
353
|
* @param {string} [options.branch='main'] - The branch name. (Only if version number is provided)
|
|
370
354
|
* @returns {Promise<any>} - The response data.
|
|
371
355
|
*/
|
|
372
|
-
publishVersion(version2
|
|
356
|
+
publishVersion(version2) {
|
|
373
357
|
return this.request("/publish", {
|
|
374
358
|
method: "POST",
|
|
375
359
|
body: JSON.stringify({ version: version2 })
|
|
@@ -385,11 +369,11 @@ var SymstoryClient = class {
|
|
|
385
369
|
*/
|
|
386
370
|
getChanges({ versionId, versionValue, branch } = {}) {
|
|
387
371
|
return this.request(
|
|
388
|
-
|
|
372
|
+
`/changes?${new URLSearchParams({
|
|
389
373
|
...versionId ? { versionId } : {},
|
|
390
374
|
...versionValue ? { versionValue } : {},
|
|
391
375
|
...branch ? { branch } : {}
|
|
392
|
-
}).toString()
|
|
376
|
+
}).toString()}`,
|
|
393
377
|
{}
|
|
394
378
|
);
|
|
395
379
|
}
|