@symbo.ls/sdk 2.32.2 → 2.32.5
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
|
@@ -23,16 +23,26 @@ const CONFIG = {
|
|
|
23
23
|
basedEnv: 'development', // For based api
|
|
24
24
|
basedProject: 'platform-v2-sm', // For based api
|
|
25
25
|
basedOrg: 'symbols', // For based api
|
|
26
|
-
githubClientId: '
|
|
26
|
+
githubClientId: 'Ov23liAFrsR0StbAO6PO', // For github api
|
|
27
27
|
// Environment-specific feature toggles (override common)
|
|
28
28
|
features: {
|
|
29
29
|
betaFeatures: true // Enable beta features in local dev
|
|
30
|
-
}
|
|
30
|
+
},
|
|
31
|
+
typesenseCollectionName: 'docs',
|
|
32
|
+
typesenseApiKey: 'vZya3L2zpq8L6iI5WWMUZJZABvT63VDb',
|
|
33
|
+
typesenseHost: 'localhost',
|
|
34
|
+
typesensePort: '8108',
|
|
35
|
+
typesenseProtocol: 'http'
|
|
31
36
|
},
|
|
32
37
|
development: {
|
|
33
38
|
socketUrl: 'https://dev.api.symbols.app',
|
|
34
39
|
apiUrl: 'https://dev.api.symbols.app',
|
|
35
|
-
githubClientId: 'Ov23liHxyWFBxS8f1gnF'
|
|
40
|
+
githubClientId: 'Ov23liHxyWFBxS8f1gnF',
|
|
41
|
+
typesenseCollectionName: 'docs',
|
|
42
|
+
typesenseApiKey: 'awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA',
|
|
43
|
+
typesenseHost: 'tl2qpnwxev4cjm36p-1.a1.typesense.net',
|
|
44
|
+
typesensePort: '443',
|
|
45
|
+
typesenseProtocol: 'https'
|
|
36
46
|
},
|
|
37
47
|
testing: {
|
|
38
48
|
socketUrl: 'https://test.api.symbols.app',
|
|
@@ -40,12 +50,22 @@ const CONFIG = {
|
|
|
40
50
|
basedEnv: 'testing',
|
|
41
51
|
basedProject: 'platform-v2-sm',
|
|
42
52
|
basedOrg: 'symbols',
|
|
43
|
-
githubClientId: 'Ov23liHxyWFBxS8f1gnF'
|
|
53
|
+
githubClientId: 'Ov23liHxyWFBxS8f1gnF',
|
|
54
|
+
typesenseCollectionName: 'docs',
|
|
55
|
+
typesenseApiKey: 'awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA',
|
|
56
|
+
typesenseHost: 'tl2qpnwxev4cjm36p-1.a1.typesense.net',
|
|
57
|
+
typesensePort: '443',
|
|
58
|
+
typesenseProtocol: 'https'
|
|
44
59
|
},
|
|
45
60
|
upcoming: {
|
|
46
61
|
socketUrl: 'https://upcoming.api.symbols.app',
|
|
47
62
|
apiUrl: 'https://upcoming.api.symbols.app',
|
|
48
|
-
githubClientId: 'Ov23liWF7NvdZ056RV5J'
|
|
63
|
+
githubClientId: 'Ov23liWF7NvdZ056RV5J',
|
|
64
|
+
typesenseCollectionName: 'docs',
|
|
65
|
+
typesenseApiKey: 'awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA',
|
|
66
|
+
typesenseHost: 'tl2qpnwxev4cjm36p-1.a1.typesense.net',
|
|
67
|
+
typesensePort: '443',
|
|
68
|
+
typesenseProtocol: 'https'
|
|
49
69
|
},
|
|
50
70
|
staging: {
|
|
51
71
|
socketUrl: 'https://staging.api.symbols.app',
|
|
@@ -53,7 +73,12 @@ const CONFIG = {
|
|
|
53
73
|
basedEnv: 'staging',
|
|
54
74
|
basedProject: 'platform-v2-sm',
|
|
55
75
|
basedOrg: 'symbols',
|
|
56
|
-
githubClientId: 'Ov23ligwZDQVD0VfuWNa'
|
|
76
|
+
githubClientId: 'Ov23ligwZDQVD0VfuWNa',
|
|
77
|
+
typesenseCollectionName: 'docs',
|
|
78
|
+
typesenseApiKey: 'awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA',
|
|
79
|
+
typesenseHost: 'tl2qpnwxev4cjm36p-1.a1.typesense.net',
|
|
80
|
+
typesensePort: '443',
|
|
81
|
+
typesenseProtocol: 'https'
|
|
57
82
|
},
|
|
58
83
|
production: {
|
|
59
84
|
socketUrl: 'https://api.symbols.app',
|
|
@@ -61,7 +86,12 @@ const CONFIG = {
|
|
|
61
86
|
basedEnv: 'production',
|
|
62
87
|
basedProject: 'platform-v2-sm',
|
|
63
88
|
basedOrg: 'symbols',
|
|
64
|
-
githubClientId: 'Ov23liFAlOEIXtX3dBtR'
|
|
89
|
+
githubClientId: 'Ov23liFAlOEIXtX3dBtR',
|
|
90
|
+
typesenseCollectionName: 'docs',
|
|
91
|
+
typesenseApiKey: 'awmcVpbWqZi9IUgmvslp1C5LKDU8tMjA',
|
|
92
|
+
typesenseHost: 'tl2qpnwxev4cjm36p-1.a1.typesense.net',
|
|
93
|
+
typesensePort: '443',
|
|
94
|
+
typesenseProtocol: 'https'
|
|
65
95
|
}
|
|
66
96
|
}
|
|
67
97
|
|
|
@@ -95,6 +125,15 @@ export const getConfig = () => {
|
|
|
95
125
|
basedOrg: process.env.SYMBOLS_APP_BASED_ORG || envConfig.basedOrg,
|
|
96
126
|
githubClientId:
|
|
97
127
|
process.env.SYMBOLS_APP_GITHUB_CLIENT_ID || envConfig.githubClientId,
|
|
128
|
+
typesenseCollectionName:
|
|
129
|
+
process.env.TYPESENSE_COLLECTION_NAME ||
|
|
130
|
+
envConfig.typesenseCollectionName,
|
|
131
|
+
typesenseApiKey:
|
|
132
|
+
process.env.TYPESENSE_API_KEY || envConfig.typesenseApiKey,
|
|
133
|
+
typesenseHost: process.env.TYPESENSE_HOST || envConfig.typesenseHost,
|
|
134
|
+
typesensePort: process.env.TYPESENSE_PORT || envConfig.typesensePort,
|
|
135
|
+
typesenseProtocol:
|
|
136
|
+
process.env.TYPESENSE_PROTOCOL || envConfig.typesenseProtocol,
|
|
98
137
|
isDevelopment: isDevelopment(env),
|
|
99
138
|
isTesting: env === 'testing',
|
|
100
139
|
isStaging: env === 'staging',
|
|
@@ -110,7 +149,7 @@ export const getConfig = () => {
|
|
|
110
149
|
'googleClientId'
|
|
111
150
|
]
|
|
112
151
|
|
|
113
|
-
const missingFields = requiredFields.filter(field => !finalConfig[field])
|
|
152
|
+
const missingFields = requiredFields.filter((field) => !finalConfig[field])
|
|
114
153
|
|
|
115
154
|
if (missingFields.length > 0) {
|
|
116
155
|
console.error(
|
|
@@ -119,7 +158,7 @@ export const getConfig = () => {
|
|
|
119
158
|
}
|
|
120
159
|
|
|
121
160
|
if (finalConfig.isDevelopment) {
|
|
122
|
-
console.
|
|
161
|
+
console.warn(
|
|
123
162
|
'environment in SDK:',
|
|
124
163
|
env || process.env.NODE_ENV || process.env.NODE_ENV
|
|
125
164
|
)
|
package/src/index.js
CHANGED
|
@@ -10,24 +10,29 @@ import {
|
|
|
10
10
|
createBranchService,
|
|
11
11
|
createPullRequestService,
|
|
12
12
|
createAdminService,
|
|
13
|
-
createSubscriptionService
|
|
13
|
+
createSubscriptionService,
|
|
14
|
+
createScreenshotService
|
|
14
15
|
} from './services/index.js'
|
|
15
16
|
|
|
16
17
|
import { SERVICE_METHODS } from './utils/services.js'
|
|
17
18
|
import environment from './config/environment.js'
|
|
19
|
+
import { rootBus } from './state/rootEventBus.js'
|
|
18
20
|
|
|
19
21
|
export class SDK {
|
|
20
|
-
constructor
|
|
22
|
+
constructor(options = {}) {
|
|
21
23
|
this._services = new Map()
|
|
22
24
|
this._context = {}
|
|
23
25
|
this._options = this._validateOptions(options)
|
|
24
26
|
|
|
27
|
+
// Expose root event bus on SDK instance
|
|
28
|
+
this.rootBus = rootBus
|
|
29
|
+
|
|
25
30
|
// Create proxy methods for direct service access
|
|
26
31
|
this._createServiceProxies()
|
|
27
32
|
}
|
|
28
33
|
|
|
29
34
|
// Initialize SDK with context
|
|
30
|
-
async initialize
|
|
35
|
+
async initialize(context = {}) {
|
|
31
36
|
this._context = {
|
|
32
37
|
...this._context,
|
|
33
38
|
...context
|
|
@@ -120,6 +125,13 @@ export class SDK {
|
|
|
120
125
|
context: this._context,
|
|
121
126
|
options: this._options
|
|
122
127
|
})
|
|
128
|
+
),
|
|
129
|
+
this._initService(
|
|
130
|
+
'screenshot',
|
|
131
|
+
createScreenshotService({
|
|
132
|
+
context: this._context,
|
|
133
|
+
options: this._options
|
|
134
|
+
})
|
|
123
135
|
)
|
|
124
136
|
])
|
|
125
137
|
|
|
@@ -127,7 +139,7 @@ export class SDK {
|
|
|
127
139
|
}
|
|
128
140
|
|
|
129
141
|
// Private helper to initialize a service
|
|
130
|
-
async _initService
|
|
142
|
+
async _initService(name, service) {
|
|
131
143
|
// Add service reference to context for inter-service communication
|
|
132
144
|
this._context.services = {
|
|
133
145
|
...this._context.services,
|
|
@@ -143,7 +155,7 @@ export class SDK {
|
|
|
143
155
|
this._services.set(name, service)
|
|
144
156
|
}
|
|
145
157
|
|
|
146
|
-
_validateOptions
|
|
158
|
+
_validateOptions(options) {
|
|
147
159
|
const defaults = {
|
|
148
160
|
useNewServices: true, // Use new service implementations by default
|
|
149
161
|
apiUrl: environment.apiUrl,
|
|
@@ -157,7 +169,7 @@ export class SDK {
|
|
|
157
169
|
}
|
|
158
170
|
|
|
159
171
|
// Get service instance
|
|
160
|
-
getService
|
|
172
|
+
getService(name) {
|
|
161
173
|
if (!this._services.has(name)) {
|
|
162
174
|
throw new Error(`Service '${name}' not found`)
|
|
163
175
|
}
|
|
@@ -165,10 +177,13 @@ export class SDK {
|
|
|
165
177
|
}
|
|
166
178
|
|
|
167
179
|
// Update context
|
|
168
|
-
updateContext
|
|
180
|
+
updateContext(newContext) {
|
|
181
|
+
// Do not persist authToken in SDK context; TokenManager is the source of truth
|
|
182
|
+
const { authToken, ...sanitized } = newContext || {}
|
|
183
|
+
|
|
169
184
|
this._context = {
|
|
170
185
|
...this._context,
|
|
171
|
-
...
|
|
186
|
+
...sanitized
|
|
172
187
|
}
|
|
173
188
|
|
|
174
189
|
// Update context for all services
|
|
@@ -178,15 +193,16 @@ export class SDK {
|
|
|
178
193
|
}
|
|
179
194
|
|
|
180
195
|
// Check if SDK is ready
|
|
181
|
-
isReady
|
|
196
|
+
isReady() {
|
|
182
197
|
const sdkServices = Array.from(this._services.values())
|
|
183
|
-
return
|
|
184
|
-
|
|
198
|
+
return (
|
|
199
|
+
sdkServices.length > 0 &&
|
|
200
|
+
sdkServices.every((service) => service.isReady())
|
|
185
201
|
)
|
|
186
202
|
}
|
|
187
203
|
|
|
188
204
|
// Get SDK status
|
|
189
|
-
getStatus
|
|
205
|
+
getStatus() {
|
|
190
206
|
return {
|
|
191
207
|
ready: this.isReady(),
|
|
192
208
|
services: Array.from(this._services.entries()).map(([name, service]) => ({
|
|
@@ -198,7 +214,7 @@ export class SDK {
|
|
|
198
214
|
}
|
|
199
215
|
|
|
200
216
|
// Create proxy methods for direct service access
|
|
201
|
-
_createServiceProxies
|
|
217
|
+
_createServiceProxies() {
|
|
202
218
|
for (const [methodName, serviceName] of Object.entries(SERVICE_METHODS)) {
|
|
203
219
|
// Skip if method already exists on SDK
|
|
204
220
|
if (!this[methodName]) {
|
|
@@ -226,20 +242,20 @@ export class SDK {
|
|
|
226
242
|
const destroyPromises = Array.from(this._services.entries())
|
|
227
243
|
.filter(([, service]) => typeof service.destroy === 'function')
|
|
228
244
|
.map(async ([name, service]) => {
|
|
229
|
-
await service.destroy()
|
|
230
|
-
console.log(`Service ${name} destroyed successfully`)
|
|
231
|
-
})
|
|
245
|
+
await service.destroy()
|
|
246
|
+
console.log(`Service ${name} destroyed successfully`)
|
|
247
|
+
})
|
|
232
248
|
|
|
233
|
-
await Promise.all(destroyPromises)
|
|
249
|
+
await Promise.all(destroyPromises)
|
|
234
250
|
|
|
235
251
|
// Clear services and reset state
|
|
236
|
-
this._services.clear()
|
|
237
|
-
this._context = {}
|
|
252
|
+
this._services.clear()
|
|
253
|
+
this._context = {}
|
|
238
254
|
|
|
239
|
-
return true
|
|
255
|
+
return true
|
|
240
256
|
} catch (error) {
|
|
241
|
-
console.error('Error during SDK destruction:', error)
|
|
242
|
-
throw error
|
|
257
|
+
console.error('Error during SDK destruction:', error)
|
|
258
|
+
throw error
|
|
243
259
|
}
|
|
244
260
|
}
|
|
245
261
|
}
|
|
@@ -59,7 +59,7 @@ export class AdminService extends BaseService {
|
|
|
59
59
|
}
|
|
60
60
|
throw new Error(response.message)
|
|
61
61
|
} catch (error) {
|
|
62
|
-
throw new Error(`Failed to get admin users: ${error.message}
|
|
62
|
+
throw new Error(`Failed to get admin users: ${error.message}`, { cause: error })
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -97,7 +97,7 @@ export class AdminService extends BaseService {
|
|
|
97
97
|
}
|
|
98
98
|
throw new Error(response.message)
|
|
99
99
|
} catch (error) {
|
|
100
|
-
throw new Error(`Failed to assign projects to user: ${error.message}
|
|
100
|
+
throw new Error(`Failed to assign projects to user: ${error.message}`, { cause: error })
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
|
|
@@ -132,7 +132,7 @@ export class AdminService extends BaseService {
|
|
|
132
132
|
if (error.message?.includes('Duplicate')) {
|
|
133
133
|
throw new Error('Username already exists')
|
|
134
134
|
}
|
|
135
|
-
throw new Error(`Failed to update user: ${error.message}
|
|
135
|
+
throw new Error(`Failed to update user: ${error.message}`, { cause: error })
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
|
|
@@ -274,7 +274,7 @@ export class AdminService extends BaseService {
|
|
|
274
274
|
|
|
275
275
|
return stats
|
|
276
276
|
} catch (error) {
|
|
277
|
-
throw new Error(`Failed to get user stats: ${error.message}
|
|
277
|
+
throw new Error(`Failed to get user stats: ${error.message}`, { cause: error })
|
|
278
278
|
}
|
|
279
279
|
}
|
|
280
280
|
|