@symbo.ls/sdk 3.1.2 → 3.2.6
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 +143 -2
- package/dist/cjs/config/environment.js +98 -30
- package/dist/cjs/index.js +144 -24
- 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 +743 -0
- 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 +64 -16
- package/dist/cjs/state/RootStateManager.js +65 -0
- package/dist/cjs/state/rootEventBus.js +74 -0
- package/dist/cjs/utils/CollabClient.js +223 -0
- package/dist/cjs/utils/TokenManager.js +78 -30
- package/dist/cjs/utils/changePreprocessor.js +199 -0
- package/dist/cjs/utils/jsonDiff.js +145 -0
- package/dist/cjs/utils/ordering.js +309 -0
- package/dist/cjs/utils/services.js +301 -103
- package/dist/cjs/utils/validation.js +0 -3
- package/dist/esm/config/environment.js +98 -30
- package/dist/esm/index.js +49505 -8718
- 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 +26895 -0
- 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 +49062 -8569
- package/dist/esm/state/RootStateManager.js +90 -0
- package/dist/esm/state/rootEventBus.js +56 -0
- package/dist/esm/utils/CollabClient.js +18889 -0
- package/dist/esm/utils/TokenManager.js +78 -30
- package/dist/esm/utils/changePreprocessor.js +542 -0
- package/dist/esm/utils/jsonDiff.js +7011 -0
- package/dist/esm/utils/ordering.js +291 -0
- package/dist/esm/utils/services.js +301 -103
- package/dist/esm/utils/validation.js +116 -50
- package/dist/node/config/environment.js +98 -30
- package/dist/node/index.js +175 -32
- 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 +724 -0
- 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 +64 -16
- package/dist/node/state/RootStateManager.js +36 -0
- package/dist/node/state/rootEventBus.js +55 -0
- package/dist/node/utils/CollabClient.js +194 -0
- package/dist/node/utils/TokenManager.js +78 -30
- package/dist/node/utils/changePreprocessor.js +180 -0
- package/dist/node/utils/jsonDiff.js +116 -0
- package/dist/node/utils/ordering.js +290 -0
- package/dist/node/utils/services.js +301 -103
- package/dist/node/utils/validation.js +0 -3
- package/package.json +39 -21
- package/src/config/environment.js +99 -28
- package/src/index.js +181 -36
- 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 +900 -0
- 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 +80 -13
- 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 +76 -0
- package/src/state/rootEventBus.js +67 -0
- package/src/utils/CollabClient.js +248 -0
- package/src/utils/TokenManager.js +88 -33
- package/src/utils/changePreprocessor.js +239 -0
- package/src/utils/jsonDiff.js +144 -0
- package/src/utils/ordering.js +271 -0
- package/src/utils/services.js +326 -107
- 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 -1751
- package/dist/cjs/services/SocketIOService.js +0 -307
- package/dist/cjs/services/SocketService.js +0 -161
- 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 -5278
- package/dist/esm/services/CoreService.js +0 -2264
- package/dist/esm/services/SocketIOService.js +0 -470
- package/dist/esm/services/SocketService.js +0 -191
- package/dist/esm/services/SymstoryService.js +0 -7041
- package/dist/esm/utils/basedQuerys.js +0 -163
- package/dist/esm/utils/symstoryClient.js +0 -370
- package/dist/node/services/AIService.js +0 -136
- package/dist/node/services/BasedService.js +0 -1156
- package/dist/node/services/CoreService.js +0 -1722
- package/dist/node/services/SocketIOService.js +0 -278
- package/dist/node/services/SocketService.js +0 -142
- 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 -1301
- package/src/services/CoreService.js +0 -1943
- package/src/services/SocketIOService.js +0 -334
- package/src/services/SocketService.js +0 -168
- 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
|
|
|
@@ -18,58 +20,115 @@ const CONFIG = {
|
|
|
18
20
|
|
|
19
21
|
local: {
|
|
20
22
|
// local
|
|
21
|
-
baseUrl: 'http://localhost:8080', // For symstory api
|
|
22
23
|
socketUrl: 'http://localhost:8080', // For socket api
|
|
23
|
-
routerUrl: 'http://localhost:8080', // For router api
|
|
24
24
|
apiUrl: 'http://localhost:8080', // For server api
|
|
25
25
|
basedEnv: 'development', // For based api
|
|
26
26
|
basedProject: 'platform-v2-sm', // For based api
|
|
27
27
|
basedOrg: 'symbols', // For based api
|
|
28
|
-
githubClientId: '
|
|
28
|
+
githubClientId: 'Ov23liAFrsR0StbAO6PO', // For github api
|
|
29
|
+
grafanaUrl: '', // For grafana tracing
|
|
30
|
+
grafanaAppName: 'Symbols Localhost',
|
|
29
31
|
// Environment-specific feature toggles (override common)
|
|
30
32
|
features: {
|
|
31
|
-
|
|
32
|
-
|
|
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'
|
|
33
45
|
},
|
|
34
46
|
development: {
|
|
35
|
-
baseUrl: 'https://dev.api.symbols.app',
|
|
36
47
|
socketUrl: 'https://dev.api.symbols.app',
|
|
37
|
-
routerUrl: 'https://dev.api.symbols.app',
|
|
38
48
|
apiUrl: 'https://dev.api.symbols.app',
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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'
|
|
43
58
|
},
|
|
44
59
|
testing: {
|
|
45
|
-
baseUrl: 'https://test.api.symbols.app',
|
|
46
60
|
socketUrl: 'https://test.api.symbols.app',
|
|
47
|
-
routerUrl: 'https://test.api.symbols.app',
|
|
48
61
|
apiUrl: 'https://test.api.symbols.app',
|
|
49
62
|
basedEnv: 'testing',
|
|
50
63
|
basedProject: 'platform-v2-sm',
|
|
51
64
|
basedOrg: 'symbols',
|
|
52
|
-
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'
|
|
73
|
+
},
|
|
74
|
+
upcoming: {
|
|
75
|
+
socketUrl: 'https://upcoming.api.symbols.app',
|
|
76
|
+
apiUrl: 'https://upcoming.api.symbols.app',
|
|
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'
|
|
53
85
|
},
|
|
54
86
|
staging: {
|
|
55
|
-
baseUrl: 'https://staging.api.symbols.app',
|
|
56
87
|
socketUrl: 'https://staging.api.symbols.app',
|
|
57
|
-
routerUrl: 'https://staging.api.symbols.app',
|
|
58
88
|
apiUrl: 'https://staging.api.symbols.app',
|
|
59
89
|
basedEnv: 'staging',
|
|
60
90
|
basedProject: 'platform-v2-sm',
|
|
61
91
|
basedOrg: 'symbols',
|
|
62
|
-
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'
|
|
63
116
|
},
|
|
64
117
|
production: {
|
|
65
|
-
baseUrl: 'https://api.symbols.app',
|
|
66
118
|
socketUrl: 'https://api.symbols.app',
|
|
67
|
-
routerUrl: 'https://api.symbols.app',
|
|
68
119
|
apiUrl: 'https://api.symbols.app',
|
|
69
120
|
basedEnv: 'production',
|
|
70
121
|
basedProject: 'platform-v2-sm',
|
|
71
122
|
basedOrg: 'symbols',
|
|
72
|
-
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'
|
|
73
132
|
}
|
|
74
133
|
}
|
|
75
134
|
|
|
@@ -95,9 +154,12 @@ export const getConfig = () => {
|
|
|
95
154
|
// Create the final config with environment variable overrides
|
|
96
155
|
const finalConfig = {
|
|
97
156
|
...envConfig,
|
|
98
|
-
|
|
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
|
+
},
|
|
99
162
|
socketUrl: process.env.SYMBOLS_APP_SOCKET_URL || envConfig.socketUrl,
|
|
100
|
-
routerUrl: process.env.SYMBOLS_APP_ROUTER_URL || envConfig.routerUrl,
|
|
101
163
|
apiUrl: process.env.SYMBOLS_APP_API_URL || envConfig.apiUrl,
|
|
102
164
|
basedEnv: process.env.SYMBOLS_APP_BASED_ENV || envConfig.basedEnv,
|
|
103
165
|
basedProject:
|
|
@@ -105,21 +167,28 @@ export const getConfig = () => {
|
|
|
105
167
|
basedOrg: process.env.SYMBOLS_APP_BASED_ORG || envConfig.basedOrg,
|
|
106
168
|
githubClientId:
|
|
107
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,
|
|
108
180
|
isDevelopment: isDevelopment(env),
|
|
109
181
|
isTesting: env === 'testing',
|
|
110
182
|
isStaging: env === 'staging',
|
|
183
|
+
isPreview: env === 'preview',
|
|
111
184
|
isProduction: env === 'production'
|
|
112
185
|
// Store all environment variables for potential future use
|
|
113
186
|
}
|
|
114
187
|
|
|
115
188
|
// Validate critical configuration values
|
|
116
189
|
const requiredFields = [
|
|
117
|
-
'baseUrl',
|
|
118
190
|
'socketUrl',
|
|
119
191
|
'apiUrl',
|
|
120
|
-
'basedEnv',
|
|
121
|
-
'basedProject',
|
|
122
|
-
'basedOrg',
|
|
123
192
|
'githubClientId',
|
|
124
193
|
'googleClientId'
|
|
125
194
|
]
|
|
@@ -133,11 +202,13 @@ export const getConfig = () => {
|
|
|
133
202
|
}
|
|
134
203
|
|
|
135
204
|
if (finalConfig.isDevelopment) {
|
|
136
|
-
console.
|
|
205
|
+
console.warn(
|
|
137
206
|
'environment in SDK:',
|
|
138
207
|
env || process.env.NODE_ENV || process.env.NODE_ENV
|
|
139
208
|
)
|
|
140
209
|
console.log(finalConfig)
|
|
210
|
+
} else if (global.window) {
|
|
211
|
+
global.window.finalConfig = finalConfig
|
|
141
212
|
}
|
|
142
213
|
|
|
143
214
|
return finalConfig
|
package/src/index.js
CHANGED
|
@@ -1,14 +1,36 @@
|
|
|
1
1
|
import {
|
|
2
|
-
createSymstoryService,
|
|
3
2
|
createAuthService,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
|
7
19
|
} from './services/index.js'
|
|
8
20
|
|
|
9
21
|
import { SERVICE_METHODS } from './utils/services.js'
|
|
10
|
-
import { SymstoryService } from './services/SymstoryService.js'
|
|
11
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
|
+
}
|
|
12
34
|
|
|
13
35
|
export class SDK {
|
|
14
36
|
constructor (options = {}) {
|
|
@@ -16,6 +38,12 @@ export class SDK {
|
|
|
16
38
|
this._context = {}
|
|
17
39
|
this._options = this._validateOptions(options)
|
|
18
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
|
+
|
|
19
47
|
// Create proxy methods for direct service access
|
|
20
48
|
this._createServiceProxies()
|
|
21
49
|
}
|
|
@@ -38,29 +66,114 @@ export class SDK {
|
|
|
38
66
|
})
|
|
39
67
|
),
|
|
40
68
|
this._initService(
|
|
41
|
-
'
|
|
42
|
-
|
|
69
|
+
'collab',
|
|
70
|
+
createCollabService({
|
|
71
|
+
context: this._context,
|
|
72
|
+
options: this._options
|
|
73
|
+
})
|
|
74
|
+
),
|
|
75
|
+
// Initialize new modular services
|
|
76
|
+
this._initService(
|
|
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({
|
|
43
100
|
context: this._context,
|
|
44
101
|
options: this._options
|
|
45
102
|
})
|
|
46
103
|
),
|
|
47
104
|
this._initService(
|
|
48
|
-
'
|
|
49
|
-
|
|
105
|
+
'payment',
|
|
106
|
+
createPaymentService({
|
|
50
107
|
context: this._context,
|
|
51
108
|
options: this._options
|
|
52
109
|
})
|
|
53
110
|
),
|
|
54
111
|
this._initService(
|
|
55
|
-
'
|
|
56
|
-
|
|
112
|
+
'dns',
|
|
113
|
+
createDnsService({
|
|
57
114
|
context: this._context,
|
|
58
115
|
options: this._options
|
|
59
116
|
})
|
|
60
117
|
),
|
|
61
118
|
this._initService(
|
|
62
|
-
'
|
|
63
|
-
|
|
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({
|
|
64
177
|
context: this._context,
|
|
65
178
|
options: this._options
|
|
66
179
|
})
|
|
@@ -88,16 +201,36 @@ export class SDK {
|
|
|
88
201
|
}
|
|
89
202
|
|
|
90
203
|
_validateOptions (options) {
|
|
204
|
+
const onLocalhost = isLocalhost()
|
|
205
|
+
const hasGrafanaUrl = Boolean(environment.grafanaUrl)
|
|
91
206
|
const defaults = {
|
|
92
207
|
useNewServices: true, // Use new service implementations by default
|
|
93
|
-
|
|
208
|
+
apiUrl: environment.apiUrl,
|
|
94
209
|
socketUrl: environment.socketUrl,
|
|
95
210
|
timeout: 30000,
|
|
96
211
|
retryAttempts: 3,
|
|
97
|
-
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
|
+
}
|
|
98
217
|
}
|
|
99
218
|
|
|
100
|
-
|
|
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
|
|
101
234
|
}
|
|
102
235
|
|
|
103
236
|
// Get service instance
|
|
@@ -110,25 +243,26 @@ export class SDK {
|
|
|
110
243
|
|
|
111
244
|
// Update context
|
|
112
245
|
updateContext (newContext) {
|
|
246
|
+
// Do not persist authToken in SDK context; TokenManager is the source of truth
|
|
247
|
+
const { ...sanitized } = newContext || {}
|
|
248
|
+
|
|
113
249
|
this._context = {
|
|
114
250
|
...this._context,
|
|
115
|
-
...
|
|
251
|
+
...sanitized
|
|
116
252
|
}
|
|
117
253
|
|
|
118
254
|
// Update context for all services
|
|
119
255
|
for (const service of this._services.values()) {
|
|
120
256
|
service.updateContext(this._context)
|
|
121
|
-
if (service instanceof SymstoryService) {
|
|
122
|
-
service.init()
|
|
123
|
-
}
|
|
124
257
|
}
|
|
125
258
|
}
|
|
126
259
|
|
|
127
260
|
// Check if SDK is ready
|
|
128
261
|
isReady () {
|
|
129
262
|
const sdkServices = Array.from(this._services.values())
|
|
130
|
-
return
|
|
131
|
-
|
|
263
|
+
return (
|
|
264
|
+
sdkServices.length > 0 &&
|
|
265
|
+
sdkServices.every((service) => service.isReady())
|
|
132
266
|
)
|
|
133
267
|
}
|
|
134
268
|
|
|
@@ -167,26 +301,26 @@ export class SDK {
|
|
|
167
301
|
* Destroys all services and cleans up resources
|
|
168
302
|
* @returns {Promise<boolean>} Returns true when cleanup is complete
|
|
169
303
|
*/
|
|
170
|
-
async destroy() {
|
|
304
|
+
async destroy () {
|
|
171
305
|
try {
|
|
172
306
|
// Call destroy on all services
|
|
173
307
|
const destroyPromises = Array.from(this._services.entries())
|
|
174
308
|
.filter(([, service]) => typeof service.destroy === 'function')
|
|
175
309
|
.map(async ([name, service]) => {
|
|
176
|
-
await service.destroy()
|
|
177
|
-
console.log(`Service ${name} destroyed successfully`)
|
|
178
|
-
})
|
|
310
|
+
await service.destroy()
|
|
311
|
+
console.log(`Service ${name} destroyed successfully`)
|
|
312
|
+
})
|
|
179
313
|
|
|
180
|
-
await Promise.all(destroyPromises)
|
|
314
|
+
await Promise.all(destroyPromises)
|
|
181
315
|
|
|
182
316
|
// Clear services and reset state
|
|
183
|
-
this._services.clear()
|
|
184
|
-
this._context = {}
|
|
317
|
+
this._services.clear()
|
|
318
|
+
this._context = {}
|
|
185
319
|
|
|
186
|
-
return true
|
|
320
|
+
return true
|
|
187
321
|
} catch (error) {
|
|
188
|
-
console.error('Error during SDK destruction:', error)
|
|
189
|
-
throw error
|
|
322
|
+
console.error('Error during SDK destruction:', error)
|
|
323
|
+
throw error
|
|
190
324
|
}
|
|
191
325
|
}
|
|
192
326
|
}
|
|
@@ -195,11 +329,22 @@ export default SDK
|
|
|
195
329
|
|
|
196
330
|
// Export services for direct usage
|
|
197
331
|
export {
|
|
198
|
-
createSymstoryService,
|
|
199
332
|
createAuthService,
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
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
|
|
203
348
|
} from './services/index.js'
|
|
204
349
|
|
|
205
350
|
// Export environment configuration
|