@symbo.ls/sdk 2.32.0 → 2.32.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/config/environment.js +8 -43
- package/dist/cjs/index.js +4 -12
- package/dist/cjs/services/AdminService.js +4 -4
- package/dist/cjs/services/AuthService.js +149 -36
- package/dist/cjs/services/BaseService.js +18 -5
- package/dist/cjs/services/BranchService.js +10 -10
- package/dist/cjs/services/CollabService.js +18 -114
- package/dist/cjs/services/CoreService.js +19 -19
- package/dist/cjs/services/DnsService.js +4 -4
- package/dist/cjs/services/FileService.js +2 -2
- package/dist/cjs/services/PaymentService.js +2 -2
- package/dist/cjs/services/PlanService.js +12 -12
- package/dist/cjs/services/ProjectService.js +34 -39
- package/dist/cjs/services/PullRequestService.js +7 -7
- package/dist/cjs/services/SubscriptionService.js +14 -14
- package/dist/cjs/services/index.js +0 -4
- package/dist/cjs/utils/TokenManager.js +5 -16
- package/dist/cjs/utils/services.js +1 -14
- package/dist/esm/config/environment.js +8 -43
- package/dist/esm/index.js +300 -907
- package/dist/esm/services/AdminService.js +35 -68
- package/dist/esm/services/AuthService.js +168 -100
- package/dist/esm/services/BaseService.js +31 -64
- package/dist/esm/services/BranchService.js +41 -74
- package/dist/esm/services/CollabService.js +50 -452
- package/dist/esm/services/CoreService.js +50 -83
- package/dist/esm/services/DnsService.js +35 -68
- package/dist/esm/services/FileService.js +33 -66
- package/dist/esm/services/PaymentService.js +33 -66
- package/dist/esm/services/PlanService.js +43 -76
- package/dist/esm/services/ProjectService.js +65 -375
- package/dist/esm/services/PullRequestService.js +38 -71
- package/dist/esm/services/SubscriptionService.js +45 -78
- package/dist/esm/services/index.js +295 -884
- package/dist/esm/utils/CollabClient.js +8 -43
- package/dist/esm/utils/TokenManager.js +5 -16
- package/dist/esm/utils/services.js +1 -14
- package/dist/node/config/environment.js +8 -43
- package/dist/node/index.js +5 -14
- package/dist/node/services/AdminService.js +4 -4
- package/dist/node/services/AuthService.js +139 -36
- package/dist/node/services/BaseService.js +18 -5
- package/dist/node/services/BranchService.js +10 -10
- package/dist/node/services/CollabService.js +19 -115
- package/dist/node/services/CoreService.js +19 -19
- package/dist/node/services/DnsService.js +4 -4
- package/dist/node/services/FileService.js +2 -2
- package/dist/node/services/PaymentService.js +2 -2
- package/dist/node/services/PlanService.js +12 -12
- package/dist/node/services/ProjectService.js +34 -39
- package/dist/node/services/PullRequestService.js +7 -7
- package/dist/node/services/SubscriptionService.js +14 -14
- package/dist/node/services/index.js +0 -4
- package/dist/node/utils/TokenManager.js +5 -16
- package/dist/node/utils/services.js +1 -14
- package/package.json +6 -7
- package/src/config/environment.js +9 -48
- package/src/index.js +22 -38
- package/src/services/AdminService.js +4 -4
- package/src/services/AuthService.js +175 -42
- package/src/services/BaseService.js +24 -7
- package/src/services/BranchService.js +10 -10
- package/src/services/CollabService.js +19 -142
- package/src/services/CoreService.js +19 -19
- package/src/services/DnsService.js +4 -4
- package/src/services/FileService.js +2 -2
- package/src/services/PaymentService.js +2 -2
- package/src/services/PlanService.js +12 -12
- package/src/services/ProjectService.js +34 -41
- package/src/services/PullRequestService.js +7 -7
- package/src/services/SubscriptionService.js +14 -14
- package/src/services/index.js +1 -6
- package/src/utils/TokenManager.js +5 -19
- package/src/utils/services.js +1 -15
- package/dist/cjs/services/ScreenshotService.js +0 -304
- package/dist/cjs/utils/ordering.js +0 -295
- package/dist/esm/services/ScreenshotService.js +0 -992
- package/dist/esm/utils/ordering.js +0 -277
- package/dist/node/services/ScreenshotService.js +0 -285
- package/dist/node/utils/ordering.js +0 -276
- package/src/services/ScreenshotService.js +0 -258
- package/src/utils/ordering.js +0 -240
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,282 +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 extractTopLevelKeysFromCode(code) {
|
|
28395
|
-
const src = normaliseSchemaCode(code);
|
|
28396
|
-
if (!src) {
|
|
28397
|
-
return [];
|
|
28398
|
-
}
|
|
28399
|
-
const idx = src.indexOf("export default");
|
|
28400
|
-
if (idx === -1) {
|
|
28401
|
-
return [];
|
|
28402
|
-
}
|
|
28403
|
-
let i = src.indexOf("{", idx);
|
|
28404
|
-
if (i === -1) {
|
|
28405
|
-
return [];
|
|
28406
|
-
}
|
|
28407
|
-
const keys2 = [];
|
|
28408
|
-
let depth = 0;
|
|
28409
|
-
let inStr = false;
|
|
28410
|
-
let strCh = "";
|
|
28411
|
-
let inEsc = false;
|
|
28412
|
-
for (; i < src.length; i++) {
|
|
28413
|
-
const ch = src[i];
|
|
28414
|
-
if (inStr) {
|
|
28415
|
-
if (inEsc) {
|
|
28416
|
-
inEsc = false;
|
|
28417
|
-
} else if (ch === "\\") {
|
|
28418
|
-
inEsc = true;
|
|
28419
|
-
} else if (ch === strCh) {
|
|
28420
|
-
inStr = false;
|
|
28421
|
-
strCh = "";
|
|
28422
|
-
}
|
|
28423
|
-
continue;
|
|
28424
|
-
}
|
|
28425
|
-
if (ch === '"' || ch === "'" || ch === "`") {
|
|
28426
|
-
inStr = true;
|
|
28427
|
-
strCh = ch;
|
|
28428
|
-
continue;
|
|
28429
|
-
}
|
|
28430
|
-
if (ch === "{") {
|
|
28431
|
-
depth++;
|
|
28432
|
-
continue;
|
|
28433
|
-
}
|
|
28434
|
-
if (ch === "}") {
|
|
28435
|
-
depth--;
|
|
28436
|
-
if (depth === 0) {
|
|
28437
|
-
break;
|
|
28438
|
-
}
|
|
28439
|
-
continue;
|
|
28440
|
-
}
|
|
28441
|
-
if (depth !== 1) {
|
|
28442
|
-
continue;
|
|
28443
|
-
}
|
|
28444
|
-
if (/[A-Za-z_$]/u.test(ch)) {
|
|
28445
|
-
let j = i;
|
|
28446
|
-
while (j < src.length && /[A-Za-z0-9_$]/u.test(src[j])) {
|
|
28447
|
-
j++;
|
|
28448
|
-
}
|
|
28449
|
-
let k = j;
|
|
28450
|
-
while (k < src.length && /\s/u.test(src[k])) {
|
|
28451
|
-
k++;
|
|
28452
|
-
}
|
|
28453
|
-
if (src[k] === ":") {
|
|
28454
|
-
const key = src.slice(i, j);
|
|
28455
|
-
keys2.push(key);
|
|
28456
|
-
}
|
|
28457
|
-
i = j;
|
|
28458
|
-
continue;
|
|
28459
|
-
}
|
|
28460
|
-
}
|
|
28461
|
-
if (!keys2.length) {
|
|
28462
|
-
const bodyStart = src.indexOf("{", idx);
|
|
28463
|
-
const bodyEnd = src.lastIndexOf("}");
|
|
28464
|
-
if (bodyStart === -1 || bodyEnd === -1 || bodyEnd <= bodyStart) {
|
|
28465
|
-
return Array.from(new Set(keys2));
|
|
28466
|
-
}
|
|
28467
|
-
const body = src.slice(bodyStart + 1, bodyEnd);
|
|
28468
|
-
const re2 = /(?:[A-Za-z_$][A-Za-z0-9_$]*|"[^"]+"|'[^']+')\s*:/gu;
|
|
28469
|
-
for (const m of body.matchAll(re2)) {
|
|
28470
|
-
const raw = m[0].split(":")[0].trim();
|
|
28471
|
-
const key = raw[0] === '"' || raw[0] === "'" ? raw.slice(1, -1) : raw;
|
|
28472
|
-
keys2.push(key);
|
|
28473
|
-
}
|
|
28474
|
-
}
|
|
28475
|
-
return Array.from(new Set(keys2));
|
|
28476
|
-
}
|
|
28477
|
-
function computeOrdersForTuples(root, tuples = []) {
|
|
28478
|
-
const preferredOrderMap = /* @__PURE__ */ new Map();
|
|
28479
|
-
for (let i = 0; i < tuples.length; i++) {
|
|
28480
|
-
const t = tuples[i];
|
|
28481
|
-
if (!Array.isArray(t)) {
|
|
28482
|
-
continue;
|
|
28483
|
-
}
|
|
28484
|
-
const [action, path, value2] = t;
|
|
28485
|
-
const p = normalizePath(path);
|
|
28486
|
-
if (action !== "update" || !Array.isArray(p) || p.length < 3) {
|
|
28487
|
-
continue;
|
|
28488
|
-
}
|
|
28489
|
-
if (p[0] !== "schema") {
|
|
28490
|
-
continue;
|
|
28491
|
-
}
|
|
28492
|
-
const [, type, key] = p;
|
|
28493
|
-
const containerPath = [type, key];
|
|
28494
|
-
const uses = value2 && Array.isArray(value2.uses) ? value2.uses : null;
|
|
28495
|
-
const code = value2 && value2.code;
|
|
28496
|
-
const obj = (() => {
|
|
28497
|
-
try {
|
|
28498
|
-
return root && typeof root.getByPath === "function" ? root.getByPath(containerPath) : null;
|
|
28499
|
-
} catch {
|
|
28500
|
-
return null;
|
|
28501
|
-
}
|
|
28502
|
-
})();
|
|
28503
|
-
if (!obj) {
|
|
28504
|
-
continue;
|
|
28505
|
-
}
|
|
28506
|
-
const present = new Set(Object.keys(obj));
|
|
28507
|
-
const EXCLUDE_KEYS = /* @__PURE__ */ new Set(["__order"]);
|
|
28508
|
-
const codeKeys = extractTopLevelKeysFromCode(code);
|
|
28509
|
-
let resolved = [];
|
|
28510
|
-
if (Array.isArray(codeKeys) && codeKeys.length) {
|
|
28511
|
-
resolved = codeKeys.filter((k) => present.has(k) && !EXCLUDE_KEYS.has(k));
|
|
28512
|
-
}
|
|
28513
|
-
if (resolved.length && Array.isArray(uses) && uses.length) {
|
|
28514
|
-
for (let u = 0; u < uses.length; u++) {
|
|
28515
|
-
const keyName = uses[u];
|
|
28516
|
-
if (present.has(keyName) && !EXCLUDE_KEYS.has(keyName) && !resolved.includes(keyName)) {
|
|
28517
|
-
resolved.push(keyName);
|
|
28518
|
-
}
|
|
28519
|
-
}
|
|
28520
|
-
}
|
|
28521
|
-
if (resolved.length) {
|
|
28522
|
-
preferredOrderMap.set(JSON.stringify(containerPath), { path: containerPath, keys: resolved });
|
|
28523
|
-
}
|
|
28524
|
-
}
|
|
28525
|
-
const parents = getParentPathsFromTuples(tuples);
|
|
28526
|
-
const orders = [];
|
|
28527
|
-
const seen = /* @__PURE__ */ new Set();
|
|
28528
|
-
preferredOrderMap.forEach((v) => {
|
|
28529
|
-
const k = JSON.stringify(v.path);
|
|
28530
|
-
if (!seen.has(k)) {
|
|
28531
|
-
seen.add(k);
|
|
28532
|
-
orders.push(v);
|
|
28533
|
-
}
|
|
28534
|
-
});
|
|
28535
|
-
const fallbackOrders = computeOrdersFromState(root, parents);
|
|
28536
|
-
for (let i = 0; i < fallbackOrders.length; i++) {
|
|
28537
|
-
const v = fallbackOrders[i];
|
|
28538
|
-
const k = JSON.stringify(v.path);
|
|
28539
|
-
if (!seen.has(k)) {
|
|
28540
|
-
seen.add(k);
|
|
28541
|
-
orders.push(v);
|
|
28542
|
-
}
|
|
28543
|
-
}
|
|
28544
|
-
return orders;
|
|
28545
|
-
}
|
|
28546
|
-
|
|
28547
|
-
// src/services/CollabService.js
|
|
28340
|
+
import { deepStringify } from "@domql/utils";
|
|
28548
28341
|
var CollabService = class extends BaseService {
|
|
28549
28342
|
constructor(config) {
|
|
28550
28343
|
super(config);
|
|
@@ -28608,8 +28401,8 @@ var CollabService = class extends BaseService {
|
|
|
28608
28401
|
logger(`[Notification] ${title}${message ? ` \u2013 ${message}` : ""}`);
|
|
28609
28402
|
return;
|
|
28610
28403
|
}
|
|
28611
|
-
case "
|
|
28612
|
-
return
|
|
28404
|
+
case "deepStringify": {
|
|
28405
|
+
return deepStringify(...args2);
|
|
28613
28406
|
}
|
|
28614
28407
|
default:
|
|
28615
28408
|
return {};
|
|
@@ -28659,8 +28452,10 @@ var CollabService = class extends BaseService {
|
|
|
28659
28452
|
(_b2 = this._client.socket) == null ? void 0 : _b2.once("connect", resolve);
|
|
28660
28453
|
}
|
|
28661
28454
|
});
|
|
28455
|
+
console.log("[CollabService] socket connected");
|
|
28662
28456
|
(_b = this._client.socket) == null ? void 0 : _b.on("ops", ({ changes }) => {
|
|
28663
28457
|
console.log(`ops event`);
|
|
28458
|
+
console.log(changes);
|
|
28664
28459
|
this._stateManager.applyChanges(changes, { fromSocket: true });
|
|
28665
28460
|
});
|
|
28666
28461
|
(_c = this._client.socket) == null ? void 0 : _c.on("commit", ({ version: version2 }) => {
|
|
@@ -28682,13 +28477,15 @@ var CollabService = class extends BaseService {
|
|
|
28682
28477
|
console.log(
|
|
28683
28478
|
`[CollabService] Flushing ${this._pendingOps.length} offline operation batch(es)`
|
|
28684
28479
|
);
|
|
28685
|
-
this._pendingOps.forEach(({
|
|
28686
|
-
this.socket.emit("ops", { changes
|
|
28480
|
+
this._pendingOps.forEach(({ tuples }) => {
|
|
28481
|
+
this.socket.emit("ops", { changes: tuples, ts: Date.now() });
|
|
28687
28482
|
});
|
|
28688
28483
|
this._pendingOps.length = 0;
|
|
28689
28484
|
}
|
|
28690
28485
|
this._connected = true;
|
|
28486
|
+
console.log("[CollabService] Connected to project:", projectId);
|
|
28691
28487
|
} catch (err) {
|
|
28488
|
+
console.error("[CollabService] Connection failed:", err);
|
|
28692
28489
|
throw err;
|
|
28693
28490
|
}
|
|
28694
28491
|
}
|
|
@@ -28728,118 +28525,24 @@ var CollabService = class extends BaseService {
|
|
|
28728
28525
|
}
|
|
28729
28526
|
/* ---------- data helpers ---------- */
|
|
28730
28527
|
updateData(tuples, options = {}) {
|
|
28731
|
-
var _a
|
|
28528
|
+
var _a;
|
|
28732
28529
|
this._ensureStateManager();
|
|
28733
28530
|
const { isUndo = false, isRedo = false } = options;
|
|
28734
28531
|
if (!isUndo && !isRedo && !this._isUndoRedo) {
|
|
28735
28532
|
this._trackForUndo(tuples, options);
|
|
28736
28533
|
}
|
|
28737
|
-
const processedTuples = (() => {
|
|
28738
|
-
var _a2;
|
|
28739
|
-
try {
|
|
28740
|
-
const root = (_a2 = this._stateManager) == null ? void 0 : _a2.root;
|
|
28741
|
-
const isPlainObject2 = (o) => o && typeof o === "object" && !Array.isArray(o);
|
|
28742
|
-
const getByPath = (state2, path) => {
|
|
28743
|
-
if (!state2 || typeof state2.getByPath !== "function") {
|
|
28744
|
-
return null;
|
|
28745
|
-
}
|
|
28746
|
-
try {
|
|
28747
|
-
return state2.getByPath(path);
|
|
28748
|
-
} catch {
|
|
28749
|
-
return null;
|
|
28750
|
-
}
|
|
28751
|
-
};
|
|
28752
|
-
const expandTuple = (t) => {
|
|
28753
|
-
const [action, path, value2] = t || [];
|
|
28754
|
-
const isSchemaPath = Array.isArray(path) && path[0] === "schema";
|
|
28755
|
-
if (action === "delete" || isSchemaPath) {
|
|
28756
|
-
return [t];
|
|
28757
|
-
}
|
|
28758
|
-
const canConsiderExpansion = action === "update" && Array.isArray(path) && (path.length === 1 || path.length === 2) && isPlainObject2(value2);
|
|
28759
|
-
if (!canConsiderExpansion) {
|
|
28760
|
-
return [t];
|
|
28761
|
-
}
|
|
28762
|
-
const prev = getByPath(root, path) || {};
|
|
28763
|
-
const next = value2 || {};
|
|
28764
|
-
if (!isPlainObject2(prev) || !isPlainObject2(next)) {
|
|
28765
|
-
return [t];
|
|
28766
|
-
}
|
|
28767
|
-
const ops = diffJson(prev, next, []);
|
|
28768
|
-
if (!ops.length) {
|
|
28769
|
-
return [];
|
|
28770
|
-
}
|
|
28771
|
-
const arr = [];
|
|
28772
|
-
for (let j = 0; j < ops.length; j++) {
|
|
28773
|
-
const op = ops[j];
|
|
28774
|
-
const fullPath = [...path, ...op.path];
|
|
28775
|
-
const last2 = fullPath[fullPath.length - 1];
|
|
28776
|
-
if (op.action === "set") {
|
|
28777
|
-
arr.push(["update", fullPath, op.value]);
|
|
28778
|
-
} else if (op.action === "del") {
|
|
28779
|
-
if (last2 !== "__order") {
|
|
28780
|
-
arr.push(["delete", fullPath]);
|
|
28781
|
-
}
|
|
28782
|
-
}
|
|
28783
|
-
}
|
|
28784
|
-
return arr;
|
|
28785
|
-
};
|
|
28786
|
-
const minimizeTuples = (inputTuples) => {
|
|
28787
|
-
const out = [];
|
|
28788
|
-
for (let i = 0; i < inputTuples.length; i++) {
|
|
28789
|
-
const expanded = expandTuple(inputTuples[i]);
|
|
28790
|
-
for (let k = 0; k < expanded.length; k++) {
|
|
28791
|
-
const tuple = expanded[k];
|
|
28792
|
-
const isDelete = Array.isArray(tuple) && tuple[0] === "delete";
|
|
28793
|
-
const isOrderKey = isDelete && Array.isArray(tuple[1]) && tuple[1][tuple[1].length - 1] === "__order";
|
|
28794
|
-
if (!isOrderKey) {
|
|
28795
|
-
out.push(tuple);
|
|
28796
|
-
}
|
|
28797
|
-
}
|
|
28798
|
-
}
|
|
28799
|
-
console.log(`Minimized tuples`, out);
|
|
28800
|
-
return out;
|
|
28801
|
-
};
|
|
28802
|
-
console.log(`Processing tuples`, tuples);
|
|
28803
|
-
return minimizeTuples(tuples);
|
|
28804
|
-
} catch (err) {
|
|
28805
|
-
console.warn(
|
|
28806
|
-
"[CollabService] Minimal diff expansion failed \u2013 using original tuples",
|
|
28807
|
-
err
|
|
28808
|
-
);
|
|
28809
|
-
return tuples;
|
|
28810
|
-
}
|
|
28811
|
-
})();
|
|
28812
28534
|
if (options.append && options.append.length) {
|
|
28813
|
-
|
|
28535
|
+
tuples.push(...options.append);
|
|
28814
28536
|
}
|
|
28815
28537
|
this._stateManager.applyChanges(tuples, { ...options });
|
|
28816
|
-
|
|
28817
|
-
const el = state == null ? void 0 : state.__element;
|
|
28818
|
-
const orders = computeOrdersForTuples(state, processedTuples);
|
|
28819
|
-
const stringifiedTuples = (el == null ? void 0 : el.call) ? el.call(
|
|
28820
|
-
"deepStringifyFunctions",
|
|
28821
|
-
processedTuples,
|
|
28822
|
-
Array.isArray(processedTuples) ? [] : {}
|
|
28823
|
-
) : deepStringifyFunctions(
|
|
28824
|
-
processedTuples,
|
|
28825
|
-
Array.isArray(processedTuples) ? [] : {}
|
|
28826
|
-
);
|
|
28538
|
+
tuples = deepStringify(tuples, []);
|
|
28827
28539
|
if (!this.isConnected()) {
|
|
28828
28540
|
console.warn("[CollabService] Not connected, queuing real-time update");
|
|
28829
|
-
this._pendingOps.push({
|
|
28541
|
+
this._pendingOps.push({ tuples, options });
|
|
28830
28542
|
return;
|
|
28831
28543
|
}
|
|
28832
|
-
if ((
|
|
28833
|
-
|
|
28834
|
-
changes: stringifiedTuples,
|
|
28835
|
-
orders,
|
|
28836
|
-
ts: Date.now()
|
|
28837
|
-
});
|
|
28838
|
-
this.socket.emit("ops", {
|
|
28839
|
-
changes: stringifiedTuples,
|
|
28840
|
-
orders,
|
|
28841
|
-
ts: Date.now()
|
|
28842
|
-
});
|
|
28544
|
+
if ((_a = this.socket) == null ? void 0 : _a.connected) {
|
|
28545
|
+
this.socket.emit("ops", { changes: tuples, ts: Date.now() });
|
|
28843
28546
|
}
|
|
28844
28547
|
return { success: true };
|
|
28845
28548
|
}
|
|
@@ -28980,7 +28683,7 @@ var CollabService = class extends BaseService {
|
|
|
28980
28683
|
const updatedOpts = { ...opts, skipComponentsChangedEvent: true };
|
|
28981
28684
|
return this.updateData(tuples, updatedOpts);
|
|
28982
28685
|
} catch (error) {
|
|
28983
|
-
throw new Error(`Failed to add item: ${error.message}
|
|
28686
|
+
throw new Error(`Failed to add item: ${error.message}`);
|
|
28984
28687
|
}
|
|
28985
28688
|
}
|
|
28986
28689
|
addMultipleItems(items, opts = {}) {
|
|
@@ -29009,7 +28712,7 @@ var CollabService = class extends BaseService {
|
|
|
29009
28712
|
title: "Failed to add item",
|
|
29010
28713
|
message: error.message
|
|
29011
28714
|
});
|
|
29012
|
-
throw new Error(`Failed to add item: ${error.message}
|
|
28715
|
+
throw new Error(`Failed to add item: ${error.message}`);
|
|
29013
28716
|
}
|
|
29014
28717
|
}
|
|
29015
28718
|
updateItem(type, data2, opts = {}) {
|
|
@@ -29031,9 +28734,7 @@ var CollabService = class extends BaseService {
|
|
|
29031
28734
|
title: "Failed to update item",
|
|
29032
28735
|
message: error.message
|
|
29033
28736
|
});
|
|
29034
|
-
throw new Error(`Failed to update item: ${error.message}
|
|
29035
|
-
cause: error
|
|
29036
|
-
});
|
|
28737
|
+
throw new Error(`Failed to update item: ${error.message}`);
|
|
29037
28738
|
}
|
|
29038
28739
|
}
|
|
29039
28740
|
deleteItem(type, key, opts = {}) {
|
|
@@ -29058,9 +28759,7 @@ var CollabService = class extends BaseService {
|
|
|
29058
28759
|
title: "Failed to delete item",
|
|
29059
28760
|
message: error.message
|
|
29060
28761
|
});
|
|
29061
|
-
throw new Error(`Failed to delete item: ${error.message}
|
|
29062
|
-
cause: error
|
|
29063
|
-
});
|
|
28762
|
+
throw new Error(`Failed to delete item: ${error.message}`);
|
|
29064
28763
|
}
|
|
29065
28764
|
}
|
|
29066
28765
|
/* ---------- socket event helpers ---------- */
|
|
@@ -29168,7 +28867,7 @@ var ProjectService = class extends BaseService {
|
|
|
29168
28867
|
}
|
|
29169
28868
|
throw new Error(response.message);
|
|
29170
28869
|
} catch (error) {
|
|
29171
|
-
throw new Error(`Failed to create project: ${error.message}
|
|
28870
|
+
throw new Error(`Failed to create project: ${error.message}`);
|
|
29172
28871
|
}
|
|
29173
28872
|
}
|
|
29174
28873
|
async getProjects(params2 = {}) {
|
|
@@ -29191,7 +28890,7 @@ var ProjectService = class extends BaseService {
|
|
|
29191
28890
|
}
|
|
29192
28891
|
throw new Error(response.message);
|
|
29193
28892
|
} catch (error) {
|
|
29194
|
-
throw new Error(`Failed to get projects: ${error.message}
|
|
28893
|
+
throw new Error(`Failed to get projects: ${error.message}`);
|
|
29195
28894
|
}
|
|
29196
28895
|
}
|
|
29197
28896
|
/**
|
|
@@ -29222,7 +28921,7 @@ var ProjectService = class extends BaseService {
|
|
|
29222
28921
|
}
|
|
29223
28922
|
throw new Error(response.message);
|
|
29224
28923
|
} catch (error) {
|
|
29225
|
-
throw new Error(`Failed to list public projects: ${error.message}
|
|
28924
|
+
throw new Error(`Failed to list public projects: ${error.message}`);
|
|
29226
28925
|
}
|
|
29227
28926
|
}
|
|
29228
28927
|
async getProject(projectId) {
|
|
@@ -29244,7 +28943,7 @@ var ProjectService = class extends BaseService {
|
|
|
29244
28943
|
}
|
|
29245
28944
|
throw new Error(response.message);
|
|
29246
28945
|
} catch (error) {
|
|
29247
|
-
throw new Error(`Failed to get project: ${error.message}
|
|
28946
|
+
throw new Error(`Failed to get project: ${error.message}`);
|
|
29248
28947
|
}
|
|
29249
28948
|
}
|
|
29250
28949
|
/**
|
|
@@ -29269,7 +28968,7 @@ var ProjectService = class extends BaseService {
|
|
|
29269
28968
|
}
|
|
29270
28969
|
throw new Error(response.message);
|
|
29271
28970
|
} catch (error) {
|
|
29272
|
-
throw new Error(`Failed to get public project: ${error.message}
|
|
28971
|
+
throw new Error(`Failed to get public project: ${error.message}`);
|
|
29273
28972
|
}
|
|
29274
28973
|
}
|
|
29275
28974
|
async getProjectByKey(key) {
|
|
@@ -29291,7 +28990,7 @@ var ProjectService = class extends BaseService {
|
|
|
29291
28990
|
}
|
|
29292
28991
|
throw new Error(response.message);
|
|
29293
28992
|
} catch (error) {
|
|
29294
|
-
throw new Error(`Failed to get project by key: ${error.message}
|
|
28993
|
+
throw new Error(`Failed to get project by key: ${error.message}`);
|
|
29295
28994
|
}
|
|
29296
28995
|
}
|
|
29297
28996
|
/**
|
|
@@ -29325,7 +29024,7 @@ var ProjectService = class extends BaseService {
|
|
|
29325
29024
|
}
|
|
29326
29025
|
throw new Error(response.message);
|
|
29327
29026
|
} catch (error) {
|
|
29328
|
-
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}`);
|
|
29329
29028
|
}
|
|
29330
29029
|
}
|
|
29331
29030
|
async updateProject(projectId, data2) {
|
|
@@ -29344,7 +29043,7 @@ var ProjectService = class extends BaseService {
|
|
|
29344
29043
|
}
|
|
29345
29044
|
throw new Error(response.message);
|
|
29346
29045
|
} catch (error) {
|
|
29347
|
-
throw new Error(`Failed to update project: ${error.message}
|
|
29046
|
+
throw new Error(`Failed to update project: ${error.message}`);
|
|
29348
29047
|
}
|
|
29349
29048
|
}
|
|
29350
29049
|
async updateProjectComponents(projectId, components) {
|
|
@@ -29366,7 +29065,7 @@ var ProjectService = class extends BaseService {
|
|
|
29366
29065
|
}
|
|
29367
29066
|
throw new Error(response.message);
|
|
29368
29067
|
} catch (error) {
|
|
29369
|
-
throw new Error(`Failed to update project components: ${error.message}
|
|
29068
|
+
throw new Error(`Failed to update project components: ${error.message}`);
|
|
29370
29069
|
}
|
|
29371
29070
|
}
|
|
29372
29071
|
async updateProjectSettings(projectId, settings) {
|
|
@@ -29385,7 +29084,7 @@ var ProjectService = class extends BaseService {
|
|
|
29385
29084
|
}
|
|
29386
29085
|
throw new Error(response.message);
|
|
29387
29086
|
} catch (error) {
|
|
29388
|
-
throw new Error(`Failed to update project settings: ${error.message}
|
|
29087
|
+
throw new Error(`Failed to update project settings: ${error.message}`);
|
|
29389
29088
|
}
|
|
29390
29089
|
}
|
|
29391
29090
|
async updateProjectName(projectId, name) {
|
|
@@ -29404,7 +29103,7 @@ var ProjectService = class extends BaseService {
|
|
|
29404
29103
|
}
|
|
29405
29104
|
throw new Error(response.message);
|
|
29406
29105
|
} catch (error) {
|
|
29407
|
-
throw new Error(`Failed to update project name: ${error.message}
|
|
29106
|
+
throw new Error(`Failed to update project name: ${error.message}`);
|
|
29408
29107
|
}
|
|
29409
29108
|
}
|
|
29410
29109
|
async updateProjectPackage(projectId, pkg) {
|
|
@@ -29423,7 +29122,7 @@ var ProjectService = class extends BaseService {
|
|
|
29423
29122
|
}
|
|
29424
29123
|
throw new Error(response.message);
|
|
29425
29124
|
} catch (error) {
|
|
29426
|
-
throw new Error(`Failed to update project package: ${error.message}
|
|
29125
|
+
throw new Error(`Failed to update project package: ${error.message}`);
|
|
29427
29126
|
}
|
|
29428
29127
|
}
|
|
29429
29128
|
async duplicateProject(projectId, newName, newKey, targetUserId) {
|
|
@@ -29442,7 +29141,7 @@ var ProjectService = class extends BaseService {
|
|
|
29442
29141
|
}
|
|
29443
29142
|
throw new Error(response.message);
|
|
29444
29143
|
} catch (error) {
|
|
29445
|
-
throw new Error(`Failed to duplicate project: ${error.message}
|
|
29144
|
+
throw new Error(`Failed to duplicate project: ${error.message}`);
|
|
29446
29145
|
}
|
|
29447
29146
|
}
|
|
29448
29147
|
async removeProject(projectId) {
|
|
@@ -29460,7 +29159,7 @@ var ProjectService = class extends BaseService {
|
|
|
29460
29159
|
}
|
|
29461
29160
|
throw new Error(response.message);
|
|
29462
29161
|
} catch (error) {
|
|
29463
|
-
throw new Error(`Failed to remove project: ${error.message}
|
|
29162
|
+
throw new Error(`Failed to remove project: ${error.message}`);
|
|
29464
29163
|
}
|
|
29465
29164
|
}
|
|
29466
29165
|
async checkProjectKeyAvailability(key) {
|
|
@@ -29479,8 +29178,7 @@ var ProjectService = class extends BaseService {
|
|
|
29479
29178
|
throw new Error(response.message);
|
|
29480
29179
|
} catch (error) {
|
|
29481
29180
|
throw new Error(
|
|
29482
|
-
`Failed to check project key availability: ${error.message}
|
|
29483
|
-
{ cause: error }
|
|
29181
|
+
`Failed to check project key availability: ${error.message}`
|
|
29484
29182
|
);
|
|
29485
29183
|
}
|
|
29486
29184
|
}
|
|
@@ -29500,7 +29198,7 @@ var ProjectService = class extends BaseService {
|
|
|
29500
29198
|
}
|
|
29501
29199
|
throw new Error(response.message);
|
|
29502
29200
|
} catch (error) {
|
|
29503
|
-
throw new Error(`Failed to get project members: ${error.message}
|
|
29201
|
+
throw new Error(`Failed to get project members: ${error.message}`);
|
|
29504
29202
|
}
|
|
29505
29203
|
}
|
|
29506
29204
|
async inviteMember(projectId, email, role = "guest", options = {}) {
|
|
@@ -29529,7 +29227,7 @@ var ProjectService = class extends BaseService {
|
|
|
29529
29227
|
}
|
|
29530
29228
|
throw new Error(response.message);
|
|
29531
29229
|
} catch (error) {
|
|
29532
|
-
throw new Error(`Failed to invite member: ${error.message}
|
|
29230
|
+
throw new Error(`Failed to invite member: ${error.message}`);
|
|
29533
29231
|
}
|
|
29534
29232
|
}
|
|
29535
29233
|
async acceptInvite(token) {
|
|
@@ -29548,7 +29246,7 @@ var ProjectService = class extends BaseService {
|
|
|
29548
29246
|
}
|
|
29549
29247
|
throw new Error(response.message);
|
|
29550
29248
|
} catch (error) {
|
|
29551
|
-
throw new Error(`Failed to accept invite: ${error.message}
|
|
29249
|
+
throw new Error(`Failed to accept invite: ${error.message}`);
|
|
29552
29250
|
}
|
|
29553
29251
|
}
|
|
29554
29252
|
async updateMemberRole(projectId, memberId, role) {
|
|
@@ -29570,7 +29268,7 @@ var ProjectService = class extends BaseService {
|
|
|
29570
29268
|
}
|
|
29571
29269
|
throw new Error(response.message);
|
|
29572
29270
|
} catch (error) {
|
|
29573
|
-
throw new Error(`Failed to update member role: ${error.message}
|
|
29271
|
+
throw new Error(`Failed to update member role: ${error.message}`);
|
|
29574
29272
|
}
|
|
29575
29273
|
}
|
|
29576
29274
|
async removeMember(projectId, memberId) {
|
|
@@ -29591,7 +29289,7 @@ var ProjectService = class extends BaseService {
|
|
|
29591
29289
|
}
|
|
29592
29290
|
throw new Error(response.message);
|
|
29593
29291
|
} catch (error) {
|
|
29594
|
-
throw new Error(`Failed to remove member: ${error.message}
|
|
29292
|
+
throw new Error(`Failed to remove member: ${error.message}`);
|
|
29595
29293
|
}
|
|
29596
29294
|
}
|
|
29597
29295
|
// ==================== PROJECT LIBRARY METHODS ====================
|
|
@@ -29611,7 +29309,7 @@ var ProjectService = class extends BaseService {
|
|
|
29611
29309
|
}
|
|
29612
29310
|
throw new Error(response.message);
|
|
29613
29311
|
} catch (error) {
|
|
29614
|
-
throw new Error(`Failed to get available libraries: ${error.message}
|
|
29312
|
+
throw new Error(`Failed to get available libraries: ${error.message}`);
|
|
29615
29313
|
}
|
|
29616
29314
|
}
|
|
29617
29315
|
async getProjectLibraries(projectId) {
|
|
@@ -29629,7 +29327,7 @@ var ProjectService = class extends BaseService {
|
|
|
29629
29327
|
}
|
|
29630
29328
|
throw new Error(response.message);
|
|
29631
29329
|
} catch (error) {
|
|
29632
|
-
throw new Error(`Failed to get project libraries: ${error.message}
|
|
29330
|
+
throw new Error(`Failed to get project libraries: ${error.message}`);
|
|
29633
29331
|
}
|
|
29634
29332
|
}
|
|
29635
29333
|
async addProjectLibraries(projectId, libraryIds) {
|
|
@@ -29644,11 +29342,11 @@ var ProjectService = class extends BaseService {
|
|
|
29644
29342
|
methodName: "addProjectLibraries"
|
|
29645
29343
|
});
|
|
29646
29344
|
if (response.success) {
|
|
29647
|
-
return response;
|
|
29345
|
+
return response.data;
|
|
29648
29346
|
}
|
|
29649
29347
|
throw new Error(response.message);
|
|
29650
29348
|
} catch (error) {
|
|
29651
|
-
throw new Error(`Failed to add project libraries: ${error.message}
|
|
29349
|
+
throw new Error(`Failed to add project libraries: ${error.message}`);
|
|
29652
29350
|
}
|
|
29653
29351
|
}
|
|
29654
29352
|
async removeProjectLibraries(projectId, libraryIds) {
|
|
@@ -29667,7 +29365,7 @@ var ProjectService = class extends BaseService {
|
|
|
29667
29365
|
}
|
|
29668
29366
|
throw new Error(response.message);
|
|
29669
29367
|
} catch (error) {
|
|
29670
|
-
throw new Error(`Failed to remove project libraries: ${error.message}
|
|
29368
|
+
throw new Error(`Failed to remove project libraries: ${error.message}`);
|
|
29671
29369
|
}
|
|
29672
29370
|
}
|
|
29673
29371
|
// ==================== PROJECT DATA METHODS (SYMSTORY REPLACEMENT) ====================
|
|
@@ -29684,8 +29382,6 @@ var ProjectService = class extends BaseService {
|
|
|
29684
29382
|
throw new Error("Changes must be an array");
|
|
29685
29383
|
}
|
|
29686
29384
|
const { message, branch = "main", type = "patch" } = options;
|
|
29687
|
-
const state = this._context && this._context.state;
|
|
29688
|
-
const derivedOrders = options.orders || (state ? computeOrdersForTuples(state, changes) : []);
|
|
29689
29385
|
try {
|
|
29690
29386
|
const response = await this._request(`/projects/${projectId}/changes`, {
|
|
29691
29387
|
method: "POST",
|
|
@@ -29693,8 +29389,7 @@ var ProjectService = class extends BaseService {
|
|
|
29693
29389
|
changes,
|
|
29694
29390
|
message,
|
|
29695
29391
|
branch,
|
|
29696
|
-
type
|
|
29697
|
-
...derivedOrders && derivedOrders.length ? { orders: derivedOrders } : {}
|
|
29392
|
+
type
|
|
29698
29393
|
}),
|
|
29699
29394
|
methodName: "applyProjectChanges"
|
|
29700
29395
|
});
|
|
@@ -29703,7 +29398,7 @@ var ProjectService = class extends BaseService {
|
|
|
29703
29398
|
}
|
|
29704
29399
|
throw new Error(response.message);
|
|
29705
29400
|
} catch (error) {
|
|
29706
|
-
throw new Error(`Failed to apply project changes: ${error.message}
|
|
29401
|
+
throw new Error(`Failed to apply project changes: ${error.message}`);
|
|
29707
29402
|
}
|
|
29708
29403
|
}
|
|
29709
29404
|
/**
|
|
@@ -29738,7 +29433,7 @@ var ProjectService = class extends BaseService {
|
|
|
29738
29433
|
}
|
|
29739
29434
|
throw new Error(response.message);
|
|
29740
29435
|
} catch (error) {
|
|
29741
|
-
throw new Error(`Failed to get project data: ${error.message}
|
|
29436
|
+
throw new Error(`Failed to get project data: ${error.message}`);
|
|
29742
29437
|
}
|
|
29743
29438
|
}
|
|
29744
29439
|
/**
|
|
@@ -29768,7 +29463,7 @@ var ProjectService = class extends BaseService {
|
|
|
29768
29463
|
}
|
|
29769
29464
|
throw new Error(response.message);
|
|
29770
29465
|
} catch (error) {
|
|
29771
|
-
throw new Error(`Failed to get project versions: ${error.message}
|
|
29466
|
+
throw new Error(`Failed to get project versions: ${error.message}`);
|
|
29772
29467
|
}
|
|
29773
29468
|
}
|
|
29774
29469
|
/**
|
|
@@ -29800,7 +29495,7 @@ var ProjectService = class extends BaseService {
|
|
|
29800
29495
|
}
|
|
29801
29496
|
throw new Error(response.message);
|
|
29802
29497
|
} catch (error) {
|
|
29803
|
-
throw new Error(`Failed to restore project version: ${error.message}
|
|
29498
|
+
throw new Error(`Failed to restore project version: ${error.message}`);
|
|
29804
29499
|
}
|
|
29805
29500
|
}
|
|
29806
29501
|
/**
|
|
@@ -29900,7 +29595,7 @@ var ProjectService = class extends BaseService {
|
|
|
29900
29595
|
}
|
|
29901
29596
|
throw new Error(response.message);
|
|
29902
29597
|
} catch (error) {
|
|
29903
|
-
throw new Error(`Failed to get favorite projects: ${error.message}
|
|
29598
|
+
throw new Error(`Failed to get favorite projects: ${error.message}`);
|
|
29904
29599
|
}
|
|
29905
29600
|
}
|
|
29906
29601
|
async addFavoriteProject(projectId) {
|
|
@@ -29918,7 +29613,7 @@ var ProjectService = class extends BaseService {
|
|
|
29918
29613
|
}
|
|
29919
29614
|
throw new Error(response.message);
|
|
29920
29615
|
} catch (error) {
|
|
29921
|
-
throw new Error(`Failed to add favorite project: ${error.message}
|
|
29616
|
+
throw new Error(`Failed to add favorite project: ${error.message}`);
|
|
29922
29617
|
}
|
|
29923
29618
|
}
|
|
29924
29619
|
async removeFavoriteProject(projectId) {
|
|
@@ -29936,7 +29631,7 @@ var ProjectService = class extends BaseService {
|
|
|
29936
29631
|
}
|
|
29937
29632
|
throw new Error(response.message);
|
|
29938
29633
|
} catch (error) {
|
|
29939
|
-
throw new Error(`Failed to remove favorite project: ${error.message}
|
|
29634
|
+
throw new Error(`Failed to remove favorite project: ${error.message}`);
|
|
29940
29635
|
}
|
|
29941
29636
|
}
|
|
29942
29637
|
// ==================== RECENT PROJECT METHODS ====================
|
|
@@ -29965,7 +29660,7 @@ var ProjectService = class extends BaseService {
|
|
|
29965
29660
|
}
|
|
29966
29661
|
throw new Error(response.message);
|
|
29967
29662
|
} catch (error) {
|
|
29968
|
-
throw new Error(`Failed to get recent projects: ${error.message}
|
|
29663
|
+
throw new Error(`Failed to get recent projects: ${error.message}`);
|
|
29969
29664
|
}
|
|
29970
29665
|
}
|
|
29971
29666
|
};
|
|
@@ -29987,7 +29682,7 @@ var PlanService = class extends BaseService {
|
|
|
29987
29682
|
}
|
|
29988
29683
|
throw new Error(response.message);
|
|
29989
29684
|
} catch (error) {
|
|
29990
|
-
throw new Error(`Failed to get plans: ${error.message}
|
|
29685
|
+
throw new Error(`Failed to get plans: ${error.message}`);
|
|
29991
29686
|
}
|
|
29992
29687
|
}
|
|
29993
29688
|
/**
|
|
@@ -30007,7 +29702,7 @@ var PlanService = class extends BaseService {
|
|
|
30007
29702
|
}
|
|
30008
29703
|
throw new Error(response.message);
|
|
30009
29704
|
} catch (error) {
|
|
30010
|
-
throw new Error(`Failed to get plan: ${error.message}
|
|
29705
|
+
throw new Error(`Failed to get plan: ${error.message}`);
|
|
30011
29706
|
}
|
|
30012
29707
|
}
|
|
30013
29708
|
// ==================== ADMIN PLAN METHODS ====================
|
|
@@ -30026,7 +29721,7 @@ var PlanService = class extends BaseService {
|
|
|
30026
29721
|
}
|
|
30027
29722
|
throw new Error(response.message);
|
|
30028
29723
|
} catch (error) {
|
|
30029
|
-
throw new Error(`Failed to get admin plans: ${error.message}
|
|
29724
|
+
throw new Error(`Failed to get admin plans: ${error.message}`);
|
|
30030
29725
|
}
|
|
30031
29726
|
}
|
|
30032
29727
|
/**
|
|
@@ -30048,7 +29743,7 @@ var PlanService = class extends BaseService {
|
|
|
30048
29743
|
}
|
|
30049
29744
|
throw new Error(response.message);
|
|
30050
29745
|
} catch (error) {
|
|
30051
|
-
throw new Error(`Failed to create plan: ${error.message}
|
|
29746
|
+
throw new Error(`Failed to create plan: ${error.message}`);
|
|
30052
29747
|
}
|
|
30053
29748
|
}
|
|
30054
29749
|
/**
|
|
@@ -30073,7 +29768,7 @@ var PlanService = class extends BaseService {
|
|
|
30073
29768
|
}
|
|
30074
29769
|
throw new Error(response.message);
|
|
30075
29770
|
} catch (error) {
|
|
30076
|
-
throw new Error(`Failed to update plan: ${error.message}
|
|
29771
|
+
throw new Error(`Failed to update plan: ${error.message}`);
|
|
30077
29772
|
}
|
|
30078
29773
|
}
|
|
30079
29774
|
/**
|
|
@@ -30094,7 +29789,7 @@ var PlanService = class extends BaseService {
|
|
|
30094
29789
|
}
|
|
30095
29790
|
throw new Error(response.message);
|
|
30096
29791
|
} catch (error) {
|
|
30097
|
-
throw new Error(`Failed to delete plan: ${error.message}
|
|
29792
|
+
throw new Error(`Failed to delete plan: ${error.message}`);
|
|
30098
29793
|
}
|
|
30099
29794
|
}
|
|
30100
29795
|
/**
|
|
@@ -30112,7 +29807,7 @@ var PlanService = class extends BaseService {
|
|
|
30112
29807
|
}
|
|
30113
29808
|
throw new Error(response.message);
|
|
30114
29809
|
} catch (error) {
|
|
30115
|
-
throw new Error(`Failed to initialize plans: ${error.message}
|
|
29810
|
+
throw new Error(`Failed to initialize plans: ${error.message}`);
|
|
30116
29811
|
}
|
|
30117
29812
|
}
|
|
30118
29813
|
// ==================== PLAN HELPER METHODS ====================
|
|
@@ -30127,7 +29822,7 @@ var PlanService = class extends BaseService {
|
|
|
30127
29822
|
}
|
|
30128
29823
|
return plans;
|
|
30129
29824
|
} catch (error) {
|
|
30130
|
-
throw new Error(`Failed to get plans with validation: ${error.message}
|
|
29825
|
+
throw new Error(`Failed to get plans with validation: ${error.message}`);
|
|
30131
29826
|
}
|
|
30132
29827
|
}
|
|
30133
29828
|
/**
|
|
@@ -30144,7 +29839,7 @@ var PlanService = class extends BaseService {
|
|
|
30144
29839
|
}
|
|
30145
29840
|
return plan;
|
|
30146
29841
|
} catch (error) {
|
|
30147
|
-
throw new Error(`Failed to get plan with validation: ${error.message}
|
|
29842
|
+
throw new Error(`Failed to get plan with validation: ${error.message}`);
|
|
30148
29843
|
}
|
|
30149
29844
|
}
|
|
30150
29845
|
/**
|
|
@@ -30196,7 +29891,7 @@ var PlanService = class extends BaseService {
|
|
|
30196
29891
|
const plans = await this.getPlans();
|
|
30197
29892
|
return plans.filter((plan) => plan.active !== false);
|
|
30198
29893
|
} catch (error) {
|
|
30199
|
-
throw new Error(`Failed to get active plans: ${error.message}
|
|
29894
|
+
throw new Error(`Failed to get active plans: ${error.message}`);
|
|
30200
29895
|
}
|
|
30201
29896
|
}
|
|
30202
29897
|
/**
|
|
@@ -30210,7 +29905,7 @@ var PlanService = class extends BaseService {
|
|
|
30210
29905
|
return price >= minPrice && price <= maxPrice;
|
|
30211
29906
|
});
|
|
30212
29907
|
} catch (error) {
|
|
30213
|
-
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}`);
|
|
30214
29909
|
}
|
|
30215
29910
|
}
|
|
30216
29911
|
/**
|
|
@@ -30228,7 +29923,7 @@ var PlanService = class extends BaseService {
|
|
|
30228
29923
|
}
|
|
30229
29924
|
return plan;
|
|
30230
29925
|
} catch (error) {
|
|
30231
|
-
throw new Error(`Failed to get plan by key: ${error.message}
|
|
29926
|
+
throw new Error(`Failed to get plan by key: ${error.message}`);
|
|
30232
29927
|
}
|
|
30233
29928
|
}
|
|
30234
29929
|
};
|
|
@@ -30269,7 +29964,7 @@ var SubscriptionService = class extends BaseService {
|
|
|
30269
29964
|
}
|
|
30270
29965
|
throw new Error(response.message);
|
|
30271
29966
|
} catch (error) {
|
|
30272
|
-
throw new Error(`Failed to create subscription: ${error.message}
|
|
29967
|
+
throw new Error(`Failed to create subscription: ${error.message}`);
|
|
30273
29968
|
}
|
|
30274
29969
|
}
|
|
30275
29970
|
/**
|
|
@@ -30290,7 +29985,7 @@ var SubscriptionService = class extends BaseService {
|
|
|
30290
29985
|
}
|
|
30291
29986
|
throw new Error(response.message);
|
|
30292
29987
|
} catch (error) {
|
|
30293
|
-
throw new Error(`Failed to get project subscription status: ${error.message}
|
|
29988
|
+
throw new Error(`Failed to get project subscription status: ${error.message}`);
|
|
30294
29989
|
}
|
|
30295
29990
|
}
|
|
30296
29991
|
/**
|
|
@@ -30311,7 +30006,7 @@ var SubscriptionService = class extends BaseService {
|
|
|
30311
30006
|
}
|
|
30312
30007
|
throw new Error(response.message);
|
|
30313
30008
|
} catch (error) {
|
|
30314
|
-
throw new Error(`Failed to get subscription usage: ${error.message}
|
|
30009
|
+
throw new Error(`Failed to get subscription usage: ${error.message}`);
|
|
30315
30010
|
}
|
|
30316
30011
|
}
|
|
30317
30012
|
/**
|
|
@@ -30332,7 +30027,7 @@ var SubscriptionService = class extends BaseService {
|
|
|
30332
30027
|
}
|
|
30333
30028
|
throw new Error(response.message);
|
|
30334
30029
|
} catch (error) {
|
|
30335
|
-
throw new Error(`Failed to cancel subscription: ${error.message}
|
|
30030
|
+
throw new Error(`Failed to cancel subscription: ${error.message}`);
|
|
30336
30031
|
}
|
|
30337
30032
|
}
|
|
30338
30033
|
/**
|
|
@@ -30369,7 +30064,7 @@ var SubscriptionService = class extends BaseService {
|
|
|
30369
30064
|
}
|
|
30370
30065
|
throw new Error(response.message);
|
|
30371
30066
|
} catch (error) {
|
|
30372
|
-
throw new Error(`Failed to list invoices: ${error.message}
|
|
30067
|
+
throw new Error(`Failed to list invoices: ${error.message}`);
|
|
30373
30068
|
}
|
|
30374
30069
|
}
|
|
30375
30070
|
/**
|
|
@@ -30396,7 +30091,7 @@ var SubscriptionService = class extends BaseService {
|
|
|
30396
30091
|
}
|
|
30397
30092
|
throw new Error(response.message);
|
|
30398
30093
|
} catch (error) {
|
|
30399
|
-
throw new Error(`Failed to get portal URL: ${error.message}
|
|
30094
|
+
throw new Error(`Failed to get portal URL: ${error.message}`);
|
|
30400
30095
|
}
|
|
30401
30096
|
}
|
|
30402
30097
|
// ==================== SUBSCRIPTION HELPER METHODS ====================
|
|
@@ -30431,7 +30126,7 @@ var SubscriptionService = class extends BaseService {
|
|
|
30431
30126
|
const status = await this.getProjectStatus(projectId);
|
|
30432
30127
|
return status.hasSubscription === true;
|
|
30433
30128
|
} catch (error) {
|
|
30434
|
-
throw new Error(`Failed to check subscription status: ${error.message}
|
|
30129
|
+
throw new Error(`Failed to check subscription status: ${error.message}`);
|
|
30435
30130
|
}
|
|
30436
30131
|
}
|
|
30437
30132
|
/**
|
|
@@ -30445,7 +30140,7 @@ var SubscriptionService = class extends BaseService {
|
|
|
30445
30140
|
}
|
|
30446
30141
|
return status.subscription;
|
|
30447
30142
|
} catch (error) {
|
|
30448
|
-
throw new Error(`Failed to get project subscription: ${error.message}
|
|
30143
|
+
throw new Error(`Failed to get project subscription: ${error.message}`);
|
|
30449
30144
|
}
|
|
30450
30145
|
}
|
|
30451
30146
|
/**
|
|
@@ -30459,7 +30154,7 @@ var SubscriptionService = class extends BaseService {
|
|
|
30459
30154
|
}
|
|
30460
30155
|
return status.usage;
|
|
30461
30156
|
} catch (error) {
|
|
30462
|
-
throw new Error(`Failed to get project usage: ${error.message}
|
|
30157
|
+
throw new Error(`Failed to get project usage: ${error.message}`);
|
|
30463
30158
|
}
|
|
30464
30159
|
}
|
|
30465
30160
|
/**
|
|
@@ -30473,7 +30168,7 @@ var SubscriptionService = class extends BaseService {
|
|
|
30473
30168
|
pagination: result.pagination || {}
|
|
30474
30169
|
};
|
|
30475
30170
|
} catch (error) {
|
|
30476
|
-
throw new Error(`Failed to get invoices with pagination: ${error.message}
|
|
30171
|
+
throw new Error(`Failed to get invoices with pagination: ${error.message}`);
|
|
30477
30172
|
}
|
|
30478
30173
|
}
|
|
30479
30174
|
/**
|
|
@@ -30484,7 +30179,7 @@ var SubscriptionService = class extends BaseService {
|
|
|
30484
30179
|
const usage = await this.getUsage(subscriptionId);
|
|
30485
30180
|
return usage && usage.subscription && usage.subscription.status === "active";
|
|
30486
30181
|
} catch (error) {
|
|
30487
|
-
throw new Error(`Failed to check subscription status: ${error.message}
|
|
30182
|
+
throw new Error(`Failed to check subscription status: ${error.message}`);
|
|
30488
30183
|
}
|
|
30489
30184
|
}
|
|
30490
30185
|
/**
|
|
@@ -30495,7 +30190,7 @@ var SubscriptionService = class extends BaseService {
|
|
|
30495
30190
|
const usage = await this.getUsage(subscriptionId);
|
|
30496
30191
|
return usage.limits || {};
|
|
30497
30192
|
} catch (error) {
|
|
30498
|
-
throw new Error(`Failed to get subscription limits: ${error.message}
|
|
30193
|
+
throw new Error(`Failed to get subscription limits: ${error.message}`);
|
|
30499
30194
|
}
|
|
30500
30195
|
}
|
|
30501
30196
|
/**
|
|
@@ -30531,7 +30226,7 @@ var SubscriptionService = class extends BaseService {
|
|
|
30531
30226
|
}
|
|
30532
30227
|
throw new Error(response.message);
|
|
30533
30228
|
} catch (error) {
|
|
30534
|
-
throw new Error(`Failed to change subscription: ${error.message}
|
|
30229
|
+
throw new Error(`Failed to change subscription: ${error.message}`);
|
|
30535
30230
|
}
|
|
30536
30231
|
}
|
|
30537
30232
|
/**
|
|
@@ -30559,7 +30254,7 @@ var SubscriptionService = class extends BaseService {
|
|
|
30559
30254
|
}
|
|
30560
30255
|
throw new Error(response.message);
|
|
30561
30256
|
} catch (error) {
|
|
30562
|
-
throw new Error(`Failed to downgrade subscription: ${error.message}
|
|
30257
|
+
throw new Error(`Failed to downgrade subscription: ${error.message}`);
|
|
30563
30258
|
}
|
|
30564
30259
|
}
|
|
30565
30260
|
/**
|
|
@@ -30648,7 +30343,7 @@ var FileService = class extends BaseService {
|
|
|
30648
30343
|
message: response.message
|
|
30649
30344
|
};
|
|
30650
30345
|
} catch (error) {
|
|
30651
|
-
throw new Error(`File upload failed: ${error.message}
|
|
30346
|
+
throw new Error(`File upload failed: ${error.message}`);
|
|
30652
30347
|
}
|
|
30653
30348
|
}
|
|
30654
30349
|
async updateProjectIcon(projectId, iconFile) {
|
|
@@ -30672,7 +30367,7 @@ var FileService = class extends BaseService {
|
|
|
30672
30367
|
}
|
|
30673
30368
|
throw new Error(response.message);
|
|
30674
30369
|
} catch (error) {
|
|
30675
|
-
throw new Error(`Failed to update project icon: ${error.message}
|
|
30370
|
+
throw new Error(`Failed to update project icon: ${error.message}`);
|
|
30676
30371
|
}
|
|
30677
30372
|
}
|
|
30678
30373
|
// ==================== FILE HELPER METHODS ====================
|
|
@@ -30822,7 +30517,7 @@ var PaymentService = class extends BaseService {
|
|
|
30822
30517
|
}
|
|
30823
30518
|
throw new Error(response.message);
|
|
30824
30519
|
} catch (error) {
|
|
30825
|
-
throw new Error(`Failed to checkout: ${error.message}
|
|
30520
|
+
throw new Error(`Failed to checkout: ${error.message}`);
|
|
30826
30521
|
}
|
|
30827
30522
|
}
|
|
30828
30523
|
async getSubscriptionStatus(projectId) {
|
|
@@ -30843,7 +30538,7 @@ var PaymentService = class extends BaseService {
|
|
|
30843
30538
|
}
|
|
30844
30539
|
throw new Error(response.message);
|
|
30845
30540
|
} catch (error) {
|
|
30846
|
-
throw new Error(`Failed to get subscription status: ${error.message}
|
|
30541
|
+
throw new Error(`Failed to get subscription status: ${error.message}`);
|
|
30847
30542
|
}
|
|
30848
30543
|
}
|
|
30849
30544
|
// ==================== PAYMENT HELPER METHODS ====================
|
|
@@ -31059,7 +30754,7 @@ var DnsService = class extends BaseService {
|
|
|
31059
30754
|
}
|
|
31060
30755
|
throw new Error(response.message);
|
|
31061
30756
|
} catch (error) {
|
|
31062
|
-
throw new Error(`Failed to create DNS record: ${error.message}
|
|
30757
|
+
throw new Error(`Failed to create DNS record: ${error.message}`);
|
|
31063
30758
|
}
|
|
31064
30759
|
}
|
|
31065
30760
|
async getDnsRecord(domain) {
|
|
@@ -31077,7 +30772,7 @@ var DnsService = class extends BaseService {
|
|
|
31077
30772
|
}
|
|
31078
30773
|
throw new Error(response.message);
|
|
31079
30774
|
} catch (error) {
|
|
31080
|
-
throw new Error(`Failed to get DNS record: ${error.message}
|
|
30775
|
+
throw new Error(`Failed to get DNS record: ${error.message}`);
|
|
31081
30776
|
}
|
|
31082
30777
|
}
|
|
31083
30778
|
async getCustomHost(hostname) {
|
|
@@ -31113,7 +30808,7 @@ var DnsService = class extends BaseService {
|
|
|
31113
30808
|
}
|
|
31114
30809
|
throw new Error(response.message);
|
|
31115
30810
|
} catch (error) {
|
|
31116
|
-
throw new Error(`Failed to remove DNS record: ${error.message}
|
|
30811
|
+
throw new Error(`Failed to remove DNS record: ${error.message}`);
|
|
31117
30812
|
}
|
|
31118
30813
|
}
|
|
31119
30814
|
// Deprecated, use addProjectCustomDomains instead
|
|
@@ -31137,7 +30832,7 @@ var DnsService = class extends BaseService {
|
|
|
31137
30832
|
}
|
|
31138
30833
|
throw new Error(response.message);
|
|
31139
30834
|
} catch (error) {
|
|
31140
|
-
throw new Error(`Failed to set project domains: ${error.message}
|
|
30835
|
+
throw new Error(`Failed to set project domains: ${error.message}`);
|
|
31141
30836
|
}
|
|
31142
30837
|
}
|
|
31143
30838
|
// customDomains could be a string or an array of strings
|
|
@@ -31413,7 +31108,7 @@ var BranchService = class extends BaseService {
|
|
|
31413
31108
|
}
|
|
31414
31109
|
throw new Error(response.message);
|
|
31415
31110
|
} catch (error) {
|
|
31416
|
-
throw new Error(`Failed to list branches: ${error.message}
|
|
31111
|
+
throw new Error(`Failed to list branches: ${error.message}`);
|
|
31417
31112
|
}
|
|
31418
31113
|
}
|
|
31419
31114
|
/**
|
|
@@ -31439,7 +31134,7 @@ var BranchService = class extends BaseService {
|
|
|
31439
31134
|
}
|
|
31440
31135
|
throw new Error(response.message);
|
|
31441
31136
|
} catch (error) {
|
|
31442
|
-
throw new Error(`Failed to create branch: ${error.message}
|
|
31137
|
+
throw new Error(`Failed to create branch: ${error.message}`);
|
|
31443
31138
|
}
|
|
31444
31139
|
}
|
|
31445
31140
|
/**
|
|
@@ -31469,7 +31164,7 @@ var BranchService = class extends BaseService {
|
|
|
31469
31164
|
}
|
|
31470
31165
|
throw new Error(response.message);
|
|
31471
31166
|
} catch (error) {
|
|
31472
|
-
throw new Error(`Failed to delete branch: ${error.message}
|
|
31167
|
+
throw new Error(`Failed to delete branch: ${error.message}`);
|
|
31473
31168
|
}
|
|
31474
31169
|
}
|
|
31475
31170
|
/**
|
|
@@ -31505,7 +31200,7 @@ var BranchService = class extends BaseService {
|
|
|
31505
31200
|
}
|
|
31506
31201
|
throw new Error(response.message);
|
|
31507
31202
|
} catch (error) {
|
|
31508
|
-
throw new Error(`Failed to rename branch: ${error.message}
|
|
31203
|
+
throw new Error(`Failed to rename branch: ${error.message}`);
|
|
31509
31204
|
}
|
|
31510
31205
|
}
|
|
31511
31206
|
/**
|
|
@@ -31544,7 +31239,7 @@ var BranchService = class extends BaseService {
|
|
|
31544
31239
|
}
|
|
31545
31240
|
throw new Error(response.message);
|
|
31546
31241
|
} catch (error) {
|
|
31547
|
-
throw new Error(`Failed to get branch changes: ${error.message}
|
|
31242
|
+
throw new Error(`Failed to get branch changes: ${error.message}`);
|
|
31548
31243
|
}
|
|
31549
31244
|
}
|
|
31550
31245
|
/**
|
|
@@ -31591,7 +31286,7 @@ var BranchService = class extends BaseService {
|
|
|
31591
31286
|
if (error.message.includes("conflicts") || error.message.includes("409")) {
|
|
31592
31287
|
throw new Error(`Merge conflicts detected: ${error.message}`);
|
|
31593
31288
|
}
|
|
31594
|
-
throw new Error(`Failed to merge branch: ${error.message}
|
|
31289
|
+
throw new Error(`Failed to merge branch: ${error.message}`);
|
|
31595
31290
|
}
|
|
31596
31291
|
}
|
|
31597
31292
|
/**
|
|
@@ -31620,7 +31315,7 @@ var BranchService = class extends BaseService {
|
|
|
31620
31315
|
}
|
|
31621
31316
|
throw new Error(response.message);
|
|
31622
31317
|
} catch (error) {
|
|
31623
|
-
throw new Error(`Failed to reset branch: ${error.message}
|
|
31318
|
+
throw new Error(`Failed to reset branch: ${error.message}`);
|
|
31624
31319
|
}
|
|
31625
31320
|
}
|
|
31626
31321
|
/**
|
|
@@ -31646,7 +31341,7 @@ var BranchService = class extends BaseService {
|
|
|
31646
31341
|
}
|
|
31647
31342
|
throw new Error(response.message);
|
|
31648
31343
|
} catch (error) {
|
|
31649
|
-
throw new Error(`Failed to publish version: ${error.message}
|
|
31344
|
+
throw new Error(`Failed to publish version: ${error.message}`);
|
|
31650
31345
|
}
|
|
31651
31346
|
}
|
|
31652
31347
|
// ==================== BRANCH HELPER METHODS ====================
|
|
@@ -31678,7 +31373,7 @@ var BranchService = class extends BaseService {
|
|
|
31678
31373
|
const branches = await this.listBranches(projectId);
|
|
31679
31374
|
return ((_a = branches == null ? void 0 : branches.data) == null ? void 0 : _a.includes(branchName)) || false;
|
|
31680
31375
|
} catch (error) {
|
|
31681
|
-
throw new Error(`Failed to check if branch exists: ${error.message}
|
|
31376
|
+
throw new Error(`Failed to check if branch exists: ${error.message}`);
|
|
31682
31377
|
}
|
|
31683
31378
|
}
|
|
31684
31379
|
/**
|
|
@@ -31748,7 +31443,7 @@ var BranchService = class extends BaseService {
|
|
|
31748
31443
|
canRename: exists && branchName !== "main"
|
|
31749
31444
|
};
|
|
31750
31445
|
} catch (error) {
|
|
31751
|
-
throw new Error(`Failed to get branch status: ${error.message}
|
|
31446
|
+
throw new Error(`Failed to get branch status: ${error.message}`);
|
|
31752
31447
|
}
|
|
31753
31448
|
}
|
|
31754
31449
|
/**
|
|
@@ -31883,7 +31578,7 @@ var PullRequestService = class extends BaseService {
|
|
|
31883
31578
|
}
|
|
31884
31579
|
throw new Error(response.message);
|
|
31885
31580
|
} catch (error) {
|
|
31886
|
-
throw new Error(`Failed to create pull request: ${error.message}
|
|
31581
|
+
throw new Error(`Failed to create pull request: ${error.message}`);
|
|
31887
31582
|
}
|
|
31888
31583
|
}
|
|
31889
31584
|
/**
|
|
@@ -31919,7 +31614,7 @@ var PullRequestService = class extends BaseService {
|
|
|
31919
31614
|
}
|
|
31920
31615
|
throw new Error(response.message);
|
|
31921
31616
|
} catch (error) {
|
|
31922
|
-
throw new Error(`Failed to list pull requests: ${error.message}
|
|
31617
|
+
throw new Error(`Failed to list pull requests: ${error.message}`);
|
|
31923
31618
|
}
|
|
31924
31619
|
}
|
|
31925
31620
|
/**
|
|
@@ -31946,7 +31641,7 @@ var PullRequestService = class extends BaseService {
|
|
|
31946
31641
|
}
|
|
31947
31642
|
throw new Error(response.message);
|
|
31948
31643
|
} catch (error) {
|
|
31949
|
-
throw new Error(`Failed to get pull request: ${error.message}
|
|
31644
|
+
throw new Error(`Failed to get pull request: ${error.message}`);
|
|
31950
31645
|
}
|
|
31951
31646
|
}
|
|
31952
31647
|
/**
|
|
@@ -31980,7 +31675,7 @@ var PullRequestService = class extends BaseService {
|
|
|
31980
31675
|
}
|
|
31981
31676
|
throw new Error(response.message);
|
|
31982
31677
|
} catch (error) {
|
|
31983
|
-
throw new Error(`Failed to review pull request: ${error.message}
|
|
31678
|
+
throw new Error(`Failed to review pull request: ${error.message}`);
|
|
31984
31679
|
}
|
|
31985
31680
|
}
|
|
31986
31681
|
/**
|
|
@@ -32011,7 +31706,7 @@ var PullRequestService = class extends BaseService {
|
|
|
32011
31706
|
}
|
|
32012
31707
|
throw new Error(response.message);
|
|
32013
31708
|
} catch (error) {
|
|
32014
|
-
throw new Error(`Failed to add pull request comment: ${error.message}
|
|
31709
|
+
throw new Error(`Failed to add pull request comment: ${error.message}`);
|
|
32015
31710
|
}
|
|
32016
31711
|
}
|
|
32017
31712
|
/**
|
|
@@ -32041,7 +31736,7 @@ var PullRequestService = class extends BaseService {
|
|
|
32041
31736
|
if (error.message.includes("conflicts") || error.message.includes("409")) {
|
|
32042
31737
|
throw new Error(`Pull request has merge conflicts: ${error.message}`);
|
|
32043
31738
|
}
|
|
32044
|
-
throw new Error(`Failed to merge pull request: ${error.message}
|
|
31739
|
+
throw new Error(`Failed to merge pull request: ${error.message}`);
|
|
32045
31740
|
}
|
|
32046
31741
|
}
|
|
32047
31742
|
/**
|
|
@@ -32068,7 +31763,7 @@ var PullRequestService = class extends BaseService {
|
|
|
32068
31763
|
}
|
|
32069
31764
|
throw new Error(response.message);
|
|
32070
31765
|
} catch (error) {
|
|
32071
|
-
throw new Error(`Failed to get pull request diff: ${error.message}
|
|
31766
|
+
throw new Error(`Failed to get pull request diff: ${error.message}`);
|
|
32072
31767
|
}
|
|
32073
31768
|
}
|
|
32074
31769
|
// ==================== PULL REQUEST HELPER METHODS ====================
|
|
@@ -32388,7 +32083,7 @@ var AdminService = class extends BaseService {
|
|
|
32388
32083
|
}
|
|
32389
32084
|
throw new Error(response.message);
|
|
32390
32085
|
} catch (error) {
|
|
32391
|
-
throw new Error(`Failed to get admin users: ${error.message}
|
|
32086
|
+
throw new Error(`Failed to get admin users: ${error.message}`);
|
|
32392
32087
|
}
|
|
32393
32088
|
}
|
|
32394
32089
|
/**
|
|
@@ -32419,7 +32114,7 @@ var AdminService = class extends BaseService {
|
|
|
32419
32114
|
}
|
|
32420
32115
|
throw new Error(response.message);
|
|
32421
32116
|
} catch (error) {
|
|
32422
|
-
throw new Error(`Failed to assign projects to user: ${error.message}
|
|
32117
|
+
throw new Error(`Failed to assign projects to user: ${error.message}`);
|
|
32423
32118
|
}
|
|
32424
32119
|
}
|
|
32425
32120
|
/**
|
|
@@ -32448,7 +32143,7 @@ var AdminService = class extends BaseService {
|
|
|
32448
32143
|
if ((_a = error.message) == null ? void 0 : _a.includes("Duplicate")) {
|
|
32449
32144
|
throw new Error("Username already exists");
|
|
32450
32145
|
}
|
|
32451
|
-
throw new Error(`Failed to update user: ${error.message}
|
|
32146
|
+
throw new Error(`Failed to update user: ${error.message}`);
|
|
32452
32147
|
}
|
|
32453
32148
|
}
|
|
32454
32149
|
// ==================== ADMIN HELPER METHODS ====================
|
|
@@ -32578,7 +32273,7 @@ var AdminService = class extends BaseService {
|
|
|
32578
32273
|
});
|
|
32579
32274
|
return stats;
|
|
32580
32275
|
} catch (error) {
|
|
32581
|
-
throw new Error(`Failed to get user stats: ${error.message}
|
|
32276
|
+
throw new Error(`Failed to get user stats: ${error.message}`);
|
|
32582
32277
|
}
|
|
32583
32278
|
}
|
|
32584
32279
|
/**
|
|
@@ -32665,287 +32360,6 @@ var AdminService = class extends BaseService {
|
|
|
32665
32360
|
}
|
|
32666
32361
|
};
|
|
32667
32362
|
|
|
32668
|
-
// src/services/ScreenshotService.js
|
|
32669
|
-
var ScreenshotService = class extends BaseService {
|
|
32670
|
-
constructor(config) {
|
|
32671
|
-
super(config);
|
|
32672
|
-
this._debounceTimers = /* @__PURE__ */ new Map();
|
|
32673
|
-
this._inflightRefreshes = /* @__PURE__ */ new Map();
|
|
32674
|
-
}
|
|
32675
|
-
// ==================== PROJECT-LEVEL OPERATIONS ====================
|
|
32676
|
-
async createScreenshotProject(payload) {
|
|
32677
|
-
this._requireReady("createScreenshotProject");
|
|
32678
|
-
try {
|
|
32679
|
-
const response = await this._request("/screenshots/projects", {
|
|
32680
|
-
method: "POST",
|
|
32681
|
-
body: JSON.stringify(payload),
|
|
32682
|
-
methodName: "createScreenshotProject"
|
|
32683
|
-
});
|
|
32684
|
-
if (response.success) {
|
|
32685
|
-
return response;
|
|
32686
|
-
}
|
|
32687
|
-
throw new Error(response.message);
|
|
32688
|
-
} catch (error) {
|
|
32689
|
-
throw new Error(`Failed to create screenshot project: ${error.message}`, { cause: error });
|
|
32690
|
-
}
|
|
32691
|
-
}
|
|
32692
|
-
async getProjectScreenshots(projectKey, params2 = {}) {
|
|
32693
|
-
this._requireReady("getProjectScreenshots");
|
|
32694
|
-
if (!projectKey) {
|
|
32695
|
-
throw new Error("projectKey is required");
|
|
32696
|
-
}
|
|
32697
|
-
const { type = "all", status, limit = 50, offset: offset2 = 0 } = params2;
|
|
32698
|
-
const qs = new URLSearchParams();
|
|
32699
|
-
if (type) {
|
|
32700
|
-
qs.set("type", type);
|
|
32701
|
-
}
|
|
32702
|
-
if (status) {
|
|
32703
|
-
qs.set("status", status);
|
|
32704
|
-
}
|
|
32705
|
-
if (limit != null) {
|
|
32706
|
-
qs.set("limit", String(limit));
|
|
32707
|
-
}
|
|
32708
|
-
if (offset2 != null) {
|
|
32709
|
-
qs.set("offset", String(offset2));
|
|
32710
|
-
}
|
|
32711
|
-
try {
|
|
32712
|
-
const response = await this._request(
|
|
32713
|
-
`/screenshots/projects/${encodeURIComponent(projectKey)}${qs.toString() ? `?${qs.toString()}` : ""}`,
|
|
32714
|
-
{ method: "GET", methodName: "getProjectScreenshots" }
|
|
32715
|
-
);
|
|
32716
|
-
if (response.success) {
|
|
32717
|
-
return response;
|
|
32718
|
-
}
|
|
32719
|
-
throw new Error(response.message);
|
|
32720
|
-
} catch (error) {
|
|
32721
|
-
throw new Error(`Failed to get project screenshots: ${error.message}`, { cause: error });
|
|
32722
|
-
}
|
|
32723
|
-
}
|
|
32724
|
-
async reprocessProjectScreenshots(projectKey, body = {}) {
|
|
32725
|
-
this._requireReady("reprocessProjectScreenshots");
|
|
32726
|
-
if (!projectKey) {
|
|
32727
|
-
throw new Error("projectKey is required");
|
|
32728
|
-
}
|
|
32729
|
-
try {
|
|
32730
|
-
const response = await this._request(
|
|
32731
|
-
`/screenshots/projects/${encodeURIComponent(projectKey)}/reprocess`,
|
|
32732
|
-
{ method: "POST", body: JSON.stringify(body), methodName: "reprocessProjectScreenshots" }
|
|
32733
|
-
);
|
|
32734
|
-
if (response.success) {
|
|
32735
|
-
return response;
|
|
32736
|
-
}
|
|
32737
|
-
throw new Error(response.message);
|
|
32738
|
-
} catch (error) {
|
|
32739
|
-
throw new Error(`Failed to reprocess screenshots: ${error.message}`, { cause: error });
|
|
32740
|
-
}
|
|
32741
|
-
}
|
|
32742
|
-
async recreateProjectScreenshots(projectKey, body = {}) {
|
|
32743
|
-
this._requireReady("recreateProjectScreenshots");
|
|
32744
|
-
if (!projectKey) {
|
|
32745
|
-
throw new Error("projectKey is required");
|
|
32746
|
-
}
|
|
32747
|
-
try {
|
|
32748
|
-
const response = await this._request(
|
|
32749
|
-
`/screenshots/projects/${encodeURIComponent(projectKey)}/recreate`,
|
|
32750
|
-
{ method: "POST", body: JSON.stringify(body), methodName: "recreateProjectScreenshots" }
|
|
32751
|
-
);
|
|
32752
|
-
if (response.success) {
|
|
32753
|
-
return response;
|
|
32754
|
-
}
|
|
32755
|
-
throw new Error(response.message);
|
|
32756
|
-
} catch (error) {
|
|
32757
|
-
throw new Error(`Failed to recreate screenshots: ${error.message}`, { cause: error });
|
|
32758
|
-
}
|
|
32759
|
-
}
|
|
32760
|
-
async deleteProjectScreenshots(projectKey) {
|
|
32761
|
-
this._requireReady("deleteProjectScreenshots");
|
|
32762
|
-
if (!projectKey) {
|
|
32763
|
-
throw new Error("projectKey is required");
|
|
32764
|
-
}
|
|
32765
|
-
try {
|
|
32766
|
-
const response = await this._request(
|
|
32767
|
-
`/screenshots/projects/${encodeURIComponent(projectKey)}`,
|
|
32768
|
-
{ method: "DELETE", methodName: "deleteProjectScreenshots" }
|
|
32769
|
-
);
|
|
32770
|
-
if (response.success) {
|
|
32771
|
-
return response;
|
|
32772
|
-
}
|
|
32773
|
-
throw new Error(response.message);
|
|
32774
|
-
} catch (error) {
|
|
32775
|
-
throw new Error(`Failed to delete project screenshots: ${error.message}`, { cause: error });
|
|
32776
|
-
}
|
|
32777
|
-
}
|
|
32778
|
-
// ==================== THUMBNAIL ====================
|
|
32779
|
-
async getThumbnailCandidate(projectKey, options = {}) {
|
|
32780
|
-
this._requireReady("getThumbnailCandidate");
|
|
32781
|
-
if (!projectKey) {
|
|
32782
|
-
throw new Error("projectKey is required");
|
|
32783
|
-
}
|
|
32784
|
-
const { includeData = false } = options;
|
|
32785
|
-
const qs = new URLSearchParams();
|
|
32786
|
-
if (includeData) {
|
|
32787
|
-
qs.set("include_data", "true");
|
|
32788
|
-
}
|
|
32789
|
-
try {
|
|
32790
|
-
const response = await this._request(
|
|
32791
|
-
`/screenshots/projects/${encodeURIComponent(projectKey)}/thumbnail/candidate${qs.toString() ? `?${qs.toString()}` : ""}`,
|
|
32792
|
-
{ method: "GET", methodName: "getThumbnailCandidate" }
|
|
32793
|
-
);
|
|
32794
|
-
if (response.success) {
|
|
32795
|
-
return response;
|
|
32796
|
-
}
|
|
32797
|
-
throw new Error(response.message);
|
|
32798
|
-
} catch (error) {
|
|
32799
|
-
throw new Error(`Failed to get thumbnail candidate: ${error.message}`, { cause: error });
|
|
32800
|
-
}
|
|
32801
|
-
}
|
|
32802
|
-
async updateProjectThumbnail(projectKey, body = {}) {
|
|
32803
|
-
this._requireReady("updateProjectThumbnail");
|
|
32804
|
-
if (!projectKey) {
|
|
32805
|
-
throw new Error("projectKey is required");
|
|
32806
|
-
}
|
|
32807
|
-
try {
|
|
32808
|
-
const response = await this._request(
|
|
32809
|
-
`/screenshots/projects/${encodeURIComponent(projectKey)}/thumbnail`,
|
|
32810
|
-
{ method: "POST", body: JSON.stringify(body), methodName: "updateProjectThumbnail" }
|
|
32811
|
-
);
|
|
32812
|
-
if (response.success) {
|
|
32813
|
-
return response;
|
|
32814
|
-
}
|
|
32815
|
-
throw new Error(response.message);
|
|
32816
|
-
} catch (error) {
|
|
32817
|
-
throw new Error(`Failed to update project thumbnail: ${error.message}`, { cause: error });
|
|
32818
|
-
}
|
|
32819
|
-
}
|
|
32820
|
-
// ==================== INDIVIDUAL SHOTS ====================
|
|
32821
|
-
async getPageScreenshot(screenshotId, format = "json") {
|
|
32822
|
-
this._requireReady("getPageScreenshot");
|
|
32823
|
-
if (!screenshotId) {
|
|
32824
|
-
throw new Error("screenshotId is required");
|
|
32825
|
-
}
|
|
32826
|
-
const qs = new URLSearchParams();
|
|
32827
|
-
if (format) {
|
|
32828
|
-
qs.set("format", format);
|
|
32829
|
-
}
|
|
32830
|
-
try {
|
|
32831
|
-
return await this._request(
|
|
32832
|
-
`/screenshots/pages/${encodeURIComponent(screenshotId)}${qs.toString() ? `?${qs.toString()}` : ""}`,
|
|
32833
|
-
{ method: "GET", methodName: "getPageScreenshot" }
|
|
32834
|
-
);
|
|
32835
|
-
} catch (error) {
|
|
32836
|
-
throw new Error(`Failed to get page screenshot: ${error.message}`, { cause: error });
|
|
32837
|
-
}
|
|
32838
|
-
}
|
|
32839
|
-
async getComponentScreenshot(screenshotId, format = "json") {
|
|
32840
|
-
this._requireReady("getComponentScreenshot");
|
|
32841
|
-
if (!screenshotId) {
|
|
32842
|
-
throw new Error("screenshotId is required");
|
|
32843
|
-
}
|
|
32844
|
-
const qs = new URLSearchParams();
|
|
32845
|
-
if (format) {
|
|
32846
|
-
qs.set("format", format);
|
|
32847
|
-
}
|
|
32848
|
-
try {
|
|
32849
|
-
return await this._request(
|
|
32850
|
-
`/screenshots/components/${encodeURIComponent(screenshotId)}${qs.toString() ? `?${qs.toString()}` : ""}`,
|
|
32851
|
-
{ method: "GET", methodName: "getComponentScreenshot" }
|
|
32852
|
-
);
|
|
32853
|
-
} catch (error) {
|
|
32854
|
-
throw new Error(`Failed to get component screenshot: ${error.message}`, { cause: error });
|
|
32855
|
-
}
|
|
32856
|
-
}
|
|
32857
|
-
async getScreenshotByKey(projectKey, type, key, format = "json") {
|
|
32858
|
-
this._requireReady("getScreenshotByKey");
|
|
32859
|
-
if (!projectKey) {
|
|
32860
|
-
throw new Error("projectKey is required");
|
|
32861
|
-
}
|
|
32862
|
-
if (!type || !["component", "page"].includes(String(type))) {
|
|
32863
|
-
throw new Error("type must be 'component' or 'page'");
|
|
32864
|
-
}
|
|
32865
|
-
if (!key) {
|
|
32866
|
-
throw new Error("key is required");
|
|
32867
|
-
}
|
|
32868
|
-
const qs = new URLSearchParams();
|
|
32869
|
-
if (format) {
|
|
32870
|
-
qs.set("format", format);
|
|
32871
|
-
}
|
|
32872
|
-
const sub = type === "component" ? "components" : "pages";
|
|
32873
|
-
try {
|
|
32874
|
-
return await this._request(
|
|
32875
|
-
`/screenshots/projects/${encodeURIComponent(projectKey)}/${sub}/${encodeURIComponent(key)}${qs.toString() ? `?${qs.toString()}` : ""}`,
|
|
32876
|
-
{ method: "GET", methodName: "getScreenshotByKey" }
|
|
32877
|
-
);
|
|
32878
|
-
} catch (error) {
|
|
32879
|
-
throw new Error(`Failed to get screenshot by key: ${error.message}`, { cause: error });
|
|
32880
|
-
}
|
|
32881
|
-
}
|
|
32882
|
-
async getQueueStatistics() {
|
|
32883
|
-
this._requireReady("getQueueStatistics");
|
|
32884
|
-
try {
|
|
32885
|
-
const response = await this._request("/screenshots/queue/stats", {
|
|
32886
|
-
method: "GET",
|
|
32887
|
-
methodName: "getQueueStatistics"
|
|
32888
|
-
});
|
|
32889
|
-
if (response.success) {
|
|
32890
|
-
return response;
|
|
32891
|
-
}
|
|
32892
|
-
throw new Error(response.message);
|
|
32893
|
-
} catch (error) {
|
|
32894
|
-
throw new Error(`Failed to get queue statistics: ${error.message}`, { cause: error });
|
|
32895
|
-
}
|
|
32896
|
-
}
|
|
32897
|
-
// ==================== COMBINATION/DEBOUNCED ====================
|
|
32898
|
-
/**
|
|
32899
|
-
* Debounced thumbnail refresh that recreates screenshots and then updates thumbnail.
|
|
32900
|
-
* Subsequent calls within debounce window reset the timer.
|
|
32901
|
-
*/
|
|
32902
|
-
async refreshThumbnail(projectKey, options = {}) {
|
|
32903
|
-
this._requireReady("refreshThumbnail");
|
|
32904
|
-
if (!projectKey) {
|
|
32905
|
-
throw new Error("projectKey is required");
|
|
32906
|
-
}
|
|
32907
|
-
const {
|
|
32908
|
-
debounceMs = 15e3,
|
|
32909
|
-
waitAfterRecreateMs = 2e4,
|
|
32910
|
-
recreate = {
|
|
32911
|
-
process_pages: true,
|
|
32912
|
-
process_components: true,
|
|
32913
|
-
process_descriptions: true,
|
|
32914
|
-
force: false,
|
|
32915
|
-
priority: 5
|
|
32916
|
-
},
|
|
32917
|
-
thumbnail = {
|
|
32918
|
-
strategy: "auto",
|
|
32919
|
-
force: true
|
|
32920
|
-
}
|
|
32921
|
-
} = options;
|
|
32922
|
-
const existingTimer = this._debounceTimers.get(projectKey);
|
|
32923
|
-
if (existingTimer) {
|
|
32924
|
-
clearTimeout(existingTimer);
|
|
32925
|
-
}
|
|
32926
|
-
const executionPromise = await new Promise((resolve) => {
|
|
32927
|
-
const timer = setTimeout(async () => {
|
|
32928
|
-
try {
|
|
32929
|
-
await this.recreateProjectScreenshots(projectKey, recreate);
|
|
32930
|
-
await new Promise((resolveDelay) => {
|
|
32931
|
-
setTimeout(resolveDelay, waitAfterRecreateMs);
|
|
32932
|
-
});
|
|
32933
|
-
const result = await this.updateProjectThumbnail(projectKey, thumbnail);
|
|
32934
|
-
resolve(result);
|
|
32935
|
-
} catch (e) {
|
|
32936
|
-
resolve({ success: false, error: (e == null ? void 0 : e.message) || String(e) });
|
|
32937
|
-
} finally {
|
|
32938
|
-
this._debounceTimers.delete(projectKey);
|
|
32939
|
-
this._inflightRefreshes.delete(projectKey);
|
|
32940
|
-
}
|
|
32941
|
-
}, debounceMs);
|
|
32942
|
-
this._debounceTimers.set(projectKey, timer);
|
|
32943
|
-
});
|
|
32944
|
-
this._inflightRefreshes.set(projectKey, executionPromise);
|
|
32945
|
-
return executionPromise;
|
|
32946
|
-
}
|
|
32947
|
-
};
|
|
32948
|
-
|
|
32949
32363
|
// src/services/index.js
|
|
32950
32364
|
var createService = (ServiceClass, config) => new ServiceClass(config);
|
|
32951
32365
|
var createAuthService = (config) => createService(AuthService, config);
|
|
@@ -32960,7 +32374,6 @@ var createDnsService = (config) => createService(DnsService, config);
|
|
|
32960
32374
|
var createBranchService = (config) => createService(BranchService, config);
|
|
32961
32375
|
var createPullRequestService = (config) => createService(PullRequestService, config);
|
|
32962
32376
|
var createAdminService = (config) => createService(AdminService, config);
|
|
32963
|
-
var createScreenshotService = (config) => createService(ScreenshotService, config);
|
|
32964
32377
|
|
|
32965
32378
|
// src/utils/services.js
|
|
32966
32379
|
var SERVICE_METHODS = {
|
|
@@ -33188,20 +32601,7 @@ var SERVICE_METHODS = {
|
|
|
33188
32601
|
promoteToAdmin: "admin",
|
|
33189
32602
|
demoteFromAdmin: "admin",
|
|
33190
32603
|
// Utility methods
|
|
33191
|
-
getHealthStatus: "core"
|
|
33192
|
-
// Screenshot methods
|
|
33193
|
-
createScreenshotProject: "screenshot",
|
|
33194
|
-
getProjectScreenshots: "screenshot",
|
|
33195
|
-
reprocessProjectScreenshots: "screenshot",
|
|
33196
|
-
recreateProjectScreenshots: "screenshot",
|
|
33197
|
-
deleteProjectScreenshots: "screenshot",
|
|
33198
|
-
getThumbnailCandidate: "screenshot",
|
|
33199
|
-
updateProjectThumbnail: "screenshot",
|
|
33200
|
-
getPageScreenshot: "screenshot",
|
|
33201
|
-
getComponentScreenshot: "screenshot",
|
|
33202
|
-
getScreenshotByKey: "screenshot",
|
|
33203
|
-
getQueueStatistics: "screenshot",
|
|
33204
|
-
refreshThumbnail: "screenshot"
|
|
32604
|
+
getHealthStatus: "core"
|
|
33205
32605
|
};
|
|
33206
32606
|
|
|
33207
32607
|
// src/index.js
|
|
@@ -33210,7 +32610,6 @@ var SDK = class {
|
|
|
33210
32610
|
this._services = /* @__PURE__ */ new Map();
|
|
33211
32611
|
this._context = {};
|
|
33212
32612
|
this._options = this._validateOptions(options);
|
|
33213
|
-
this.rootBus = rootBus;
|
|
33214
32613
|
this._createServiceProxies();
|
|
33215
32614
|
}
|
|
33216
32615
|
// Initialize SDK with context
|
|
@@ -33304,13 +32703,6 @@ var SDK = class {
|
|
|
33304
32703
|
context: this._context,
|
|
33305
32704
|
options: this._options
|
|
33306
32705
|
})
|
|
33307
|
-
),
|
|
33308
|
-
this._initService(
|
|
33309
|
-
"screenshot",
|
|
33310
|
-
createScreenshotService({
|
|
33311
|
-
context: this._context,
|
|
33312
|
-
options: this._options
|
|
33313
|
-
})
|
|
33314
32706
|
)
|
|
33315
32707
|
]);
|
|
33316
32708
|
return this;
|
|
@@ -33348,10 +32740,9 @@ var SDK = class {
|
|
|
33348
32740
|
}
|
|
33349
32741
|
// Update context
|
|
33350
32742
|
updateContext(newContext) {
|
|
33351
|
-
const { authToken, ...sanitized } = newContext || {};
|
|
33352
32743
|
this._context = {
|
|
33353
32744
|
...this._context,
|
|
33354
|
-
...
|
|
32745
|
+
...newContext
|
|
33355
32746
|
};
|
|
33356
32747
|
for (const service of this._services.values()) {
|
|
33357
32748
|
service.updateContext(this._context);
|
|
@@ -33360,7 +32751,9 @@ var SDK = class {
|
|
|
33360
32751
|
// Check if SDK is ready
|
|
33361
32752
|
isReady() {
|
|
33362
32753
|
const sdkServices = Array.from(this._services.values());
|
|
33363
|
-
return sdkServices.length > 0 && sdkServices.every(
|
|
32754
|
+
return sdkServices.length > 0 && sdkServices.every(
|
|
32755
|
+
(service) => service.isReady()
|
|
32756
|
+
);
|
|
33364
32757
|
}
|
|
33365
32758
|
// Get SDK status
|
|
33366
32759
|
getStatus() {
|