MCPcopy Create free account
hub / github.com/TanStack/query / addConsumeAwareSignal

Function addConsumeAwareSignal

packages/query-core/src/utils.ts:491–519  ·  view source on GitHub ↗
(
  object: T,
  getSignal: () => AbortSignal,
  onCancelled: VoidFunction,
)

Source from the content-addressed store, hash-verified

489}
490
491export function addConsumeAwareSignal<T>(
492 object: T,
493 getSignal: () => AbortSignal,
494 onCancelled: VoidFunction,
495): T & { signal: AbortSignal } {
496 let consumed = false
497 let signal: AbortSignal | undefined
498
499 Object.defineProperty(object, 'signal', {
500 enumerable: true,
501 get: () => {
502 signal ??= getSignal()
503 if (consumed) {
504 return signal
505 }
506
507 consumed = true
508 if (signal.aborted) {
509 onCancelled()
510 } else {
511 signal.addEventListener('abort', onCancelled, { once: true })
512 }
513
514 return signal
515 },
516 })
517
518 return object as T & { signal: AbortSignal }
519}

Callers 3

addSignalPropertyFunction · 0.90
streamedQueryFunction · 0.90
utils.test.tsxFile · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected