UNPKG

1.27 kBSource Map (JSON)View Raw
1{"version":3,"sources":["iterable/single.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,MAAM,CACpB,MAAmB,EACnB,YAAkD,GAAG,EAAE,CAAC,IAAI;IAE5D,IAAI,MAAqB,CAAC;IAC1B,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;QACzB,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;YACrC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;SACpD;QACD,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;YACxB,MAAM,GAAG,IAAI,CAAC;YACd,SAAS,GAAG,IAAI,CAAC;SAClB;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","file":"single.js","sourcesContent":["export function single<T, S extends T>(\n source: Iterable<T>,\n predicate: (value: T, index: number) => value is S\n): S | undefined;\nexport function single<T>(\n source: Iterable<T>,\n predicate?: (value: T, index: number) => boolean\n): T | undefined;\nexport function single<T>(\n source: Iterable<T>,\n predicate: (value: T, index: number) => boolean = () => true\n): T | undefined {\n let result: T | undefined;\n let hasResult = false;\n let i = 0;\n for (const item of source) {\n if (hasResult && predicate(item, i++)) {\n throw new Error('More than one element was found');\n }\n if (predicate(item, i++)) {\n result = item;\n hasResult = true;\n }\n }\n\n return result;\n}\n"]}
\No newline at end of file