UNPKG

2.25 kBSource Map (JSON)View Raw
1{"version":3,"sources":["asynciterable/_extremaby.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAA8B,EAC9B,QAAuE,EACvE,QAAqF,EACrF,MAAoB;IAEpB,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IACjE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,IAAI,EAAE;QACR,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAClD;IAED,IAAI,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEnB,IAAI,IAA6B,CAAC;IAClC,OAAO,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAEhD,IAAI,GAAG,KAAK,CAAC,EAAE;YACb,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACtB;aAAM,IAAI,GAAG,GAAG,CAAC,EAAE;YAClB,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;YACnB,MAAM,GAAG,GAAG,CAAC;SACd;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","file":"_extremaby.js","sourcesContent":["import { throwIfAborted } from '../aborterror';\nimport { wrapWithAbort } from './operators/withabort';\n\nexport async function extremaBy<TSource, TKey>(\n source: AsyncIterable<TSource>,\n selector: (item: TSource, signal?: AbortSignal) => TKey | Promise<TKey>,\n comparer: (left: TKey, right: TKey, signal?: AbortSignal) => number | Promise<number>,\n signal?: AbortSignal\n): Promise<TSource[]> {\n throwIfAborted(signal);\n\n let result = [];\n const it = wrapWithAbort(source, signal)[Symbol.asyncIterator]();\n const { value, done } = await it.next();\n if (done) {\n throw new Error('Sequence contains no elements');\n }\n\n let resKey = await selector(value, signal);\n result.push(value);\n\n let next: IteratorResult<TSource>;\n while (!(next = await it.next()).done) {\n const current = next.value;\n const key = await selector(current, signal);\n const cmp = await comparer(key, resKey, signal);\n\n if (cmp === 0) {\n result.push(current);\n } else if (cmp > 0) {\n result = [current];\n resKey = key;\n }\n }\n\n return result;\n}\n"]}
\No newline at end of file