import { Pipe } from "../pipe.js"; import { assertSync } from "../util/index.js"; export function intersection(source: Iterable): Pipe { assertSync(source); return () => { let sourceSet: Set = source instanceof Set ? source : new Set(source); return (result: IteratorResult): IteratorResult => { if (result?.done) { return result; } if (sourceSet.has(result.value)) { sourceSet.delete(result.value); return result; } }; } }