import { OperatorFunction } from '../types'; export function map( project: (value: TValueBefore, index: number) => TValueAfter, ): OperatorFunction { return (originalObserver) => { return { subscribe(observer) { let index = 0; const subscription = originalObserver.subscribe({ next(value) { observer.next?.(project(value, index++)); }, error(error) { observer.error?.(error); }, complete() { observer.complete?.(); }, }); return subscription; }, }; }; }