// Generated by typings // Source: https://raw.githubusercontent.com/unsignedint8/lightsword/8286ac24633394bc9225c1193eb0f2f47401d2f6/typings/kinq/kinq.d.ts declare interface _Linqable { /* ************* * Linqable * ************* */ /** * Applies an accumulator function over a sequence. The specified seed value is used as the initial accumulator value, and the specified function is used to select the result value. * * @param seed The initial accumulator value. * @param transform An accumulator function to be invoked on each element. * @param resultTransform A function to transform the final accumulator value into the result value. * @return The transformed final accumulator value. * transform: (current, next) -> result */ aggregate(seed: T, transform: (current: T, next: T) => TResult, resultTransform: (TResult) => TFinalResult): TFinalResult; /** * @see _Linqable.aggregate */ aggregate(seed: T, transform: (current: T, next: T) => TResult): TResult; /** * @see _Linqable.aggregate */ aggregate(transform: (current: T, next: T) => TResult): TResult; /** * Determines whether all elements of a sequence satisfy a condition. * * @param {Function} predicate The function called per iteraction till returns false. * @return All elements satisfy a condition returns true, or returns false. * predicate: (T) -> Boolean */ all(predicate: (T) => boolean): boolean; /** * Determines whether a sequence contains any elements. * * @param {(Function)} predicate The function called per iteraction till returns true. * @return Any elements satisfy a condition returns true, or returns false. * predicate: (T) -> Boolean */ any(predicate: (T) => boolean): boolean; /** * */ any(): boolean; /** * Computes the average of a sequence. The elements of this sequence should be Number. * * @param strict Strict mode: 1 is not equal to '1' * @return Return the average of a sequence. */ average(strict: boolean): number; /** * */ average(): number; /** * Concatenates two sequences. * * @param otherSequence The other iterable sequence. * @return The iterator of concatenated sequence. */ concatenate(otherSequence: Iterable): _Linqable; /** * Determines whether a sequence contains a specified element by using the default equality comparer. * * @param item The item which you want to check. * @param {(Function)} equalityComparer The equality comparer. * equalityComparer: (item1, item2) -> Boolean */ contains(item: T, equalityComparer: (item1: T, item2: T) => boolean): boolean; /** * */ contains(item: T): boolean; /** * Returns a number that represents how many elements in the specified sequence satisfy a condition. * * @param {(Function)} predicate The condition for compute item counts * @return Return the count which satisfy a condition. */ count(predicate: (T) => boolean): number; /** * */ count(): number; /** * Returns the elements of the specified sequence or the specified value in a singleton collection if the sequence is empty. * * @param defaultValue The default value which you want to return. */ defaultIfEmpty(defaultValue: T): _Linqable; /** * Returns distinct elements from a sequence by using a specified equalityComparer to compare values. * * @param {(Function)} equalityComparer The equality comparer * equalityComparer: (item1, item2) -> Boolean */ distinct(equalityComparer: (item1: T, item2: T) => boolean): _Linqable; /** * */ distinct(): _Linqable; /** * Alias of forEach */ each(callback: (item: T, index: number) => void): void; /** * Returns the element at a specified index in a sequence. * * @param positon The zero-base index of element which you want. * @param defaultValue The default value if the index is out of range. * @return The element at a specified index or default value */ elementAt(index: number, defaultValue: T): T; /** * */ elementAt(index: number): T; /** * Returns an empty sequence. */ empty(): T[]; /** * Produces the set difference of two sequences by using the default equality comparer to compare values. * * @param otherSequence A sequence whose elements that also occur in the first sequence will cause those elements to be removed from the returned sequence. * @param {(Function)} equalityComparer The equality comparer called per iteraction * @return A sequence that contains the set difference of the elements of two sequences. */ except(otherSequence: Iterable, equalityComparer: (item1: T, item2: T) => boolean): _Linqable; /** * */ except(otherSequence: Iterable): _Linqable; /** * Returns the first element in a sequence that satisfies a specified condition. Or throws an error if no element satisfies the condition in predicate. * * @param {(Function)} predicate The function called per iteraction till returns true. * @param defaultValue The default value. * @return The first element which satisfy condition or default value. */ first(predicate: (item: T) => boolean): T; first(): T; firstOrDefault(predicate: (item: T) => boolean, defaultValue: T): T; firstOrDefault(): T; /** * Flattens a nested sequence (the nesting can be to any depth). * @param deep Default is true, If you pass false, the sequence will only be flattened a single level. */ flatten>(deep: boolean): T; /** * Groups the elements of a sequence according to a specified key selector function and projects the elements for each group by using a specified function. * * @param keySelector A function to extract the key for each element. (Required) * @param elementSelector A function to map each source element to an element. (Optional) * @param resultTransform A function to create a result value from each group. (Optional) * @return Returns iterable grouped items. Each item is { key: key, value: [items] } */ groupBy(keySelector: (item: T) => TKey, elementSelector: (item: T) => TElement, resultTransform: (groupKey: TKey, items: TElement[]) => TResult): _Linqable; groupBy(keySelector: (item: T) => TKey): _Linqable; /** * Correlates the elements of two sequences based on equality of keys and groups the results. The default equality comparer is used to compare keys. * * @param inner The sequence to join to the first sequence. * @param outerKeySelector A function to extract the join key from each element of the first sequence. * @param innerKeySelector A function to extract the join key from each element of the second sequence. * @param resultSelector A function to create a result element from an element from the first sequence and a collection of matching elements from the second sequence. * @return A sequence that contains elements of type result that are obtained by performing a grouped join on two sequences. * outerKeySelector: (outerItem) -> key * innerKeySelector: (innerItem) -> key * resultSelector: (outerItem, [groupedInnerItem]) -> result */ groupJoin(inner: any, outerKeySelector: any, innerKeySelector: any, resultSelector: any): {}; /** * Produces the set intersection of two sequences by using the specified equalityComparer to compare values. * * @param otherSequence A sequence whose distinct elements that also appear in the first sequence will be returned. * @param eqaulityComparer An equalityComparer to compare values. * @return A sequence that contains the elements that form the set intersection of two sequences. */ intersect(otherSequence: Iterable, equalityComparer: any): _Linqable; intersect(otherSequence: Iterable): _Linqable; /** * Correlates the elements of two sequences based on matching keys. A specified equalityComparer is used to compare keys. * * @param join The sequence to join to the first sequence. * @param outerKeySelector A function to extract the join key from each element of the first sequence. * @param innerKeySelector A function to extract the join key from each element of the second sequence. * @param resultSelector A function to create a result element from two matching elements. * @param keyEqualityComparer An comparer compare keys. * * outerKeySelector: (outerItem) -> key * innerKeySelector: (innerItem) -> key * resultSelector: (outerItem, innerItem) -> result * keyEqualityComparer: (item1, item2) -> Boolean */ joinWith(inner: any, outerKeySelector: any, innerKeySelector: any, resultSelector: any, keyEqualityComparer: any): {}; /** * Returns the last element of a sequence that satisfies a condition or a default value if no such element is found. * * @param predicate A function to test each element for a condition. * @param defaultValue The default value if no such element is found. * @return Default value if the sequence is empty or if no elements pass the test in the predicate function; otherwise, the last element that passes the test in the predicate function. */ last(predicate: (T) => boolean, defaultValue: any): T; last(): T; /** * Returns the maximum value in a sequence. * * @param keySelector A transform function to apply to each element. * @param comparer A comparer function to check with item is greater. * @return The maximum value in the sequence. * keySelector: (T) -> key * comparer: (item1, item2) -> -1|0|1 */ max(keySelector: (item: T) => TKey, comparer: (item1: T, item2: T) => number): T; max(keySelector: (item: T) => TKey): T; max(): T; /** * Returns the minimum value in a sequence. * * @param keySelector A transform function to apply to each element. * @param comparer A comparer function to check with item is less. * @return The minimum value in the sequence. */ min(keySelector: (item: T) => TKey, comparer: (item1: T, item2: T) => number): T; min(keySelector: (item: T) => TKey): T; min(): T; /** * Filters the elements of an sequence based on a specified type. * * @param type A string to specify which type to return. * @return Filtered the elements of the sequence on. */ ofType(type: TCast): _Linqable; /** * Sorts the elements of a sequence in ascending order by using a specified comparer. * * @param keySelector A function to extract a key from an element. * @param comparer An comparer to compare keys. * @return A sequence whose elements are sorted according to a key. */ orderBy(keySelector: (item: T) => TKey, comparer: (item1: T, item2: T) => number): _Linqable; orderBy(keySelector: (item: T) => TKey): _Linqable; orderBy(): _Linqable; /** * Sorts the elements of a sequence in descending order by using a specified comparer. * * @param keySelector A function to extract a key from an element. * @param comparer An comparer to compare keys. * @return A sequence whose elements are sorted in descending order according to a key. */ orderByDescending(keySelector: (item: T) => TKey, comparer: (item1: T, item2: T) => number): _Linqable; orderByDescending(keySelector: (item: T) => TKey): _Linqable; orderByDescending(): _Linqable; /** * Inverts the order of the elements in a sequence. * * @return A sequence whose elements correspond to those of the input sequence in reverse order. */ reversed(): _Linqable; /** * Projects each element of a sequence into a new form. * * @param {Function} transform The transform function called per interaction. * * transform: (T, index) -> any */ select(transform: (item: T) => TResult): _Linqable; /** * Projects each element of a sequence to an IEnumerable, flattens the resulting sequences into one sequence, and invokes a result selector function on each element therein. The index of each source element is used in the intermediate projected form of that element. * * @param selector A transform function to apply to each source element; the second parameter of the function represents the index of the source element. * selector: (item, index) -> value */ selectMany(selector: (T, number) => TResult): _Linqable; /** * Determines whether two sequences are equal by comparing the elements by using the default equality comparer for their type. * * @param otherSequence A sequence to compare to the first sequence. * @return true if the two source sequences are of equal length and their corresponding elements are equal according to the equality comparer for their type; otherwise, false. */ sequenceEqual(otherSequence: Iterable, equalityComparer: (item1: T, item2: T) => boolean): boolean; sequenceEqual(otherSequence: Iterable): boolean; /** * Returns the only element of a sequence that satisfies a specified condition or a default value if no such element exists; this method throws an exception if more than one element satisfies the condition or sequence is empty. * * @param predicate A function to test an element for a condition. * @param defaultValue The default value if no such element exists. * @return The single element of the input sequence that satisfies a condition. */ single(predicate: (item: T) => boolean): T; single(): T; singleOrDefault(predicate: (item: T) => boolean, defaultValue: T): T; singleOrDefault(): T; /** * Bypasses a specified number of elements in a sequence and then returns the remaining elements. * * @param count The number of elements to skip before returning the remaining elements. * @return A sequence that contains the elements that occur after the specified index in the input sequence. */ skip(count: number): _Linqable; /** * Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements. The element's index is used in the logic of the predicate function. * * @param predicate A function to test each source element for a condition; the second parameter of the function represents the index of the source element. * @return A sequence that contains the elements from the input sequence starting at the first element in the linear series that does not pass the test specified by predicate. */ skipWhile(predicate: (item: T) => boolean): _Linqable; /** * Computes the sum of a sequence. * * @param transform The transform function called per interaction. * @return The sum of the values in the sequence. */ sum(transform: (item: T) => TResult): number; sum(): number; /** * Returns a specified number of contiguous elements from the start of a sequence. * * @param count The number of elements to return. * @return A sequence that contains the specified number of elements from the start of the input sequence. */ take(count: number): _Linqable; /** * Returns elements from a sequence as long as a specified condition is true. The element's index is used in the logic of the predicate function. * * @param predicate A function to test each source element for a condition; the second parameter of the function represents the index of the source element. * @return A sequence that contains elements from the input sequence that occur before the element at which the test no longer passes. */ takeWhile(predicate: (item: T) => boolean): _Linqable; /** * Alias of orderBy */ thenBy(keySelector: (item: T) => TKey, comparer: (item1: T, item2: T) => number): _Linqable; thenBy(keySelector: (item: T) => TKey): _Linqable; thenBy(): _Linqable; /** * Alias of orderByDescending */ thenByDescending(keySelector: (item: T) => TKey, comparer: (item1: T, item2: T) => number): _Linqable; thenByDescending(keySelector: (item: T) => TKey): _Linqable; thenByDescending(): _Linqable; /** * Creates an array * * @return An array that contains the elements from the input sequence. */ toArray(): T[]; /** * Alias of toArray */ toList(): T[]; /** * Alias of toMap */ toDictionary(keySelector: (item: T) => TKey, elementSelector: (item: T) => TResult): any; /** * Creates a map from a sequenece according to a specified key selector function, a comparer, and an element selector function. * * @param keySelector A function to extract a key from each element. * @param elementSelector A transform function to produce a result element value from each element. * @return A map that contains values from the input sequence. * keySelector: (item) -> key (Required) * elementSelector: (item) -> value (Optional) */ toMap(keySelector: (item: T) => TKey, elementSelector: (item: T) => TResult): any; /** * Produces the set union of two sequences by using a specified equalityComparer. * * @param otherSequence A sequence whose distinct elements form the second set for the union. * @param equalityComparer The equality comparer to compare values. * @return A sequence that contains the elements from both input sequences, no duplicates. */ union(otherSequence: Iterable, equalityComparer: (item1: T, item2: T) => boolean): _Linqable; union(otherSequence: Iterable): _Linqable; /** * Filters a sequence of values based on a predicate. * * @param {Function} predicate The filter function called per iteraction. * @return iterator * predicate: (T, index) -> Boolean */ where(predicate: (item: T, index: number) => boolean): _Linqable; /** * Applies a specified function to the corresponding elements of two sequences, producing a sequence of the results. * * @param otherSequence The second sequence to merge. * @param resultSelector A function that specifies how to merge the elements from the two sequences. * @return A sequence that contains merged elements of two input sequences. * resultSelector: (item, otherItem) -> result */ zip(otherSequence: Iterable, resultSelector: (item: T, otherItem: T2) => TResult): _Linqable; zip(otherSequence: Iterable): _Linqable<[T, T2]>; } // export interface _Linqable; declare module 'kinq' { /** * Convert iterable object to linqable * * @param An object which implemented iterable interface. * @return Linqable object. */ export function toLinqable(iterable: IterableIterator): _Linqable; /** * Enable KINQ */ export function enable(): void; } declare interface Array extends _Linqable { } declare interface String extends _Linqable { } declare interface Map extends _Linqable<[K, V]> { } declare interface Set extends _Linqable { } declare interface WeakSet extends _Linqable { } declare interface IterableIterator extends _Linqable { } declare interface NodeBuffer extends _Linqable { }