MCPcopy Index your code
hub / github.com/nodejs/node / any

Method any

lib/internal/abort_controller.js:312–381  ·  view source on GitHub ↗

* @param {AbortSignal[]} signals * @returns {AbortSignal}

(signals)

Source from the content-addressed store, hash-verified

310 * @returns {AbortSignal}
311 */
312 static any(signals) {
313 const signalsArray = converters['sequence<AbortSignal>'](
314 signals,
315 { __proto__: null, context: 'signals' },
316 );
317
318 const resultSignal = new AbortSignal(kDontThrowSymbol, { composite: true });
319 if (!signalsArray.length) {
320 return resultSignal;
321 }
322
323 resultSignal[kSourceSignals] = new SafeSet();
324
325 // Track if we have any timeout signals
326 let hasTimeoutSignals = false;
327
328 for (let i = 0; i < signalsArray.length; i++) {
329 const signal = signalsArray[i];
330
331 // Check if this is a timeout signal
332 if (signal[kTimeout]) {
333 hasTimeoutSignals = true;
334
335 // Add the timeout signal to gcPersistentSignals to keep it alive
336 // This is what the kNewListener method would do when adding abort listeners
337 gcPersistentSignals.add(signal);
338 }
339
340 if (signal.aborted) {
341 abortSignal(resultSignal, signal.reason);
342 return resultSignal;
343 }
344
345 if (!signal[kComposite]) {
346 const signalWeakRef = new SafeWeakRef(signal);
347 resultSignal[kSourceSignals].add(signalWeakRef);
348 } else if (!signal[kSourceSignals]) {
349 continue;
350 } else {
351 refreshCompositeSignal(signal);
352 if (signal.aborted) {
353 abortSignal(resultSignal, signal.reason);
354 return resultSignal;
355 }
356 for (const sourceSignalWeakRef of signal[kSourceSignals]) {
357 const sourceSignal = sourceSignalWeakRef.deref();
358 if (!sourceSignal) {
359 continue;
360 }
361 assert(!sourceSignal[kComposite]);
362
363 if (sourceSignal.aborted) {
364 abortSignal(resultSignal, sourceSignal.reason);
365 return resultSignal;
366 }
367
368 if (resultSignal[kSourceSignals].has(sourceSignalWeakRef)) {
369 continue;

Callers

nothing calls this directly

Calls 5

abortSignalFunction · 0.85
refreshCompositeSignalFunction · 0.85
assertFunction · 0.70
addMethod · 0.65
hasMethod · 0.65

Tested by

no test coverage detected