import { Observable } from '../Observable'; export function map(project: (value: T, index: number) => R) { return (source: Observable): Observable => { return new Observable(subscriber => { let index = 0; const subscription = source.subscribe({ next: (value) => { try { subscriber.next(project(value, index++)); } catch (err) { subscriber.error(err as any); } }, error: (err) => { subscriber.error(err); }, complete: () => { subscriber.complete(); } }); return subscription; // Return the subscription for teardown }); }; }