@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.
Files changed (65) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/config/environment.js +5 -21
  3. package/dist/cjs/index.js +6 -26
  4. package/dist/cjs/services/AIService.js +3 -3
  5. package/dist/cjs/services/CollabService.js +420 -0
  6. package/dist/cjs/services/CoreService.js +651 -107
  7. package/dist/cjs/services/SocketService.js +207 -59
  8. package/dist/cjs/services/index.js +5 -13
  9. package/dist/cjs/state/RootStateManager.js +86 -0
  10. package/dist/cjs/state/rootEventBus.js +65 -0
  11. package/dist/cjs/utils/CollabClient.js +157 -0
  12. package/dist/cjs/utils/TokenManager.js +62 -27
  13. package/dist/cjs/utils/jsonDiff.js +103 -0
  14. package/dist/cjs/utils/services.js +129 -88
  15. package/dist/cjs/utils/symstoryClient.js +5 -5
  16. package/dist/esm/config/environment.js +5 -21
  17. package/dist/esm/index.js +20459 -9286
  18. package/dist/esm/services/AIService.js +3 -3
  19. package/dist/esm/services/BasedService.js +5 -21
  20. package/dist/esm/services/CollabService.js +18028 -0
  21. package/dist/esm/services/CoreService.js +718 -155
  22. package/dist/esm/services/SocketService.js +323 -58
  23. package/dist/esm/services/SymstoryService.js +10 -26
  24. package/dist/esm/services/index.js +20305 -9158
  25. package/dist/esm/state/RootStateManager.js +102 -0
  26. package/dist/esm/state/rootEventBus.js +47 -0
  27. package/dist/esm/utils/CollabClient.js +17483 -0
  28. package/dist/esm/utils/TokenManager.js +62 -27
  29. package/dist/esm/utils/jsonDiff.js +6096 -0
  30. package/dist/esm/utils/services.js +129 -88
  31. package/dist/esm/utils/symstoryClient.js +10 -26
  32. package/dist/node/config/environment.js +5 -21
  33. package/dist/node/index.js +10 -34
  34. package/dist/node/services/AIService.js +3 -3
  35. package/dist/node/services/CollabService.js +401 -0
  36. package/dist/node/services/CoreService.js +651 -107
  37. package/dist/node/services/SocketService.js +197 -59
  38. package/dist/node/services/index.js +5 -13
  39. package/dist/node/state/RootStateManager.js +57 -0
  40. package/dist/node/state/rootEventBus.js +46 -0
  41. package/dist/node/utils/CollabClient.js +128 -0
  42. package/dist/node/utils/TokenManager.js +62 -27
  43. package/dist/node/utils/jsonDiff.js +74 -0
  44. package/dist/node/utils/services.js +129 -88
  45. package/dist/node/utils/symstoryClient.js +5 -5
  46. package/package.json +12 -6
  47. package/src/config/environment.js +5 -19
  48. package/src/index.js +9 -31
  49. package/src/services/AIService.js +3 -3
  50. package/src/services/BasedService.js +1 -0
  51. package/src/services/CollabService.js +491 -0
  52. package/src/services/CoreService.js +715 -110
  53. package/src/services/SocketService.js +227 -59
  54. package/src/services/index.js +6 -13
  55. package/src/state/RootStateManager.js +71 -0
  56. package/src/state/rootEventBus.js +48 -0
  57. package/src/utils/CollabClient.js +161 -0
  58. package/src/utils/TokenManager.js +68 -30
  59. package/src/utils/jsonDiff.js +109 -0
  60. package/src/utils/services.js +140 -88
  61. package/src/utils/symstoryClient.js +5 -5
  62. package/dist/cjs/services/SocketIOService.js +0 -307
  63. package/dist/esm/services/SocketIOService.js +0 -470
  64. package/dist/node/services/SocketIOService.js +0 -278
  65. 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
- async init({ context, options }) {
209
+ init() {
61
210
  try {
62
- this._context = context;
63
- this._options = options;
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
- const { socketUrl, authToken } = this._context.socket || {};
86
- this._socket = new window.WebSocket(socketUrl);
87
- this._socket.onopen = () => {
88
- this._reconnectAttempts = 0;
89
- this._updateStatus("connected");
90
- if (authToken) {
91
- this.send("auth", { token: authToken });
92
- }
93
- };
94
- this._socket.onclose = () => {
95
- this._updateStatus("disconnected");
96
- this._handleReconnect();
97
- };
98
- this._socket.onerror = (error) => {
99
- this._updateStatus("error");
100
- this._setError(error);
101
- };
102
- this._socket.onmessage = (event) => {
103
- this._handleMessage(event.data);
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
- // Send message to socket server
110
- send(type, data) {
278
+ send(type, data, opts = {}) {
279
+ var _a, _b;
111
280
  this._requireReady();
112
- if (!this._socket || this._socket.readyState !== window.WebSocket.OPEN) {
281
+ if (!this._socket) {
113
282
  throw new Error("Socket is not connected");
114
283
  }
115
- this._socket.send(JSON.stringify({ type, data }));
116
- }
117
- // Subscribe to socket events
118
- subscribe(type, handler) {
119
- if (!this._handlers.has(type)) {
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
- subscribeChannel(type, handler) {
134
- return this.subscribe(type, handler);
135
- }
136
- // Private methods
137
- _handleMessage(rawData) {
296
+ _handleMessage(event, data) {
138
297
  try {
139
- const { type, data } = JSON.parse(rawData);
140
- const handlers = this._handlers.get(type);
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(data));
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
- this.connect();
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.close();
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
- const { socket } = this._context;
180
- return Boolean((socket == null ? void 0 : socket.socketUrl) && this._socket);
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
- baseUrl: environment_default.baseUrl
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.baseUrl}/symstory/${this.appKey}${path}`;
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, { branch = "main" } = {}) {
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
- "/changes?" + new URLSearchParams({
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
  }