@symbo.ls/sdk 2.32.1 → 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.
Files changed (82) hide show
  1. package/dist/cjs/config/environment.js +8 -43
  2. package/dist/cjs/index.js +4 -12
  3. package/dist/cjs/services/AdminService.js +4 -4
  4. package/dist/cjs/services/AuthService.js +149 -36
  5. package/dist/cjs/services/BaseService.js +18 -5
  6. package/dist/cjs/services/BranchService.js +10 -10
  7. package/dist/cjs/services/CollabService.js +61 -163
  8. package/dist/cjs/services/CoreService.js +19 -19
  9. package/dist/cjs/services/DnsService.js +4 -4
  10. package/dist/cjs/services/FileService.js +2 -2
  11. package/dist/cjs/services/PaymentService.js +2 -2
  12. package/dist/cjs/services/PlanService.js +12 -12
  13. package/dist/cjs/services/ProjectService.js +34 -39
  14. package/dist/cjs/services/PullRequestService.js +7 -7
  15. package/dist/cjs/services/SubscriptionService.js +14 -14
  16. package/dist/cjs/services/index.js +0 -4
  17. package/dist/cjs/utils/TokenManager.js +5 -16
  18. package/dist/cjs/utils/services.js +1 -14
  19. package/dist/esm/config/environment.js +8 -43
  20. package/dist/esm/index.js +343 -937
  21. package/dist/esm/services/AdminService.js +35 -68
  22. package/dist/esm/services/AuthService.js +168 -100
  23. package/dist/esm/services/BaseService.js +31 -64
  24. package/dist/esm/services/BranchService.js +41 -74
  25. package/dist/esm/services/CollabService.js +93 -482
  26. package/dist/esm/services/CoreService.js +50 -83
  27. package/dist/esm/services/DnsService.js +35 -68
  28. package/dist/esm/services/FileService.js +33 -66
  29. package/dist/esm/services/PaymentService.js +33 -66
  30. package/dist/esm/services/PlanService.js +43 -76
  31. package/dist/esm/services/ProjectService.js +65 -356
  32. package/dist/esm/services/PullRequestService.js +38 -71
  33. package/dist/esm/services/SubscriptionService.js +45 -78
  34. package/dist/esm/services/index.js +338 -914
  35. package/dist/esm/utils/CollabClient.js +8 -43
  36. package/dist/esm/utils/TokenManager.js +5 -16
  37. package/dist/esm/utils/services.js +1 -14
  38. package/dist/node/config/environment.js +8 -43
  39. package/dist/node/index.js +5 -14
  40. package/dist/node/services/AdminService.js +4 -4
  41. package/dist/node/services/AuthService.js +139 -36
  42. package/dist/node/services/BaseService.js +18 -5
  43. package/dist/node/services/BranchService.js +10 -10
  44. package/dist/node/services/CollabService.js +62 -164
  45. package/dist/node/services/CoreService.js +19 -19
  46. package/dist/node/services/DnsService.js +4 -4
  47. package/dist/node/services/FileService.js +2 -2
  48. package/dist/node/services/PaymentService.js +2 -2
  49. package/dist/node/services/PlanService.js +12 -12
  50. package/dist/node/services/ProjectService.js +34 -39
  51. package/dist/node/services/PullRequestService.js +7 -7
  52. package/dist/node/services/SubscriptionService.js +14 -14
  53. package/dist/node/services/index.js +0 -4
  54. package/dist/node/utils/TokenManager.js +5 -16
  55. package/dist/node/utils/services.js +1 -14
  56. package/package.json +6 -7
  57. package/src/config/environment.js +9 -48
  58. package/src/index.js +22 -38
  59. package/src/services/AdminService.js +4 -4
  60. package/src/services/AuthService.js +175 -42
  61. package/src/services/BaseService.js +24 -7
  62. package/src/services/BranchService.js +10 -10
  63. package/src/services/CollabService.js +72 -203
  64. package/src/services/CoreService.js +19 -19
  65. package/src/services/DnsService.js +4 -4
  66. package/src/services/FileService.js +2 -2
  67. package/src/services/PaymentService.js +2 -2
  68. package/src/services/PlanService.js +12 -12
  69. package/src/services/ProjectService.js +34 -41
  70. package/src/services/PullRequestService.js +7 -7
  71. package/src/services/SubscriptionService.js +14 -14
  72. package/src/services/index.js +1 -6
  73. package/src/utils/TokenManager.js +5 -19
  74. package/src/utils/services.js +1 -15
  75. package/dist/cjs/services/ScreenshotService.js +0 -304
  76. package/dist/cjs/utils/ordering.js +0 -276
  77. package/dist/esm/services/ScreenshotService.js +0 -992
  78. package/dist/esm/utils/ordering.js +0 -258
  79. package/dist/node/services/ScreenshotService.js +0 -285
  80. package/dist/node/utils/ordering.js +0 -257
  81. package/src/services/ScreenshotService.js +0 -258
  82. package/src/utils/ordering.js +0 -244
@@ -46,28 +46,18 @@ const CONFIG = {
46
46
  // For based api
47
47
  basedOrg: "symbols",
48
48
  // For based api
49
- githubClientId: "Ov23liAFrsR0StbAO6PO",
49
+ githubClientId: "Ov23liHxyWFBxS8f1gnF",
50
50
  // For github api
51
51
  // Environment-specific feature toggles (override common)
52
52
  features: {
53
53
  betaFeatures: true
54
54
  // Enable beta features in local dev
55
- },
56
- typesenseCollectionName: "docs",
57
- typesenseApiKey: "vZya3L2zpq8L6iI5WWMUZJZABvT63VDb",
58
- typesenseHost: "localhost",
59
- typesensePort: "8108",
60
- typesenseProtocol: "http"
55
+ }
61
56
  },
62
57
  development: {
63
58
  socketUrl: "https://dev.api.symbols.app",
64
59
  apiUrl: "https://dev.api.symbols.app",
65
- githubClientId: "Ov23liHxyWFBxS8f1gnF",
66
- typesenseCollectionName: "docs",
67
- typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
68
- typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
69
- typesensePort: "443",
70
- typesenseProtocol: "https"
60
+ githubClientId: "Ov23liHxyWFBxS8f1gnF"
71
61
  },
72
62
  testing: {
73
63
  socketUrl: "https://test.api.symbols.app",
@@ -75,22 +65,12 @@ const CONFIG = {
75
65
  basedEnv: "testing",
76
66
  basedProject: "platform-v2-sm",
77
67
  basedOrg: "symbols",
78
- githubClientId: "Ov23liHxyWFBxS8f1gnF",
79
- typesenseCollectionName: "docs",
80
- typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
81
- typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
82
- typesensePort: "443",
83
- typesenseProtocol: "https"
68
+ githubClientId: "Ov23liHxyWFBxS8f1gnF"
84
69
  },
85
70
  upcoming: {
86
71
  socketUrl: "https://upcoming.api.symbols.app",
87
72
  apiUrl: "https://upcoming.api.symbols.app",
88
- githubClientId: "Ov23liWF7NvdZ056RV5J",
89
- typesenseCollectionName: "docs",
90
- typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
91
- typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
92
- typesensePort: "443",
93
- typesenseProtocol: "https"
73
+ githubClientId: "Ov23liWF7NvdZ056RV5J"
94
74
  },
95
75
  staging: {
96
76
  socketUrl: "https://staging.api.symbols.app",
@@ -98,12 +78,7 @@ const CONFIG = {
98
78
  basedEnv: "staging",
99
79
  basedProject: "platform-v2-sm",
100
80
  basedOrg: "symbols",
101
- githubClientId: "Ov23ligwZDQVD0VfuWNa",
102
- typesenseCollectionName: "docs",
103
- typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
104
- typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
105
- typesensePort: "443",
106
- typesenseProtocol: "https"
81
+ githubClientId: "Ov23ligwZDQVD0VfuWNa"
107
82
  },
108
83
  production: {
109
84
  socketUrl: "https://api.symbols.app",
@@ -111,12 +86,7 @@ const CONFIG = {
111
86
  basedEnv: "production",
112
87
  basedProject: "platform-v2-sm",
113
88
  basedOrg: "symbols",
114
- githubClientId: "Ov23liFAlOEIXtX3dBtR",
115
- typesenseCollectionName: "docs",
116
- typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
117
- typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
118
- typesensePort: "443",
119
- typesenseProtocol: "https"
89
+ githubClientId: "Ov23liFAlOEIXtX3dBtR"
120
90
  }
121
91
  };
122
92
  const getEnvironment = () => {
@@ -139,11 +109,6 @@ const getConfig = () => {
139
109
  basedProject: process.env.SYMBOLS_APP_BASED_PROJECT || envConfig.basedProject,
140
110
  basedOrg: process.env.SYMBOLS_APP_BASED_ORG || envConfig.basedOrg,
141
111
  githubClientId: process.env.SYMBOLS_APP_GITHUB_CLIENT_ID || envConfig.githubClientId,
142
- typesenseCollectionName: process.env.TYPESENSE_COLLECTION_NAME || envConfig.typesenseCollectionName,
143
- typesenseApiKey: process.env.TYPESENSE_API_KEY || envConfig.typesenseApiKey,
144
- typesenseHost: process.env.TYPESENSE_HOST || envConfig.typesenseHost,
145
- typesensePort: process.env.TYPESENSE_PORT || envConfig.typesensePort,
146
- typesenseProtocol: process.env.TYPESENSE_PROTOCOL || envConfig.typesenseProtocol,
147
112
  isDevelopment: (0, import_utils.isDevelopment)(env),
148
113
  isTesting: env === "testing",
149
114
  isStaging: env === "staging",
@@ -163,7 +128,7 @@ const getConfig = () => {
163
128
  );
164
129
  }
165
130
  if (finalConfig.isDevelopment) {
166
- console.warn(
131
+ console.log(
167
132
  "environment in SDK:",
168
133
  env || process.env.NODE_ENV || process.env.NODE_ENV
169
134
  );
package/dist/cjs/index.js CHANGED
@@ -47,7 +47,6 @@ module.exports = __toCommonJS(index_exports);
47
47
  var import_services = require("./services/index.js");
48
48
  var import_services2 = require("./utils/services.js");
49
49
  var import_environment = __toESM(require("./config/environment.js"), 1);
50
- var import_rootEventBus = require("./state/rootEventBus.js");
51
50
  var import_services3 = require("./services/index.js");
52
51
  var import_environment2 = __toESM(require("./config/environment.js"), 1);
53
52
  class SDK {
@@ -55,7 +54,6 @@ class SDK {
55
54
  this._services = /* @__PURE__ */ new Map();
56
55
  this._context = {};
57
56
  this._options = this._validateOptions(options);
58
- this.rootBus = import_rootEventBus.rootBus;
59
57
  this._createServiceProxies();
60
58
  }
61
59
  // Initialize SDK with context
@@ -149,13 +147,6 @@ class SDK {
149
147
  context: this._context,
150
148
  options: this._options
151
149
  })
152
- ),
153
- this._initService(
154
- "screenshot",
155
- (0, import_services.createScreenshotService)({
156
- context: this._context,
157
- options: this._options
158
- })
159
150
  )
160
151
  ]);
161
152
  return this;
@@ -193,10 +184,9 @@ class SDK {
193
184
  }
194
185
  // Update context
195
186
  updateContext(newContext) {
196
- const { authToken, ...sanitized } = newContext || {};
197
187
  this._context = {
198
188
  ...this._context,
199
- ...sanitized
189
+ ...newContext
200
190
  };
201
191
  for (const service of this._services.values()) {
202
192
  service.updateContext(this._context);
@@ -205,7 +195,9 @@ class SDK {
205
195
  // Check if SDK is ready
206
196
  isReady() {
207
197
  const sdkServices = Array.from(this._services.values());
208
- return sdkServices.length > 0 && sdkServices.every((service) => service.isReady());
198
+ return sdkServices.length > 0 && sdkServices.every(
199
+ (service) => service.isReady()
200
+ );
209
201
  }
210
202
  // Get SDK status
211
203
  getStatus() {
@@ -73,7 +73,7 @@ class AdminService extends import_BaseService.BaseService {
73
73
  }
74
74
  throw new Error(response.message);
75
75
  } catch (error) {
76
- throw new Error(`Failed to get admin users: ${error.message}`, { cause: error });
76
+ throw new Error(`Failed to get admin users: ${error.message}`);
77
77
  }
78
78
  }
79
79
  /**
@@ -104,7 +104,7 @@ class AdminService extends import_BaseService.BaseService {
104
104
  }
105
105
  throw new Error(response.message);
106
106
  } catch (error) {
107
- throw new Error(`Failed to assign projects to user: ${error.message}`, { cause: error });
107
+ throw new Error(`Failed to assign projects to user: ${error.message}`);
108
108
  }
109
109
  }
110
110
  /**
@@ -133,7 +133,7 @@ class AdminService extends import_BaseService.BaseService {
133
133
  if ((_a = error.message) == null ? void 0 : _a.includes("Duplicate")) {
134
134
  throw new Error("Username already exists");
135
135
  }
136
- throw new Error(`Failed to update user: ${error.message}`, { cause: error });
136
+ throw new Error(`Failed to update user: ${error.message}`);
137
137
  }
138
138
  }
139
139
  // ==================== ADMIN HELPER METHODS ====================
@@ -263,7 +263,7 @@ class AdminService extends import_BaseService.BaseService {
263
263
  });
264
264
  return stats;
265
265
  } catch (error) {
266
- throw new Error(`Failed to get user stats: ${error.message}`, { cause: error });
266
+ throw new Error(`Failed to get user stats: ${error.message}`);
267
267
  }
268
268
  }
269
269
  /**
@@ -1,6 +1,8 @@
1
+ var __create = Object.create;
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
4
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
7
  var __export = (target, all) => {
6
8
  for (var name in all)
@@ -14,6 +16,14 @@ var __copyProps = (to, from, except, desc) => {
14
16
  }
15
17
  return to;
16
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
+ ));
17
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
28
  var AuthService_exports = {};
19
29
  __export(AuthService_exports, {
@@ -21,6 +31,8 @@ __export(AuthService_exports, {
21
31
  });
22
32
  module.exports = __toCommonJS(AuthService_exports);
23
33
  var import_BaseService = require("./BaseService.js");
34
+ var import_environment = __toESM(require("../config/environment.js"), 1);
35
+ var import_TokenManager = require("../utils/TokenManager.js");
24
36
  var import_permission = require("../utils/permission.js");
25
37
  class AuthService extends import_BaseService.BaseService {
26
38
  constructor(config) {
@@ -33,10 +45,118 @@ class AuthService extends import_BaseService.BaseService {
33
45
  "pro2",
34
46
  "enterprise"
35
47
  ]);
48
+ this._initialized = false;
49
+ this._apiUrl = null;
50
+ this._tokenManager = null;
36
51
  this._projectRoleCache = /* @__PURE__ */ new Map();
37
52
  this._roleCacheExpiry = 5 * 60 * 1e3;
38
53
  }
39
- // Use BaseService.init/_request/_requireReady implementations
54
+ init({ context }) {
55
+ try {
56
+ const { appKey, authToken } = context || this._context;
57
+ this._apiUrl = import_environment.default.apiUrl;
58
+ if (!this._apiUrl) {
59
+ throw new Error("Auth service base URL not configured");
60
+ }
61
+ this._tokenManager = (0, import_TokenManager.getTokenManager)({
62
+ apiUrl: this._apiUrl,
63
+ onTokenRefresh: (tokens) => {
64
+ this.updateContext({ authToken: tokens.accessToken });
65
+ },
66
+ onTokenExpired: () => {
67
+ this.updateContext({ authToken: null });
68
+ },
69
+ onTokenError: (error) => {
70
+ console.error("Token management error:", error);
71
+ }
72
+ });
73
+ if (authToken && !this._tokenManager.hasTokens()) {
74
+ this._tokenManager.setTokens({ access_token: authToken });
75
+ }
76
+ this._info = {
77
+ config: {
78
+ apiUrl: this._apiUrl,
79
+ appKey: appKey ? `${appKey.substr(0, 4)}...${appKey.substr(-4)}` : null,
80
+ hasToken: Boolean(authToken)
81
+ }
82
+ };
83
+ this._initialized = true;
84
+ this._setReady();
85
+ } catch (error) {
86
+ this._setError(error);
87
+ throw error;
88
+ }
89
+ }
90
+ // Helper method to make HTTP requests
91
+ async _request(endpoint, options = {}) {
92
+ const url = `${this._apiUrl}/core${endpoint}`;
93
+ const defaultHeaders = {};
94
+ if (!(options.body instanceof FormData)) {
95
+ defaultHeaders["Content-Type"] = "application/json";
96
+ }
97
+ if (this._requiresInit(options.methodName) && this._tokenManager) {
98
+ try {
99
+ const validToken = await this._tokenManager.ensureValidToken();
100
+ if (validToken) {
101
+ const authHeader = this._tokenManager.getAuthHeader();
102
+ if (authHeader) {
103
+ defaultHeaders.Authorization = authHeader;
104
+ }
105
+ }
106
+ } catch (error) {
107
+ console.warn(
108
+ "Token management failed, proceeding without authentication:",
109
+ error
110
+ );
111
+ }
112
+ } else if (this._requiresInit(options.methodName)) {
113
+ const { authToken } = this._context;
114
+ if (authToken) {
115
+ defaultHeaders.Authorization = `Bearer ${authToken}`;
116
+ }
117
+ }
118
+ try {
119
+ const response = await fetch(url, {
120
+ ...options,
121
+ headers: {
122
+ ...defaultHeaders,
123
+ ...options.headers
124
+ }
125
+ });
126
+ if (!response.ok) {
127
+ let error = {
128
+ message: `HTTP ${response.status}: ${response.statusText}`
129
+ };
130
+ try {
131
+ error = await response.json();
132
+ } catch {
133
+ }
134
+ throw new Error(error.message || error.error || "Request failed");
135
+ }
136
+ return response.status === 204 ? null : response.json();
137
+ } catch (error) {
138
+ throw new Error(`Request failed: ${error.message}`);
139
+ }
140
+ }
141
+ _requiresInit(methodName) {
142
+ const noInitMethods = /* @__PURE__ */ new Set([
143
+ "register",
144
+ "login",
145
+ "googleAuth",
146
+ "googleAuthCallback",
147
+ "githubAuth",
148
+ "requestPasswordReset",
149
+ "confirmPasswordReset",
150
+ "confirmRegistration",
151
+ "verifyEmail"
152
+ ]);
153
+ return !noInitMethods.has(methodName);
154
+ }
155
+ _requireReady(methodName) {
156
+ if (this._requiresInit(methodName) && !this._initialized) {
157
+ throw new Error("Auth service not initialized");
158
+ }
159
+ }
40
160
  // ==================== AUTH METHODS ====================
41
161
  async register(userData) {
42
162
  try {
@@ -50,7 +170,7 @@ class AuthService extends import_BaseService.BaseService {
50
170
  }
51
171
  throw new Error(response.message);
52
172
  } catch (error) {
53
- throw new Error(`Registration failed: ${error.message}`, { cause: error });
173
+ throw new Error(`Registration failed: ${error.message}`);
54
174
  }
55
175
  }
56
176
  async login(email, password) {
@@ -72,13 +192,14 @@ class AuthService extends import_BaseService.BaseService {
72
192
  if (this._tokenManager) {
73
193
  this._tokenManager.setTokens(tokenData);
74
194
  }
195
+ this.updateContext({ authToken: tokens.accessToken });
75
196
  }
76
197
  if (response.success) {
77
198
  return response.data;
78
199
  }
79
200
  throw new Error(response.message);
80
201
  } catch (error) {
81
- throw new Error(`Login failed: ${error.message}`, { cause: error });
202
+ throw new Error(`Login failed: ${error.message}`);
82
203
  }
83
204
  }
84
205
  async logout() {
@@ -91,11 +212,13 @@ class AuthService extends import_BaseService.BaseService {
91
212
  if (this._tokenManager) {
92
213
  this._tokenManager.clearTokens();
93
214
  }
215
+ this.updateContext({ authToken: null });
94
216
  } catch (error) {
95
217
  if (this._tokenManager) {
96
218
  this._tokenManager.clearTokens();
97
219
  }
98
- throw new Error(`Logout failed: ${error.message}`, { cause: error });
220
+ this.updateContext({ authToken: null });
221
+ throw new Error(`Logout failed: ${error.message}`);
99
222
  }
100
223
  }
101
224
  async refreshToken(refreshToken) {
@@ -110,7 +233,7 @@ class AuthService extends import_BaseService.BaseService {
110
233
  }
111
234
  throw new Error(response.message);
112
235
  } catch (error) {
113
- throw new Error(`Token refresh failed: ${error.message}`, { cause: error });
236
+ throw new Error(`Token refresh failed: ${error.message}`);
114
237
  }
115
238
  }
116
239
  async googleAuth(idToken, inviteToken = null) {
@@ -136,13 +259,14 @@ class AuthService extends import_BaseService.BaseService {
136
259
  if (this._tokenManager) {
137
260
  this._tokenManager.setTokens(tokenData);
138
261
  }
262
+ this.updateContext({ authToken: tokens.accessToken });
139
263
  }
140
264
  if (response.success) {
141
265
  return response.data;
142
266
  }
143
267
  throw new Error(response.message);
144
268
  } catch (error) {
145
- throw new Error(`Google auth failed: ${error.message}`, { cause: error });
269
+ throw new Error(`Google auth failed: ${error.message}`);
146
270
  }
147
271
  }
148
272
  async githubAuth(code, inviteToken = null) {
@@ -168,13 +292,14 @@ class AuthService extends import_BaseService.BaseService {
168
292
  if (this._tokenManager) {
169
293
  this._tokenManager.setTokens(tokenData);
170
294
  }
295
+ this.updateContext({ authToken: tokens.accessToken });
171
296
  }
172
297
  if (response.success) {
173
298
  return response.data;
174
299
  }
175
300
  throw new Error(response.message);
176
301
  } catch (error) {
177
- throw new Error(`GitHub auth failed: ${error.message}`, { cause: error });
302
+ throw new Error(`GitHub auth failed: ${error.message}`);
178
303
  }
179
304
  }
180
305
  async googleAuthCallback(code, redirectUri, inviteToken = null) {
@@ -200,13 +325,14 @@ class AuthService extends import_BaseService.BaseService {
200
325
  if (this._tokenManager) {
201
326
  this._tokenManager.setTokens(tokenData);
202
327
  }
328
+ this.updateContext({ authToken: tokens.accessToken });
203
329
  }
204
330
  if (response.success) {
205
331
  return response.data;
206
332
  }
207
333
  throw new Error(response.message);
208
334
  } catch (error) {
209
- throw new Error(`Google auth callback failed: ${error.message}`, { cause: error });
335
+ throw new Error(`Google auth callback failed: ${error.message}`);
210
336
  }
211
337
  }
212
338
  async requestPasswordReset(email) {
@@ -221,7 +347,7 @@ class AuthService extends import_BaseService.BaseService {
221
347
  }
222
348
  throw new Error(response.message);
223
349
  } catch (error) {
224
- throw new Error(`Password reset request failed: ${error.message}`, { cause: error });
350
+ throw new Error(`Password reset request failed: ${error.message}`);
225
351
  }
226
352
  }
227
353
  async confirmPasswordReset(token, password) {
@@ -236,7 +362,7 @@ class AuthService extends import_BaseService.BaseService {
236
362
  }
237
363
  throw new Error(response.message);
238
364
  } catch (error) {
239
- throw new Error(`Password reset confirmation failed: ${error.message}`, { cause: error });
365
+ throw new Error(`Password reset confirmation failed: ${error.message}`);
240
366
  }
241
367
  }
242
368
  async confirmRegistration(token) {
@@ -251,7 +377,7 @@ class AuthService extends import_BaseService.BaseService {
251
377
  }
252
378
  throw new Error(response.message);
253
379
  } catch (error) {
254
- throw new Error(`Registration confirmation failed: ${error.message}`, { cause: error });
380
+ throw new Error(`Registration confirmation failed: ${error.message}`);
255
381
  }
256
382
  }
257
383
  async requestPasswordChange() {
@@ -266,7 +392,7 @@ class AuthService extends import_BaseService.BaseService {
266
392
  }
267
393
  throw new Error(response.message);
268
394
  } catch (error) {
269
- throw new Error(`Password change request failed: ${error.message}`, { cause: error });
395
+ throw new Error(`Password change request failed: ${error.message}`);
270
396
  }
271
397
  }
272
398
  async confirmPasswordChange(currentPassword, newPassword, code) {
@@ -282,7 +408,7 @@ class AuthService extends import_BaseService.BaseService {
282
408
  }
283
409
  throw new Error(response.message);
284
410
  } catch (error) {
285
- throw new Error(`Password change confirmation failed: ${error.message}`, { cause: error });
411
+ throw new Error(`Password change confirmation failed: ${error.message}`);
286
412
  }
287
413
  }
288
414
  async getMe() {
@@ -297,7 +423,7 @@ class AuthService extends import_BaseService.BaseService {
297
423
  }
298
424
  throw new Error(response.message);
299
425
  } catch (error) {
300
- throw new Error(`Failed to get user profile: ${error.message}`, { cause: error });
426
+ throw new Error(`Failed to get user profile: ${error.message}`);
301
427
  }
302
428
  }
303
429
  /**
@@ -397,7 +523,7 @@ class AuthService extends import_BaseService.BaseService {
397
523
  }
398
524
  throw new Error(response.message);
399
525
  } catch (error) {
400
- throw new Error(`Failed to get user profile: ${error.message}`, { cause: error });
526
+ throw new Error(`Failed to get user profile: ${error.message}`);
401
527
  }
402
528
  }
403
529
  async updateUserProfile(profileData) {
@@ -413,7 +539,7 @@ class AuthService extends import_BaseService.BaseService {
413
539
  }
414
540
  throw new Error(response.message);
415
541
  } catch (error) {
416
- throw new Error(`Failed to update user profile: ${error.message}`, { cause: error });
542
+ throw new Error(`Failed to update user profile: ${error.message}`);
417
543
  }
418
544
  }
419
545
  async getUserProjects() {
@@ -436,7 +562,7 @@ class AuthService extends import_BaseService.BaseService {
436
562
  }
437
563
  throw new Error(response.message);
438
564
  } catch (error) {
439
- throw new Error(`Failed to get user projects: ${error.message}`, { cause: error });
565
+ throw new Error(`Failed to get user projects: ${error.message}`);
440
566
  }
441
567
  }
442
568
  async getUser(userId) {
@@ -454,7 +580,7 @@ class AuthService extends import_BaseService.BaseService {
454
580
  }
455
581
  throw new Error(response.message);
456
582
  } catch (error) {
457
- throw new Error(`Failed to get user: ${error.message}`, { cause: error });
583
+ throw new Error(`Failed to get user: ${error.message}`);
458
584
  }
459
585
  }
460
586
  async getUserByEmail(email) {
@@ -472,7 +598,7 @@ class AuthService extends import_BaseService.BaseService {
472
598
  }
473
599
  throw new Error(response.message);
474
600
  } catch (error) {
475
- throw new Error(`Failed to get user by email: ${error.message}`, { cause: error });
601
+ throw new Error(`Failed to get user by email: ${error.message}`);
476
602
  }
477
603
  }
478
604
  // ==================== PROJECT ROLE METHODS ====================
@@ -485,9 +611,6 @@ class AuthService extends import_BaseService.BaseService {
485
611
  if (!projectId) {
486
612
  throw new Error("Project ID is required");
487
613
  }
488
- if (!this.hasValidTokens()) {
489
- return "guest";
490
- }
491
614
  const cacheKey = `role_${projectId}`;
492
615
  const cached = this._projectRoleCache.get(cacheKey);
493
616
  if (cached && Date.now() - cached.timestamp < this._roleCacheExpiry) {
@@ -508,11 +631,7 @@ class AuthService extends import_BaseService.BaseService {
508
631
  }
509
632
  throw new Error(response.message);
510
633
  } catch (error) {
511
- const message = (error == null ? void 0 : error.message) || "";
512
- if (/401|403|unauthorized|no token|invalid token/iu.test(message)) {
513
- return "guest";
514
- }
515
- throw new Error(`Failed to get project role: ${message}`, { cause: error });
634
+ throw new Error(`Failed to get project role: ${error.message}`);
516
635
  }
517
636
  }
518
637
  /**
@@ -524,9 +643,6 @@ class AuthService extends import_BaseService.BaseService {
524
643
  if (!projectKey) {
525
644
  throw new Error("Project key is required");
526
645
  }
527
- if (!this.hasValidTokens()) {
528
- return "guest";
529
- }
530
646
  const cacheKey = `role_key_${projectKey}`;
531
647
  const cached = this._projectRoleCache.get(cacheKey);
532
648
  if (cached && Date.now() - cached.timestamp < this._roleCacheExpiry) {
@@ -547,11 +663,7 @@ class AuthService extends import_BaseService.BaseService {
547
663
  }
548
664
  throw new Error(response.message);
549
665
  } catch (error) {
550
- const message = (error == null ? void 0 : error.message) || "";
551
- if (/401|403|unauthorized|no token|invalid token/iu.test(message)) {
552
- return "guest";
553
- }
554
- throw new Error(`Failed to get project role by key: ${message}`, { cause: error });
666
+ throw new Error(`Failed to get project role by key: ${error.message}`);
555
667
  }
556
668
  }
557
669
  /**
@@ -654,7 +766,7 @@ class AuthService extends import_BaseService.BaseService {
654
766
  try {
655
767
  return await this.getMe();
656
768
  } catch (error) {
657
- throw new Error(`Failed to get current user: ${error.message}`, { cause: error });
769
+ throw new Error(`Failed to get current user: ${error.message}`);
658
770
  }
659
771
  }
660
772
  /**
@@ -811,6 +923,7 @@ class AuthService extends import_BaseService.BaseService {
811
923
  this._tokenManager = null;
812
924
  }
813
925
  this._projectRoleCache.clear();
926
+ this._initialized = false;
814
927
  this._setReady(false);
815
928
  }
816
929
  }
@@ -51,10 +51,20 @@ class BaseService {
51
51
  }
52
52
  this._tokenManager = (0, import_TokenManager.getTokenManager)({
53
53
  apiUrl: this._apiUrl,
54
+ onTokenRefresh: (tokens) => {
55
+ this.updateContext({ authToken: tokens.accessToken });
56
+ },
57
+ onTokenExpired: () => {
58
+ this.updateContext({ authToken: null });
59
+ },
54
60
  onTokenError: (error) => {
55
61
  console.error("Token management error:", error);
56
62
  }
57
63
  });
64
+ const { authToken } = this._context;
65
+ if (authToken && !this._tokenManager.hasTokens()) {
66
+ this._tokenManager.setTokens({ access_token: authToken });
67
+ }
58
68
  this._setReady();
59
69
  } catch (error) {
60
70
  this._setError(error);
@@ -63,9 +73,7 @@ class BaseService {
63
73
  }
64
74
  // Update context
65
75
  updateContext(context) {
66
- if (context && typeof context === "object") {
67
- Object.assign(this._context, context);
68
- }
76
+ this._context = { ...this._context, ...context };
69
77
  }
70
78
  // Get service status
71
79
  getStatus() {
@@ -120,6 +128,11 @@ class BaseService {
120
128
  error
121
129
  );
122
130
  }
131
+ } else if (this._requiresInit(options.methodName)) {
132
+ const { authToken } = this._context;
133
+ if (authToken) {
134
+ defaultHeaders.Authorization = `Bearer ${authToken}`;
135
+ }
123
136
  }
124
137
  try {
125
138
  const response = await fetch(url, {
@@ -137,11 +150,11 @@ class BaseService {
137
150
  error = await response.json();
138
151
  } catch {
139
152
  }
140
- throw new Error(error.message || error.error || "Request failed", { cause: error });
153
+ throw new Error(error.message || error.error || "Request failed");
141
154
  }
142
155
  return response.status === 204 ? null : response.json();
143
156
  } catch (error) {
144
- throw new Error(`Request failed: ${error.message}`, { cause: error });
157
+ throw new Error(`Request failed: ${error.message}`);
145
158
  }
146
159
  }
147
160
  // Helper method to determine if a method requires initialization