UNPKG

7.13 kBSource Map (JSON)View Raw
1{"version":3,"sources":["asynciterable/orderby.ts"],"names":[],"mappings":"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","file":"orderby.js","sourcesContent":["import { AsyncIterableX } from './asynciterablex';\nimport { toArray } from './toarray';\nimport { sorter as defaultSorter } from '../internal/sorter';\n\nexport abstract class OrderedAsyncIterableBaseX<TSource> extends AsyncIterableX<TSource> {\n _source: AsyncIterable<TSource>;\n\n constructor(source: AsyncIterable<TSource>) {\n super();\n this._source = source;\n }\n\n async *[Symbol.asyncIterator]() {\n const array = await toArray(this._source);\n const len = array.length;\n const indices = new Array<number>(len);\n for (let i = 0, len = array.length; i < len; i++) {\n indices[i] = i;\n }\n\n indices.sort(this._getSorter(array));\n for (const index of indices) {\n yield array[index];\n }\n }\n\n thenBy<TKey>(\n keySelector: (item: TSource) => TKey,\n comparer: (fst: TKey, snd: TKey) => number = defaultSorter\n ): OrderedAsyncIterableBaseX<TSource> {\n /* tslint:disable-next-line: no-use-before-declare */\n return new OrderedAsyncIterableX<TKey, TSource>(\n this._source,\n keySelector,\n comparer,\n false,\n this\n );\n }\n\n thenByDescending<TKey>(\n keySelector: (item: TSource) => TKey,\n comparer: (fst: TKey, snd: TKey) => number = defaultSorter\n ): OrderedAsyncIterableBaseX<TSource> {\n /* tslint:disable-next-line: no-use-before-declare */\n return new OrderedAsyncIterableX<TKey, TSource>(\n this._source,\n keySelector,\n comparer,\n true,\n this\n );\n }\n\n abstract _getSorter(\n elements: TSource[],\n next?: (x: number, y: number) => number\n ): (x: number, y: number) => number;\n}\n\nexport class OrderedAsyncIterableX<TKey, TSource> extends OrderedAsyncIterableBaseX<TSource> {\n private _keySelector: (item: TSource) => TKey;\n private _comparer: (fst: TKey, snd: TKey) => number;\n private _descending: boolean;\n private _parent?: OrderedAsyncIterableBaseX<TSource>;\n\n constructor(\n source: AsyncIterable<TSource>,\n keySelector: (item: TSource) => TKey,\n comparer: (fst: TKey, snd: TKey) => number,\n descending: boolean,\n parent?: OrderedAsyncIterableBaseX<TSource>\n ) {\n super(source);\n this._keySelector = keySelector;\n this._comparer = comparer;\n this._descending = descending;\n this._parent = parent;\n }\n\n _getSorter(\n elements: TSource[],\n next?: (x: number, y: number) => number\n ): (x: number, y: number) => number {\n const keys = elements.map(this._keySelector);\n const comparer = this._comparer;\n const parent = this._parent;\n const descending = this._descending;\n const sorter = (x: number, y: number): number => {\n const result = comparer(keys[x], keys[y]);\n if (result === 0) {\n return next ? next(x, y) : x - y;\n }\n\n return descending ? -result : result;\n };\n\n return parent ? parent._getSorter(elements, sorter) : sorter;\n }\n}\n\nexport function orderBy<TKey, TSource>(\n source: AsyncIterable<TSource>,\n keySelector: (item: TSource) => TKey,\n comparer: (fst: TKey, snd: TKey) => number = defaultSorter\n): OrderedAsyncIterableX<TKey, TSource> {\n return new OrderedAsyncIterableX<TKey, TSource>(source, keySelector, comparer, false);\n}\n\nexport function orderByDescending<TKey, TSource>(\n source: AsyncIterable<TSource>,\n keySelector: (item: TSource) => TKey,\n comparer: (fst: TKey, snd: TKey) => number = defaultSorter\n): OrderedAsyncIterableX<TKey, TSource> {\n return new OrderedAsyncIterableX<TKey, TSource>(source, keySelector, comparer, true);\n}\n\nexport function thenBy<TKey, TSource>(\n source: OrderedAsyncIterableBaseX<TSource>,\n keySelector: (item: TSource) => TKey,\n comparer: (fst: TKey, snd: TKey) => number = defaultSorter\n): OrderedAsyncIterableX<TKey, TSource> {\n return new OrderedAsyncIterableX<TKey, TSource>(\n source._source,\n keySelector,\n comparer,\n false,\n source\n );\n}\n\nexport function thenByDescending<TKey, TSource>(\n source: OrderedAsyncIterableBaseX<TSource>,\n keySelector: (item: TSource) => TKey,\n comparer: (fst: TKey, snd: TKey) => number = defaultSorter\n): OrderedAsyncIterableX<TKey, TSource> {\n return new OrderedAsyncIterableX<TKey, TSource>(\n source._source,\n keySelector,\n comparer,\n true,\n source\n );\n}\n"]}
\No newline at end of file