@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.
Files changed (90) hide show
  1. package/dist/cjs/config/environment.js +43 -8
  2. package/dist/cjs/index.js +12 -4
  3. package/dist/cjs/services/AdminService.js +4 -4
  4. package/dist/cjs/services/AuthService.js +36 -149
  5. package/dist/cjs/services/BaseService.js +5 -18
  6. package/dist/cjs/services/BranchService.js +10 -10
  7. package/dist/cjs/services/CollabService.js +94 -61
  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 +45 -35
  14. package/dist/cjs/services/PullRequestService.js +7 -7
  15. package/dist/cjs/services/ScreenshotService.js +304 -0
  16. package/dist/cjs/services/SubscriptionService.js +14 -14
  17. package/dist/cjs/services/index.js +4 -0
  18. package/dist/cjs/utils/TokenManager.js +16 -5
  19. package/dist/cjs/utils/changePreprocessor.js +134 -0
  20. package/dist/cjs/utils/jsonDiff.js +46 -4
  21. package/dist/cjs/utils/ordering.js +274 -0
  22. package/dist/cjs/utils/services.js +14 -1
  23. package/dist/esm/config/environment.js +43 -8
  24. package/dist/esm/index.js +1099 -417
  25. package/dist/esm/services/AdminService.js +68 -35
  26. package/dist/esm/services/AuthService.js +100 -168
  27. package/dist/esm/services/BaseService.js +64 -31
  28. package/dist/esm/services/BranchService.js +74 -41
  29. package/dist/esm/services/CollabService.js +570 -97
  30. package/dist/esm/services/CoreService.js +83 -50
  31. package/dist/esm/services/DnsService.js +68 -35
  32. package/dist/esm/services/FileService.js +66 -33
  33. package/dist/esm/services/PaymentService.js +66 -33
  34. package/dist/esm/services/PlanService.js +76 -43
  35. package/dist/esm/services/ProjectService.js +547 -66
  36. package/dist/esm/services/PullRequestService.js +71 -38
  37. package/dist/esm/services/ScreenshotService.js +992 -0
  38. package/dist/esm/services/SubscriptionService.js +78 -45
  39. package/dist/esm/services/index.js +1076 -412
  40. package/dist/esm/utils/CollabClient.js +89 -12
  41. package/dist/esm/utils/TokenManager.js +16 -5
  42. package/dist/esm/utils/changePreprocessor.js +442 -0
  43. package/dist/esm/utils/jsonDiff.js +46 -4
  44. package/dist/esm/utils/ordering.js +256 -0
  45. package/dist/esm/utils/services.js +14 -1
  46. package/dist/node/config/environment.js +43 -8
  47. package/dist/node/index.js +14 -5
  48. package/dist/node/services/AdminService.js +4 -4
  49. package/dist/node/services/AuthService.js +36 -139
  50. package/dist/node/services/BaseService.js +5 -18
  51. package/dist/node/services/BranchService.js +10 -10
  52. package/dist/node/services/CollabService.js +95 -62
  53. package/dist/node/services/CoreService.js +19 -19
  54. package/dist/node/services/DnsService.js +4 -4
  55. package/dist/node/services/FileService.js +2 -2
  56. package/dist/node/services/PaymentService.js +2 -2
  57. package/dist/node/services/PlanService.js +12 -12
  58. package/dist/node/services/ProjectService.js +45 -35
  59. package/dist/node/services/PullRequestService.js +7 -7
  60. package/dist/node/services/ScreenshotService.js +285 -0
  61. package/dist/node/services/SubscriptionService.js +14 -14
  62. package/dist/node/services/index.js +4 -0
  63. package/dist/node/utils/TokenManager.js +16 -5
  64. package/dist/node/utils/changePreprocessor.js +115 -0
  65. package/dist/node/utils/jsonDiff.js +46 -4
  66. package/dist/node/utils/ordering.js +255 -0
  67. package/dist/node/utils/services.js +14 -1
  68. package/package.json +7 -6
  69. package/src/config/environment.js +48 -9
  70. package/src/index.js +38 -22
  71. package/src/services/AdminService.js +4 -4
  72. package/src/services/AuthService.js +42 -175
  73. package/src/services/BaseService.js +7 -24
  74. package/src/services/BranchService.js +10 -10
  75. package/src/services/CollabService.js +115 -74
  76. package/src/services/CoreService.js +19 -19
  77. package/src/services/DnsService.js +4 -4
  78. package/src/services/FileService.js +2 -2
  79. package/src/services/PaymentService.js +2 -2
  80. package/src/services/PlanService.js +12 -12
  81. package/src/services/ProjectService.js +50 -35
  82. package/src/services/PullRequestService.js +7 -7
  83. package/src/services/ScreenshotService.js +258 -0
  84. package/src/services/SubscriptionService.js +14 -14
  85. package/src/services/index.js +6 -1
  86. package/src/utils/TokenManager.js +19 -5
  87. package/src/utils/changePreprocessor.js +139 -0
  88. package/src/utils/jsonDiff.js +40 -5
  89. package/src/utils/ordering.js +244 -0
  90. 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: "Ov23liHxyWFBxS8f1gnF",
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.log(
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 hasLocalStorage = typeof window.localStorage !== "undefined";
192
- const hasSessionStorage = typeof window.sessionStorage !== "undefined";
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 hasSessionStorage ? window.sessionStorage : this._memoryStorage;
241
+ return sessionStorageInstance || this._memoryStorage;
196
242
  case "memory":
197
243
  return this._memoryStorage;
198
244
  default:
199
- return hasLocalStorage ? window.localStorage : this._memoryStorage;
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
- this._context = { ...this._context, ...context };
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
@@ -711,7 +744,7 @@ var FileService = class extends BaseService {
711
744
  message: response.message
712
745
  };
713
746
  } catch (error) {
714
- throw new Error(`File upload failed: ${error.message}`);
747
+ throw new Error(`File upload failed: ${error.message}`, { cause: error });
715
748
  }
716
749
  }
717
750
  async updateProjectIcon(projectId, iconFile) {
@@ -735,7 +768,7 @@ var FileService = class extends BaseService {
735
768
  }
736
769
  throw new Error(response.message);
737
770
  } catch (error) {
738
- throw new Error(`Failed to update project icon: ${error.message}`);
771
+ throw new Error(`Failed to update project icon: ${error.message}`, { cause: error });
739
772
  }
740
773
  }
741
774
  // ==================== FILE HELPER METHODS ====================
@@ -28,18 +28,28 @@ var CONFIG = {
28
28
  // For based api
29
29
  basedOrg: "symbols",
30
30
  // For based api
31
- githubClientId: "Ov23liHxyWFBxS8f1gnF",
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.log(
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 hasLocalStorage = typeof window.localStorage !== "undefined";
192
- const hasSessionStorage = typeof window.sessionStorage !== "undefined";
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 hasSessionStorage ? window.sessionStorage : this._memoryStorage;
241
+ return sessionStorageInstance || this._memoryStorage;
196
242
  case "memory":
197
243
  return this._memoryStorage;
198
244
  default:
199
- return hasLocalStorage ? window.localStorage : this._memoryStorage;
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
- this._context = { ...this._context, ...context };
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
@@ -703,7 +736,7 @@ var PaymentService = class extends BaseService {
703
736
  }
704
737
  throw new Error(response.message);
705
738
  } catch (error) {
706
- throw new Error(`Failed to checkout: ${error.message}`);
739
+ throw new Error(`Failed to checkout: ${error.message}`, { cause: error });
707
740
  }
708
741
  }
709
742
  async getSubscriptionStatus(projectId) {
@@ -724,7 +757,7 @@ var PaymentService = class extends BaseService {
724
757
  }
725
758
  throw new Error(response.message);
726
759
  } catch (error) {
727
- throw new Error(`Failed to get subscription status: ${error.message}`);
760
+ throw new Error(`Failed to get subscription status: ${error.message}`, { cause: error });
728
761
  }
729
762
  }
730
763
  // ==================== PAYMENT HELPER METHODS ====================