@symbo.ls/sdk 2.32.2 → 2.32.4
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 +43 -8
- package/dist/cjs/index.js +12 -4
- package/dist/cjs/services/AdminService.js +4 -4
- package/dist/cjs/services/AuthService.js +36 -149
- package/dist/cjs/services/BaseService.js +5 -18
- package/dist/cjs/services/BranchService.js +10 -10
- package/dist/cjs/services/CollabService.js +94 -61
- 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 +45 -35
- package/dist/cjs/services/PullRequestService.js +7 -7
- package/dist/cjs/services/ScreenshotService.js +304 -0
- package/dist/cjs/services/SubscriptionService.js +14 -14
- package/dist/cjs/services/index.js +4 -0
- package/dist/cjs/utils/TokenManager.js +16 -5
- package/dist/cjs/utils/changePreprocessor.js +134 -0
- package/dist/cjs/utils/jsonDiff.js +46 -4
- package/dist/cjs/utils/ordering.js +274 -0
- package/dist/cjs/utils/services.js +14 -1
- package/dist/esm/config/environment.js +43 -8
- package/dist/esm/index.js +1099 -417
- package/dist/esm/services/AdminService.js +68 -35
- package/dist/esm/services/AuthService.js +100 -168
- package/dist/esm/services/BaseService.js +64 -31
- package/dist/esm/services/BranchService.js +74 -41
- package/dist/esm/services/CollabService.js +570 -97
- package/dist/esm/services/CoreService.js +83 -50
- package/dist/esm/services/DnsService.js +68 -35
- package/dist/esm/services/FileService.js +66 -33
- package/dist/esm/services/PaymentService.js +66 -33
- package/dist/esm/services/PlanService.js +76 -43
- package/dist/esm/services/ProjectService.js +547 -66
- package/dist/esm/services/PullRequestService.js +71 -38
- package/dist/esm/services/ScreenshotService.js +992 -0
- package/dist/esm/services/SubscriptionService.js +78 -45
- package/dist/esm/services/index.js +1076 -412
- package/dist/esm/utils/CollabClient.js +89 -12
- package/dist/esm/utils/TokenManager.js +16 -5
- package/dist/esm/utils/changePreprocessor.js +442 -0
- package/dist/esm/utils/jsonDiff.js +46 -4
- package/dist/esm/utils/ordering.js +256 -0
- package/dist/esm/utils/services.js +14 -1
- package/dist/node/config/environment.js +43 -8
- package/dist/node/index.js +14 -5
- package/dist/node/services/AdminService.js +4 -4
- package/dist/node/services/AuthService.js +36 -139
- package/dist/node/services/BaseService.js +5 -18
- package/dist/node/services/BranchService.js +10 -10
- package/dist/node/services/CollabService.js +95 -62
- 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 +45 -35
- package/dist/node/services/PullRequestService.js +7 -7
- package/dist/node/services/ScreenshotService.js +285 -0
- package/dist/node/services/SubscriptionService.js +14 -14
- package/dist/node/services/index.js +4 -0
- package/dist/node/utils/TokenManager.js +16 -5
- package/dist/node/utils/changePreprocessor.js +115 -0
- package/dist/node/utils/jsonDiff.js +46 -4
- package/dist/node/utils/ordering.js +255 -0
- package/dist/node/utils/services.js +14 -1
- package/package.json +7 -6
- package/src/config/environment.js +48 -9
- package/src/index.js +38 -22
- package/src/services/AdminService.js +4 -4
- package/src/services/AuthService.js +42 -175
- package/src/services/BaseService.js +7 -24
- package/src/services/BranchService.js +10 -10
- package/src/services/CollabService.js +115 -74
- 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 +50 -35
- package/src/services/PullRequestService.js +7 -7
- package/src/services/ScreenshotService.js +258 -0
- package/src/services/SubscriptionService.js +14 -14
- package/src/services/index.js +6 -1
- package/src/utils/TokenManager.js +19 -5
- package/src/utils/changePreprocessor.js +139 -0
- package/src/utils/jsonDiff.js +40 -5
- package/src/utils/ordering.js +244 -0
- package/src/utils/services.js +15 -1
|
@@ -28,18 +28,28 @@ var CONFIG = {
|
|
|
28
28
|
// For based api
|
|
29
29
|
basedOrg: "symbols",
|
|
30
30
|
// For based api
|
|
31
|
-
githubClientId: "
|
|
31
|
+
githubClientId: "Ov23liAFrsR0StbAO6PO",
|
|
32
32
|
// For github api
|
|
33
33
|
// Environment-specific feature toggles (override common)
|
|
34
34
|
features: {
|
|
35
35
|
betaFeatures: true
|
|
36
36
|
// Enable beta features in local dev
|
|
37
|
-
}
|
|
37
|
+
},
|
|
38
|
+
typesenseCollectionName: "docs",
|
|
39
|
+
typesenseApiKey: "vZya3L2zpq8L6iI5WWMUZJZABvT63VDb",
|
|
40
|
+
typesenseHost: "localhost",
|
|
41
|
+
typesensePort: "8108",
|
|
42
|
+
typesenseProtocol: "http"
|
|
38
43
|
},
|
|
39
44
|
development: {
|
|
40
45
|
socketUrl: "https://dev.api.symbols.app",
|
|
41
46
|
apiUrl: "https://dev.api.symbols.app",
|
|
42
|
-
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
47
|
+
githubClientId: "Ov23liHxyWFBxS8f1gnF",
|
|
48
|
+
typesenseCollectionName: "docs",
|
|
49
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
50
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
51
|
+
typesensePort: "443",
|
|
52
|
+
typesenseProtocol: "https"
|
|
43
53
|
},
|
|
44
54
|
testing: {
|
|
45
55
|
socketUrl: "https://test.api.symbols.app",
|
|
@@ -47,12 +57,22 @@ var CONFIG = {
|
|
|
47
57
|
basedEnv: "testing",
|
|
48
58
|
basedProject: "platform-v2-sm",
|
|
49
59
|
basedOrg: "symbols",
|
|
50
|
-
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
60
|
+
githubClientId: "Ov23liHxyWFBxS8f1gnF",
|
|
61
|
+
typesenseCollectionName: "docs",
|
|
62
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
63
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
64
|
+
typesensePort: "443",
|
|
65
|
+
typesenseProtocol: "https"
|
|
51
66
|
},
|
|
52
67
|
upcoming: {
|
|
53
68
|
socketUrl: "https://upcoming.api.symbols.app",
|
|
54
69
|
apiUrl: "https://upcoming.api.symbols.app",
|
|
55
|
-
githubClientId: "Ov23liWF7NvdZ056RV5J"
|
|
70
|
+
githubClientId: "Ov23liWF7NvdZ056RV5J",
|
|
71
|
+
typesenseCollectionName: "docs",
|
|
72
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
73
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
74
|
+
typesensePort: "443",
|
|
75
|
+
typesenseProtocol: "https"
|
|
56
76
|
},
|
|
57
77
|
staging: {
|
|
58
78
|
socketUrl: "https://staging.api.symbols.app",
|
|
@@ -60,7 +80,12 @@ var CONFIG = {
|
|
|
60
80
|
basedEnv: "staging",
|
|
61
81
|
basedProject: "platform-v2-sm",
|
|
62
82
|
basedOrg: "symbols",
|
|
63
|
-
githubClientId: "Ov23ligwZDQVD0VfuWNa"
|
|
83
|
+
githubClientId: "Ov23ligwZDQVD0VfuWNa",
|
|
84
|
+
typesenseCollectionName: "docs",
|
|
85
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
86
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
87
|
+
typesensePort: "443",
|
|
88
|
+
typesenseProtocol: "https"
|
|
64
89
|
},
|
|
65
90
|
production: {
|
|
66
91
|
socketUrl: "https://api.symbols.app",
|
|
@@ -68,7 +93,12 @@ var CONFIG = {
|
|
|
68
93
|
basedEnv: "production",
|
|
69
94
|
basedProject: "platform-v2-sm",
|
|
70
95
|
basedOrg: "symbols",
|
|
71
|
-
githubClientId: "Ov23liFAlOEIXtX3dBtR"
|
|
96
|
+
githubClientId: "Ov23liFAlOEIXtX3dBtR",
|
|
97
|
+
typesenseCollectionName: "docs",
|
|
98
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
99
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
100
|
+
typesensePort: "443",
|
|
101
|
+
typesenseProtocol: "https"
|
|
72
102
|
}
|
|
73
103
|
};
|
|
74
104
|
var getEnvironment = () => {
|
|
@@ -90,6 +120,11 @@ var getConfig = () => {
|
|
|
90
120
|
basedProject: process.env.SYMBOLS_APP_BASED_PROJECT || envConfig.basedProject,
|
|
91
121
|
basedOrg: process.env.SYMBOLS_APP_BASED_ORG || envConfig.basedOrg,
|
|
92
122
|
githubClientId: process.env.SYMBOLS_APP_GITHUB_CLIENT_ID || envConfig.githubClientId,
|
|
123
|
+
typesenseCollectionName: process.env.TYPESENSE_COLLECTION_NAME || envConfig.typesenseCollectionName,
|
|
124
|
+
typesenseApiKey: process.env.TYPESENSE_API_KEY || envConfig.typesenseApiKey,
|
|
125
|
+
typesenseHost: process.env.TYPESENSE_HOST || envConfig.typesenseHost,
|
|
126
|
+
typesensePort: process.env.TYPESENSE_PORT || envConfig.typesensePort,
|
|
127
|
+
typesenseProtocol: process.env.TYPESENSE_PROTOCOL || envConfig.typesenseProtocol,
|
|
93
128
|
isDevelopment: isDevelopment(env),
|
|
94
129
|
isTesting: env === "testing",
|
|
95
130
|
isStaging: env === "staging",
|
|
@@ -109,7 +144,7 @@ var getConfig = () => {
|
|
|
109
144
|
);
|
|
110
145
|
}
|
|
111
146
|
if (finalConfig.isDevelopment) {
|
|
112
|
-
console.
|
|
147
|
+
console.warn(
|
|
113
148
|
"environment in SDK:",
|
|
114
149
|
env || process.env.NODE_ENV || process.env.NODE_ENV
|
|
115
150
|
);
|
|
@@ -148,7 +183,7 @@ var TokenManager = class {
|
|
|
148
183
|
});
|
|
149
184
|
this.config = {
|
|
150
185
|
storagePrefix: "symbols_",
|
|
151
|
-
storageType: typeof window === "undefined" || process.env.NODE_ENV === "test" ? "memory" : "localStorage",
|
|
186
|
+
storageType: typeof window === "undefined" || process.env.NODE_ENV === "test" || process.env.NODE_ENV === "testing" ? "memory" : "localStorage",
|
|
152
187
|
// 'localStorage' | 'sessionStorage' | 'memory'
|
|
153
188
|
refreshBuffer: 60 * 1e3,
|
|
154
189
|
// Refresh 1 minute before expiry
|
|
@@ -188,15 +223,26 @@ var TokenManager = class {
|
|
|
188
223
|
if (typeof window === "undefined") {
|
|
189
224
|
return this._memoryStorage;
|
|
190
225
|
}
|
|
191
|
-
const
|
|
192
|
-
|
|
226
|
+
const safeGetStorage = (provider) => {
|
|
227
|
+
try {
|
|
228
|
+
const storage = provider();
|
|
229
|
+
const testKey = `${this.config.storagePrefix}__tm_test__`;
|
|
230
|
+
storage.setItem(testKey, "1");
|
|
231
|
+
storage.removeItem(testKey);
|
|
232
|
+
return storage;
|
|
233
|
+
} catch {
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
const localStorageInstance = safeGetStorage(() => window.localStorage);
|
|
238
|
+
const sessionStorageInstance = safeGetStorage(() => window.sessionStorage);
|
|
193
239
|
switch (this.config.storageType) {
|
|
194
240
|
case "sessionStorage":
|
|
195
|
-
return
|
|
241
|
+
return sessionStorageInstance || this._memoryStorage;
|
|
196
242
|
case "memory":
|
|
197
243
|
return this._memoryStorage;
|
|
198
244
|
default:
|
|
199
|
-
return
|
|
245
|
+
return localStorageInstance || this._memoryStorage;
|
|
200
246
|
}
|
|
201
247
|
}
|
|
202
248
|
/**
|
|
@@ -535,20 +581,10 @@ var BaseService = class {
|
|
|
535
581
|
}
|
|
536
582
|
this._tokenManager = getTokenManager({
|
|
537
583
|
apiUrl: this._apiUrl,
|
|
538
|
-
onTokenRefresh: (tokens) => {
|
|
539
|
-
this.updateContext({ authToken: tokens.accessToken });
|
|
540
|
-
},
|
|
541
|
-
onTokenExpired: () => {
|
|
542
|
-
this.updateContext({ authToken: null });
|
|
543
|
-
},
|
|
544
584
|
onTokenError: (error) => {
|
|
545
585
|
console.error("Token management error:", error);
|
|
546
586
|
}
|
|
547
587
|
});
|
|
548
|
-
const { authToken } = this._context;
|
|
549
|
-
if (authToken && !this._tokenManager.hasTokens()) {
|
|
550
|
-
this._tokenManager.setTokens({ access_token: authToken });
|
|
551
|
-
}
|
|
552
588
|
this._setReady();
|
|
553
589
|
} catch (error) {
|
|
554
590
|
this._setError(error);
|
|
@@ -557,7 +593,9 @@ var BaseService = class {
|
|
|
557
593
|
}
|
|
558
594
|
// Update context
|
|
559
595
|
updateContext(context) {
|
|
560
|
-
|
|
596
|
+
if (context && typeof context === "object") {
|
|
597
|
+
Object.assign(this._context, context);
|
|
598
|
+
}
|
|
561
599
|
}
|
|
562
600
|
// Get service status
|
|
563
601
|
getStatus() {
|
|
@@ -612,11 +650,6 @@ var BaseService = class {
|
|
|
612
650
|
error
|
|
613
651
|
);
|
|
614
652
|
}
|
|
615
|
-
} else if (this._requiresInit(options.methodName)) {
|
|
616
|
-
const { authToken } = this._context;
|
|
617
|
-
if (authToken) {
|
|
618
|
-
defaultHeaders.Authorization = `Bearer ${authToken}`;
|
|
619
|
-
}
|
|
620
653
|
}
|
|
621
654
|
try {
|
|
622
655
|
const response = await fetch(url, {
|
|
@@ -634,11 +667,11 @@ var BaseService = class {
|
|
|
634
667
|
error = await response.json();
|
|
635
668
|
} catch {
|
|
636
669
|
}
|
|
637
|
-
throw new Error(error.message || error.error || "Request failed");
|
|
670
|
+
throw new Error(error.message || error.error || "Request failed", { cause: error });
|
|
638
671
|
}
|
|
639
672
|
return response.status === 204 ? null : response.json();
|
|
640
673
|
} catch (error) {
|
|
641
|
-
throw new Error(`Request failed: ${error.message}
|
|
674
|
+
throw new Error(`Request failed: ${error.message}`, { cause: error });
|
|
642
675
|
}
|
|
643
676
|
}
|
|
644
677
|
// Helper method to determine if a method requires initialization
|
|
@@ -28,18 +28,28 @@ var CONFIG = {
|
|
|
28
28
|
// For based api
|
|
29
29
|
basedOrg: "symbols",
|
|
30
30
|
// For based api
|
|
31
|
-
githubClientId: "
|
|
31
|
+
githubClientId: "Ov23liAFrsR0StbAO6PO",
|
|
32
32
|
// For github api
|
|
33
33
|
// Environment-specific feature toggles (override common)
|
|
34
34
|
features: {
|
|
35
35
|
betaFeatures: true
|
|
36
36
|
// Enable beta features in local dev
|
|
37
|
-
}
|
|
37
|
+
},
|
|
38
|
+
typesenseCollectionName: "docs",
|
|
39
|
+
typesenseApiKey: "vZya3L2zpq8L6iI5WWMUZJZABvT63VDb",
|
|
40
|
+
typesenseHost: "localhost",
|
|
41
|
+
typesensePort: "8108",
|
|
42
|
+
typesenseProtocol: "http"
|
|
38
43
|
},
|
|
39
44
|
development: {
|
|
40
45
|
socketUrl: "https://dev.api.symbols.app",
|
|
41
46
|
apiUrl: "https://dev.api.symbols.app",
|
|
42
|
-
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
47
|
+
githubClientId: "Ov23liHxyWFBxS8f1gnF",
|
|
48
|
+
typesenseCollectionName: "docs",
|
|
49
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
50
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
51
|
+
typesensePort: "443",
|
|
52
|
+
typesenseProtocol: "https"
|
|
43
53
|
},
|
|
44
54
|
testing: {
|
|
45
55
|
socketUrl: "https://test.api.symbols.app",
|
|
@@ -47,12 +57,22 @@ var CONFIG = {
|
|
|
47
57
|
basedEnv: "testing",
|
|
48
58
|
basedProject: "platform-v2-sm",
|
|
49
59
|
basedOrg: "symbols",
|
|
50
|
-
githubClientId: "Ov23liHxyWFBxS8f1gnF"
|
|
60
|
+
githubClientId: "Ov23liHxyWFBxS8f1gnF",
|
|
61
|
+
typesenseCollectionName: "docs",
|
|
62
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
63
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
64
|
+
typesensePort: "443",
|
|
65
|
+
typesenseProtocol: "https"
|
|
51
66
|
},
|
|
52
67
|
upcoming: {
|
|
53
68
|
socketUrl: "https://upcoming.api.symbols.app",
|
|
54
69
|
apiUrl: "https://upcoming.api.symbols.app",
|
|
55
|
-
githubClientId: "Ov23liWF7NvdZ056RV5J"
|
|
70
|
+
githubClientId: "Ov23liWF7NvdZ056RV5J",
|
|
71
|
+
typesenseCollectionName: "docs",
|
|
72
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
73
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
74
|
+
typesensePort: "443",
|
|
75
|
+
typesenseProtocol: "https"
|
|
56
76
|
},
|
|
57
77
|
staging: {
|
|
58
78
|
socketUrl: "https://staging.api.symbols.app",
|
|
@@ -60,7 +80,12 @@ var CONFIG = {
|
|
|
60
80
|
basedEnv: "staging",
|
|
61
81
|
basedProject: "platform-v2-sm",
|
|
62
82
|
basedOrg: "symbols",
|
|
63
|
-
githubClientId: "Ov23ligwZDQVD0VfuWNa"
|
|
83
|
+
githubClientId: "Ov23ligwZDQVD0VfuWNa",
|
|
84
|
+
typesenseCollectionName: "docs",
|
|
85
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
86
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
87
|
+
typesensePort: "443",
|
|
88
|
+
typesenseProtocol: "https"
|
|
64
89
|
},
|
|
65
90
|
production: {
|
|
66
91
|
socketUrl: "https://api.symbols.app",
|
|
@@ -68,7 +93,12 @@ var CONFIG = {
|
|
|
68
93
|
basedEnv: "production",
|
|
69
94
|
basedProject: "platform-v2-sm",
|
|
70
95
|
basedOrg: "symbols",
|
|
71
|
-
githubClientId: "Ov23liFAlOEIXtX3dBtR"
|
|
96
|
+
githubClientId: "Ov23liFAlOEIXtX3dBtR",
|
|
97
|
+
typesenseCollectionName: "docs",
|
|
98
|
+
typesenseApiKey: "awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA",
|
|
99
|
+
typesenseHost: "tl2qpnwxev4cjm36p-1.a1.typesense.net",
|
|
100
|
+
typesensePort: "443",
|
|
101
|
+
typesenseProtocol: "https"
|
|
72
102
|
}
|
|
73
103
|
};
|
|
74
104
|
var getEnvironment = () => {
|
|
@@ -90,6 +120,11 @@ var getConfig = () => {
|
|
|
90
120
|
basedProject: process.env.SYMBOLS_APP_BASED_PROJECT || envConfig.basedProject,
|
|
91
121
|
basedOrg: process.env.SYMBOLS_APP_BASED_ORG || envConfig.basedOrg,
|
|
92
122
|
githubClientId: process.env.SYMBOLS_APP_GITHUB_CLIENT_ID || envConfig.githubClientId,
|
|
123
|
+
typesenseCollectionName: process.env.TYPESENSE_COLLECTION_NAME || envConfig.typesenseCollectionName,
|
|
124
|
+
typesenseApiKey: process.env.TYPESENSE_API_KEY || envConfig.typesenseApiKey,
|
|
125
|
+
typesenseHost: process.env.TYPESENSE_HOST || envConfig.typesenseHost,
|
|
126
|
+
typesensePort: process.env.TYPESENSE_PORT || envConfig.typesensePort,
|
|
127
|
+
typesenseProtocol: process.env.TYPESENSE_PROTOCOL || envConfig.typesenseProtocol,
|
|
93
128
|
isDevelopment: isDevelopment(env),
|
|
94
129
|
isTesting: env === "testing",
|
|
95
130
|
isStaging: env === "staging",
|
|
@@ -109,7 +144,7 @@ var getConfig = () => {
|
|
|
109
144
|
);
|
|
110
145
|
}
|
|
111
146
|
if (finalConfig.isDevelopment) {
|
|
112
|
-
console.
|
|
147
|
+
console.warn(
|
|
113
148
|
"environment in SDK:",
|
|
114
149
|
env || process.env.NODE_ENV || process.env.NODE_ENV
|
|
115
150
|
);
|
|
@@ -148,7 +183,7 @@ var TokenManager = class {
|
|
|
148
183
|
});
|
|
149
184
|
this.config = {
|
|
150
185
|
storagePrefix: "symbols_",
|
|
151
|
-
storageType: typeof window === "undefined" || process.env.NODE_ENV === "test" ? "memory" : "localStorage",
|
|
186
|
+
storageType: typeof window === "undefined" || process.env.NODE_ENV === "test" || process.env.NODE_ENV === "testing" ? "memory" : "localStorage",
|
|
152
187
|
// 'localStorage' | 'sessionStorage' | 'memory'
|
|
153
188
|
refreshBuffer: 60 * 1e3,
|
|
154
189
|
// Refresh 1 minute before expiry
|
|
@@ -188,15 +223,26 @@ var TokenManager = class {
|
|
|
188
223
|
if (typeof window === "undefined") {
|
|
189
224
|
return this._memoryStorage;
|
|
190
225
|
}
|
|
191
|
-
const
|
|
192
|
-
|
|
226
|
+
const safeGetStorage = (provider) => {
|
|
227
|
+
try {
|
|
228
|
+
const storage = provider();
|
|
229
|
+
const testKey = `${this.config.storagePrefix}__tm_test__`;
|
|
230
|
+
storage.setItem(testKey, "1");
|
|
231
|
+
storage.removeItem(testKey);
|
|
232
|
+
return storage;
|
|
233
|
+
} catch {
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
const localStorageInstance = safeGetStorage(() => window.localStorage);
|
|
238
|
+
const sessionStorageInstance = safeGetStorage(() => window.sessionStorage);
|
|
193
239
|
switch (this.config.storageType) {
|
|
194
240
|
case "sessionStorage":
|
|
195
|
-
return
|
|
241
|
+
return sessionStorageInstance || this._memoryStorage;
|
|
196
242
|
case "memory":
|
|
197
243
|
return this._memoryStorage;
|
|
198
244
|
default:
|
|
199
|
-
return
|
|
245
|
+
return localStorageInstance || this._memoryStorage;
|
|
200
246
|
}
|
|
201
247
|
}
|
|
202
248
|
/**
|
|
@@ -535,20 +581,10 @@ var BaseService = class {
|
|
|
535
581
|
}
|
|
536
582
|
this._tokenManager = getTokenManager({
|
|
537
583
|
apiUrl: this._apiUrl,
|
|
538
|
-
onTokenRefresh: (tokens) => {
|
|
539
|
-
this.updateContext({ authToken: tokens.accessToken });
|
|
540
|
-
},
|
|
541
|
-
onTokenExpired: () => {
|
|
542
|
-
this.updateContext({ authToken: null });
|
|
543
|
-
},
|
|
544
584
|
onTokenError: (error) => {
|
|
545
585
|
console.error("Token management error:", error);
|
|
546
586
|
}
|
|
547
587
|
});
|
|
548
|
-
const { authToken } = this._context;
|
|
549
|
-
if (authToken && !this._tokenManager.hasTokens()) {
|
|
550
|
-
this._tokenManager.setTokens({ access_token: authToken });
|
|
551
|
-
}
|
|
552
588
|
this._setReady();
|
|
553
589
|
} catch (error) {
|
|
554
590
|
this._setError(error);
|
|
@@ -557,7 +593,9 @@ var BaseService = class {
|
|
|
557
593
|
}
|
|
558
594
|
// Update context
|
|
559
595
|
updateContext(context) {
|
|
560
|
-
|
|
596
|
+
if (context && typeof context === "object") {
|
|
597
|
+
Object.assign(this._context, context);
|
|
598
|
+
}
|
|
561
599
|
}
|
|
562
600
|
// Get service status
|
|
563
601
|
getStatus() {
|
|
@@ -612,11 +650,6 @@ var BaseService = class {
|
|
|
612
650
|
error
|
|
613
651
|
);
|
|
614
652
|
}
|
|
615
|
-
} else if (this._requiresInit(options.methodName)) {
|
|
616
|
-
const { authToken } = this._context;
|
|
617
|
-
if (authToken) {
|
|
618
|
-
defaultHeaders.Authorization = `Bearer ${authToken}`;
|
|
619
|
-
}
|
|
620
653
|
}
|
|
621
654
|
try {
|
|
622
655
|
const response = await fetch(url, {
|
|
@@ -634,11 +667,11 @@ var BaseService = class {
|
|
|
634
667
|
error = await response.json();
|
|
635
668
|
} catch {
|
|
636
669
|
}
|
|
637
|
-
throw new Error(error.message || error.error || "Request failed");
|
|
670
|
+
throw new Error(error.message || error.error || "Request failed", { cause: error });
|
|
638
671
|
}
|
|
639
672
|
return response.status === 204 ? null : response.json();
|
|
640
673
|
} catch (error) {
|
|
641
|
-
throw new Error(`Request failed: ${error.message}
|
|
674
|
+
throw new Error(`Request failed: ${error.message}`, { cause: error });
|
|
642
675
|
}
|
|
643
676
|
}
|
|
644
677
|
// Helper method to determine if a method requires initialization
|
|
@@ -692,7 +725,7 @@ var BranchService = class extends BaseService {
|
|
|
692
725
|
}
|
|
693
726
|
throw new Error(response.message);
|
|
694
727
|
} catch (error) {
|
|
695
|
-
throw new Error(`Failed to list branches: ${error.message}
|
|
728
|
+
throw new Error(`Failed to list branches: ${error.message}`, { cause: error });
|
|
696
729
|
}
|
|
697
730
|
}
|
|
698
731
|
/**
|
|
@@ -718,7 +751,7 @@ var BranchService = class extends BaseService {
|
|
|
718
751
|
}
|
|
719
752
|
throw new Error(response.message);
|
|
720
753
|
} catch (error) {
|
|
721
|
-
throw new Error(`Failed to create branch: ${error.message}
|
|
754
|
+
throw new Error(`Failed to create branch: ${error.message}`, { cause: error });
|
|
722
755
|
}
|
|
723
756
|
}
|
|
724
757
|
/**
|
|
@@ -748,7 +781,7 @@ var BranchService = class extends BaseService {
|
|
|
748
781
|
}
|
|
749
782
|
throw new Error(response.message);
|
|
750
783
|
} catch (error) {
|
|
751
|
-
throw new Error(`Failed to delete branch: ${error.message}
|
|
784
|
+
throw new Error(`Failed to delete branch: ${error.message}`, { cause: error });
|
|
752
785
|
}
|
|
753
786
|
}
|
|
754
787
|
/**
|
|
@@ -784,7 +817,7 @@ var BranchService = class extends BaseService {
|
|
|
784
817
|
}
|
|
785
818
|
throw new Error(response.message);
|
|
786
819
|
} catch (error) {
|
|
787
|
-
throw new Error(`Failed to rename branch: ${error.message}
|
|
820
|
+
throw new Error(`Failed to rename branch: ${error.message}`, { cause: error });
|
|
788
821
|
}
|
|
789
822
|
}
|
|
790
823
|
/**
|
|
@@ -823,7 +856,7 @@ var BranchService = class extends BaseService {
|
|
|
823
856
|
}
|
|
824
857
|
throw new Error(response.message);
|
|
825
858
|
} catch (error) {
|
|
826
|
-
throw new Error(`Failed to get branch changes: ${error.message}
|
|
859
|
+
throw new Error(`Failed to get branch changes: ${error.message}`, { cause: error });
|
|
827
860
|
}
|
|
828
861
|
}
|
|
829
862
|
/**
|
|
@@ -870,7 +903,7 @@ var BranchService = class extends BaseService {
|
|
|
870
903
|
if (error.message.includes("conflicts") || error.message.includes("409")) {
|
|
871
904
|
throw new Error(`Merge conflicts detected: ${error.message}`);
|
|
872
905
|
}
|
|
873
|
-
throw new Error(`Failed to merge branch: ${error.message}
|
|
906
|
+
throw new Error(`Failed to merge branch: ${error.message}`, { cause: error });
|
|
874
907
|
}
|
|
875
908
|
}
|
|
876
909
|
/**
|
|
@@ -899,7 +932,7 @@ var BranchService = class extends BaseService {
|
|
|
899
932
|
}
|
|
900
933
|
throw new Error(response.message);
|
|
901
934
|
} catch (error) {
|
|
902
|
-
throw new Error(`Failed to reset branch: ${error.message}
|
|
935
|
+
throw new Error(`Failed to reset branch: ${error.message}`, { cause: error });
|
|
903
936
|
}
|
|
904
937
|
}
|
|
905
938
|
/**
|
|
@@ -925,7 +958,7 @@ var BranchService = class extends BaseService {
|
|
|
925
958
|
}
|
|
926
959
|
throw new Error(response.message);
|
|
927
960
|
} catch (error) {
|
|
928
|
-
throw new Error(`Failed to publish version: ${error.message}
|
|
961
|
+
throw new Error(`Failed to publish version: ${error.message}`, { cause: error });
|
|
929
962
|
}
|
|
930
963
|
}
|
|
931
964
|
// ==================== BRANCH HELPER METHODS ====================
|
|
@@ -957,7 +990,7 @@ var BranchService = class extends BaseService {
|
|
|
957
990
|
const branches = await this.listBranches(projectId);
|
|
958
991
|
return ((_a = branches == null ? void 0 : branches.data) == null ? void 0 : _a.includes(branchName)) || false;
|
|
959
992
|
} catch (error) {
|
|
960
|
-
throw new Error(`Failed to check if branch exists: ${error.message}
|
|
993
|
+
throw new Error(`Failed to check if branch exists: ${error.message}`, { cause: error });
|
|
961
994
|
}
|
|
962
995
|
}
|
|
963
996
|
/**
|
|
@@ -1027,7 +1060,7 @@ var BranchService = class extends BaseService {
|
|
|
1027
1060
|
canRename: exists && branchName !== "main"
|
|
1028
1061
|
};
|
|
1029
1062
|
} catch (error) {
|
|
1030
|
-
throw new Error(`Failed to get branch status: ${error.message}
|
|
1063
|
+
throw new Error(`Failed to get branch status: ${error.message}`, { cause: error });
|
|
1031
1064
|
}
|
|
1032
1065
|
}
|
|
1033
1066
|
/**
|