import { wrapWithAbort } from './operators/withabort.js'; import { throwIfAborted } from '../aborterror.js'; /** * Converts the existing async-iterable into a promise which resolves a Set. * * @template TSource The type of elements in the source sequence. * @param {AsyncIterable} source The async-iterable to convert into a set. * @param {AbortSignal} [signal] An optional abort signal to cancel the operation at any time. * @returns {Promise>} A promise which contains a Set with all the elements from the async-iterable. */ export async function toSet( source: AsyncIterable, signal?: AbortSignal ): Promise> { throwIfAborted(signal); const set = new Set(); for await (const item of wrapWithAbort(source, signal)) { set.add(item); } return set; }