@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
package/dist/esm/index.js CHANGED
@@ -14111,28 +14111,18 @@ var CONFIG = {
14111
14111
  // For based api
14112
14112
  basedOrg: "symbols",
14113
14113
  // For based api
14114
- githubClientId: "Ov23liAFrsR0StbAO6PO",
14114
+ githubClientId: "Ov23liHxyWFBxS8f1gnF",
14115
14115
  // For github api
14116
14116
  // Environment-specific feature toggles (override common)
14117
14117
  features: {
14118
14118
  betaFeatures: true
14119
14119
  // Enable beta features in local dev
14120
- },
14121
- typesenseCollectionName: "docs",
14122
- typesenseApiKey: "vZya3L2zpq8L6iI5WWMUZJZABvT63VDb",
14123
- typesenseHost: "localhost",
14124
- typesensePort: "8108",
14125
- typesenseProtocol: "http"
14120
+ }
14126
14121
  },
14127
14122
  development: {
14128
14123
  socketUrl: "https://dev.api.symbols.app",
14129
14124
  apiUrl: "https://dev.api.symbols.app",
14130
- githubClientId: "Ov23liHxyWFBxS8f1gnF",
14131
- typesenseCollectionName: "docs",
14132
- typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
14133
- typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
14134
- typesensePort: "443",
14135
- typesenseProtocol: "https"
14125
+ githubClientId: "Ov23liHxyWFBxS8f1gnF"
14136
14126
  },
14137
14127
  testing: {
14138
14128
  socketUrl: "https://test.api.symbols.app",
@@ -14140,22 +14130,12 @@ var CONFIG = {
14140
14130
  basedEnv: "testing",
14141
14131
  basedProject: "platform-v2-sm",
14142
14132
  basedOrg: "symbols",
14143
- githubClientId: "Ov23liHxyWFBxS8f1gnF",
14144
- typesenseCollectionName: "docs",
14145
- typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
14146
- typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
14147
- typesensePort: "443",
14148
- typesenseProtocol: "https"
14133
+ githubClientId: "Ov23liHxyWFBxS8f1gnF"
14149
14134
  },
14150
14135
  upcoming: {
14151
14136
  socketUrl: "https://upcoming.api.symbols.app",
14152
14137
  apiUrl: "https://upcoming.api.symbols.app",
14153
- githubClientId: "Ov23liWF7NvdZ056RV5J",
14154
- typesenseCollectionName: "docs",
14155
- typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
14156
- typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
14157
- typesensePort: "443",
14158
- typesenseProtocol: "https"
14138
+ githubClientId: "Ov23liWF7NvdZ056RV5J"
14159
14139
  },
14160
14140
  staging: {
14161
14141
  socketUrl: "https://staging.api.symbols.app",
@@ -14163,12 +14143,7 @@ var CONFIG = {
14163
14143
  basedEnv: "staging",
14164
14144
  basedProject: "platform-v2-sm",
14165
14145
  basedOrg: "symbols",
14166
- githubClientId: "Ov23ligwZDQVD0VfuWNa",
14167
- typesenseCollectionName: "docs",
14168
- typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
14169
- typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
14170
- typesensePort: "443",
14171
- typesenseProtocol: "https"
14146
+ githubClientId: "Ov23ligwZDQVD0VfuWNa"
14172
14147
  },
14173
14148
  production: {
14174
14149
  socketUrl: "https://api.symbols.app",
@@ -14176,12 +14151,7 @@ var CONFIG = {
14176
14151
  basedEnv: "production",
14177
14152
  basedProject: "platform-v2-sm",
14178
14153
  basedOrg: "symbols",
14179
- githubClientId: "Ov23liFAlOEIXtX3dBtR",
14180
- typesenseCollectionName: "docs",
14181
- typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
14182
- typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
14183
- typesensePort: "443",
14184
- typesenseProtocol: "https"
14154
+ githubClientId: "Ov23liFAlOEIXtX3dBtR"
14185
14155
  }
14186
14156
  };
14187
14157
  var getEnvironment = () => {
@@ -14203,11 +14173,6 @@ var getConfig = () => {
14203
14173
  basedProject: process.env.SYMBOLS_APP_BASED_PROJECT || envConfig.basedProject,
14204
14174
  basedOrg: process.env.SYMBOLS_APP_BASED_ORG || envConfig.basedOrg,
14205
14175
  githubClientId: process.env.SYMBOLS_APP_GITHUB_CLIENT_ID || envConfig.githubClientId,
14206
- typesenseCollectionName: process.env.TYPESENSE_COLLECTION_NAME || envConfig.typesenseCollectionName,
14207
- typesenseApiKey: process.env.TYPESENSE_API_KEY || envConfig.typesenseApiKey,
14208
- typesenseHost: process.env.TYPESENSE_HOST || envConfig.typesenseHost,
14209
- typesensePort: process.env.TYPESENSE_PORT || envConfig.typesensePort,
14210
- typesenseProtocol: process.env.TYPESENSE_PROTOCOL || envConfig.typesenseProtocol,
14211
14176
  isDevelopment: isDevelopment(env),
14212
14177
  isTesting: env === "testing",
14213
14178
  isStaging: env === "staging",
@@ -14227,7 +14192,7 @@ var getConfig = () => {
14227
14192
  );
14228
14193
  }
14229
14194
  if (finalConfig.isDevelopment) {
14230
- console.warn(
14195
+ console.log(
14231
14196
  "environment in SDK:",
14232
14197
  env || process.env.NODE_ENV || process.env.NODE_ENV
14233
14198
  );
@@ -14266,7 +14231,7 @@ var TokenManager = class {
14266
14231
  });
14267
14232
  this.config = {
14268
14233
  storagePrefix: "symbols_",
14269
- storageType: typeof window === "undefined" || process.env.NODE_ENV === "test" || process.env.NODE_ENV === "testing" ? "memory" : "localStorage",
14234
+ storageType: typeof window === "undefined" || process.env.NODE_ENV === "test" ? "memory" : "localStorage",
14270
14235
  // 'localStorage' | 'sessionStorage' | 'memory'
14271
14236
  refreshBuffer: 60 * 1e3,
14272
14237
  // Refresh 1 minute before expiry
@@ -14306,26 +14271,15 @@ var TokenManager = class {
14306
14271
  if (typeof window === "undefined") {
14307
14272
  return this._memoryStorage;
14308
14273
  }
14309
- const safeGetStorage = (provider) => {
14310
- try {
14311
- const storage = provider();
14312
- const testKey = `${this.config.storagePrefix}__tm_test__`;
14313
- storage.setItem(testKey, "1");
14314
- storage.removeItem(testKey);
14315
- return storage;
14316
- } catch {
14317
- return null;
14318
- }
14319
- };
14320
- const localStorageInstance = safeGetStorage(() => window.localStorage);
14321
- const sessionStorageInstance = safeGetStorage(() => window.sessionStorage);
14274
+ const hasLocalStorage = typeof window.localStorage !== "undefined";
14275
+ const hasSessionStorage = typeof window.sessionStorage !== "undefined";
14322
14276
  switch (this.config.storageType) {
14323
14277
  case "sessionStorage":
14324
- return sessionStorageInstance || this._memoryStorage;
14278
+ return hasSessionStorage ? window.sessionStorage : this._memoryStorage;
14325
14279
  case "memory":
14326
14280
  return this._memoryStorage;
14327
14281
  default:
14328
- return localStorageInstance || this._memoryStorage;
14282
+ return hasLocalStorage ? window.localStorage : this._memoryStorage;
14329
14283
  }
14330
14284
  }
14331
14285
  /**
@@ -14664,10 +14618,20 @@ var BaseService = class {
14664
14618
  }
14665
14619
  this._tokenManager = getTokenManager({
14666
14620
  apiUrl: this._apiUrl,
14621
+ onTokenRefresh: (tokens) => {
14622
+ this.updateContext({ authToken: tokens.accessToken });
14623
+ },
14624
+ onTokenExpired: () => {
14625
+ this.updateContext({ authToken: null });
14626
+ },
14667
14627
  onTokenError: (error) => {
14668
14628
  console.error("Token management error:", error);
14669
14629
  }
14670
14630
  });
14631
+ const { authToken } = this._context;
14632
+ if (authToken && !this._tokenManager.hasTokens()) {
14633
+ this._tokenManager.setTokens({ access_token: authToken });
14634
+ }
14671
14635
  this._setReady();
14672
14636
  } catch (error) {
14673
14637
  this._setError(error);
@@ -14676,9 +14640,7 @@ var BaseService = class {
14676
14640
  }
14677
14641
  // Update context
14678
14642
  updateContext(context) {
14679
- if (context && typeof context === "object") {
14680
- Object.assign(this._context, context);
14681
- }
14643
+ this._context = { ...this._context, ...context };
14682
14644
  }
14683
14645
  // Get service status
14684
14646
  getStatus() {
@@ -14733,6 +14695,11 @@ var BaseService = class {
14733
14695
  error
14734
14696
  );
14735
14697
  }
14698
+ } else if (this._requiresInit(options.methodName)) {
14699
+ const { authToken } = this._context;
14700
+ if (authToken) {
14701
+ defaultHeaders.Authorization = `Bearer ${authToken}`;
14702
+ }
14736
14703
  }
14737
14704
  try {
14738
14705
  const response = await fetch(url2, {
@@ -14750,11 +14717,11 @@ var BaseService = class {
14750
14717
  error = await response.json();
14751
14718
  } catch {
14752
14719
  }
14753
- throw new Error(error.message || error.error || "Request failed", { cause: error });
14720
+ throw new Error(error.message || error.error || "Request failed");
14754
14721
  }
14755
14722
  return response.status === 204 ? null : response.json();
14756
14723
  } catch (error) {
14757
- throw new Error(`Request failed: ${error.message}`, { cause: error });
14724
+ throw new Error(`Request failed: ${error.message}`);
14758
14725
  }
14759
14726
  }
14760
14727
  // Helper method to determine if a method requires initialization
@@ -14935,10 +14902,118 @@ var AuthService = class extends BaseService {
14935
14902
  "pro2",
14936
14903
  "enterprise"
14937
14904
  ]);
14905
+ this._initialized = false;
14906
+ this._apiUrl = null;
14907
+ this._tokenManager = null;
14938
14908
  this._projectRoleCache = /* @__PURE__ */ new Map();
14939
14909
  this._roleCacheExpiry = 5 * 60 * 1e3;
14940
14910
  }
14941
- // Use BaseService.init/_request/_requireReady implementations
14911
+ init({ context }) {
14912
+ try {
14913
+ const { appKey, authToken } = context || this._context;
14914
+ this._apiUrl = environment_default.apiUrl;
14915
+ if (!this._apiUrl) {
14916
+ throw new Error("Auth service base URL not configured");
14917
+ }
14918
+ this._tokenManager = getTokenManager({
14919
+ apiUrl: this._apiUrl,
14920
+ onTokenRefresh: (tokens) => {
14921
+ this.updateContext({ authToken: tokens.accessToken });
14922
+ },
14923
+ onTokenExpired: () => {
14924
+ this.updateContext({ authToken: null });
14925
+ },
14926
+ onTokenError: (error) => {
14927
+ console.error("Token management error:", error);
14928
+ }
14929
+ });
14930
+ if (authToken && !this._tokenManager.hasTokens()) {
14931
+ this._tokenManager.setTokens({ access_token: authToken });
14932
+ }
14933
+ this._info = {
14934
+ config: {
14935
+ apiUrl: this._apiUrl,
14936
+ appKey: appKey ? `${appKey.substr(0, 4)}...${appKey.substr(-4)}` : null,
14937
+ hasToken: Boolean(authToken)
14938
+ }
14939
+ };
14940
+ this._initialized = true;
14941
+ this._setReady();
14942
+ } catch (error) {
14943
+ this._setError(error);
14944
+ throw error;
14945
+ }
14946
+ }
14947
+ // Helper method to make HTTP requests
14948
+ async _request(endpoint, options = {}) {
14949
+ const url2 = `${this._apiUrl}/core${endpoint}`;
14950
+ const defaultHeaders = {};
14951
+ if (!(options.body instanceof FormData)) {
14952
+ defaultHeaders["Content-Type"] = "application/json";
14953
+ }
14954
+ if (this._requiresInit(options.methodName) && this._tokenManager) {
14955
+ try {
14956
+ const validToken = await this._tokenManager.ensureValidToken();
14957
+ if (validToken) {
14958
+ const authHeader = this._tokenManager.getAuthHeader();
14959
+ if (authHeader) {
14960
+ defaultHeaders.Authorization = authHeader;
14961
+ }
14962
+ }
14963
+ } catch (error) {
14964
+ console.warn(
14965
+ "Token management failed, proceeding without authentication:",
14966
+ error
14967
+ );
14968
+ }
14969
+ } else if (this._requiresInit(options.methodName)) {
14970
+ const { authToken } = this._context;
14971
+ if (authToken) {
14972
+ defaultHeaders.Authorization = `Bearer ${authToken}`;
14973
+ }
14974
+ }
14975
+ try {
14976
+ const response = await fetch(url2, {
14977
+ ...options,
14978
+ headers: {
14979
+ ...defaultHeaders,
14980
+ ...options.headers
14981
+ }
14982
+ });
14983
+ if (!response.ok) {
14984
+ let error = {
14985
+ message: `HTTP ${response.status}: ${response.statusText}`
14986
+ };
14987
+ try {
14988
+ error = await response.json();
14989
+ } catch {
14990
+ }
14991
+ throw new Error(error.message || error.error || "Request failed");
14992
+ }
14993
+ return response.status === 204 ? null : response.json();
14994
+ } catch (error) {
14995
+ throw new Error(`Request failed: ${error.message}`);
14996
+ }
14997
+ }
14998
+ _requiresInit(methodName) {
14999
+ const noInitMethods = /* @__PURE__ */ new Set([
15000
+ "register",
15001
+ "login",
15002
+ "googleAuth",
15003
+ "googleAuthCallback",
15004
+ "githubAuth",
15005
+ "requestPasswordReset",
15006
+ "confirmPasswordReset",
15007
+ "confirmRegistration",
15008
+ "verifyEmail"
15009
+ ]);
15010
+ return !noInitMethods.has(methodName);
15011
+ }
15012
+ _requireReady(methodName) {
15013
+ if (this._requiresInit(methodName) && !this._initialized) {
15014
+ throw new Error("Auth service not initialized");
15015
+ }
15016
+ }
14942
15017
  // ==================== AUTH METHODS ====================
14943
15018
  async register(userData) {
14944
15019
  try {
@@ -14952,7 +15027,7 @@ var AuthService = class extends BaseService {
14952
15027
  }
14953
15028
  throw new Error(response.message);
14954
15029
  } catch (error) {
14955
- throw new Error(`Registration failed: ${error.message}`, { cause: error });
15030
+ throw new Error(`Registration failed: ${error.message}`);
14956
15031
  }
14957
15032
  }
14958
15033
  async login(email, password) {
@@ -14974,13 +15049,14 @@ var AuthService = class extends BaseService {
14974
15049
  if (this._tokenManager) {
14975
15050
  this._tokenManager.setTokens(tokenData);
14976
15051
  }
15052
+ this.updateContext({ authToken: tokens.accessToken });
14977
15053
  }
14978
15054
  if (response.success) {
14979
15055
  return response.data;
14980
15056
  }
14981
15057
  throw new Error(response.message);
14982
15058
  } catch (error) {
14983
- throw new Error(`Login failed: ${error.message}`, { cause: error });
15059
+ throw new Error(`Login failed: ${error.message}`);
14984
15060
  }
14985
15061
  }
14986
15062
  async logout() {
@@ -14993,11 +15069,13 @@ var AuthService = class extends BaseService {
14993
15069
  if (this._tokenManager) {
14994
15070
  this._tokenManager.clearTokens();
14995
15071
  }
15072
+ this.updateContext({ authToken: null });
14996
15073
  } catch (error) {
14997
15074
  if (this._tokenManager) {
14998
15075
  this._tokenManager.clearTokens();
14999
15076
  }
15000
- throw new Error(`Logout failed: ${error.message}`, { cause: error });
15077
+ this.updateContext({ authToken: null });
15078
+ throw new Error(`Logout failed: ${error.message}`);
15001
15079
  }
15002
15080
  }
15003
15081
  async refreshToken(refreshToken) {
@@ -15012,7 +15090,7 @@ var AuthService = class extends BaseService {
15012
15090
  }
15013
15091
  throw new Error(response.message);
15014
15092
  } catch (error) {
15015
- throw new Error(`Token refresh failed: ${error.message}`, { cause: error });
15093
+ throw new Error(`Token refresh failed: ${error.message}`);
15016
15094
  }
15017
15095
  }
15018
15096
  async googleAuth(idToken, inviteToken = null) {
@@ -15038,13 +15116,14 @@ var AuthService = class extends BaseService {
15038
15116
  if (this._tokenManager) {
15039
15117
  this._tokenManager.setTokens(tokenData);
15040
15118
  }
15119
+ this.updateContext({ authToken: tokens.accessToken });
15041
15120
  }
15042
15121
  if (response.success) {
15043
15122
  return response.data;
15044
15123
  }
15045
15124
  throw new Error(response.message);
15046
15125
  } catch (error) {
15047
- throw new Error(`Google auth failed: ${error.message}`, { cause: error });
15126
+ throw new Error(`Google auth failed: ${error.message}`);
15048
15127
  }
15049
15128
  }
15050
15129
  async githubAuth(code, inviteToken = null) {
@@ -15070,13 +15149,14 @@ var AuthService = class extends BaseService {
15070
15149
  if (this._tokenManager) {
15071
15150
  this._tokenManager.setTokens(tokenData);
15072
15151
  }
15152
+ this.updateContext({ authToken: tokens.accessToken });
15073
15153
  }
15074
15154
  if (response.success) {
15075
15155
  return response.data;
15076
15156
  }
15077
15157
  throw new Error(response.message);
15078
15158
  } catch (error) {
15079
- throw new Error(`GitHub auth failed: ${error.message}`, { cause: error });
15159
+ throw new Error(`GitHub auth failed: ${error.message}`);
15080
15160
  }
15081
15161
  }
15082
15162
  async googleAuthCallback(code, redirectUri, inviteToken = null) {
@@ -15102,13 +15182,14 @@ var AuthService = class extends BaseService {
15102
15182
  if (this._tokenManager) {
15103
15183
  this._tokenManager.setTokens(tokenData);
15104
15184
  }
15185
+ this.updateContext({ authToken: tokens.accessToken });
15105
15186
  }
15106
15187
  if (response.success) {
15107
15188
  return response.data;
15108
15189
  }
15109
15190
  throw new Error(response.message);
15110
15191
  } catch (error) {
15111
- throw new Error(`Google auth callback failed: ${error.message}`, { cause: error });
15192
+ throw new Error(`Google auth callback failed: ${error.message}`);
15112
15193
  }
15113
15194
  }
15114
15195
  async requestPasswordReset(email) {
@@ -15123,7 +15204,7 @@ var AuthService = class extends BaseService {
15123
15204
  }
15124
15205
  throw new Error(response.message);
15125
15206
  } catch (error) {
15126
- throw new Error(`Password reset request failed: ${error.message}`, { cause: error });
15207
+ throw new Error(`Password reset request failed: ${error.message}`);
15127
15208
  }
15128
15209
  }
15129
15210
  async confirmPasswordReset(token, password) {
@@ -15138,7 +15219,7 @@ var AuthService = class extends BaseService {
15138
15219
  }
15139
15220
  throw new Error(response.message);
15140
15221
  } catch (error) {
15141
- throw new Error(`Password reset confirmation failed: ${error.message}`, { cause: error });
15222
+ throw new Error(`Password reset confirmation failed: ${error.message}`);
15142
15223
  }
15143
15224
  }
15144
15225
  async confirmRegistration(token) {
@@ -15153,7 +15234,7 @@ var AuthService = class extends BaseService {
15153
15234
  }
15154
15235
  throw new Error(response.message);
15155
15236
  } catch (error) {
15156
- throw new Error(`Registration confirmation failed: ${error.message}`, { cause: error });
15237
+ throw new Error(`Registration confirmation failed: ${error.message}`);
15157
15238
  }
15158
15239
  }
15159
15240
  async requestPasswordChange() {
@@ -15168,7 +15249,7 @@ var AuthService = class extends BaseService {
15168
15249
  }
15169
15250
  throw new Error(response.message);
15170
15251
  } catch (error) {
15171
- throw new Error(`Password change request failed: ${error.message}`, { cause: error });
15252
+ throw new Error(`Password change request failed: ${error.message}`);
15172
15253
  }
15173
15254
  }
15174
15255
  async confirmPasswordChange(currentPassword, newPassword, code) {
@@ -15184,7 +15265,7 @@ var AuthService = class extends BaseService {
15184
15265
  }
15185
15266
  throw new Error(response.message);
15186
15267
  } catch (error) {
15187
- throw new Error(`Password change confirmation failed: ${error.message}`, { cause: error });
15268
+ throw new Error(`Password change confirmation failed: ${error.message}`);
15188
15269
  }
15189
15270
  }
15190
15271
  async getMe() {
@@ -15199,7 +15280,7 @@ var AuthService = class extends BaseService {
15199
15280
  }
15200
15281
  throw new Error(response.message);
15201
15282
  } catch (error) {
15202
- throw new Error(`Failed to get user profile: ${error.message}`, { cause: error });
15283
+ throw new Error(`Failed to get user profile: ${error.message}`);
15203
15284
  }
15204
15285
  }
15205
15286
  /**
@@ -15299,7 +15380,7 @@ var AuthService = class extends BaseService {
15299
15380
  }
15300
15381
  throw new Error(response.message);
15301
15382
  } catch (error) {
15302
- throw new Error(`Failed to get user profile: ${error.message}`, { cause: error });
15383
+ throw new Error(`Failed to get user profile: ${error.message}`);
15303
15384
  }
15304
15385
  }
15305
15386
  async updateUserProfile(profileData) {
@@ -15315,7 +15396,7 @@ var AuthService = class extends BaseService {
15315
15396
  }
15316
15397
  throw new Error(response.message);
15317
15398
  } catch (error) {
15318
- throw new Error(`Failed to update user profile: ${error.message}`, { cause: error });
15399
+ throw new Error(`Failed to update user profile: ${error.message}`);
15319
15400
  }
15320
15401
  }
15321
15402
  async getUserProjects() {
@@ -15338,7 +15419,7 @@ var AuthService = class extends BaseService {
15338
15419
  }
15339
15420
  throw new Error(response.message);
15340
15421
  } catch (error) {
15341
- throw new Error(`Failed to get user projects: ${error.message}`, { cause: error });
15422
+ throw new Error(`Failed to get user projects: ${error.message}`);
15342
15423
  }
15343
15424
  }
15344
15425
  async getUser(userId) {
@@ -15356,7 +15437,7 @@ var AuthService = class extends BaseService {
15356
15437
  }
15357
15438
  throw new Error(response.message);
15358
15439
  } catch (error) {
15359
- throw new Error(`Failed to get user: ${error.message}`, { cause: error });
15440
+ throw new Error(`Failed to get user: ${error.message}`);
15360
15441
  }
15361
15442
  }
15362
15443
  async getUserByEmail(email) {
@@ -15374,7 +15455,7 @@ var AuthService = class extends BaseService {
15374
15455
  }
15375
15456
  throw new Error(response.message);
15376
15457
  } catch (error) {
15377
- throw new Error(`Failed to get user by email: ${error.message}`, { cause: error });
15458
+ throw new Error(`Failed to get user by email: ${error.message}`);
15378
15459
  }
15379
15460
  }
15380
15461
  // ==================== PROJECT ROLE METHODS ====================
@@ -15387,9 +15468,6 @@ var AuthService = class extends BaseService {
15387
15468
  if (!projectId) {
15388
15469
  throw new Error("Project ID is required");
15389
15470
  }
15390
- if (!this.hasValidTokens()) {
15391
- return "guest";
15392
- }
15393
15471
  const cacheKey = `role_${projectId}`;
15394
15472
  const cached = this._projectRoleCache.get(cacheKey);
15395
15473
  if (cached && Date.now() - cached.timestamp < this._roleCacheExpiry) {
@@ -15410,11 +15488,7 @@ var AuthService = class extends BaseService {
15410
15488
  }
15411
15489
  throw new Error(response.message);
15412
15490
  } catch (error) {
15413
- const message = (error == null ? void 0 : error.message) || "";
15414
- if (/401|403|unauthorized|no token|invalid token/iu.test(message)) {
15415
- return "guest";
15416
- }
15417
- throw new Error(`Failed to get project role: ${message}`, { cause: error });
15491
+ throw new Error(`Failed to get project role: ${error.message}`);
15418
15492
  }
15419
15493
  }
15420
15494
  /**
@@ -15426,9 +15500,6 @@ var AuthService = class extends BaseService {
15426
15500
  if (!projectKey) {
15427
15501
  throw new Error("Project key is required");
15428
15502
  }
15429
- if (!this.hasValidTokens()) {
15430
- return "guest";
15431
- }
15432
15503
  const cacheKey = `role_key_${projectKey}`;
15433
15504
  const cached = this._projectRoleCache.get(cacheKey);
15434
15505
  if (cached && Date.now() - cached.timestamp < this._roleCacheExpiry) {
@@ -15449,11 +15520,7 @@ var AuthService = class extends BaseService {
15449
15520
  }
15450
15521
  throw new Error(response.message);
15451
15522
  } catch (error) {
15452
- const message = (error == null ? void 0 : error.message) || "";
15453
- if (/401|403|unauthorized|no token|invalid token/iu.test(message)) {
15454
- return "guest";
15455
- }
15456
- throw new Error(`Failed to get project role by key: ${message}`, { cause: error });
15523
+ throw new Error(`Failed to get project role by key: ${error.message}`);
15457
15524
  }
15458
15525
  }
15459
15526
  /**
@@ -15556,7 +15623,7 @@ var AuthService = class extends BaseService {
15556
15623
  try {
15557
15624
  return await this.getMe();
15558
15625
  } catch (error) {
15559
- throw new Error(`Failed to get current user: ${error.message}`, { cause: error });
15626
+ throw new Error(`Failed to get current user: ${error.message}`);
15560
15627
  }
15561
15628
  }
15562
15629
  /**
@@ -15713,6 +15780,7 @@ var AuthService = class extends BaseService {
15713
15780
  this._tokenManager = null;
15714
15781
  }
15715
15782
  this._projectRoleCache.clear();
15783
+ this._initialized = false;
15716
15784
  this._setReady(false);
15717
15785
  }
15718
15786
  };
@@ -15865,11 +15933,11 @@ var CoreService = class extends BaseService {
15865
15933
  error = await response.json();
15866
15934
  } catch {
15867
15935
  }
15868
- throw new Error(error.message || error.error || "Request failed", { cause: error });
15936
+ throw new Error(error.message || error.error || "Request failed");
15869
15937
  }
15870
15938
  return response.status === 204 ? null : response.json();
15871
15939
  } catch (error) {
15872
- throw new Error(`Request failed: ${error.message}`, { cause: error });
15940
+ throw new Error(`Request failed: ${error.message}`);
15873
15941
  }
15874
15942
  }
15875
15943
  // ==================== AUTH METHODS ====================
@@ -15885,7 +15953,7 @@ var CoreService = class extends BaseService {
15885
15953
  }
15886
15954
  throw new Error(response.message);
15887
15955
  } catch (error) {
15888
- throw new Error(`Registration failed: ${error.message}`, { cause: error });
15956
+ throw new Error(`Registration failed: ${error.message}`);
15889
15957
  }
15890
15958
  }
15891
15959
  async login(email, password) {
@@ -15914,7 +15982,7 @@ var CoreService = class extends BaseService {
15914
15982
  }
15915
15983
  throw new Error(response.message);
15916
15984
  } catch (error) {
15917
- throw new Error(`Login failed: ${error.message}`, { cause: error });
15985
+ throw new Error(`Login failed: ${error.message}`);
15918
15986
  }
15919
15987
  }
15920
15988
  async logout() {
@@ -15933,7 +16001,7 @@ var CoreService = class extends BaseService {
15933
16001
  this._tokenManager.clearTokens();
15934
16002
  }
15935
16003
  this.updateContext({ authToken: null });
15936
- throw new Error(`Logout failed: ${error.message}`, { cause: error });
16004
+ throw new Error(`Logout failed: ${error.message}`);
15937
16005
  }
15938
16006
  }
15939
16007
  async refreshToken(refreshToken) {
@@ -15948,7 +16016,7 @@ var CoreService = class extends BaseService {
15948
16016
  }
15949
16017
  throw new Error(response.message);
15950
16018
  } catch (error) {
15951
- throw new Error(`Token refresh failed: ${error.message}`, { cause: error });
16019
+ throw new Error(`Token refresh failed: ${error.message}`);
15952
16020
  }
15953
16021
  }
15954
16022
  async googleAuth(idToken, inviteToken = null) {
@@ -15981,7 +16049,7 @@ var CoreService = class extends BaseService {
15981
16049
  }
15982
16050
  throw new Error(response.message);
15983
16051
  } catch (error) {
15984
- throw new Error(`Google auth failed: ${error.message}`, { cause: error });
16052
+ throw new Error(`Google auth failed: ${error.message}`);
15985
16053
  }
15986
16054
  }
15987
16055
  async githubAuth(code, inviteToken = null) {
@@ -16014,7 +16082,7 @@ var CoreService = class extends BaseService {
16014
16082
  }
16015
16083
  throw new Error(response.message);
16016
16084
  } catch (error) {
16017
- throw new Error(`GitHub auth failed: ${error.message}`, { cause: error });
16085
+ throw new Error(`GitHub auth failed: ${error.message}`);
16018
16086
  }
16019
16087
  }
16020
16088
  async googleAuthCallback(code, redirectUri, inviteToken = null) {
@@ -16047,7 +16115,7 @@ var CoreService = class extends BaseService {
16047
16115
  }
16048
16116
  throw new Error(response.message);
16049
16117
  } catch (error) {
16050
- throw new Error(`Google auth callback failed: ${error.message}`, { cause: error });
16118
+ throw new Error(`Google auth callback failed: ${error.message}`);
16051
16119
  }
16052
16120
  }
16053
16121
  async requestPasswordReset(email) {
@@ -16062,7 +16130,7 @@ var CoreService = class extends BaseService {
16062
16130
  }
16063
16131
  throw new Error(response.message);
16064
16132
  } catch (error) {
16065
- throw new Error(`Password reset request failed: ${error.message}`, { cause: error });
16133
+ throw new Error(`Password reset request failed: ${error.message}`);
16066
16134
  }
16067
16135
  }
16068
16136
  async confirmPasswordReset(token, password) {
@@ -16077,7 +16145,7 @@ var CoreService = class extends BaseService {
16077
16145
  }
16078
16146
  throw new Error(response.message);
16079
16147
  } catch (error) {
16080
- throw new Error(`Password reset confirmation failed: ${error.message}`, { cause: error });
16148
+ throw new Error(`Password reset confirmation failed: ${error.message}`);
16081
16149
  }
16082
16150
  }
16083
16151
  async confirmRegistration(token) {
@@ -16092,7 +16160,7 @@ var CoreService = class extends BaseService {
16092
16160
  }
16093
16161
  throw new Error(response.message);
16094
16162
  } catch (error) {
16095
- throw new Error(`Registration confirmation failed: ${error.message}`, { cause: error });
16163
+ throw new Error(`Registration confirmation failed: ${error.message}`);
16096
16164
  }
16097
16165
  }
16098
16166
  async requestPasswordChange() {
@@ -16107,7 +16175,7 @@ var CoreService = class extends BaseService {
16107
16175
  }
16108
16176
  throw new Error(response.message);
16109
16177
  } catch (error) {
16110
- throw new Error(`Password change request failed: ${error.message}`, { cause: error });
16178
+ throw new Error(`Password change request failed: ${error.message}`);
16111
16179
  }
16112
16180
  }
16113
16181
  async confirmPasswordChange(currentPassword, newPassword, code) {
@@ -16123,7 +16191,7 @@ var CoreService = class extends BaseService {
16123
16191
  }
16124
16192
  throw new Error(response.message);
16125
16193
  } catch (error) {
16126
- throw new Error(`Password change confirmation failed: ${error.message}`, { cause: error });
16194
+ throw new Error(`Password change confirmation failed: ${error.message}`);
16127
16195
  }
16128
16196
  }
16129
16197
  async getMe() {
@@ -16138,7 +16206,7 @@ var CoreService = class extends BaseService {
16138
16206
  }
16139
16207
  throw new Error(response.message);
16140
16208
  } catch (error) {
16141
- throw new Error(`Failed to get user profile: ${error.message}`, { cause: error });
16209
+ throw new Error(`Failed to get user profile: ${error.message}`);
16142
16210
  }
16143
16211
  }
16144
16212
  /**
@@ -16254,7 +16322,7 @@ var CoreService = class extends BaseService {
16254
16322
  }
16255
16323
  throw new Error(response.message);
16256
16324
  } catch (error) {
16257
- throw new Error(`Failed to update user profile: ${error.message}`, { cause: error });
16325
+ throw new Error(`Failed to update user profile: ${error.message}`);
16258
16326
  }
16259
16327
  }
16260
16328
  async getUserProjects() {
@@ -16277,7 +16345,7 @@ var CoreService = class extends BaseService {
16277
16345
  }
16278
16346
  throw new Error(response.message);
16279
16347
  } catch (error) {
16280
- throw new Error(`Failed to get user projects: ${error.message}`, { cause: error });
16348
+ throw new Error(`Failed to get user projects: ${error.message}`);
16281
16349
  }
16282
16350
  }
16283
16351
  async getUser(userId) {
@@ -16295,7 +16363,7 @@ var CoreService = class extends BaseService {
16295
16363
  }
16296
16364
  throw new Error(response.message);
16297
16365
  } catch (error) {
16298
- throw new Error(`Failed to get user: ${error.message}`, { cause: error });
16366
+ throw new Error(`Failed to get user: ${error.message}`);
16299
16367
  }
16300
16368
  }
16301
16369
  async getUserByEmail(email) {
@@ -16313,7 +16381,7 @@ var CoreService = class extends BaseService {
16313
16381
  }
16314
16382
  throw new Error(response.message);
16315
16383
  } catch (error) {
16316
- throw new Error(`Failed to get user by email: ${error.message}`, { cause: error });
16384
+ throw new Error(`Failed to get user by email: ${error.message}`);
16317
16385
  }
16318
16386
  }
16319
16387
  // ==================== PROJECT METHODS ====================
@@ -28269,263 +28337,7 @@ var validateParams = {
28269
28337
  };
28270
28338
 
28271
28339
  // src/services/CollabService.js
28272
- import { deepStringifyFunctions } from "@domql/utils";
28273
-
28274
- // src/utils/ordering.js
28275
- function isObjectLike(val) {
28276
- return val && typeof val === "object" && !Array.isArray(val);
28277
- }
28278
- function normalizePath(path) {
28279
- if (Array.isArray(path)) {
28280
- return path;
28281
- }
28282
- if (typeof path === "string") {
28283
- return [path];
28284
- }
28285
- return [];
28286
- }
28287
- function getParentPathsFromTuples(tuples = []) {
28288
- const seen = /* @__PURE__ */ new Set();
28289
- const parents = [];
28290
- const META_KEYS = /* @__PURE__ */ new Set([
28291
- "style",
28292
- "class",
28293
- "text",
28294
- "html",
28295
- "content",
28296
- "data",
28297
- "attr",
28298
- "state",
28299
- "scope",
28300
- "props",
28301
- "define",
28302
- "on",
28303
- "extend",
28304
- "extends",
28305
- "childExtend",
28306
- "childExtends",
28307
- "childProps",
28308
- "children",
28309
- "component",
28310
- "context",
28311
- "tag",
28312
- "key",
28313
- "__order",
28314
- "if"
28315
- ]);
28316
- for (let i = 0; i < tuples.length; i++) {
28317
- const tuple = tuples[i];
28318
- if (!Array.isArray(tuple) || tuple.length < 2) {
28319
- continue;
28320
- }
28321
- const path = normalizePath(tuple[1]);
28322
- if (!path.length) {
28323
- continue;
28324
- }
28325
- if (path[0] === "schema") {
28326
- continue;
28327
- }
28328
- const immediateParent = path.slice(0, -1);
28329
- if (immediateParent.length) {
28330
- const key = JSON.stringify(immediateParent);
28331
- if (!seen.has(key)) {
28332
- seen.add(key);
28333
- parents.push(immediateParent);
28334
- }
28335
- }
28336
- const last2 = path[path.length - 1];
28337
- if (META_KEYS.has(last2) && path.length >= 2) {
28338
- const containerParent = path.slice(0, -2);
28339
- if (containerParent.length) {
28340
- const key2 = JSON.stringify(containerParent);
28341
- if (!seen.has(key2)) {
28342
- seen.add(key2);
28343
- parents.push(containerParent);
28344
- }
28345
- }
28346
- }
28347
- for (let j = 0; j < path.length; j++) {
28348
- const seg = path[j];
28349
- if (!META_KEYS.has(seg)) {
28350
- continue;
28351
- }
28352
- const containerParent2 = path.slice(0, j);
28353
- if (!containerParent2.length) {
28354
- continue;
28355
- }
28356
- const key3 = JSON.stringify(containerParent2);
28357
- if (!seen.has(key3)) {
28358
- seen.add(key3);
28359
- parents.push(containerParent2);
28360
- }
28361
- }
28362
- }
28363
- return parents;
28364
- }
28365
- function computeOrdersFromState(root, parentPaths = []) {
28366
- if (!root || typeof root.getByPath !== "function") {
28367
- return [];
28368
- }
28369
- const orders = [];
28370
- const EXCLUDE_KEYS = /* @__PURE__ */ new Set(["__order"]);
28371
- for (let i = 0; i < parentPaths.length; i++) {
28372
- const parentPath = parentPaths[i];
28373
- const obj = (() => {
28374
- try {
28375
- return root.getByPath(parentPath);
28376
- } catch {
28377
- return null;
28378
- }
28379
- })();
28380
- if (!isObjectLike(obj)) {
28381
- continue;
28382
- }
28383
- const keys2 = Object.keys(obj).filter((k) => !EXCLUDE_KEYS.has(k));
28384
- orders.push({ path: parentPath, keys: keys2 });
28385
- }
28386
- return orders;
28387
- }
28388
- function normaliseSchemaCode(code) {
28389
- if (typeof code !== "string" || !code.length) {
28390
- return "";
28391
- }
28392
- return code.replaceAll("/////n", "\n").replaceAll("/////tilde", "`");
28393
- }
28394
- function parseExportedObject(code) {
28395
- const src = normaliseSchemaCode(code);
28396
- if (!src) {
28397
- return null;
28398
- }
28399
- const body = src.replace(/^\s*export\s+default\s*/u, "return ");
28400
- try {
28401
- return new Function(body)();
28402
- } catch {
28403
- return null;
28404
- }
28405
- }
28406
- function extractTopLevelKeysFromCode(code) {
28407
- const obj = parseExportedObject(code);
28408
- if (!obj || typeof obj !== "object") {
28409
- return [];
28410
- }
28411
- return Object.keys(obj);
28412
- }
28413
- function computeOrdersForTuples(root, tuples = []) {
28414
- const pendingChildrenByContainer = /* @__PURE__ */ new Map();
28415
- for (let i = 0; i < tuples.length; i++) {
28416
- const t = tuples[i];
28417
- if (!Array.isArray(t)) {
28418
- continue;
28419
- }
28420
- const [action, path] = t;
28421
- const p = normalizePath(path);
28422
- if (!Array.isArray(p) || p.length < 3) {
28423
- continue;
28424
- }
28425
- if (p[0] === "schema") {
28426
- continue;
28427
- }
28428
- const [typeName, containerKey, childKey] = p;
28429
- const containerPath = [typeName, containerKey];
28430
- const key = JSON.stringify(containerPath);
28431
- if (!pendingChildrenByContainer.has(key)) {
28432
- pendingChildrenByContainer.set(key, /* @__PURE__ */ new Set());
28433
- }
28434
- if (action === "update" || action === "set") {
28435
- pendingChildrenByContainer.get(key).add(childKey);
28436
- }
28437
- }
28438
- const preferredOrderMap = /* @__PURE__ */ new Map();
28439
- for (let i = 0; i < tuples.length; i++) {
28440
- const t = tuples[i];
28441
- if (!Array.isArray(t)) {
28442
- continue;
28443
- }
28444
- const [action, path, value2] = t;
28445
- const p = normalizePath(path);
28446
- if (action !== "update" || !Array.isArray(p) || p.length < 3) {
28447
- continue;
28448
- }
28449
- if (p[0] !== "schema") {
28450
- continue;
28451
- }
28452
- const [, type, key] = p;
28453
- const containerPath = [type, key];
28454
- const uses = value2 && Array.isArray(value2.uses) ? value2.uses : null;
28455
- const code = value2 && value2.code;
28456
- const obj = (() => {
28457
- try {
28458
- return root && typeof root.getByPath === "function" ? root.getByPath(containerPath) : null;
28459
- } catch {
28460
- return null;
28461
- }
28462
- })();
28463
- if (!obj) {
28464
- continue;
28465
- }
28466
- const present = new Set(Object.keys(obj));
28467
- const EXCLUDE_KEYS = /* @__PURE__ */ new Set(["__order"]);
28468
- const codeKeys = extractTopLevelKeysFromCode(code);
28469
- let resolved = [];
28470
- const pendingKey = JSON.stringify(containerPath);
28471
- const pendingChildren = pendingChildrenByContainer.get(pendingKey) || /* @__PURE__ */ new Set();
28472
- const eligible = /* @__PURE__ */ new Set([...present, ...pendingChildren]);
28473
- if (Array.isArray(codeKeys) && codeKeys.length) {
28474
- resolved = codeKeys.filter((k) => eligible.has(k) && !EXCLUDE_KEYS.has(k));
28475
- }
28476
- if (Array.isArray(uses) && uses.length) {
28477
- for (let u = 0; u < uses.length; u++) {
28478
- const keyName = uses[u];
28479
- if (eligible.has(keyName) && !EXCLUDE_KEYS.has(keyName) && !resolved.includes(keyName)) {
28480
- resolved.push(keyName);
28481
- }
28482
- }
28483
- }
28484
- if (pendingChildren.size) {
28485
- for (const child of pendingChildren) {
28486
- if (!EXCLUDE_KEYS.has(child) && !resolved.includes(child)) {
28487
- resolved.push(child);
28488
- }
28489
- }
28490
- }
28491
- if (resolved.length) {
28492
- preferredOrderMap.set(JSON.stringify(containerPath), { path: containerPath, keys: resolved });
28493
- }
28494
- }
28495
- const parents = getParentPathsFromTuples(tuples);
28496
- const orders = [];
28497
- const seen = /* @__PURE__ */ new Set();
28498
- preferredOrderMap.forEach((v) => {
28499
- const k = JSON.stringify(v.path);
28500
- if (!seen.has(k)) {
28501
- seen.add(k);
28502
- orders.push(v);
28503
- }
28504
- });
28505
- const fallbackOrders = computeOrdersFromState(root, parents);
28506
- for (let i = 0; i < fallbackOrders.length; i++) {
28507
- const v = fallbackOrders[i];
28508
- const k = JSON.stringify(v.path);
28509
- if (seen.has(k)) {
28510
- continue;
28511
- }
28512
- const pending = pendingChildrenByContainer.get(k);
28513
- if (pending && pending.size) {
28514
- const existing = new Set(v.keys);
28515
- for (const child of pending) {
28516
- if (existing.has(child)) {
28517
- continue;
28518
- }
28519
- v.keys.push(child);
28520
- }
28521
- }
28522
- seen.add(k);
28523
- orders.push(v);
28524
- }
28525
- return orders;
28526
- }
28527
-
28528
- // src/services/CollabService.js
28340
+ import { deepStringify } from "@domql/utils";
28529
28341
  var CollabService = class extends BaseService {
28530
28342
  constructor(config) {
28531
28343
  super(config);
@@ -28589,8 +28401,8 @@ var CollabService = class extends BaseService {
28589
28401
  logger(`[Notification] ${title}${message ? ` \u2013 ${message}` : ""}`);
28590
28402
  return;
28591
28403
  }
28592
- case "deepStringifyFunctions": {
28593
- return deepStringifyFunctions(...args2);
28404
+ case "deepStringify": {
28405
+ return deepStringify(...args2);
28594
28406
  }
28595
28407
  default:
28596
28408
  return {};
@@ -28625,49 +28437,57 @@ var CollabService = class extends BaseService {
28625
28437
  if (this._client) {
28626
28438
  await this.disconnect();
28627
28439
  }
28628
- this._client = new CollabClient({
28629
- jwt,
28630
- projectId,
28631
- branch,
28632
- live: Boolean(pro)
28633
- });
28634
- await new Promise((resolve) => {
28635
- var _a2, _b2;
28636
- if ((_a2 = this._client.socket) == null ? void 0 : _a2.connected) {
28637
- resolve();
28638
- } else {
28639
- (_b2 = this._client.socket) == null ? void 0 : _b2.once("connect", resolve);
28640
- }
28641
- });
28642
- (_b = this._client.socket) == null ? void 0 : _b.on("ops", ({ changes }) => {
28643
- console.log(`ops event`);
28644
- this._stateManager.applyChanges(changes, { fromSocket: true });
28645
- });
28646
- (_c = this._client.socket) == null ? void 0 : _c.on("commit", ({ version: version2 }) => {
28647
- if (version2) {
28648
- this._stateManager.setVersion(version2);
28649
- }
28650
- rootBus.emit("checkpoint:done", { version: version2, origin: "auto" });
28651
- });
28652
- (_d = this._client.socket) == null ? void 0 : _d.on("clients", this._handleClientsEvent.bind(this));
28653
- (_e = this._client.socket) == null ? void 0 : _e.on(
28654
- "bundle:done",
28655
- this._handleBundleDoneEvent.bind(this)
28656
- );
28657
- (_f = this._client.socket) == null ? void 0 : _f.on(
28658
- "bundle:error",
28659
- this._handleBundleErrorEvent.bind(this)
28660
- );
28661
- if (this._pendingOps.length) {
28662
- console.log(
28663
- `[CollabService] Flushing ${this._pendingOps.length} offline operation batch(es)`
28664
- );
28665
- this._pendingOps.forEach(({ changes, orders }) => {
28666
- this.socket.emit("ops", { changes, orders, ts: Date.now() });
28440
+ try {
28441
+ this._client = new CollabClient({
28442
+ jwt,
28443
+ projectId,
28444
+ branch,
28445
+ live: Boolean(pro)
28446
+ });
28447
+ await new Promise((resolve) => {
28448
+ var _a2, _b2;
28449
+ if ((_a2 = this._client.socket) == null ? void 0 : _a2.connected) {
28450
+ resolve();
28451
+ } else {
28452
+ (_b2 = this._client.socket) == null ? void 0 : _b2.once("connect", resolve);
28453
+ }
28454
+ });
28455
+ console.log("[CollabService] socket connected");
28456
+ (_b = this._client.socket) == null ? void 0 : _b.on("ops", ({ changes }) => {
28457
+ console.log(`ops event`);
28458
+ console.log(changes);
28459
+ this._stateManager.applyChanges(changes, { fromSocket: true });
28460
+ });
28461
+ (_c = this._client.socket) == null ? void 0 : _c.on("commit", ({ version: version2 }) => {
28462
+ if (version2) {
28463
+ this._stateManager.setVersion(version2);
28464
+ }
28465
+ rootBus.emit("checkpoint:done", { version: version2, origin: "auto" });
28667
28466
  });
28668
- this._pendingOps.length = 0;
28467
+ (_d = this._client.socket) == null ? void 0 : _d.on("clients", this._handleClientsEvent.bind(this));
28468
+ (_e = this._client.socket) == null ? void 0 : _e.on(
28469
+ "bundle:done",
28470
+ this._handleBundleDoneEvent.bind(this)
28471
+ );
28472
+ (_f = this._client.socket) == null ? void 0 : _f.on(
28473
+ "bundle:error",
28474
+ this._handleBundleErrorEvent.bind(this)
28475
+ );
28476
+ if (this._pendingOps.length) {
28477
+ console.log(
28478
+ `[CollabService] Flushing ${this._pendingOps.length} offline operation batch(es)`
28479
+ );
28480
+ this._pendingOps.forEach(({ tuples }) => {
28481
+ this.socket.emit("ops", { changes: tuples, ts: Date.now() });
28482
+ });
28483
+ this._pendingOps.length = 0;
28484
+ }
28485
+ this._connected = true;
28486
+ console.log("[CollabService] Connected to project:", projectId);
28487
+ } catch (err) {
28488
+ console.error("[CollabService] Connection failed:", err);
28489
+ throw err;
28669
28490
  }
28670
- this._connected = true;
28671
28491
  }
28672
28492
  disconnect() {
28673
28493
  var _a;
@@ -28705,128 +28525,24 @@ var CollabService = class extends BaseService {
28705
28525
  }
28706
28526
  /* ---------- data helpers ---------- */
28707
28527
  updateData(tuples, options = {}) {
28708
- var _a, _b;
28528
+ var _a;
28709
28529
  this._ensureStateManager();
28710
28530
  const { isUndo = false, isRedo = false } = options;
28711
28531
  if (!isUndo && !isRedo && !this._isUndoRedo) {
28712
28532
  this._trackForUndo(tuples, options);
28713
28533
  }
28714
- const processedTuples = (() => {
28715
- var _a2;
28716
- try {
28717
- const root = (_a2 = this._stateManager) == null ? void 0 : _a2.root;
28718
- const isPlainObject2 = (o) => o && typeof o === "object" && !Array.isArray(o);
28719
- const getByPath = (state2, path) => {
28720
- if (!state2 || typeof state2.getByPath !== "function") {
28721
- return null;
28722
- }
28723
- try {
28724
- return state2.getByPath(path);
28725
- } catch {
28726
- return null;
28727
- }
28728
- };
28729
- const expandTuple = (t) => {
28730
- const [action, path, value2] = t || [];
28731
- const isSchemaPath = Array.isArray(path) && path[0] === "schema";
28732
- if (action === "delete" || isSchemaPath) {
28733
- return [t];
28734
- }
28735
- const canConsiderExpansion = action === "update" && Array.isArray(path) && (path.length === 1 || path.length === 2) && isPlainObject2(value2);
28736
- if (!canConsiderExpansion) {
28737
- return [t];
28738
- }
28739
- const prev = getByPath(root, path) || {};
28740
- const next = value2 || {};
28741
- if (!isPlainObject2(prev) || !isPlainObject2(next)) {
28742
- return [t];
28743
- }
28744
- const ops = diffJson(prev, next, []);
28745
- if (!ops.length) {
28746
- return [];
28747
- }
28748
- const arr = [];
28749
- for (let j = 0; j < ops.length; j++) {
28750
- const op = ops[j];
28751
- const fullPath = [...path, ...op.path];
28752
- const last2 = fullPath[fullPath.length - 1];
28753
- if (op.action === "set") {
28754
- arr.push(["update", fullPath, op.value]);
28755
- } else if (op.action === "del") {
28756
- if (last2 !== "__order") {
28757
- arr.push(["delete", fullPath]);
28758
- }
28759
- }
28760
- }
28761
- return arr;
28762
- };
28763
- const minimizeTuples = (inputTuples) => {
28764
- const out = [];
28765
- for (let i = 0; i < inputTuples.length; i++) {
28766
- const expanded = expandTuple(inputTuples[i]);
28767
- for (let k = 0; k < expanded.length; k++) {
28768
- const tuple = expanded[k];
28769
- const isDelete = Array.isArray(tuple) && tuple[0] === "delete";
28770
- const isOrderKey = isDelete && Array.isArray(tuple[1]) && tuple[1][tuple[1].length - 1] === "__order";
28771
- if (!isOrderKey) {
28772
- out.push(tuple);
28773
- }
28774
- }
28775
- }
28776
- console.log(`Minimized tuples`, out);
28777
- return out;
28778
- };
28779
- console.log(`Processing tuples`, tuples);
28780
- return minimizeTuples(tuples);
28781
- } catch (err) {
28782
- console.warn(
28783
- "[CollabService] Minimal diff expansion failed \u2013 using original tuples",
28784
- err
28785
- );
28786
- return tuples;
28787
- }
28788
- })();
28789
28534
  if (options.append && options.append.length) {
28790
- processedTuples.push(...options.append);
28535
+ tuples.push(...options.append);
28791
28536
  }
28792
28537
  this._stateManager.applyChanges(tuples, { ...options });
28793
- const state = (_a = this._stateManager) == null ? void 0 : _a.root;
28794
- const el = state == null ? void 0 : state.__element;
28795
- const orders = computeOrdersForTuples(state, processedTuples);
28796
- const stringifiedGranularTuples = (el == null ? void 0 : el.call) ? el.call(
28797
- "deepStringifyFunctions",
28798
- processedTuples,
28799
- Array.isArray(processedTuples) ? [] : {}
28800
- ) : deepStringifyFunctions(
28801
- processedTuples,
28802
- Array.isArray(processedTuples) ? [] : {}
28803
- );
28804
- const stringifiedTuples = (el == null ? void 0 : el.call) ? el.call(
28805
- "deepStringifyFunctions",
28806
- tuples,
28807
- Array.isArray(tuples) ? [] : {}
28808
- ) : deepStringifyFunctions(
28809
- tuples,
28810
- Array.isArray(tuples) ? [] : {}
28811
- );
28538
+ tuples = deepStringify(tuples, []);
28812
28539
  if (!this.isConnected()) {
28813
28540
  console.warn("[CollabService] Not connected, queuing real-time update");
28814
- this._pendingOps.push({ changes: stringifiedTuples, granularChanges: stringifiedGranularTuples, orders, options });
28541
+ this._pendingOps.push({ tuples, options });
28815
28542
  return;
28816
28543
  }
28817
- if ((_b = this.socket) == null ? void 0 : _b.connected) {
28818
- console.log("[CollabService] Sending operations to the backend", {
28819
- changes: stringifiedTuples,
28820
- granularChanges: stringifiedGranularTuples,
28821
- orders,
28822
- ts: Date.now()
28823
- });
28824
- this.socket.emit("ops", {
28825
- changes: stringifiedTuples,
28826
- granularChanges: stringifiedGranularTuples,
28827
- orders,
28828
- ts: Date.now()
28829
- });
28544
+ if ((_a = this.socket) == null ? void 0 : _a.connected) {
28545
+ this.socket.emit("ops", { changes: tuples, ts: Date.now() });
28830
28546
  }
28831
28547
  return { success: true };
28832
28548
  }
@@ -28967,7 +28683,7 @@ var CollabService = class extends BaseService {
28967
28683
  const updatedOpts = { ...opts, skipComponentsChangedEvent: true };
28968
28684
  return this.updateData(tuples, updatedOpts);
28969
28685
  } catch (error) {
28970
- throw new Error(`Failed to add item: ${error.message}`, { cause: error });
28686
+ throw new Error(`Failed to add item: ${error.message}`);
28971
28687
  }
28972
28688
  }
28973
28689
  addMultipleItems(items, opts = {}) {
@@ -28996,7 +28712,7 @@ var CollabService = class extends BaseService {
28996
28712
  title: "Failed to add item",
28997
28713
  message: error.message
28998
28714
  });
28999
- throw new Error(`Failed to add item: ${error.message}`, { cause: error });
28715
+ throw new Error(`Failed to add item: ${error.message}`);
29000
28716
  }
29001
28717
  }
29002
28718
  updateItem(type, data2, opts = {}) {
@@ -29018,9 +28734,7 @@ var CollabService = class extends BaseService {
29018
28734
  title: "Failed to update item",
29019
28735
  message: error.message
29020
28736
  });
29021
- throw new Error(`Failed to update item: ${error.message}`, {
29022
- cause: error
29023
- });
28737
+ throw new Error(`Failed to update item: ${error.message}`);
29024
28738
  }
29025
28739
  }
29026
28740
  deleteItem(type, key, opts = {}) {
@@ -29045,9 +28759,7 @@ var CollabService = class extends BaseService {
29045
28759
  title: "Failed to delete item",
29046
28760
  message: error.message
29047
28761
  });
29048
- throw new Error(`Failed to delete item: ${error.message}`, {
29049
- cause: error
29050
- });
28762
+ throw new Error(`Failed to delete item: ${error.message}`);
29051
28763
  }
29052
28764
  }
29053
28765
  /* ---------- socket event helpers ---------- */
@@ -29155,7 +28867,7 @@ var ProjectService = class extends BaseService {
29155
28867
  }
29156
28868
  throw new Error(response.message);
29157
28869
  } catch (error) {
29158
- throw new Error(`Failed to create project: ${error.message}`, { cause: error });
28870
+ throw new Error(`Failed to create project: ${error.message}`);
29159
28871
  }
29160
28872
  }
29161
28873
  async getProjects(params2 = {}) {
@@ -29178,7 +28890,7 @@ var ProjectService = class extends BaseService {
29178
28890
  }
29179
28891
  throw new Error(response.message);
29180
28892
  } catch (error) {
29181
- throw new Error(`Failed to get projects: ${error.message}`, { cause: error });
28893
+ throw new Error(`Failed to get projects: ${error.message}`);
29182
28894
  }
29183
28895
  }
29184
28896
  /**
@@ -29209,7 +28921,7 @@ var ProjectService = class extends BaseService {
29209
28921
  }
29210
28922
  throw new Error(response.message);
29211
28923
  } catch (error) {
29212
- throw new Error(`Failed to list public projects: ${error.message}`, { cause: error });
28924
+ throw new Error(`Failed to list public projects: ${error.message}`);
29213
28925
  }
29214
28926
  }
29215
28927
  async getProject(projectId) {
@@ -29231,7 +28943,7 @@ var ProjectService = class extends BaseService {
29231
28943
  }
29232
28944
  throw new Error(response.message);
29233
28945
  } catch (error) {
29234
- throw new Error(`Failed to get project: ${error.message}`, { cause: error });
28946
+ throw new Error(`Failed to get project: ${error.message}`);
29235
28947
  }
29236
28948
  }
29237
28949
  /**
@@ -29256,7 +28968,7 @@ var ProjectService = class extends BaseService {
29256
28968
  }
29257
28969
  throw new Error(response.message);
29258
28970
  } catch (error) {
29259
- throw new Error(`Failed to get public project: ${error.message}`, { cause: error });
28971
+ throw new Error(`Failed to get public project: ${error.message}`);
29260
28972
  }
29261
28973
  }
29262
28974
  async getProjectByKey(key) {
@@ -29278,7 +28990,7 @@ var ProjectService = class extends BaseService {
29278
28990
  }
29279
28991
  throw new Error(response.message);
29280
28992
  } catch (error) {
29281
- throw new Error(`Failed to get project by key: ${error.message}`, { cause: error });
28993
+ throw new Error(`Failed to get project by key: ${error.message}`);
29282
28994
  }
29283
28995
  }
29284
28996
  /**
@@ -29312,7 +29024,7 @@ var ProjectService = class extends BaseService {
29312
29024
  }
29313
29025
  throw new Error(response.message);
29314
29026
  } catch (error) {
29315
- throw new Error(`Failed to get project data by key: ${error.message}`, { cause: error });
29027
+ throw new Error(`Failed to get project data by key: ${error.message}`);
29316
29028
  }
29317
29029
  }
29318
29030
  async updateProject(projectId, data2) {
@@ -29331,7 +29043,7 @@ var ProjectService = class extends BaseService {
29331
29043
  }
29332
29044
  throw new Error(response.message);
29333
29045
  } catch (error) {
29334
- throw new Error(`Failed to update project: ${error.message}`, { cause: error });
29046
+ throw new Error(`Failed to update project: ${error.message}`);
29335
29047
  }
29336
29048
  }
29337
29049
  async updateProjectComponents(projectId, components) {
@@ -29353,7 +29065,7 @@ var ProjectService = class extends BaseService {
29353
29065
  }
29354
29066
  throw new Error(response.message);
29355
29067
  } catch (error) {
29356
- throw new Error(`Failed to update project components: ${error.message}`, { cause: error });
29068
+ throw new Error(`Failed to update project components: ${error.message}`);
29357
29069
  }
29358
29070
  }
29359
29071
  async updateProjectSettings(projectId, settings) {
@@ -29372,7 +29084,7 @@ var ProjectService = class extends BaseService {
29372
29084
  }
29373
29085
  throw new Error(response.message);
29374
29086
  } catch (error) {
29375
- throw new Error(`Failed to update project settings: ${error.message}`, { cause: error });
29087
+ throw new Error(`Failed to update project settings: ${error.message}`);
29376
29088
  }
29377
29089
  }
29378
29090
  async updateProjectName(projectId, name) {
@@ -29391,7 +29103,7 @@ var ProjectService = class extends BaseService {
29391
29103
  }
29392
29104
  throw new Error(response.message);
29393
29105
  } catch (error) {
29394
- throw new Error(`Failed to update project name: ${error.message}`, { cause: error });
29106
+ throw new Error(`Failed to update project name: ${error.message}`);
29395
29107
  }
29396
29108
  }
29397
29109
  async updateProjectPackage(projectId, pkg) {
@@ -29410,7 +29122,7 @@ var ProjectService = class extends BaseService {
29410
29122
  }
29411
29123
  throw new Error(response.message);
29412
29124
  } catch (error) {
29413
- throw new Error(`Failed to update project package: ${error.message}`, { cause: error });
29125
+ throw new Error(`Failed to update project package: ${error.message}`);
29414
29126
  }
29415
29127
  }
29416
29128
  async duplicateProject(projectId, newName, newKey, targetUserId) {
@@ -29429,7 +29141,7 @@ var ProjectService = class extends BaseService {
29429
29141
  }
29430
29142
  throw new Error(response.message);
29431
29143
  } catch (error) {
29432
- throw new Error(`Failed to duplicate project: ${error.message}`, { cause: error });
29144
+ throw new Error(`Failed to duplicate project: ${error.message}`);
29433
29145
  }
29434
29146
  }
29435
29147
  async removeProject(projectId) {
@@ -29447,7 +29159,7 @@ var ProjectService = class extends BaseService {
29447
29159
  }
29448
29160
  throw new Error(response.message);
29449
29161
  } catch (error) {
29450
- throw new Error(`Failed to remove project: ${error.message}`, { cause: error });
29162
+ throw new Error(`Failed to remove project: ${error.message}`);
29451
29163
  }
29452
29164
  }
29453
29165
  async checkProjectKeyAvailability(key) {
@@ -29466,8 +29178,7 @@ var ProjectService = class extends BaseService {
29466
29178
  throw new Error(response.message);
29467
29179
  } catch (error) {
29468
29180
  throw new Error(
29469
- `Failed to check project key availability: ${error.message}`,
29470
- { cause: error }
29181
+ `Failed to check project key availability: ${error.message}`
29471
29182
  );
29472
29183
  }
29473
29184
  }
@@ -29487,7 +29198,7 @@ var ProjectService = class extends BaseService {
29487
29198
  }
29488
29199
  throw new Error(response.message);
29489
29200
  } catch (error) {
29490
- throw new Error(`Failed to get project members: ${error.message}`, { cause: error });
29201
+ throw new Error(`Failed to get project members: ${error.message}`);
29491
29202
  }
29492
29203
  }
29493
29204
  async inviteMember(projectId, email, role = "guest", options = {}) {
@@ -29516,7 +29227,7 @@ var ProjectService = class extends BaseService {
29516
29227
  }
29517
29228
  throw new Error(response.message);
29518
29229
  } catch (error) {
29519
- throw new Error(`Failed to invite member: ${error.message}`, { cause: error });
29230
+ throw new Error(`Failed to invite member: ${error.message}`);
29520
29231
  }
29521
29232
  }
29522
29233
  async acceptInvite(token) {
@@ -29535,7 +29246,7 @@ var ProjectService = class extends BaseService {
29535
29246
  }
29536
29247
  throw new Error(response.message);
29537
29248
  } catch (error) {
29538
- throw new Error(`Failed to accept invite: ${error.message}`, { cause: error });
29249
+ throw new Error(`Failed to accept invite: ${error.message}`);
29539
29250
  }
29540
29251
  }
29541
29252
  async updateMemberRole(projectId, memberId, role) {
@@ -29557,7 +29268,7 @@ var ProjectService = class extends BaseService {
29557
29268
  }
29558
29269
  throw new Error(response.message);
29559
29270
  } catch (error) {
29560
- throw new Error(`Failed to update member role: ${error.message}`, { cause: error });
29271
+ throw new Error(`Failed to update member role: ${error.message}`);
29561
29272
  }
29562
29273
  }
29563
29274
  async removeMember(projectId, memberId) {
@@ -29578,7 +29289,7 @@ var ProjectService = class extends BaseService {
29578
29289
  }
29579
29290
  throw new Error(response.message);
29580
29291
  } catch (error) {
29581
- throw new Error(`Failed to remove member: ${error.message}`, { cause: error });
29292
+ throw new Error(`Failed to remove member: ${error.message}`);
29582
29293
  }
29583
29294
  }
29584
29295
  // ==================== PROJECT LIBRARY METHODS ====================
@@ -29598,7 +29309,7 @@ var ProjectService = class extends BaseService {
29598
29309
  }
29599
29310
  throw new Error(response.message);
29600
29311
  } catch (error) {
29601
- throw new Error(`Failed to get available libraries: ${error.message}`, { cause: error });
29312
+ throw new Error(`Failed to get available libraries: ${error.message}`);
29602
29313
  }
29603
29314
  }
29604
29315
  async getProjectLibraries(projectId) {
@@ -29616,7 +29327,7 @@ var ProjectService = class extends BaseService {
29616
29327
  }
29617
29328
  throw new Error(response.message);
29618
29329
  } catch (error) {
29619
- throw new Error(`Failed to get project libraries: ${error.message}`, { cause: error });
29330
+ throw new Error(`Failed to get project libraries: ${error.message}`);
29620
29331
  }
29621
29332
  }
29622
29333
  async addProjectLibraries(projectId, libraryIds) {
@@ -29631,11 +29342,11 @@ var ProjectService = class extends BaseService {
29631
29342
  methodName: "addProjectLibraries"
29632
29343
  });
29633
29344
  if (response.success) {
29634
- return response;
29345
+ return response.data;
29635
29346
  }
29636
29347
  throw new Error(response.message);
29637
29348
  } catch (error) {
29638
- throw new Error(`Failed to add project libraries: ${error.message}`, { cause: error });
29349
+ throw new Error(`Failed to add project libraries: ${error.message}`);
29639
29350
  }
29640
29351
  }
29641
29352
  async removeProjectLibraries(projectId, libraryIds) {
@@ -29654,7 +29365,7 @@ var ProjectService = class extends BaseService {
29654
29365
  }
29655
29366
  throw new Error(response.message);
29656
29367
  } catch (error) {
29657
- throw new Error(`Failed to remove project libraries: ${error.message}`, { cause: error });
29368
+ throw new Error(`Failed to remove project libraries: ${error.message}`);
29658
29369
  }
29659
29370
  }
29660
29371
  // ==================== PROJECT DATA METHODS (SYMSTORY REPLACEMENT) ====================
@@ -29671,8 +29382,6 @@ var ProjectService = class extends BaseService {
29671
29382
  throw new Error("Changes must be an array");
29672
29383
  }
29673
29384
  const { message, branch = "main", type = "patch" } = options;
29674
- const state = this._context && this._context.state;
29675
- const derivedOrders = options.orders || (state ? computeOrdersForTuples(state, changes) : []);
29676
29385
  try {
29677
29386
  const response = await this._request(`/projects/${projectId}/changes`, {
29678
29387
  method: "POST",
@@ -29680,8 +29389,7 @@ var ProjectService = class extends BaseService {
29680
29389
  changes,
29681
29390
  message,
29682
29391
  branch,
29683
- type,
29684
- ...derivedOrders && derivedOrders.length ? { orders: derivedOrders } : {}
29392
+ type
29685
29393
  }),
29686
29394
  methodName: "applyProjectChanges"
29687
29395
  });
@@ -29690,7 +29398,7 @@ var ProjectService = class extends BaseService {
29690
29398
  }
29691
29399
  throw new Error(response.message);
29692
29400
  } catch (error) {
29693
- throw new Error(`Failed to apply project changes: ${error.message}`, { cause: error });
29401
+ throw new Error(`Failed to apply project changes: ${error.message}`);
29694
29402
  }
29695
29403
  }
29696
29404
  /**
@@ -29725,7 +29433,7 @@ var ProjectService = class extends BaseService {
29725
29433
  }
29726
29434
  throw new Error(response.message);
29727
29435
  } catch (error) {
29728
- throw new Error(`Failed to get project data: ${error.message}`, { cause: error });
29436
+ throw new Error(`Failed to get project data: ${error.message}`);
29729
29437
  }
29730
29438
  }
29731
29439
  /**
@@ -29755,7 +29463,7 @@ var ProjectService = class extends BaseService {
29755
29463
  }
29756
29464
  throw new Error(response.message);
29757
29465
  } catch (error) {
29758
- throw new Error(`Failed to get project versions: ${error.message}`, { cause: error });
29466
+ throw new Error(`Failed to get project versions: ${error.message}`);
29759
29467
  }
29760
29468
  }
29761
29469
  /**
@@ -29787,7 +29495,7 @@ var ProjectService = class extends BaseService {
29787
29495
  }
29788
29496
  throw new Error(response.message);
29789
29497
  } catch (error) {
29790
- throw new Error(`Failed to restore project version: ${error.message}`, { cause: error });
29498
+ throw new Error(`Failed to restore project version: ${error.message}`);
29791
29499
  }
29792
29500
  }
29793
29501
  /**
@@ -29887,7 +29595,7 @@ var ProjectService = class extends BaseService {
29887
29595
  }
29888
29596
  throw new Error(response.message);
29889
29597
  } catch (error) {
29890
- throw new Error(`Failed to get favorite projects: ${error.message}`, { cause: error });
29598
+ throw new Error(`Failed to get favorite projects: ${error.message}`);
29891
29599
  }
29892
29600
  }
29893
29601
  async addFavoriteProject(projectId) {
@@ -29905,7 +29613,7 @@ var ProjectService = class extends BaseService {
29905
29613
  }
29906
29614
  throw new Error(response.message);
29907
29615
  } catch (error) {
29908
- throw new Error(`Failed to add favorite project: ${error.message}`, { cause: error });
29616
+ throw new Error(`Failed to add favorite project: ${error.message}`);
29909
29617
  }
29910
29618
  }
29911
29619
  async removeFavoriteProject(projectId) {
@@ -29923,7 +29631,7 @@ var ProjectService = class extends BaseService {
29923
29631
  }
29924
29632
  throw new Error(response.message);
29925
29633
  } catch (error) {
29926
- throw new Error(`Failed to remove favorite project: ${error.message}`, { cause: error });
29634
+ throw new Error(`Failed to remove favorite project: ${error.message}`);
29927
29635
  }
29928
29636
  }
29929
29637
  // ==================== RECENT PROJECT METHODS ====================
@@ -29952,7 +29660,7 @@ var ProjectService = class extends BaseService {
29952
29660
  }
29953
29661
  throw new Error(response.message);
29954
29662
  } catch (error) {
29955
- throw new Error(`Failed to get recent projects: ${error.message}`, { cause: error });
29663
+ throw new Error(`Failed to get recent projects: ${error.message}`);
29956
29664
  }
29957
29665
  }
29958
29666
  };
@@ -29974,7 +29682,7 @@ var PlanService = class extends BaseService {
29974
29682
  }
29975
29683
  throw new Error(response.message);
29976
29684
  } catch (error) {
29977
- throw new Error(`Failed to get plans: ${error.message}`, { cause: error });
29685
+ throw new Error(`Failed to get plans: ${error.message}`);
29978
29686
  }
29979
29687
  }
29980
29688
  /**
@@ -29994,7 +29702,7 @@ var PlanService = class extends BaseService {
29994
29702
  }
29995
29703
  throw new Error(response.message);
29996
29704
  } catch (error) {
29997
- throw new Error(`Failed to get plan: ${error.message}`, { cause: error });
29705
+ throw new Error(`Failed to get plan: ${error.message}`);
29998
29706
  }
29999
29707
  }
30000
29708
  // ==================== ADMIN PLAN METHODS ====================
@@ -30013,7 +29721,7 @@ var PlanService = class extends BaseService {
30013
29721
  }
30014
29722
  throw new Error(response.message);
30015
29723
  } catch (error) {
30016
- throw new Error(`Failed to get admin plans: ${error.message}`, { cause: error });
29724
+ throw new Error(`Failed to get admin plans: ${error.message}`);
30017
29725
  }
30018
29726
  }
30019
29727
  /**
@@ -30035,7 +29743,7 @@ var PlanService = class extends BaseService {
30035
29743
  }
30036
29744
  throw new Error(response.message);
30037
29745
  } catch (error) {
30038
- throw new Error(`Failed to create plan: ${error.message}`, { cause: error });
29746
+ throw new Error(`Failed to create plan: ${error.message}`);
30039
29747
  }
30040
29748
  }
30041
29749
  /**
@@ -30060,7 +29768,7 @@ var PlanService = class extends BaseService {
30060
29768
  }
30061
29769
  throw new Error(response.message);
30062
29770
  } catch (error) {
30063
- throw new Error(`Failed to update plan: ${error.message}`, { cause: error });
29771
+ throw new Error(`Failed to update plan: ${error.message}`);
30064
29772
  }
30065
29773
  }
30066
29774
  /**
@@ -30081,7 +29789,7 @@ var PlanService = class extends BaseService {
30081
29789
  }
30082
29790
  throw new Error(response.message);
30083
29791
  } catch (error) {
30084
- throw new Error(`Failed to delete plan: ${error.message}`, { cause: error });
29792
+ throw new Error(`Failed to delete plan: ${error.message}`);
30085
29793
  }
30086
29794
  }
30087
29795
  /**
@@ -30099,7 +29807,7 @@ var PlanService = class extends BaseService {
30099
29807
  }
30100
29808
  throw new Error(response.message);
30101
29809
  } catch (error) {
30102
- throw new Error(`Failed to initialize plans: ${error.message}`, { cause: error });
29810
+ throw new Error(`Failed to initialize plans: ${error.message}`);
30103
29811
  }
30104
29812
  }
30105
29813
  // ==================== PLAN HELPER METHODS ====================
@@ -30114,7 +29822,7 @@ var PlanService = class extends BaseService {
30114
29822
  }
30115
29823
  return plans;
30116
29824
  } catch (error) {
30117
- throw new Error(`Failed to get plans with validation: ${error.message}`, { cause: error });
29825
+ throw new Error(`Failed to get plans with validation: ${error.message}`);
30118
29826
  }
30119
29827
  }
30120
29828
  /**
@@ -30131,7 +29839,7 @@ var PlanService = class extends BaseService {
30131
29839
  }
30132
29840
  return plan;
30133
29841
  } catch (error) {
30134
- throw new Error(`Failed to get plan with validation: ${error.message}`, { cause: error });
29842
+ throw new Error(`Failed to get plan with validation: ${error.message}`);
30135
29843
  }
30136
29844
  }
30137
29845
  /**
@@ -30183,7 +29891,7 @@ var PlanService = class extends BaseService {
30183
29891
  const plans = await this.getPlans();
30184
29892
  return plans.filter((plan) => plan.active !== false);
30185
29893
  } catch (error) {
30186
- throw new Error(`Failed to get active plans: ${error.message}`, { cause: error });
29894
+ throw new Error(`Failed to get active plans: ${error.message}`);
30187
29895
  }
30188
29896
  }
30189
29897
  /**
@@ -30197,7 +29905,7 @@ var PlanService = class extends BaseService {
30197
29905
  return price >= minPrice && price <= maxPrice;
30198
29906
  });
30199
29907
  } catch (error) {
30200
- throw new Error(`Failed to get plans by price range: ${error.message}`, { cause: error });
29908
+ throw new Error(`Failed to get plans by price range: ${error.message}`);
30201
29909
  }
30202
29910
  }
30203
29911
  /**
@@ -30215,7 +29923,7 @@ var PlanService = class extends BaseService {
30215
29923
  }
30216
29924
  return plan;
30217
29925
  } catch (error) {
30218
- throw new Error(`Failed to get plan by key: ${error.message}`, { cause: error });
29926
+ throw new Error(`Failed to get plan by key: ${error.message}`);
30219
29927
  }
30220
29928
  }
30221
29929
  };
@@ -30256,7 +29964,7 @@ var SubscriptionService = class extends BaseService {
30256
29964
  }
30257
29965
  throw new Error(response.message);
30258
29966
  } catch (error) {
30259
- throw new Error(`Failed to create subscription: ${error.message}`, { cause: error });
29967
+ throw new Error(`Failed to create subscription: ${error.message}`);
30260
29968
  }
30261
29969
  }
30262
29970
  /**
@@ -30277,7 +29985,7 @@ var SubscriptionService = class extends BaseService {
30277
29985
  }
30278
29986
  throw new Error(response.message);
30279
29987
  } catch (error) {
30280
- throw new Error(`Failed to get project subscription status: ${error.message}`, { cause: error });
29988
+ throw new Error(`Failed to get project subscription status: ${error.message}`);
30281
29989
  }
30282
29990
  }
30283
29991
  /**
@@ -30298,7 +30006,7 @@ var SubscriptionService = class extends BaseService {
30298
30006
  }
30299
30007
  throw new Error(response.message);
30300
30008
  } catch (error) {
30301
- throw new Error(`Failed to get subscription usage: ${error.message}`, { cause: error });
30009
+ throw new Error(`Failed to get subscription usage: ${error.message}`);
30302
30010
  }
30303
30011
  }
30304
30012
  /**
@@ -30319,7 +30027,7 @@ var SubscriptionService = class extends BaseService {
30319
30027
  }
30320
30028
  throw new Error(response.message);
30321
30029
  } catch (error) {
30322
- throw new Error(`Failed to cancel subscription: ${error.message}`, { cause: error });
30030
+ throw new Error(`Failed to cancel subscription: ${error.message}`);
30323
30031
  }
30324
30032
  }
30325
30033
  /**
@@ -30356,7 +30064,7 @@ var SubscriptionService = class extends BaseService {
30356
30064
  }
30357
30065
  throw new Error(response.message);
30358
30066
  } catch (error) {
30359
- throw new Error(`Failed to list invoices: ${error.message}`, { cause: error });
30067
+ throw new Error(`Failed to list invoices: ${error.message}`);
30360
30068
  }
30361
30069
  }
30362
30070
  /**
@@ -30383,7 +30091,7 @@ var SubscriptionService = class extends BaseService {
30383
30091
  }
30384
30092
  throw new Error(response.message);
30385
30093
  } catch (error) {
30386
- throw new Error(`Failed to get portal URL: ${error.message}`, { cause: error });
30094
+ throw new Error(`Failed to get portal URL: ${error.message}`);
30387
30095
  }
30388
30096
  }
30389
30097
  // ==================== SUBSCRIPTION HELPER METHODS ====================
@@ -30418,7 +30126,7 @@ var SubscriptionService = class extends BaseService {
30418
30126
  const status = await this.getProjectStatus(projectId);
30419
30127
  return status.hasSubscription === true;
30420
30128
  } catch (error) {
30421
- throw new Error(`Failed to check subscription status: ${error.message}`, { cause: error });
30129
+ throw new Error(`Failed to check subscription status: ${error.message}`);
30422
30130
  }
30423
30131
  }
30424
30132
  /**
@@ -30432,7 +30140,7 @@ var SubscriptionService = class extends BaseService {
30432
30140
  }
30433
30141
  return status.subscription;
30434
30142
  } catch (error) {
30435
- throw new Error(`Failed to get project subscription: ${error.message}`, { cause: error });
30143
+ throw new Error(`Failed to get project subscription: ${error.message}`);
30436
30144
  }
30437
30145
  }
30438
30146
  /**
@@ -30446,7 +30154,7 @@ var SubscriptionService = class extends BaseService {
30446
30154
  }
30447
30155
  return status.usage;
30448
30156
  } catch (error) {
30449
- throw new Error(`Failed to get project usage: ${error.message}`, { cause: error });
30157
+ throw new Error(`Failed to get project usage: ${error.message}`);
30450
30158
  }
30451
30159
  }
30452
30160
  /**
@@ -30460,7 +30168,7 @@ var SubscriptionService = class extends BaseService {
30460
30168
  pagination: result.pagination || {}
30461
30169
  };
30462
30170
  } catch (error) {
30463
- throw new Error(`Failed to get invoices with pagination: ${error.message}`, { cause: error });
30171
+ throw new Error(`Failed to get invoices with pagination: ${error.message}`);
30464
30172
  }
30465
30173
  }
30466
30174
  /**
@@ -30471,7 +30179,7 @@ var SubscriptionService = class extends BaseService {
30471
30179
  const usage = await this.getUsage(subscriptionId);
30472
30180
  return usage && usage.subscription && usage.subscription.status === "active";
30473
30181
  } catch (error) {
30474
- throw new Error(`Failed to check subscription status: ${error.message}`, { cause: error });
30182
+ throw new Error(`Failed to check subscription status: ${error.message}`);
30475
30183
  }
30476
30184
  }
30477
30185
  /**
@@ -30482,7 +30190,7 @@ var SubscriptionService = class extends BaseService {
30482
30190
  const usage = await this.getUsage(subscriptionId);
30483
30191
  return usage.limits || {};
30484
30192
  } catch (error) {
30485
- throw new Error(`Failed to get subscription limits: ${error.message}`, { cause: error });
30193
+ throw new Error(`Failed to get subscription limits: ${error.message}`);
30486
30194
  }
30487
30195
  }
30488
30196
  /**
@@ -30518,7 +30226,7 @@ var SubscriptionService = class extends BaseService {
30518
30226
  }
30519
30227
  throw new Error(response.message);
30520
30228
  } catch (error) {
30521
- throw new Error(`Failed to change subscription: ${error.message}`, { cause: error });
30229
+ throw new Error(`Failed to change subscription: ${error.message}`);
30522
30230
  }
30523
30231
  }
30524
30232
  /**
@@ -30546,7 +30254,7 @@ var SubscriptionService = class extends BaseService {
30546
30254
  }
30547
30255
  throw new Error(response.message);
30548
30256
  } catch (error) {
30549
- throw new Error(`Failed to downgrade subscription: ${error.message}`, { cause: error });
30257
+ throw new Error(`Failed to downgrade subscription: ${error.message}`);
30550
30258
  }
30551
30259
  }
30552
30260
  /**
@@ -30635,7 +30343,7 @@ var FileService = class extends BaseService {
30635
30343
  message: response.message
30636
30344
  };
30637
30345
  } catch (error) {
30638
- throw new Error(`File upload failed: ${error.message}`, { cause: error });
30346
+ throw new Error(`File upload failed: ${error.message}`);
30639
30347
  }
30640
30348
  }
30641
30349
  async updateProjectIcon(projectId, iconFile) {
@@ -30659,7 +30367,7 @@ var FileService = class extends BaseService {
30659
30367
  }
30660
30368
  throw new Error(response.message);
30661
30369
  } catch (error) {
30662
- throw new Error(`Failed to update project icon: ${error.message}`, { cause: error });
30370
+ throw new Error(`Failed to update project icon: ${error.message}`);
30663
30371
  }
30664
30372
  }
30665
30373
  // ==================== FILE HELPER METHODS ====================
@@ -30809,7 +30517,7 @@ var PaymentService = class extends BaseService {
30809
30517
  }
30810
30518
  throw new Error(response.message);
30811
30519
  } catch (error) {
30812
- throw new Error(`Failed to checkout: ${error.message}`, { cause: error });
30520
+ throw new Error(`Failed to checkout: ${error.message}`);
30813
30521
  }
30814
30522
  }
30815
30523
  async getSubscriptionStatus(projectId) {
@@ -30830,7 +30538,7 @@ var PaymentService = class extends BaseService {
30830
30538
  }
30831
30539
  throw new Error(response.message);
30832
30540
  } catch (error) {
30833
- throw new Error(`Failed to get subscription status: ${error.message}`, { cause: error });
30541
+ throw new Error(`Failed to get subscription status: ${error.message}`);
30834
30542
  }
30835
30543
  }
30836
30544
  // ==================== PAYMENT HELPER METHODS ====================
@@ -31046,7 +30754,7 @@ var DnsService = class extends BaseService {
31046
30754
  }
31047
30755
  throw new Error(response.message);
31048
30756
  } catch (error) {
31049
- throw new Error(`Failed to create DNS record: ${error.message}`, { cause: error });
30757
+ throw new Error(`Failed to create DNS record: ${error.message}`);
31050
30758
  }
31051
30759
  }
31052
30760
  async getDnsRecord(domain) {
@@ -31064,7 +30772,7 @@ var DnsService = class extends BaseService {
31064
30772
  }
31065
30773
  throw new Error(response.message);
31066
30774
  } catch (error) {
31067
- throw new Error(`Failed to get DNS record: ${error.message}`, { cause: error });
30775
+ throw new Error(`Failed to get DNS record: ${error.message}`);
31068
30776
  }
31069
30777
  }
31070
30778
  async getCustomHost(hostname) {
@@ -31100,7 +30808,7 @@ var DnsService = class extends BaseService {
31100
30808
  }
31101
30809
  throw new Error(response.message);
31102
30810
  } catch (error) {
31103
- throw new Error(`Failed to remove DNS record: ${error.message}`, { cause: error });
30811
+ throw new Error(`Failed to remove DNS record: ${error.message}`);
31104
30812
  }
31105
30813
  }
31106
30814
  // Deprecated, use addProjectCustomDomains instead
@@ -31124,7 +30832,7 @@ var DnsService = class extends BaseService {
31124
30832
  }
31125
30833
  throw new Error(response.message);
31126
30834
  } catch (error) {
31127
- throw new Error(`Failed to set project domains: ${error.message}`, { cause: error });
30835
+ throw new Error(`Failed to set project domains: ${error.message}`);
31128
30836
  }
31129
30837
  }
31130
30838
  // customDomains could be a string or an array of strings
@@ -31400,7 +31108,7 @@ var BranchService = class extends BaseService {
31400
31108
  }
31401
31109
  throw new Error(response.message);
31402
31110
  } catch (error) {
31403
- throw new Error(`Failed to list branches: ${error.message}`, { cause: error });
31111
+ throw new Error(`Failed to list branches: ${error.message}`);
31404
31112
  }
31405
31113
  }
31406
31114
  /**
@@ -31426,7 +31134,7 @@ var BranchService = class extends BaseService {
31426
31134
  }
31427
31135
  throw new Error(response.message);
31428
31136
  } catch (error) {
31429
- throw new Error(`Failed to create branch: ${error.message}`, { cause: error });
31137
+ throw new Error(`Failed to create branch: ${error.message}`);
31430
31138
  }
31431
31139
  }
31432
31140
  /**
@@ -31456,7 +31164,7 @@ var BranchService = class extends BaseService {
31456
31164
  }
31457
31165
  throw new Error(response.message);
31458
31166
  } catch (error) {
31459
- throw new Error(`Failed to delete branch: ${error.message}`, { cause: error });
31167
+ throw new Error(`Failed to delete branch: ${error.message}`);
31460
31168
  }
31461
31169
  }
31462
31170
  /**
@@ -31492,7 +31200,7 @@ var BranchService = class extends BaseService {
31492
31200
  }
31493
31201
  throw new Error(response.message);
31494
31202
  } catch (error) {
31495
- throw new Error(`Failed to rename branch: ${error.message}`, { cause: error });
31203
+ throw new Error(`Failed to rename branch: ${error.message}`);
31496
31204
  }
31497
31205
  }
31498
31206
  /**
@@ -31531,7 +31239,7 @@ var BranchService = class extends BaseService {
31531
31239
  }
31532
31240
  throw new Error(response.message);
31533
31241
  } catch (error) {
31534
- throw new Error(`Failed to get branch changes: ${error.message}`, { cause: error });
31242
+ throw new Error(`Failed to get branch changes: ${error.message}`);
31535
31243
  }
31536
31244
  }
31537
31245
  /**
@@ -31578,7 +31286,7 @@ var BranchService = class extends BaseService {
31578
31286
  if (error.message.includes("conflicts") || error.message.includes("409")) {
31579
31287
  throw new Error(`Merge conflicts detected: ${error.message}`);
31580
31288
  }
31581
- throw new Error(`Failed to merge branch: ${error.message}`, { cause: error });
31289
+ throw new Error(`Failed to merge branch: ${error.message}`);
31582
31290
  }
31583
31291
  }
31584
31292
  /**
@@ -31607,7 +31315,7 @@ var BranchService = class extends BaseService {
31607
31315
  }
31608
31316
  throw new Error(response.message);
31609
31317
  } catch (error) {
31610
- throw new Error(`Failed to reset branch: ${error.message}`, { cause: error });
31318
+ throw new Error(`Failed to reset branch: ${error.message}`);
31611
31319
  }
31612
31320
  }
31613
31321
  /**
@@ -31633,7 +31341,7 @@ var BranchService = class extends BaseService {
31633
31341
  }
31634
31342
  throw new Error(response.message);
31635
31343
  } catch (error) {
31636
- throw new Error(`Failed to publish version: ${error.message}`, { cause: error });
31344
+ throw new Error(`Failed to publish version: ${error.message}`);
31637
31345
  }
31638
31346
  }
31639
31347
  // ==================== BRANCH HELPER METHODS ====================
@@ -31665,7 +31373,7 @@ var BranchService = class extends BaseService {
31665
31373
  const branches = await this.listBranches(projectId);
31666
31374
  return ((_a = branches == null ? void 0 : branches.data) == null ? void 0 : _a.includes(branchName)) || false;
31667
31375
  } catch (error) {
31668
- throw new Error(`Failed to check if branch exists: ${error.message}`, { cause: error });
31376
+ throw new Error(`Failed to check if branch exists: ${error.message}`);
31669
31377
  }
31670
31378
  }
31671
31379
  /**
@@ -31735,7 +31443,7 @@ var BranchService = class extends BaseService {
31735
31443
  canRename: exists && branchName !== "main"
31736
31444
  };
31737
31445
  } catch (error) {
31738
- throw new Error(`Failed to get branch status: ${error.message}`, { cause: error });
31446
+ throw new Error(`Failed to get branch status: ${error.message}`);
31739
31447
  }
31740
31448
  }
31741
31449
  /**
@@ -31870,7 +31578,7 @@ var PullRequestService = class extends BaseService {
31870
31578
  }
31871
31579
  throw new Error(response.message);
31872
31580
  } catch (error) {
31873
- throw new Error(`Failed to create pull request: ${error.message}`, { cause: error });
31581
+ throw new Error(`Failed to create pull request: ${error.message}`);
31874
31582
  }
31875
31583
  }
31876
31584
  /**
@@ -31906,7 +31614,7 @@ var PullRequestService = class extends BaseService {
31906
31614
  }
31907
31615
  throw new Error(response.message);
31908
31616
  } catch (error) {
31909
- throw new Error(`Failed to list pull requests: ${error.message}`, { cause: error });
31617
+ throw new Error(`Failed to list pull requests: ${error.message}`);
31910
31618
  }
31911
31619
  }
31912
31620
  /**
@@ -31933,7 +31641,7 @@ var PullRequestService = class extends BaseService {
31933
31641
  }
31934
31642
  throw new Error(response.message);
31935
31643
  } catch (error) {
31936
- throw new Error(`Failed to get pull request: ${error.message}`, { cause: error });
31644
+ throw new Error(`Failed to get pull request: ${error.message}`);
31937
31645
  }
31938
31646
  }
31939
31647
  /**
@@ -31967,7 +31675,7 @@ var PullRequestService = class extends BaseService {
31967
31675
  }
31968
31676
  throw new Error(response.message);
31969
31677
  } catch (error) {
31970
- throw new Error(`Failed to review pull request: ${error.message}`, { cause: error });
31678
+ throw new Error(`Failed to review pull request: ${error.message}`);
31971
31679
  }
31972
31680
  }
31973
31681
  /**
@@ -31998,7 +31706,7 @@ var PullRequestService = class extends BaseService {
31998
31706
  }
31999
31707
  throw new Error(response.message);
32000
31708
  } catch (error) {
32001
- throw new Error(`Failed to add pull request comment: ${error.message}`, { cause: error });
31709
+ throw new Error(`Failed to add pull request comment: ${error.message}`);
32002
31710
  }
32003
31711
  }
32004
31712
  /**
@@ -32028,7 +31736,7 @@ var PullRequestService = class extends BaseService {
32028
31736
  if (error.message.includes("conflicts") || error.message.includes("409")) {
32029
31737
  throw new Error(`Pull request has merge conflicts: ${error.message}`);
32030
31738
  }
32031
- throw new Error(`Failed to merge pull request: ${error.message}`, { cause: error });
31739
+ throw new Error(`Failed to merge pull request: ${error.message}`);
32032
31740
  }
32033
31741
  }
32034
31742
  /**
@@ -32055,7 +31763,7 @@ var PullRequestService = class extends BaseService {
32055
31763
  }
32056
31764
  throw new Error(response.message);
32057
31765
  } catch (error) {
32058
- throw new Error(`Failed to get pull request diff: ${error.message}`, { cause: error });
31766
+ throw new Error(`Failed to get pull request diff: ${error.message}`);
32059
31767
  }
32060
31768
  }
32061
31769
  // ==================== PULL REQUEST HELPER METHODS ====================
@@ -32375,7 +32083,7 @@ var AdminService = class extends BaseService {
32375
32083
  }
32376
32084
  throw new Error(response.message);
32377
32085
  } catch (error) {
32378
- throw new Error(`Failed to get admin users: ${error.message}`, { cause: error });
32086
+ throw new Error(`Failed to get admin users: ${error.message}`);
32379
32087
  }
32380
32088
  }
32381
32089
  /**
@@ -32406,7 +32114,7 @@ var AdminService = class extends BaseService {
32406
32114
  }
32407
32115
  throw new Error(response.message);
32408
32116
  } catch (error) {
32409
- throw new Error(`Failed to assign projects to user: ${error.message}`, { cause: error });
32117
+ throw new Error(`Failed to assign projects to user: ${error.message}`);
32410
32118
  }
32411
32119
  }
32412
32120
  /**
@@ -32435,7 +32143,7 @@ var AdminService = class extends BaseService {
32435
32143
  if ((_a = error.message) == null ? void 0 : _a.includes("Duplicate")) {
32436
32144
  throw new Error("Username already exists");
32437
32145
  }
32438
- throw new Error(`Failed to update user: ${error.message}`, { cause: error });
32146
+ throw new Error(`Failed to update user: ${error.message}`);
32439
32147
  }
32440
32148
  }
32441
32149
  // ==================== ADMIN HELPER METHODS ====================
@@ -32565,7 +32273,7 @@ var AdminService = class extends BaseService {
32565
32273
  });
32566
32274
  return stats;
32567
32275
  } catch (error) {
32568
- throw new Error(`Failed to get user stats: ${error.message}`, { cause: error });
32276
+ throw new Error(`Failed to get user stats: ${error.message}`);
32569
32277
  }
32570
32278
  }
32571
32279
  /**
@@ -32652,287 +32360,6 @@ var AdminService = class extends BaseService {
32652
32360
  }
32653
32361
  };
32654
32362
 
32655
- // src/services/ScreenshotService.js
32656
- var ScreenshotService = class extends BaseService {
32657
- constructor(config) {
32658
- super(config);
32659
- this._debounceTimers = /* @__PURE__ */ new Map();
32660
- this._inflightRefreshes = /* @__PURE__ */ new Map();
32661
- }
32662
- // ==================== PROJECT-LEVEL OPERATIONS ====================
32663
- async createScreenshotProject(payload) {
32664
- this._requireReady("createScreenshotProject");
32665
- try {
32666
- const response = await this._request("/screenshots/projects", {
32667
- method: "POST",
32668
- body: JSON.stringify(payload),
32669
- methodName: "createScreenshotProject"
32670
- });
32671
- if (response.success) {
32672
- return response;
32673
- }
32674
- throw new Error(response.message);
32675
- } catch (error) {
32676
- throw new Error(`Failed to create screenshot project: ${error.message}`, { cause: error });
32677
- }
32678
- }
32679
- async getProjectScreenshots(projectKey, params2 = {}) {
32680
- this._requireReady("getProjectScreenshots");
32681
- if (!projectKey) {
32682
- throw new Error("projectKey is required");
32683
- }
32684
- const { type = "all", status, limit = 50, offset: offset2 = 0 } = params2;
32685
- const qs = new URLSearchParams();
32686
- if (type) {
32687
- qs.set("type", type);
32688
- }
32689
- if (status) {
32690
- qs.set("status", status);
32691
- }
32692
- if (limit != null) {
32693
- qs.set("limit", String(limit));
32694
- }
32695
- if (offset2 != null) {
32696
- qs.set("offset", String(offset2));
32697
- }
32698
- try {
32699
- const response = await this._request(
32700
- `/screenshots/projects/${encodeURIComponent(projectKey)}${qs.toString() ? `?${qs.toString()}` : ""}`,
32701
- { method: "GET", methodName: "getProjectScreenshots" }
32702
- );
32703
- if (response.success) {
32704
- return response;
32705
- }
32706
- throw new Error(response.message);
32707
- } catch (error) {
32708
- throw new Error(`Failed to get project screenshots: ${error.message}`, { cause: error });
32709
- }
32710
- }
32711
- async reprocessProjectScreenshots(projectKey, body = {}) {
32712
- this._requireReady("reprocessProjectScreenshots");
32713
- if (!projectKey) {
32714
- throw new Error("projectKey is required");
32715
- }
32716
- try {
32717
- const response = await this._request(
32718
- `/screenshots/projects/${encodeURIComponent(projectKey)}/reprocess`,
32719
- { method: "POST", body: JSON.stringify(body), methodName: "reprocessProjectScreenshots" }
32720
- );
32721
- if (response.success) {
32722
- return response;
32723
- }
32724
- throw new Error(response.message);
32725
- } catch (error) {
32726
- throw new Error(`Failed to reprocess screenshots: ${error.message}`, { cause: error });
32727
- }
32728
- }
32729
- async recreateProjectScreenshots(projectKey, body = {}) {
32730
- this._requireReady("recreateProjectScreenshots");
32731
- if (!projectKey) {
32732
- throw new Error("projectKey is required");
32733
- }
32734
- try {
32735
- const response = await this._request(
32736
- `/screenshots/projects/${encodeURIComponent(projectKey)}/recreate`,
32737
- { method: "POST", body: JSON.stringify(body), methodName: "recreateProjectScreenshots" }
32738
- );
32739
- if (response.success) {
32740
- return response;
32741
- }
32742
- throw new Error(response.message);
32743
- } catch (error) {
32744
- throw new Error(`Failed to recreate screenshots: ${error.message}`, { cause: error });
32745
- }
32746
- }
32747
- async deleteProjectScreenshots(projectKey) {
32748
- this._requireReady("deleteProjectScreenshots");
32749
- if (!projectKey) {
32750
- throw new Error("projectKey is required");
32751
- }
32752
- try {
32753
- const response = await this._request(
32754
- `/screenshots/projects/${encodeURIComponent(projectKey)}`,
32755
- { method: "DELETE", methodName: "deleteProjectScreenshots" }
32756
- );
32757
- if (response.success) {
32758
- return response;
32759
- }
32760
- throw new Error(response.message);
32761
- } catch (error) {
32762
- throw new Error(`Failed to delete project screenshots: ${error.message}`, { cause: error });
32763
- }
32764
- }
32765
- // ==================== THUMBNAIL ====================
32766
- async getThumbnailCandidate(projectKey, options = {}) {
32767
- this._requireReady("getThumbnailCandidate");
32768
- if (!projectKey) {
32769
- throw new Error("projectKey is required");
32770
- }
32771
- const { includeData = false } = options;
32772
- const qs = new URLSearchParams();
32773
- if (includeData) {
32774
- qs.set("include_data", "true");
32775
- }
32776
- try {
32777
- const response = await this._request(
32778
- `/screenshots/projects/${encodeURIComponent(projectKey)}/thumbnail/candidate${qs.toString() ? `?${qs.toString()}` : ""}`,
32779
- { method: "GET", methodName: "getThumbnailCandidate" }
32780
- );
32781
- if (response.success) {
32782
- return response;
32783
- }
32784
- throw new Error(response.message);
32785
- } catch (error) {
32786
- throw new Error(`Failed to get thumbnail candidate: ${error.message}`, { cause: error });
32787
- }
32788
- }
32789
- async updateProjectThumbnail(projectKey, body = {}) {
32790
- this._requireReady("updateProjectThumbnail");
32791
- if (!projectKey) {
32792
- throw new Error("projectKey is required");
32793
- }
32794
- try {
32795
- const response = await this._request(
32796
- `/screenshots/projects/${encodeURIComponent(projectKey)}/thumbnail`,
32797
- { method: "POST", body: JSON.stringify(body), methodName: "updateProjectThumbnail" }
32798
- );
32799
- if (response.success) {
32800
- return response;
32801
- }
32802
- throw new Error(response.message);
32803
- } catch (error) {
32804
- throw new Error(`Failed to update project thumbnail: ${error.message}`, { cause: error });
32805
- }
32806
- }
32807
- // ==================== INDIVIDUAL SHOTS ====================
32808
- async getPageScreenshot(screenshotId, format = "json") {
32809
- this._requireReady("getPageScreenshot");
32810
- if (!screenshotId) {
32811
- throw new Error("screenshotId is required");
32812
- }
32813
- const qs = new URLSearchParams();
32814
- if (format) {
32815
- qs.set("format", format);
32816
- }
32817
- try {
32818
- return await this._request(
32819
- `/screenshots/pages/${encodeURIComponent(screenshotId)}${qs.toString() ? `?${qs.toString()}` : ""}`,
32820
- { method: "GET", methodName: "getPageScreenshot" }
32821
- );
32822
- } catch (error) {
32823
- throw new Error(`Failed to get page screenshot: ${error.message}`, { cause: error });
32824
- }
32825
- }
32826
- async getComponentScreenshot(screenshotId, format = "json") {
32827
- this._requireReady("getComponentScreenshot");
32828
- if (!screenshotId) {
32829
- throw new Error("screenshotId is required");
32830
- }
32831
- const qs = new URLSearchParams();
32832
- if (format) {
32833
- qs.set("format", format);
32834
- }
32835
- try {
32836
- return await this._request(
32837
- `/screenshots/components/${encodeURIComponent(screenshotId)}${qs.toString() ? `?${qs.toString()}` : ""}`,
32838
- { method: "GET", methodName: "getComponentScreenshot" }
32839
- );
32840
- } catch (error) {
32841
- throw new Error(`Failed to get component screenshot: ${error.message}`, { cause: error });
32842
- }
32843
- }
32844
- async getScreenshotByKey(projectKey, type, key, format = "json") {
32845
- this._requireReady("getScreenshotByKey");
32846
- if (!projectKey) {
32847
- throw new Error("projectKey is required");
32848
- }
32849
- if (!type || !["component", "page"].includes(String(type))) {
32850
- throw new Error("type must be 'component' or 'page'");
32851
- }
32852
- if (!key) {
32853
- throw new Error("key is required");
32854
- }
32855
- const qs = new URLSearchParams();
32856
- if (format) {
32857
- qs.set("format", format);
32858
- }
32859
- const sub = type === "component" ? "components" : "pages";
32860
- try {
32861
- return await this._request(
32862
- `/screenshots/projects/${encodeURIComponent(projectKey)}/${sub}/${encodeURIComponent(key)}${qs.toString() ? `?${qs.toString()}` : ""}`,
32863
- { method: "GET", methodName: "getScreenshotByKey" }
32864
- );
32865
- } catch (error) {
32866
- throw new Error(`Failed to get screenshot by key: ${error.message}`, { cause: error });
32867
- }
32868
- }
32869
- async getQueueStatistics() {
32870
- this._requireReady("getQueueStatistics");
32871
- try {
32872
- const response = await this._request("/screenshots/queue/stats", {
32873
- method: "GET",
32874
- methodName: "getQueueStatistics"
32875
- });
32876
- if (response.success) {
32877
- return response;
32878
- }
32879
- throw new Error(response.message);
32880
- } catch (error) {
32881
- throw new Error(`Failed to get queue statistics: ${error.message}`, { cause: error });
32882
- }
32883
- }
32884
- // ==================== COMBINATION/DEBOUNCED ====================
32885
- /**
32886
- * Debounced thumbnail refresh that recreates screenshots and then updates thumbnail.
32887
- * Subsequent calls within debounce window reset the timer.
32888
- */
32889
- async refreshThumbnail(projectKey, options = {}) {
32890
- this._requireReady("refreshThumbnail");
32891
- if (!projectKey) {
32892
- throw new Error("projectKey is required");
32893
- }
32894
- const {
32895
- debounceMs = 15e3,
32896
- waitAfterRecreateMs = 2e4,
32897
- recreate = {
32898
- process_pages: true,
32899
- process_components: false,
32900
- process_descriptions: false,
32901
- force: false,
32902
- priority: 5
32903
- },
32904
- thumbnail = {
32905
- strategy: "auto",
32906
- force: true
32907
- }
32908
- } = options;
32909
- const existingTimer = this._debounceTimers.get(projectKey);
32910
- if (existingTimer) {
32911
- clearTimeout(existingTimer);
32912
- }
32913
- const executionPromise = await new Promise((resolve) => {
32914
- const timer = setTimeout(async () => {
32915
- try {
32916
- await this.recreateProjectScreenshots(projectKey, recreate);
32917
- await new Promise((resolveDelay) => {
32918
- setTimeout(resolveDelay, waitAfterRecreateMs);
32919
- });
32920
- const result = await this.updateProjectThumbnail(projectKey, thumbnail);
32921
- resolve(result);
32922
- } catch (e) {
32923
- resolve({ success: false, error: (e == null ? void 0 : e.message) || String(e) });
32924
- } finally {
32925
- this._debounceTimers.delete(projectKey);
32926
- this._inflightRefreshes.delete(projectKey);
32927
- }
32928
- }, debounceMs);
32929
- this._debounceTimers.set(projectKey, timer);
32930
- });
32931
- this._inflightRefreshes.set(projectKey, executionPromise);
32932
- return executionPromise;
32933
- }
32934
- };
32935
-
32936
32363
  // src/services/index.js
32937
32364
  var createService = (ServiceClass, config) => new ServiceClass(config);
32938
32365
  var createAuthService = (config) => createService(AuthService, config);
@@ -32947,7 +32374,6 @@ var createDnsService = (config) => createService(DnsService, config);
32947
32374
  var createBranchService = (config) => createService(BranchService, config);
32948
32375
  var createPullRequestService = (config) => createService(PullRequestService, config);
32949
32376
  var createAdminService = (config) => createService(AdminService, config);
32950
- var createScreenshotService = (config) => createService(ScreenshotService, config);
32951
32377
 
32952
32378
  // src/utils/services.js
32953
32379
  var SERVICE_METHODS = {
@@ -33175,20 +32601,7 @@ var SERVICE_METHODS = {
33175
32601
  promoteToAdmin: "admin",
33176
32602
  demoteFromAdmin: "admin",
33177
32603
  // Utility methods
33178
- getHealthStatus: "core",
33179
- // Screenshot methods
33180
- createScreenshotProject: "screenshot",
33181
- getProjectScreenshots: "screenshot",
33182
- reprocessProjectScreenshots: "screenshot",
33183
- recreateProjectScreenshots: "screenshot",
33184
- deleteProjectScreenshots: "screenshot",
33185
- getThumbnailCandidate: "screenshot",
33186
- updateProjectThumbnail: "screenshot",
33187
- getPageScreenshot: "screenshot",
33188
- getComponentScreenshot: "screenshot",
33189
- getScreenshotByKey: "screenshot",
33190
- getQueueStatistics: "screenshot",
33191
- refreshThumbnail: "screenshot"
32604
+ getHealthStatus: "core"
33192
32605
  };
33193
32606
 
33194
32607
  // src/index.js
@@ -33197,7 +32610,6 @@ var SDK = class {
33197
32610
  this._services = /* @__PURE__ */ new Map();
33198
32611
  this._context = {};
33199
32612
  this._options = this._validateOptions(options);
33200
- this.rootBus = rootBus;
33201
32613
  this._createServiceProxies();
33202
32614
  }
33203
32615
  // Initialize SDK with context
@@ -33291,13 +32703,6 @@ var SDK = class {
33291
32703
  context: this._context,
33292
32704
  options: this._options
33293
32705
  })
33294
- ),
33295
- this._initService(
33296
- "screenshot",
33297
- createScreenshotService({
33298
- context: this._context,
33299
- options: this._options
33300
- })
33301
32706
  )
33302
32707
  ]);
33303
32708
  return this;
@@ -33335,10 +32740,9 @@ var SDK = class {
33335
32740
  }
33336
32741
  // Update context
33337
32742
  updateContext(newContext) {
33338
- const { authToken, ...sanitized } = newContext || {};
33339
32743
  this._context = {
33340
32744
  ...this._context,
33341
- ...sanitized
32745
+ ...newContext
33342
32746
  };
33343
32747
  for (const service of this._services.values()) {
33344
32748
  service.updateContext(this._context);
@@ -33347,7 +32751,9 @@ var SDK = class {
33347
32751
  // Check if SDK is ready
33348
32752
  isReady() {
33349
32753
  const sdkServices = Array.from(this._services.values());
33350
- return sdkServices.length > 0 && sdkServices.every((service) => service.isReady());
32754
+ return sdkServices.length > 0 && sdkServices.every(
32755
+ (service) => service.isReady()
32756
+ );
33351
32757
  }
33352
32758
  // Get SDK status
33353
32759
  getStatus() {