@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
|
@@ -153,7 +153,28 @@ class TokenManager {
|
|
|
153
153
|
return true;
|
|
154
154
|
}
|
|
155
155
|
const now = Date.now();
|
|
156
|
-
|
|
156
|
+
const isValid = now < this.tokens.expiresAt - this.config.refreshBuffer;
|
|
157
|
+
if (!isValid) {
|
|
158
|
+
console.log("[TokenManager] Access token is expired or near expiry:", {
|
|
159
|
+
now: new Date(now).toISOString(),
|
|
160
|
+
expiresAt: new Date(this.tokens.expiresAt).toISOString(),
|
|
161
|
+
refreshBuffer: this.config.refreshBuffer
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return isValid;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Check if access token exists and is not expired (without refresh buffer)
|
|
168
|
+
*/
|
|
169
|
+
isAccessTokenActuallyValid() {
|
|
170
|
+
if (!this.tokens.accessToken) {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
if (!this.tokens.expiresAt) {
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
const now = Date.now();
|
|
177
|
+
return now < this.tokens.expiresAt;
|
|
157
178
|
}
|
|
158
179
|
/**
|
|
159
180
|
* Check if tokens exist (regardless of expiry)
|
|
@@ -279,40 +300,54 @@ class TokenManager {
|
|
|
279
300
|
* Save tokens to storage
|
|
280
301
|
*/
|
|
281
302
|
saveTokens() {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
303
|
+
try {
|
|
304
|
+
const { storage } = this;
|
|
305
|
+
const keys = this.storageKeys;
|
|
306
|
+
if (this.tokens.accessToken) {
|
|
307
|
+
storage.setItem(keys.accessToken, this.tokens.accessToken);
|
|
308
|
+
}
|
|
309
|
+
if (this.tokens.refreshToken) {
|
|
310
|
+
storage.setItem(keys.refreshToken, this.tokens.refreshToken);
|
|
311
|
+
}
|
|
312
|
+
if (this.tokens.expiresAt) {
|
|
313
|
+
storage.setItem(keys.expiresAt, this.tokens.expiresAt.toString());
|
|
314
|
+
}
|
|
315
|
+
if (this.tokens.expiresIn) {
|
|
316
|
+
storage.setItem(keys.expiresIn, this.tokens.expiresIn.toString());
|
|
317
|
+
}
|
|
318
|
+
} catch (error) {
|
|
319
|
+
console.error("[TokenManager] Error saving tokens to storage:", error);
|
|
295
320
|
}
|
|
296
321
|
}
|
|
297
322
|
/**
|
|
298
323
|
* Load tokens from storage
|
|
299
324
|
*/
|
|
300
325
|
loadTokens() {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
326
|
+
try {
|
|
327
|
+
const { storage } = this;
|
|
328
|
+
const keys = this.storageKeys;
|
|
329
|
+
const accessToken = storage.getItem(keys.accessToken);
|
|
330
|
+
const refreshToken = storage.getItem(keys.refreshToken);
|
|
331
|
+
const expiresAt = storage.getItem(keys.expiresAt);
|
|
332
|
+
const expiresIn = storage.getItem(keys.expiresIn);
|
|
333
|
+
if (accessToken) {
|
|
334
|
+
this.tokens = {
|
|
335
|
+
accessToken,
|
|
336
|
+
refreshToken,
|
|
337
|
+
expiresAt: expiresAt ? parseInt(expiresAt, 10) : null,
|
|
338
|
+
expiresIn: expiresIn ? parseInt(expiresIn, 10) : null,
|
|
339
|
+
tokenType: "Bearer"
|
|
340
|
+
};
|
|
341
|
+
this.scheduleRefresh();
|
|
342
|
+
}
|
|
343
|
+
} catch (error) {
|
|
344
|
+
console.error("[TokenManager] Error loading tokens from storage:", error);
|
|
308
345
|
this.tokens = {
|
|
309
|
-
accessToken,
|
|
310
|
-
refreshToken,
|
|
311
|
-
expiresAt:
|
|
312
|
-
expiresIn:
|
|
313
|
-
tokenType: "Bearer"
|
|
346
|
+
accessToken: null,
|
|
347
|
+
refreshToken: null,
|
|
348
|
+
expiresAt: null,
|
|
349
|
+
expiresIn: null
|
|
314
350
|
};
|
|
315
|
-
this.scheduleRefresh();
|
|
316
351
|
}
|
|
317
352
|
}
|
|
318
353
|
/**
|
|
@@ -0,0 +1,103 @@
|
|
|
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 jsonDiff_exports = {};
|
|
29
|
+
__export(jsonDiff_exports, {
|
|
30
|
+
applyOpsToJson: () => applyOpsToJson,
|
|
31
|
+
diffJson: () => diffJson
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(jsonDiff_exports);
|
|
34
|
+
var Y = __toESM(require("yjs"), 1);
|
|
35
|
+
function isPlainObject(o) {
|
|
36
|
+
return o && typeof o === "object" && !Array.isArray(o);
|
|
37
|
+
}
|
|
38
|
+
function deepEqual(a, b) {
|
|
39
|
+
try {
|
|
40
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
41
|
+
} catch (err) {
|
|
42
|
+
console.warn("deepEqual error", err);
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function getRootMap(ydoc) {
|
|
47
|
+
return ydoc.getMap("root");
|
|
48
|
+
}
|
|
49
|
+
function diffJson(prev, next, prefix = []) {
|
|
50
|
+
const ops = [];
|
|
51
|
+
const _prefix = Array.isArray(prefix) ? prefix : [];
|
|
52
|
+
for (const key in prev) {
|
|
53
|
+
if (Object.hasOwn(prev, key) && !(key in next)) {
|
|
54
|
+
ops.push({ action: "del", path: [..._prefix, key] });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
for (const key in next) {
|
|
58
|
+
if (Object.hasOwn(next, key)) {
|
|
59
|
+
const pVal = prev == null ? void 0 : prev[key];
|
|
60
|
+
const nVal = next[key];
|
|
61
|
+
if (isPlainObject(pVal) && isPlainObject(nVal)) {
|
|
62
|
+
ops.push(...diffJson(pVal, nVal, [..._prefix, key]));
|
|
63
|
+
} else if (!deepEqual(pVal, nVal)) {
|
|
64
|
+
ops.push({ action: "set", path: [..._prefix, key], value: nVal });
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return ops;
|
|
69
|
+
}
|
|
70
|
+
function applyOpsToJson(ops, ydoc) {
|
|
71
|
+
if (!ydoc || !Array.isArray(ops) || !ops.length) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
ydoc.transact(() => {
|
|
75
|
+
const root = getRootMap(ydoc);
|
|
76
|
+
ops.forEach((op) => {
|
|
77
|
+
const { action, path = [], value } = op || {};
|
|
78
|
+
if (!path.length) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
let target = root;
|
|
82
|
+
for (let i = 0; i < path.length - 1; i++) {
|
|
83
|
+
const key = path[i];
|
|
84
|
+
let next = target.get(key);
|
|
85
|
+
if (!(next instanceof Y.Map)) {
|
|
86
|
+
const fresh = new Y.Map();
|
|
87
|
+
if (isPlainObject(next)) {
|
|
88
|
+
Object.entries(next).forEach(([k, v]) => fresh.set(k, v));
|
|
89
|
+
}
|
|
90
|
+
target.set(key, fresh);
|
|
91
|
+
next = fresh;
|
|
92
|
+
}
|
|
93
|
+
target = next;
|
|
94
|
+
}
|
|
95
|
+
const last = path[path.length - 1];
|
|
96
|
+
if (action === "set") {
|
|
97
|
+
target.set(last, value);
|
|
98
|
+
} else if (action === "del") {
|
|
99
|
+
target.delete(last);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}, "remote");
|
|
103
|
+
}
|
|
@@ -41,92 +41,133 @@ const SERVICE_METHODS = {
|
|
|
41
41
|
updateProjectTier: "auth",
|
|
42
42
|
subscribeToAuthChanges: "auth",
|
|
43
43
|
getStoredAuthState: "core",
|
|
44
|
-
//
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
44
|
+
// Collab service methods
|
|
45
|
+
connect: "collab",
|
|
46
|
+
disconnect: "collab",
|
|
47
|
+
isConnected: "collab",
|
|
48
|
+
updateData: "collab",
|
|
49
|
+
addItem: "collab",
|
|
50
|
+
addMultipleItems: "collab",
|
|
51
|
+
updateItem: "collab",
|
|
52
|
+
deleteItem: "collab",
|
|
53
|
+
undo: "collab",
|
|
54
|
+
redo: "collab",
|
|
55
|
+
checkpoint: "collab",
|
|
56
|
+
// Realtime collaboration helper methods
|
|
57
|
+
sendCursor: "collab",
|
|
58
|
+
sendPresence: "collab",
|
|
59
|
+
toggleLive: "collab",
|
|
60
|
+
// Core service methods (new - replaces most based/auth functionality)
|
|
61
|
+
// Auth methods
|
|
62
|
+
register: "core",
|
|
63
|
+
login: "core",
|
|
64
|
+
logout: "core",
|
|
65
|
+
refreshToken: "core",
|
|
66
|
+
googleAuth: "core",
|
|
67
|
+
googleAuthCallback: "core",
|
|
68
|
+
githubAuth: "core",
|
|
69
|
+
requestPasswordReset: "core",
|
|
70
|
+
confirmPasswordReset: "core",
|
|
71
|
+
confirmRegistration: "core",
|
|
72
|
+
requestPasswordChange: "core",
|
|
73
|
+
confirmPasswordChange: "core",
|
|
74
|
+
getMe: "core",
|
|
75
|
+
// User methods
|
|
76
|
+
getUserProfile: "core",
|
|
77
|
+
updateUserProfile: "core",
|
|
78
|
+
getUserProjects: "core",
|
|
79
|
+
getUser: "core",
|
|
80
|
+
getUserByEmail: "core",
|
|
81
|
+
// Project methods
|
|
82
|
+
createProject: "core",
|
|
83
|
+
getProjects: "core",
|
|
84
|
+
getProject: "core",
|
|
85
|
+
getProjectByKey: "core",
|
|
86
|
+
getPublicProject: "core",
|
|
87
|
+
listPublicProjects: "core",
|
|
88
|
+
listProjects: "core",
|
|
89
|
+
updateProject: "core",
|
|
90
|
+
updateProjectComponents: "core",
|
|
91
|
+
updateProjectSettings: "core",
|
|
92
|
+
updateProjectName: "core",
|
|
93
|
+
updateProjectPackage: "core",
|
|
94
|
+
duplicateProject: "core",
|
|
95
|
+
removeProject: "core",
|
|
96
|
+
checkProjectKeyAvailability: "core",
|
|
97
|
+
// Project member methods
|
|
98
|
+
getProjectMembers: "core",
|
|
99
|
+
inviteMember: "core",
|
|
100
|
+
acceptInvite: "core",
|
|
101
|
+
updateMemberRole: "core",
|
|
102
|
+
removeMember: "core",
|
|
103
|
+
// Project library methods
|
|
104
|
+
getAvailableLibraries: "core",
|
|
105
|
+
getProjectLibraries: "core",
|
|
106
|
+
addProjectLibraries: "core",
|
|
107
|
+
removeProjectLibraries: "core",
|
|
108
|
+
// File methods
|
|
109
|
+
uploadFile: "core",
|
|
110
|
+
updateProjectIcon: "core",
|
|
111
|
+
// Payment methods
|
|
112
|
+
checkout: "core",
|
|
113
|
+
getSubscriptionStatus: "core",
|
|
114
|
+
// DNS methods
|
|
115
|
+
createDnsRecord: "core",
|
|
116
|
+
getDnsRecord: "core",
|
|
117
|
+
removeDnsRecord: "core",
|
|
118
|
+
setProjectDomains: "core",
|
|
119
|
+
// Utility methods
|
|
120
|
+
getHealthStatus: "core",
|
|
121
|
+
getTokenDebugInfo: "core",
|
|
122
|
+
// Project Data methods (Symstory replacement)
|
|
123
|
+
applyProjectChanges: "core",
|
|
124
|
+
getProjectData: "core",
|
|
125
|
+
getProjectVersions: "core",
|
|
126
|
+
restoreProjectVersion: "core",
|
|
127
|
+
updateProjectItem: "core",
|
|
128
|
+
deleteProjectItem: "core",
|
|
129
|
+
setProjectValue: "core",
|
|
130
|
+
addProjectItems: "core",
|
|
131
|
+
getProjectItemByPath: "core",
|
|
132
|
+
// Pull Request methods
|
|
133
|
+
createPullRequest: "core",
|
|
134
|
+
listPullRequests: "core",
|
|
135
|
+
getPullRequest: "core",
|
|
136
|
+
reviewPullRequest: "core",
|
|
137
|
+
addPullRequestComment: "core",
|
|
138
|
+
mergePullRequest: "core",
|
|
139
|
+
getPullRequestDiff: "core",
|
|
140
|
+
createPullRequestWithValidation: "core",
|
|
141
|
+
approvePullRequest: "core",
|
|
142
|
+
requestPullRequestChanges: "core",
|
|
143
|
+
getOpenPullRequests: "core",
|
|
144
|
+
getClosedPullRequests: "core",
|
|
145
|
+
getMergedPullRequests: "core",
|
|
146
|
+
isPullRequestMergeable: "core",
|
|
147
|
+
getPullRequestStatusSummary: "core",
|
|
148
|
+
// Branch Management methods
|
|
149
|
+
listBranches: "core",
|
|
150
|
+
createBranch: "core",
|
|
151
|
+
deleteBranch: "core",
|
|
152
|
+
renameBranch: "core",
|
|
153
|
+
getBranchChanges: "core",
|
|
154
|
+
mergeBranch: "core",
|
|
155
|
+
resetBranch: "core",
|
|
156
|
+
publishVersion: "core",
|
|
157
|
+
createBranchWithValidation: "core",
|
|
158
|
+
branchExists: "core",
|
|
159
|
+
previewMerge: "core",
|
|
160
|
+
commitMerge: "core",
|
|
161
|
+
createFeatureBranch: "core",
|
|
162
|
+
createHotfixBranch: "core",
|
|
163
|
+
getBranchStatus: "core",
|
|
164
|
+
deleteBranchSafely: "core",
|
|
165
|
+
// Admin methods
|
|
166
|
+
getAdminUsers: "core",
|
|
167
|
+
assignProjectsToUser: "core",
|
|
168
|
+
searchAdminUsers: "core",
|
|
169
|
+
getAdminUsersByEmails: "core",
|
|
170
|
+
getAdminUsersByIds: "core",
|
|
171
|
+
assignSpecificProjectsToUser: "core",
|
|
172
|
+
assignAllProjectsToUser: "core"
|
|
132
173
|
};
|
|
@@ -32,7 +32,7 @@ __export(symstoryClient_exports, {
|
|
|
32
32
|
module.exports = __toCommonJS(symstoryClient_exports);
|
|
33
33
|
var import_environment = __toESM(require("../config/environment.js"), 1);
|
|
34
34
|
const DEFAULT_OPTIONS = {
|
|
35
|
-
|
|
35
|
+
apiUrl: import_environment.default.apiUrl
|
|
36
36
|
};
|
|
37
37
|
class SymstoryClient {
|
|
38
38
|
/**
|
|
@@ -59,7 +59,7 @@ class SymstoryClient {
|
|
|
59
59
|
* @returns {Promise<any>} - The response data.
|
|
60
60
|
*/
|
|
61
61
|
async request(path = "", options = {}) {
|
|
62
|
-
const url = `${this.options.
|
|
62
|
+
const url = `${this.options.apiUrl}/symstory/${this.appKey}${path}`;
|
|
63
63
|
const response = await fetch(url, {
|
|
64
64
|
...options,
|
|
65
65
|
headers: { ...this.headers, ...options.headers }
|
|
@@ -213,7 +213,7 @@ class SymstoryClient {
|
|
|
213
213
|
* @param {string} [options.branch='main'] - The branch name. (Only if version number is provided)
|
|
214
214
|
* @returns {Promise<any>} - The response data.
|
|
215
215
|
*/
|
|
216
|
-
publishVersion(version
|
|
216
|
+
publishVersion(version) {
|
|
217
217
|
return this.request("/publish", {
|
|
218
218
|
method: "POST",
|
|
219
219
|
body: JSON.stringify({ version })
|
|
@@ -229,11 +229,11 @@ class SymstoryClient {
|
|
|
229
229
|
*/
|
|
230
230
|
getChanges({ versionId, versionValue, branch } = {}) {
|
|
231
231
|
return this.request(
|
|
232
|
-
|
|
232
|
+
`/changes?${new URLSearchParams({
|
|
233
233
|
...versionId ? { versionId } : {},
|
|
234
234
|
...versionValue ? { versionValue } : {},
|
|
235
235
|
...branch ? { branch } : {}
|
|
236
|
-
}).toString()
|
|
236
|
+
}).toString()}`,
|
|
237
237
|
{}
|
|
238
238
|
);
|
|
239
239
|
}
|
|
@@ -14,12 +14,8 @@ var CONFIG = {
|
|
|
14
14
|
// Environment-specific configurations
|
|
15
15
|
local: {
|
|
16
16
|
// local
|
|
17
|
-
baseUrl: "http://localhost:8080",
|
|
18
|
-
// For symstory api
|
|
19
17
|
socketUrl: "http://localhost:8080",
|
|
20
18
|
// For socket api
|
|
21
|
-
routerUrl: "http://localhost:8080",
|
|
22
|
-
// For router api
|
|
23
19
|
apiUrl: "http://localhost:8080",
|
|
24
20
|
// For server api
|
|
25
21
|
basedEnv: "development",
|
|
@@ -37,29 +33,25 @@ var CONFIG = {
|
|
|
37
33
|
}
|
|
38
34
|
},
|
|
39
35
|
development: {
|
|
40
|
-
baseUrl: "https://dev.api.symbols.app",
|
|
41
36
|
socketUrl: "https://dev.api.symbols.app",
|
|
42
|
-
routerUrl: "https://dev.api.symbols.app",
|
|
43
37
|
apiUrl: "https://dev.api.symbols.app",
|
|
44
|
-
basedEnv: "development",
|
|
45
|
-
basedProject: "platform-v2-sm",
|
|
46
|
-
basedOrg: "symbols",
|
|
47
38
|
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
48
39
|
},
|
|
49
40
|
testing: {
|
|
50
|
-
baseUrl: "https://test.api.symbols.app",
|
|
51
41
|
socketUrl: "https://test.api.symbols.app",
|
|
52
|
-
routerUrl: "https://test.api.symbols.app",
|
|
53
42
|
apiUrl: "https://test.api.symbols.app",
|
|
54
43
|
basedEnv: "testing",
|
|
55
44
|
basedProject: "platform-v2-sm",
|
|
56
45
|
basedOrg: "symbols",
|
|
57
46
|
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
58
47
|
},
|
|
48
|
+
upcoming: {
|
|
49
|
+
socketUrl: "https://upcoming.api.symbols.app",
|
|
50
|
+
apiUrl: "https://upcoming.api.symbols.app",
|
|
51
|
+
githubClientId: "Ov23liWF7NvdZ056RV5J"
|
|
52
|
+
},
|
|
59
53
|
staging: {
|
|
60
|
-
baseUrl: "https://staging.api.symbols.app",
|
|
61
54
|
socketUrl: "https://staging.api.symbols.app",
|
|
62
|
-
routerUrl: "https://staging.api.symbols.app",
|
|
63
55
|
apiUrl: "https://staging.api.symbols.app",
|
|
64
56
|
basedEnv: "staging",
|
|
65
57
|
basedProject: "platform-v2-sm",
|
|
@@ -67,9 +59,7 @@ var CONFIG = {
|
|
|
67
59
|
githubClientId: "Ov23ligwZDQVD0VfuWNa"
|
|
68
60
|
},
|
|
69
61
|
production: {
|
|
70
|
-
baseUrl: "https://api.symbols.app",
|
|
71
62
|
socketUrl: "https://api.symbols.app",
|
|
72
|
-
routerUrl: "https://api.symbols.app",
|
|
73
63
|
apiUrl: "https://api.symbols.app",
|
|
74
64
|
basedEnv: "production",
|
|
75
65
|
basedProject: "platform-v2-sm",
|
|
@@ -90,9 +80,7 @@ var getConfig = () => {
|
|
|
90
80
|
const envConfig = { ...CONFIG.common, ...CONFIG[env] };
|
|
91
81
|
const finalConfig = {
|
|
92
82
|
...envConfig,
|
|
93
|
-
baseUrl: process.env.SYMBOLS_APP_BASE_URL || envConfig.baseUrl,
|
|
94
83
|
socketUrl: process.env.SYMBOLS_APP_SOCKET_URL || envConfig.socketUrl,
|
|
95
|
-
routerUrl: process.env.SYMBOLS_APP_ROUTER_URL || envConfig.routerUrl,
|
|
96
84
|
apiUrl: process.env.SYMBOLS_APP_API_URL || envConfig.apiUrl,
|
|
97
85
|
basedEnv: process.env.SYMBOLS_APP_BASED_ENV || envConfig.basedEnv,
|
|
98
86
|
basedProject: process.env.SYMBOLS_APP_BASED_PROJECT || envConfig.basedProject,
|
|
@@ -105,12 +93,8 @@ var getConfig = () => {
|
|
|
105
93
|
// Store all environment variables for potential future use
|
|
106
94
|
};
|
|
107
95
|
const requiredFields = [
|
|
108
|
-
"baseUrl",
|
|
109
96
|
"socketUrl",
|
|
110
97
|
"apiUrl",
|
|
111
|
-
"basedEnv",
|
|
112
|
-
"basedProject",
|
|
113
|
-
"basedOrg",
|
|
114
98
|
"githubClientId",
|
|
115
99
|
"googleClientId"
|
|
116
100
|
];
|