MCPcopy Index your code
hub / github.com/codeaashu/claude-code / waitForCallback

Function waitForCallback

src/services/mcp/xaaIdpLogin.ts:272–395  ·  view source on GitHub ↗

* Wait for the OAuth authorization code on a local callback server. * Returns the code once /callback is hit with a matching state. * * `onListening` fires after the socket is actually bound — use it to defer * browser-open so EADDRINUSE surfaces before a spurious tab pops open.

(
  port: number,
  expectedState: string,
  abortSignal: AbortSignal | undefined,
  onListening: () => void,
)

Source from the content-addressed store, hash-verified

270 * browser-open so EADDRINUSE surfaces before a spurious tab pops open.
271 */
272function waitForCallback(
273 port: number,
274 expectedState: string,
275 abortSignal: AbortSignal | undefined,
276 onListening: () => void,
277): Promise<string> {
278 let server: Server | null = null
279 let timeoutId: NodeJS.Timeout | null = null
280 let abortHandler: (() => void) | null = null
281 const cleanup = () => {
282 server?.removeAllListeners()
283 // Defensive: removeAllListeners() strips the error handler, so swallow any late error during close
284 server?.on('error', () => {})
285 server?.close()
286 server = null
287 if (timeoutId) {
288 clearTimeout(timeoutId)
289 timeoutId = null
290 }
291 if (abortSignal && abortHandler) {
292 abortSignal.removeEventListener('abort', abortHandler)
293 abortHandler = null
294 }
295 }
296 return new Promise<string>((resolve, reject) => {
297 let resolved = false
298 const resolveOnce = (v: string) => {
299 if (resolved) return
300 resolved = true
301 cleanup()
302 resolve(v)
303 }
304 const rejectOnce = (e: Error) => {
305 if (resolved) return
306 resolved = true
307 cleanup()
308 reject(e)
309 }
310
311 if (abortSignal) {
312 abortHandler = () => rejectOnce(new Error('XAA IdP: login cancelled'))
313 if (abortSignal.aborted) {
314 abortHandler()
315 return
316 }
317 abortSignal.addEventListener('abort', abortHandler, { once: true })
318 }
319
320 server = createServer((req, res) => {
321 const parsed = parse(req.url || '', true)
322 if (parsed.pathname !== '/callback') {
323 res.writeHead(404)
324 res.end()
325 return
326 }
327 const code = parsed.query.code as string | undefined
328 const state = parsed.query.state as string | undefined
329 const err = parsed.query.error as string | undefined

Callers 1

acquireIdpIdTokenFunction · 0.85

Calls 8

createServerFunction · 0.85
parseFunction · 0.85
getPlatformFunction · 0.85
toErrorFunction · 0.85
onMethod · 0.80
rejectOnceFunction · 0.70
resolveOnceFunction · 0.70
endMethod · 0.45

Tested by

no test coverage detected