@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.
- package/dist/cjs/config/environment.js +8 -43
- package/dist/cjs/index.js +4 -12
- package/dist/cjs/services/AdminService.js +4 -4
- package/dist/cjs/services/AuthService.js +149 -36
- package/dist/cjs/services/BaseService.js +18 -5
- package/dist/cjs/services/BranchService.js +10 -10
- package/dist/cjs/services/CollabService.js +61 -163
- package/dist/cjs/services/CoreService.js +19 -19
- package/dist/cjs/services/DnsService.js +4 -4
- package/dist/cjs/services/FileService.js +2 -2
- package/dist/cjs/services/PaymentService.js +2 -2
- package/dist/cjs/services/PlanService.js +12 -12
- package/dist/cjs/services/ProjectService.js +34 -39
- package/dist/cjs/services/PullRequestService.js +7 -7
- package/dist/cjs/services/SubscriptionService.js +14 -14
- package/dist/cjs/services/index.js +0 -4
- package/dist/cjs/utils/TokenManager.js +5 -16
- package/dist/cjs/utils/services.js +1 -14
- package/dist/esm/config/environment.js +8 -43
- package/dist/esm/index.js +343 -937
- package/dist/esm/services/AdminService.js +35 -68
- package/dist/esm/services/AuthService.js +168 -100
- package/dist/esm/services/BaseService.js +31 -64
- package/dist/esm/services/BranchService.js +41 -74
- package/dist/esm/services/CollabService.js +93 -482
- package/dist/esm/services/CoreService.js +50 -83
- package/dist/esm/services/DnsService.js +35 -68
- package/dist/esm/services/FileService.js +33 -66
- package/dist/esm/services/PaymentService.js +33 -66
- package/dist/esm/services/PlanService.js +43 -76
- package/dist/esm/services/ProjectService.js +65 -356
- package/dist/esm/services/PullRequestService.js +38 -71
- package/dist/esm/services/SubscriptionService.js +45 -78
- package/dist/esm/services/index.js +338 -914
- package/dist/esm/utils/CollabClient.js +8 -43
- package/dist/esm/utils/TokenManager.js +5 -16
- package/dist/esm/utils/services.js +1 -14
- package/dist/node/config/environment.js +8 -43
- package/dist/node/index.js +5 -14
- package/dist/node/services/AdminService.js +4 -4
- package/dist/node/services/AuthService.js +139 -36
- package/dist/node/services/BaseService.js +18 -5
- package/dist/node/services/BranchService.js +10 -10
- package/dist/node/services/CollabService.js +62 -164
- package/dist/node/services/CoreService.js +19 -19
- package/dist/node/services/DnsService.js +4 -4
- package/dist/node/services/FileService.js +2 -2
- package/dist/node/services/PaymentService.js +2 -2
- package/dist/node/services/PlanService.js +12 -12
- package/dist/node/services/ProjectService.js +34 -39
- package/dist/node/services/PullRequestService.js +7 -7
- package/dist/node/services/SubscriptionService.js +14 -14
- package/dist/node/services/index.js +0 -4
- package/dist/node/utils/TokenManager.js +5 -16
- package/dist/node/utils/services.js +1 -14
- package/package.json +6 -7
- package/src/config/environment.js +9 -48
- package/src/index.js +22 -38
- package/src/services/AdminService.js +4 -4
- package/src/services/AuthService.js +175 -42
- package/src/services/BaseService.js +24 -7
- package/src/services/BranchService.js +10 -10
- package/src/services/CollabService.js +72 -203
- package/src/services/CoreService.js +19 -19
- package/src/services/DnsService.js +4 -4
- package/src/services/FileService.js +2 -2
- package/src/services/PaymentService.js +2 -2
- package/src/services/PlanService.js +12 -12
- package/src/services/ProjectService.js +34 -41
- package/src/services/PullRequestService.js +7 -7
- package/src/services/SubscriptionService.js +14 -14
- package/src/services/index.js +1 -6
- package/src/utils/TokenManager.js +5 -19
- package/src/utils/services.js +1 -15
- package/dist/cjs/services/ScreenshotService.js +0 -304
- package/dist/cjs/utils/ordering.js +0 -276
- package/dist/esm/services/ScreenshotService.js +0 -992
- package/dist/esm/utils/ordering.js +0 -258
- package/dist/node/services/ScreenshotService.js +0 -285
- package/dist/node/utils/ordering.js +0 -257
- package/src/services/ScreenshotService.js +0 -258
- 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: "
|
|
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.
|
|
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"
|
|
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
|
|
14310
|
-
|
|
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
|
|
14278
|
+
return hasSessionStorage ? window.sessionStorage : this._memoryStorage;
|
|
14325
14279
|
case "memory":
|
|
14326
14280
|
return this._memoryStorage;
|
|
14327
14281
|
default:
|
|
14328
|
-
return
|
|
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
|
-
|
|
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"
|
|
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}
|
|
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
|
-
|
|
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}
|
|
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}
|
|
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
|
-
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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
|
-
|
|
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
|
-
|
|
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}
|
|
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"
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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 {
|
|
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 "
|
|
28593
|
-
return
|
|
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
|
-
|
|
28629
|
-
|
|
28630
|
-
|
|
28631
|
-
|
|
28632
|
-
|
|
28633
|
-
|
|
28634
|
-
|
|
28635
|
-
|
|
28636
|
-
|
|
28637
|
-
|
|
28638
|
-
|
|
28639
|
-
|
|
28640
|
-
|
|
28641
|
-
|
|
28642
|
-
|
|
28643
|
-
console.log(
|
|
28644
|
-
this.
|
|
28645
|
-
|
|
28646
|
-
|
|
28647
|
-
|
|
28648
|
-
|
|
28649
|
-
}
|
|
28650
|
-
|
|
28651
|
-
|
|
28652
|
-
|
|
28653
|
-
|
|
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.
|
|
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
|
|
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
|
-
|
|
28535
|
+
tuples.push(...options.append);
|
|
28791
28536
|
}
|
|
28792
28537
|
this._stateManager.applyChanges(tuples, { ...options });
|
|
28793
|
-
|
|
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({
|
|
28541
|
+
this._pendingOps.push({ tuples, options });
|
|
28815
28542
|
return;
|
|
28816
28543
|
}
|
|
28817
|
-
if ((
|
|
28818
|
-
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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}
|
|
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
|
-
...
|
|
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(
|
|
32754
|
+
return sdkServices.length > 0 && sdkServices.every(
|
|
32755
|
+
(service) => service.isReady()
|
|
32756
|
+
);
|
|
33351
32757
|
}
|
|
33352
32758
|
// Get SDK status
|
|
33353
32759
|
getStatus() {
|