{"version":3,"sources":["../../src/functions/sum/sum.ts"],"names":[],"mappings":";AAOO,SAAS,IACd,OACA,QACQ;AACR,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,MAAM,IAAY,CAAC,OAAO,OAAO,WAAW;AAC1D,UAAM,SACJ,SAAS,OAAO,OAAO,MAAM;AAAA,IAE5B;AACH,WAAO;AAAA,EACT,CAAC;AAED,SAAO,QAAQ,OAAO,CAAC,OAAO,UAAU,QAAQ,OAAO,CAAC;AAC1D","sourcesContent":["import { Maybe } from '../../types';\n\nexport function sum(array: Maybe<readonly number[]>): number;\nexport function sum<T>(\n  array: Maybe<readonly T[]>,\n  mapper: ArrayIterator<T>\n): number;\nexport function sum<T>(\n  array: Maybe<readonly T[]>,\n  mapper?: ArrayIterator<T>\n): number {\n  if (array == null) {\n    return 0;\n  }\n\n  const numbers = array.map<number>((value, index, array_) => {\n    const result =\n      mapper?.(value, index, array_) ??\n      // if there's no iteratee, we're in the overload of `sum` that only takes an array of numbers\n      (value as number);\n    return result;\n  });\n\n  return numbers.reduce((draft, value) => draft + value, 0);\n}\n\ntype ArrayIterator<T> = (\n  value: T,\n  index: number,\n  array: readonly T[]\n) => number;\n"]}