All files map.ts

100% Statements 9/9
100% Branches 0/0
100% Functions 2/2
100% Lines 8/8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2013x 13x               5x 5x 2x 6x 12x         13x  
import { Collection, asIterable } from './utils'
import Sequence from './Sequence'
 
/**
 * Return a Sequence that contains the elements created from the input collection elements.
 * @param collection A collection to use as input.
 * @param fn A function that produces an element of the new Sequence using an element of the old collection.
 */
function map<T, U>(collection: Collection<T>, fn: (value: T, index: number) => U) {
  const iterable = asIterable(collection)
  return new Sequence(function* () {
    let index = 0
    for(const value of iterable) {
      yield fn(value, index++)
    }
  })
}
 
export default map