@@ -184,89 +184,81 @@ let _uxLookup: AlertUxLookup | undefined
184
184
export async function uxLookup (
185
185
settings : AlertUxLookupSettings
186
186
) : Promise < AlertUxLookupResult > {
187
- while ( _uxLookup === undefined ) {
188
- // eslint-disable-next-line no-await-in-loop
189
- await wait ( 1 , { signal : abortSignal } )
190
- }
191
- return _uxLookup ( settings )
192
- }
193
-
194
- // Start initializing the AlertUxLookupResult immediately.
195
- void ( async ( ) => {
196
- const { orgs, settings } = await ( async ( ) => {
197
- try {
198
- const sockSdk = await setupSdk ( getPublicToken ( ) )
199
- const orgResult = await sockSdk . getOrganizations ( )
200
- if ( ! orgResult . success ) {
201
- throw new Error (
202
- `Failed to fetch Socket organization info: ${ orgResult . error . message } `
203
- )
204
- }
205
- const orgs : Array <
206
- Exclude < ( typeof orgResult . data . organizations ) [ string ] , undefined >
207
- > = [ ]
208
- for ( const org of Object . values ( orgResult . data . organizations ) ) {
209
- if ( org ) {
210
- orgs . push ( org )
187
+ if ( _uxLookup === undefined ) {
188
+ const { orgs, settings } = await ( async ( ) => {
189
+ try {
190
+ const sockSdk = await setupSdk ( getPublicToken ( ) )
191
+ const orgResult = await sockSdk . getOrganizations ( )
192
+ if ( ! orgResult . success ) {
193
+ throw new Error (
194
+ `Failed to fetch Socket organization info: ${ orgResult . error . message } `
195
+ )
211
196
}
212
- }
213
- const result = await sockSdk . postSettings (
214
- orgs . map ( org => ( { organization : org . id } ) )
215
- )
216
- if ( ! result . success ) {
217
- throw new Error (
218
- `Failed to fetch API key settings: ${ result . error . message } `
219
- )
220
- }
221
- return {
222
- orgs,
223
- settings : result . data
224
- }
225
- } catch ( e ) {
226
- const cause = isObject ( e ) && 'cause' in e ? e [ 'cause' ] : undefined
227
- if (
228
- isErrnoException ( cause ) &&
229
- ( cause . code === 'ENOTFOUND' || cause . code === 'ECONNREFUSED' )
230
- ) {
231
- throw new Error (
232
- 'Unable to connect to socket.dev, ensure internet connectivity before retrying' ,
233
- {
234
- cause : e
197
+ const orgs : Array <
198
+ Exclude < ( typeof orgResult . data . organizations ) [ string ] , undefined >
199
+ > = [ ]
200
+ for ( const org of Object . values ( orgResult . data . organizations ) ) {
201
+ if ( org ) {
202
+ orgs . push ( org )
235
203
}
204
+ }
205
+ const result = await sockSdk . postSettings (
206
+ orgs . map ( org => ( { organization : org . id } ) )
236
207
)
208
+ if ( ! result . success ) {
209
+ throw new Error (
210
+ `Failed to fetch API key settings: ${ result . error . message } `
211
+ )
212
+ }
213
+ return {
214
+ orgs,
215
+ settings : result . data
216
+ }
217
+ } catch ( e ) {
218
+ const cause = isObject ( e ) && 'cause' in e ? e [ 'cause' ] : undefined
219
+ if (
220
+ isErrnoException ( cause ) &&
221
+ ( cause . code === 'ENOTFOUND' || cause . code === 'ECONNREFUSED' )
222
+ ) {
223
+ throw new Error (
224
+ 'Unable to connect to socket.dev, ensure internet connectivity before retrying' ,
225
+ {
226
+ cause : e
227
+ }
228
+ )
229
+ }
230
+ throw e
231
+ }
232
+ } ) ( )
233
+ // Remove any organizations not being enforced.
234
+ const enforcedOrgs = getSetting ( 'enforcedOrgs' ) ?? [ ]
235
+ for ( const { 0 : i , 1 : org } of orgs . entries ( ) ) {
236
+ if ( ! enforcedOrgs . includes ( org . id ) ) {
237
+ settings . entries . splice ( i , 1 )
237
238
}
238
- throw e
239
- }
240
- } ) ( )
241
-
242
- // Remove any organizations not being enforced.
243
- const enforcedOrgs = getSetting ( 'enforcedOrgs' ) ?? [ ]
244
- for ( const { 0 : i , 1 : org } of orgs . entries ( ) ) {
245
- if ( ! enforcedOrgs . includes ( org . id ) ) {
246
- settings . entries . splice ( i , 1 )
247
239
}
248
- }
249
-
250
- const socketYml = findSocketYmlSync ( )
251
- if ( socketYml ) {
252
- settings . entries . push ( {
253
- start : socketYml . path ,
254
- settings : {
255
- [ socketYml . path ] : {
256
- deferTo : null ,
257
- // TODO: TypeScript complains about the type not matching. We should
258
- // figure out why are providing
259
- // issueRules: { [issueName: string]: boolean }
260
- // but expecting
261
- // issueRules: { [issueName: string]: { action: 'defer' | 'error' | 'ignore' | 'monitor' | 'warn' } }
262
- issueRules : socketYml . parsed . issueRules as unknown as {
263
- [ key : string ] : {
264
- action : 'defer' | 'error' | 'ignore' | 'monitor' | 'warn'
240
+ const socketYml = findSocketYmlSync ( )
241
+ if ( socketYml ) {
242
+ settings . entries . push ( {
243
+ start : socketYml . path ,
244
+ settings : {
245
+ [ socketYml . path ] : {
246
+ deferTo : null ,
247
+ // TODO: TypeScript complains about the type not matching. We should
248
+ // figure out why are providing
249
+ // issueRules: { [issueName: string]: boolean }
250
+ // but expecting
251
+ // issueRules: { [issueName: string]: { action: 'defer' | 'error' | 'ignore' | 'monitor' | 'warn' } }
252
+ issueRules : socketYml . parsed . issueRules as unknown as {
253
+ [ key : string ] : {
254
+ action : 'defer' | 'error' | 'ignore' | 'monitor' | 'warn'
255
+ }
265
256
}
266
257
}
267
258
}
268
- }
269
- } )
259
+ } )
260
+ }
261
+ _uxLookup = createAlertUXLookup ( settings )
270
262
}
271
- _uxLookup = createAlertUXLookup ( settings )
272
- } ) ( )
263
+ return _uxLookup ( settings )
264
+ }
0 commit comments