@symbo.ls/sdk 2.32.2 → 2.32.5
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/dist/cjs/config/environment.js +43 -8
- package/dist/cjs/index.js +12 -4
- package/dist/cjs/services/AdminService.js +4 -4
- package/dist/cjs/services/AuthService.js +36 -149
- package/dist/cjs/services/BaseService.js +5 -18
- package/dist/cjs/services/BranchService.js +10 -10
- package/dist/cjs/services/CollabService.js +94 -61
- package/dist/cjs/services/CoreService.js +19 -19
- package/dist/cjs/services/DnsService.js +4 -4
- package/dist/cjs/services/FileService.js +2 -2
- package/dist/cjs/services/PaymentService.js +2 -2
- package/dist/cjs/services/PlanService.js +12 -12
- package/dist/cjs/services/ProjectService.js +45 -35
- package/dist/cjs/services/PullRequestService.js +7 -7
- package/dist/cjs/services/ScreenshotService.js +304 -0
- package/dist/cjs/services/SubscriptionService.js +14 -14
- package/dist/cjs/services/index.js +4 -0
- package/dist/cjs/utils/TokenManager.js +16 -5
- package/dist/cjs/utils/changePreprocessor.js +134 -0
- package/dist/cjs/utils/jsonDiff.js +46 -4
- package/dist/cjs/utils/ordering.js +274 -0
- package/dist/cjs/utils/services.js +14 -1
- package/dist/esm/config/environment.js +43 -8
- package/dist/esm/index.js +1099 -417
- package/dist/esm/services/AdminService.js +68 -35
- package/dist/esm/services/AuthService.js +100 -168
- package/dist/esm/services/BaseService.js +64 -31
- package/dist/esm/services/BranchService.js +74 -41
- package/dist/esm/services/CollabService.js +570 -97
- package/dist/esm/services/CoreService.js +83 -50
- package/dist/esm/services/DnsService.js +68 -35
- package/dist/esm/services/FileService.js +66 -33
- package/dist/esm/services/PaymentService.js +66 -33
- package/dist/esm/services/PlanService.js +76 -43
- package/dist/esm/services/ProjectService.js +547 -66
- package/dist/esm/services/PullRequestService.js +71 -38
- package/dist/esm/services/ScreenshotService.js +992 -0
- package/dist/esm/services/SubscriptionService.js +78 -45
- package/dist/esm/services/index.js +1076 -412
- package/dist/esm/utils/CollabClient.js +89 -12
- package/dist/esm/utils/TokenManager.js +16 -5
- package/dist/esm/utils/changePreprocessor.js +442 -0
- package/dist/esm/utils/jsonDiff.js +46 -4
- package/dist/esm/utils/ordering.js +256 -0
- package/dist/esm/utils/services.js +14 -1
- package/dist/node/config/environment.js +43 -8
- package/dist/node/index.js +14 -5
- package/dist/node/services/AdminService.js +4 -4
- package/dist/node/services/AuthService.js +36 -139
- package/dist/node/services/BaseService.js +5 -18
- package/dist/node/services/BranchService.js +10 -10
- package/dist/node/services/CollabService.js +95 -62
- package/dist/node/services/CoreService.js +19 -19
- package/dist/node/services/DnsService.js +4 -4
- package/dist/node/services/FileService.js +2 -2
- package/dist/node/services/PaymentService.js +2 -2
- package/dist/node/services/PlanService.js +12 -12
- package/dist/node/services/ProjectService.js +45 -35
- package/dist/node/services/PullRequestService.js +7 -7
- package/dist/node/services/ScreenshotService.js +285 -0
- package/dist/node/services/SubscriptionService.js +14 -14
- package/dist/node/services/index.js +4 -0
- package/dist/node/utils/TokenManager.js +16 -5
- package/dist/node/utils/changePreprocessor.js +115 -0
- package/dist/node/utils/jsonDiff.js +46 -4
- package/dist/node/utils/ordering.js +255 -0
- package/dist/node/utils/services.js +14 -1
- package/package.json +7 -6
- package/src/config/environment.js +48 -9
- package/src/index.js +38 -22
- package/src/services/AdminService.js +4 -4
- package/src/services/AuthService.js +42 -175
- package/src/services/BaseService.js +7 -24
- package/src/services/BranchService.js +10 -10
- package/src/services/CollabService.js +115 -74
- package/src/services/CoreService.js +19 -19
- package/src/services/DnsService.js +4 -4
- package/src/services/FileService.js +2 -2
- package/src/services/PaymentService.js +2 -2
- package/src/services/PlanService.js +12 -12
- package/src/services/ProjectService.js +50 -35
- package/src/services/PullRequestService.js +7 -7
- package/src/services/ScreenshotService.js +258 -0
- package/src/services/SubscriptionService.js +14 -14
- package/src/services/index.js +6 -1
- package/src/utils/TokenManager.js +19 -5
- package/src/utils/changePreprocessor.js +139 -0
- package/src/utils/jsonDiff.js +40 -5
- package/src/utils/ordering.js +244 -0
- package/src/utils/services.js +15 -1
|
@@ -28,18 +28,28 @@ var CONFIG = {
|
|
|
28
28
|
// For based api
|
|
29
29
|
basedOrg: "symbols",
|
|
30
30
|
// For based api
|
|
31
|
-
githubClientId: "
|
|
31
|
+
githubClientId: "Ov23liAFrsR0StbAO6PO",
|
|
32
32
|
// For github api
|
|
33
33
|
// Environment-specific feature toggles (override common)
|
|
34
34
|
features: {
|
|
35
35
|
betaFeatures: true
|
|
36
36
|
// Enable beta features in local dev
|
|
37
|
-
}
|
|
37
|
+
},
|
|
38
|
+
typesenseCollectionName: "docs",
|
|
39
|
+
typesenseApiKey: "vZya3L2zpq8L6iI5WWMUZJZABvT63VDb",
|
|
40
|
+
typesenseHost: "localhost",
|
|
41
|
+
typesensePort: "8108",
|
|
42
|
+
typesenseProtocol: "http"
|
|
38
43
|
},
|
|
39
44
|
development: {
|
|
40
45
|
socketUrl: "https://dev.api.symbols.app",
|
|
41
46
|
apiUrl: "https://dev.api.symbols.app",
|
|
42
|
-
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
47
|
+
githubClientId: "Ov23liHxyWFBxS8f1gnF",
|
|
48
|
+
typesenseCollectionName: "docs",
|
|
49
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
50
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
51
|
+
typesensePort: "443",
|
|
52
|
+
typesenseProtocol: "https"
|
|
43
53
|
},
|
|
44
54
|
testing: {
|
|
45
55
|
socketUrl: "https://test.api.symbols.app",
|
|
@@ -47,12 +57,22 @@ var CONFIG = {
|
|
|
47
57
|
basedEnv: "testing",
|
|
48
58
|
basedProject: "platform-v2-sm",
|
|
49
59
|
basedOrg: "symbols",
|
|
50
|
-
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
60
|
+
githubClientId: "Ov23liHxyWFBxS8f1gnF",
|
|
61
|
+
typesenseCollectionName: "docs",
|
|
62
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
63
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
64
|
+
typesensePort: "443",
|
|
65
|
+
typesenseProtocol: "https"
|
|
51
66
|
},
|
|
52
67
|
upcoming: {
|
|
53
68
|
socketUrl: "https://upcoming.api.symbols.app",
|
|
54
69
|
apiUrl: "https://upcoming.api.symbols.app",
|
|
55
|
-
githubClientId: "Ov23liWF7NvdZ056RV5J"
|
|
70
|
+
githubClientId: "Ov23liWF7NvdZ056RV5J",
|
|
71
|
+
typesenseCollectionName: "docs",
|
|
72
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
73
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
74
|
+
typesensePort: "443",
|
|
75
|
+
typesenseProtocol: "https"
|
|
56
76
|
},
|
|
57
77
|
staging: {
|
|
58
78
|
socketUrl: "https://staging.api.symbols.app",
|
|
@@ -60,7 +80,12 @@ var CONFIG = {
|
|
|
60
80
|
basedEnv: "staging",
|
|
61
81
|
basedProject: "platform-v2-sm",
|
|
62
82
|
basedOrg: "symbols",
|
|
63
|
-
githubClientId: "Ov23ligwZDQVD0VfuWNa"
|
|
83
|
+
githubClientId: "Ov23ligwZDQVD0VfuWNa",
|
|
84
|
+
typesenseCollectionName: "docs",
|
|
85
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
86
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
87
|
+
typesensePort: "443",
|
|
88
|
+
typesenseProtocol: "https"
|
|
64
89
|
},
|
|
65
90
|
production: {
|
|
66
91
|
socketUrl: "https://api.symbols.app",
|
|
@@ -68,7 +93,12 @@ var CONFIG = {
|
|
|
68
93
|
basedEnv: "production",
|
|
69
94
|
basedProject: "platform-v2-sm",
|
|
70
95
|
basedOrg: "symbols",
|
|
71
|
-
githubClientId: "Ov23liFAlOEIXtX3dBtR"
|
|
96
|
+
githubClientId: "Ov23liFAlOEIXtX3dBtR",
|
|
97
|
+
typesenseCollectionName: "docs",
|
|
98
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
99
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
100
|
+
typesensePort: "443",
|
|
101
|
+
typesenseProtocol: "https"
|
|
72
102
|
}
|
|
73
103
|
};
|
|
74
104
|
var getEnvironment = () => {
|
|
@@ -90,6 +120,11 @@ var getConfig = () => {
|
|
|
90
120
|
basedProject: process.env.SYMBOLS_APP_BASED_PROJECT || envConfig.basedProject,
|
|
91
121
|
basedOrg: process.env.SYMBOLS_APP_BASED_ORG || envConfig.basedOrg,
|
|
92
122
|
githubClientId: process.env.SYMBOLS_APP_GITHUB_CLIENT_ID || envConfig.githubClientId,
|
|
123
|
+
typesenseCollectionName: process.env.TYPESENSE_COLLECTION_NAME || envConfig.typesenseCollectionName,
|
|
124
|
+
typesenseApiKey: process.env.TYPESENSE_API_KEY || envConfig.typesenseApiKey,
|
|
125
|
+
typesenseHost: process.env.TYPESENSE_HOST || envConfig.typesenseHost,
|
|
126
|
+
typesensePort: process.env.TYPESENSE_PORT || envConfig.typesensePort,
|
|
127
|
+
typesenseProtocol: process.env.TYPESENSE_PROTOCOL || envConfig.typesenseProtocol,
|
|
93
128
|
isDevelopment: isDevelopment(env),
|
|
94
129
|
isTesting: env === "testing",
|
|
95
130
|
isStaging: env === "staging",
|
|
@@ -109,7 +144,7 @@ var getConfig = () => {
|
|
|
109
144
|
);
|
|
110
145
|
}
|
|
111
146
|
if (finalConfig.isDevelopment) {
|
|
112
|
-
console.
|
|
147
|
+
console.warn(
|
|
113
148
|
"environment in SDK:",
|
|
114
149
|
env || process.env.NODE_ENV || process.env.NODE_ENV
|
|
115
150
|
);
|
|
@@ -148,7 +183,7 @@ var TokenManager = class {
|
|
|
148
183
|
});
|
|
149
184
|
this.config = {
|
|
150
185
|
storagePrefix: "symbols_",
|
|
151
|
-
storageType: typeof window === "undefined" || process.env.NODE_ENV === "test" ? "memory" : "localStorage",
|
|
186
|
+
storageType: typeof window === "undefined" || process.env.NODE_ENV === "test" || process.env.NODE_ENV === "testing" ? "memory" : "localStorage",
|
|
152
187
|
// 'localStorage' | 'sessionStorage' | 'memory'
|
|
153
188
|
refreshBuffer: 60 * 1e3,
|
|
154
189
|
// Refresh 1 minute before expiry
|
|
@@ -188,15 +223,26 @@ var TokenManager = class {
|
|
|
188
223
|
if (typeof window === "undefined") {
|
|
189
224
|
return this._memoryStorage;
|
|
190
225
|
}
|
|
191
|
-
const
|
|
192
|
-
|
|
226
|
+
const safeGetStorage = (provider) => {
|
|
227
|
+
try {
|
|
228
|
+
const storage = provider();
|
|
229
|
+
const testKey = `${this.config.storagePrefix}__tm_test__`;
|
|
230
|
+
storage.setItem(testKey, "1");
|
|
231
|
+
storage.removeItem(testKey);
|
|
232
|
+
return storage;
|
|
233
|
+
} catch {
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
const localStorageInstance = safeGetStorage(() => window.localStorage);
|
|
238
|
+
const sessionStorageInstance = safeGetStorage(() => window.sessionStorage);
|
|
193
239
|
switch (this.config.storageType) {
|
|
194
240
|
case "sessionStorage":
|
|
195
|
-
return
|
|
241
|
+
return sessionStorageInstance || this._memoryStorage;
|
|
196
242
|
case "memory":
|
|
197
243
|
return this._memoryStorage;
|
|
198
244
|
default:
|
|
199
|
-
return
|
|
245
|
+
return localStorageInstance || this._memoryStorage;
|
|
200
246
|
}
|
|
201
247
|
}
|
|
202
248
|
/**
|
|
@@ -535,20 +581,10 @@ var BaseService = class {
|
|
|
535
581
|
}
|
|
536
582
|
this._tokenManager = getTokenManager({
|
|
537
583
|
apiUrl: this._apiUrl,
|
|
538
|
-
onTokenRefresh: (tokens) => {
|
|
539
|
-
this.updateContext({ authToken: tokens.accessToken });
|
|
540
|
-
},
|
|
541
|
-
onTokenExpired: () => {
|
|
542
|
-
this.updateContext({ authToken: null });
|
|
543
|
-
},
|
|
544
584
|
onTokenError: (error) => {
|
|
545
585
|
console.error("Token management error:", error);
|
|
546
586
|
}
|
|
547
587
|
});
|
|
548
|
-
const { authToken } = this._context;
|
|
549
|
-
if (authToken && !this._tokenManager.hasTokens()) {
|
|
550
|
-
this._tokenManager.setTokens({ access_token: authToken });
|
|
551
|
-
}
|
|
552
588
|
this._setReady();
|
|
553
589
|
} catch (error) {
|
|
554
590
|
this._setError(error);
|
|
@@ -557,7 +593,9 @@ var BaseService = class {
|
|
|
557
593
|
}
|
|
558
594
|
// Update context
|
|
559
595
|
updateContext(context) {
|
|
560
|
-
|
|
596
|
+
if (context && typeof context === "object") {
|
|
597
|
+
Object.assign(this._context, context);
|
|
598
|
+
}
|
|
561
599
|
}
|
|
562
600
|
// Get service status
|
|
563
601
|
getStatus() {
|
|
@@ -612,11 +650,6 @@ var BaseService = class {
|
|
|
612
650
|
error
|
|
613
651
|
);
|
|
614
652
|
}
|
|
615
|
-
} else if (this._requiresInit(options.methodName)) {
|
|
616
|
-
const { authToken } = this._context;
|
|
617
|
-
if (authToken) {
|
|
618
|
-
defaultHeaders.Authorization = `Bearer ${authToken}`;
|
|
619
|
-
}
|
|
620
653
|
}
|
|
621
654
|
try {
|
|
622
655
|
const response = await fetch(url, {
|
|
@@ -634,11 +667,11 @@ var BaseService = class {
|
|
|
634
667
|
error = await response.json();
|
|
635
668
|
} catch {
|
|
636
669
|
}
|
|
637
|
-
throw new Error(error.message || error.error || "Request failed");
|
|
670
|
+
throw new Error(error.message || error.error || "Request failed", { cause: error });
|
|
638
671
|
}
|
|
639
672
|
return response.status === 204 ? null : response.json();
|
|
640
673
|
} catch (error) {
|
|
641
|
-
throw new Error(`Request failed: ${error.message}
|
|
674
|
+
throw new Error(`Request failed: ${error.message}`, { cause: error });
|
|
642
675
|
}
|
|
643
676
|
}
|
|
644
677
|
// Helper method to determine if a method requires initialization
|
|
@@ -819,11 +852,11 @@ var CoreService = class extends BaseService {
|
|
|
819
852
|
error = await response.json();
|
|
820
853
|
} catch {
|
|
821
854
|
}
|
|
822
|
-
throw new Error(error.message || error.error || "Request failed");
|
|
855
|
+
throw new Error(error.message || error.error || "Request failed", { cause: error });
|
|
823
856
|
}
|
|
824
857
|
return response.status === 204 ? null : response.json();
|
|
825
858
|
} catch (error) {
|
|
826
|
-
throw new Error(`Request failed: ${error.message}
|
|
859
|
+
throw new Error(`Request failed: ${error.message}`, { cause: error });
|
|
827
860
|
}
|
|
828
861
|
}
|
|
829
862
|
// ==================== AUTH METHODS ====================
|
|
@@ -839,7 +872,7 @@ var CoreService = class extends BaseService {
|
|
|
839
872
|
}
|
|
840
873
|
throw new Error(response.message);
|
|
841
874
|
} catch (error) {
|
|
842
|
-
throw new Error(`Registration failed: ${error.message}
|
|
875
|
+
throw new Error(`Registration failed: ${error.message}`, { cause: error });
|
|
843
876
|
}
|
|
844
877
|
}
|
|
845
878
|
async login(email, password) {
|
|
@@ -868,7 +901,7 @@ var CoreService = class extends BaseService {
|
|
|
868
901
|
}
|
|
869
902
|
throw new Error(response.message);
|
|
870
903
|
} catch (error) {
|
|
871
|
-
throw new Error(`Login failed: ${error.message}
|
|
904
|
+
throw new Error(`Login failed: ${error.message}`, { cause: error });
|
|
872
905
|
}
|
|
873
906
|
}
|
|
874
907
|
async logout() {
|
|
@@ -887,7 +920,7 @@ var CoreService = class extends BaseService {
|
|
|
887
920
|
this._tokenManager.clearTokens();
|
|
888
921
|
}
|
|
889
922
|
this.updateContext({ authToken: null });
|
|
890
|
-
throw new Error(`Logout failed: ${error.message}
|
|
923
|
+
throw new Error(`Logout failed: ${error.message}`, { cause: error });
|
|
891
924
|
}
|
|
892
925
|
}
|
|
893
926
|
async refreshToken(refreshToken) {
|
|
@@ -902,7 +935,7 @@ var CoreService = class extends BaseService {
|
|
|
902
935
|
}
|
|
903
936
|
throw new Error(response.message);
|
|
904
937
|
} catch (error) {
|
|
905
|
-
throw new Error(`Token refresh failed: ${error.message}
|
|
938
|
+
throw new Error(`Token refresh failed: ${error.message}`, { cause: error });
|
|
906
939
|
}
|
|
907
940
|
}
|
|
908
941
|
async googleAuth(idToken, inviteToken = null) {
|
|
@@ -935,7 +968,7 @@ var CoreService = class extends BaseService {
|
|
|
935
968
|
}
|
|
936
969
|
throw new Error(response.message);
|
|
937
970
|
} catch (error) {
|
|
938
|
-
throw new Error(`Google auth failed: ${error.message}
|
|
971
|
+
throw new Error(`Google auth failed: ${error.message}`, { cause: error });
|
|
939
972
|
}
|
|
940
973
|
}
|
|
941
974
|
async githubAuth(code, inviteToken = null) {
|
|
@@ -968,7 +1001,7 @@ var CoreService = class extends BaseService {
|
|
|
968
1001
|
}
|
|
969
1002
|
throw new Error(response.message);
|
|
970
1003
|
} catch (error) {
|
|
971
|
-
throw new Error(`GitHub auth failed: ${error.message}
|
|
1004
|
+
throw new Error(`GitHub auth failed: ${error.message}`, { cause: error });
|
|
972
1005
|
}
|
|
973
1006
|
}
|
|
974
1007
|
async googleAuthCallback(code, redirectUri, inviteToken = null) {
|
|
@@ -1001,7 +1034,7 @@ var CoreService = class extends BaseService {
|
|
|
1001
1034
|
}
|
|
1002
1035
|
throw new Error(response.message);
|
|
1003
1036
|
} catch (error) {
|
|
1004
|
-
throw new Error(`Google auth callback failed: ${error.message}
|
|
1037
|
+
throw new Error(`Google auth callback failed: ${error.message}`, { cause: error });
|
|
1005
1038
|
}
|
|
1006
1039
|
}
|
|
1007
1040
|
async requestPasswordReset(email) {
|
|
@@ -1016,7 +1049,7 @@ var CoreService = class extends BaseService {
|
|
|
1016
1049
|
}
|
|
1017
1050
|
throw new Error(response.message);
|
|
1018
1051
|
} catch (error) {
|
|
1019
|
-
throw new Error(`Password reset request failed: ${error.message}
|
|
1052
|
+
throw new Error(`Password reset request failed: ${error.message}`, { cause: error });
|
|
1020
1053
|
}
|
|
1021
1054
|
}
|
|
1022
1055
|
async confirmPasswordReset(token, password) {
|
|
@@ -1031,7 +1064,7 @@ var CoreService = class extends BaseService {
|
|
|
1031
1064
|
}
|
|
1032
1065
|
throw new Error(response.message);
|
|
1033
1066
|
} catch (error) {
|
|
1034
|
-
throw new Error(`Password reset confirmation failed: ${error.message}
|
|
1067
|
+
throw new Error(`Password reset confirmation failed: ${error.message}`, { cause: error });
|
|
1035
1068
|
}
|
|
1036
1069
|
}
|
|
1037
1070
|
async confirmRegistration(token) {
|
|
@@ -1046,7 +1079,7 @@ var CoreService = class extends BaseService {
|
|
|
1046
1079
|
}
|
|
1047
1080
|
throw new Error(response.message);
|
|
1048
1081
|
} catch (error) {
|
|
1049
|
-
throw new Error(`Registration confirmation failed: ${error.message}
|
|
1082
|
+
throw new Error(`Registration confirmation failed: ${error.message}`, { cause: error });
|
|
1050
1083
|
}
|
|
1051
1084
|
}
|
|
1052
1085
|
async requestPasswordChange() {
|
|
@@ -1061,7 +1094,7 @@ var CoreService = class extends BaseService {
|
|
|
1061
1094
|
}
|
|
1062
1095
|
throw new Error(response.message);
|
|
1063
1096
|
} catch (error) {
|
|
1064
|
-
throw new Error(`Password change request failed: ${error.message}
|
|
1097
|
+
throw new Error(`Password change request failed: ${error.message}`, { cause: error });
|
|
1065
1098
|
}
|
|
1066
1099
|
}
|
|
1067
1100
|
async confirmPasswordChange(currentPassword, newPassword, code) {
|
|
@@ -1077,7 +1110,7 @@ var CoreService = class extends BaseService {
|
|
|
1077
1110
|
}
|
|
1078
1111
|
throw new Error(response.message);
|
|
1079
1112
|
} catch (error) {
|
|
1080
|
-
throw new Error(`Password change confirmation failed: ${error.message}
|
|
1113
|
+
throw new Error(`Password change confirmation failed: ${error.message}`, { cause: error });
|
|
1081
1114
|
}
|
|
1082
1115
|
}
|
|
1083
1116
|
async getMe() {
|
|
@@ -1092,7 +1125,7 @@ var CoreService = class extends BaseService {
|
|
|
1092
1125
|
}
|
|
1093
1126
|
throw new Error(response.message);
|
|
1094
1127
|
} catch (error) {
|
|
1095
|
-
throw new Error(`Failed to get user profile: ${error.message}
|
|
1128
|
+
throw new Error(`Failed to get user profile: ${error.message}`, { cause: error });
|
|
1096
1129
|
}
|
|
1097
1130
|
}
|
|
1098
1131
|
/**
|
|
@@ -1208,7 +1241,7 @@ var CoreService = class extends BaseService {
|
|
|
1208
1241
|
}
|
|
1209
1242
|
throw new Error(response.message);
|
|
1210
1243
|
} catch (error) {
|
|
1211
|
-
throw new Error(`Failed to update user profile: ${error.message}
|
|
1244
|
+
throw new Error(`Failed to update user profile: ${error.message}`, { cause: error });
|
|
1212
1245
|
}
|
|
1213
1246
|
}
|
|
1214
1247
|
async getUserProjects() {
|
|
@@ -1231,7 +1264,7 @@ var CoreService = class extends BaseService {
|
|
|
1231
1264
|
}
|
|
1232
1265
|
throw new Error(response.message);
|
|
1233
1266
|
} catch (error) {
|
|
1234
|
-
throw new Error(`Failed to get user projects: ${error.message}
|
|
1267
|
+
throw new Error(`Failed to get user projects: ${error.message}`, { cause: error });
|
|
1235
1268
|
}
|
|
1236
1269
|
}
|
|
1237
1270
|
async getUser(userId) {
|
|
@@ -1249,7 +1282,7 @@ var CoreService = class extends BaseService {
|
|
|
1249
1282
|
}
|
|
1250
1283
|
throw new Error(response.message);
|
|
1251
1284
|
} catch (error) {
|
|
1252
|
-
throw new Error(`Failed to get user: ${error.message}
|
|
1285
|
+
throw new Error(`Failed to get user: ${error.message}`, { cause: error });
|
|
1253
1286
|
}
|
|
1254
1287
|
}
|
|
1255
1288
|
async getUserByEmail(email) {
|
|
@@ -1267,7 +1300,7 @@ var CoreService = class extends BaseService {
|
|
|
1267
1300
|
}
|
|
1268
1301
|
throw new Error(response.message);
|
|
1269
1302
|
} catch (error) {
|
|
1270
|
-
throw new Error(`Failed to get user by email: ${error.message}
|
|
1303
|
+
throw new Error(`Failed to get user by email: ${error.message}`, { cause: error });
|
|
1271
1304
|
}
|
|
1272
1305
|
}
|
|
1273
1306
|
// ==================== PROJECT METHODS ====================
|
|
@@ -28,18 +28,28 @@ var CONFIG = {
|
|
|
28
28
|
// For based api
|
|
29
29
|
basedOrg: "symbols",
|
|
30
30
|
// For based api
|
|
31
|
-
githubClientId: "
|
|
31
|
+
githubClientId: "Ov23liAFrsR0StbAO6PO",
|
|
32
32
|
// For github api
|
|
33
33
|
// Environment-specific feature toggles (override common)
|
|
34
34
|
features: {
|
|
35
35
|
betaFeatures: true
|
|
36
36
|
// Enable beta features in local dev
|
|
37
|
-
}
|
|
37
|
+
},
|
|
38
|
+
typesenseCollectionName: "docs",
|
|
39
|
+
typesenseApiKey: "vZya3L2zpq8L6iI5WWMUZJZABvT63VDb",
|
|
40
|
+
typesenseHost: "localhost",
|
|
41
|
+
typesensePort: "8108",
|
|
42
|
+
typesenseProtocol: "http"
|
|
38
43
|
},
|
|
39
44
|
development: {
|
|
40
45
|
socketUrl: "https://dev.api.symbols.app",
|
|
41
46
|
apiUrl: "https://dev.api.symbols.app",
|
|
42
|
-
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
47
|
+
githubClientId: "Ov23liHxyWFBxS8f1gnF",
|
|
48
|
+
typesenseCollectionName: "docs",
|
|
49
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
50
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
51
|
+
typesensePort: "443",
|
|
52
|
+
typesenseProtocol: "https"
|
|
43
53
|
},
|
|
44
54
|
testing: {
|
|
45
55
|
socketUrl: "https://test.api.symbols.app",
|
|
@@ -47,12 +57,22 @@ var CONFIG = {
|
|
|
47
57
|
basedEnv: "testing",
|
|
48
58
|
basedProject: "platform-v2-sm",
|
|
49
59
|
basedOrg: "symbols",
|
|
50
|
-
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
60
|
+
githubClientId: "Ov23liHxyWFBxS8f1gnF",
|
|
61
|
+
typesenseCollectionName: "docs",
|
|
62
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
63
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
64
|
+
typesensePort: "443",
|
|
65
|
+
typesenseProtocol: "https"
|
|
51
66
|
},
|
|
52
67
|
upcoming: {
|
|
53
68
|
socketUrl: "https://upcoming.api.symbols.app",
|
|
54
69
|
apiUrl: "https://upcoming.api.symbols.app",
|
|
55
|
-
githubClientId: "Ov23liWF7NvdZ056RV5J"
|
|
70
|
+
githubClientId: "Ov23liWF7NvdZ056RV5J",
|
|
71
|
+
typesenseCollectionName: "docs",
|
|
72
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
73
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
74
|
+
typesensePort: "443",
|
|
75
|
+
typesenseProtocol: "https"
|
|
56
76
|
},
|
|
57
77
|
staging: {
|
|
58
78
|
socketUrl: "https://staging.api.symbols.app",
|
|
@@ -60,7 +80,12 @@ var CONFIG = {
|
|
|
60
80
|
basedEnv: "staging",
|
|
61
81
|
basedProject: "platform-v2-sm",
|
|
62
82
|
basedOrg: "symbols",
|
|
63
|
-
githubClientId: "Ov23ligwZDQVD0VfuWNa"
|
|
83
|
+
githubClientId: "Ov23ligwZDQVD0VfuWNa",
|
|
84
|
+
typesenseCollectionName: "docs",
|
|
85
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
86
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
87
|
+
typesensePort: "443",
|
|
88
|
+
typesenseProtocol: "https"
|
|
64
89
|
},
|
|
65
90
|
production: {
|
|
66
91
|
socketUrl: "https://api.symbols.app",
|
|
@@ -68,7 +93,12 @@ var CONFIG = {
|
|
|
68
93
|
basedEnv: "production",
|
|
69
94
|
basedProject: "platform-v2-sm",
|
|
70
95
|
basedOrg: "symbols",
|
|
71
|
-
githubClientId: "Ov23liFAlOEIXtX3dBtR"
|
|
96
|
+
githubClientId: "Ov23liFAlOEIXtX3dBtR",
|
|
97
|
+
typesenseCollectionName: "docs",
|
|
98
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
99
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
100
|
+
typesensePort: "443",
|
|
101
|
+
typesenseProtocol: "https"
|
|
72
102
|
}
|
|
73
103
|
};
|
|
74
104
|
var getEnvironment = () => {
|
|
@@ -90,6 +120,11 @@ var getConfig = () => {
|
|
|
90
120
|
basedProject: process.env.SYMBOLS_APP_BASED_PROJECT || envConfig.basedProject,
|
|
91
121
|
basedOrg: process.env.SYMBOLS_APP_BASED_ORG || envConfig.basedOrg,
|
|
92
122
|
githubClientId: process.env.SYMBOLS_APP_GITHUB_CLIENT_ID || envConfig.githubClientId,
|
|
123
|
+
typesenseCollectionName: process.env.TYPESENSE_COLLECTION_NAME || envConfig.typesenseCollectionName,
|
|
124
|
+
typesenseApiKey: process.env.TYPESENSE_API_KEY || envConfig.typesenseApiKey,
|
|
125
|
+
typesenseHost: process.env.TYPESENSE_HOST || envConfig.typesenseHost,
|
|
126
|
+
typesensePort: process.env.TYPESENSE_PORT || envConfig.typesensePort,
|
|
127
|
+
typesenseProtocol: process.env.TYPESENSE_PROTOCOL || envConfig.typesenseProtocol,
|
|
93
128
|
isDevelopment: isDevelopment(env),
|
|
94
129
|
isTesting: env === "testing",
|
|
95
130
|
isStaging: env === "staging",
|
|
@@ -109,7 +144,7 @@ var getConfig = () => {
|
|
|
109
144
|
);
|
|
110
145
|
}
|
|
111
146
|
if (finalConfig.isDevelopment) {
|
|
112
|
-
console.
|
|
147
|
+
console.warn(
|
|
113
148
|
"environment in SDK:",
|
|
114
149
|
env || process.env.NODE_ENV || process.env.NODE_ENV
|
|
115
150
|
);
|
|
@@ -148,7 +183,7 @@ var TokenManager = class {
|
|
|
148
183
|
});
|
|
149
184
|
this.config = {
|
|
150
185
|
storagePrefix: "symbols_",
|
|
151
|
-
storageType: typeof window === "undefined" || process.env.NODE_ENV === "test" ? "memory" : "localStorage",
|
|
186
|
+
storageType: typeof window === "undefined" || process.env.NODE_ENV === "test" || process.env.NODE_ENV === "testing" ? "memory" : "localStorage",
|
|
152
187
|
// 'localStorage' | 'sessionStorage' | 'memory'
|
|
153
188
|
refreshBuffer: 60 * 1e3,
|
|
154
189
|
// Refresh 1 minute before expiry
|
|
@@ -188,15 +223,26 @@ var TokenManager = class {
|
|
|
188
223
|
if (typeof window === "undefined") {
|
|
189
224
|
return this._memoryStorage;
|
|
190
225
|
}
|
|
191
|
-
const
|
|
192
|
-
|
|
226
|
+
const safeGetStorage = (provider) => {
|
|
227
|
+
try {
|
|
228
|
+
const storage = provider();
|
|
229
|
+
const testKey = `${this.config.storagePrefix}__tm_test__`;
|
|
230
|
+
storage.setItem(testKey, "1");
|
|
231
|
+
storage.removeItem(testKey);
|
|
232
|
+
return storage;
|
|
233
|
+
} catch {
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
const localStorageInstance = safeGetStorage(() => window.localStorage);
|
|
238
|
+
const sessionStorageInstance = safeGetStorage(() => window.sessionStorage);
|
|
193
239
|
switch (this.config.storageType) {
|
|
194
240
|
case "sessionStorage":
|
|
195
|
-
return
|
|
241
|
+
return sessionStorageInstance || this._memoryStorage;
|
|
196
242
|
case "memory":
|
|
197
243
|
return this._memoryStorage;
|
|
198
244
|
default:
|
|
199
|
-
return
|
|
245
|
+
return localStorageInstance || this._memoryStorage;
|
|
200
246
|
}
|
|
201
247
|
}
|
|
202
248
|
/**
|
|
@@ -535,20 +581,10 @@ var BaseService = class {
|
|
|
535
581
|
}
|
|
536
582
|
this._tokenManager = getTokenManager({
|
|
537
583
|
apiUrl: this._apiUrl,
|
|
538
|
-
onTokenRefresh: (tokens) => {
|
|
539
|
-
this.updateContext({ authToken: tokens.accessToken });
|
|
540
|
-
},
|
|
541
|
-
onTokenExpired: () => {
|
|
542
|
-
this.updateContext({ authToken: null });
|
|
543
|
-
},
|
|
544
584
|
onTokenError: (error) => {
|
|
545
585
|
console.error("Token management error:", error);
|
|
546
586
|
}
|
|
547
587
|
});
|
|
548
|
-
const { authToken } = this._context;
|
|
549
|
-
if (authToken && !this._tokenManager.hasTokens()) {
|
|
550
|
-
this._tokenManager.setTokens({ access_token: authToken });
|
|
551
|
-
}
|
|
552
588
|
this._setReady();
|
|
553
589
|
} catch (error) {
|
|
554
590
|
this._setError(error);
|
|
@@ -557,7 +593,9 @@ var BaseService = class {
|
|
|
557
593
|
}
|
|
558
594
|
// Update context
|
|
559
595
|
updateContext(context) {
|
|
560
|
-
|
|
596
|
+
if (context && typeof context === "object") {
|
|
597
|
+
Object.assign(this._context, context);
|
|
598
|
+
}
|
|
561
599
|
}
|
|
562
600
|
// Get service status
|
|
563
601
|
getStatus() {
|
|
@@ -612,11 +650,6 @@ var BaseService = class {
|
|
|
612
650
|
error
|
|
613
651
|
);
|
|
614
652
|
}
|
|
615
|
-
} else if (this._requiresInit(options.methodName)) {
|
|
616
|
-
const { authToken } = this._context;
|
|
617
|
-
if (authToken) {
|
|
618
|
-
defaultHeaders.Authorization = `Bearer ${authToken}`;
|
|
619
|
-
}
|
|
620
653
|
}
|
|
621
654
|
try {
|
|
622
655
|
const response = await fetch(url, {
|
|
@@ -634,11 +667,11 @@ var BaseService = class {
|
|
|
634
667
|
error = await response.json();
|
|
635
668
|
} catch {
|
|
636
669
|
}
|
|
637
|
-
throw new Error(error.message || error.error || "Request failed");
|
|
670
|
+
throw new Error(error.message || error.error || "Request failed", { cause: error });
|
|
638
671
|
}
|
|
639
672
|
return response.status === 204 ? null : response.json();
|
|
640
673
|
} catch (error) {
|
|
641
|
-
throw new Error(`Request failed: ${error.message}
|
|
674
|
+
throw new Error(`Request failed: ${error.message}`, { cause: error });
|
|
642
675
|
}
|
|
643
676
|
}
|
|
644
677
|
// Helper method to determine if a method requires initialization
|
|
@@ -690,7 +723,7 @@ var DnsService = class extends BaseService {
|
|
|
690
723
|
}
|
|
691
724
|
throw new Error(response.message);
|
|
692
725
|
} catch (error) {
|
|
693
|
-
throw new Error(`Failed to create DNS record: ${error.message}
|
|
726
|
+
throw new Error(`Failed to create DNS record: ${error.message}`, { cause: error });
|
|
694
727
|
}
|
|
695
728
|
}
|
|
696
729
|
async getDnsRecord(domain) {
|
|
@@ -708,7 +741,7 @@ var DnsService = class extends BaseService {
|
|
|
708
741
|
}
|
|
709
742
|
throw new Error(response.message);
|
|
710
743
|
} catch (error) {
|
|
711
|
-
throw new Error(`Failed to get DNS record: ${error.message}
|
|
744
|
+
throw new Error(`Failed to get DNS record: ${error.message}`, { cause: error });
|
|
712
745
|
}
|
|
713
746
|
}
|
|
714
747
|
async getCustomHost(hostname) {
|
|
@@ -744,7 +777,7 @@ var DnsService = class extends BaseService {
|
|
|
744
777
|
}
|
|
745
778
|
throw new Error(response.message);
|
|
746
779
|
} catch (error) {
|
|
747
|
-
throw new Error(`Failed to remove DNS record: ${error.message}
|
|
780
|
+
throw new Error(`Failed to remove DNS record: ${error.message}`, { cause: error });
|
|
748
781
|
}
|
|
749
782
|
}
|
|
750
783
|
// Deprecated, use addProjectCustomDomains instead
|
|
@@ -768,7 +801,7 @@ var DnsService = class extends BaseService {
|
|
|
768
801
|
}
|
|
769
802
|
throw new Error(response.message);
|
|
770
803
|
} catch (error) {
|
|
771
|
-
throw new Error(`Failed to set project domains: ${error.message}
|
|
804
|
+
throw new Error(`Failed to set project domains: ${error.message}`, { cause: error });
|
|
772
805
|
}
|
|
773
806
|
}
|
|
774
807
|
// customDomains could be a string or an array of strings
|