@symbo.ls/sdk 3.2.3 → 3.2.7
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/README.md +141 -0
- package/dist/cjs/config/environment.js +94 -10
- package/dist/cjs/index.js +152 -12
- package/dist/cjs/services/AdminService.js +351 -0
- package/dist/cjs/services/AuthService.js +738 -305
- package/dist/cjs/services/BaseService.js +158 -6
- package/dist/cjs/services/BranchService.js +484 -0
- package/dist/cjs/services/CollabService.js +439 -116
- package/dist/cjs/services/DnsService.js +340 -0
- package/dist/cjs/services/FeatureFlagService.js +175 -0
- package/dist/cjs/services/FileService.js +201 -0
- package/dist/cjs/services/IntegrationService.js +538 -0
- package/dist/cjs/services/MetricsService.js +62 -0
- package/dist/cjs/services/PaymentService.js +271 -0
- package/dist/cjs/services/PlanService.js +426 -0
- package/dist/cjs/services/ProjectService.js +1207 -0
- package/dist/cjs/services/PullRequestService.js +503 -0
- package/dist/cjs/services/ScreenshotService.js +304 -0
- package/dist/cjs/services/SubscriptionService.js +396 -0
- package/dist/cjs/services/TrackingService.js +661 -0
- package/dist/cjs/services/WaitlistService.js +148 -0
- package/dist/cjs/services/index.js +60 -4
- package/dist/cjs/state/RootStateManager.js +2 -23
- package/dist/cjs/state/rootEventBus.js +9 -0
- package/dist/cjs/utils/CollabClient.js +78 -12
- package/dist/cjs/utils/TokenManager.js +16 -3
- package/dist/cjs/utils/changePreprocessor.js +199 -0
- package/dist/cjs/utils/jsonDiff.js +46 -4
- package/dist/cjs/utils/ordering.js +309 -0
- package/dist/cjs/utils/services.js +285 -128
- package/dist/cjs/utils/validation.js +0 -3
- package/dist/esm/config/environment.js +94 -10
- package/dist/esm/index.js +47862 -18248
- package/dist/esm/services/AdminService.js +1132 -0
- package/dist/esm/services/AuthService.js +1493 -386
- package/dist/esm/services/BaseService.js +757 -6
- package/dist/esm/services/BranchService.js +1265 -0
- package/dist/esm/services/CollabService.js +24956 -16089
- package/dist/esm/services/DnsService.js +1121 -0
- package/dist/esm/services/FeatureFlagService.js +956 -0
- package/dist/esm/services/FileService.js +982 -0
- package/dist/esm/services/IntegrationService.js +1319 -0
- package/dist/esm/services/MetricsService.js +843 -0
- package/dist/esm/services/PaymentService.js +1052 -0
- package/dist/esm/services/PlanService.js +1207 -0
- package/dist/esm/services/ProjectService.js +2526 -0
- package/dist/esm/services/PullRequestService.js +1284 -0
- package/dist/esm/services/ScreenshotService.js +1085 -0
- package/dist/esm/services/SubscriptionService.js +1177 -0
- package/dist/esm/services/TrackingService.js +18454 -0
- package/dist/esm/services/WaitlistService.js +929 -0
- package/dist/esm/services/index.js +47373 -18027
- package/dist/esm/state/RootStateManager.js +11 -23
- package/dist/esm/state/rootEventBus.js +9 -0
- package/dist/esm/utils/CollabClient.js +17526 -16120
- package/dist/esm/utils/TokenManager.js +16 -3
- package/dist/esm/utils/changePreprocessor.js +542 -0
- package/dist/esm/utils/jsonDiff.js +958 -43
- package/dist/esm/utils/ordering.js +291 -0
- package/dist/esm/utils/services.js +285 -128
- package/dist/esm/utils/validation.js +116 -50
- package/dist/node/config/environment.js +94 -10
- package/dist/node/index.js +183 -16
- package/dist/node/services/AdminService.js +332 -0
- package/dist/node/services/AuthService.js +742 -310
- package/dist/node/services/BaseService.js +148 -6
- package/dist/node/services/BranchService.js +465 -0
- package/dist/node/services/CollabService.js +439 -116
- package/dist/node/services/DnsService.js +321 -0
- package/dist/node/services/FeatureFlagService.js +156 -0
- package/dist/node/services/FileService.js +182 -0
- package/dist/node/services/IntegrationService.js +519 -0
- package/dist/node/services/MetricsService.js +43 -0
- package/dist/node/services/PaymentService.js +252 -0
- package/dist/node/services/PlanService.js +407 -0
- package/dist/node/services/ProjectService.js +1188 -0
- package/dist/node/services/PullRequestService.js +484 -0
- package/dist/node/services/ScreenshotService.js +285 -0
- package/dist/node/services/SubscriptionService.js +377 -0
- package/dist/node/services/TrackingService.js +632 -0
- package/dist/node/services/WaitlistService.js +129 -0
- package/dist/node/services/index.js +60 -4
- package/dist/node/state/RootStateManager.js +2 -23
- package/dist/node/state/rootEventBus.js +9 -0
- package/dist/node/utils/CollabClient.js +77 -11
- package/dist/node/utils/TokenManager.js +16 -3
- package/dist/node/utils/changePreprocessor.js +180 -0
- package/dist/node/utils/jsonDiff.js +46 -4
- package/dist/node/utils/ordering.js +290 -0
- package/dist/node/utils/services.js +285 -128
- package/dist/node/utils/validation.js +0 -3
- package/package.json +30 -18
- package/src/config/environment.js +95 -10
- package/src/index.js +190 -23
- package/src/services/AdminService.js +374 -0
- package/src/services/AuthService.js +874 -328
- package/src/services/BaseService.js +166 -6
- package/src/services/BranchService.js +536 -0
- package/src/services/CollabService.js +557 -148
- package/src/services/DnsService.js +366 -0
- package/src/services/FeatureFlagService.js +174 -0
- package/src/services/FileService.js +213 -0
- package/src/services/IntegrationService.js +548 -0
- package/src/services/MetricsService.js +40 -0
- package/src/services/PaymentService.js +287 -0
- package/src/services/PlanService.js +468 -0
- package/src/services/ProjectService.js +1366 -0
- package/src/services/PullRequestService.js +537 -0
- package/src/services/ScreenshotService.js +258 -0
- package/src/services/SubscriptionService.js +425 -0
- package/src/services/TrackingService.js +853 -0
- package/src/services/WaitlistService.js +130 -0
- package/src/services/index.js +79 -5
- package/src/services/tests/BranchService/createBranch.test.js +153 -0
- package/src/services/tests/BranchService/deleteBranch.test.js +173 -0
- package/src/services/tests/BranchService/getBranchChanges.test.js +146 -0
- package/src/services/tests/BranchService/listBranches.test.js +87 -0
- package/src/services/tests/BranchService/mergeBranch.test.js +210 -0
- package/src/services/tests/BranchService/publishVersion.test.js +183 -0
- package/src/services/tests/BranchService/renameBranch.test.js +240 -0
- package/src/services/tests/BranchService/resetBranch.test.js +152 -0
- package/src/services/tests/FeatureFlagService/adminFeatureFlags.test.js +67 -0
- package/src/services/tests/FeatureFlagService/getFeatureFlags.test.js +75 -0
- package/src/services/tests/FileService/createFileFormData.test.js +74 -0
- package/src/services/tests/FileService/getFileUrl.test.js +69 -0
- package/src/services/tests/FileService/updateProjectIcon.test.js +109 -0
- package/src/services/tests/FileService/uploadDocument.test.js +36 -0
- package/src/services/tests/FileService/uploadFile.test.js +78 -0
- package/src/services/tests/FileService/uploadFileWithValidation.test.js +114 -0
- package/src/services/tests/FileService/uploadImage.test.js +36 -0
- package/src/services/tests/FileService/uploadMultipleFiles.test.js +111 -0
- package/src/services/tests/FileService/validateFile.test.js +63 -0
- package/src/services/tests/PlanService/createPlan.test.js +104 -0
- package/src/services/tests/PlanService/createPlanWithValidation.test.js +523 -0
- package/src/services/tests/PlanService/deletePlan.test.js +92 -0
- package/src/services/tests/PlanService/getActivePlans.test.js +123 -0
- package/src/services/tests/PlanService/getAdminPlans.test.js +84 -0
- package/src/services/tests/PlanService/getPlan.test.js +50 -0
- package/src/services/tests/PlanService/getPlanByKey.test.js +109 -0
- package/src/services/tests/PlanService/getPlanWithValidation.test.js +85 -0
- package/src/services/tests/PlanService/getPlans.test.js +53 -0
- package/src/services/tests/PlanService/getPlansByPriceRange.test.js +109 -0
- package/src/services/tests/PlanService/getPlansWithValidation.test.js +48 -0
- package/src/services/tests/PlanService/initializePlans.test.js +75 -0
- package/src/services/tests/PlanService/updatePlan.test.js +111 -0
- package/src/services/tests/PlanService/updatePlanWithValidation.test.js +556 -0
- package/src/state/RootStateManager.js +37 -32
- package/src/state/rootEventBus.js +19 -0
- package/src/utils/CollabClient.js +99 -12
- package/src/utils/TokenManager.js +20 -3
- package/src/utils/changePreprocessor.js +239 -0
- package/src/utils/jsonDiff.js +40 -5
- package/src/utils/ordering.js +271 -0
- package/src/utils/services.js +306 -139
- package/src/utils/validation.js +0 -3
- package/dist/cjs/services/AIService.js +0 -155
- package/dist/cjs/services/BasedService.js +0 -1185
- package/dist/cjs/services/CoreService.js +0 -2295
- package/dist/cjs/services/SocketService.js +0 -309
- package/dist/cjs/services/SymstoryService.js +0 -571
- package/dist/cjs/utils/basedQuerys.js +0 -181
- package/dist/cjs/utils/symstoryClient.js +0 -259
- package/dist/esm/services/AIService.js +0 -185
- package/dist/esm/services/BasedService.js +0 -5262
- package/dist/esm/services/CoreService.js +0 -2827
- package/dist/esm/services/SocketService.js +0 -456
- package/dist/esm/services/SymstoryService.js +0 -7025
- package/dist/esm/utils/basedQuerys.js +0 -163
- package/dist/esm/utils/symstoryClient.js +0 -354
- package/dist/node/services/AIService.js +0 -136
- package/dist/node/services/BasedService.js +0 -1156
- package/dist/node/services/CoreService.js +0 -2266
- package/dist/node/services/SocketService.js +0 -280
- package/dist/node/services/SymstoryService.js +0 -542
- package/dist/node/utils/basedQuerys.js +0 -162
- package/dist/node/utils/symstoryClient.js +0 -230
- package/src/services/AIService.js +0 -150
- package/src/services/BasedService.js +0 -1302
- package/src/services/CoreService.js +0 -2548
- package/src/services/SocketService.js +0 -336
- package/src/services/SymstoryService.js +0 -649
- package/src/utils/basedQuerys.js +0 -164
- package/src/utils/symstoryClient.js +0 -252
|
@@ -10,7 +10,9 @@ const CONFIG = {
|
|
|
10
10
|
// Feature toggles that apply across all environments by default
|
|
11
11
|
features: {
|
|
12
12
|
newUserOnboarding: true,
|
|
13
|
-
betaFeatures: false
|
|
13
|
+
betaFeatures: false,
|
|
14
|
+
// Tracking is enabled by default unless overridden per environment
|
|
15
|
+
trackingEnabled: true
|
|
14
16
|
}
|
|
15
17
|
},
|
|
16
18
|
|
|
@@ -23,16 +25,36 @@ const CONFIG = {
|
|
|
23
25
|
basedEnv: 'development', // For based api
|
|
24
26
|
basedProject: 'platform-v2-sm', // For based api
|
|
25
27
|
basedOrg: 'symbols', // For based api
|
|
26
|
-
githubClientId: '
|
|
28
|
+
githubClientId: 'Ov23liAFrsR0StbAO6PO', // For github api
|
|
29
|
+
grafanaUrl: '', // For grafana tracing
|
|
30
|
+
grafanaAppName: 'Symbols Localhost',
|
|
27
31
|
// Environment-specific feature toggles (override common)
|
|
28
32
|
features: {
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
// Disable tracking by default on localhost/dev machines
|
|
34
|
+
trackingEnabled: false,
|
|
35
|
+
// Enable beta features in local dev
|
|
36
|
+
betaFeatures: true,
|
|
37
|
+
// Preserve common defaults explicitly for local
|
|
38
|
+
newUserOnboarding: true
|
|
39
|
+
},
|
|
40
|
+
typesenseCollectionName: 'docs',
|
|
41
|
+
typesenseApiKey: 'vZya3L2zpq8L6iI5WWMUZJZABvT63VDb',
|
|
42
|
+
typesenseHost: 'localhost',
|
|
43
|
+
typesensePort: '8108',
|
|
44
|
+
typesenseProtocol: 'http'
|
|
31
45
|
},
|
|
32
46
|
development: {
|
|
33
47
|
socketUrl: 'https://dev.api.symbols.app',
|
|
34
48
|
apiUrl: 'https://dev.api.symbols.app',
|
|
35
|
-
githubClientId: 'Ov23liHxyWFBxS8f1gnF'
|
|
49
|
+
githubClientId: 'Ov23liHxyWFBxS8f1gnF',
|
|
50
|
+
grafanaUrl:
|
|
51
|
+
'https://faro-collector-prod-us-east-0.grafana.net/collect/7a3ba473cee2025c68513667024316b8', // For grafana tracing
|
|
52
|
+
grafanaAppName: 'Symbols Dev',
|
|
53
|
+
typesenseCollectionName: 'docs',
|
|
54
|
+
typesenseApiKey: 'awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA',
|
|
55
|
+
typesenseHost: 'tl2qpnwxev4cjm36p-1.a1.typesense.net',
|
|
56
|
+
typesensePort: '443',
|
|
57
|
+
typesenseProtocol: 'https'
|
|
36
58
|
},
|
|
37
59
|
testing: {
|
|
38
60
|
socketUrl: 'https://test.api.symbols.app',
|
|
@@ -40,12 +62,26 @@ const CONFIG = {
|
|
|
40
62
|
basedEnv: 'testing',
|
|
41
63
|
basedProject: 'platform-v2-sm',
|
|
42
64
|
basedOrg: 'symbols',
|
|
43
|
-
githubClientId: 'Ov23liHxyWFBxS8f1gnF'
|
|
65
|
+
githubClientId: 'Ov23liHxyWFBxS8f1gnF',
|
|
66
|
+
grafanaUrl: '', // For grafana tracing
|
|
67
|
+
grafanaAppName: 'Symbols Test',
|
|
68
|
+
typesenseCollectionName: 'docs',
|
|
69
|
+
typesenseApiKey: 'awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA',
|
|
70
|
+
typesenseHost: 'tl2qpnwxev4cjm36p-1.a1.typesense.net',
|
|
71
|
+
typesensePort: '443',
|
|
72
|
+
typesenseProtocol: 'https'
|
|
44
73
|
},
|
|
45
74
|
upcoming: {
|
|
46
75
|
socketUrl: 'https://upcoming.api.symbols.app',
|
|
47
76
|
apiUrl: 'https://upcoming.api.symbols.app',
|
|
48
|
-
githubClientId: 'Ov23liWF7NvdZ056RV5J'
|
|
77
|
+
githubClientId: 'Ov23liWF7NvdZ056RV5J',
|
|
78
|
+
grafanaUrl: '', // For grafana tracing
|
|
79
|
+
grafanaAppName: 'Symbols Upcoming',
|
|
80
|
+
typesenseCollectionName: 'docs',
|
|
81
|
+
typesenseApiKey: 'awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA',
|
|
82
|
+
typesenseHost: 'tl2qpnwxev4cjm36p-1.a1.typesense.net',
|
|
83
|
+
typesensePort: '443',
|
|
84
|
+
typesenseProtocol: 'https'
|
|
49
85
|
},
|
|
50
86
|
staging: {
|
|
51
87
|
socketUrl: 'https://staging.api.symbols.app',
|
|
@@ -53,7 +89,30 @@ const CONFIG = {
|
|
|
53
89
|
basedEnv: 'staging',
|
|
54
90
|
basedProject: 'platform-v2-sm',
|
|
55
91
|
basedOrg: 'symbols',
|
|
56
|
-
githubClientId: 'Ov23ligwZDQVD0VfuWNa'
|
|
92
|
+
githubClientId: 'Ov23ligwZDQVD0VfuWNa',
|
|
93
|
+
grafanaUrl: '', // For grafana tracing
|
|
94
|
+
grafanaAppName: 'Symbols Staging',
|
|
95
|
+
typesenseCollectionName: 'docs',
|
|
96
|
+
typesenseApiKey: 'awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA',
|
|
97
|
+
typesenseHost: 'tl2qpnwxev4cjm36p-1.a1.typesense.net',
|
|
98
|
+
typesensePort: '443',
|
|
99
|
+
typesenseProtocol: 'https'
|
|
100
|
+
},
|
|
101
|
+
preview: {
|
|
102
|
+
socketUrl: 'https://api.symbols.app',
|
|
103
|
+
apiUrl: 'https://api.symbols.app',
|
|
104
|
+
basedEnv: 'production',
|
|
105
|
+
basedProject: 'platform-v2-sm',
|
|
106
|
+
basedOrg: 'symbols',
|
|
107
|
+
githubClientId: 'Ov23liFAlOEIXtX3dBtR',
|
|
108
|
+
grafanaUrl:
|
|
109
|
+
'https://faro-collector-prod-us-east-0.grafana.net/collect/5c1089f3c3eea4ec5658e05c3f53baae', // For grafana tracing
|
|
110
|
+
grafanaAppName: 'Symbols Preview',
|
|
111
|
+
typesenseCollectionName: 'docs',
|
|
112
|
+
typesenseApiKey: 'awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA',
|
|
113
|
+
typesenseHost: 'tl2qpnwxev4cjm36p-1.a1.typesense.net',
|
|
114
|
+
typesensePort: '443',
|
|
115
|
+
typesenseProtocol: 'https'
|
|
57
116
|
},
|
|
58
117
|
production: {
|
|
59
118
|
socketUrl: 'https://api.symbols.app',
|
|
@@ -61,7 +120,15 @@ const CONFIG = {
|
|
|
61
120
|
basedEnv: 'production',
|
|
62
121
|
basedProject: 'platform-v2-sm',
|
|
63
122
|
basedOrg: 'symbols',
|
|
64
|
-
githubClientId: 'Ov23liFAlOEIXtX3dBtR'
|
|
123
|
+
githubClientId: 'Ov23liFAlOEIXtX3dBtR',
|
|
124
|
+
grafanaUrl:
|
|
125
|
+
'https://faro-collector-prod-us-east-0.grafana.net/collect/5c1089f3c3eea4ec5658e05c3f53baae', // For grafana tracing
|
|
126
|
+
grafanaAppName: 'Symbols',
|
|
127
|
+
typesenseCollectionName: 'docs',
|
|
128
|
+
typesenseApiKey: 'awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA',
|
|
129
|
+
typesenseHost: 'tl2qpnwxev4cjm36p-1.a1.typesense.net',
|
|
130
|
+
typesensePort: '443',
|
|
131
|
+
typesenseProtocol: 'https'
|
|
65
132
|
}
|
|
66
133
|
}
|
|
67
134
|
|
|
@@ -87,6 +154,11 @@ export const getConfig = () => {
|
|
|
87
154
|
// Create the final config with environment variable overrides
|
|
88
155
|
const finalConfig = {
|
|
89
156
|
...envConfig,
|
|
157
|
+
// Deep-merge feature flags so env-specific overrides don't drop common defaults
|
|
158
|
+
features: {
|
|
159
|
+
...(CONFIG.common.features || {}),
|
|
160
|
+
...((CONFIG[env] && CONFIG[env].features) || {})
|
|
161
|
+
},
|
|
90
162
|
socketUrl: process.env.SYMBOLS_APP_SOCKET_URL || envConfig.socketUrl,
|
|
91
163
|
apiUrl: process.env.SYMBOLS_APP_API_URL || envConfig.apiUrl,
|
|
92
164
|
basedEnv: process.env.SYMBOLS_APP_BASED_ENV || envConfig.basedEnv,
|
|
@@ -95,9 +167,20 @@ export const getConfig = () => {
|
|
|
95
167
|
basedOrg: process.env.SYMBOLS_APP_BASED_ORG || envConfig.basedOrg,
|
|
96
168
|
githubClientId:
|
|
97
169
|
process.env.SYMBOLS_APP_GITHUB_CLIENT_ID || envConfig.githubClientId,
|
|
170
|
+
grafanaUrl: process.env.SYMBOLS_APP_GRAFANA_URL || envConfig.grafanaUrl,
|
|
171
|
+
typesenseCollectionName:
|
|
172
|
+
process.env.TYPESENSE_COLLECTION_NAME ||
|
|
173
|
+
envConfig.typesenseCollectionName,
|
|
174
|
+
typesenseApiKey:
|
|
175
|
+
process.env.TYPESENSE_API_KEY || envConfig.typesenseApiKey,
|
|
176
|
+
typesenseHost: process.env.TYPESENSE_HOST || envConfig.typesenseHost,
|
|
177
|
+
typesensePort: process.env.TYPESENSE_PORT || envConfig.typesensePort,
|
|
178
|
+
typesenseProtocol:
|
|
179
|
+
process.env.TYPESENSE_PROTOCOL || envConfig.typesenseProtocol,
|
|
98
180
|
isDevelopment: isDevelopment(env),
|
|
99
181
|
isTesting: env === 'testing',
|
|
100
182
|
isStaging: env === 'staging',
|
|
183
|
+
isPreview: env === 'preview',
|
|
101
184
|
isProduction: env === 'production'
|
|
102
185
|
// Store all environment variables for potential future use
|
|
103
186
|
}
|
|
@@ -119,11 +202,13 @@ export const getConfig = () => {
|
|
|
119
202
|
}
|
|
120
203
|
|
|
121
204
|
if (finalConfig.isDevelopment) {
|
|
122
|
-
console.
|
|
205
|
+
console.warn(
|
|
123
206
|
'environment in SDK:',
|
|
124
207
|
env || process.env.NODE_ENV || process.env.NODE_ENV
|
|
125
208
|
)
|
|
126
209
|
console.log(finalConfig)
|
|
210
|
+
} else if (global.window) {
|
|
211
|
+
global.window.finalConfig = finalConfig
|
|
127
212
|
}
|
|
128
213
|
|
|
129
214
|
return finalConfig
|
package/src/index.js
CHANGED
|
@@ -1,11 +1,36 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createAuthService,
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
createCollabService,
|
|
4
|
+
createProjectService,
|
|
5
|
+
createPlanService,
|
|
6
|
+
createFileService,
|
|
7
|
+
createPaymentService,
|
|
8
|
+
createDnsService,
|
|
9
|
+
createBranchService,
|
|
10
|
+
createPullRequestService,
|
|
11
|
+
createAdminService,
|
|
12
|
+
createSubscriptionService,
|
|
13
|
+
createScreenshotService,
|
|
14
|
+
createTrackingService,
|
|
15
|
+
createWaitlistService,
|
|
16
|
+
createMetricsService,
|
|
17
|
+
createIntegrationService,
|
|
18
|
+
createFeatureFlagService
|
|
5
19
|
} from './services/index.js'
|
|
6
20
|
|
|
7
21
|
import { SERVICE_METHODS } from './utils/services.js'
|
|
8
22
|
import environment from './config/environment.js'
|
|
23
|
+
import { rootBus } from './state/rootEventBus.js'
|
|
24
|
+
|
|
25
|
+
const isBrowserEnvironment = () => typeof window !== 'undefined'
|
|
26
|
+
|
|
27
|
+
export const isLocalhost = () => {
|
|
28
|
+
if (!isBrowserEnvironment()) {
|
|
29
|
+
return false
|
|
30
|
+
}
|
|
31
|
+
const host = window.location && window.location.hostname
|
|
32
|
+
return host === 'localhost' || host === '127.0.0.1' || host === '::1' || host === '' || !host
|
|
33
|
+
}
|
|
9
34
|
|
|
10
35
|
export class SDK {
|
|
11
36
|
constructor (options = {}) {
|
|
@@ -13,6 +38,12 @@ export class SDK {
|
|
|
13
38
|
this._context = {}
|
|
14
39
|
this._options = this._validateOptions(options)
|
|
15
40
|
|
|
41
|
+
// Expose resolved environment config on SDK instance
|
|
42
|
+
this.environment = environment
|
|
43
|
+
|
|
44
|
+
// Expose root event bus on SDK instance
|
|
45
|
+
this.rootBus = rootBus
|
|
46
|
+
|
|
16
47
|
// Create proxy methods for direct service access
|
|
17
48
|
this._createServiceProxies()
|
|
18
49
|
}
|
|
@@ -35,15 +66,114 @@ export class SDK {
|
|
|
35
66
|
})
|
|
36
67
|
),
|
|
37
68
|
this._initService(
|
|
38
|
-
'
|
|
39
|
-
|
|
69
|
+
'collab',
|
|
70
|
+
createCollabService({
|
|
40
71
|
context: this._context,
|
|
41
72
|
options: this._options
|
|
42
73
|
})
|
|
43
74
|
),
|
|
75
|
+
// Initialize new modular services
|
|
44
76
|
this._initService(
|
|
45
|
-
'
|
|
46
|
-
|
|
77
|
+
'project',
|
|
78
|
+
createProjectService({
|
|
79
|
+
context: this._context,
|
|
80
|
+
options: this._options
|
|
81
|
+
})
|
|
82
|
+
),
|
|
83
|
+
this._initService(
|
|
84
|
+
'plan',
|
|
85
|
+
createPlanService({
|
|
86
|
+
context: this._context,
|
|
87
|
+
options: this._options
|
|
88
|
+
})
|
|
89
|
+
),
|
|
90
|
+
this._initService(
|
|
91
|
+
'subscription',
|
|
92
|
+
createSubscriptionService({
|
|
93
|
+
context: this._context,
|
|
94
|
+
options: this._options
|
|
95
|
+
})
|
|
96
|
+
),
|
|
97
|
+
this._initService(
|
|
98
|
+
'file',
|
|
99
|
+
createFileService({
|
|
100
|
+
context: this._context,
|
|
101
|
+
options: this._options
|
|
102
|
+
})
|
|
103
|
+
),
|
|
104
|
+
this._initService(
|
|
105
|
+
'payment',
|
|
106
|
+
createPaymentService({
|
|
107
|
+
context: this._context,
|
|
108
|
+
options: this._options
|
|
109
|
+
})
|
|
110
|
+
),
|
|
111
|
+
this._initService(
|
|
112
|
+
'dns',
|
|
113
|
+
createDnsService({
|
|
114
|
+
context: this._context,
|
|
115
|
+
options: this._options
|
|
116
|
+
})
|
|
117
|
+
),
|
|
118
|
+
this._initService(
|
|
119
|
+
'branch',
|
|
120
|
+
createBranchService({
|
|
121
|
+
context: this._context,
|
|
122
|
+
options: this._options
|
|
123
|
+
})
|
|
124
|
+
),
|
|
125
|
+
this._initService(
|
|
126
|
+
'pullRequest',
|
|
127
|
+
createPullRequestService({
|
|
128
|
+
context: this._context,
|
|
129
|
+
options: this._options
|
|
130
|
+
})
|
|
131
|
+
),
|
|
132
|
+
this._initService(
|
|
133
|
+
'admin',
|
|
134
|
+
createAdminService({
|
|
135
|
+
context: this._context,
|
|
136
|
+
options: this._options
|
|
137
|
+
})
|
|
138
|
+
),
|
|
139
|
+
this._initService(
|
|
140
|
+
'screenshot',
|
|
141
|
+
createScreenshotService({
|
|
142
|
+
context: this._context,
|
|
143
|
+
options: this._options
|
|
144
|
+
})
|
|
145
|
+
),
|
|
146
|
+
this._initService(
|
|
147
|
+
'tracking',
|
|
148
|
+
createTrackingService({
|
|
149
|
+
context: this._context,
|
|
150
|
+
options: this._options
|
|
151
|
+
})
|
|
152
|
+
),
|
|
153
|
+
this._initService(
|
|
154
|
+
'waitlist',
|
|
155
|
+
createWaitlistService({
|
|
156
|
+
context: this._context,
|
|
157
|
+
options: this._options
|
|
158
|
+
})
|
|
159
|
+
),
|
|
160
|
+
this._initService(
|
|
161
|
+
'metrics',
|
|
162
|
+
createMetricsService({
|
|
163
|
+
context: this._context,
|
|
164
|
+
options: this._options
|
|
165
|
+
})
|
|
166
|
+
),
|
|
167
|
+
this._initService(
|
|
168
|
+
'integration',
|
|
169
|
+
createIntegrationService({
|
|
170
|
+
context: this._context,
|
|
171
|
+
options: this._options
|
|
172
|
+
})
|
|
173
|
+
),
|
|
174
|
+
this._initService(
|
|
175
|
+
'featureFlag',
|
|
176
|
+
createFeatureFlagService({
|
|
47
177
|
context: this._context,
|
|
48
178
|
options: this._options
|
|
49
179
|
})
|
|
@@ -71,16 +201,36 @@ export class SDK {
|
|
|
71
201
|
}
|
|
72
202
|
|
|
73
203
|
_validateOptions (options) {
|
|
204
|
+
const onLocalhost = isLocalhost()
|
|
205
|
+
const hasGrafanaUrl = Boolean(environment.grafanaUrl)
|
|
74
206
|
const defaults = {
|
|
75
207
|
useNewServices: true, // Use new service implementations by default
|
|
76
208
|
apiUrl: environment.apiUrl,
|
|
77
209
|
socketUrl: environment.socketUrl,
|
|
78
210
|
timeout: 30000,
|
|
79
211
|
retryAttempts: 3,
|
|
80
|
-
debug: false
|
|
212
|
+
debug: false,
|
|
213
|
+
tracking: {
|
|
214
|
+
// Force-disabled on localhost or when no Grafana URL is configured
|
|
215
|
+
enabled: onLocalhost ? false : (hasGrafanaUrl ? environment.features.trackingEnabled : false)
|
|
216
|
+
}
|
|
81
217
|
}
|
|
82
218
|
|
|
83
|
-
|
|
219
|
+
const merged = {
|
|
220
|
+
...defaults,
|
|
221
|
+
...options,
|
|
222
|
+
tracking: {
|
|
223
|
+
...defaults.tracking,
|
|
224
|
+
...(options.tracking || {})
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Enforce disabled tracking on localhost or when no Grafana URL configured, even if overridden
|
|
229
|
+
if (onLocalhost || !hasGrafanaUrl) {
|
|
230
|
+
merged.tracking.enabled = false
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
return merged
|
|
84
234
|
}
|
|
85
235
|
|
|
86
236
|
// Get service instance
|
|
@@ -93,9 +243,12 @@ export class SDK {
|
|
|
93
243
|
|
|
94
244
|
// Update context
|
|
95
245
|
updateContext (newContext) {
|
|
246
|
+
// Do not persist authToken in SDK context; TokenManager is the source of truth
|
|
247
|
+
const { ...sanitized } = newContext || {}
|
|
248
|
+
|
|
96
249
|
this._context = {
|
|
97
250
|
...this._context,
|
|
98
|
-
...
|
|
251
|
+
...sanitized
|
|
99
252
|
}
|
|
100
253
|
|
|
101
254
|
// Update context for all services
|
|
@@ -107,8 +260,9 @@ export class SDK {
|
|
|
107
260
|
// Check if SDK is ready
|
|
108
261
|
isReady () {
|
|
109
262
|
const sdkServices = Array.from(this._services.values())
|
|
110
|
-
return
|
|
111
|
-
|
|
263
|
+
return (
|
|
264
|
+
sdkServices.length > 0 &&
|
|
265
|
+
sdkServices.every((service) => service.isReady())
|
|
112
266
|
)
|
|
113
267
|
}
|
|
114
268
|
|
|
@@ -147,26 +301,26 @@ export class SDK {
|
|
|
147
301
|
* Destroys all services and cleans up resources
|
|
148
302
|
* @returns {Promise<boolean>} Returns true when cleanup is complete
|
|
149
303
|
*/
|
|
150
|
-
async destroy() {
|
|
304
|
+
async destroy () {
|
|
151
305
|
try {
|
|
152
306
|
// Call destroy on all services
|
|
153
307
|
const destroyPromises = Array.from(this._services.entries())
|
|
154
308
|
.filter(([, service]) => typeof service.destroy === 'function')
|
|
155
309
|
.map(async ([name, service]) => {
|
|
156
|
-
await service.destroy()
|
|
157
|
-
console.log(`Service ${name} destroyed successfully`)
|
|
158
|
-
})
|
|
310
|
+
await service.destroy()
|
|
311
|
+
console.log(`Service ${name} destroyed successfully`)
|
|
312
|
+
})
|
|
159
313
|
|
|
160
|
-
await Promise.all(destroyPromises)
|
|
314
|
+
await Promise.all(destroyPromises)
|
|
161
315
|
|
|
162
316
|
// Clear services and reset state
|
|
163
|
-
this._services.clear()
|
|
164
|
-
this._context = {}
|
|
317
|
+
this._services.clear()
|
|
318
|
+
this._context = {}
|
|
165
319
|
|
|
166
|
-
return true
|
|
320
|
+
return true
|
|
167
321
|
} catch (error) {
|
|
168
|
-
console.error('Error during SDK destruction:', error)
|
|
169
|
-
throw error
|
|
322
|
+
console.error('Error during SDK destruction:', error)
|
|
323
|
+
throw error
|
|
170
324
|
}
|
|
171
325
|
}
|
|
172
326
|
}
|
|
@@ -176,8 +330,21 @@ export default SDK
|
|
|
176
330
|
// Export services for direct usage
|
|
177
331
|
export {
|
|
178
332
|
createAuthService,
|
|
179
|
-
|
|
180
|
-
|
|
333
|
+
createCollabService,
|
|
334
|
+
createProjectService,
|
|
335
|
+
createPlanService,
|
|
336
|
+
createFileService,
|
|
337
|
+
createPaymentService,
|
|
338
|
+
createDnsService,
|
|
339
|
+
createBranchService,
|
|
340
|
+
createPullRequestService,
|
|
341
|
+
createAdminService,
|
|
342
|
+
createSubscriptionService,
|
|
343
|
+
createTrackingService,
|
|
344
|
+
createWaitlistService,
|
|
345
|
+
createMetricsService,
|
|
346
|
+
createIntegrationService,
|
|
347
|
+
createFeatureFlagService
|
|
181
348
|
} from './services/index.js'
|
|
182
349
|
|
|
183
350
|
// Export environment configuration
|