UNPKG

@reactivex/ix-esnext-esm

Version:

The Interactive Extensions for JavaScript

1 lines 1.89 kB
{"version":3,"sources":["iterable/reduceright.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,MAAM,UAAU,WAAW,CACzB,MAAmB,EACnB,WAA2E,EAC3E,GAAG,IAAS;IAEZ,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IAClC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAU,CAAC;IAC3B,KAAK,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,EAAE;YACpC,GAAG,GAAG,WAAW,CAAI,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;SACzC;aAAM;YACL,GAAG,GAAG,IAAI,CAAC;YACX,QAAQ,GAAG,IAAI,CAAC;SACjB;KACF;IAED,IAAI,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAClD;IAED,OAAO,GAAQ,CAAC;AAClB,CAAC","file":"reduceright.js","sourcesContent":["import { toArray } from './toarray';\nexport function reduceRight<T, R = T>(\n source: Iterable<T>,\n accumulator: (previousValue: R, currentValue: T, currentIndex: number) => R,\n seed?: never[]\n): R;\nexport function reduceRight<T, R = T>(\n source: Iterable<T>,\n accumulator: (previousValue: R, currentValue: T, currentIndex: number) => R,\n seed?: R\n): R;\nexport function reduceRight<T, R = T>(\n source: Iterable<T>,\n accumulator: (previousValue: R, currentValue: T, currentIndex: number) => R,\n ...seed: R[]\n): R {\n const array = toArray(source);\n const hasSeed = seed.length === 1;\n let hasValue = false;\n let acc = seed[0] as T | R;\n for (let offset = array.length - 1; offset >= 0; offset--) {\n const item = array[offset];\n if (hasValue || (hasValue = hasSeed)) {\n acc = accumulator(<R>acc, item, offset);\n } else {\n acc = item;\n hasValue = true;\n }\n }\n\n if (!(hasSeed || hasValue)) {\n throw new Error('Sequence contains no elements');\n }\n\n return acc as R;\n}\n"]}