UNPKG

1.43 kBSource Map (JSON)View Raw
1{"version":3,"sources":["asynciterable/single.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,MAAwB,EACxB,YAAqE,GAAG,EAAE,CAAC,IAAI;IAE/E,IAAI,MAAqB,CAAC;IAC1B,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,KAAK,EAAE,IAAI,IAAI,IAAI,MAAM,EAAE;QAC7B,IAAI,SAAS,IAAI,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;YAC7C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;SACpD;QACD,IAAI,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;YAC9B,MAAM,GAAG,IAAI,CAAC;YACd,SAAS,GAAG,IAAI,CAAC;SAClB;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","file":"single.js","sourcesContent":["export async function single<T, S extends T>(\n source: AsyncIterable<T>,\n predicate: (value: T, index: number) => value is S\n): Promise<S | undefined>;\nexport async function single<T>(\n source: AsyncIterable<T>,\n predicate?: (value: T, index: number) => boolean | Promise<boolean>\n): Promise<T | undefined>;\nexport async function single<T>(\n source: AsyncIterable<T>,\n predicate: (value: T, index: number) => boolean | Promise<boolean> = () => true\n): Promise<T | undefined> {\n let result: T | undefined;\n let hasResult = false;\n let i = 0;\n for await (let item of source) {\n if (hasResult && (await predicate(item, i++))) {\n throw new Error('More than one element was found');\n }\n if (await predicate(item, i++)) {\n result = item;\n hasResult = true;\n }\n }\n\n return result;\n}\n"]}
\No newline at end of file