diff --git a/src/linq/index.ts b/src/linq/index.ts index 6b3bcbd..2d51401 100644 --- a/src/linq/index.ts +++ b/src/linq/index.ts @@ -1,9 +1,11 @@ -import { Linqable, extractSync } from './linqable' +import { Linqable, extractSync, OrderedLinqable, ToMapArgs } from './linqable' import { Sequence } from './iterables/sequence' import { elementsSymbol, ElementsWrapper, isWrapper } from './element-wrapper' -import { AsyncLinqable, extractAsync } from './linqableAsync' +import { AsyncLinqable, extractAsync, OrderedLinqableAsync } from './linqableAsync' import { Unfold, UnfoldStep } from './iterables/unfold' +import { LinqMap, LinqSet } from './collections' +export type { Linqable, AsyncLinqable, OrderedLinqable, OrderedLinqableAsync, ToMapArgs, LinqMap, LinqSet } export type SyncSource = Iterable | (() => Generator) export type AsyncSource = AsyncIterable | (() => AsyncGenerator) diff --git a/src/linq/linqable.ts b/src/linq/linqable.ts index 82cfc21..26d140e 100644 --- a/src/linq/linqable.ts +++ b/src/linq/linqable.ts @@ -301,10 +301,10 @@ export class Linqable implements Iterable, ElementsWrapper implements Iterable, ElementsWrapper(accumulator: (accumulated: TResult, element: TSource, index: number) => TResult, seed?: TResult): Linqable { diff --git a/src/linq/linqableAsync.ts b/src/linq/linqableAsync.ts index 8e297be..586f4f7 100644 --- a/src/linq/linqableAsync.ts +++ b/src/linq/linqableAsync.ts @@ -207,19 +207,19 @@ export class AsyncLinqable implements AsyncIterable, ElementsW /** * Orders elements based on a selector function. * @param {function} selector - A function or a selector used for comparing the elements. - * @returns {OrderedLinqable} An iterable of the ordered elements. + * @returns {OrderedLinqableAsync} An iterable of the ordered elements. */ - orderBy(selector: (element: TSource) => number | string): OrderedLinqable { - return new OrderedLinqable(Ordered.from(this.elements, selector, true)) + orderBy(selector: (element: TSource) => number | string): OrderedLinqableAsync { + return new OrderedLinqableAsync(Ordered.from(this.elements, selector, true)) } /** * Orders elements based on a selector function in desceding order. * @param {function} selector - A function or a selector used for comparing the elements. - * @returns {OrderedLinqable} An iterable of the ordered elements. + * @returns {OrderedLinqableAsync} An iterable of the ordered elements. */ - orderByDescending(selector: (element: TSource) => number | string): OrderedLinqable { - return new OrderedLinqable(Ordered.from(this.elements, selector, false)) + orderByDescending(selector: (element: TSource) => number | string): OrderedLinqableAsync { + return new OrderedLinqableAsync(Ordered.from(this.elements, selector, false)) } /** @@ -278,10 +278,10 @@ export class AsyncLinqable implements AsyncIterable, ElementsW let accumulated = seed if (typeof seed === 'undefined') { - let result = await iterator.next() + const result = await iterator.next() if (!result.done) { accumulated = result.value - let second = await iterator.next() + const second = await iterator.next() index++ if (!second.done) { accumulated = await accumulator(result.value, second.value, index++) as TResult @@ -760,7 +760,7 @@ export class AsyncLinqable implements AsyncIterable, ElementsW } } -export class OrderedLinqable extends AsyncLinqable { +export class OrderedLinqableAsync extends AsyncLinqable { constructor(elements: Ordered) { super(elements) } @@ -769,7 +769,7 @@ export class OrderedLinqable extends AsyncLinqable { * Chains an additional ascending ordering based on the key returned by the selector function. * @param selector - A function which returns a key which will be used for comparisons. */ - thenBy(this: OrderedLinqable, selector: (element: TSource) => string | number): OrderedLinqable { + thenBy(this: OrderedLinqableAsync, selector: (element: TSource) => string | number): OrderedLinqableAsync { return this.from(selector, true) } @@ -777,17 +777,17 @@ export class OrderedLinqable extends AsyncLinqable { * Chains an additional descending ordering based on the key returned by the selector function. * @param selector - A function which returns a key which will be used for comparisons. */ - thenByDescending(this: OrderedLinqable, selector: (element: TSource) => string | number): OrderedLinqable { + thenByDescending(this: OrderedLinqableAsync, selector: (element: TSource) => string | number): OrderedLinqableAsync { return this.from(selector, false) } toString(): string { - return OrderedLinqable.name + return OrderedLinqableAsync.name } - private from(selector: (element: TSource) => string | number, isAscending: boolean): OrderedLinqable { + private from(selector: (element: TSource) => string | number, isAscending: boolean): OrderedLinqableAsync { const ordered = this.elements as Ordered - return new OrderedLinqable(ordered.from(selector, isAscending)) + return new OrderedLinqableAsync(ordered.from(selector, isAscending)) } }