import { Pipe } from "../pipe.js"; export function distinct(keyselector?: (element: any) => any): Pipe { keyselector = typeof keyselector === 'function' ? keyselector : (e) => e; return () => { let elements: Set = new Set(); return (result: IteratorResult): IteratorResult => { if (result?.done) { return result; } if (!elements.has(keyselector(result.value))) { elements.add(keyselector(result.value)); return result; } }; } }