@symbo.ls/sdk 2.32.0 → 2.32.2
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 +8 -43
- package/dist/cjs/index.js +4 -12
- package/dist/cjs/services/AdminService.js +4 -4
- package/dist/cjs/services/AuthService.js +149 -36
- package/dist/cjs/services/BaseService.js +18 -5
- package/dist/cjs/services/BranchService.js +10 -10
- package/dist/cjs/services/CollabService.js +18 -114
- 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 +34 -39
- package/dist/cjs/services/PullRequestService.js +7 -7
- package/dist/cjs/services/SubscriptionService.js +14 -14
- package/dist/cjs/services/index.js +0 -4
- package/dist/cjs/utils/TokenManager.js +5 -16
- package/dist/cjs/utils/services.js +1 -14
- package/dist/esm/config/environment.js +8 -43
- package/dist/esm/index.js +300 -907
- package/dist/esm/services/AdminService.js +35 -68
- package/dist/esm/services/AuthService.js +168 -100
- package/dist/esm/services/BaseService.js +31 -64
- package/dist/esm/services/BranchService.js +41 -74
- package/dist/esm/services/CollabService.js +50 -452
- package/dist/esm/services/CoreService.js +50 -83
- package/dist/esm/services/DnsService.js +35 -68
- package/dist/esm/services/FileService.js +33 -66
- package/dist/esm/services/PaymentService.js +33 -66
- package/dist/esm/services/PlanService.js +43 -76
- package/dist/esm/services/ProjectService.js +65 -375
- package/dist/esm/services/PullRequestService.js +38 -71
- package/dist/esm/services/SubscriptionService.js +45 -78
- package/dist/esm/services/index.js +295 -884
- package/dist/esm/utils/CollabClient.js +8 -43
- package/dist/esm/utils/TokenManager.js +5 -16
- package/dist/esm/utils/services.js +1 -14
- package/dist/node/config/environment.js +8 -43
- package/dist/node/index.js +5 -14
- package/dist/node/services/AdminService.js +4 -4
- package/dist/node/services/AuthService.js +139 -36
- package/dist/node/services/BaseService.js +18 -5
- package/dist/node/services/BranchService.js +10 -10
- package/dist/node/services/CollabService.js +19 -115
- 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 +34 -39
- package/dist/node/services/PullRequestService.js +7 -7
- package/dist/node/services/SubscriptionService.js +14 -14
- package/dist/node/services/index.js +0 -4
- package/dist/node/utils/TokenManager.js +5 -16
- package/dist/node/utils/services.js +1 -14
- package/package.json +6 -7
- package/src/config/environment.js +9 -48
- package/src/index.js +22 -38
- package/src/services/AdminService.js +4 -4
- package/src/services/AuthService.js +175 -42
- package/src/services/BaseService.js +24 -7
- package/src/services/BranchService.js +10 -10
- package/src/services/CollabService.js +19 -142
- 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 +34 -41
- package/src/services/PullRequestService.js +7 -7
- package/src/services/SubscriptionService.js +14 -14
- package/src/services/index.js +1 -6
- package/src/utils/TokenManager.js +5 -19
- package/src/utils/services.js +1 -15
- package/dist/cjs/services/ScreenshotService.js +0 -304
- package/dist/cjs/utils/ordering.js +0 -295
- package/dist/esm/services/ScreenshotService.js +0 -992
- package/dist/esm/utils/ordering.js +0 -277
- package/dist/node/services/ScreenshotService.js +0 -285
- package/dist/node/utils/ordering.js +0 -276
- package/src/services/ScreenshotService.js +0 -258
- package/src/utils/ordering.js +0 -240
|
@@ -28,28 +28,18 @@ var CONFIG = {
|
|
|
28
28
|
// For based api
|
|
29
29
|
basedOrg: "symbols",
|
|
30
30
|
// For based api
|
|
31
|
-
githubClientId: "
|
|
31
|
+
githubClientId: "Ov23liHxyWFBxS8f1gnF",
|
|
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
|
-
}
|
|
38
|
-
typesenseCollectionName: "docs",
|
|
39
|
-
typesenseApiKey: "vZya3L2zpq8L6iI5WWMUZJZABvT63VDb",
|
|
40
|
-
typesenseHost: "localhost",
|
|
41
|
-
typesensePort: "8108",
|
|
42
|
-
typesenseProtocol: "http"
|
|
37
|
+
}
|
|
43
38
|
},
|
|
44
39
|
development: {
|
|
45
40
|
socketUrl: "https://dev.api.symbols.app",
|
|
46
41
|
apiUrl: "https://dev.api.symbols.app",
|
|
47
|
-
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
48
|
-
typesenseCollectionName: "docs",
|
|
49
|
-
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
50
|
-
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
51
|
-
typesensePort: "443",
|
|
52
|
-
typesenseProtocol: "https"
|
|
42
|
+
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
53
43
|
},
|
|
54
44
|
testing: {
|
|
55
45
|
socketUrl: "https://test.api.symbols.app",
|
|
@@ -57,22 +47,12 @@ var CONFIG = {
|
|
|
57
47
|
basedEnv: "testing",
|
|
58
48
|
basedProject: "platform-v2-sm",
|
|
59
49
|
basedOrg: "symbols",
|
|
60
|
-
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
61
|
-
typesenseCollectionName: "docs",
|
|
62
|
-
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
63
|
-
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
64
|
-
typesensePort: "443",
|
|
65
|
-
typesenseProtocol: "https"
|
|
50
|
+
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
66
51
|
},
|
|
67
52
|
upcoming: {
|
|
68
53
|
socketUrl: "https://upcoming.api.symbols.app",
|
|
69
54
|
apiUrl: "https://upcoming.api.symbols.app",
|
|
70
|
-
githubClientId: "Ov23liWF7NvdZ056RV5J"
|
|
71
|
-
typesenseCollectionName: "docs",
|
|
72
|
-
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
73
|
-
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
74
|
-
typesensePort: "443",
|
|
75
|
-
typesenseProtocol: "https"
|
|
55
|
+
githubClientId: "Ov23liWF7NvdZ056RV5J"
|
|
76
56
|
},
|
|
77
57
|
staging: {
|
|
78
58
|
socketUrl: "https://staging.api.symbols.app",
|
|
@@ -80,12 +60,7 @@ var CONFIG = {
|
|
|
80
60
|
basedEnv: "staging",
|
|
81
61
|
basedProject: "platform-v2-sm",
|
|
82
62
|
basedOrg: "symbols",
|
|
83
|
-
githubClientId: "Ov23ligwZDQVD0VfuWNa"
|
|
84
|
-
typesenseCollectionName: "docs",
|
|
85
|
-
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
86
|
-
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
87
|
-
typesensePort: "443",
|
|
88
|
-
typesenseProtocol: "https"
|
|
63
|
+
githubClientId: "Ov23ligwZDQVD0VfuWNa"
|
|
89
64
|
},
|
|
90
65
|
production: {
|
|
91
66
|
socketUrl: "https://api.symbols.app",
|
|
@@ -93,12 +68,7 @@ var CONFIG = {
|
|
|
93
68
|
basedEnv: "production",
|
|
94
69
|
basedProject: "platform-v2-sm",
|
|
95
70
|
basedOrg: "symbols",
|
|
96
|
-
githubClientId: "Ov23liFAlOEIXtX3dBtR"
|
|
97
|
-
typesenseCollectionName: "docs",
|
|
98
|
-
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
99
|
-
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
100
|
-
typesensePort: "443",
|
|
101
|
-
typesenseProtocol: "https"
|
|
71
|
+
githubClientId: "Ov23liFAlOEIXtX3dBtR"
|
|
102
72
|
}
|
|
103
73
|
};
|
|
104
74
|
var getEnvironment = () => {
|
|
@@ -120,11 +90,6 @@ var getConfig = () => {
|
|
|
120
90
|
basedProject: process.env.SYMBOLS_APP_BASED_PROJECT || envConfig.basedProject,
|
|
121
91
|
basedOrg: process.env.SYMBOLS_APP_BASED_ORG || envConfig.basedOrg,
|
|
122
92
|
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,
|
|
128
93
|
isDevelopment: isDevelopment(env),
|
|
129
94
|
isTesting: env === "testing",
|
|
130
95
|
isStaging: env === "staging",
|
|
@@ -144,7 +109,7 @@ var getConfig = () => {
|
|
|
144
109
|
);
|
|
145
110
|
}
|
|
146
111
|
if (finalConfig.isDevelopment) {
|
|
147
|
-
console.
|
|
112
|
+
console.log(
|
|
148
113
|
"environment in SDK:",
|
|
149
114
|
env || process.env.NODE_ENV || process.env.NODE_ENV
|
|
150
115
|
);
|
|
@@ -183,7 +148,7 @@ var TokenManager = class {
|
|
|
183
148
|
});
|
|
184
149
|
this.config = {
|
|
185
150
|
storagePrefix: "symbols_",
|
|
186
|
-
storageType: typeof window === "undefined" || process.env.NODE_ENV === "test"
|
|
151
|
+
storageType: typeof window === "undefined" || process.env.NODE_ENV === "test" ? "memory" : "localStorage",
|
|
187
152
|
// 'localStorage' | 'sessionStorage' | 'memory'
|
|
188
153
|
refreshBuffer: 60 * 1e3,
|
|
189
154
|
// Refresh 1 minute before expiry
|
|
@@ -223,26 +188,15 @@ var TokenManager = class {
|
|
|
223
188
|
if (typeof window === "undefined") {
|
|
224
189
|
return this._memoryStorage;
|
|
225
190
|
}
|
|
226
|
-
const
|
|
227
|
-
|
|
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);
|
|
191
|
+
const hasLocalStorage = typeof window.localStorage !== "undefined";
|
|
192
|
+
const hasSessionStorage = typeof window.sessionStorage !== "undefined";
|
|
239
193
|
switch (this.config.storageType) {
|
|
240
194
|
case "sessionStorage":
|
|
241
|
-
return
|
|
195
|
+
return hasSessionStorage ? window.sessionStorage : this._memoryStorage;
|
|
242
196
|
case "memory":
|
|
243
197
|
return this._memoryStorage;
|
|
244
198
|
default:
|
|
245
|
-
return
|
|
199
|
+
return hasLocalStorage ? window.localStorage : this._memoryStorage;
|
|
246
200
|
}
|
|
247
201
|
}
|
|
248
202
|
/**
|
|
@@ -581,10 +535,20 @@ var BaseService = class {
|
|
|
581
535
|
}
|
|
582
536
|
this._tokenManager = getTokenManager({
|
|
583
537
|
apiUrl: this._apiUrl,
|
|
538
|
+
onTokenRefresh: (tokens) => {
|
|
539
|
+
this.updateContext({ authToken: tokens.accessToken });
|
|
540
|
+
},
|
|
541
|
+
onTokenExpired: () => {
|
|
542
|
+
this.updateContext({ authToken: null });
|
|
543
|
+
},
|
|
584
544
|
onTokenError: (error) => {
|
|
585
545
|
console.error("Token management error:", error);
|
|
586
546
|
}
|
|
587
547
|
});
|
|
548
|
+
const { authToken } = this._context;
|
|
549
|
+
if (authToken && !this._tokenManager.hasTokens()) {
|
|
550
|
+
this._tokenManager.setTokens({ access_token: authToken });
|
|
551
|
+
}
|
|
588
552
|
this._setReady();
|
|
589
553
|
} catch (error) {
|
|
590
554
|
this._setError(error);
|
|
@@ -593,9 +557,7 @@ var BaseService = class {
|
|
|
593
557
|
}
|
|
594
558
|
// Update context
|
|
595
559
|
updateContext(context) {
|
|
596
|
-
|
|
597
|
-
Object.assign(this._context, context);
|
|
598
|
-
}
|
|
560
|
+
this._context = { ...this._context, ...context };
|
|
599
561
|
}
|
|
600
562
|
// Get service status
|
|
601
563
|
getStatus() {
|
|
@@ -650,6 +612,11 @@ var BaseService = class {
|
|
|
650
612
|
error
|
|
651
613
|
);
|
|
652
614
|
}
|
|
615
|
+
} else if (this._requiresInit(options.methodName)) {
|
|
616
|
+
const { authToken } = this._context;
|
|
617
|
+
if (authToken) {
|
|
618
|
+
defaultHeaders.Authorization = `Bearer ${authToken}`;
|
|
619
|
+
}
|
|
653
620
|
}
|
|
654
621
|
try {
|
|
655
622
|
const response = await fetch(url, {
|
|
@@ -667,11 +634,11 @@ var BaseService = class {
|
|
|
667
634
|
error = await response.json();
|
|
668
635
|
} catch {
|
|
669
636
|
}
|
|
670
|
-
throw new Error(error.message || error.error || "Request failed"
|
|
637
|
+
throw new Error(error.message || error.error || "Request failed");
|
|
671
638
|
}
|
|
672
639
|
return response.status === 204 ? null : response.json();
|
|
673
640
|
} catch (error) {
|
|
674
|
-
throw new Error(`Request failed: ${error.message}
|
|
641
|
+
throw new Error(`Request failed: ${error.message}`);
|
|
675
642
|
}
|
|
676
643
|
}
|
|
677
644
|
// Helper method to determine if a method requires initialization
|
|
@@ -852,10 +819,118 @@ var AuthService = class extends BaseService {
|
|
|
852
819
|
"pro2",
|
|
853
820
|
"enterprise"
|
|
854
821
|
]);
|
|
822
|
+
this._initialized = false;
|
|
823
|
+
this._apiUrl = null;
|
|
824
|
+
this._tokenManager = null;
|
|
855
825
|
this._projectRoleCache = /* @__PURE__ */ new Map();
|
|
856
826
|
this._roleCacheExpiry = 5 * 60 * 1e3;
|
|
857
827
|
}
|
|
858
|
-
|
|
828
|
+
init({ context }) {
|
|
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
|
+
}
|
|
859
934
|
// ==================== AUTH METHODS ====================
|
|
860
935
|
async register(userData) {
|
|
861
936
|
try {
|
|
@@ -869,7 +944,7 @@ var AuthService = class extends BaseService {
|
|
|
869
944
|
}
|
|
870
945
|
throw new Error(response.message);
|
|
871
946
|
} catch (error) {
|
|
872
|
-
throw new Error(`Registration failed: ${error.message}
|
|
947
|
+
throw new Error(`Registration failed: ${error.message}`);
|
|
873
948
|
}
|
|
874
949
|
}
|
|
875
950
|
async login(email, password) {
|
|
@@ -891,13 +966,14 @@ var AuthService = class extends BaseService {
|
|
|
891
966
|
if (this._tokenManager) {
|
|
892
967
|
this._tokenManager.setTokens(tokenData);
|
|
893
968
|
}
|
|
969
|
+
this.updateContext({ authToken: tokens.accessToken });
|
|
894
970
|
}
|
|
895
971
|
if (response.success) {
|
|
896
972
|
return response.data;
|
|
897
973
|
}
|
|
898
974
|
throw new Error(response.message);
|
|
899
975
|
} catch (error) {
|
|
900
|
-
throw new Error(`Login failed: ${error.message}
|
|
976
|
+
throw new Error(`Login failed: ${error.message}`);
|
|
901
977
|
}
|
|
902
978
|
}
|
|
903
979
|
async logout() {
|
|
@@ -910,11 +986,13 @@ var AuthService = class extends BaseService {
|
|
|
910
986
|
if (this._tokenManager) {
|
|
911
987
|
this._tokenManager.clearTokens();
|
|
912
988
|
}
|
|
989
|
+
this.updateContext({ authToken: null });
|
|
913
990
|
} catch (error) {
|
|
914
991
|
if (this._tokenManager) {
|
|
915
992
|
this._tokenManager.clearTokens();
|
|
916
993
|
}
|
|
917
|
-
|
|
994
|
+
this.updateContext({ authToken: null });
|
|
995
|
+
throw new Error(`Logout failed: ${error.message}`);
|
|
918
996
|
}
|
|
919
997
|
}
|
|
920
998
|
async refreshToken(refreshToken) {
|
|
@@ -929,7 +1007,7 @@ var AuthService = class extends BaseService {
|
|
|
929
1007
|
}
|
|
930
1008
|
throw new Error(response.message);
|
|
931
1009
|
} catch (error) {
|
|
932
|
-
throw new Error(`Token refresh failed: ${error.message}
|
|
1010
|
+
throw new Error(`Token refresh failed: ${error.message}`);
|
|
933
1011
|
}
|
|
934
1012
|
}
|
|
935
1013
|
async googleAuth(idToken, inviteToken = null) {
|
|
@@ -955,13 +1033,14 @@ var AuthService = class extends BaseService {
|
|
|
955
1033
|
if (this._tokenManager) {
|
|
956
1034
|
this._tokenManager.setTokens(tokenData);
|
|
957
1035
|
}
|
|
1036
|
+
this.updateContext({ authToken: tokens.accessToken });
|
|
958
1037
|
}
|
|
959
1038
|
if (response.success) {
|
|
960
1039
|
return response.data;
|
|
961
1040
|
}
|
|
962
1041
|
throw new Error(response.message);
|
|
963
1042
|
} catch (error) {
|
|
964
|
-
throw new Error(`Google auth failed: ${error.message}
|
|
1043
|
+
throw new Error(`Google auth failed: ${error.message}`);
|
|
965
1044
|
}
|
|
966
1045
|
}
|
|
967
1046
|
async githubAuth(code, inviteToken = null) {
|
|
@@ -987,13 +1066,14 @@ var AuthService = class extends BaseService {
|
|
|
987
1066
|
if (this._tokenManager) {
|
|
988
1067
|
this._tokenManager.setTokens(tokenData);
|
|
989
1068
|
}
|
|
1069
|
+
this.updateContext({ authToken: tokens.accessToken });
|
|
990
1070
|
}
|
|
991
1071
|
if (response.success) {
|
|
992
1072
|
return response.data;
|
|
993
1073
|
}
|
|
994
1074
|
throw new Error(response.message);
|
|
995
1075
|
} catch (error) {
|
|
996
|
-
throw new Error(`GitHub auth failed: ${error.message}
|
|
1076
|
+
throw new Error(`GitHub auth failed: ${error.message}`);
|
|
997
1077
|
}
|
|
998
1078
|
}
|
|
999
1079
|
async googleAuthCallback(code, redirectUri, inviteToken = null) {
|
|
@@ -1019,13 +1099,14 @@ var AuthService = class extends BaseService {
|
|
|
1019
1099
|
if (this._tokenManager) {
|
|
1020
1100
|
this._tokenManager.setTokens(tokenData);
|
|
1021
1101
|
}
|
|
1102
|
+
this.updateContext({ authToken: tokens.accessToken });
|
|
1022
1103
|
}
|
|
1023
1104
|
if (response.success) {
|
|
1024
1105
|
return response.data;
|
|
1025
1106
|
}
|
|
1026
1107
|
throw new Error(response.message);
|
|
1027
1108
|
} catch (error) {
|
|
1028
|
-
throw new Error(`Google auth callback failed: ${error.message}
|
|
1109
|
+
throw new Error(`Google auth callback failed: ${error.message}`);
|
|
1029
1110
|
}
|
|
1030
1111
|
}
|
|
1031
1112
|
async requestPasswordReset(email) {
|
|
@@ -1040,7 +1121,7 @@ var AuthService = class extends BaseService {
|
|
|
1040
1121
|
}
|
|
1041
1122
|
throw new Error(response.message);
|
|
1042
1123
|
} catch (error) {
|
|
1043
|
-
throw new Error(`Password reset request failed: ${error.message}
|
|
1124
|
+
throw new Error(`Password reset request failed: ${error.message}`);
|
|
1044
1125
|
}
|
|
1045
1126
|
}
|
|
1046
1127
|
async confirmPasswordReset(token, password) {
|
|
@@ -1055,7 +1136,7 @@ var AuthService = class extends BaseService {
|
|
|
1055
1136
|
}
|
|
1056
1137
|
throw new Error(response.message);
|
|
1057
1138
|
} catch (error) {
|
|
1058
|
-
throw new Error(`Password reset confirmation failed: ${error.message}
|
|
1139
|
+
throw new Error(`Password reset confirmation failed: ${error.message}`);
|
|
1059
1140
|
}
|
|
1060
1141
|
}
|
|
1061
1142
|
async confirmRegistration(token) {
|
|
@@ -1070,7 +1151,7 @@ var AuthService = class extends BaseService {
|
|
|
1070
1151
|
}
|
|
1071
1152
|
throw new Error(response.message);
|
|
1072
1153
|
} catch (error) {
|
|
1073
|
-
throw new Error(`Registration confirmation failed: ${error.message}
|
|
1154
|
+
throw new Error(`Registration confirmation failed: ${error.message}`);
|
|
1074
1155
|
}
|
|
1075
1156
|
}
|
|
1076
1157
|
async requestPasswordChange() {
|
|
@@ -1085,7 +1166,7 @@ var AuthService = class extends BaseService {
|
|
|
1085
1166
|
}
|
|
1086
1167
|
throw new Error(response.message);
|
|
1087
1168
|
} catch (error) {
|
|
1088
|
-
throw new Error(`Password change request failed: ${error.message}
|
|
1169
|
+
throw new Error(`Password change request failed: ${error.message}`);
|
|
1089
1170
|
}
|
|
1090
1171
|
}
|
|
1091
1172
|
async confirmPasswordChange(currentPassword, newPassword, code) {
|
|
@@ -1101,7 +1182,7 @@ var AuthService = class extends BaseService {
|
|
|
1101
1182
|
}
|
|
1102
1183
|
throw new Error(response.message);
|
|
1103
1184
|
} catch (error) {
|
|
1104
|
-
throw new Error(`Password change confirmation failed: ${error.message}
|
|
1185
|
+
throw new Error(`Password change confirmation failed: ${error.message}`);
|
|
1105
1186
|
}
|
|
1106
1187
|
}
|
|
1107
1188
|
async getMe() {
|
|
@@ -1116,7 +1197,7 @@ var AuthService = class extends BaseService {
|
|
|
1116
1197
|
}
|
|
1117
1198
|
throw new Error(response.message);
|
|
1118
1199
|
} catch (error) {
|
|
1119
|
-
throw new Error(`Failed to get user profile: ${error.message}
|
|
1200
|
+
throw new Error(`Failed to get user profile: ${error.message}`);
|
|
1120
1201
|
}
|
|
1121
1202
|
}
|
|
1122
1203
|
/**
|
|
@@ -1216,7 +1297,7 @@ var AuthService = class extends BaseService {
|
|
|
1216
1297
|
}
|
|
1217
1298
|
throw new Error(response.message);
|
|
1218
1299
|
} catch (error) {
|
|
1219
|
-
throw new Error(`Failed to get user profile: ${error.message}
|
|
1300
|
+
throw new Error(`Failed to get user profile: ${error.message}`);
|
|
1220
1301
|
}
|
|
1221
1302
|
}
|
|
1222
1303
|
async updateUserProfile(profileData) {
|
|
@@ -1232,7 +1313,7 @@ var AuthService = class extends BaseService {
|
|
|
1232
1313
|
}
|
|
1233
1314
|
throw new Error(response.message);
|
|
1234
1315
|
} catch (error) {
|
|
1235
|
-
throw new Error(`Failed to update user profile: ${error.message}
|
|
1316
|
+
throw new Error(`Failed to update user profile: ${error.message}`);
|
|
1236
1317
|
}
|
|
1237
1318
|
}
|
|
1238
1319
|
async getUserProjects() {
|
|
@@ -1255,7 +1336,7 @@ var AuthService = class extends BaseService {
|
|
|
1255
1336
|
}
|
|
1256
1337
|
throw new Error(response.message);
|
|
1257
1338
|
} catch (error) {
|
|
1258
|
-
throw new Error(`Failed to get user projects: ${error.message}
|
|
1339
|
+
throw new Error(`Failed to get user projects: ${error.message}`);
|
|
1259
1340
|
}
|
|
1260
1341
|
}
|
|
1261
1342
|
async getUser(userId) {
|
|
@@ -1273,7 +1354,7 @@ var AuthService = class extends BaseService {
|
|
|
1273
1354
|
}
|
|
1274
1355
|
throw new Error(response.message);
|
|
1275
1356
|
} catch (error) {
|
|
1276
|
-
throw new Error(`Failed to get user: ${error.message}
|
|
1357
|
+
throw new Error(`Failed to get user: ${error.message}`);
|
|
1277
1358
|
}
|
|
1278
1359
|
}
|
|
1279
1360
|
async getUserByEmail(email) {
|
|
@@ -1291,7 +1372,7 @@ var AuthService = class extends BaseService {
|
|
|
1291
1372
|
}
|
|
1292
1373
|
throw new Error(response.message);
|
|
1293
1374
|
} catch (error) {
|
|
1294
|
-
throw new Error(`Failed to get user by email: ${error.message}
|
|
1375
|
+
throw new Error(`Failed to get user by email: ${error.message}`);
|
|
1295
1376
|
}
|
|
1296
1377
|
}
|
|
1297
1378
|
// ==================== PROJECT ROLE METHODS ====================
|
|
@@ -1304,9 +1385,6 @@ var AuthService = class extends BaseService {
|
|
|
1304
1385
|
if (!projectId) {
|
|
1305
1386
|
throw new Error("Project ID is required");
|
|
1306
1387
|
}
|
|
1307
|
-
if (!this.hasValidTokens()) {
|
|
1308
|
-
return "guest";
|
|
1309
|
-
}
|
|
1310
1388
|
const cacheKey = `role_${projectId}`;
|
|
1311
1389
|
const cached = this._projectRoleCache.get(cacheKey);
|
|
1312
1390
|
if (cached && Date.now() - cached.timestamp < this._roleCacheExpiry) {
|
|
@@ -1327,11 +1405,7 @@ var AuthService = class extends BaseService {
|
|
|
1327
1405
|
}
|
|
1328
1406
|
throw new Error(response.message);
|
|
1329
1407
|
} catch (error) {
|
|
1330
|
-
|
|
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 });
|
|
1408
|
+
throw new Error(`Failed to get project role: ${error.message}`);
|
|
1335
1409
|
}
|
|
1336
1410
|
}
|
|
1337
1411
|
/**
|
|
@@ -1343,9 +1417,6 @@ var AuthService = class extends BaseService {
|
|
|
1343
1417
|
if (!projectKey) {
|
|
1344
1418
|
throw new Error("Project key is required");
|
|
1345
1419
|
}
|
|
1346
|
-
if (!this.hasValidTokens()) {
|
|
1347
|
-
return "guest";
|
|
1348
|
-
}
|
|
1349
1420
|
const cacheKey = `role_key_${projectKey}`;
|
|
1350
1421
|
const cached = this._projectRoleCache.get(cacheKey);
|
|
1351
1422
|
if (cached && Date.now() - cached.timestamp < this._roleCacheExpiry) {
|
|
@@ -1366,11 +1437,7 @@ var AuthService = class extends BaseService {
|
|
|
1366
1437
|
}
|
|
1367
1438
|
throw new Error(response.message);
|
|
1368
1439
|
} catch (error) {
|
|
1369
|
-
|
|
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 });
|
|
1440
|
+
throw new Error(`Failed to get project role by key: ${error.message}`);
|
|
1374
1441
|
}
|
|
1375
1442
|
}
|
|
1376
1443
|
/**
|
|
@@ -1473,7 +1540,7 @@ var AuthService = class extends BaseService {
|
|
|
1473
1540
|
try {
|
|
1474
1541
|
return await this.getMe();
|
|
1475
1542
|
} catch (error) {
|
|
1476
|
-
throw new Error(`Failed to get current user: ${error.message}
|
|
1543
|
+
throw new Error(`Failed to get current user: ${error.message}`);
|
|
1477
1544
|
}
|
|
1478
1545
|
}
|
|
1479
1546
|
/**
|
|
@@ -1630,6 +1697,7 @@ var AuthService = class extends BaseService {
|
|
|
1630
1697
|
this._tokenManager = null;
|
|
1631
1698
|
}
|
|
1632
1699
|
this._projectRoleCache.clear();
|
|
1700
|
+
this._initialized = false;
|
|
1633
1701
|
this._setReady(false);
|
|
1634
1702
|
}
|
|
1635
1703
|
};
|