// Type definitions for Lo-Dash // Project: http://lodash.com/ // Definitions by: Brian Zengel , Ilya Mochalov // Definitions: https://github.com/borisyankov/DefinitelyTyped declare var _: _.LoDashStatic; declare module _ { interface LoDashStatic { /** * Creates a lodash object which wraps the given value to enable intuitive method chaining. * * In addition to Lo-Dash methods, wrappers also have the following Array methods: * concat, join, pop, push, reverse, shift, slice, sort, splice, and unshift * * Chaining is supported in custom builds as long as the value method is implicitly or * explicitly included in the build. * * The chainable wrapper functions are: * after, assign, bind, bindAll, bindKey, chain, chunk, compact, compose, concat, countBy, * createCallback, curry, debounce, defaults, defer, delay, difference, filter, flatten, * forEach, forEachRight, forIn, forInRight, forOwn, forOwnRight, functions, groupBy, * indexBy, initial, intersection, invert, invoke, keys, map, max, memoize, merge, min, * object, omit, once, pairs, partial, partialRight, pick, pluck, pull, push, range, reject, * remove, rest, reverse, sample, shuffle, slice, sort, sortBy, splice, tap, throttle, times, * toArray, transform, union, uniq, unshift, unzip, values, where, without, wrap, and zip * * The non-chainable wrapper functions are: * clone, cloneDeep, contains, escape, every, find, findIndex, findKey, findLast, * findLastIndex, findLastKey, has, identity, indexOf, isArguments, isArray, isBoolean, * isDate, isElement, isEmpty, isEqual, isFinite, isFunction, isNaN, isNull, isNumber, * isObject, isPlainObject, isRegExp, isString, isUndefined, join, lastIndexOf, mixin, * noConflict, parseInt, pop, random, reduce, reduceRight, result, shift, size, some, * sortedIndex, runInContext, template, unescape, uniqueId, and value * * The wrapper functions first and last return wrapped values when n is provided, otherwise * they return unwrapped values. * * Explicit chaining can be enabled by using the _.chain method. **/ (value: number): LoDashWrapper; (value: string): LoDashStringWrapper; (value: boolean): LoDashWrapper; (value: Array): LoDashNumberArrayWrapper; (value: Array): LoDashArrayWrapper; (value: T): LoDashObjectWrapper; (value: any): LoDashWrapper; /** * The semantic version number. **/ VERSION: string; /** * An object used to flag environments features. **/ support: Support; /** * By default, the template delimiters used by Lo-Dash are similar to those in embedded Ruby * (ERB). Change the following template settings to use alternative delimiters. **/ templateSettings: TemplateSettings; } /** * By default, the template delimiters used by Lo-Dash are similar to those in embedded Ruby * (ERB). Change the following template settings to use alternative delimiters. **/ interface TemplateSettings { /** * The "escape" delimiter. **/ escape?: RegExp; /** * The "evaluate" delimiter. **/ evaluate?: RegExp; /** * An object to import into the template as local variables. **/ imports?: Dictionary; /** * The "interpolate" delimiter. **/ interpolate?: RegExp; /** * Used to reference the data object in the template text. **/ variable?: string; } /** * Creates a cache object to store key/value pairs. */ interface MapCache { /** * Removes `key` and its value from the cache. * @param key The key of the value to remove. * @return Returns `true` if the entry was removed successfully, else `false`. */ delete(key: string): boolean; /** * Gets the cached value for `key`. * @param key The key of the value to get. * @return Returns the cached value. */ get(key: string): any; /** * Checks if a cached value for `key` exists. * @param key The key of the entry to check. * @return Returns `true` if an entry for `key` exists, else `false`. */ has(key: string): boolean; /** * Sets `value` to `key` of the cache. * @param key The key of the value to cache. * @param value The value to cache. * @return Returns the cache object. */ set(key: string, value: any): _.Dictionary; } /** * An object used to flag environments features. **/ interface Support { /** * Detect if an arguments object's [[Class]] is resolvable (all but Firefox < 4, IE < 9). **/ argsClass: boolean; /** * Detect if arguments objects are Object objects (all but Narwhal and Opera < 10.5). **/ argsObject: boolean; /** * Detect if name or message properties of Error.prototype are enumerable by default. * (IE < 9, Safari < 5.1) **/ enumErrorProps: boolean; /** * Detect if prototype properties are enumerable by default. * * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1 (if the prototype or a property on the * prototype has been set) incorrectly set the [[Enumerable]] value of a function’s prototype property to true. **/ enumPrototypes: boolean; /** * Detect if Function#bind exists and is inferred to be fast (all but V8). **/ fastBind: boolean; /** * Detect if functions can be decompiled by Function#toString (all but PS3 and older Opera * mobile browsers & avoided in Windows 8 apps). **/ funcDecomp: boolean; /** * Detect if Function#name is supported (all but IE). **/ funcNames: boolean; /** * Detect if arguments object indexes are non-enumerable (Firefox < 4, IE < 9, PhantomJS, * Safari < 5.1). **/ nonEnumArgs: boolean; /** * Detect if properties shadowing those on Object.prototype are non-enumerable. * * In IE < 9 an objects own properties, shadowing non-enumerable ones, are made * non-enumerable as well (a.k.a the JScript [[DontEnum]] bug). **/ nonEnumShadows: boolean; /** * Detect if own properties are iterated after inherited properties (all but IE < 9). **/ ownLast: boolean; /** * Detect if Array#shift and Array#splice augment array-like objects correctly. * * Firefox < 10, IE compatibility mode, and IE < 9 have buggy Array shift() and splice() * functions that fail to remove the last element, value[0], of array-like objects even * though the length property is set to 0. The shift() method is buggy in IE 8 compatibility * mode, while splice() is buggy regardless of mode in IE < 9 and buggy in compatibility mode * in IE 9. **/ spliceObjects: boolean; /** * Detect lack of support for accessing string characters by index. * * IE < 8 can't access characters by index and IE 8 can only access characters by index on * string literals. **/ unindexedChars: boolean; } interface LoDashWrapperBase { /** * Produces the toString result of the wrapped value. * @return Returns the string result. **/ toString(): string; /** * Executes the chained sequence to extract the unwrapped value. * @return Returns the resolved unwrapped value. **/ value(): T; /** * @see _.value **/ run(): T; /** * @see _.value **/ toJSON(): T; /** * @see _.value **/ valueOf(): T; /** * @see _.toPlainObject */ toPlainObject(): Object; } interface LoDashWrapper extends LoDashWrapperBase> { } interface LoDashStringWrapper extends LoDashWrapper { } interface LoDashObjectWrapper extends LoDashWrapperBase> { } interface LoDashArrayWrapper extends LoDashWrapperBase> { concat(...items: Array>): LoDashArrayWrapper; join(seperator?: string): string; pop(): T; push(...items: T[]): LoDashArrayWrapper; reverse(): LoDashArrayWrapper; shift(): T; slice(start: number, end?: number): LoDashArrayWrapper; sort(compareFn?: (a: T, b: T) => number): LoDashArrayWrapper; splice(start: number): LoDashArrayWrapper; splice(start: number, deleteCount: number, ...items: any[]): LoDashArrayWrapper; unshift(...items: T[]): LoDashArrayWrapper; } interface LoDashNumberArrayWrapper extends LoDashArrayWrapper { } //_.chain interface LoDashStatic { /** * Creates a lodash object that wraps the given value with explicit method chaining enabled. * @param value The value to wrap. * @return The wrapper object. **/ chain(value: number): LoDashWrapper; chain(value: string): LoDashWrapper; chain(value: boolean): LoDashWrapper; chain(value: Array): LoDashArrayWrapper; chain(value: T): LoDashObjectWrapper; chain(value: any): LoDashWrapper; } interface LoDashWrapperBase { /** * Enables explicit method chaining on the wrapper object. * @see _.chain * @return The wrapper object. **/ chain(): TWrapper; } //_.tap interface LoDashStatic { /** * Invokes interceptor with the value as the first argument and then returns value. The * purpose of this method is to "tap into" a method chain in order to perform operations on * intermediate results within the chain. * @param value The value to provide to interceptor * @param interceptor The function to invoke. * @return value **/ tap( value: T, interceptor: (value: T) => void): T; } interface LoDashWrapperBase { /** * @see _.tap **/ tap(interceptor: (value: T) => void): TWrapper; } /********* * Arrays * **********/ //_.chunk interface LoDashStatic { /** * Creates an array of elements split into groups the length of size. If collection can't be * split evenly, the final chunk will be the remaining elements. * @param array The array to process. * @param size The length of each chunk. * @return Returns the new array containing chunks. **/ chunk(array: Array, size?: number): T[][]; /** * @see _.chunk **/ chunk(array: List, size?: number): T[][]; } interface LoDashArrayWrapper { /** * @see _.chunk **/ chunk(size?: number): LoDashArrayWrapper; } //_.compact interface LoDashStatic { /** * Returns a copy of the array with all falsy values removed. In JavaScript, false, null, 0, "", * undefined and NaN are all falsy. * @param array Array to compact. * @return (Array) Returns a new array of filtered values. **/ compact(array?: Array): T[]; /** * @see _.compact **/ compact(array?: List): T[]; } interface LoDashArrayWrapper { /** * @see _.compact **/ compact(): LoDashArrayWrapper; } //_.difference interface LoDashStatic { /** * Creates an array excluding all values of the provided arrays using strict equality for comparisons * , i.e. ===. * @param array The array to process * @param others The arrays of values to exclude. * @return Returns a new array of filtered values. **/ difference( array?: Array, ...others: Array[]): T[]; /** * @see _.difference **/ difference( array?: List, ...others: List[]): T[]; } interface LoDashArrayWrapper { /** * @see _.difference **/ difference( ...others: Array[]): LoDashArrayWrapper; /** * @see _.difference **/ difference( ...others: List[]): LoDashArrayWrapper; } //_.findIndex interface LoDashStatic { /** * This method is like _.find except that it returns the index of the first element that passes * the callback check, instead of the element itself. * @param array The array to search. * @param {(Function|Object|string)} callback The function called per iteration. If a property name or object is provided it will be * used to create a ".pluck" or ".where" style callback, respectively. * @param thisArg The this binding of callback. * @return Returns the index of the found element, else -1. **/ findIndex( array: Array, callback: ListIterator, thisArg?: any): number; /** * @see _.findIndex **/ findIndex( array: List, callback: ListIterator, thisArg?: any): number; /** * @see _.findIndex **/ findIndex( array: Array, pluckValue: string): number; /** * @see _.findIndex **/ findIndex( array: List, pluckValue: string): number; /** * @see _.findIndex **/ findIndex( array: Array, whereDictionary: W): number; /** * @see _.findIndex **/ findIndex( array: List, whereDictionary: W): number; } //_.findLastIndex interface LoDashStatic { /** * This method is like _.findIndex except that it iterates over elements of a collection from right to left. * @param array The array to search. * @param {(Function|Object|string)} callback The function called per iteration. If a property name or object is provided it will be * used to create a ".pluck" or ".where" style callback, respectively. * @param thisArg The this binding of callback. * @return Returns the index of the found element, else -1. **/ findLastIndex( array: Array, callback: ListIterator, thisArg?: any): number; /** * @see _.findLastIndex **/ findLastIndex( array: List, callback: ListIterator, thisArg?: any): number; /** * @see _.findLastIndex **/ findLastIndex( array: Array, pluckValue: string): number; /** * @see _.findLastIndex **/ findLastIndex( array: List, pluckValue: string): number; /** * @see _.findLastIndex **/ findLastIndex( array: Array, whereDictionary: Dictionary): number; /** * @see _.findLastIndex **/ findLastIndex( array: List, whereDictionary: Dictionary): number; } //_.first interface LoDashStatic { /** * Gets the first element or first n elements of an array. If a callback is provided * elements at the beginning of the array are returned as long as the callback returns * truey. The callback is bound to thisArg and invoked with three arguments; (value, * index, array). * * If a property name is provided for callback the created "_.pluck" style callback * will return the property value of the given element. * * If an object is provided for callback the created "_.where" style callback will return ] * true for elements that have the properties of the given object, else false. * @param array Retrieves the first element of this array. * @return Returns the first element of `array`. **/ first(array?: Array): T; /** * @see _.first **/ first(array?: List): T; /** * @see _.first * @param n The number of elements to return. **/ first( array: Array, n: number): T[]; /** * @see _.first * @param n The number of elements to return. **/ first( array: List, n: number): T[]; /** * @see _.first * @param callback The function called per element. * @param [thisArg] The this binding of callback. **/ first( array: Array, callback: ListIterator, thisArg?: any): T[]; /** * @see _.first * @param callback The function called per element. * @param [thisArg] The this binding of callback. **/ first( array: List, callback: ListIterator, thisArg?: any): T[]; /** * @see _.first * @param pluckValue "_.pluck" style callback value **/ first( array: Array, pluckValue: string): T[]; /** * @see _.first * @param pluckValue "_.pluck" style callback value **/ first( array: List, pluckValue: string): T[]; /** * @see _.first * @param whereValue "_.where" style callback value **/ first( array: Array, whereValue: W): T[]; /** * @see _.first * @param whereValue "_.where" style callback value **/ first( array: List, whereValue: W): T[]; /** * @see _.first **/ head(array: Array): T; /** * @see _.first **/ head(array: List): T; /** * @see _.first **/ head( array: Array, n: number): T[]; /** * @see _.first **/ head( array: List, n: number): T[]; /** * @see _.first **/ head( array: Array, callback: ListIterator, thisArg?: any): T[]; /** * @see _.first **/ head( array: List, callback: ListIterator, thisArg?: any): T[]; /** * @see _.first **/ head( array: Array, pluckValue: string): T[]; /** * @see _.first **/ head( array: List, pluckValue: string): T[]; /** * @see _.first **/ head( array: Array, whereValue: W): T[]; /** * @see _.first **/ head( array: List, whereValue: W): T[]; /** * @see _.first **/ take(array: Array): T[]; /** * @see _.first **/ take(array: List): T[]; /** * @see _.first **/ take( array: Array, n: number): T[]; /** * @see _.first **/ take( array: List, n: number): T[]; /** * Takes the first items from an array or list based on a predicate * @param array The array or list of items on which the result set will be based * @param predicate A predicate function to determine whether a value will be taken. Optional; defaults to identity. * @param [thisArg] The this binding of predicate. */ takeWhile( array: (Array|List), predicate?: ListIterator, thisArg?: any ): T[]; /** * Takes the first items from an array or list based on a predicate * @param array The array or list of items on which the result set will be based * @param pluckValue Uses a _.property style callback to return the property value of the given element */ takeWhile( array: (Array|List), pluckValue: string ): any[]; /** * Takes the first items from an array or list based on a predicate * @param array The array or list of items on which the result set will be based * @param whereValue Uses a _.matches style callback to return the first elements that match the given value */ takeWhile( array: (Array|List), whereValue: W ): T[]; } interface LoDashArrayWrapper { /** * @see _.first **/ first(): T; /** * @see _.first * @param n The number of elements to return. **/ first(n: number): LoDashArrayWrapper; /** * @see _.first * @param callback The function called per element. * @param [thisArg] The this binding of callback. **/ first( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.first * @param pluckValue "_.pluck" style callback value **/ first(pluckValue: string): LoDashArrayWrapper; /** * @see _.first * @param whereValue "_.where" style callback value **/ first(whereValue: W): LoDashArrayWrapper; /** * @see _.first **/ head(): T; /** * @see _.first * @param n The number of elements to return. **/ head(n: number): LoDashArrayWrapper; /** * @see _.first * @param callback The function called per element. * @param [thisArg] The this binding of callback. **/ head( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.first * @param pluckValue "_.pluck" style callback value **/ head(pluckValue: string): LoDashArrayWrapper; /** * @see _.first * @param whereValue "_.where" style callback value **/ head(whereValue: W): LoDashArrayWrapper; /** * @see _.first **/ take(): LoDashArrayWrapper; /** * @see _.first * @param n The number of elements to return. **/ take(n: number): LoDashArrayWrapper; /** * Takes the first items based on a predicate * @param predicate The function called per element. * @param [thisArg] The this binding of callback. **/ takeWhile( predicate: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * Takes the first items based on a predicate * @param pluckValue Uses a _.property style callback to return the property value of the given element **/ takeWhile( pluckValue: string): LoDashArrayWrapper; /** * Takes the first items based on a predicate * @param whereValue Uses a _.matches style callback to return the first elements that match the given value **/ takeWhile( whereValue: W): LoDashArrayWrapper; } interface MaybeNestedList extends List> { } interface RecursiveList extends List> { } //_.flatten interface LoDashStatic { /** * Flattens a nested array a single level. * * _.flatten(x) is equivalent to _.flatten(x, false); * * @param array The array to flatten. * @return `array` flattened. **/ flatten(array: MaybeNestedList): T[]; /** * Flattens a nested array. If isDeep is true the array is recursively flattened, otherwise it is only * flattened a single level. * * If you know whether or not this should be recursively at compile time, you typically want to use a * version without a boolean parameter (i.e. `_.flatten(x)` or `_.flattenDeep(x)`). * * @param array The array to flatten. * @param deep Specify a deep flatten. * @return `array` flattened. **/ flatten(array: RecursiveList, isDeep: boolean): List | RecursiveList; /** * Recursively flattens a nested array. * * _.flattenDeep(x) is equivalent to _.flatten(x, true); * * @param array The array to flatten * @return `array` recursively flattened */ flattenDeep(array: RecursiveList): List } interface LoDashArrayWrapper { /** * @see _.flatten **/ flatten(): LoDashArrayWrapper; /** * @see _.flatten **/ flatten(isShallow: boolean): LoDashArrayWrapper; /** * @see _.flattenDeep */ flattenDeep(): LoDashArrayWrapper; } //_.indexOf interface LoDashStatic { /** * Gets the index at which the first occurrence of value is found using strict equality * for comparisons, i.e. ===. If the array is already sorted providing true for fromIndex * will run a faster binary search. * @param array The array to search. * @param value The value to search for. * @param fromIndex The index to search from. * @return The index of `value` within `array`. **/ indexOf( array: Array, value: T): number; /** * @see _.indexOf **/ indexOf( array: List, value: T): number; /** * @see _.indexOf * @param fromIndex The index to search from **/ indexOf( array: Array, value: T, fromIndex: number): number; /** * @see _.indexOf * @param fromIndex The index to search from **/ indexOf( array: List, value: T, fromIndex: number): number; /** * @see _.indexOf * @param isSorted True to perform a binary search on a sorted array. **/ indexOf( array: Array, value: T, isSorted: boolean): number; /** * @see _.indexOf * @param isSorted True to perform a binary search on a sorted array. **/ indexOf( array: List, value: T, isSorted: boolean): number; } //_.initial interface LoDashStatic { /** * Gets all but the last element or last n elements of an array. If a callback is provided * elements at the end of the array are excluded from the result as long as the callback * returns truey. The callback is bound to thisArg and invoked with three arguments; * (value, index, array). * * If a property name is provided for callback the created "_.pluck" style callback will * return the property value of the given element. * * If an object is provided for callback the created "_.where" style callback will return * true for elements that have the properties of the given object, else false. * @param array The array to query. * @param n Leaves this many elements behind, optional. * @return Returns everything but the last `n` elements of `array`. **/ initial( array: Array): T[]; /** * @see _.initial **/ initial( array: List): T[]; /** * @see _.initial * @param n The number of elements to exclude. **/ initial( array: Array, n: number): T[]; /** * @see _.initial * @param n The number of elements to exclude. **/ initial( array: List, n: number): T[]; /** * @see _.initial * @param callback The function called per element **/ initial( array: Array, callback: ListIterator): T[]; /** * @see _.initial * @param callback The function called per element **/ initial( array: List, callback: ListIterator): T[]; /** * @see _.initial * @param pluckValue _.pluck style callback **/ initial( array: Array, pluckValue: string): T[]; /** * @see _.initial * @param pluckValue _.pluck style callback **/ initial( array: List, pluckValue: string): T[]; /** * @see _.initial * @param whereValue _.where style callback **/ initial( array: Array, whereValue: W): T[]; /** * @see _.initial * @param whereValue _.where style callback **/ initial( array: List, whereValue: W): T[]; } //_.intersection interface LoDashStatic { /** * Creates an array of unique values present in all provided arrays using strict * equality for comparisons, i.e. ===. * @param arrays The arrays to inspect. * @return Returns an array of composite values. **/ intersection(...arrays: Array[]): T[]; /** * @see _.intersection **/ intersection(...arrays: List[]): T[]; } //_.last interface LoDashStatic { /** * Gets the last element of an array. * @param array The array to query. * @return Returns the last element of array. **/ last(array: Array): T; } interface LoDashArrayWrapper { /** * @see _.last **/ last(): T; } //_.lastIndexOf interface LoDashStatic { /** * Gets the index at which the last occurrence of value is found using strict equality * for comparisons, i.e. ===. If fromIndex is negative, it is used as the offset from the * end of the collection. * @param array The array to search. * @param value The value to search for. * @param fromIndex The index to search from. * @return The index of the matched value or -1. **/ lastIndexOf( array: Array, value: T, fromIndex?: number): number; /** * @see _.lastIndexOf **/ lastIndexOf( array: List, value: T, fromIndex?: number): number; } //_.pull interface LoDashStatic { /** * Removes all provided values from the given array using strict equality for comparisons, * i.e. ===. * @param array The array to modify. * @param values The values to remove. * @return array. **/ pull( array: Array, ...values: T[]): T[]; /** * @see _.pull **/ pull( array: List, ...values: T[]): T[]; } interface LoDashStatic { /** * Removes all provided values from the given array using strict equality for comparisons, * i.e. ===. * @param array The array to modify. * @param values The values to remove. * @return array. **/ pullAt( array: Array, ...values: any[]): any[]; /** * @see _.pull **/ pullAt( array: List, ...values: any[]): any[]; } //_.remove interface LoDashStatic { /** * Removes all elements from an array that the callback returns truey for and returns * an array of removed elements. The callback is bound to thisArg and invoked with three * arguments; (value, index, array). * * If a property name is provided for callback the created "_.pluck" style callback will * return the property value of the given element. * * If an object is provided for callback the created "_.where" style callback will return * true for elements that have the properties of the given object, else false. * @param array The array to modify. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return A new array of removed elements. **/ remove( array: Array, callback?: ListIterator, thisArg?: any): T[]; /** * @see _.remove **/ remove( array: List, callback?: ListIterator, thisArg?: any): T[]; /** * @see _.remove * @param pluckValue _.pluck style callback **/ remove( array: Array, pluckValue?: string): T[]; /** * @see _.remove * @param pluckValue _.pluck style callback **/ remove( array: List, pluckValue?: string): T[]; /** * @see _.remove * @param whereValue _.where style callback **/ remove( array: Array, wherealue?: Dictionary): T[]; /** * @see _.remove * @param whereValue _.where style callback **/ remove( array: List, wherealue?: Dictionary): T[]; /** * @see _.remove * @param item The item to remove **/ remove( array:Array, item:T): T[]; } //_.rest interface LoDashStatic { /** * The opposite of _.initial this method gets all but the first element or first n elements of * an array. If a callback function is provided elements at the beginning of the array are excluded * from the result as long as the callback returns truey. The callback is bound to thisArg and * invoked with three arguments; (value, index, array). * * If a property name is provided for callback the created "_.pluck" style callback will return * the property value of the given element. * * If an object is provided for callback the created "_.where" style callback will return true * for elements that have the properties of the given object, else false. * @param array The array to query. * @param {(Function|Object|number|string)} [callback=1] The function called per element or the number * of elements to exclude. If a property name or object is provided it will be used to create a * ".pluck" or ".where" style callback, respectively. * @param {*} [thisArg] The this binding of callback. * @return Returns a slice of array. **/ rest(array: Array): T[]; /** * @see _.rest **/ rest(array: List): T[]; /** * @see _.rest **/ rest( array: Array, callback: ListIterator, thisArg?: any): T[]; /** * @see _.rest **/ rest( array: List, callback: ListIterator, thisArg?: any): T[]; /** * @see _.rest **/ rest( array: Array, n: number): T[]; /** * @see _.rest **/ rest( array: List, n: number): T[]; /** * @see _.rest **/ rest( array: Array, pluckValue: string): T[]; /** * @see _.rest **/ rest( array: List, pluckValue: string): T[]; /** * @see _.rest **/ rest( array: Array, whereValue: W): T[]; /** * @see _.rest **/ rest( array: List, whereValue: W): T[]; /** * @see _.rest **/ drop(array: Array): T[]; /** * @see _.rest **/ drop(array: List): T[]; /** * @see _.rest **/ drop( array: Array, callback: ListIterator, thisArg?: any): T[]; /** * @see _.rest **/ drop( array: List, callback: ListIterator, thisArg?: any): T[]; /** * @see _.rest **/ drop( array: Array, n: number): T[]; /** * @see _.rest **/ drop( array: List, n: number): T[]; /** * @see _.rest **/ drop( array: Array, pluckValue: string): T[]; /** * @see _.rest **/ drop( array: List, pluckValue: string): T[]; /** * @see _.rest **/ drop( array: Array, whereValue: W): T[]; /** * @see _.rest **/ drop( array: List, whereValue: W): T[]; /** * @see _.rest **/ tail(array: Array): T[]; /** * @see _.rest **/ tail(array: List): T[]; /** * @see _.rest **/ tail( array: Array, callback: ListIterator, thisArg?: any): T[]; /** * @see _.rest **/ tail( array: List, callback: ListIterator, thisArg?: any): T[]; /** * @see _.rest **/ tail( array: Array, n: number): T[]; /** * @see _.rest **/ tail( array: List, n: number): T[]; /** * @see _.rest **/ tail( array: Array, pluckValue: string): T[]; /** * @see _.rest **/ tail( array: List, pluckValue: string): T[]; /** * @see _.rest **/ tail( array: Array, whereValue: W): T[]; /** * @see _.rest **/ tail( array: List, whereValue: W): T[]; } //_.sortedIndex interface LoDashStatic { /** * Uses a binary search to determine the smallest index at which a value should be inserted * into a given sorted array in order to maintain the sort order of the array. If a callback * is provided it will be executed for value and each element of array to compute their sort * ranking. The callback is bound to thisArg and invoked with one argument; (value). * * If a property name is provided for callback the created "_.pluck" style callback will * return the property value of the given element. * * If an object is provided for callback the created "_.where" style callback will return * true for elements that have the properties of the given object, else false. * @param array The sorted list. * @param value The value to determine its index within `list`. * @param callback Iterator to compute the sort ranking of each value, optional. * @return The index at which value should be inserted into array. **/ sortedIndex( array: Array, value: T, callback?: (x: T) => TSort, thisArg?: any): number; /** * @see _.sortedIndex **/ sortedIndex( array: List, value: T, callback?: (x: T) => TSort, thisArg?: any): number; /** * @see _.sortedIndex * @param pluckValue the _.pluck style callback **/ sortedIndex( array: Array, value: T, pluckValue: string): number; /** * @see _.sortedIndex * @param pluckValue the _.pluck style callback **/ sortedIndex( array: List, value: T, pluckValue: string): number; /** * @see _.sortedIndex * @param pluckValue the _.where style callback **/ sortedIndex( array: Array, value: T, whereValue: W): number; /** * @see _.sortedIndex * @param pluckValue the _.where style callback **/ sortedIndex( array: List, value: T, whereValue: W): number; } //_.union interface LoDashStatic { /** * Creates an array of unique values, in order, of the provided arrays using strict * equality for comparisons, i.e. ===. * @param arrays The arrays to inspect. * @return Returns an array of composite values. **/ union(...arrays: Array[]): T[]; /** * @see _.union **/ union(...arrays: List[]): T[]; } interface LoDashArrayWrapper { /** * @see _.union **/ union(...arrays: (Array|List)[]): LoDashArrayWrapper; } //_.uniq interface LoDashStatic { /** * Creates a duplicate-value-free version of an array using strict equality for comparisons, * i.e. ===. If the array is sorted, providing true for isSorted will use a faster algorithm. * If a callback is provided each element of array is passed through the callback before * uniqueness is computed. The callback is bound to thisArg and invoked with three arguments; * (value, index, array). * * If a property name is provided for callback the created "_.pluck" style callback will * return the property value of the given element. * * If an object is provided for callback the created "_.where" style callback will return * true for elements that have the properties of the given object, else false. * @param array Array to remove duplicates from. * @param isSorted True if `array` is already sorted, optiona, default = false. * @param iterator Transform the elements of `array` before comparisons for uniqueness. * @param context 'this' object in `iterator`, optional. * @return Copy of `array` where all elements are unique. **/ uniq(array: Array, isSorted?: boolean): T[]; /** * @see _.uniq **/ uniq(array: List, isSorted?: boolean): T[]; /** * @see _.uniq **/ uniq( array: Array, isSorted: boolean, callback: ListIterator, thisArg?: any): T[]; /** * @see _.uniq **/ uniq( array: List, isSorted: boolean, callback: ListIterator, thisArg?: any): T[]; /** * @see _.uniq **/ uniq( array: Array, callback: ListIterator, thisArg?: any): T[]; /** * @see _.uniq **/ uniq( array: List, callback: ListIterator, thisArg?: any): T[]; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ uniq( array: Array, isSorted: boolean, pluckValue: string): T[]; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ uniq( array: List, isSorted: boolean, pluckValue: string): T[]; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ uniq( array: Array, pluckValue: string): T[]; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ uniq( array: List, pluckValue: string): T[]; /** * @see _.uniq * @param whereValue _.where style callback **/ uniq( array: Array, isSorted: boolean, whereValue: W): T[]; /** * @see _.uniq * @param whereValue _.where style callback **/ uniq( array: List, isSorted: boolean, whereValue: W): T[]; /** * @see _.uniq * @param whereValue _.where style callback **/ uniq( array: Array, whereValue: W): T[]; /** * @see _.uniq * @param whereValue _.where style callback **/ uniq( array: List, whereValue: W): T[]; /** * @see _.uniq **/ unique(array: Array, isSorted?: boolean): T[]; /** * @see _.uniq **/ unique(array: List, isSorted?: boolean): T[]; /** * @see _.uniq **/ unique( array: Array, callback: ListIterator, thisArg?: any): T[]; /** * @see _.uniq **/ unique( array: List, callback: ListIterator, thisArg?: any): T[]; /** * @see _.uniq **/ unique( array: Array, isSorted: boolean, callback: ListIterator, thisArg?: any): T[]; /** * @see _.uniq **/ unique( array: List, isSorted: boolean, callback: ListIterator, thisArg?: any): T[]; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ unique( array: Array, isSorted: boolean, pluckValue: string): T[]; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ unique( array: List, isSorted: boolean, pluckValue: string): T[]; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ unique( array: Array, pluckValue: string): T[]; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ unique( array: List, pluckValue: string): T[]; /** * @see _.uniq * @param whereValue _.where style callback **/ unique( array: Array, whereValue?: W): T[]; /** * @see _.uniq * @param whereValue _.where style callback **/ unique( array: List, whereValue?: W): T[]; /** * @see _.uniq * @param whereValue _.where style callback **/ unique( array: Array, isSorted: boolean, whereValue?: W): T[]; /** * @see _.uniq * @param whereValue _.where style callback **/ unique( array: List, isSorted: boolean, whereValue?: W): T[]; } interface LoDashArrayWrapper { /** * @see _.uniq **/ uniq(isSorted?: boolean): LoDashArrayWrapper; /** * @see _.uniq **/ uniq( isSorted: boolean, callback: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.uniq **/ uniq( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ uniq( isSorted: boolean, pluckValue: string): LoDashArrayWrapper; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ uniq(pluckValue: string): LoDashArrayWrapper; /** * @see _.uniq * @param whereValue _.where style callback **/ uniq( isSorted: boolean, whereValue: W): LoDashArrayWrapper; /** * @see _.uniq * @param whereValue _.where style callback **/ uniq( whereValue: W): LoDashArrayWrapper; /** * @see _.uniq **/ unique(isSorted?: boolean): LoDashArrayWrapper; /** * @see _.uniq **/ unique( isSorted: boolean, callback: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.uniq **/ unique( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ unique( isSorted: boolean, pluckValue: string): LoDashArrayWrapper; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ unique(pluckValue: string): LoDashArrayWrapper; /** * @see _.uniq * @param whereValue _.where style callback **/ unique( isSorted: boolean, whereValue: W): LoDashArrayWrapper; /** * @see _.uniq * @param whereValue _.where style callback **/ unique( whereValue: W): LoDashArrayWrapper; } //_.without interface LoDashStatic { /** * Creates an array excluding all provided values using strict equality for comparisons, i.e. ===. * @param array The array to filter. * @param values The value(s) to exclude. * @return A new array of filtered values. **/ without( array: Array, ...values: T[]): T[]; /** * @see _.without **/ without( array: List, ...values: T[]): T[]; } //_.xor interface LoDashStatic { /** * Creates an array of unique values that is the symmetric difference of the provided arrays. * @param arrays The arrays to inspect. * @return Returns the new array of values. */ xor(...arrays: List[]): T[]; } interface LoDashArrayWrapper { /** * @see _.xor */ xor(...arrays: T[][]): LoDashArrayWrapper; } interface LoDashObjectWrapper { /** * @see _.xor */ xor(...arrays: T[]): LoDashObjectWrapper; } //_.zip interface LoDashStatic { /** * Creates an array of grouped elements, the first of which contains the first * elements of the given arrays, the second of which contains the second elements * of the given arrays, and so on. * @param arrays Arrays to process. * @return A new array of grouped elements. **/ zip(...arrays: any[][]): any[][]; /** * @see _.zip **/ zip(...arrays: any[]): any[]; /** * @see _.zip **/ unzip(...arrays: any[][]): any[][]; /** * @see _.zip **/ unzip(...arrays: any[]): any[]; } interface LoDashArrayWrapper { /** * @see _.zip **/ zip(...arrays: any[][]): _.LoDashArrayWrapper; /** * @see _.zip **/ unzip(...arrays: any[]): _.LoDashArrayWrapper; } //_.zipObject interface LoDashStatic { /** * The inverse of _.pairs; this method returns an object composed from arrays of property * names and values. Provide either a single two dimensional array, e.g. [[key1, value1], * [key2, value2]] or two arrays, one of property names and one of corresponding values. * @param props The property names. * @param values The property values. * @return Returns the new object. **/ zipObject( props: List, values?: List): TResult; /** * @see _.zipObject **/ zipObject(props: List>): Dictionary; /** * @see _.zipObject **/ object( props: List, values?: List): TResult; /** * @see _.zipObject **/ object(props: List>): Dictionary; } interface LoDashArrayWrapper { /** * @see _.zipObject **/ zipObject(values?: List): _.LoDashObjectWrapper>; /** * @see _.zipObject **/ object(values?: List): _.LoDashObjectWrapper>; } //_.zipWith interface LoDashStatic { /** * This method is like _.zip except that it accepts an iteratee to specify how grouped values should be * combined. The iteratee is bound to thisArg and invoked with four arguments: (accumulator, value, index, * group). * @param {...Array} [arrays] The arrays to process. * @param {Function} [iteratee] The function to combine grouped values. * @param {*} [thisArg] The `this` binding of `iteratee`. * @return Returns the new array of grouped elements. */ zipWith(...args: any[]): TResult[]; } interface LoDashArrayWrapper { /** * @see _.zipWith */ zipWith(...args: any[]): LoDashArrayWrapper; } /********* * Chain * *********/ //_.thru interface LoDashStatic { /** * This method is like _.tap except that it returns the result of interceptor. * @param value The value to provide to interceptor. * @param interceptor The function to invoke. * @param thisArg The this binding of interceptor. * @return Returns the result of interceptor. */ thru( value: T, interceptor: (value: T) => TResult, thisArg?: any): TResult; } interface LoDashWrapperBase { /** * @see _.thru */ thru( interceptor: (value: T) => TResult, thisArg?: any): LoDashWrapper; /** * @see _.thru */ thru( interceptor: (value: T) => TResult, thisArg?: any): LoDashWrapper; /** * @see _.thru */ thru( interceptor: (value: T) => TResult, thisArg?: any): LoDashWrapper; /** * @see _.thru */ thru( interceptor: (value: T) => TResult, thisArg?: any): LoDashObjectWrapper; /** * @see _.thru */ thru( interceptor: (value: T) => TResult[], thisArg?: any): LoDashArrayWrapper; } // _.prototype.commit interface LoDashWrapperBase { /** * Executes the chained sequence and returns the wrapped result. * * @return Returns the new lodash wrapper instance. */ commit(): TWrapper; } /************** * Collection * **************/ //_.at interface LoDashStatic { /** * Creates an array of elements corresponding to the given keys, or indexes, of collection. Keys may be * specified as individual arguments or as arrays of keys. * * @param collection The collection to iterate over. * @param props The property names or indexes of elements to pick, specified individually or in arrays. * @return Returns the new array of picked elements. */ at( collection: List|Dictionary, ...props: Array> ): T[]; } interface LoDashArrayWrapper { /** * @see _.at */ at(...props: Array>): LoDashArrayWrapper; } interface LoDashObjectWrapper { /** * @see _.at */ at(...props: Array>): LoDashArrayWrapper; } //_.contains interface LoDashStatic { /** * Checks if a given value is present in a collection using strict equality for comparisons, * i.e. ===. If fromIndex is negative, it is used as the offset from the end of the collection. * @param collection The collection to iterate over. * @param target The value to check for. * @param fromIndex The index to search from. * @return True if the target element is found, else false. **/ contains( collection: Array, target: T, fromIndex?: number): boolean; /** * @see _.contains **/ contains( collection: List, target: T, fromIndex?: number): boolean; /** * @see _.contains * @param dictionary The dictionary to iterate over. * @param value The value in the dictionary to search for. **/ contains( dictionary: Dictionary, value: T, fromIndex?: number): boolean; /** * @see _.contains * @param searchString the string to search * @param targetString the string to search for **/ contains( searchString: string, targetString: string, fromIndex?: number): boolean; /** * @see _.contains **/ include( collection: Array, target: T, fromIndex?: number): boolean; /** * @see _.contains **/ include( collection: List, target: T, fromIndex?: number): boolean; /** * @see _.contains **/ include( dictionary: Dictionary, value: T, fromIndex?: number): boolean; /** * @see _.contains **/ include( searchString: string, targetString: string, fromIndex?: number): boolean; /** * @see _.contains **/ includes( collection: Array, target: T, fromIndex?: number): boolean; /** * @see _.contains **/ includes( collection: List, target: T, fromIndex?: number): boolean; /** * @see _.contains **/ includes( dictionary: Dictionary, value: T, fromIndex?: number): boolean; /** * @see _.contains **/ includes( searchString: string, targetString: string, fromIndex?: number): boolean; } interface LoDashArrayWrapper { /** * @see _.contains **/ contains(target: T, fromIndex?: number): boolean; /** * @see _.contains **/ include(target: T, fromIndex?: number): boolean; /** * @see _.contains **/ includes(target: T, fromIndex?: number): boolean; } interface LoDashObjectWrapper { /** * @see _.contains **/ contains(target: TValue, fromIndex?: number): boolean; /** * @see _.contains **/ include(target: TValue, fromIndex?: number): boolean; /** * @see _.contains **/ includes(target: TValue, fromIndex?: number): boolean; } interface LoDashStringWrapper { /** * @see _.contains **/ contains(target: string, fromIndex?: number): boolean; /** * @see _.contains **/ include(target: string, fromIndex?: number): boolean; /** * @see _.contains **/ includes(target: string, fromIndex?: number): boolean; } //_.countBy interface LoDashStatic { /** * Creates an object composed of keys generated from the results of running each element * of collection through the callback. The corresponding value of each key is the number * of times the key was returned by the callback. The callback is bound to thisArg and * invoked with three arguments; (value, index|key, collection). * * If a property name is provided for callback the created "_.pluck" style callback will * return the property value of the given element. * * If an object is provided for callback the created "_.where" style callback will return * true for elements that have the properties of the given object, else false. * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return Returns the composed aggregate object. **/ countBy( collection: Array, callback?: ListIterator, thisArg?: any): Dictionary; /** * @see _.countBy * @param callback Function name **/ countBy( collection: List, callback?: ListIterator, thisArg?: any): Dictionary; /** * @see _.countBy * @param callback Function name **/ countBy( collection: Dictionary, callback?: DictionaryIterator, thisArg?: any): Dictionary; /** * @see _.countBy * @param callback Function name **/ countBy( collection: Array, callback: string, thisArg?: any): Dictionary; /** * @see _.countBy * @param callback Function name **/ countBy( collection: List, callback: string, thisArg?: any): Dictionary; /** * @see _.countBy * @param callback Function name **/ countBy( collection: Dictionary, callback: string, thisArg?: any): Dictionary; } interface LoDashArrayWrapper { /** * @see _.countBy **/ countBy( callback?: ListIterator, thisArg?: any): LoDashObjectWrapper>; /** * @see _.countBy * @param callback Function name **/ countBy( callback: string, thisArg?: any): LoDashObjectWrapper>; } //_.every interface LoDashStatic { /** * Checks if the given callback returns truey value for all elements of a collection. * The callback is bound to thisArg and invoked with three arguments; (value, index|key, * collection). * * If a property name is provided for callback the created "_.pluck" style callback will * return the property value of the given element. * * If an object is provided for callback the created "_.where" style callback will return * true for elements that have the properties of the given object, else false. * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return True if all elements passed the callback check, else false. **/ every( collection: Array, callback?: ListIterator, thisArg?: any): boolean; /** * @see _.every * @param pluckValue _.pluck style callback **/ every( collection: List, callback?: ListIterator, thisArg?: any): boolean; /** * @see _.every * @param pluckValue _.pluck style callback **/ every( collection: Dictionary, callback?: DictionaryIterator, thisArg?: any): boolean; /** * @see _.every * @param pluckValue _.pluck style callback **/ every( collection: Array, pluckValue: string): boolean; /** * @see _.every * @param pluckValue _.pluck style callback **/ every( collection: List, pluckValue: string): boolean; /** * @see _.every * @param pluckValue _.pluck style callback **/ every( collection: Dictionary, pluckValue: string): boolean; /** * @see _.every * @param whereValue _.where style callback **/ every( collection: Array, whereValue: W): boolean; /** * @see _.every * @param whereValue _.where style callback **/ every( collection: List, whereValue: W): boolean; /** * @see _.every * @param whereValue _.where style callback **/ every( collection: Dictionary, whereValue: W): boolean; /** * @see _.every **/ all( collection: Array, callback?: ListIterator, thisArg?: any): boolean; /** * @see _.every **/ all( collection: List, callback?: ListIterator, thisArg?: any): boolean; /** * @see _.every **/ all( collection: Dictionary, callback?: DictionaryIterator, thisArg?: any): boolean; /** * @see _.every * @param pluckValue _.pluck style callback **/ all( collection: Array, pluckValue: string): boolean; /** * @see _.every * @param pluckValue _.pluck style callback **/ all( collection: List, pluckValue: string): boolean; /** * @see _.every * @param pluckValue _.pluck style callback **/ all( collection: Dictionary, pluckValue: string): boolean; /** * @see _.every * @param whereValue _.where style callback **/ all( collection: Array, whereValue: W): boolean; /** * @see _.every * @param whereValue _.where style callback **/ all( collection: List, whereValue: W): boolean; /** * @see _.every * @param whereValue _.where style callback **/ all( collection: Dictionary, whereValue: W): boolean; } //_.fill interface LoDashStatic { /** * Fills elements of array with value from start up to, but not including, end. * * Note: This method mutates array. * * @param array (Array): The array to fill. * @param value (*): The value to fill array with. * @param [start=0] (number): The start position. * @param [end=array.length] (number): The end position. * @return (Array): Returns array. */ fill( array: any[], value: any, start?: number, end?: number): TResult[]; /** * @see _.fill */ fill( array: List, value: any, start?: number, end?: number): List; } interface LoDashArrayWrapper { /** * @see _.fill */ fill( value: TResult, start?: number, end?: number): LoDashArrayWrapper; } interface LoDashObjectWrapper { /** * @see _.fill */ fill( value: TResult, start?: number, end?: number): LoDashObjectWrapper>; } //_.filter interface LoDashStatic { /** * Iterates over elements of a collection, returning an array of all elements the * identity function returns truey for. * * @param collection The collection to iterate over. * @return Returns a new array of elements that passed the callback check. **/ filter( collection: (Array|List)): T[]; /** * Iterates over elements of a collection, returning an array of all elements the * callback returns truey for. The callback is bound to thisArg and invoked with three * arguments; (value, index|key, collection). * * If a property name is provided for callback the created "_.pluck" style callback will * return the property value of the given element. * * If an object is provided for callback the created "_.where" style callback will return * true for elements that have the properties of the given object, else false. * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param context The this binding of callback. * @return Returns a new array of elements that passed the callback check. **/ filter( collection: Array, callback: ListIterator, thisArg?: any): T[]; /** * @see _.filter **/ filter( collection: List, callback: ListIterator, thisArg?: any): T[]; /** * @see _.filter **/ filter( collection: Dictionary, callback: DictionaryIterator, thisArg?: any): T[]; /** * @see _.filter * @param pluckValue _.pluck style callback **/ filter( collection: Array, pluckValue: string): T[]; /** * @see _.filter * @param pluckValue _.pluck style callback **/ filter( collection: List, pluckValue: string): T[]; /** * @see _.filter * @param pluckValue _.pluck style callback **/ filter( collection: Dictionary, pluckValue: string): T[]; /** * @see _.filter * @param pluckValue _.pluck style callback **/ filter( collection: Array, whereValue: W): T[]; /** * @see _.filter * @param pluckValue _.pluck style callback **/ filter( collection: List, whereValue: W): T[]; /** * @see _.filter * @param pluckValue _.pluck style callback **/ filter( collection: Dictionary, whereValue: W): T[]; /** * @see _.filter **/ select( collection: Array, callback: ListIterator, thisArg?: any): T[]; /** * @see _.filter **/ select( collection: List, callback: ListIterator, thisArg?: any): T[]; /** * @see _.filter **/ select( collection: Dictionary, callback: DictionaryIterator, thisArg?: any): T[]; /** * @see _.filter * @param pluckValue _.pluck style callback **/ select( collection: Array, pluckValue: string): T[]; /** * @see _.filter * @param pluckValue _.pluck style callback **/ select( collection: List, pluckValue: string): T[]; /** * @see _.filter * @param pluckValue _.pluck style callback **/ select( collection: Dictionary, pluckValue: string): T[]; /** * @see _.filter * @param pluckValue _.pluck style callback **/ select( collection: Array, whereValue: W): T[]; /** * @see _.filter * @param pluckValue _.pluck style callback **/ select( collection: List, whereValue: W): T[]; /** * @see _.filter * @param pluckValue _.pluck style callback **/ select( collection: Dictionary, whereValue: W): T[]; } interface LoDashArrayWrapper { /** * @see _.filter **/ filter(): LoDashArrayWrapper; /** * @see _.filter **/ filter( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.filter * @param pluckValue _.pluck style callback **/ filter( pluckValue: string): LoDashArrayWrapper; /** * @see _.filter * @param pluckValue _.pluck style callback **/ filter( whereValue: W): LoDashArrayWrapper; /** * @see _.filter **/ select( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.filter * @param pluckValue _.pluck style callback **/ select( pluckValue: string): LoDashArrayWrapper; /** * @see _.filter * @param pluckValue _.pluck style callback **/ select( whereValue: W): LoDashArrayWrapper; } interface LoDashObjectWrapper { /** * @see _.filter **/ filter( callback: ObjectIterator, thisArg?: any): LoDashObjectWrapper; } //_.find interface LoDashStatic { /** * Iterates over elements of collection, returning the first element predicate returns * truthy for. The predicate is bound to thisArg and invoked with three arguments: * (value, index|key, collection). * * If a property name is provided for predicate the created _.property style callback * returns the property value of the given element. * * If a value is also provided for thisArg the created _.matchesProperty style callback * returns true for elements that have a matching property value, else false. * * If an object is provided for predicate the created _.matches style callback returns * true for elements that have the properties of the given object, else false. * * @param collection Searches for a value in this list. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return The found element, else undefined. **/ find( collection: Array, callback: ListIterator, thisArg?: any): T; /** * Alias of _.find * @see _.find **/ detect( collection: Array, callback: ListIterator, thisArg?: any): T; /** * @see _.find **/ find( collection: List, callback: ListIterator, thisArg?: any): T; /** * Alias of _.find * @see _.find **/ detect( collection: List, callback: ListIterator, thisArg?: any): T; /** * @see _.find **/ find( collection: Dictionary, callback: DictionaryIterator, thisArg?: any): T; /** * Alias of _.find * @see _.find **/ detect( collection: Dictionary, callback: DictionaryIterator, thisArg?: any): T; /** * @see _.find * @param _.matches style callback **/ find( collection: Array|List|Dictionary, whereValue: W): T; /** * Alias of _.find * @see _.find * @param _.matches style callback **/ detect( collection: Array|List|Dictionary, whereValue: W): T; /** * @see _.find * @param _.matchesProperty style callback **/ find( collection: Array|List|Dictionary, path: string, srcValue: any): T; /** * Alias of _.find * @see _.find * @param _.matchesProperty style callback **/ detect( collection: Array|List|Dictionary, path: string, srcValue: any): T; /** * @see _.find * @param _.property style callback **/ find( collection: Array|List|Dictionary, pluckValue: string): T; /** * Alias of _.find * @see _.find * @param _.property style callback **/ detect( collection: Array|List|Dictionary, pluckValue: string): T; /** * @see _.find **/ findWhere( collection: Array, callback: ListIterator, thisArg?: any): T; /** * @see _.find **/ findWhere( collection: List, callback: ListIterator, thisArg?: any): T; /** * @see _.find **/ findWhere( collection: Dictionary, callback: DictionaryIterator, thisArg?: any): T; /** * @see _.find * @param _.matches style callback **/ findWhere( collection: Array, whereValue: W): T; /** * @see _.find * @param _.matches style callback **/ findWhere( collection: List, whereValue: W): T; /** * @see _.find * @param _.matches style callback **/ findWhere( collection: Dictionary, whereValue: W): T; /** * @see _.find * @param _.property style callback **/ findWhere( collection: Array, pluckValue: string): T; /** * @see _.find * @param _.property style callback **/ findWhere( collection: List, pluckValue: string): T; /** * @see _.find * @param _.property style callback **/ findWhere( collection: Dictionary, pluckValue: string): T; } interface LoDashArrayWrapper { /** * @see _.find */ find( callback: ListIterator, thisArg?: any): T; /** * @see _.find * @param _.matches style callback */ find( whereValue: W): T; /** * @see _.find * @param _.matchesProperty style callback */ find( path: string, srcValue: any): T; /** * @see _.find * @param _.property style callback */ find( pluckValue: string): T; } //_.findLast interface LoDashStatic { /** * This method is like _.find except that it iterates over elements of a collection from * right to left. * @param collection Searches for a value in this list. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return The found element, else undefined. **/ findLast( collection: Array, callback: ListIterator, thisArg?: any): T; /** * @see _.find **/ findLast( collection: List, callback: ListIterator, thisArg?: any): T; /** * @see _.find **/ findLast( collection: Dictionary, callback: DictionaryIterator, thisArg?: any): T; /** * @see _.find * @param _.pluck style callback **/ findLast( collection: Array, whereValue: W): T; /** * @see _.find * @param _.pluck style callback **/ findLast( collection: List, whereValue: W): T; /** * @see _.find * @param _.pluck style callback **/ findLast( collection: Dictionary, whereValue: W): T; /** * @see _.find * @param _.where style callback **/ findLast( collection: Array, pluckValue: string): T; /** * @see _.find * @param _.where style callback **/ findLast( collection: List, pluckValue: string): T; /** * @see _.find * @param _.where style callback **/ findLast( collection: Dictionary, pluckValue: string): T; } interface LoDashArrayWrapper { /** * @see _.findLast */ findLast( callback: ListIterator, thisArg?: any): T; /** * @see _.findLast * @param _.where style callback */ findLast( whereValue: W): T; /** * @see _.findLast * @param _.where style callback */ findLast( pluckValue: string): T; } //_.forEach interface LoDashStatic { /** * Iterates over elements of a collection, executing the callback for each element. * The callback is bound to thisArg and invoked with three arguments; (value, index|key, * collection). Callbacks may exit iteration early by explicitly returning false. * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. **/ forEach( collection: Array, callback: ListIterator, thisArg?: any): Array; /** * @see _.forEach **/ forEach( collection: List, callback: ListIterator, thisArg?: any): List; /** * @see _.forEach **/ forEach( object: Dictionary, callback: DictionaryIterator, thisArg?: any): Dictionary; /** * @see _.each **/ forEach( object: T, callback: ObjectIterator, thisArg?: any): T /** * @see _.forEach **/ each( collection: Array, callback: ListIterator, thisArg?: any): Array; /** * @see _.forEach **/ each( collection: List, callback: ListIterator, thisArg?: any): List; /** * @see _.forEach * @param object The object to iterate over * @param callback The function called per iteration. * @param thisArg The this binding of callback. **/ each( object: Dictionary, callback: DictionaryIterator, thisArg?: any): Dictionary; /** * @see _.each **/ each( object: T, callback: ObjectIterator, thisArg?: any): T } interface LoDashArrayWrapper { /** * @see _.forEach **/ forEach( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.forEach **/ each( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; } interface LoDashObjectWrapper { /** * @see _.forEach **/ forEach( callback: ObjectIterator, thisArg?: any): LoDashObjectWrapper; /** * @see _.forEach **/ each( callback: ObjectIterator, thisArg?: any): LoDashObjectWrapper; } //_.forEachRight interface LoDashStatic { /** * This method is like _.forEach except that it iterates over elements of a * collection from right to left. * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. **/ forEachRight( collection: Array, callback: ListIterator, thisArg?: any): Array; /** * @see _.forEachRight **/ forEachRight( collection: List, callback: ListIterator, thisArg?: any): List; /** * @see _.forEachRight **/ forEachRight( object: Dictionary, callback: DictionaryIterator, thisArg?: any): Dictionary; /** * @see _.forEachRight **/ eachRight( collection: Array, callback: ListIterator, thisArg?: any): Array; /** * @see _.forEachRight **/ eachRight( collection: List, callback: ListIterator, thisArg?: any): List; /** * @see _.forEachRight * @param object The object to iterate over * @param callback The function called per iteration. * @param thisArg The this binding of callback. **/ eachRight( object: Dictionary, callback: DictionaryIterator, thisArg?: any): Dictionary; } interface LoDashArrayWrapper { /** * @see _.forEachRight **/ forEachRight( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.forEachRight **/ eachRight( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; } interface LoDashObjectWrapper { /** * @see _.forEachRight **/ forEachRight( callback: ObjectIterator, thisArg?: any): LoDashObjectWrapper>; /** * @see _.forEachRight * @param object The object to iterate over * @param callback The function called per iteration. * @param thisArg The this binding of callback. **/ eachRight( callback: ObjectIterator, thisArg?: any): LoDashObjectWrapper>; } //_.groupBy interface LoDashStatic { /** * Creates an object composed of keys generated from the results of running each element * of a collection through the callback. The corresponding value of each key is an array * of the elements responsible for generating the key. The callback is bound to thisArg * and invoked with three arguments; (value, index|key, collection). * * If a property name is provided for callback the created "_.pluck" style callback will * return the property value of the given element. * If an object is provided for callback the created "_.where" style callback will return * true for elements that have the properties of the given object, else false * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return Returns the composed aggregate object. **/ groupBy( collection: Array, callback?: ListIterator, thisArg?: any): Dictionary; /** * @see _.groupBy **/ groupBy( collection: List, callback?: ListIterator, thisArg?: any): Dictionary; /** * @see _.groupBy * @param pluckValue _.pluck style callback **/ groupBy( collection: Array, pluckValue: string): Dictionary; /** * @see _.groupBy * @param pluckValue _.pluck style callback **/ groupBy( collection: List, pluckValue: string): Dictionary; /** * @see _.groupBy * @param whereValue _.where style callback **/ groupBy( collection: Array, whereValue: W): Dictionary; /** * @see _.groupBy * @param whereValue _.where style callback **/ groupBy( collection: List, whereValue: W): Dictionary; /** * @see _.groupBy **/ groupBy( collection: Dictionary, callback?: DictionaryIterator, thisArg?: any): Dictionary; /** * @see _.groupBy * @param pluckValue _.pluck style callback **/ groupBy( collection: Dictionary, pluckValue: string): Dictionary; /** * @see _.groupBy * @param whereValue _.where style callback **/ groupBy( collection: Dictionary, whereValue: W): Dictionary; } interface LoDashArrayWrapper { /** * @see _.groupBy **/ groupBy( callback: ListIterator, thisArg?: any): _.LoDashObjectWrapper<_.Dictionary>; /** * @see _.groupBy **/ groupBy( pluckValue: string): _.LoDashObjectWrapper<_.Dictionary>; /** * @see _.groupBy **/ groupBy( whereValue: W): _.LoDashObjectWrapper<_.Dictionary>; } interface LoDashObjectWrapper { /** * @see _.groupBy **/ groupBy( callback: ListIterator, thisArg?: any): _.LoDashObjectWrapper<_.Dictionary>; /** * @see _.groupBy **/ groupBy( pluckValue: string): _.LoDashObjectWrapper<_.Dictionary>; /** * @see _.groupBy **/ groupBy( whereValue: W): _.LoDashObjectWrapper<_.Dictionary>; } //_.indexBy interface LoDashStatic { /** * Creates an object composed of keys generated from the results of running each element * of the collection through the given callback. The corresponding value of each key is * the last element responsible for generating the key. The callback is bound to thisArg * and invoked with three arguments; (value, index|key, collection). * * If a property name is provided for callback the created "_.pluck" style callback will * return the property value of the given element. * * If an object is provided for callback the created "_.where" style callback will return * true for elements that have the properties of the given object, else false. * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return Returns the composed aggregate object. **/ indexBy( list: Array, iterator: ListIterator, context?: any): Dictionary; /** * @see _.indexBy **/ indexBy( list: List, iterator: ListIterator, context?: any): Dictionary; /** * @see _.indexBy * @param pluckValue _.pluck style callback **/ indexBy( collection: Array, pluckValue: string): Dictionary; /** * @see _.indexBy * @param pluckValue _.pluck style callback **/ indexBy( collection: List, pluckValue: string): Dictionary; /** * @see _.indexBy * @param whereValue _.where style callback **/ indexBy( collection: Array, whereValue: W): Dictionary; /** * @see _.indexBy * @param whereValue _.where style callback **/ indexBy( collection: List, whereValue: W): Dictionary; } //_.invoke interface LoDashStatic { /** * Invokes the method named by methodName on each element in the collection returning * an array of the results of each invoked method. Additional arguments will be provided * to each invoked method. If methodName is a function it will be invoked for, and this * bound to, each element in the collection. * @param collection The collection to iterate over. * @param methodName The name of the method to invoke. * @param args Arguments to invoke the method with. **/ invoke( collection: Array, methodName: string, ...args: any[]): any; /** * @see _.invoke **/ invoke( collection: List, methodName: string, ...args: any[]): any; /** * @see _.invoke **/ invoke( collection: Dictionary, methodName: string, ...args: any[]): any; /** * @see _.invoke **/ invoke( collection: Array, method: Function, ...args: any[]): any; /** * @see _.invoke **/ invoke( collection: List, method: Function, ...args: any[]): any; /** * @see _.invoke **/ invoke( collection: Dictionary, method: Function, ...args: any[]): any; } //_.map interface LoDashStatic { /** * Creates an array of values by running each element in the collection through the callback. * The callback is bound to thisArg and invoked with three arguments; (value, index|key, * collection). * * If a property name is provided for callback the created "_.pluck" style callback will return * the property value of the given element. * * If an object is provided for callback the created "_.where" style callback will return true * for elements that have the properties of the given object, else false. * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param theArg The this binding of callback. * @return The mapped array result. **/ map( collection: Array, callback: ListIterator, thisArg?: any): TResult[]; /** * @see _.map **/ map( collection: List, callback: ListIterator, thisArg?: any): TResult[]; /** * @see _.map * @param object The object to iterate over. * @param callback The function called per iteration. * @param thisArg `this` object in `iterator`, optional. * @return The mapped object result. **/ map( object: Dictionary, callback: DictionaryIterator, thisArg?: any): TResult[]; /** * @see _.map * @param pluckValue _.pluck style callback **/ map( collection: Array, pluckValue: string): TResult[]; /** * @see _.map * @param pluckValue _.pluck style callback **/ map( collection: List, pluckValue: string): TResult[]; /** * @see _.map **/ collect( collection: Array, callback: ListIterator, thisArg?: any): TResult[]; /** * @see _.map **/ collect( collection: List, callback: ListIterator, thisArg?: any): TResult[]; /** * @see _.map **/ collect( object: Dictionary, callback: DictionaryIterator, thisArg?: any): TResult[]; /** * @see _.map **/ collect( collection: Array, pluckValue: string): TResult[]; /** * @see _.map **/ collect( collection: List, pluckValue: string): TResult[]; } interface LoDashArrayWrapper { /** * @see _.map **/ map( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.map * @param pluckValue _.pluck style callback **/ map( pluckValue: string): LoDashArrayWrapper; /** * @see _.map **/ collect( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.map **/ collect( pluckValue: string): LoDashArrayWrapper; } interface LoDashObjectWrapper { /** * @see _.map **/ map( callback: ObjectIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.map **/ collect( callback: ObjectIterator, thisArg?: any): LoDashArrayWrapper; } //_.ceil interface LoDashStatic { /** * Calculates n rounded up to precision. * @param n The number to round up. * @param precision The precision to round up to. * @return Returns the rounded up number. */ ceil(n: number, precision?: number): number; } interface LoDashWrapper { /** * @see _.ceil */ ceil(precision?: number): number; } //_.floor interface LoDashStatic { /** * Calculates n rounded down to precision. * @param n The number to round down. * @param precision The precision to round down to. * @return Returns the rounded down number. */ floor(n: number, precision?: number): number; } interface LoDashWrapper { /** * @see _.floor */ floor(precision?: number): number; } //_.max interface LoDashStatic { /** * Retrieves the maximum value of a collection. If the collection is empty or falsey -Infinity is * returned. If a callback is provided it will be executed for each value in the collection to * generate the criterion by which the value is ranked. The callback is bound to thisArg and invoked * with three arguments; (value, index, collection). * * If a property name is provided for callback the created "_.pluck" style callback will return the * property value of the given element. * * If an object is provided for callback the created "_.where" style callback will return true for * elements that have the properties of the given object, else false. * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return Returns the maximum value. **/ max( collection: Array, callback?: ListIterator, thisArg?: any): T; /** * @see _.max **/ max( collection: List, callback?: ListIterator, thisArg?: any): T; /** * @see _.max **/ max( collection: Dictionary, callback?: DictionaryIterator, thisArg?: any): T; /** * @see _.max * @param pluckValue _.pluck style callback **/ max( collection: Array, pluckValue: string): T; /** * @see _.max * @param pluckValue _.pluck style callback **/ max( collection: List, pluckValue: string): T; /** * @see _.max * @param pluckValue _.pluck style callback **/ max( collection: Dictionary, pluckValue: string): T; /** * @see _.max * @param whereValue _.where style callback **/ max( collection: Array, whereValue: W): T; /** * @see _.max * @param whereValue _.where style callback **/ max( collection: List, whereValue: W): T; /** * @see _.max * @param whereValue _.where style callback **/ max( collection: Dictionary, whereValue: W): T; } interface LoDashArrayWrapper { /** * @see _.max **/ max( callback?: ListIterator, thisArg?: any): LoDashWrapper; /** * @see _.max * @param pluckValue _.pluck style callback **/ max( pluckValue: string): LoDashWrapper; /** * @see _.max * @param whereValue _.where style callback **/ max( whereValue: W): LoDashWrapper; } //_.min interface LoDashStatic { /** * Retrieves the minimum value of a collection. If the collection is empty or falsey * Infinity is returned. If a callback is provided it will be executed for each value * in the collection to generate the criterion by which the value is ranked. The callback * is bound to thisArg and invoked with three arguments; (value, index, collection). * * If a property name is provided for callback the created "_.pluck" style callback * will return the property value of the given element. * * If an object is provided for callback the created "_.where" style callback will * return true for elements that have the properties of the given object, else false. * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return Returns the maximum value. **/ min( collection: Array, callback?: ListIterator, thisArg?: any): T; /** * @see _.min **/ min( collection: List, callback?: ListIterator, thisArg?: any): T; /** * @see _.min **/ min( collection: Dictionary, callback?: ListIterator, thisArg?: any): T; /** * @see _.min * @param pluckValue _.pluck style callback **/ min( collection: Array, pluckValue: string): T; /** * @see _.min * @param pluckValue _.pluck style callback **/ min( collection: List, pluckValue: string): T; /** * @see _.min * @param pluckValue _.pluck style callback **/ min( collection: Dictionary, pluckValue: string): T; /** * @see _.min * @param whereValue _.where style callback **/ min( collection: Array, whereValue: W): T; /** * @see _.min * @param whereValue _.where style callback **/ min( collection: List, whereValue: W): T; /** * @see _.min * @param whereValue _.where style callback **/ min( collection: Dictionary, whereValue: W): T; } interface LoDashArrayWrapper { /** * @see _.min **/ min( callback?: ListIterator, thisArg?: any): LoDashWrapper; /** * @see _.min * @param pluckValue _.pluck style callback **/ min( pluckValue: string): LoDashWrapper; /** * @see _.min * @param whereValue _.where style callback **/ min( whereValue: W): LoDashWrapper; } //_.round interface LoDashStatic { /** * Calculates n rounded to precision. * @param n The number to round. * @param precision The precision to round to. * @return Returns the rounded number. */ round(n: number, precision?: number): number; } interface LoDashWrapper { /** * @see _.round */ round(precision?: number): number; } //_.sum interface LoDashStatic { /** * Gets the sum of the values in collection. * * @param collection The collection to iterate over. * @param iteratee The function invoked per iteration. * @param thisArg The this binding of iteratee. * @return Returns the sum. **/ sum( collection: Array): number; /** * @see _.sum **/ sum( collection: List): number; /** * @see _.sum **/ sum( collection: Dictionary): number; /** * @see _.sum **/ sum( collection: Array, iteratee: ListIterator, thisArg?: any): number; /** * @see _.sum **/ sum( collection: List, iteratee: ListIterator, thisArg?: any): number; /** * @see _.sum **/ sum( collection: Dictionary, iteratee: ObjectIterator, thisArg?: any): number; /** * @see _.sum * @param property _.property callback shorthand. **/ sum( collection: Array, property: string): number; /** * @see _.sum * @param property _.property callback shorthand. **/ sum( collection: List, property: string): number; /** * @see _.sum * @param property _.property callback shorthand. **/ sum( collection: Dictionary, property: string): number; } interface LoDashNumberArrayWrapper { /** * @see _.sum **/ sum(): number; /** * @see _.sum **/ sum( iteratee: ListIterator, thisArg?: any): number; } interface LoDashArrayWrapper { /** * @see _.sum **/ sum(): number; /** * @see _.sum **/ sum( iteratee: ListIterator, thisArg?: any): number; /** * @see _.sum * @param property _.property callback shorthand. **/ sum( property: string): number; } interface LoDashObjectWrapper { /** * @see _.sum **/ sum(): number; /** * @see _.sum **/ sum( iteratee: ObjectIterator, thisArg?: any): number; /** * @see _.sum * @param property _.property callback shorthand. **/ sum( property: string): number; } //_.pluck interface LoDashStatic { /** * Retrieves the value of a specified property from all elements in the collection. * @param collection The collection to iterate over. * @param property The property to pluck. * @return A new array of property values. **/ pluck( collection: Array, property: string|string[]): any[]; /** * @see _.pluck **/ pluck( collection: List, property: string|string[]): any[]; /** * @see _.pluck **/ pluck( collection: Dictionary, property: string|string[]): any[]; } interface LoDashArrayWrapper { /** * @see _.pluck **/ pluck( property: string): LoDashArrayWrapper; } interface LoDashObjectWrapper { /** * @see _.pluck **/ pluck( property: string): LoDashArrayWrapper; } //_.partition interface LoDashStatic { /** * Creates an array of elements split into two groups, the first of which contains elements predicate returns truthy for, * while the second of which contains elements predicate returns falsey for. * The predicate is bound to thisArg and invoked with three arguments: (value, index|key, collection). * * If a property name is provided for predicate the created _.property style callback * returns the property value of the given element. * * If a value is also provided for thisArg the created _.matchesProperty style callback * returns true for elements that have a matching property value, else false. * * If an object is provided for predicate the created _.matches style callback returns * true for elements that have the properties of the given object, else false. * * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of predicate. * @return Returns the array of grouped elements. **/ partition( collection: List, callback: ListIterator, thisArg?: any): T[][]; /** * @see _.partition **/ partition( collection: Dictionary, callback: DictionaryIterator, thisArg?: any): T[][]; /** * @see _.partition **/ partition( collection: List, whereValue: W): T[][]; /** * @see _.partition **/ partition( collection: Dictionary, whereValue: W): T[][]; /** * @see _.partition **/ partition( collection: List, path: string, srcValue: any): T[][]; /** * @see _.partition **/ partition( collection: Dictionary, path: string, srcValue: any): T[][]; /** * @see _.partition **/ partition( collection: List, pluckValue: string): T[][]; /** * @see _.partition **/ partition( collection: Dictionary, pluckValue: string): T[][]; } interface LoDashStringWrapper { /** * @see _.partition */ partition( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; } interface LoDashArrayWrapper { /** * @see _.partition */ partition( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.partition */ partition( whereValue: W): LoDashArrayWrapper; /** * @see _.partition */ partition( path: string, srcValue: any): LoDashArrayWrapper; /** * @see _.partition */ partition( pluckValue: string): LoDashArrayWrapper; } interface LoDashObjectWrapper { /** * @see _.partition */ partition( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.partition */ partition( callback: DictionaryIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.partition */ partition( whereValue: W): LoDashArrayWrapper; /** * @see _.partition */ partition( path: string, srcValue: any): LoDashArrayWrapper; /** * @see _.partition */ partition( pluckValue: string): LoDashArrayWrapper; } //_.reduce interface LoDashStatic { /** * Reduces a collection to a value which is the accumulated result of running each * element in the collection through the callback, where each successive callback execution * consumes the return value of the previous execution. If accumulator is not provided the * first element of the collection will be used as the initial accumulator value. The callback * is bound to thisArg and invoked with four arguments; (accumulator, value, index|key, collection). * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param accumulator Initial value of the accumulator. * @param thisArg The this binding of callback. * @return Returns the accumulated value. **/ reduce( collection: Array, callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduce **/ reduce( collection: List, callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduce **/ reduce( collection: Dictionary, callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduce **/ reduce( collection: Array, callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduce **/ reduce( collection: List, callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduce **/ reduce( collection: Dictionary, callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduce **/ inject( collection: Array, callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduce **/ inject( collection: List, callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduce **/ inject( collection: Dictionary, callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduce **/ inject( collection: Array, callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduce **/ inject( collection: List, callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduce **/ inject( collection: Dictionary, callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduce **/ foldl( collection: Array, callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduce **/ foldl( collection: List, callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduce **/ foldl( collection: Dictionary, callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduce **/ foldl( collection: Array, callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduce **/ foldl( collection: List, callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduce **/ foldl( collection: Dictionary, callback: MemoIterator, thisArg?: any): TResult; } interface LoDashArrayWrapper { /** * @see _.reduce **/ reduce( callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduce **/ reduce( callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduce **/ inject( callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduce **/ inject( callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduce **/ foldl( callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduce **/ foldl( callback: MemoIterator, thisArg?: any): TResult; } interface LoDashObjectWrapper { /** * @see _.reduce **/ reduce( callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduce **/ reduce( callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduce **/ inject( callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduce **/ inject( callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduce **/ foldl( callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduce **/ foldl( callback: MemoIterator, thisArg?: any): TResult; } //_.reduceRight interface LoDashStatic { /** * This method is like _.reduce except that it iterates over elements of a collection from * right to left. * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param accumulator Initial value of the accumulator. * @param thisArg The this binding of callback. * @return The accumulated value. **/ reduceRight( collection: Array, callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduceRight **/ reduceRight( collection: List, callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduceRight **/ reduceRight( collection: Dictionary, callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduceRight **/ reduceRight( collection: Array, callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduceRight **/ reduceRight( collection: List, callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduceRight **/ reduceRight( collection: Dictionary, callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduceRight **/ foldr( collection: Array, callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduceRight **/ foldr( collection: List, callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduceRight **/ foldr( collection: Dictionary, callback: MemoIterator, accumulator: TResult, thisArg?: any): TResult; /** * @see _.reduceRight **/ foldr( collection: Array, callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduceRight **/ foldr( collection: List, callback: MemoIterator, thisArg?: any): TResult; /** * @see _.reduceRight **/ foldr( collection: Dictionary, callback: MemoIterator, thisArg?: any): TResult; } //_.reject interface LoDashStatic { /** * The opposite of _.filter this method returns the elements of a collection that * the callback does not return truey for. * * If a property name is provided for callback the created "_.pluck" style callback * will return the property value of the given element. * * If an object is provided for callback the created "_.where" style callback will * return true for elements that have the properties of the given object, else false. * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return A new array of elements that failed the callback check. **/ reject( collection: Array, callback: ListIterator, thisArg?: any): T[]; /** * @see _.reject **/ reject( collection: List, callback: ListIterator, thisArg?: any): T[]; /** * @see _.reject **/ reject( collection: Dictionary, callback: DictionaryIterator, thisArg?: any): T[]; /** * @see _.reject * @param pluckValue _.pluck style callback **/ reject( collection: Array, pluckValue: string): T[]; /** * @see _.reject * @param pluckValue _.pluck style callback **/ reject( collection: List, pluckValue: string): T[]; /** * @see _.reject * @param pluckValue _.pluck style callback **/ reject( collection: Dictionary, pluckValue: string): T[]; /** * @see _.reject * @param whereValue _.where style callback **/ reject( collection: Array, whereValue: W): T[]; /** * @see _.reject * @param whereValue _.where style callback **/ reject( collection: List, whereValue: W): T[]; /** * @see _.reject * @param whereValue _.where style callback **/ reject( collection: Dictionary, whereValue: W): T[]; } interface LoDashArrayWrapper { /** * @see _.reject **/ reject( callback: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.reject * @param pluckValue _.pluck style callback **/ reject(pluckValue: string): LoDashArrayWrapper; /** * @see _.reject * @param whereValue _.where style callback **/ reject(whereValue: W): LoDashArrayWrapper; } //_.sample interface LoDashStatic { /** * Retrieves a random element or n random elements from a collection. * @param collection The collection to sample. * @return Returns the random sample(s) of collection. **/ sample(collection: Array): T; /** * @see _.sample **/ sample(collection: List): T; /** * @see _.sample **/ sample(collection: Dictionary): T; /** * @see _.sample * @param n The number of elements to sample. **/ sample(collection: Array, n: number): T[]; /** * @see _.sample * @param n The number of elements to sample. **/ sample(collection: List, n: number): T[]; /** * @see _.sample * @param n The number of elements to sample. **/ sample(collection: Dictionary, n: number): T[]; } interface LoDashArrayWrapper { /** * @see _.sample **/ sample(n: number): LoDashArrayWrapper; /** * @see _.sample **/ sample(): LoDashWrapper; } //_.shuffle interface LoDashStatic { /** * Creates an array of shuffled values, using a version of the Fisher-Yates shuffle. * See http://en.wikipedia.org/wiki/Fisher-Yates_shuffle. * @param collection The collection to shuffle. * @return Returns a new shuffled collection. **/ shuffle(collection: Array): T[]; /** * @see _.shuffle **/ shuffle(collection: List): T[]; /** * @see _.shuffle **/ shuffle(collection: Dictionary): T[]; } interface LoDashArrayWrapper { /** * @see _.shuffle **/ shuffle(): LoDashArrayWrapper; } interface LoDashObjectWrapper { /** * @see _.shuffle **/ shuffle(): LoDashArrayWrapper; } //_.size interface LoDashStatic { /** * Gets the size of the collection by returning collection.length for arrays and array-like * objects or the number of own enumerable properties for objects. * @param collection The collection to inspect. * @return collection.length **/ size(collection: Array): number; /** * @see _.size **/ size(collection: List): number; /** * @see _.size * @param object The object to inspect * @return The number of own enumerable properties. **/ size(object: T): number; /** * @see _.size * @param aString The string to inspect * @return The length of aString **/ size(aString: string): number; } interface LoDashArrayWrapper { /** * @see _.size **/ size(): number; } interface LoDashObjectWrapper { /** * @see _.size **/ size(): number; } //_.some interface LoDashStatic { /** * Checks if the callback returns a truey value for any element of a collection. The function * returns as soon as it finds a passing value and does not iterate over the entire collection. * The callback is bound to thisArg and invoked with three arguments; (value, index|key, collection). * * If a property name is provided for callback the created "_.pluck" style callback will return * the property value of the given element. * * If an object is provided for callback the created "_.where" style callback will return true for * elements that have the properties of the given object, else false. * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return True if any element passed the callback check, else false. **/ some( collection: Array, callback?: ListIterator, thisArg?: any): boolean; /** * @see _.some **/ some( collection: List, callback?: ListIterator, thisArg?: any): boolean; /** * @see _.some **/ some( collection: Dictionary, callback?: DictionaryIterator, thisArg?: any): boolean; /** * @see _.some **/ some( collection: {}, callback?: ListIterator<{}, boolean>, thisArg?: any): boolean; /** * @see _.some * @param pluckValue _.pluck style callback **/ some( collection: Array, pluckValue: string): boolean; /** * @see _.some * @param pluckValue _.pluck style callback **/ some( collection: List, pluckValue: string): boolean; /** * @see _.some * @param pluckValue _.pluck style callback **/ some( collection: Dictionary, pluckValue: string): boolean; /** * @see _.some * @param whereValue _.where style callback **/ some( collection: Array, whereValue: W): boolean; /** * @see _.some * @param whereValue _.where style callback **/ some( collection: List, whereValue: W): boolean; /** * @see _.some * @param whereValue _.where style callback **/ some( collection: Dictionary, whereValue: W): boolean; /** * @see _.some **/ any( collection: Array, callback?: ListIterator, thisArg?: any): boolean; /** * @see _.some **/ any( collection: List, callback?: ListIterator, thisArg?: any): boolean; /** * @see _.some **/ any( collection: Dictionary, callback?: DictionaryIterator, thisArg?: any): boolean; /** * @see _.some **/ any( collection: {}, callback?: ListIterator<{}, boolean>, thisArg?: any): boolean; /** * @see _.some * @param pluckValue _.pluck style callback **/ any( collection: Array, pluckValue: string): boolean; /** * @see _.some * @param pluckValue _.pluck style callback **/ any( collection: List, pluckValue: string): boolean; /** * @see _.some * @param pluckValue _.pluck style callback **/ any( collection: Dictionary, pluckValue: string): boolean; /** * @see _.some * @param whereValue _.where style callback **/ any( collection: Array, whereValue: W): boolean; /** * @see _.some * @param whereValue _.where style callback **/ any( collection: List, whereValue: W): boolean; /** * @see _.some * @param whereValue _.where style callback **/ any( collection: Dictionary, whereValue: W): boolean; } //_.sortBy interface LoDashStatic { /** * Creates an array of elements, sorted in ascending order by the results of running each * element in a collection through the callback. This method performs a stable sort, that * is, it will preserve the original sort order of equal elements. The callback is bound * to thisArg and invoked with three arguments; (value, index|key, collection). * * If a property name is provided for callback the created "_.pluck" style callback will * return the property value of the given element. * * If a value is also provided for thisArg the created "_.matchesProperty" style callback * returns true for elements that have a matching property value, else false. * * If an object is provided for an iteratee the created "_.matches" style callback returns * true for elements that have the properties of the given object, else false. * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return A new array of sorted elements. **/ sortBy( collection: Array, iteratee?: ListIterator, thisArg?: any): T[]; /** * @see _.sortBy **/ sortBy( collection: List, iteratee?: ListIterator, thisArg?: any): T[]; /** * @see _.sortBy * @param pluckValue _.pluck style callback **/ sortBy( collection: Array, pluckValue: string): T[]; /** * @see _.sortBy * @param pluckValue _.pluck style callback **/ sortBy( collection: List, pluckValue: string): T[]; /** * @see _.sortBy * @param whereValue _.where style callback **/ sortBy( collection: Array, whereValue: W): T[]; /** * @see _.sortBy * @param whereValue _.where style callback **/ sortBy( collection: List, whereValue: W): T[]; /** * Sorts by all the given arguments, using either ListIterator, pluckValue, or whereValue foramts * @param args The rules by which to sort */ sortByAll( collection: (Array|List), ...args: (ListIterator|Object|string)[] ): T[]; } interface LoDashArrayWrapper { /** * @see _.sortBy **/ sortBy( iteratee?: ListIterator, thisArg?: any): LoDashArrayWrapper; /** * @see _.sortBy * @param pluckValue _.pluck style callback **/ sortBy(pluckValue: string): LoDashArrayWrapper; /** * @see _.sortBy * @param whereValue _.where style callback **/ sortBy(whereValue: W): LoDashArrayWrapper; /** * Sorts by all the given arguments, using either ListIterator, pluckValue, or whereValue foramts * @param args The rules by which to sort */ sortByAll(...args: (ListIterator|Object|string)[]): LoDashArrayWrapper; } //_.sortByAll interface LoDashStatic { /** * This method is like "_.sortBy" except that it can sort by multiple iteratees or * property names. * * If a property name is provided for an iteratee the created "_.property" style callback * returns the property value of the given element. * * If a value is also provided for thisArg the created "_.matchesProperty" style callback * returns true for elements that have a matching property value, else false. * * If an object is provided for an iteratee the created "_.matches" style callback returns * true for elements that have the properties of the given object, else false. * * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return A new array of sorted elements. **/ sortByAll( collection: Array, iteratees: (ListIterator|string|Object)[]): T[]; /** * @see _.sortByAll **/ sortByAll( collection: List, iteratees: (ListIterator|string|Object)[]): T[]; /** * @see _.sortByAll **/ sortByAll( collection: Array, ...iteratees: (ListIterator|string|Object)[]): T[]; /** * @see _.sortByAll **/ sortByAll( collection: List, ...iteratees: (ListIterator|string|Object)[]): T[]; } interface LoDashArrayWrapper { /** * @see _.sortByAll **/ sortByAll( iteratees: (ListIterator|string|Object)[]): LoDashArrayWrapper; /** * @see _.sortByAll **/ sortByAll( ...iteratees: (ListIterator|string|Object)[]): LoDashArrayWrapper; } //_.sortByOrder interface LoDashStatic { /** * This method is like "_.sortByAll" except that it allows specifying the sort orders of the * iteratees to sort by. If orders is unspecified, all values are sorted in ascending order. * Otherwise, a value is sorted in ascending order if its corresponding order is "asc", and * descending if "desc". * * If a property name is provided for an iteratee the created "_.property" style callback * returns the property value of the given element. * * If an object is provided for an iteratee the created "_.matches" style callback returns * true for elements that have the properties of the given object, else false. * * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return A new array of sorted elements. **/ sortByOrder( collection: Array, iteratees: (ListIterator|string|Object)[], orders?: boolean[]): T[]; /** * @see _.sortByOrder **/ sortByOrder( collection: List, iteratees: (ListIterator|string|Object)[], orders?: boolean[]): T[]; /** * @see _.sortByOrder **/ sortByOrder( collection: Array, iteratees: (ListIterator|string|Object)[], orders?: string[]): T[]; /** * @see _.sortByOrder **/ sortByOrder( collection: List, iteratees: (ListIterator|string|Object)[], orders?: string[]): T[]; } interface LoDashArrayWrapper { /** * @see _.sortByOrder **/ sortByOrder( iteratees: (ListIterator|string|Object)[], orders?: boolean[]): LoDashArrayWrapper; /** * @see _.sortByOrder **/ sortByOrder( iteratees: (ListIterator|string|Object)[], orders?: string[]): LoDashArrayWrapper; } //_.toArray interface LoDashStatic { /** * Converts the collection to an array. * @param collection The collection to convert. * @return The new converted array. **/ toArray(collection: Array): T[]; /** * @see _.toArray **/ toArray(collection: List): T[]; /** * @see _.toArray **/ toArray(collection: Dictionary): T[]; } interface LoDashArrayWrapper { /** * @see _.toArray **/ toArray(): LoDashArrayWrapper; } interface LoDashObjectWrapper { /** * @see _.toArray **/ toArray(): LoDashArrayWrapper; } //_.where interface LoDashStatic { /** * Performs a deep comparison of each element in a collection to the given properties * object, returning an array of all elements that have equivalent property values. * @param collection The collection to iterate over. * @param properties The object of property values to filter by. * @return A new array of elements that have the given properties. **/ where( list: Array, properties: U): T[]; /** * @see _.where **/ where( list: List, properties: U): T[]; /** * @see _.where **/ where( list: Dictionary, properties: U): T[]; } interface LoDashArrayWrapper { /** * @see _.where **/ where(properties: U): LoDashArrayWrapper; } /******** * Date * ********/ //_.now interface LoDashStatic { /** * Gets the number of milliseconds that have elapsed since the Unix epoch * (1 January 1970 00:00:00 UTC). * @return The number of milliseconds. **/ now(): number; } /************* * Functions * *************/ //_.after interface LoDashStatic { /** * Creates a function that executes func, with the this binding and arguments of the * created function, only after being called n times. * @param n The number of times the function must be called before func is executed. * @param func The function to restrict. * @return The new restricted function. **/ after( n: number, func: Function): Function; } interface LoDashWrapper { /** * @see _.after **/ after(func: Function): LoDashObjectWrapper; } //_.ary interface LoDashStatic { /** * Creates a function that accepts up to n arguments ignoring any additional arguments. * @param func The function to cap arguments for. * @param n The arity cap. * @param guard Enables use as a callback for functions like `_.map`. * @returns Returns the new function. */ ary(func: Function, n?: number, guard?: Object): TResult; } interface LoDashObjectWrapper { /** * @see _.ary */ ary(n?: number, guard?: Object): LoDashObjectWrapper; } //_.backflow interface LoDashStatic { /** * @see _.flowRight */ backflow(...funcs: Function[]): TResult; } interface LoDashObjectWrapper { /** * @see _.flowRight **/ backflow(...funcs: Function[]): LoDashObjectWrapper; } //_.before interface LoDashStatic { /** * Creates a function that invokes func, with the this binding and arguments of the created function, while * it is called less than n times. Subsequent calls to the created function return the result of the last func * invocation. * @param n The number of calls at which func is no longer invoked. * @param func The function to restrict. * @return Returns the new restricted function. */ before(n: number, func: TFunc): TFunc; } interface LoDashWrapper { /** * @sed _.before */ before(func: TFunc): TFunc; } //_.bind interface LoDashStatic { /** * Creates a function that, when called, invokes func with the this binding of thisArg * and prepends any additional bind arguments to those provided to the bound function. * @param func The function to bind. * @param thisArg The this binding of func. * @param args Arguments to be partially applied. * @return The new bound function. **/ bind( func: Function, thisArg: any, ...args: any[]): (...args: any[]) => any; } interface LoDashObjectWrapper { /** * @see _.bind **/ bind( thisArg: any, ...args: any[]): LoDashObjectWrapper<(...args: any[]) => any>; } //_.bindAll interface LoDashStatic { /** * Binds methods of an object to the object itself, overwriting the existing method. Method * names may be specified as individual arguments or as arrays of method names. If no method * names are provided all the function properties of object will be bound. * @param object The object to bind and assign the bound methods to. * @param methodNames The object method names to bind, specified as individual method names * or arrays of method names. * @return object **/ bindAll( object: T, ...methodNames: string[]): T; } interface LoDashObjectWrapper { /** * @see _.bindAll **/ bindAll(...methodNames: string[]): LoDashWrapper; } //_.bindKey interface LoDashStatic { /** * Creates a function that, when called, invokes the method at object[key] and prepends any * additional bindKey arguments to those provided to the bound function. This method differs * from _.bind by allowing bound functions to reference methods that will be redefined or don't * yet exist. See http://michaux.ca/articles/lazy-function-definition-pattern. * @param object The object the method belongs to. * @param key The key of the method. * @param args Arguments to be partially applied. * @return The new bound function. **/ bindKey( object: T, key: string, ...args: any[]): Function; } interface LoDashObjectWrapper { /** * @see _.bindKey **/ bindKey( key: string, ...args: any[]): LoDashObjectWrapper; } //_.compose interface LoDashStatic { /** * @see _.flowRight */ compose(...funcs: Function[]): TResult; } interface LoDashObjectWrapper { /** * @see _.flowRight */ compose(...funcs: Function[]): LoDashObjectWrapper; } //_.createCallback interface LoDashStatic { /** * Produces a callback bound to an optional thisArg. If func is a property name the created * callback will return the property value for a given element. If func is an object the created * callback will return true for elements that contain the equivalent object properties, * otherwise it will return false. * @param func The value to convert to a callback. * @param thisArg The this binding of the created callback. * @param argCount The number of arguments the callback accepts. * @return A callback function. **/ createCallback( func: string, thisArg?: any, argCount?: number): () => any; /** * @see _.createCallback **/ createCallback( func: Dictionary, thisArg?: any, argCount?: number): () => boolean; } interface LoDashWrapper { /** * @see _.createCallback **/ createCallback( thisArg?: any, argCount?: number): LoDashObjectWrapper<() => any>; } interface LoDashObjectWrapper { /** * @see _.createCallback **/ createCallback( thisArg?: any, argCount?: number): LoDashObjectWrapper<() => any>; } //_.curry interface LoDashStatic { /** * Creates a function that accepts one or more arguments of func that when called either invokes func returning * its result, if all func arguments have been provided, or returns a function that accepts one or more of the * remaining func arguments, and so on. The arity of func may be specified if func.length is not sufficient. * @param func The function to curry. * @param arity The arity of func. * @return Returns the new curried function. */ curry( func: Function, arity?: number): TResult; } interface LoDashObjectWrapper { /** * @see _.curry **/ curry(arity?: number): LoDashObjectWrapper; } //_.curryRight interface LoDashStatic { /** * This method is like _.curry except that arguments are applied to func in the manner of _.partialRight * instead of _.partial. * @param func The function to curry. * @param arity The arity of func. * @return Returns the new curried function. */ curryRight( func: Function, arity?: number): TResult; } interface LoDashObjectWrapper { /** * @see _.curryRight **/ curryRight(arity?: number): LoDashObjectWrapper; } //_.debounce interface LoDashStatic { /** * Creates a function that will delay the execution of func until after wait milliseconds have * elapsed since the last time it was invoked. Provide an options object to indicate that func * should be invoked on the leading and/or trailing edge of the wait timeout. Subsequent calls * to the debounced function will return the result of the last func call. * * Note: If leading and trailing options are true func will be called on the trailing edge of * the timeout only if the the debounced function is invoked more than once during the wait * timeout. * @param func The function to debounce. * @param wait The number of milliseconds to delay. * @param options The options object. * @param options.leading Specify execution on the leading edge of the timeout. * @param options.maxWait The maximum time func is allowed to be delayed before it's called. * @param options.trailing Specify execution on the trailing edge of the timeout. * @return The new debounced function. **/ debounce( func: T, wait: number, options?: DebounceSettings): T; } interface LoDashObjectWrapper { /** * @see _.debounce **/ debounce( wait: number, options?: DebounceSettings): LoDashObjectWrapper; } interface DebounceSettings { /** * Specify execution on the leading edge of the timeout. **/ leading?: boolean; /** * The maximum time func is allowed to be delayed before it's called. **/ maxWait?: number; /** * Specify execution on the trailing edge of the timeout. **/ trailing?: boolean; } //_.defer interface LoDashStatic { /** * Defers executing the func function until the current call stack has cleared. Additional * arguments will be provided to func when it is invoked. * @param func The function to defer. * @param args Arguments to invoke the function with. * @return The timer id. **/ defer( func: Function, ...args: any[]): number; } interface LoDashObjectWrapper { /** * @see _.defer **/ defer(...args: any[]): LoDashWrapper; } //_.delay interface LoDashStatic { /** * Executes the func function after wait milliseconds. Additional arguments will be provided * to func when it is invoked. * @param func The function to delay. * @param wait The number of milliseconds to delay execution. * @param args Arguments to invoke the function with. * @return The timer id. **/ delay( func: Function, wait: number, ...args: any[]): number; } interface LoDashObjectWrapper { /** * @see _.delay **/ delay( wait: number, ...args: any[]): LoDashWrapper; } //_.flow interface LoDashStatic { /** * Creates a function that returns the result of invoking the provided functions with the this binding of the * created function, where each successive invocation is supplied the return value of the previous. * @param funcs Functions to invoke. * @return Returns the new function. */ flow(...funcs: Function[]): TResult; } interface LoDashObjectWrapper { /** * @see _.flow **/ flow(...funcs: Function[]): LoDashObjectWrapper; } //_.flowRight interface LoDashStatic { /** * This method is like _.flow except that it creates a function that invokes the provided functions from right * to left. * @param funcs Functions to invoke. * @return Returns the new function. */ flowRight(...funcs: Function[]): TResult; } interface LoDashObjectWrapper { /** * @see _.flowRight **/ flowRight(...funcs: Function[]): LoDashObjectWrapper; } //_.memoize interface MemoizedFunction extends Function { cache: MapCache; } interface LoDashStatic { /** * Creates a function that memoizes the result of func. If resolver is provided it determines the cache key for * storing the result based on the arguments provided to the memoized function. By default, the first argument * provided to the memoized function is coerced to a string and used as the cache key. The func is invoked with * the this binding of the memoized function. * @param func The function to have its output memoized. * @param resolver The function to resolve the cache key. * @return Returns the new memoizing function. */ memoize( func: Function, resolver?: Function): TResult; } interface LoDashObjectWrapper { /** * @see _.memoize */ memoize(resolver?: Function): LoDashObjectWrapper; } //_.modArgs interface LoDashStatic { /** * Creates a function that runs each argument through a corresponding transform function. * @param func The function to wrap. * @param transforms The functions to transform arguments, specified as individual functions or arrays * of functions. * @return Returns the new function. */ modArgs( func: T, ...transforms: Function[] ): TResult; /** * @see _.modArgs */ modArgs( func: T, transforms: Function[] ): TResult; } interface LoDashObjectWrapper { /** * @see _.modArgs */ modArgs(...transforms: Function[]): LoDashObjectWrapper; /** * @see _.modArgs */ modArgs(transforms: Function[]): LoDashObjectWrapper; } //_.negate interface LoDashStatic { /** * Creates a function that negates the result of the predicate func. The func predicate is invoked with * the this binding and arguments of the created function. * @param predicate The predicate to negate. * @return Returns the new function. */ negate(predicate: T): (...args: any[]) => boolean; /** * @see _.negate */ negate(predicate: T): TResult; } interface LoDashObjectWrapper { /** * @see _.negate */ negate(): LoDashObjectWrapper<(...args: any[]) => boolean>; /** * @see _.negate */ negate(): LoDashObjectWrapper; } //_.once interface LoDashStatic { /** * Creates a function that is restricted to invoking func once. Repeat calls to the function return the value * of the first call. The func is invoked with the this binding and arguments of the created function. * @param func The function to restrict. * @return Returns the new restricted function. */ once(func: T): T; } interface LoDashObjectWrapper { /** * @see _.once */ once(): LoDashObjectWrapper; } //_.partial interface LoDashStatic { /** * Creates a function that, when called, invokes func with any additional partial arguments * prepended to those provided to the new function. This method is similar to _.bind except * it does not alter the this binding. * @param func The function to partially apply arguments to. * @param args Arguments to be partially applied. * @return The new partially applied function. **/ partial( func: Function, ...args: any[]): Function; } //_.partialRight interface LoDashStatic { /** * This method is like _.partial except that partial arguments are appended to those provided * to the new function. * @param func The function to partially apply arguments to. * @param args Arguments to be partially applied. * @return The new partially applied function. **/ partialRight( func: Function, ...args: any[]): Function; } //_.rearg interface LoDashStatic { /** * Creates a function that invokes func with arguments arranged according to the specified indexes where the * argument value at the first index is provided as the first argument, the argument value at the second index * is provided as the second argument, and so on. * @param func The function to rearrange arguments for. * @param indexes The arranged argument indexes, specified as individual indexes or arrays of indexes. * @return Returns the new function. */ rearg(func: Function, indexes: number[]): TResult; /** * @see _.rearg */ rearg(func: Function, ...indexes: number[]): TResult; } interface LoDashObjectWrapper { /** * @see _.rearg */ rearg(indexes: number[]): LoDashObjectWrapper; /** * @see _.rearg */ rearg(...indexes: number[]): LoDashObjectWrapper; } //_.restParam interface LoDashStatic { /** * Creates a function that invokes func with the this binding of the created function and arguments from start * and beyond provided as an array. * @param func The function to apply a rest parameter to. * @param start The start position of the rest parameter. * @return Returns the new function. */ restParam(func: Function, start?: number): TResult; /** * @see _.restParam */ restParam(func: TFunc, start?: number): TResult; } interface LoDashObjectWrapper { /** * @see _.restParam */ restParam(start?: number): LoDashObjectWrapper; } //_.spread interface LoDashStatic { /** * Creates a function that invokes func with the this binding of the created function and an array of arguments * much like Function#apply. * @param func The function to spread arguments over. * @return Returns the new function. */ spread(func: Function): TResult; } interface LoDashObjectWrapper { /** * @see _.spread */ spread(): LoDashObjectWrapper; } //_.throttle interface LoDashStatic { /** * Creates a function that, when executed, will only call the func function at most once per * every wait milliseconds. Provide an options object to indicate that func should be invoked * on the leading and/or trailing edge of the wait timeout. Subsequent calls to the throttled * function will return the result of the last func call. * * Note: If leading and trailing options are true func will be called on the trailing edge of * the timeout only if the the throttled function is invoked more than once during the wait timeout. * @param func The function to throttle. * @param wait The number of milliseconds to throttle executions to. * @param options The options object. * @param options.leading Specify execution on the leading edge of the timeout. * @param options.trailing Specify execution on the trailing edge of the timeout. * @return The new throttled function. **/ throttle( func: T, wait: number, options?: ThrottleSettings): T; } interface ThrottleSettings { /** * If you'd like to disable the leading-edge call, pass this as false. **/ leading?: boolean; /** * If you'd like to disable the execution on the trailing-edge, pass false. **/ trailing?: boolean; } //_.wrap interface LoDashStatic { /** * Creates a function that provides value to the wrapper function as its first argument. * Additional arguments provided to the function are appended to those provided to the * wrapper function. The wrapper is executed with the this binding of the created function. * @param value The value to wrap. * @param wrapper The wrapper function. * @return The new function. **/ wrap( value: any, wrapper: (func: Function, ...args: any[]) => any): Function; } /******** * Lang * ********/ //_.clone interface LoDashStatic { /** * Creates a clone of value. If isDeep is true nested objects are cloned, otherwise they are assigned by * reference. If customizer is provided it’s invoked to produce the cloned values. If customizer returns * undefined cloning is handled by the method instead. The customizer is bound to thisArg and invoked with up * to three argument; (value [, index|key, object]). * Note: This method is loosely based on the structured clone algorithm. The enumerable properties of arguments * objects and objects created by constructors other than Object are cloned to plain Object objects. An empty * object is returned for uncloneable values such as functions, DOM nodes, Maps, Sets, and WeakMaps. * @param value The value to clone. * @param isDeep Specify a deep clone. * @param customizer The function to customize cloning values. * @param thisArg The this binding of customizer. * @return Returns the cloned value. */ clone( value: T, isDeep?: boolean, customizer?: (value: any) => any, thisArg?: any): T; /** * @see _.clone */ clone( value: T, customizer?: (value: any) => any, thisArg?: any): T; } interface LoDashWrapper { /** * @see _.clone */ clone( isDeep?: boolean, customizer?: (value: any) => any, thisArg?: any): T; /** * @see _.clone */ clone( customizer?: (value: any) => any, thisArg?: any): T; } interface LoDashArrayWrapper { /** * @see _.clone */ clone( isDeep?: boolean, customizer?: (value: any) => any, thisArg?: any): T[]; /** * @see _.clone */ clone( customizer?: (value: any) => any, thisArg?: any): T[]; } interface LoDashObjectWrapper { /** * @see _.clone */ clone( isDeep?: boolean, customizer?: (value: any) => any, thisArg?: any): T; /** * @see _.clone */ clone( customizer?: (value: any) => any, thisArg?: any): T; } //_.cloneDeep interface LoDashStatic { /** * Creates a deep clone of value. If customizer is provided it’s invoked to produce the cloned values. If * customizer returns undefined cloning is handled by the method instead. The customizer is bound to thisArg * and invoked with up to three argument; (value [, index|key, object]). * Note: This method is loosely based on the structured clone algorithm. The enumerable properties of arguments * objects and objects created by constructors other than Object are cloned to plain Object objects. An empty * object is returned for uncloneable values such as functions, DOM nodes, Maps, Sets, and WeakMaps. * @param value The value to deep clone. * @param customizer The function to customize cloning values. * @param thisArg The this binding of customizer. * @return Returns the deep cloned value. */ cloneDeep( value: T, customizer?: (value: any) => any, thisArg?: any): T; } interface LoDashWrapper { /** * @see _.cloneDeep */ cloneDeep( customizer?: (value: any) => any, thisArg?: any): T; } interface LoDashArrayWrapper { /** * @see _.cloneDeep */ cloneDeep( customizer?: (value: any) => any, thisArg?: any): T[]; } interface LoDashObjectWrapper { /** * @see _.cloneDeep */ cloneDeep( customizer?: (value: any) => any, thisArg?: any): T; } //_.gt interface LoDashStatic { /** * Checks if value is greater than other. * @param value The value to compare. * @param other The other value to compare. * @return Returns true if value is greater than other, else false. */ gt(value: any, other: any): boolean; } interface LoDashWrapperBase { /** * @see _.gt */ gt(other: any): boolean; } //_.gte interface LoDashStatic { /** * Checks if value is greater than or equal to other. * @param value The value to compare. * @param other The other value to compare. * @return Returns true if value is greater than or equal to other, else false. */ gte(value: any, other: any): boolean; } interface LoDashWrapperBase { /** * @see _.gte */ gte(other: any): boolean; } //_.isArguments interface LoDashStatic { /** * Checks if value is classified as an arguments object. * @param value The value to check. * @return Returns true if value is correctly classified, else false. */ isArguments(value?: any): boolean; } interface LoDashWrapperBase { /** * @see _.isArguments */ isArguments(): boolean; } //_.isArray interface LoDashStatic { /** * Checks if value is classified as an Array object. * @param value The value to check. * @return Returns true if value is correctly classified, else false. **/ isArray(value?: any): boolean; } interface LoDashWrapperBase { /** * @see _.isArray */ isArray(): boolean; } //_.isBoolean interface LoDashStatic { /** * Checks if value is classified as a boolean primitive or object. * @param value The value to check. * @return Returns true if value is correctly classified, else false. **/ isBoolean(value?: any): boolean; } interface LoDashWrapperBase { /** * @see _.isBoolean */ isBoolean(): boolean; } //_.isDate interface LoDashStatic { /** * Checks if value is classified as a Date object. * @param value The value to check. * @return Returns true if value is correctly classified, else false. **/ isDate(value?: any): boolean; } interface LoDashWrapperBase { /** * @see _.isDate */ isDate(): boolean; } //_.isElement interface LoDashStatic { /** * Checks if value is a DOM element. * @param value The value to check. * @return Returns true if value is a DOM element, else false. */ isElement(value?: any): boolean; } interface LoDashWrapperBase { /** * @see _.isElement */ isElement(): boolean; } //_.isEmpty interface LoDashStatic { /** * Checks if value is empty. A value is considered empty unless it’s an arguments object, array, string, or * jQuery-like collection with a length greater than 0 or an object with own enumerable properties. * @param value The value to inspect. * @return Returns true if value is empty, else false. **/ isEmpty(value?: any[]|Dictionary|string|any): boolean; } interface LoDashWrapperBase { /** * @see _.isEmpty */ isEmpty(): boolean; } //_.isError interface LoDashStatic { /** * Checks if value is an Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, or URIError * object. * @param value The value to check. * @return Returns true if value is an error object, else false. */ isError(value: any): boolean; } interface LoDashWrapperBase { /** * @see _.isError */ isError(): boolean; } //_.isFinite interface LoDashStatic { /** * Checks if value is a finite primitive number. * Note: This method is based on Number.isFinite. * @param value The value to check. * @return Returns true if value is a finite number, else false. **/ isFinite(value?: any): boolean; } interface LoDashWrapperBase { /** * @see _.isFinite */ isFinite(): boolean; } //_.isFunction interface LoDashStatic { /** * Checks if value is classified as a Function object. * @param value The value to check. * @return Returns true if value is correctly classified, else false. **/ isFunction(value?: any): boolean; } interface LoDashWrapperBase { /** * @see _.isFunction */ isFunction(): boolean; } //_.isMatch interface isMatchCustomizer { (value: any, other: any, indexOrKey?: number|string): boolean; } interface LoDashStatic { /** * Performs a deep comparison between object and source to determine if object contains equivalent property * values. If customizer is provided it’s invoked to compare values. If customizer returns undefined * comparisons are handled by the method instead. The customizer is bound to thisArg and invoked with three * arguments: (value, other, index|key). * @param object The object to inspect. * @param source The object of property values to match. * @param customizer The function to customize value comparisons. * @param thisArg The this binding of customizer. * @return Returns true if object is a match, else false. */ isMatch(object: Object, source: Object, customizer?: isMatchCustomizer, thisArg?: any): boolean; } interface LoDashObjectWrapper { /** * @see _.isMatch */ isMatch(source: Object, customizer?: isMatchCustomizer, thisArg?: any): boolean; } //_.isNaN interface LoDashStatic { /** * Checks if value is NaN. * Note: This method is not the same as isNaN which returns true for undefined and other non-numeric values. * @param value The value to check. * @return Returns true if value is NaN, else false. */ isNaN(value?: any): boolean; } interface LoDashWrapperBase { /** * @see _.isNaN */ isNaN(): boolean; } //_.isNative interface LoDashStatic { /** * Checks if value is a native function. * @param value The value to check. * @retrun Returns true if value is a native function, else false. */ isNative(value: any): boolean; } interface LoDashWrapperBase { /** * see _.isNative */ isNative(): boolean; } //_.isNull interface LoDashStatic { /** * Checks if value is null. * @param value The value to check. * @return Returns true if value is null, else false. **/ isNull(value?: any): boolean; } interface LoDashWrapperBase { /** * see _.isNull */ isNull(): boolean; } //_.isNumber interface LoDashStatic { /** * Checks if value is classified as a Number primitive or object. * Note: To exclude Infinity, -Infinity, and NaN, which are classified as numbers, use the _.isFinite method. * @param value The value to check. * @return Returns true if value is correctly classified, else false. */ isNumber(value?: any): boolean; } interface LoDashWrapperBase { /** * see _.isNumber */ isNumber(): boolean; } //_.isObject interface LoDashStatic { /** * Checks if value is the language type of Object. (e.g. arrays, functions, objects, regexes, new Number(0), * and new String('')) * @param value The value to check. * @return Returns true if value is an object, else false. **/ isObject(value?: any): boolean; } interface LoDashWrapperBase { /** * see _.isObject */ isObject(): boolean; } //_.isPlainObject interface LoDashStatic { /** * Checks if value is a plain object, that is, an object created by the Object constructor or one with a * [[Prototype]] of null. * * Note: This method assumes objects created by the Object constructor have no inherited enumerable properties. * * @param value The value to check. * @return Returns true if value is a plain object, else false. */ isPlainObject(value?: any): boolean; } interface LoDashWrapperBase { /** * see _.isPlainObject */ isPlainObject(): boolean; } //_.isRegExp interface LoDashStatic { /** * Checks if value is classified as a RegExp object. * @param value The value to check. * @return Returns true if value is correctly classified, else false. */ isRegExp(value?: any): boolean; } interface LoDashWrapperBase { /** * see _.isRegExp */ isRegExp(): boolean; } //_.isString interface LoDashStatic { /** * Checks if value is classified as a String primitive or object. * @param value The value to check. * @return Returns true if value is correctly classified, else false. **/ isString(value?: any): boolean; } interface LoDashWrapperBase { /** * see _.isString */ isString(): boolean; } //_.isTypedArray interface LoDashStatic { /** * Checks if value is classified as a typed array. * @param value The value to check. * @return Returns true if value is correctly classified, else false. */ isTypedArray(value: any): boolean; } interface LoDashWrapperBase { /** * see _.isTypedArray */ isTypedArray(): boolean; } //_.isUndefined interface LoDashStatic { /** * Checks if value is undefined. * @param value The value to check. * @return Returns true if value is undefined, else false. **/ isUndefined(value: any): boolean; } interface LoDashWrapperBase { /** * see _.isUndefined */ isUndefined(): boolean; } //_.lt interface LoDashStatic { /** * Checks if value is less than other. * @param value The value to compare. * @param other The other value to compare. * @return Returns true if value is less than other, else false. */ lt(value: any, other: any): boolean; } interface LoDashWrapperBase { /** * @see _.lt */ lt(other: any): boolean; } //_.lte interface LoDashStatic { /** * Checks if value is less than or equal to other. * @param value The value to compare. * @param other The other value to compare. * @return Returns true if value is less than or equal to other, else false. */ lte(value: any, other: any): boolean; } interface LoDashWrapperBase { /** * @see _.lte */ lte(other: any): boolean; } //_.toPlainObject interface LoDashStatic { /** * Converts value to a plain object flattening inherited enumerable properties of value to own properties * of the plain object. * @param value The value to convert. * @return Returns the converted plain object. */ toPlainObject(value?: any): Object; } /******** * Math * ********/ //_.add interface LoDashStatic { /** * Adds two numbers. * @param augend The first number to add. * @param addend The second number to add. * @return Returns the sum. */ add(augend: number, addend: number): number; } interface LoDashWrapper { /** * @see _.add */ add(addend: number): number; } /********** * Number * **********/ //_.inRange interface LoDashStatic { /** * Checks if n is between start and up to but not including, end. If end is not specified it’s set to start * with start then set to 0. * @param n The number to check. * @param start The start of the range. * @param end The end of the range. * @return Returns true if n is in the range, else false. */ inRange(n: number, start: number, end: number): boolean; /** * @see _.inRange */ inRange(n: number, end: number): boolean; } interface LoDashWrapper { /** * @see _.inRange */ inRange(start: number, end: number): boolean; /** * @see _.inRange */ inRange(end: number): boolean; } /********** * Object * **********/ //_.assign interface LoDashStatic { /** * Assigns own enumerable properties of source object(s) to the destination object. Subsequent * sources will overwrite property assignments of previous sources. If a callback is provided * it will be executed to produce the assigned values. The callback is bound to thisArg and * invoked with two arguments; (objectValue, sourceValue). * @param object The destination object. * @param s1-8 The source object(s) * @param callback The function to customize merging properties. * @param thisArg The this binding of callback. * @return The destination object. **/ assign( object: T, s1: S1, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): Result; /** * @see _.assign **/ assign( object: T, s1: S1, s2: S2, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): Result; /** * @see _.assign **/ assign( object: T, s1: S1, s2: S2, s3: S3, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): Result; /** * @see _.assign **/ assign( object: T, s1: S1, s2: S2, s3: S3, s4: S4, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): Result; /** * @see _.assign **/ extend( object: T, s1: S1, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): Result; /** * @see _.assign **/ extend( object: T, s1: S1, s2: S2, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): Result; /** * @see _.assign **/ extend( object: T, s1: S1, s2: S2, s3: S3, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): Result; /** * @see _.assign **/ extend( object: T, s1: S1, s2: S2, s3: S3, s4: S4, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): Result; } interface LoDashObjectWrapper { /** * @see _.assign **/ assign( s1: S1, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): TResult; /** * @see _.assign **/ assign( s1: S1, s2: S2, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): TResult; /** * @see _.assign **/ assign( s1: S1, s2: S2, s3: S3, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): TResult; /** * @see _.assign **/ assign( s1: S1, s2: S2, s3: S3, s4: S4, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): TResult; /** * @see _.assign **/ assign( s1: S1, s2: S2, s3: S3, s4: S4, s5: S5, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): TResult; /** * @see _.assign **/ extend( s1: S1, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): TResult; /** * @see _.assign **/ extend( s1: S1, s2: S2, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): TResult; /** * @see _.assign **/ extend( s1: S1, s2: S2, s3: S3, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): TResult; /** * @see _.assign **/ extend( s1: S1, s2: S2, s3: S3, s4: S4, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): TResult; /** * @see _.assign **/ extend( s1: S1, s2: S2, s3: S3, s4: S4, s5: S5, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): TResult; } //_.create interface LoDashStatic { /** * Creates an object that inherits from the given prototype object. If a properties object is provided its own * enumerable properties are assigned to the created object. * @param prototype The object to inherit from. * @param properties The properties to assign to the object. * @return Returns the new object. */ create(prototype: Object, properties?: Object): TResult; } interface LoDashObjectWrapper { /** * @see _.create */ create(properties?: Object): LoDashObjectWrapper; } //_.defaults interface LoDashStatic { /** * Assigns own enumerable properties of source object(s) to the destination object for all * destination properties that resolve to undefined. Once a property is set, additional defaults * of the same property will be ignored. * @param object The destination object. * @param sources The source objects. * @return The destination object. **/ defaults( object: T, ...sources: any[]): TResult; } interface LoDashObjectWrapper { /** * @see _.defaults **/ defaults(...sources: any[]): LoDashObjectWrapper } //_.defaultsDeep interface LoDashStatic { /** * This method is like _.defaults except that it recursively assigns default properties. * @param object The destination object. * @param sources The source objects. * @return Returns object. **/ defaultsDeep( object: T, ...sources: any[]): TResult; } interface LoDashObjectWrapper { /** * @see _.defaultsDeep **/ defaultsDeep(...sources: any[]): LoDashObjectWrapper } //_.findKey interface LoDashStatic { /** * This method is like _.findIndex except that it returns the key of the first element that * passes the callback check, instead of the element itself. * @param object The object to search. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return The key of the found element, else undefined. **/ findKey( object: any, callback: (value: any) => boolean, thisArg?: any): string; /** * @see _.findKey * @param pluckValue _.pluck style callback **/ findKey( object: any, pluckValue: string): string; /** * @see _.findKey * @param whereValue _.where style callback **/ findKey, T>( object: T, whereValue: W): string; } //_.findLastKey interface LoDashStatic { /** * This method is like _.findKey except that it iterates over elements of a collection in the opposite order. * @param object The object to search. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return The key of the found element, else undefined. **/ findLastKey( object: any, callback: (value: any) => boolean, thisArg?: any): string; /** * @see _.findLastKey * @param pluckValue _.pluck style callback **/ findLastKey( object: any, pluckValue: string): string; /** * @see _.findLastKey * @param whereValue _.where style callback **/ findLastKey, T>( object: T, whereValue: W): string; } //_.forIn interface LoDashStatic { /** * Iterates over own and inherited enumerable properties of an object, executing the callback for * each property. The callback is bound to thisArg and invoked with three arguments; (value, key, * object). Callbacks may exit iteration early by explicitly returning false. * @param object The object to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return object **/ forIn( object: Dictionary, callback?: DictionaryIterator, thisArg?: any): Dictionary; /** * @see _.forIn **/ forIn( object: T, callback?: ObjectIterator, thisArg?: any): T; } interface LoDashObjectWrapper { /** * @see _.forIn **/ forIn( callback: ObjectIterator, thisArg?: any): _.LoDashObjectWrapper; } //_.forInRight interface LoDashStatic { /** * This method is like _.forIn except that it iterates over elements of a collection in the * opposite order. * @param object The object to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return object **/ forInRight( object: Dictionary, callback?: DictionaryIterator, thisArg?: any): Dictionary; /** * @see _.forInRight **/ forInRight( object: T, callback?: ObjectIterator, thisArg?: any): T; } interface LoDashObjectWrapper { /** * @see _.forInRight **/ forInRight( callback: ObjectIterator, thisArg?: any): _.LoDashObjectWrapper; } //_.forOwn interface LoDashStatic { /** * Iterates over own enumerable properties of an object, executing the callback for each * property. The callback is bound to thisArg and invoked with three arguments; (value, key, * object). Callbacks may exit iteration early by explicitly returning false. * @param object The object to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return object **/ forOwn( object: Dictionary, callback?: DictionaryIterator, thisArg?: any): Dictionary; /** * @see _.forOwn **/ forOwn( object: T, callback?: ObjectIterator, thisArg?: any): T; } interface LoDashObjectWrapper { /** * @see _.forOwn **/ forOwn( callback: ObjectIterator, thisArg?: any): _.LoDashObjectWrapper; } //_.forOwnRight interface LoDashStatic { /** * This method is like _.forOwn except that it iterates over elements of a collection in the * opposite order. * @param object The object to iterate over. * @param callback The function called per iteration. * @param thisArg The this binding of callback. * @return object **/ forOwnRight( object: Dictionary, callback?: DictionaryIterator, thisArg?: any): Dictionary; /** * @see _.forOwnRight **/ forOwnRight( object: T, callback?: ObjectIterator, thisArg?: any): T; } interface LoDashObjectWrapper { /** * @see _.forOwnRight **/ forOwnRight( callback: ObjectIterator, thisArg?: any): _.LoDashObjectWrapper; } //_.functions interface LoDashStatic { /** * Creates a sorted array of property names of all enumerable properties, own and inherited, of * object that have function values. * @param object The object to inspect. * @return An array of property names that have function values. **/ functions(object: any): string[]; /** * @see _functions **/ methods(object: any): string[]; } interface LoDashObjectWrapper { /** * @see _.functions **/ functions(): _.LoDashArrayWrapper; /** * @see _.functions **/ methods(): _.LoDashArrayWrapper; } //_.get interface LoDashStatic { /** * Gets the property value at path of object. If the resolved * value is undefined the defaultValue is used in its place. * @param object The object to query. * @param path The path of the property to get. * @param defaultValue The value returned if the resolved value is undefined. * @return Returns the resolved value. **/ get(object: Object, path: string|number|boolean|Array, defaultValue?:TResult ): TResult; } interface LoDashObjectWrapper { /** * @see _.get **/ get(path: string|number|boolean|Array, defaultValue?: TResult ): TResult; } //_.has interface LoDashStatic { /** * Checks if path is a direct property. * * @param object The object to query. * @param path The path to check. * @return Returns true if path is a direct property, else false. */ has(object: any, path: string|number|boolean|Array): boolean; } interface LoDashObjectWrapper { /** * @see _.has */ has(path: string|number|boolean|Array): boolean; } //_.invert interface LoDashStatic { /** * Creates an object composed of the inverted keys and values of object. If object contains duplicate values, * subsequent values overwrite property assignments of previous values unless multiValue is true. * * @param object The object to invert. * @param multiValue Allow multiple values per key. * @return Returns the new inverted object. */ invert(object: T, multiValue?: boolean): TResult; } interface LoDashObjectWrapper { /** * @see _.invert */ invert(multiValue?: boolean): LoDashObjectWrapper; } //_.isEqual interface EqCustomizer { (value: any, other: any, indexOrKey?: number|string): boolean; } interface LoDashStatic { /** * Performs a deep comparison between two values to determine if they are equivalent. If customizer is * provided it is invoked to compare values. If customizer returns undefined comparisons are handled * by the method instead. The customizer is bound to thisArg and invoked with three * arguments: (value, other [, index|key]). * @param value The value to compare. * @param other The other value to compare. * @param callback The function to customize value comparisons. * @param thisArg The this binding of customizer. * @return True if the values are equivalent, else false. */ isEqual(value?: any, other?: any, callback?: EqCustomizer, thisArg?: any): boolean; /** * @see _.isEqual */ eq(value?: any, other?: any, callback?: EqCustomizer, thisArg?: any): boolean; } interface LoDashWrapper { /** * @see _.isEqual */ isEqual(other?: any, callback?: EqCustomizer, thisArg?: any): boolean; /** * @see _.isEqual */ eq(other?: any, callback?: EqCustomizer, thisArg?: any): boolean; } interface LoDashArrayWrapper { /** * @see _.isEqual */ isEqual(other?: any, callback?: EqCustomizer, thisArg?: any): boolean; /** * @see _.isEqual */ eq(other?: any, callback?: EqCustomizer, thisArg?: any): boolean; } interface LoDashObjectWrapper { /** * @see _.isEqual */ isEqual(other?: any, callback?: EqCustomizer, thisArg?: any): boolean; /** * @see _.isEqual */ eq(other?: any, callback?: EqCustomizer, thisArg?: any): boolean; } //_.keys interface LoDashStatic { /** * Creates an array composed of the own enumerable property names of an object. * @param object The object to inspect. * @return An array of property names. **/ keys(object?: any): string[]; } interface LoDashObjectWrapper { /** * @see _.keys **/ keys(): LoDashArrayWrapper } //_.keysIn interface LoDashStatic { /** * Creates an array of the own and inherited enumerable property names of object. * @param object The object to query. * @return An array of property names. **/ keysIn(object?: any): string[]; } interface LoDashObjectWrapper { /** * @see _.keysIn **/ keysIn(): LoDashArrayWrapper } //_.mapValues interface LoDashStatic { /** * Creates an object with the same keys as object and values generated by running each own * enumerable property of object through iteratee. The iteratee function is bound to thisArg * and invoked with three arguments: (value, key, object). * * If a property name is provided iteratee the created "_.property" style callback returns * the property value of the given element. * * If a value is also provided for thisArg the creted "_.matchesProperty" style callback returns * true for elements that have a matching property value, else false;. * * If an object is provided for iteratee the created "_.matches" style callback returns true * for elements that have the properties of the given object, else false. * * @param {Object} object The object to iterate over. * @param {Function|Object|string} [iteratee=_.identity] The function invoked per iteration. * @param {Object} [thisArg] The `this` binding of `iteratee`. * @return {Object} Returns the new mapped object. */ mapValues(obj: Dictionary, callback: ObjectIterator, thisArg?: any): Dictionary; mapValues(obj: Dictionary, where: Dictionary): Dictionary; mapValues(obj: T, pluck: string): TMapped; mapValues(obj: T, callback: ObjectIterator, thisArg?: any): T; } interface LoDashObjectWrapper { /** * @see _.mapValues * TValue is the type of the property values of T. * TResult is the type output by the ObjectIterator function */ mapValues(callback: ObjectIterator, thisArg?: any): LoDashObjectWrapper>; /** * @see _.mapValues * TResult is the type of the property specified by pluck. * T should be a Dictionary> */ mapValues(pluck: string): LoDashObjectWrapper>; /** * @see _.mapValues * TResult is the type of the properties on the object specified by pluck. * T should be a Dictionary>> */ mapValues(pluck: string, where: Dictionary): LoDashArrayWrapper>; /** * @see _.mapValues * TResult is the type of the properties of each object in the values of T * T should be a Dictionary> */ mapValues(where: Dictionary): LoDashArrayWrapper; } //_.merge interface LoDashStatic { /** * Recursively merges own enumerable properties of the source object(s), that don't resolve * to undefined into the destination object. Subsequent sources will overwrite property * assignments of previous sources. If a callback is provided it will be executed to produce * the merged values of the destination and source properties. If the callback returns undefined * merging will be handled by the method instead. The callback is bound to thisArg and invoked * with two arguments; (objectValue, sourceValue). * @param object The destination object. * @param s1-8 The source object(s) * @param callback The function to customize merging properties. * @param thisArg The this binding of callback. * @return The destination object. **/ merge( object: T, s1: S1, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): Result; /** * @see _.merge **/ merge( object: T, s1: S1, s2: S2, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): Result; /** * @see _.merge **/ merge( object: T, s1: S1, s2: S2, s3: S3, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): Result; /** * @see _.merge **/ merge( object: T, s1: S1, s2: S2, s3: S3, s4: S4, callback?: (objectValue: Value, sourceValue: Value) => Value, thisArg?: any): Result; } //_.omit interface LoDashStatic { /** * Creates a shallow clone of object excluding the specified properties. Property names may be * specified as individual arguments or as arrays of property names. If a callback is provided * it will be executed for each property of object omitting the properties the callback returns * truey for. The callback is bound to thisArg and invoked with three arguments; (value, key, * object). * @param object The source object. * @param keys The properties to omit. * @return An object without the omitted properties. **/ omit( object: T, ...keys: string[]): Omitted; /** * @see _.omit **/ omit( object: T, keys: string[]): Omitted; /** * @see _.omit **/ omit( object: T, callback: ObjectIterator, thisArg?: any): Omitted; } interface LoDashObjectWrapper { /** * @see _.omit **/ omit( ...keys: string[]): LoDashObjectWrapper; /** * @see _.omit **/ omit( keys: string[]): LoDashObjectWrapper; /** * @see _.omit **/ omit( callback: ObjectIterator, thisArg?: any): LoDashObjectWrapper; } //_.pairs interface LoDashStatic { /** * Creates a two dimensional array of an object's key-value pairs, * i.e. [[key1, value1], [key2, value2]]. * @param object The object to inspect. * @return Aew array of key-value pairs. **/ pairs(object?: any): any[][]; } interface LoDashObjectWrapper { /** * @see _.pairs **/ pairs(): LoDashArrayWrapper; } //_.pick interface LoDashStatic { /** * Creates an object composed of the picked object properties. Property names may be specified as individual * arguments or as arrays of property names. If predicate is provided it’s invoked for each property of object * picking the properties predicate returns truthy for. The predicate is bound to thisArg and invoked with * three arguments: (value, key, object). * * @param object The source object. * @param predicate The function invoked per iteration or property names to pick, specified as individual * property names or arrays of property names. * @param thisArg The this binding of predicate. * @return An object composed of the picked properties. */ pick( object: T, predicate: ObjectIterator, thisArg?: any ): TResult; /** * @see _.pick */ pick( object: T, ...predicate: Array> ): TResult; } interface LoDashObjectWrapper { /** * @see _.pick */ pick( predicate: ObjectIterator, thisArg?: any ): LoDashObjectWrapper; /** * @see _.pick */ pick( ...predicate: Array> ): LoDashObjectWrapper; } //_.result interface LoDashStatic { /** * This method is like _.get except that if the resolved value is a function it’s invoked with the this binding * of its parent object and its result is returned. * * @param object The object to query. * @param path The path of the property to resolve. * @param defaultValue The value returned if the resolved value is undefined. * @return Returns the resolved value. */ result( object: TObject, path: number|string|boolean|Array, defaultValue?: TResult ): TResult; } interface LoDashWrapperBase { /** * @see _.result */ result( path: number|string|boolean|Array, defaultValue?: TResult ): TResult; } //_.set interface LoDashStatic { /** * Sets the property value of path on object. If a portion of path does not exist it’s created. * * @param object The object to augment. * @param path The path of the property to set. * @param value The value to set. * @return Returns object. */ set( object: T, path: StringRepresentable|StringRepresentable[], value: any ): T; } interface LoDashObjectWrapper { /** * @see _.set */ set( path: StringRepresentable|StringRepresentable[], value: any ): LoDashObjectWrapper; } //_.transform interface LoDashStatic { /** * An alternative to _.reduce this method transforms object to a new accumulator object which is * the result of running each of its elements through a callback, with each callback execution * potentially mutating the accumulator object. The callback is bound to thisArg and invoked with * four arguments; (accumulator, value, key, object). Callbacks may exit iteration early by * explicitly returning false. * @param collection The collection to iterate over. * @param callback The function called per iteration. * @param accumulator The custom accumulator value. * @param thisArg The this binding of callback. * @return The accumulated value. **/ transform( collection: Array, callback: MemoVoidIterator, accumulator: Acc, thisArg?: any): Acc; /** * @see _.transform **/ transform( collection: List, callback: MemoVoidIterator, accumulator: Acc, thisArg?: any): Acc; /** * @see _.transform **/ transform( collection: Dictionary, callback: MemoVoidIterator, accumulator: Acc, thisArg?: any): Acc; /** * @see _.transform **/ transform( collection: Array, callback?: MemoVoidIterator, thisArg?: any): Acc; /** * @see _.transform **/ transform( collection: List, callback?: MemoVoidIterator, thisArg?: any): Acc; /** * @see _.transform **/ transform( collection: Dictionary, callback?: MemoVoidIterator, thisArg?: any): Acc; } //_.values interface LoDashStatic { /** * Creates an array of the own enumerable property values of object. * @param object The object to query. * @return Returns an array of property values. **/ values(object?: any): T[]; } interface LoDashObjectWrapper { /** * @see _.values **/ values(): LoDashObjectWrapper; } //_.valuesIn interface LoDashStatic { /** * Creates an array of the own and inherited enumerable property values of object. * @param object The object to query. * @return Returns the array of property values. **/ valuesIn(object?: any): T[]; } interface LoDashObjectWrapper { /** * @see _.valuesIn **/ valuesIn(): LoDashObjectWrapper; } /********** * String * **********/ //_.camelCase interface LoDashStatic { /** * Converts string to camel case. * @param string The string to convert. * @return Returns the camel cased string. */ camelCase(string?: string): string; } interface LoDashWrapper { /** * @see _.camelCase */ camelCase(): string; } //_.capitalize interface LoDashStatic { capitalize(string?: string): string; } interface LoDashWrapper { /** * @see _.capitalize */ capitalize(): string; } //_.deburr interface LoDashStatic { /** * Deburrs string by converting latin-1 supplementary letters to basic latin letters and removing combining * diacritical marks. * @param string The string to deburr. * @return Returns the deburred string. */ deburr(string?: string): string; } interface LoDashWrapper { /** * @see _.deburr */ deburr(): string; } //_.endsWith interface LoDashStatic { /** * Checks if string ends with the given target string. * @param string The string to search. * @param target The string to search for. * @param position The position to search from. * @return Returns true if string ends with target, else false. */ endsWith(string?: string, target?: string, position?: number): boolean; } interface LoDashWrapper { /** * @see _.endsWith */ endsWith(target?: string, position?: number): boolean; } // _.escape interface LoDashStatic { /** * Converts the characters "&", "<", ">", '"', "'", and "`", in string to their corresponding HTML entities. * @param string The string to escape. * @return Returns the escaped string. */ escape(string?: string): string; } interface LoDashWrapper { /** * @see _.escape */ escape(): string; } // _.escapeRegExp interface LoDashStatic { /** * Escapes the RegExp special characters "\", "/", "^", "$", ".", "|", "?", "*", "+", "(", ")", "[", "]", * "{" and "}" in string. * @param string The string to escape. * @return Returns the escaped string. */ escapeRegExp(string?: string): string; } interface LoDashWrapper { /** * @see _.escapeRegExp */ escapeRegExp(): string; } //_.kebabCase interface LoDashStatic { /** * Converts string to kebab case. * @param string The string to convert. * @return Returns the kebab cased string. */ kebabCase(string?: string): string; } interface LoDashWrapper { /** * @see _.kebabCase */ kebabCase(): string; } interface LoDashStatic { /** * * @param string The string to pad. * @param length The padding length. * @param chars The string used as padding. * @return Returns the padded string. */ pad(string?: string, length?: number, chars?: string): string; } //_.pad interface LoDashWrapper { /** * @see _.pad */ pad(length?: number, chars?: string): string; } //_.padLeft interface LoDashStatic { /** * Pads string on the left side if it’s shorter than length. Padding characters are truncated if they exceed * length. * @param string The string to pad. * @param length The padding length. * @param chars The string used as padding. * @return Returns the padded string. */ padLeft(string?: string, length?: number, chars?: string): string; } //_.padLeft interface LoDashWrapper { /** * @see _.padLeft */ padLeft(length?: number, chars?: string): string; } //_.padRight interface LoDashStatic { /** * Pads string on the right side if it’s shorter than length. Padding characters are truncated if they exceed * length. * @param string The string to pad. * @param length The padding length. * @param chars The string used as padding. * @return Returns the padded string. */ padRight(string?: string, length?: number, chars?: string): string; } //_.padRight interface LoDashWrapper { /** * @see _.padRight */ padRight(length?: number, chars?: string): string; } //_.parseInt interface LoDashStatic { /** * Converts string to an integer of the specified radix. If radix is undefined or 0, a radix of 10 is used * unless value is a hexadecimal, in which case a radix of 16 is used. * Note: This method aligns with the ES5 implementation of parseInt. * @param string The string to convert. * @param radix The radix to interpret value by. * @return Returns the converted integer. */ parseInt(string: string, radix?: number): number; } interface LoDashWrapper { /** * @see _.parseInt */ parseInt(radix?: number): number; } //_.repeat interface LoDashStatic { /** * Repeats the given string n times. * @param string The string to repeat. * @param n The number of times to repeat the string. * @return Returns the repeated string. */ repeat(string?: string, n?: number): string; } interface LoDashWrapper { /** * @see _.repeat */ repeat(n?: number): string; } //_.snakeCase interface LoDashStatic { /** * Converts string to snake case. * @param string The string to convert. * @return Returns the snake cased string. */ snakeCase(string?: string): string; } interface LoDashWrapper { /** * @see _.snakeCase */ snakeCase(): string; } //_.startCase interface LoDashStatic { /** * Converts string to start case. * @param string The string to convert. * @return Returns the start cased string. */ startCase(string?: string): string; } interface LoDashWrapper { /** * @see _.startCase */ startCase(): string; } //_.startsWith interface LoDashStatic { /** * Checks if string starts with the given target string. * @param string The string to search. * @param target The string to search for. * @param position The position to search from. * @return Returns true if string starts with target, else false. */ startsWith(string?: string, target?: string, position?: number): boolean; } interface LoDashWrapper { /** * @see _.startsWith */ startsWith(target?: string, position?: number): boolean; } //_.template interface TemplateExecutor { (data?: Object): string; source: string; } interface LoDashStatic { /** * Creates a compiled template function that can interpolate data properties in "interpolate" delimiters, * HTML-escape interpolated data properties in "escape" delimiters, and execute JavaScript in "evaluate" * delimiters. Data properties may be accessed as free variables in the template. If a setting object is * provided it takes precedence over _.templateSettings values. * * Note: In the development build _.template utilizes * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) for easier * debugging. * * For more information on precompiling templates see * [lodash's custom builds documentation](https://lodash.com/custom-builds). * * For more information on Chrome extension sandboxes see * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). * * @param string The template string. * @param options The options object. * @param options.escape The HTML "escape" delimiter. * @param options.evaluate The "evaluate" delimiter. * @param options.imports An object to import into the template as free variables. * @param options.interpolate The "interpolate" delimiter. * @param options.variable The data object variable name. * @return Returns the compiled template function. */ template( string: string, options?: TemplateSettings): TemplateExecutor; } interface LoDashWrapper { /** * @see _.template */ template(options?: TemplateSettings): TemplateExecutor; } //_.trim interface LoDashStatic { /** * Removes leading and trailing whitespace or specified characters from string. * @param string The string to trim. * @param chars The characters to trim. * @return Returns the trimmed string. */ trim(string?: string, chars?: string): string; } interface LoDashWrapper { /** * @see _.trim */ trim(chars?: string): string; } //_.trimLeft interface LoDashStatic { /** * Removes leading whitespace or specified characters from string. * @param string The string to trim. * @param chars The characters to trim. * @return Returns the trimmed string. */ trimLeft(string?: string, chars?: string): string; } interface LoDashWrapper { /** * @see _.trimLeft */ trimLeft(chars?: string): string; } //_.trimRight interface LoDashStatic { /** * Removes trailing whitespace or specified characters from string. * @param string The string to trim. * @param chars The characters to trim. * @return Returns the trimmed string. */ trimRight(string?: string, chars?: string): string; } interface LoDashWrapper { /** * @see _.trimRight */ trimRight(chars?: string): string; } //_.trunc interface TruncOptions { /** The maximum string length. */ length?: number; /** The string to indicate text is omitted. */ omission?: string; /** The separator pattern to truncate to. */ separator?: string|RegExp; } interface LoDashStatic { /** * Truncates string if it’s longer than the given maximum string length. The last characters of the truncated * string are replaced with the omission string which defaults to "…". * @param string The string to truncate. * @param options The options object or maximum string length. * @return Returns the truncated string. */ trunc(string?: string, options?: TruncOptions|number): string; } interface LoDashWrapper { /** * @see _.trunc */ trunc(options?: TruncOptions|number): string; } //_.unescape interface LoDashStatic { /** * The inverse of _.escape; this method converts the HTML entities &, <, >, ", ', and ` * in string to their corresponding characters. * @param string The string to unescape. * @return Returns the unescaped string. */ unescape(string?: string): string; } interface LoDashWrapper { /** * @see _.unescape */ unescape(): string; } //_.words interface LoDashStatic { /** * Splits string into an array of its words. * @param string The string to inspect. * @param pattern The pattern to match words. * @return Returns the words of string. */ words(string?: string, pattern?: string|RegExp): string[]; } interface LoDashWrapper { /** * @see _.words */ words(pattern?: string|RegExp): string[]; } /*********** * Utility * ***********/ //_.attempt interface LoDashStatic { /** * Attempts to invoke func, returning either the result or the caught error object. Any additional arguments * are provided to func when it’s invoked. * @param func The function to attempt. * @return Returns the func result or error object. */ attempt(func: (...args: any[]) => TResult): TResult|Error; } interface LoDashObjectWrapper { /** * @see _.attempt */ attempt(): TResult|Error; } //_.callback interface LoDashStatic { /** * Creates a function that invokes func with the this binding of thisArg and arguments of the created function. * If func is a property name the created callback returns the property value for a given element. If func is * an object the created callback returns true for elements that contain the equivalent object properties, * otherwise it returns false. * * @param func The value to convert to a callback. * @param thisArg The this binding of func. * @result Returns the callback. */ callback( func: Function, thisArg?: any ): (...args: any[]) => TResult; /** * @see _.callback */ callback( func: string, thisArg?: any ): (object: any) => TResult; /** * @see _.callback */ callback( func: Object, thisArg?: any ): (object: any) => boolean; /** * @see _.callback */ callback(): (value: TResult) => TResult; } interface LoDashWrapper { /** * @see _.callback */ callback(thisArg?: any): LoDashObjectWrapper<(object: any) => TResult>; } interface LoDashObjectWrapper { /** * @see _.callback */ callback(thisArg?: any): LoDashObjectWrapper<(object: any) => boolean>; /** * @see _.callback */ callback(thisArg?: any): LoDashObjectWrapper<(...args: any[]) => TResult>; } //_.identity interface LoDashStatic { /** * This method returns the first argument provided to it. * @param value Any value. * @return Returns value. */ identity(value?: T): T; } interface LoDashWrapper { /** * @see _.identity */ identity(): T; } interface LoDashArrayWrapper { /** * @see _.identity */ identity(): T[]; } interface LoDashObjectWrapper { /** * @see _.identity */ identity(): T; } //_.iteratee interface LoDashStatic { /** * @see _.callback */ iteratee( func: Function, thisArg?: any ): (...args: any[]) => TResult; /** * @see _.callback */ iteratee( func: string, thisArg?: any ): (object: any) => TResult; /** * @see _.callback */ iteratee( func: Object, thisArg?: any ): (object: any) => boolean; /** * @see _.callback */ iteratee(): (value: TResult) => TResult; } interface LoDashWrapper { /** * @see _.callback */ iteratee(thisArg?: any): LoDashObjectWrapper<(object: any) => TResult>; } interface LoDashObjectWrapper { /** * @see _.callback */ iteratee(thisArg?: any): LoDashObjectWrapper<(object: any) => boolean>; /** * @see _.callback */ iteratee(thisArg?: any): LoDashObjectWrapper<(...args: any[]) => TResult>; } //_.method interface LoDashStatic { /** * Creates a function that invokes the method at path on a given object. Any additional arguments are provided * to the invoked method. * @param path The path of the method to invoke. * @param args The arguments to invoke the method with. * @return Returns the new function. */ method(path: string, ...args: any[]): (object: any) => TResult; /** * @see _.method */ method(path: any[], ...args: any[]): (object: any) => TResult; } interface LoDashWrapper { /** * @see _.method */ method(...args: any[]): LoDashWrapper<(object: any) => TResult>; /** * @see _.method */ method(...args: any[]): LoDashWrapper<(object: any) => TResult>; } interface LoDashArrayWrapper { /** * @see _.method */ method(...args: any[]): LoDashWrapper<(object: any) => TResult>; /** * @see _.method */ method(...args: any[]): LoDashWrapper<(object: any) => TResult>; } //_.methodOf interface LoDashStatic { /** * The opposite of _.method; this method creates a function that invokes the method at a given path on object. * Any additional arguments are provided to the invoked method. * @param object The object to query. * @param args The arguments to invoke the method with. * @return Returns the new function. */ methodOf(object: Object, ...args: any[]): (path: string | any[]) => TResult; } interface LoDashObjectWrapper { /** * @see _.methodOf */ methodOf(...args: any[]): LoDashObjectWrapper<(path: string | any[]) => TResult>; } //_.mixin interface MixinOptions { chain?: boolean; } interface LoDashStatic { /** * Adds all own enumerable function properties of a source object to the destination object. If object is a * function then methods are added to its prototype as well. * * Note: Use _.runInContext to create a pristine lodash function to avoid conflicts caused by modifying * the original. * * @param object The destination object. * @param source The object of functions to add. * @param options The options object. * @param options.chain Specify whether the functions added are chainable. * @return Returns object. */ mixin( object: TObject, source: Dictionary, options?: MixinOptions ): TResult; /** * @see _.mixin */ mixin( source: Dictionary, options?: MixinOptions ): TResult; } interface LoDashObjectWrapper { /** * @see _.mixin */ mixin( source: Dictionary, options?: MixinOptions ): LoDashObjectWrapper; /** * @see _.mixin */ mixin( options?: MixinOptions ): LoDashObjectWrapper; } //_.noConflict interface LoDashStatic { /** * Reverts the _ variable to its previous value and returns a reference to the lodash function. * * @return Returns the lodash function. */ noConflict(): typeof _; } interface LoDashWrapperBase { /** * @see _.noConflict */ noConflict(): typeof _; } //_.noop interface LoDashStatic { /** * A no-operation function that returns undefined regardless of the arguments it receives. * @return undefined */ noop(...args: any[]): void; } interface LoDashWrapperBase { /** * @see _.noop */ noop(...args: any[]): void; } //_.property interface LoDashStatic { /** * Creates a function that returns the property value at path on a given object. * @param path The path of the property to get. * @return Returns the new function. */ property(path: string|string[]): (obj: TObj) => TResult; } interface LoDashStringWrapper { /** * @see _.property */ property(): LoDashObjectWrapper<(obj: TObj) => TResult>; } interface LoDashArrayWrapper { /** * @see _.property */ property(): LoDashObjectWrapper<(obj: TObj) => TResult>; } //_.propertyOf interface LoDashStatic { /** * The opposite of _.property; this method creates a function that returns the property value at a given path * on object. * @param object The object to query. * @return Returns the new function. */ propertyOf(object: T): (path: string|string[]) => any; } interface LoDashObjectWrapper { /** * @see _.propertyOf */ propertyOf(): LoDashObjectWrapper<(path: string|string[]) => any>; } //_.range interface LoDashStatic { /** * Creates an array of numbers (positive and/or negative) progressing from start up to, but not including, end. * If end is not specified it’s set to start with start then set to 0. If end is less than start a zero-length * range is created unless a negative step is specified. * @param start The start of the range. * @param end The end of the range. * @param step The value to increment or decrement by. * @return Returns a new range array. */ range( start: number, end: number, step?: number): number[]; /** * @see _.range */ range( end: number, step?: number): number[]; } interface LoDashWrapper { /** * @see _.range */ range( end?: number, step?: number): LoDashArrayWrapper; } //_.random interface LoDashStatic { /** * Produces a random number between min and max (inclusive). If only one argument is provided a * number between 0 and the given number will be returned. If floating is truey or either min or * max are floats a floating-point number will be returned instead of an integer. * @param max The maximum possible value. * @param floating Specify returning a floating-point number. * @return A random number. **/ random(max: number, floating?: boolean): number; /** * @see _.random * @param min The minimum possible value. * @return A random number between `min` and `max`. **/ random(min: number, max: number, floating?: boolean): number; } //_.runInContext interface LoDashStatic { /** * Create a new lodash function using the given context object. * @param context The context object * @returns The lodash function. **/ runInContext(context: any): typeof _; } //_.times interface LoDashStatic { /** * Invokes the iteratee function n times, returning an array of the results of each invocation. The iteratee is * bound to thisArg and invoked with one argument; (index). * * @param n The number of times to invoke iteratee. * @param iteratee The function invoked per iteration. * @param thisArg The this binding of iteratee. * @return Returns the array of results. */ times( n: number, iteratee: (num: number) => TResult, thisArg?: any ): TResult[]; /** * @see _.times */ times(n: number): number[]; } interface LoDashWrapper { /** * @see _.times */ times( iteratee: (num: number) => TResult, thisArgs?: any ): LoDashArrayWrapper; /** * @see _.times */ times(): LoDashArrayWrapper; } //_.uniqueId interface LoDashStatic { /** * Generates a unique ID. If prefix is provided the ID is appended to it. * @param prefix The value to prefix the ID with. * @return Returns the unique ID. */ uniqueId(prefix?: string): string; } interface LoDashWrapper { /** * @see _.uniqueId */ uniqueId(): string; } //_.constant interface LoDashStatic { /** * Creates a function that returns value. * @param value The value to return from the new function. * @return Returns the new function. */ constant(value: T): () => T; } interface LoDashWrapperBase { /** * @see _.constant */ constant(): () => TResult; } interface ListIterator { (value: T, index: number, collection: T[]): TResult; } interface DictionaryIterator { (value: T, key: string, collection: Dictionary): TResult; } interface ObjectIterator { (element: T, key: string, collection: any): TResult; } interface MemoVoidIterator { (prev: TResult, curr: T, indexOrKey: any, list?: T[]): void; } interface MemoIterator { (prev: TResult, curr: T, indexOrKey: any, list?: T[]): TResult; } /* interface MemoListIterator { (prev: TResult, curr: T, index: number, list?: T[]): TResult; } interface MemoObjectIterator { (prev: TResult, curr: T, index: string, object?: Dictionary): TResult; } */ //interface Collection {} // Common interface between Arrays and jQuery objects interface List { [index: number]: T; length: number; } interface Dictionary { [index: string]: T; } interface StringRepresentable { toString(): string; } } declare module "lodash" { export = _; }