UNPKG

3.54 kBSource Map (JSON)View Raw
1{"version":3,"sources":["asynciterable/_extremaby.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAI,GAAM,EAAE,QAAW;IAC9D,OAAO,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,sBAAsC,SAAQ,cAAuB;IAKzE,YACE,MAA8B,EAC9B,KAA2C,EAC3C,GAAmD;QAEnD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,IAAI,MAAM,GAAc,EAAE,EACxB,IAAI,EACJ,IAAI,CAAC;QACP,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QAChD,IAAI,GAAG,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QACrC,IAAI,IAAI,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SAClD;QAED,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,GAAG,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QACrC,OAAO,CAAC,IAAI,EAAE;YACZ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YACtB,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACX,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACnB;iBAAM,IAAI,CAAC,GAAG,CAAC,EAAE;gBAChB,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;gBAChB,MAAM,GAAG,GAAG,CAAC;aACd;YACD,IAAI,GAAG,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;SACtC;QAED,KAAK,CAAC,CAAC,MAAM,CAAC;IAChB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,MAA8B,EAC9B,KAA2C,EAC3C,GAAmD;IAEnD,OAAO,IAAI,sBAAsB,CAAgB,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACvE,CAAC","file":"_extremaby.js","sourcesContent":["import { AsyncIterableX } from './asynciterablex';\n\n/**\n * @ignore\n */\nexport async function defaultCompareAsync<T>(key: T, minValue: T): Promise<number> {\n return key > minValue ? 1 : key < minValue ? -1 : 0;\n}\n\n/**\n * @ignore\n */\nclass ExtremaByAsyncIterator<TSource, TKey> extends AsyncIterableX<TSource> {\n private _source: AsyncIterable<TSource>;\n private _keyFn: (x: TSource) => TKey | Promise<TKey>;\n private _cmp: (x: TKey, y: TKey) => number | Promise<number>;\n\n constructor(\n source: AsyncIterable<TSource>,\n keyFn: (x: TSource) => TKey | Promise<TKey>,\n cmp: (x: TKey, y: TKey) => number | Promise<number>\n ) {\n super();\n this._source = source;\n this._keyFn = keyFn;\n this._cmp = cmp;\n }\n\n async *[Symbol.asyncIterator]() {\n let result: TSource[] = [],\n done,\n next;\n const it = this._source[Symbol.asyncIterator]();\n done = (next = await it.next()).done;\n if (done) {\n throw new Error('Sequence contains no elements');\n }\n\n let current = next.value;\n let resKey = await this._keyFn(current);\n done = (next = await it.next()).done;\n while (!done) {\n let curr = next.value;\n let key = await this._keyFn(curr);\n const c = await this._cmp(key, resKey);\n if (c === 0) {\n result.push(curr);\n } else if (c > 0) {\n result = [curr];\n resKey = key;\n }\n done = (next = await it.next()).done;\n }\n\n yield* result;\n }\n}\n\n/**\n * @ignore\n */\nexport function extremaBy<TSource, TKey>(\n source: AsyncIterable<TSource>,\n keyFn: (x: TSource) => TKey | Promise<TKey>,\n cmp: (x: TKey, y: TKey) => number | Promise<number>\n): AsyncIterableX<TSource> {\n return new ExtremaByAsyncIterator<TSource, TKey>(source, keyFn, cmp);\n}\n"]}
\No newline at end of file