@symbo.ls/sdk 2.32.2 → 2.32.4
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,118 +852,10 @@ var AuthService = class extends BaseService {
|
|
|
819
852
|
"pro2",
|
|
820
853
|
"enterprise"
|
|
821
854
|
]);
|
|
822
|
-
this._initialized = false;
|
|
823
|
-
this._apiUrl = null;
|
|
824
|
-
this._tokenManager = null;
|
|
825
855
|
this._projectRoleCache = /* @__PURE__ */ new Map();
|
|
826
856
|
this._roleCacheExpiry = 5 * 60 * 1e3;
|
|
827
857
|
}
|
|
828
|
-
|
|
829
|
-
try {
|
|
830
|
-
const { appKey, authToken } = context || this._context;
|
|
831
|
-
this._apiUrl = environment_default.apiUrl;
|
|
832
|
-
if (!this._apiUrl) {
|
|
833
|
-
throw new Error("Auth service base URL not configured");
|
|
834
|
-
}
|
|
835
|
-
this._tokenManager = getTokenManager({
|
|
836
|
-
apiUrl: this._apiUrl,
|
|
837
|
-
onTokenRefresh: (tokens) => {
|
|
838
|
-
this.updateContext({ authToken: tokens.accessToken });
|
|
839
|
-
},
|
|
840
|
-
onTokenExpired: () => {
|
|
841
|
-
this.updateContext({ authToken: null });
|
|
842
|
-
},
|
|
843
|
-
onTokenError: (error) => {
|
|
844
|
-
console.error("Token management error:", error);
|
|
845
|
-
}
|
|
846
|
-
});
|
|
847
|
-
if (authToken && !this._tokenManager.hasTokens()) {
|
|
848
|
-
this._tokenManager.setTokens({ access_token: authToken });
|
|
849
|
-
}
|
|
850
|
-
this._info = {
|
|
851
|
-
config: {
|
|
852
|
-
apiUrl: this._apiUrl,
|
|
853
|
-
appKey: appKey ? `${appKey.substr(0, 4)}...${appKey.substr(-4)}` : null,
|
|
854
|
-
hasToken: Boolean(authToken)
|
|
855
|
-
}
|
|
856
|
-
};
|
|
857
|
-
this._initialized = true;
|
|
858
|
-
this._setReady();
|
|
859
|
-
} catch (error) {
|
|
860
|
-
this._setError(error);
|
|
861
|
-
throw error;
|
|
862
|
-
}
|
|
863
|
-
}
|
|
864
|
-
// Helper method to make HTTP requests
|
|
865
|
-
async _request(endpoint, options = {}) {
|
|
866
|
-
const url = `${this._apiUrl}/core${endpoint}`;
|
|
867
|
-
const defaultHeaders = {};
|
|
868
|
-
if (!(options.body instanceof FormData)) {
|
|
869
|
-
defaultHeaders["Content-Type"] = "application/json";
|
|
870
|
-
}
|
|
871
|
-
if (this._requiresInit(options.methodName) && this._tokenManager) {
|
|
872
|
-
try {
|
|
873
|
-
const validToken = await this._tokenManager.ensureValidToken();
|
|
874
|
-
if (validToken) {
|
|
875
|
-
const authHeader = this._tokenManager.getAuthHeader();
|
|
876
|
-
if (authHeader) {
|
|
877
|
-
defaultHeaders.Authorization = authHeader;
|
|
878
|
-
}
|
|
879
|
-
}
|
|
880
|
-
} catch (error) {
|
|
881
|
-
console.warn(
|
|
882
|
-
"Token management failed, proceeding without authentication:",
|
|
883
|
-
error
|
|
884
|
-
);
|
|
885
|
-
}
|
|
886
|
-
} else if (this._requiresInit(options.methodName)) {
|
|
887
|
-
const { authToken } = this._context;
|
|
888
|
-
if (authToken) {
|
|
889
|
-
defaultHeaders.Authorization = `Bearer ${authToken}`;
|
|
890
|
-
}
|
|
891
|
-
}
|
|
892
|
-
try {
|
|
893
|
-
const response = await fetch(url, {
|
|
894
|
-
...options,
|
|
895
|
-
headers: {
|
|
896
|
-
...defaultHeaders,
|
|
897
|
-
...options.headers
|
|
898
|
-
}
|
|
899
|
-
});
|
|
900
|
-
if (!response.ok) {
|
|
901
|
-
let error = {
|
|
902
|
-
message: `HTTP ${response.status}: ${response.statusText}`
|
|
903
|
-
};
|
|
904
|
-
try {
|
|
905
|
-
error = await response.json();
|
|
906
|
-
} catch {
|
|
907
|
-
}
|
|
908
|
-
throw new Error(error.message || error.error || "Request failed");
|
|
909
|
-
}
|
|
910
|
-
return response.status === 204 ? null : response.json();
|
|
911
|
-
} catch (error) {
|
|
912
|
-
throw new Error(`Request failed: ${error.message}`);
|
|
913
|
-
}
|
|
914
|
-
}
|
|
915
|
-
_requiresInit(methodName) {
|
|
916
|
-
const noInitMethods = /* @__PURE__ */ new Set([
|
|
917
|
-
"register",
|
|
918
|
-
"login",
|
|
919
|
-
"googleAuth",
|
|
920
|
-
"googleAuthCallback",
|
|
921
|
-
"githubAuth",
|
|
922
|
-
"requestPasswordReset",
|
|
923
|
-
"confirmPasswordReset",
|
|
924
|
-
"confirmRegistration",
|
|
925
|
-
"verifyEmail"
|
|
926
|
-
]);
|
|
927
|
-
return !noInitMethods.has(methodName);
|
|
928
|
-
}
|
|
929
|
-
_requireReady(methodName) {
|
|
930
|
-
if (this._requiresInit(methodName) && !this._initialized) {
|
|
931
|
-
throw new Error("Auth service not initialized");
|
|
932
|
-
}
|
|
933
|
-
}
|
|
858
|
+
// Use BaseService.init/_request/_requireReady implementations
|
|
934
859
|
// ==================== AUTH METHODS ====================
|
|
935
860
|
async register(userData) {
|
|
936
861
|
try {
|
|
@@ -944,7 +869,7 @@ var AuthService = class extends BaseService {
|
|
|
944
869
|
}
|
|
945
870
|
throw new Error(response.message);
|
|
946
871
|
} catch (error) {
|
|
947
|
-
throw new Error(`Registration failed: ${error.message}
|
|
872
|
+
throw new Error(`Registration failed: ${error.message}`, { cause: error });
|
|
948
873
|
}
|
|
949
874
|
}
|
|
950
875
|
async login(email, password) {
|
|
@@ -966,14 +891,13 @@ var AuthService = class extends BaseService {
|
|
|
966
891
|
if (this._tokenManager) {
|
|
967
892
|
this._tokenManager.setTokens(tokenData);
|
|
968
893
|
}
|
|
969
|
-
this.updateContext({ authToken: tokens.accessToken });
|
|
970
894
|
}
|
|
971
895
|
if (response.success) {
|
|
972
896
|
return response.data;
|
|
973
897
|
}
|
|
974
898
|
throw new Error(response.message);
|
|
975
899
|
} catch (error) {
|
|
976
|
-
throw new Error(`Login failed: ${error.message}
|
|
900
|
+
throw new Error(`Login failed: ${error.message}`, { cause: error });
|
|
977
901
|
}
|
|
978
902
|
}
|
|
979
903
|
async logout() {
|
|
@@ -986,13 +910,11 @@ var AuthService = class extends BaseService {
|
|
|
986
910
|
if (this._tokenManager) {
|
|
987
911
|
this._tokenManager.clearTokens();
|
|
988
912
|
}
|
|
989
|
-
this.updateContext({ authToken: null });
|
|
990
913
|
} catch (error) {
|
|
991
914
|
if (this._tokenManager) {
|
|
992
915
|
this._tokenManager.clearTokens();
|
|
993
916
|
}
|
|
994
|
-
|
|
995
|
-
throw new Error(`Logout failed: ${error.message}`);
|
|
917
|
+
throw new Error(`Logout failed: ${error.message}`, { cause: error });
|
|
996
918
|
}
|
|
997
919
|
}
|
|
998
920
|
async refreshToken(refreshToken) {
|
|
@@ -1007,7 +929,7 @@ var AuthService = class extends BaseService {
|
|
|
1007
929
|
}
|
|
1008
930
|
throw new Error(response.message);
|
|
1009
931
|
} catch (error) {
|
|
1010
|
-
throw new Error(`Token refresh failed: ${error.message}
|
|
932
|
+
throw new Error(`Token refresh failed: ${error.message}`, { cause: error });
|
|
1011
933
|
}
|
|
1012
934
|
}
|
|
1013
935
|
async googleAuth(idToken, inviteToken = null) {
|
|
@@ -1033,14 +955,13 @@ var AuthService = class extends BaseService {
|
|
|
1033
955
|
if (this._tokenManager) {
|
|
1034
956
|
this._tokenManager.setTokens(tokenData);
|
|
1035
957
|
}
|
|
1036
|
-
this.updateContext({ authToken: tokens.accessToken });
|
|
1037
958
|
}
|
|
1038
959
|
if (response.success) {
|
|
1039
960
|
return response.data;
|
|
1040
961
|
}
|
|
1041
962
|
throw new Error(response.message);
|
|
1042
963
|
} catch (error) {
|
|
1043
|
-
throw new Error(`Google auth failed: ${error.message}
|
|
964
|
+
throw new Error(`Google auth failed: ${error.message}`, { cause: error });
|
|
1044
965
|
}
|
|
1045
966
|
}
|
|
1046
967
|
async githubAuth(code, inviteToken = null) {
|
|
@@ -1066,14 +987,13 @@ var AuthService = class extends BaseService {
|
|
|
1066
987
|
if (this._tokenManager) {
|
|
1067
988
|
this._tokenManager.setTokens(tokenData);
|
|
1068
989
|
}
|
|
1069
|
-
this.updateContext({ authToken: tokens.accessToken });
|
|
1070
990
|
}
|
|
1071
991
|
if (response.success) {
|
|
1072
992
|
return response.data;
|
|
1073
993
|
}
|
|
1074
994
|
throw new Error(response.message);
|
|
1075
995
|
} catch (error) {
|
|
1076
|
-
throw new Error(`GitHub auth failed: ${error.message}
|
|
996
|
+
throw new Error(`GitHub auth failed: ${error.message}`, { cause: error });
|
|
1077
997
|
}
|
|
1078
998
|
}
|
|
1079
999
|
async googleAuthCallback(code, redirectUri, inviteToken = null) {
|
|
@@ -1099,14 +1019,13 @@ var AuthService = class extends BaseService {
|
|
|
1099
1019
|
if (this._tokenManager) {
|
|
1100
1020
|
this._tokenManager.setTokens(tokenData);
|
|
1101
1021
|
}
|
|
1102
|
-
this.updateContext({ authToken: tokens.accessToken });
|
|
1103
1022
|
}
|
|
1104
1023
|
if (response.success) {
|
|
1105
1024
|
return response.data;
|
|
1106
1025
|
}
|
|
1107
1026
|
throw new Error(response.message);
|
|
1108
1027
|
} catch (error) {
|
|
1109
|
-
throw new Error(`Google auth callback failed: ${error.message}
|
|
1028
|
+
throw new Error(`Google auth callback failed: ${error.message}`, { cause: error });
|
|
1110
1029
|
}
|
|
1111
1030
|
}
|
|
1112
1031
|
async requestPasswordReset(email) {
|
|
@@ -1121,7 +1040,7 @@ var AuthService = class extends BaseService {
|
|
|
1121
1040
|
}
|
|
1122
1041
|
throw new Error(response.message);
|
|
1123
1042
|
} catch (error) {
|
|
1124
|
-
throw new Error(`Password reset request failed: ${error.message}
|
|
1043
|
+
throw new Error(`Password reset request failed: ${error.message}`, { cause: error });
|
|
1125
1044
|
}
|
|
1126
1045
|
}
|
|
1127
1046
|
async confirmPasswordReset(token, password) {
|
|
@@ -1136,7 +1055,7 @@ var AuthService = class extends BaseService {
|
|
|
1136
1055
|
}
|
|
1137
1056
|
throw new Error(response.message);
|
|
1138
1057
|
} catch (error) {
|
|
1139
|
-
throw new Error(`Password reset confirmation failed: ${error.message}
|
|
1058
|
+
throw new Error(`Password reset confirmation failed: ${error.message}`, { cause: error });
|
|
1140
1059
|
}
|
|
1141
1060
|
}
|
|
1142
1061
|
async confirmRegistration(token) {
|
|
@@ -1151,7 +1070,7 @@ var AuthService = class extends BaseService {
|
|
|
1151
1070
|
}
|
|
1152
1071
|
throw new Error(response.message);
|
|
1153
1072
|
} catch (error) {
|
|
1154
|
-
throw new Error(`Registration confirmation failed: ${error.message}
|
|
1073
|
+
throw new Error(`Registration confirmation failed: ${error.message}`, { cause: error });
|
|
1155
1074
|
}
|
|
1156
1075
|
}
|
|
1157
1076
|
async requestPasswordChange() {
|
|
@@ -1166,7 +1085,7 @@ var AuthService = class extends BaseService {
|
|
|
1166
1085
|
}
|
|
1167
1086
|
throw new Error(response.message);
|
|
1168
1087
|
} catch (error) {
|
|
1169
|
-
throw new Error(`Password change request failed: ${error.message}
|
|
1088
|
+
throw new Error(`Password change request failed: ${error.message}`, { cause: error });
|
|
1170
1089
|
}
|
|
1171
1090
|
}
|
|
1172
1091
|
async confirmPasswordChange(currentPassword, newPassword, code) {
|
|
@@ -1182,7 +1101,7 @@ var AuthService = class extends BaseService {
|
|
|
1182
1101
|
}
|
|
1183
1102
|
throw new Error(response.message);
|
|
1184
1103
|
} catch (error) {
|
|
1185
|
-
throw new Error(`Password change confirmation failed: ${error.message}
|
|
1104
|
+
throw new Error(`Password change confirmation failed: ${error.message}`, { cause: error });
|
|
1186
1105
|
}
|
|
1187
1106
|
}
|
|
1188
1107
|
async getMe() {
|
|
@@ -1197,7 +1116,7 @@ var AuthService = class extends BaseService {
|
|
|
1197
1116
|
}
|
|
1198
1117
|
throw new Error(response.message);
|
|
1199
1118
|
} catch (error) {
|
|
1200
|
-
throw new Error(`Failed to get user profile: ${error.message}
|
|
1119
|
+
throw new Error(`Failed to get user profile: ${error.message}`, { cause: error });
|
|
1201
1120
|
}
|
|
1202
1121
|
}
|
|
1203
1122
|
/**
|
|
@@ -1297,7 +1216,7 @@ var AuthService = class extends BaseService {
|
|
|
1297
1216
|
}
|
|
1298
1217
|
throw new Error(response.message);
|
|
1299
1218
|
} catch (error) {
|
|
1300
|
-
throw new Error(`Failed to get user profile: ${error.message}
|
|
1219
|
+
throw new Error(`Failed to get user profile: ${error.message}`, { cause: error });
|
|
1301
1220
|
}
|
|
1302
1221
|
}
|
|
1303
1222
|
async updateUserProfile(profileData) {
|
|
@@ -1313,7 +1232,7 @@ var AuthService = class extends BaseService {
|
|
|
1313
1232
|
}
|
|
1314
1233
|
throw new Error(response.message);
|
|
1315
1234
|
} catch (error) {
|
|
1316
|
-
throw new Error(`Failed to update user profile: ${error.message}
|
|
1235
|
+
throw new Error(`Failed to update user profile: ${error.message}`, { cause: error });
|
|
1317
1236
|
}
|
|
1318
1237
|
}
|
|
1319
1238
|
async getUserProjects() {
|
|
@@ -1336,7 +1255,7 @@ var AuthService = class extends BaseService {
|
|
|
1336
1255
|
}
|
|
1337
1256
|
throw new Error(response.message);
|
|
1338
1257
|
} catch (error) {
|
|
1339
|
-
throw new Error(`Failed to get user projects: ${error.message}
|
|
1258
|
+
throw new Error(`Failed to get user projects: ${error.message}`, { cause: error });
|
|
1340
1259
|
}
|
|
1341
1260
|
}
|
|
1342
1261
|
async getUser(userId) {
|
|
@@ -1354,7 +1273,7 @@ var AuthService = class extends BaseService {
|
|
|
1354
1273
|
}
|
|
1355
1274
|
throw new Error(response.message);
|
|
1356
1275
|
} catch (error) {
|
|
1357
|
-
throw new Error(`Failed to get user: ${error.message}
|
|
1276
|
+
throw new Error(`Failed to get user: ${error.message}`, { cause: error });
|
|
1358
1277
|
}
|
|
1359
1278
|
}
|
|
1360
1279
|
async getUserByEmail(email) {
|
|
@@ -1372,7 +1291,7 @@ var AuthService = class extends BaseService {
|
|
|
1372
1291
|
}
|
|
1373
1292
|
throw new Error(response.message);
|
|
1374
1293
|
} catch (error) {
|
|
1375
|
-
throw new Error(`Failed to get user by email: ${error.message}
|
|
1294
|
+
throw new Error(`Failed to get user by email: ${error.message}`, { cause: error });
|
|
1376
1295
|
}
|
|
1377
1296
|
}
|
|
1378
1297
|
// ==================== PROJECT ROLE METHODS ====================
|
|
@@ -1385,6 +1304,9 @@ var AuthService = class extends BaseService {
|
|
|
1385
1304
|
if (!projectId) {
|
|
1386
1305
|
throw new Error("Project ID is required");
|
|
1387
1306
|
}
|
|
1307
|
+
if (!this.hasValidTokens()) {
|
|
1308
|
+
return "guest";
|
|
1309
|
+
}
|
|
1388
1310
|
const cacheKey = `role_${projectId}`;
|
|
1389
1311
|
const cached = this._projectRoleCache.get(cacheKey);
|
|
1390
1312
|
if (cached && Date.now() - cached.timestamp < this._roleCacheExpiry) {
|
|
@@ -1405,7 +1327,11 @@ var AuthService = class extends BaseService {
|
|
|
1405
1327
|
}
|
|
1406
1328
|
throw new Error(response.message);
|
|
1407
1329
|
} catch (error) {
|
|
1408
|
-
|
|
1330
|
+
const message = (error == null ? void 0 : error.message) || "";
|
|
1331
|
+
if (/401|403|unauthorized|no token|invalid token/iu.test(message)) {
|
|
1332
|
+
return "guest";
|
|
1333
|
+
}
|
|
1334
|
+
throw new Error(`Failed to get project role: ${message}`, { cause: error });
|
|
1409
1335
|
}
|
|
1410
1336
|
}
|
|
1411
1337
|
/**
|
|
@@ -1417,6 +1343,9 @@ var AuthService = class extends BaseService {
|
|
|
1417
1343
|
if (!projectKey) {
|
|
1418
1344
|
throw new Error("Project key is required");
|
|
1419
1345
|
}
|
|
1346
|
+
if (!this.hasValidTokens()) {
|
|
1347
|
+
return "guest";
|
|
1348
|
+
}
|
|
1420
1349
|
const cacheKey = `role_key_${projectKey}`;
|
|
1421
1350
|
const cached = this._projectRoleCache.get(cacheKey);
|
|
1422
1351
|
if (cached && Date.now() - cached.timestamp < this._roleCacheExpiry) {
|
|
@@ -1437,7 +1366,11 @@ var AuthService = class extends BaseService {
|
|
|
1437
1366
|
}
|
|
1438
1367
|
throw new Error(response.message);
|
|
1439
1368
|
} catch (error) {
|
|
1440
|
-
|
|
1369
|
+
const message = (error == null ? void 0 : error.message) || "";
|
|
1370
|
+
if (/401|403|unauthorized|no token|invalid token/iu.test(message)) {
|
|
1371
|
+
return "guest";
|
|
1372
|
+
}
|
|
1373
|
+
throw new Error(`Failed to get project role by key: ${message}`, { cause: error });
|
|
1441
1374
|
}
|
|
1442
1375
|
}
|
|
1443
1376
|
/**
|
|
@@ -1540,7 +1473,7 @@ var AuthService = class extends BaseService {
|
|
|
1540
1473
|
try {
|
|
1541
1474
|
return await this.getMe();
|
|
1542
1475
|
} catch (error) {
|
|
1543
|
-
throw new Error(`Failed to get current user: ${error.message}
|
|
1476
|
+
throw new Error(`Failed to get current user: ${error.message}`, { cause: error });
|
|
1544
1477
|
}
|
|
1545
1478
|
}
|
|
1546
1479
|
/**
|
|
@@ -1697,7 +1630,6 @@ var AuthService = class extends BaseService {
|
|
|
1697
1630
|
this._tokenManager = null;
|
|
1698
1631
|
}
|
|
1699
1632
|
this._projectRoleCache.clear();
|
|
1700
|
-
this._initialized = false;
|
|
1701
1633
|
this._setReady(false);
|
|
1702
1634
|
}
|
|
1703
1635
|
};
|