// 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): LoDashImplicitWrapper; (value: string): LoDashImplicitStringWrapper; (value: boolean): LoDashImplicitWrapper; (value: Array): LoDashImplicitNumberArrayWrapper; (value: Array): LoDashImplicitArrayWrapper; (value: T): LoDashImplicitObjectWrapper; (value: any): LoDashImplicitWrapper; /** * 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 { } interface LoDashImplicitWrapperBase extends LoDashWrapperBase { } interface LoDashExplicitWrapperBase extends LoDashWrapperBase { } interface LoDashImplicitWrapper extends LoDashImplicitWrapperBase> { } interface LoDashExplicitWrapper extends LoDashExplicitWrapperBase> { } interface LoDashImplicitStringWrapper extends LoDashImplicitWrapper { } interface LoDashExplicitStringWrapper extends LoDashExplicitWrapper { } interface LoDashImplicitObjectWrapper extends LoDashImplicitWrapperBase> { } interface LoDashExplicitObjectWrapper extends LoDashExplicitWrapperBase> { } interface LoDashImplicitArrayWrapper extends LoDashImplicitWrapperBase> { join(seperator?: string): string; pop(): T; push(...items: T[]): LoDashImplicitArrayWrapper; shift(): T; sort(compareFn?: (a: T, b: T) => number): LoDashImplicitArrayWrapper; splice(start: number): LoDashImplicitArrayWrapper; splice(start: number, deleteCount: number, ...items: any[]): LoDashImplicitArrayWrapper; unshift(...items: T[]): LoDashImplicitArrayWrapper; } interface LoDashExplicitArrayWrapper extends LoDashExplicitWrapperBase> { } interface LoDashImplicitNumberArrayWrapper extends LoDashImplicitArrayWrapper { } interface LoDashExplicitNumberArrayWrapper extends LoDashExplicitArrayWrapper { } /********* * Array * *********/ //_.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: List, size?: number ): T[][]; } interface LoDashImplicitArrayWrapper { /** * @see _.chunk */ chunk(size?: number): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.chunk */ chunk(size?: number): LoDashImplicitArrayWrapper; } //_.compact interface LoDashStatic { /** * Creates an array with all falsey values removed. The values false, null, 0, "", undefined, and NaN are * falsey. * * @param array The array to compact. * @return (Array) Returns the new array of filtered values. */ compact(array?: List): T[]; } interface LoDashImplicitArrayWrapper { /** * @see _.compact */ compact(): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.compact */ compact(): LoDashImplicitArrayWrapper; } //_.difference interface LoDashStatic { /** * Creates an array of unique array values not included in the other provided arrays using SameValueZero for * equality comparisons. * * @param array The array to inspect. * @param values The arrays of values to exclude. * @return Returns the new array of filtered values. */ difference( array: T[]|List, ...values: (T[]|List)[] ): T[]; } interface LoDashImplicitArrayWrapper { /** * @see _.difference */ difference(...values: (T[]|List)[]): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.difference */ difference(...values: (TValue[]|List)[]): LoDashImplicitArrayWrapper; } //_.drop interface LoDashStatic { /** * Creates a slice of array with n elements dropped from the beginning. * * @param array The array to query. * @param n The number of elements to drop. * @return Returns the slice of array. */ drop(array: T[]|List, n?: number): T[]; } interface LoDashImplicitArrayWrapper { /** * @see _.drop */ drop(n?: number): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.drop */ drop(n?: number): LoDashImplicitArrayWrapper; } //_.dropRight interface LoDashStatic { /** * Creates a slice of array with n elements dropped from the end. * * @param array The array to query. * @param n The number of elements to drop. * @return Returns the slice of array. */ dropRight( array: List, n?: number ): T[]; } interface LoDashImplicitArrayWrapper { /** * @see _.dropRight */ dropRight(n?: number): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.dropRight */ dropRight(n?: number): LoDashImplicitArrayWrapper; } //_.dropRightWhile interface LoDashStatic { /** * Creates a slice of array excluding elements dropped from the end. Elements are dropped until predicate * returns falsey. The predicate is bound to thisArg and invoked with three arguments: (value, index, array). * * 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 * match the properties of the given object, else false. * * @param array The array to query. * @param predicate The function invoked per iteration. * @param thisArg The this binding of predicate. * @return Returns the slice of array. */ dropRightWhile( array: List, predicate?: ListIterator, thisArg?: any ): TValue[]; /** * @see _.dropRightWhile */ dropRightWhile( array: List, predicate?: string, thisArg?: any ): TValue[]; /** * @see _.dropRightWhile */ dropRightWhile( array: List, predicate?: TWhere ): TValue[]; } interface LoDashImplicitArrayWrapper { /** * @see _.dropRightWhile */ dropRightWhile( predicate?: ListIterator, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.dropRightWhile */ dropRightWhile( predicate?: string, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.dropRightWhile */ dropRightWhile( predicate?: TWhere ): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.dropRightWhile */ dropRightWhile( predicate?: ListIterator, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.dropRightWhile */ dropRightWhile( predicate?: string, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.dropRightWhile */ dropRightWhile( predicate?: TWhere ): LoDashImplicitArrayWrapper; } //_.dropWhile interface LoDashStatic { /** * Creates a slice of array excluding elements dropped from the beginning. Elements are dropped until predicate * returns falsey. The predicate is bound to thisArg and invoked with three arguments: (value, index, array). * * 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 array The array to query. * @param predicate The function invoked per iteration. * @param thisArg The this binding of predicate. * @return Returns the slice of array. */ dropWhile( array: List, predicate?: ListIterator, thisArg?: any ): TValue[]; /** * @see _.dropWhile */ dropWhile( array: List, predicate?: string, thisArg?: any ): TValue[]; /** * @see _.dropWhile */ dropWhile( array: List, predicate?: TWhere ): TValue[]; } interface LoDashImplicitArrayWrapper { /** * @see _.dropWhile */ dropWhile( predicate?: ListIterator, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.dropWhile */ dropWhile( predicate?: string, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.dropWhile */ dropWhile( predicate?: TWhere ): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.dropWhile */ dropWhile( predicate?: ListIterator, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.dropWhile */ dropWhile( predicate?: string, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.dropWhile */ dropWhile( predicate?: TWhere ): LoDashImplicitArrayWrapper; } //_.findIndex interface LoDashStatic { /** * This method is like _.find except that it returns the index of the first element predicate returns truthy * for instead of the element itself. * * 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 array The array to search. * @param predicate The function invoked per iteration. * @param thisArg The this binding of predicate. * @return Returns the index of the found element, else -1. */ findIndex( array: List, predicate?: ListIterator, thisArg?: any ): number; /** * @see _.findIndex */ findIndex( array: List, predicate?: string, thisArg?: any ): number; /** * @see _.findIndex */ findIndex( array: List, predicate?: W ): number; } interface LoDashImplicitArrayWrapper { /** * @see _.findIndex */ findIndex( predicate?: ListIterator, thisArg?: any ): number; /** * @see _.findIndex */ findIndex( predicate?: string, thisArg?: any ): number; /** * @see _.findIndex */ findIndex( predicate?: W ): number; } interface LoDashImplicitObjectWrapper { /** * @see _.findIndex */ findIndex( predicate?: ListIterator, thisArg?: any ): number; /** * @see _.findIndex */ findIndex( predicate?: string, thisArg?: any ): number; /** * @see _.findIndex */ findIndex( predicate?: W ): number; } //_.findLastIndex interface LoDashStatic { /** * This method is like _.findIndex except that it iterates over elements of collection from right to left. * * 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 array The array to search. * @param predicate The function invoked per iteration. * @param thisArg The function invoked per iteration. * @return Returns the index of the found element, else -1. */ findLastIndex( array: List, predicate?: ListIterator, thisArg?: any ): number; /** * @see _.findLastIndex */ findLastIndex( array: List, predicate?: string, thisArg?: any ): number; /** * @see _.findLastIndex */ findLastIndex( array: List, predicate?: W ): number; } interface LoDashImplicitArrayWrapper { /** * @see _.findLastIndex */ findLastIndex( predicate?: ListIterator, thisArg?: any ): number; /** * @see _.findLastIndex */ findLastIndex( predicate?: string, thisArg?: any ): number; /** * @see _.findLastIndex */ findLastIndex( predicate?: W ): number; } interface LoDashImplicitObjectWrapper { /** * @see _.findLastIndex */ findLastIndex( predicate?: ListIterator, thisArg?: any ): number; /** * @see _.findLastIndex */ findLastIndex( predicate?: string, thisArg?: any ): number; /** * @see _.findLastIndex */ findLastIndex( predicate?: W ): number; } //_.first interface LoDashStatic { /** * Gets the first element of array. * * @alias _.head * * @param array The array to query. * @return Returns the first element of array. */ first(array: List): T; } interface LoDashImplicitArrayWrapper { /** * @see _.first */ first(): T; } interface LoDashImplicitObjectWrapper { /** * @see _.first */ first(): TResult; } interface MaybeNestedList extends List> { } interface RecursiveArray extends Array> { } interface ListOfRecursiveArraysOrValues 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; } interface LoDashImplicitArrayWrapper { /** * @see _.flatten **/ flatten(): LoDashImplicitArrayWrapper; /** * @see _.flatten **/ flatten(isShallow: boolean): LoDashImplicitArrayWrapper; } //_.flattenDeep interface LoDashStatic { /** * Recursively flattens a nested array. * * @param array The array to recursively flatten. * @return Returns the new flattened array. */ flattenDeep(array: RecursiveArray): T[]; /** * @see _.flattenDeep */ flattenDeep(array: ListOfRecursiveArraysOrValues): T[]; /** * @see _.flattenDeep */ flattenDeep(array: RecursiveList): any[]; } interface LoDashImplicitArrayWrapper { /** * @see _.flattenDeep */ flattenDeep(): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.flattenDeep */ flattenDeep(): LoDashImplicitArrayWrapper; } //_.head interface LoDashStatic { /** * @see _.first */ head(array: List): T; } interface LoDashImplicitArrayWrapper { /** * @see _.first */ head(): T; } interface LoDashImplicitObjectWrapper { /** * @see _.first */ head(): TResult; } //_.indexOf interface LoDashStatic { /** * Gets the index at which the first occurrence of value is found in array using SameValueZero for equality * comparisons. If fromIndex is negative, it’s used as the offset from the end of array. If array is sorted * providing true for fromIndex performs a faster binary search. * * @param array The array to search. * @param value The value to search for. * @param fromIndex The index to search from or true to perform a binary search on a sorted array. * @return The index to search from or true to perform a binary search on a sorted array. */ indexOf( array: List, value: T, fromIndex?: boolean|number ): number; } interface LoDashImplicitArrayWrapper { /** * @see _.indexOf */ indexOf( value: T, fromIndex?: boolean|number ): number; } interface LoDashImplicitObjectWrapper { /** * @see _.indexOf */ indexOf( value: TValue, fromIndex?: boolean|number ): number; } //_.initial interface LoDashStatic { /** * Gets all but the last element of array. * * @param array The array to query. * @return Returns the slice of array. */ initial(array: T[]|List): T[]; } interface LoDashImplicitArrayWrapper { /** * @see _.initial */ initial(): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.initial */ initial(): LoDashImplicitArrayWrapper; } //_.intersection interface LoDashStatic { /** * Creates an array of unique values that are included in all of the provided arrays using SameValueZero for * equality comparisons. * * @param arrays The arrays to inspect. * @return Returns the new array of shared values. */ intersection(...arrays: (T[]|List)[]): T[]; } interface LoDashImplicitArrayWrapper { /** * @see _.intersection */ intersection(...arrays: (TResult[]|List)[]): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.intersection */ intersection(...arrays: (TResult[]|List)[]): LoDashImplicitArrayWrapper; } //_.last interface LoDashStatic { /** * Gets the last element of array. * * @param array The array to query. * @return Returns the last element of array. */ last(array: List): T; } interface LoDashImplicitArrayWrapper { /** * @see _.last */ last(): T; } interface LoDashImplicitObjectWrapper { /** * @see _.last */ last(): T; } //_.lastIndexOf interface LoDashStatic { /** * This method is like _.indexOf except that it iterates over elements of array from right to left. * * @param array The array to search. * @param value The value to search for. * @param fromIndex The index to search from or true to perform a binary search on a sorted array. * @return Returns the index of the matched value, else -1. */ lastIndexOf( array: List, value: T, fromIndex?: boolean|number ): number; } interface LoDashImplicitArrayWrapper { /** * @see _.lastIndexOf */ lastIndexOf( value: T, fromIndex?: boolean|number ): number; } interface LoDashImplicitObjectWrapper { /** * @see _.lastIndexOf */ lastIndexOf( value: TResult, fromIndex?: boolean|number ): number; } //_.object interface LoDashStatic { /** * @see _.zipObject */ object( props: List, values?: List ): TResult; /** * @see _.zipObject */ object( props: List, values?: List ): TResult; /** * @see _.zipObject */ object( props: List, values?: List ): _.Dictionary; } interface LoDashImplicitArrayWrapper { /** * @see _.zipObject */ object( values?: List ): _.LoDashImplicitObjectWrapper; /** * @see _.zipObject */ object( values?: List ): _.LoDashImplicitObjectWrapper; /** * @see _.zipObject */ object( values?: List ): _.LoDashImplicitObjectWrapper<_.Dictionary>; } interface LoDashImplicitObjectWrapper { /** * @see _.zipObject */ object( values?: List ): _.LoDashImplicitObjectWrapper; /** * @see _.zipObject */ object( values?: List ): _.LoDashImplicitObjectWrapper; /** * @see _.zipObject */ object( values?: List ): _.LoDashImplicitObjectWrapper<_.Dictionary>; } //_.pull interface LoDashStatic { /** * Removes all provided values from array using SameValueZero for equality comparisons. * * Note: Unlike _.without, this method mutates array. * * @param array The array to modify. * @param values The values to remove. * @return Returns array. */ pull( array: T[], ...values: T[] ): T[]; /** * @see _.pull */ pull( array: List, ...values: T[] ): List; } interface LoDashImplicitArrayWrapper { /** * @see _.pull */ pull(...values: T[]): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.pull */ pull(...values: TValue[]): LoDashImplicitObjectWrapper>; } //_.pullAt interface LoDashStatic { /** * Removes elements from array corresponding to the given indexes and returns an array of the removed elements. * Indexes may be specified as an array of indexes or as individual arguments. * * Note: Unlike _.at, this method mutates array. * * @param array The array to modify. * @param indexes The indexes of elements to remove, specified as individual indexes or arrays of indexes. * @return Returns the new array of removed elements. */ pullAt( array: T[]|List, ...indexes: (number|number[])[] ): T[]; } interface LoDashImplicitArrayWrapper { /** * @see _.pullAt */ pullAt(...indexes: (number|number[])[]): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.pullAt */ pullAt(...indexes: (number|number[])[]): LoDashImplicitArrayWrapper; } //_.remove interface LoDashStatic { /** * Removes all elements from array that predicate returns truthy for and returns an array of the removed * elements. The predicate is bound to thisArg and invoked with three arguments: (value, index, array). * * 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. * * Note: Unlike _.filter, this method mutates array. * * @param array The array to modify. * @param predicate The function invoked per iteration. * @param thisArg The this binding of predicate. * @return Returns the new array of removed elements. */ remove( array: List, predicate?: ListIterator, thisArg?: any ): T[]; /** * @see _.remove */ remove( array: List, predicate?: string, thisArg?: any ): T[]; /** * @see _.remove */ remove( array: List, predicate?: W ): T[]; } interface LoDashImplicitArrayWrapper { /** * @see _.remove */ remove( predicate?: ListIterator, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.remove */ remove( predicate?: string, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.remove */ remove( predicate?: W ): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.remove */ remove( predicate?: ListIterator, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.remove */ remove( predicate?: string, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.remove */ remove( predicate?: W ): LoDashImplicitArrayWrapper; } //_.rest interface LoDashStatic { /** * Gets all but the first element of array. * * @alias _.tail * * @param array The array to query. * @return Returns the slice of array. */ rest(array: List): T[]; } interface LoDashImplicitArrayWrapper { /** * @see _.rest */ rest(): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.rest */ rest(): LoDashImplicitArrayWrapper; } //_.slice interface LoDashStatic { /** * Creates a slice of array from start up to, but not including, end. * * @param array The array to slice. * @param start The start position. * @param end The end position. * @return Returns the slice of array. */ slice( array: T[], start?: number, end?: number ): T[]; } interface LoDashImplicitArrayWrapper { /** * @see _.slice */ slice( start?: number, end?: number ): LoDashImplicitArrayWrapper; } //_.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; } //_.tail interface LoDashStatic { /** * @see _.rest */ tail(array: List): T[]; } interface LoDashImplicitArrayWrapper { /** * @see _.rest */ tail(): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.rest */ tail(): LoDashImplicitArrayWrapper; } //_.take interface LoDashStatic { /** * Creates a slice of array with n elements taken from the beginning. * * @param array The array to query. * @param n The number of elements to take. * @return Returns the slice of array. */ take( array: List, n?: number ): T[]; } interface LoDashImplicitArrayWrapper { /** * @see _.take */ take(n?: number): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.take */ take(n?: number): LoDashImplicitArrayWrapper; } //_.takeRight interface LoDashStatic { /** * Creates a slice of array with n elements taken from the end. * * @param array The array to query. * @param n The number of elements to take. * @return Returns the slice of array. */ takeRight( array: T[]|List, n?: number ): T[]; } interface LoDashImplicitArrayWrapper { /** * @see _.takeRight */ takeRight(n?: number): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.takeRight */ takeRight(n?: number): LoDashImplicitArrayWrapper; } //_.takeRightWhile interface LoDashStatic { /** * Creates a slice of array with elements taken from the end. Elements are taken until predicate returns * falsey. The predicate is bound to thisArg and invoked with three arguments: (value, index, array). * * 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 array The array to query. * @param predicate The function invoked per iteration. * @param thisArg The this binding of predicate. * @return Returns the slice of array. */ takeRightWhile( array: List, predicate?: ListIterator, thisArg?: any ): TValue[]; /** * @see _.takeRightWhile */ takeRightWhile( array: List, predicate?: string, thisArg?: any ): TValue[]; /** * @see _.takeRightWhile */ takeRightWhile( array: List, predicate?: TWhere ): TValue[]; } interface LoDashImplicitArrayWrapper { /** * @see _.takeRightWhile */ takeRightWhile( predicate?: ListIterator, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.takeRightWhile */ takeRightWhile( predicate?: string, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.takeRightWhile */ takeRightWhile( predicate?: TWhere ): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.takeRightWhile */ takeRightWhile( predicate?: ListIterator, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.takeRightWhile */ takeRightWhile( predicate?: string, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.takeRightWhile */ takeRightWhile( predicate?: TWhere ): LoDashImplicitArrayWrapper; } //_.takeWhile interface LoDashStatic { /** * Creates a slice of array with elements taken from the beginning. Elements are taken until predicate returns * falsey. The predicate is bound to thisArg and invoked with three arguments: (value, index, array). * * 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 array The array to query. * @param predicate The function invoked per iteration. * @param thisArg The this binding of predicate. * @return Returns the slice of array. */ takeWhile( array: List, predicate?: ListIterator, thisArg?: any ): TValue[]; /** * @see _.takeWhile */ takeWhile( array: List, predicate?: string, thisArg?: any ): TValue[]; /** * @see _.takeWhile */ takeWhile( array: List, predicate?: TWhere ): TValue[]; } interface LoDashImplicitArrayWrapper { /** * @see _.takeWhile */ takeWhile( predicate?: ListIterator, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.takeWhile */ takeWhile( predicate?: string, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.takeWhile */ takeWhile( predicate?: TWhere ): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.takeWhile */ takeWhile( predicate?: ListIterator, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.takeWhile */ takeWhile( predicate?: string, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.takeWhile */ takeWhile( predicate?: TWhere ): LoDashImplicitArrayWrapper; } //_.union interface LoDashStatic { /** * Creates an array of unique values, in order, from all of the provided arrays using SameValueZero for * equality comparisons. * * @param arrays The arrays to inspect. * @return Returns the new array of combined values. */ union(...arrays: List[]): T[]; } interface LoDashImplicitArrayWrapper { /** * @see _.union */ union(...arrays: List[]): LoDashImplicitArrayWrapper; /** * @see _.union */ union(...arrays: List[]): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.union */ union(...arrays: List[]): LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitArrayWrapper { /** * @see _.uniq **/ uniq(isSorted?: boolean): LoDashImplicitArrayWrapper; /** * @see _.uniq **/ uniq( isSorted: boolean, callback: ListIterator, thisArg?: any): LoDashImplicitArrayWrapper; /** * @see _.uniq **/ uniq( callback: ListIterator, thisArg?: any): LoDashImplicitArrayWrapper; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ uniq( isSorted: boolean, pluckValue: string): LoDashImplicitArrayWrapper; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ uniq(pluckValue: string): LoDashImplicitArrayWrapper; /** * @see _.uniq * @param whereValue _.where style callback **/ uniq( isSorted: boolean, whereValue: W): LoDashImplicitArrayWrapper; /** * @see _.uniq * @param whereValue _.where style callback **/ uniq( whereValue: W): LoDashImplicitArrayWrapper; /** * @see _.uniq **/ unique(isSorted?: boolean): LoDashImplicitArrayWrapper; /** * @see _.uniq **/ unique( isSorted: boolean, callback: ListIterator, thisArg?: any): LoDashImplicitArrayWrapper; /** * @see _.uniq **/ unique( callback: ListIterator, thisArg?: any): LoDashImplicitArrayWrapper; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ unique( isSorted: boolean, pluckValue: string): LoDashImplicitArrayWrapper; /** * @see _.uniq * @param pluckValue _.pluck style callback **/ unique(pluckValue: string): LoDashImplicitArrayWrapper; /** * @see _.uniq * @param whereValue _.where style callback **/ unique( isSorted: boolean, whereValue: W): LoDashImplicitArrayWrapper; /** * @see _.uniq * @param whereValue _.where style callback **/ unique( whereValue: W): LoDashImplicitArrayWrapper; } //_.unzipWith interface LoDashStatic { /** * This method is like _.unzip except that it accepts an iteratee to specify how regrouped values should be * combined. The iteratee is bound to thisArg and invoked with four arguments: (accumulator, value, index, * group). * * @param array The array of grouped elements to process. * @param iteratee The function to combine regrouped values. * @param thisArg The this binding of iteratee. * @return Returns the new array of regrouped elements. */ unzipWith( array: List>, iteratee?: MemoIterator, thisArg?: any ): TResult[]; } interface LoDashImplicitArrayWrapper { /** * @see _.unzipWith */ unzipWith( iteratee?: MemoIterator, thisArg?: any ): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.unzipWith */ unzipWith( iteratee?: MemoIterator, thisArg?: any ): LoDashImplicitArrayWrapper; } //_.without interface LoDashStatic { /** * Creates an array excluding all provided values using SameValueZero for equality comparisons. * * @param array The array to filter. * @param values The values to exclude. * @return Returns the new array of filtered values. */ without( array: T[]|List, ...values: T[] ): T[]; } interface LoDashImplicitArrayWrapper { /** * @see _.without */ without(...values: T[]): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.without */ without(...values: TValue[]): LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitArrayWrapper { /** * @see _.xor */ xor(...arrays: List[]): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.xor */ xor(...arrays: List[]): LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitArrayWrapper { /** * @see _.zip **/ zip(...arrays: any[][]): _.LoDashImplicitArrayWrapper; /** * @see _.zip **/ unzip(...arrays: any[]): _.LoDashImplicitArrayWrapper; } //_.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. * * @alias _.object * * @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, values?: List ): TResult; /** * @see _.zipObject */ zipObject( props: List, values?: List ): _.Dictionary; } interface LoDashImplicitArrayWrapper { /** * @see _.zipObject */ zipObject( values?: List ): _.LoDashImplicitObjectWrapper; /** * @see _.zipObject */ zipObject( values?: List ): _.LoDashImplicitObjectWrapper; /** * @see _.zipObject */ zipObject( values?: List ): _.LoDashImplicitObjectWrapper<_.Dictionary>; } interface LoDashImplicitObjectWrapper { /** * @see _.zipObject */ zipObject( values?: List ): _.LoDashImplicitObjectWrapper; /** * @see _.zipObject */ zipObject( values?: List ): _.LoDashImplicitObjectWrapper; /** * @see _.zipObject */ zipObject( values?: List ): _.LoDashImplicitObjectWrapper<_.Dictionary>; } //_.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 LoDashImplicitArrayWrapper { /** * @see _.zipWith */ zipWith(...args: any[]): LoDashImplicitArrayWrapper; } /********* * Chain * *********/ //_.chain interface LoDashStatic { /** * Creates a lodash object that wraps value with explicit method chaining enabled. * * @param value The value to wrap. * @return Returns the new lodash wrapper instance. */ chain(value: number): LoDashExplicitWrapper; chain(value: string): LoDashExplicitWrapper; chain(value: boolean): LoDashExplicitWrapper; chain(value: T[]): LoDashExplicitArrayWrapper; chain(value: T): LoDashExplicitObjectWrapper; chain(value: any): LoDashExplicitWrapper; } interface LoDashImplicitWrapper { /** * @see _.chain */ chain(): LoDashExplicitWrapper; } interface LoDashImplicitArrayWrapper { /** * @see _.chain */ chain(): LoDashExplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.chain */ chain(): LoDashExplicitObjectWrapper; } interface LoDashExplicitWrapperBase { /** * @see _.chain */ chain(): TWrapper; } //_.tap interface LoDashStatic { /** * This method invokes interceptor and returns value. The interceptor is bound to thisArg and invoked with one * argument; (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. * @parem thisArg The this binding of interceptor. * @return Returns value. **/ tap( value: T, interceptor: (value: T) => void, thisArg?: any ): T; } interface LoDashImplicitWrapperBase { /** * @see _.tap */ tap( interceptor: (value: T) => void, thisArg?: any ): TWrapper; } interface LoDashExplicitWrapperBase { /** * @see _.tap */ tap( interceptor: (value: T) => void, thisArg?: any ): TWrapper; } //_.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 LoDashImplicitWrapperBase { /** * @see _.thru */ thru( interceptor: (value: T) => TResult, thisArg?: any): LoDashImplicitWrapper; /** * @see _.thru */ thru( interceptor: (value: T) => TResult, thisArg?: any): LoDashImplicitWrapper; /** * @see _.thru */ thru( interceptor: (value: T) => TResult, thisArg?: any): LoDashImplicitWrapper; /** * @see _.thru */ thru( interceptor: (value: T) => TResult, thisArg?: any): LoDashImplicitObjectWrapper; /** * @see _.thru */ thru( interceptor: (value: T) => TResult[], thisArg?: any): LoDashImplicitArrayWrapper; } interface LoDashExplicitWrapperBase { /** * @see _.thru */ thru( interceptor: (value: T) => TResult, thisArg?: any ): LoDashExplicitWrapper; /** * @see _.thru */ thru( interceptor: (value: T) => TResult, thisArg?: any ): LoDashExplicitWrapper; /** * @see _.thru */ thru( interceptor: (value: T) => TResult, thisArg?: any ): LoDashExplicitWrapper; /** * @see _.thru */ thru( interceptor: (value: T) => TResult, thisArg?: any ): LoDashExplicitObjectWrapper; /** * @see _.thru */ thru( interceptor: (value: T) => TResult[], thisArg?: any ): LoDashExplicitArrayWrapper; } //_.prototype.commit interface LoDashImplicitWrapperBase { /** * Executes the chained sequence and returns the wrapped result. * * @return Returns the new lodash wrapper instance. */ commit(): TWrapper; } interface LoDashExplicitWrapperBase { /** * @see _.commit */ commit(): TWrapper; } //_.prototype.concat interface LoDashImplicitWrapperBase { /** * Creates a new array joining a wrapped array with any additional arrays and/or values. * * @param items * @return Returns the new concatenated array. */ concat(...items: Array>): LoDashImplicitArrayWrapper; /** * @see _.concat */ concat(...items: Array>): LoDashImplicitArrayWrapper; } interface LoDashExplicitWrapperBase { /** * @see _.concat */ concat(...items: Array>): LoDashExplicitArrayWrapper; /** * @see _.concat */ concat(...items: Array>): LoDashExplicitArrayWrapper; } //_.prototype.plant interface LoDashImplicitWrapperBase { /** * Creates a clone of the chained sequence planting value as the wrapped value. * @param value The value to plant as the wrapped value. * @return Returns the new lodash wrapper instance. */ plant(value: number): LoDashImplicitWrapper; /** * @see _.plant */ plant(value: string): LoDashImplicitStringWrapper; /** * @see _.plant */ plant(value: boolean): LoDashImplicitWrapper; /** * @see _.plant */ plant(value: number[]): LoDashImplicitNumberArrayWrapper; /** * @see _.plant */ plant(value: T[]): LoDashImplicitArrayWrapper; /** * @see _.plant */ plant(value: T): LoDashImplicitObjectWrapper; /** * @see _.plant */ plant(value: any): LoDashImplicitWrapper; } interface LoDashExplicitWrapperBase { /** * @see _.plant */ plant(value: number): LoDashExplicitWrapper; /** * @see _.plant */ plant(value: string): LoDashExplicitStringWrapper; /** * @see _.plant */ plant(value: boolean): LoDashExplicitWrapper; /** * @see _.plant */ plant(value: number[]): LoDashExplicitNumberArrayWrapper; /** * @see _.plant */ plant(value: T[]): LoDashExplicitArrayWrapper; /** * @see _.plant */ plant(value: T): LoDashExplicitObjectWrapper; /** * @see _.plant */ plant(value: any): LoDashExplicitWrapper; } //_.prototype.reverse interface LoDashImplicitArrayWrapper { /** * Reverses the wrapped array so the first element becomes the last, the second element becomes the second to * last, and so on. * * Note: This method mutates the wrapped array. * * @return Returns the new reversed lodash wrapper instance. */ reverse(): LoDashImplicitArrayWrapper; } interface LoDashExplicitArrayWrapper { /** * @see _.reverse */ reverse(): LoDashExplicitArrayWrapper; } //_.prototype.run interface LoDashWrapperBase { /** * @see _.value */ run(): T; } //_.prototype.toJSON interface LoDashWrapperBase { /** * @see _.value */ toJSON(): T; } //_.prototype.toString interface LoDashWrapperBase { /** * Produces the result of coercing the unwrapped value to a string. * * @return Returns the coerced string value. */ toString(): string; } //_.prototype.value interface LoDashWrapperBase { /** * Executes the chained sequence to extract the unwrapped value. * * @alias _.run, _.toJSON, _.valueOf * * @return Returns the resolved unwrapped value. */ value(): T; } //_.valueOf interface LoDashWrapperBase { /** * @see _.value */ valueOf(): T; } /************** * Collection * **************/ //_.all interface LoDashStatic { /** * @see _.every */ all( collection: List, predicate?: ListIterator, thisArg?: any ): boolean; /** * @see _.every */ all( collection: Dictionary, predicate?: DictionaryIterator, thisArg?: any ): boolean; /** * @see _.every */ all( collection: List|Dictionary, predicate?: string, thisArg?: any ): boolean; /** * @see _.every */ all( collection: List|Dictionary, predicate?: TObject ): boolean; } interface LoDashImplicitArrayWrapper { /** * @see _.every */ all( predicate?: ListIterator, thisArg?: any ): boolean; /** * @see _.every */ all( predicate?: string, thisArg?: any ): boolean; /** * @see _.every */ all( predicate?: TObject ): boolean; } interface LoDashImplicitObjectWrapper { /** * @see _.every */ all( predicate?: ListIterator|DictionaryIterator, thisArg?: any ): boolean; /** * @see _.every */ all( predicate?: string, thisArg?: any ): boolean; /** * @see _.every */ all( predicate?: TObject ): boolean; } //_.any interface LoDashStatic { /** * @see _.some */ any( collection: List, predicate?: ListIterator, thisArg?: any ): boolean; /** * @see _.some */ any( collection: Dictionary, predicate?: DictionaryIterator, thisArg?: any ): boolean; /** * @see _.some */ any( collection: List|Dictionary, predicate?: string, thisArg?: any ): boolean; /** * @see _.some */ any( collection: List|Dictionary, predicate?: TObject ): boolean; } interface LoDashImplicitArrayWrapper { /** * @see _.some */ any( predicate?: ListIterator, thisArg?: any ): boolean; /** * @see _.some */ any( predicate?: string, thisArg?: any ): boolean; /** * @see _.some */ any( predicate?: TObject ): boolean; } interface LoDashImplicitObjectWrapper { /** * @see _.some */ any( predicate?: ListIterator|DictionaryIterator, thisArg?: any ): boolean; /** * @see _.some */ any( predicate?: string, thisArg?: any ): boolean; /** * @see _.some */ any( predicate?: TObject ): boolean; } //_.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 LoDashImplicitArrayWrapper { /** * @see _.at */ at(...props: Array>): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.at */ at(...props: Array>): LoDashImplicitArrayWrapper; } //_.collect interface LoDashStatic { /** * @see _.map */ collect( collection: List, iteratee?: ListIterator, thisArg?: any ): TResult[]; /** * @see _.map */ collect( collection: Dictionary, iteratee?: DictionaryIterator, thisArg?: any ): TResult[]; /** * @see _.map */ collect( collection: List, iteratee?: string ): TResult[]; /** * @see _.map */ collect( collection: Dictionary, iteratee?: string ): TResult[]; /** * @see _.map */ collect( collection: List, iteratee?: TObject ): boolean[]; /** * @see _.map */ collect( collection: Dictionary, iteratee?: TObject ): boolean[]; } interface LoDashImplicitArrayWrapper { /** * @see _.map */ collect( iteratee?: ListIterator, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.map */ collect( iteratee?: string ): LoDashImplicitArrayWrapper; /** * @see _.map */ collect( iteratee?: TObject ): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.map */ collect( iteratee?: ListIterator|DictionaryIterator, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.map */ collect( iteratee?: string ): LoDashImplicitArrayWrapper; /** * @see _.map */ collect( iteratee?: TObject ): LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitArrayWrapper { /** * @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 LoDashImplicitObjectWrapper { /** * @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 LoDashImplicitStringWrapper { /** * @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 LoDashImplicitArrayWrapper { /** * @see _.countBy **/ countBy( callback?: ListIterator, thisArg?: any): LoDashImplicitObjectWrapper>; /** * @see _.countBy * @param callback Function name **/ countBy( callback: string, thisArg?: any): LoDashImplicitObjectWrapper>; } //_.detect interface LoDashStatic { /** * @see _.find */ detect( collection: List, predicate?: ListIterator, thisArg?: any ): T; /** * @see _.find */ detect( collection: Dictionary, predicate?: DictionaryIterator, thisArg?: any ): T; /** * @see _.find */ detect( collection: List|Dictionary, predicate?: string, thisArg?: any ): T; /** * @see _.find */ detect( collection: List|Dictionary, predicate?: TObject ): T; } interface LoDashImplicitArrayWrapper { /** * @see _.find */ detect( predicate?: ListIterator, thisArg?: any ): T; /** * @see _.find */ detect( predicate?: string, thisArg?: any ): T; /** * @see _.find */ detect( predicate?: TObject ): T; } interface LoDashImplicitObjectWrapper { /** * @see _.find */ detect( predicate?: ListIterator|DictionaryIterator, thisArg?: any ): TResult; /** * @see _.find */ detect( predicate?: string, thisArg?: any ): TResult; /** * @see _.find */ detect( predicate?: TObject ): TResult; } //_.every interface LoDashStatic { /** * Checks if predicate returns truthy for all elements of collection. 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. * * @alias _.all * * @param collection The collection to iterate over. * @param predicate The function invoked per iteration. * @param thisArg The this binding of predicate. * @return Returns true if all elements pass the predicate check, else false. */ every( collection: List, predicate?: ListIterator, thisArg?: any ): boolean; /** * @see _.every */ every( collection: Dictionary, predicate?: DictionaryIterator, thisArg?: any ): boolean; /** * @see _.every */ every( collection: List|Dictionary, predicate?: string, thisArg?: any ): boolean; /** * @see _.every */ every( collection: List|Dictionary, predicate?: TObject ): boolean; } interface LoDashImplicitArrayWrapper { /** * @see _.every */ every( predicate?: ListIterator, thisArg?: any ): boolean; /** * @see _.every */ every( predicate?: string, thisArg?: any ): boolean; /** * @see _.every */ every( predicate?: TObject ): boolean; } interface LoDashImplicitObjectWrapper { /** * @see _.every */ every( predicate?: ListIterator|DictionaryIterator, thisArg?: any ): boolean; /** * @see _.every */ every( predicate?: string, thisArg?: any ): boolean; /** * @see _.every */ every( predicate?: TObject ): 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 LoDashImplicitArrayWrapper { /** * @see _.fill */ fill( value: TResult, start?: number, end?: number): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.fill */ fill( value: TResult, start?: number, end?: number): LoDashImplicitObjectWrapper>; } //_.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 LoDashImplicitArrayWrapper { /** * @see _.filter **/ filter(): LoDashImplicitArrayWrapper; /** * @see _.filter **/ filter( callback: ListIterator, thisArg?: any): LoDashImplicitArrayWrapper; /** * @see _.filter * @param pluckValue _.pluck style callback **/ filter( pluckValue: string): LoDashImplicitArrayWrapper; /** * @see _.filter * @param pluckValue _.pluck style callback **/ filter( whereValue: W): LoDashImplicitArrayWrapper; /** * @see _.filter **/ select( callback: ListIterator, thisArg?: any): LoDashImplicitArrayWrapper; /** * @see _.filter * @param pluckValue _.pluck style callback **/ select( pluckValue: string): LoDashImplicitArrayWrapper; /** * @see _.filter * @param pluckValue _.pluck style callback **/ select( whereValue: W): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.filter **/ filter( callback: ObjectIterator, thisArg?: any): LoDashImplicitObjectWrapper; } //_.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. * * @alias _.detect * * @param collection The collection to search. * @param predicate The function invoked per iteration. * @param thisArg The this binding of predicate. * @return Returns the matched element, else undefined. */ find( collection: List, predicate?: ListIterator, thisArg?: any ): T; /** * @see _.find */ find( collection: Dictionary, predicate?: DictionaryIterator, thisArg?: any ): T; /** * @see _.find */ find( collection: List|Dictionary, predicate?: string, thisArg?: any ): T; /** * @see _.find */ find( collection: List|Dictionary, predicate?: TObject ): T; } interface LoDashImplicitArrayWrapper { /** * @see _.find */ find( predicate?: ListIterator, thisArg?: any ): T; /** * @see _.find */ find( predicate?: string, thisArg?: any ): T; /** * @see _.find */ find( predicate?: TObject ): T; } interface LoDashImplicitObjectWrapper { /** * @see _.find */ find( predicate?: ListIterator|DictionaryIterator, thisArg?: any ): TResult; /** * @see _.find */ find( predicate?: string, thisArg?: any ): TResult; /** * @see _.find */ find( predicate?: TObject ): TResult; } //_.findWhere interface LoDashStatic { /** * @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; } //_.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 LoDashImplicitArrayWrapper { /** * @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 LoDashImplicitArrayWrapper { /** * @see _.forEach **/ forEach( callback: ListIterator, thisArg?: any): LoDashImplicitArrayWrapper; /** * @see _.forEach **/ each( callback: ListIterator, thisArg?: any): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.forEach **/ forEach( callback: ObjectIterator, thisArg?: any): LoDashImplicitObjectWrapper; /** * @see _.forEach **/ each( callback: ObjectIterator, thisArg?: any): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitArrayWrapper { /** * @see _.forEachRight **/ forEachRight( callback: ListIterator, thisArg?: any): LoDashImplicitArrayWrapper; /** * @see _.forEachRight **/ eachRight( callback: ListIterator, thisArg?: any): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.forEachRight **/ forEachRight( callback: ObjectIterator, thisArg?: any): LoDashImplicitObjectWrapper>; /** * @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): LoDashImplicitObjectWrapper>; } //_.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 LoDashImplicitArrayWrapper { /** * @see _.groupBy **/ groupBy( callback: ListIterator, thisArg?: any): _.LoDashImplicitObjectWrapper<_.Dictionary>; /** * @see _.groupBy **/ groupBy( pluckValue: string): _.LoDashImplicitObjectWrapper<_.Dictionary>; /** * @see _.groupBy **/ groupBy( whereValue: W): _.LoDashImplicitObjectWrapper<_.Dictionary>; } interface LoDashImplicitObjectWrapper { /** * @see _.groupBy **/ groupBy( callback: ListIterator, thisArg?: any): _.LoDashImplicitObjectWrapper<_.Dictionary>; /** * @see _.groupBy **/ groupBy( pluckValue: string): _.LoDashImplicitObjectWrapper<_.Dictionary>; /** * @see _.groupBy **/ groupBy( whereValue: W): _.LoDashImplicitObjectWrapper<_.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 collection through iteratee. The iteratee is bound to * thisArg and invoked with three arguments: (value, index|key, collection). * * If a property name is provided for 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 iteratee the created _.matches style callback returns true for elements that * have the properties of the given object, else false. * * Many lodash methods are guarded to work as iteratees for methods like _.every, _.filter, _.map, _.mapValues, * _.reject, and _.some. * * The guarded methods are: * ary, callback, chunk, clone, create, curry, curryRight, drop, dropRight, every, fill, flatten, invert, max, * min, parseInt, slice, sortBy, take, takeRight, template, trim, trimLeft, trimRight, trunc, random, range, * sample, some, sum, uniq, and words * * @alias _.collect * * @param collection The collection to iterate over. * @param iteratee The function invoked per iteration. * @param thisArg The this binding of iteratee. * @return Returns the new mapped array. */ map( collection: List, iteratee?: ListIterator, thisArg?: any ): TResult[]; /** * @see _.map */ map( collection: Dictionary, iteratee?: DictionaryIterator, thisArg?: any ): TResult[]; /** * @see _.map */ map( collection: List, iteratee?: string ): TResult[]; /** * @see _.map */ map( collection: Dictionary, iteratee?: string ): TResult[]; /** * @see _.map */ map( collection: List, iteratee?: TObject ): boolean[]; /** * @see _.map */ map( collection: Dictionary, iteratee?: TObject ): boolean[]; } interface LoDashImplicitArrayWrapper { /** * @see _.map */ map( iteratee?: ListIterator, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.map */ map( iteratee?: string ): LoDashImplicitArrayWrapper; /** * @see _.map */ map( iteratee?: TObject ): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.map */ map( iteratee?: ListIterator|DictionaryIterator, thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.map */ map( iteratee?: string ): LoDashImplicitArrayWrapper; /** * @see _.map */ map( iteratee?: TObject ): LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitNumberArrayWrapper { /** * @see _.sum **/ sum(): number; /** * @see _.sum **/ sum( iteratee: ListIterator, thisArg?: any): number; } interface LoDashImplicitArrayWrapper { /** * @see _.sum **/ sum(): number; /** * @see _.sum **/ sum( iteratee: ListIterator, thisArg?: any): number; /** * @see _.sum * @param property _.property callback shorthand. **/ sum( property: string): number; } interface LoDashImplicitObjectWrapper { /** * @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 LoDashImplicitArrayWrapper { /** * @see _.pluck **/ pluck( property: string): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.pluck **/ pluck( property: string): LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitStringWrapper { /** * @see _.partition */ partition( callback: ListIterator, thisArg?: any): LoDashImplicitArrayWrapper; } interface LoDashImplicitArrayWrapper { /** * @see _.partition */ partition( callback: ListIterator, thisArg?: any): LoDashImplicitArrayWrapper; /** * @see _.partition */ partition( whereValue: W): LoDashImplicitArrayWrapper; /** * @see _.partition */ partition( path: string, srcValue: any): LoDashImplicitArrayWrapper; /** * @see _.partition */ partition( pluckValue: string): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.partition */ partition( callback: ListIterator, thisArg?: any): LoDashImplicitArrayWrapper; /** * @see _.partition */ partition( callback: DictionaryIterator, thisArg?: any): LoDashImplicitArrayWrapper; /** * @see _.partition */ partition( whereValue: W): LoDashImplicitArrayWrapper; /** * @see _.partition */ partition( path: string, srcValue: any): LoDashImplicitArrayWrapper; /** * @see _.partition */ partition( pluckValue: string): LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitArrayWrapper { /** * @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 LoDashImplicitObjectWrapper { /** * @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 LoDashImplicitArrayWrapper { /** * @see _.reject **/ reject( callback: ListIterator, thisArg?: any): LoDashImplicitArrayWrapper; /** * @see _.reject * @param pluckValue _.pluck style callback **/ reject(pluckValue: string): LoDashImplicitArrayWrapper; /** * @see _.reject * @param whereValue _.where style callback **/ reject(whereValue: W): LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitArrayWrapper { /** * @see _.sample **/ sample(n: number): LoDashImplicitArrayWrapper; /** * @see _.sample **/ sample(): LoDashImplicitWrapper; } //_.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 LoDashImplicitArrayWrapper { /** * @see _.shuffle **/ shuffle(): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.shuffle **/ shuffle(): LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitArrayWrapper { /** * @see _.size **/ size(): number; } interface LoDashImplicitObjectWrapper { /** * @see _.size **/ size(): number; } //_.some interface LoDashStatic { /** * Checks if predicate returns truthy for any element of collection. The function returns as soon as it finds * a passing value and does not iterate over the entire collection. 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. * * @alias _.any * * @param collection The collection to iterate over. * @param predicate The function invoked per iteration. * @param thisArg The this binding of predicate. * @return Returns true if any element passes the predicate check, else false. */ some( collection: List, predicate?: ListIterator, thisArg?: any ): boolean; /** * @see _.some */ some( collection: Dictionary, predicate?: DictionaryIterator, thisArg?: any ): boolean; /** * @see _.some */ some( collection: List|Dictionary, predicate?: string, thisArg?: any ): boolean; /** * @see _.some */ some( collection: List|Dictionary, predicate?: TObject ): boolean; } interface LoDashImplicitArrayWrapper { /** * @see _.some */ some( predicate?: ListIterator, thisArg?: any ): boolean; /** * @see _.some */ some( predicate?: string, thisArg?: any ): boolean; /** * @see _.some */ some( predicate?: TObject ): boolean; } interface LoDashImplicitObjectWrapper { /** * @see _.some */ some( predicate?: ListIterator|DictionaryIterator, thisArg?: any ): boolean; /** * @see _.some */ some( predicate?: string, thisArg?: any ): boolean; /** * @see _.some */ some( predicate?: TObject ): 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 LoDashImplicitArrayWrapper { /** * @see _.sortBy **/ sortBy( iteratee?: ListIterator, thisArg?: any): LoDashImplicitArrayWrapper; /** * @see _.sortBy * @param pluckValue _.pluck style callback **/ sortBy(pluckValue: string): LoDashImplicitArrayWrapper; /** * @see _.sortBy * @param whereValue _.where style callback **/ sortBy(whereValue: W): LoDashImplicitArrayWrapper; /** * 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)[]): LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitArrayWrapper { /** * @see _.sortByAll **/ sortByAll( iteratees: (ListIterator|string|Object)[]): LoDashImplicitArrayWrapper; /** * @see _.sortByAll **/ sortByAll( ...iteratees: (ListIterator|string|Object)[]): LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitArrayWrapper { /** * @see _.sortByOrder **/ sortByOrder( iteratees: (ListIterator|string|Object)[], orders?: boolean[]): LoDashImplicitArrayWrapper; /** * @see _.sortByOrder **/ sortByOrder( iteratees: (ListIterator|string|Object)[], orders?: string[]): LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitArrayWrapper { /** * @see _.where **/ where(properties: U): LoDashImplicitArrayWrapper; } /******** * 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; } interface LoDashImplicitWrapperBase { /** * @see _.now */ now(): number; } interface LoDashExplicitWrapperBase { /** * @see _.now */ now(): LoDashExplicitWrapper; } /************* * 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 LoDashImplicitWrapper { /** * @see _.after **/ after(func: Function): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.ary */ ary(n?: number, guard?: Object): LoDashImplicitObjectWrapper; } //_.backflow interface LoDashStatic { /** * @see _.flowRight */ backflow(...funcs: Function[]): TResult; } interface LoDashImplicitObjectWrapper { /** * @see _.flowRight **/ backflow(...funcs: Function[]): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitWrapper { /** * @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 LoDashImplicitObjectWrapper { /** * @see _.bind **/ bind( thisArg: any, ...args: any[]): LoDashImplicitObjectWrapper<(...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 LoDashImplicitObjectWrapper { /** * @see _.bindAll **/ bindAll(...methodNames: string[]): LoDashImplicitWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.bindKey **/ bindKey( key: string, ...args: any[]): LoDashImplicitObjectWrapper; } //_.compose interface LoDashStatic { /** * @see _.flowRight */ compose(...funcs: Function[]): TResult; } interface LoDashImplicitObjectWrapper { /** * @see _.flowRight */ compose(...funcs: Function[]): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitWrapper { /** * @see _.createCallback **/ createCallback( thisArg?: any, argCount?: number): LoDashImplicitObjectWrapper<() => any>; } interface LoDashImplicitObjectWrapper { /** * @see _.createCallback **/ createCallback( thisArg?: any, argCount?: number): LoDashImplicitObjectWrapper<() => 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. * @return Returns the new curried function. */ curry(func: (t1: T1) => R): CurriedFunction1; /** * 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. * @return Returns the new curried function. */ curry(func: (t1: T1, t2: T2) => R): CurriedFunction2; /** * 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. * @return Returns the new curried function. */ curry(func: (t1: T1, t2: T2, t3: T3) => R): CurriedFunction3; /** * 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. * @return Returns the new curried function. */ curry(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R): CurriedFunction4; /** * 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. * @return Returns the new curried function. */ curry(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R): CurriedFunction5; /** * 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 CurriedFunction1 { (): CurriedFunction1; (t1: T1): R; } interface CurriedFunction2 { (): CurriedFunction2; (t1: T1): CurriedFunction1; (t1: T1, t2: T2): R; } interface CurriedFunction3 { (): CurriedFunction3; (t1: T1): CurriedFunction2; (t1: T1, t2: T2): CurriedFunction1; (t1: T1, t2: T2, t3: T3): R; } interface CurriedFunction4 { (): CurriedFunction4; (t1: T1): CurriedFunction3; (t1: T1, t2: T2): CurriedFunction2; (t1: T1, t2: T2, t3: T3): CurriedFunction1; (t1: T1, t2: T2, t3: T3, t4: T4): R; } interface CurriedFunction5 { (): CurriedFunction5; (t1: T1): CurriedFunction4; (t1: T1, t2: T2): CurriedFunction3; (t1: T1, t2: T2, t3: T3): CurriedFunction2; (t1: T1, t2: T2, t3: T3, t4: T4): CurriedFunction1; (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): R; } interface LoDashImplicitObjectWrapper { /** * @see _.curry **/ curry(arity?: number): LoDashImplicitObjectWrapper; } //_.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. * @return Returns the new curried function. */ curryRight(func: (t1: T1) => R): CurriedFunction1; /** * 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. * @return Returns the new curried function. */ curryRight(func: (t1: T1, t2: T2) => R): CurriedFunction2; /** * 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. * @return Returns the new curried function. */ curryRight(func: (t1: T1, t2: T2, t3: T3) => R): CurriedFunction3; /** * 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. * @return Returns the new curried function. */ curryRight(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R): CurriedFunction4; /** * 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. * @return Returns the new curried function. */ curryRight(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R): CurriedFunction5; /** * 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 LoDashImplicitObjectWrapper { /** * @see _.curryRight **/ curryRight(arity?: number): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.debounce **/ debounce( wait: number, options?: DebounceSettings): LoDashImplicitObjectWrapper; } 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 LoDashImplicitObjectWrapper { /** * @see _.defer **/ defer(...args: any[]): LoDashImplicitWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.delay **/ delay( wait: number, ...args: any[]): LoDashImplicitWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.flow **/ flow(...funcs: Function[]): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.flowRight **/ flowRight(...funcs: Function[]): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.memoize */ memoize(resolver?: Function): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.modArgs */ modArgs(...transforms: Function[]): LoDashImplicitObjectWrapper; /** * @see _.modArgs */ modArgs(transforms: Function[]): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.negate */ negate(): LoDashImplicitObjectWrapper<(...args: any[]) => boolean>; /** * @see _.negate */ negate(): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.once */ once(): LoDashImplicitObjectWrapper; } //_.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: Partial; } type PH = LoDashStatic; type Function0 = () => R; type Function1 = (t1: T1) => R; type Function2 = (t1: T1, t2: T2) => R; type Function3 = (t1: T1, t2: T2, t3: T3) => R; type Function4 = (t1: T1, t2: T2, t3: T3, t4: T4) => R; interface Partial { // arity 0 (func: Function0): Function0; // arity 1 (func: Function1): Function1; (func: Function1, arg1: T1): Function0; // arity 2 (func: Function2): Function2; (func: Function2, arg1: T1): Function1< T2, R>; (func: Function2, plc1: PH, arg2: T2): Function1; (func: Function2, arg1: T1, arg2: T2): Function0< R>; // arity 3 (func: Function3): Function3; (func: Function3, arg1: T1): Function2< T2, T3, R>; (func: Function3, plc1: PH, arg2: T2): Function2; (func: Function3, arg1: T1, arg2: T2): Function1< T3, R>; (func: Function3, plc1: PH, plc2: PH, arg3: T3): Function2; (func: Function3, arg1: T1, plc2: PH, arg3: T3): Function1< T2, R>; (func: Function3, plc1: PH, arg2: T2, arg3: T3): Function1; (func: Function3, arg1: T1, arg2: T2, arg3: T3): Function0< R>; // arity 4 (func: Function4): Function4; (func: Function4, arg1: T1): Function3< T2, T3, T4, R>; (func: Function4, plc1: PH, arg2: T2): Function3; (func: Function4, arg1: T1, arg2: T2): Function2< T3, T4, R>; (func: Function4, plc1: PH, plc2: PH, arg3: T3): Function3; (func: Function4, arg1: T1, plc2: PH, arg3: T3): Function2< T2, T4, R>; (func: Function4, plc1: PH, arg2: T2, arg3: T3): Function2; (func: Function4, arg1: T1, arg2: T2, arg3: T3): Function1< T4, R>; (func: Function4, plc1: PH, plc2: PH, plc3: PH, arg4: T4): Function3; (func: Function4, arg1: T1, plc2: PH, plc3: PH, arg4: T4): Function2< T2, T3, R>; (func: Function4, plc1: PH, arg2: T2, plc3: PH, arg4: T4): Function2; (func: Function4, arg1: T1, arg2: T2, plc3: PH, arg4: T4): Function1< T3, R>; (func: Function4, plc1: PH, plc2: PH, arg3: T3, arg4: T4): Function2; (func: Function4, arg1: T1, plc2: PH, arg3: T3, arg4: T4): Function1< T2, R>; (func: Function4, plc1: PH, arg2: T2, arg3: T3, arg4: T4): Function1; (func: Function4, arg1: T1, arg2: T2, arg3: T3, arg4: T4): Function0< R>; // catch-all (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: PartialRight } interface PartialRight { // arity 0 (func: Function0): Function0; // arity 1 (func: Function1): Function1; (func: Function1, arg1: T1): Function0; // arity 2 (func: Function2): Function2; (func: Function2, arg1: T1, plc2: PH): Function1< T2, R>; (func: Function2, arg2: T2): Function1; (func: Function2, arg1: T1, arg2: T2): Function0< R>; // arity 3 (func: Function3): Function3; (func: Function3, arg1: T1, plc2: PH, plc3: PH): Function2< T2, T3, R>; (func: Function3, arg2: T2, plc3: PH): Function2; (func: Function3, arg1: T1, arg2: T2, plc3: PH): Function1< T3, R>; (func: Function3, arg3: T3): Function2; (func: Function3, arg1: T1, plc2: PH, arg3: T3): Function1< T2, R>; (func: Function3, arg2: T2, arg3: T3): Function1; (func: Function3, arg1: T1, arg2: T2, arg3: T3): Function0< R>; // arity 4 (func: Function4): Function4; (func: Function4, arg1: T1, plc2: PH, plc3: PH, plc4: PH): Function3< T2, T3, T4, R>; (func: Function4, arg2: T2, plc3: PH, plc4: PH): Function3; (func: Function4, arg1: T1, arg2: T2, plc3: PH, plc4: PH): Function2< T3, T4, R>; (func: Function4, arg3: T3, plc4: PH): Function3; (func: Function4, arg1: T1, plc2: PH, arg3: T3, plc4: PH): Function2< T2, T4, R>; (func: Function4, arg2: T2, arg3: T3, plc4: PH): Function2; (func: Function4, arg1: T1, arg2: T2, arg3: T3, plc4: PH): Function1< T4, R>; (func: Function4, arg4: T4): Function3; (func: Function4, arg1: T1, plc2: PH, plc3: PH, arg4: T4): Function2< T2, T3, R>; (func: Function4, arg2: T2, plc3: PH, arg4: T4): Function2; (func: Function4, arg1: T1, arg2: T2, plc3: PH, arg4: T4): Function1< T3, R>; (func: Function4, arg3: T3, arg4: T4): Function2; (func: Function4, arg1: T1, plc2: PH, arg3: T3, arg4: T4): Function1< T2, R>; (func: Function4, arg2: T2, arg3: T3, arg4: T4): Function1; (func: Function4, arg1: T1, arg2: T2, arg3: T3, arg4: T4): Function0< R>; // catch-all (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 LoDashImplicitObjectWrapper { /** * @see _.rearg */ rearg(indexes: number[]): LoDashImplicitObjectWrapper; /** * @see _.rearg */ rearg(...indexes: number[]): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.restParam */ restParam(start?: number): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.spread */ spread(): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitWrapper { /** * @see _.clone */ clone( isDeep?: boolean, customizer?: (value: any) => any, thisArg?: any): T; /** * @see _.clone */ clone( customizer?: (value: any) => any, thisArg?: any): T; } interface LoDashImplicitArrayWrapper { /** * @see _.clone */ clone( isDeep?: boolean, customizer?: (value: any) => any, thisArg?: any): T[]; /** * @see _.clone */ clone( customizer?: (value: any) => any, thisArg?: any): T[]; } interface LoDashImplicitObjectWrapper { /** * @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 LoDashImplicitWrapper { /** * @see _.cloneDeep */ cloneDeep( customizer?: (value: any) => any, thisArg?: any): T; } interface LoDashImplicitArrayWrapper { /** * @see _.cloneDeep */ cloneDeep( customizer?: (value: any) => any, thisArg?: any): T[]; } interface LoDashImplicitObjectWrapper { /** * @see _.cloneDeep */ cloneDeep( customizer?: (value: any) => any, thisArg?: any): T; } //_.eq interface LoDashStatic { /** * @see _.isEqual */ eq( value: any, other: any, customizer?: IsEqualCustomizer, thisArg?: any ): boolean; } interface LoDashImplicitWrapperBase { /** * @see _.isEqual */ eq( other: any, customizer?: IsEqualCustomizer, thisArg?: any ): boolean; } //_.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 LoDashImplicitWrapperBase { /** * @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 LoDashImplicitWrapperBase { /** * @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 LoDashImplicitWrapperBase { /** * @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 LoDashImplicitWrapperBase { /** * @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 LoDashImplicitWrapperBase { /** * @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 LoDashImplicitWrapperBase { /** * @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 LoDashImplicitWrapperBase { /** * @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 LoDashImplicitWrapperBase { /** * @see _.isEmpty */ isEmpty(): boolean; } //_.isEqual interface IsEqualCustomizer { (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’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 up to three arguments: (value, other * [, index|key]). * * Note: This method supports comparing arrays, booleans, Date objects, numbers, Object objects, regexes, * and strings. Objects are compared by their own, not inherited, enumerable properties. Functions and DOM * nodes are not supported. Provide a customizer function to extend support for comparing other values. * * @alias _.eq * * @param value The value to compare. * @param other The other value to compare. * @param customizer The function to customize value comparisons. * @param thisArg The this binding of customizer. * @return Returns true if the values are equivalent, else false. */ isEqual( value: any, other: any, customizer?: IsEqualCustomizer, thisArg?: any ): boolean; } interface LoDashImplicitWrapperBase { /** * @see _.isEqual */ isEqual( other: any, customizer?: IsEqualCustomizer, thisArg?: any ): 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 LoDashImplicitWrapperBase { /** * @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 LoDashImplicitWrapperBase { /** * @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 LoDashImplicitWrapperBase { /** * @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 LoDashImplicitObjectWrapper { /** * @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 LoDashImplicitWrapperBase { /** * @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 LoDashImplicitWrapperBase { /** * 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 LoDashImplicitWrapperBase { /** * 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 LoDashImplicitWrapperBase { /** * 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 LoDashImplicitWrapperBase { /** * 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 LoDashImplicitWrapperBase { /** * 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 LoDashImplicitWrapperBase { /** * 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 LoDashImplicitWrapperBase { /** * 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 LoDashImplicitWrapperBase { /** * 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 LoDashImplicitWrapperBase { /** * 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 LoDashImplicitWrapperBase { /** * @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 LoDashImplicitWrapperBase { /** * @see _.lte */ lte(other: any): boolean; } //_.toArray interface LoDashStatic { /** * Converts value to an array. * * @param value The value to convert. * @return Returns the converted array. */ toArray(value: string): string[]; /** * @see _.toArray */ toArray(value: List|Dictionary): T[]; /** * @see _.toArray */ toArray(value: TValue): TResult[]; /** * @see _.toArray */ toArray(value: TValue): any[]; /** * @see _.toArray */ toArray(value?: any): any[]; } interface LoDashImplicitWrapper { /** * @see _.toArray */ toArray(): LoDashImplicitArrayWrapper; } interface LoDashImplicitArrayWrapper { /** * @see _.toArray */ toArray(): LoDashImplicitArrayWrapper; } interface LoDashImplicitObjectWrapper { /** * @see _.toArray */ toArray(): LoDashImplicitArrayWrapper; } //_.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): TResult; } interface LoDashImplicitWrapperBase { /** * @see _.toPlainObject */ toPlainObject(): LoDashImplicitObjectWrapper; } /******** * 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 LoDashImplicitWrapper { /** * @see _.add */ add(addend: number): number; } interface LoDashExplicitWrapper { /** * @see _.add */ add(addend: number): LoDashExplicitWrapper; } //_.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 LoDashImplicitWrapper { /** * @see _.ceil */ ceil(precision?: number): number; } interface LoDashExplicitWrapper { /** * @see _.ceil */ ceil(precision?: number): LoDashExplicitWrapper; } //_.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 LoDashImplicitWrapper { /** * @see _.floor */ floor(precision?: number): number; } interface LoDashExplicitWrapper { /** * @see _.floor */ floor(precision?: number): LoDashExplicitWrapper; } //_.max interface LoDashStatic { /** * Gets the maximum value of collection. If collection is empty or falsey -Infinity is returned. If an iteratee * function is provided it’s invoked for each value in collection to generate the criterion by which the value * is ranked. The iteratee is bound to thisArg and invoked with three arguments: (value, index, collection). * * If a property name is provided for 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 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 iteratee The function invoked per iteration. * @param thisArg The this binding of iteratee. * @return Returns the maximum value. */ max( collection: List, iteratee?: ListIterator, thisArg?: any ): T; /** * @see _.max */ max( collection: Dictionary, iteratee?: DictionaryIterator, thisArg?: any ): T; /** * @see _.max */ max( collection: List|Dictionary, iteratee?: string, thisArg?: any ): T; /** * @see _.max */ max( collection: List|Dictionary, whereValue?: TObject ): T; } interface LoDashImplicitArrayWrapper { /** * @see _.max */ max( iteratee?: ListIterator, thisArg?: any ): T; /** * @see _.max */ max( iteratee?: string, thisArg?: any ): T; /** * @see _.max */ max( whereValue?: TObject ): T; } interface LoDashImplicitObjectWrapper { /** * @see _.max */ max( iteratee?: ListIterator|DictionaryIterator, thisArg?: any ): T; /** * @see _.max */ max( iteratee?: string, thisArg?: any ): T; /** * @see _.max */ max( whereValue?: TObject ): T; } //_.min interface LoDashStatic { /** * Gets the minimum value of collection. If collection is empty or falsey Infinity is returned. If an iteratee * function is provided it’s invoked for each value in collection to generate the criterion by which the value * is ranked. The iteratee is bound to thisArg and invoked with three arguments: (value, index, collection). * * If a property name is provided for 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 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 iteratee The function invoked per iteration. * @param thisArg The this binding of iteratee. * @return Returns the minimum value. */ min( collection: List, iteratee?: ListIterator, thisArg?: any ): T; /** * @see _.min */ min( collection: Dictionary, iteratee?: DictionaryIterator, thisArg?: any ): T; /** * @see _.min */ min( collection: List|Dictionary, iteratee?: string, thisArg?: any ): T; /** * @see _.min */ min( collection: List|Dictionary, whereValue?: TObject ): T; } interface LoDashImplicitArrayWrapper { /** * @see _.min */ min( iteratee?: ListIterator, thisArg?: any ): T; /** * @see _.min */ min( iteratee?: string, thisArg?: any ): T; /** * @see _.min */ min( whereValue?: TObject ): T; } interface LoDashImplicitObjectWrapper { /** * @see _.min */ min( iteratee?: ListIterator|DictionaryIterator, thisArg?: any ): T; /** * @see _.min */ min( iteratee?: string, thisArg?: any ): T; /** * @see _.min */ min( whereValue?: TObject ): T; } //_.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 LoDashImplicitWrapper { /** * @see _.round */ round(precision?: number): number; } interface LoDashExplicitWrapper { /** * @see _.round */ round(precision?: number): LoDashExplicitWrapper; } /********** * 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 LoDashImplicitWrapper { /** * @see _.inRange */ inRange( start: number, end: number ): boolean; /** * @see _.inRange */ inRange(end: number): boolean; } interface LoDashExplicitWrapper { /** * @see _.inRange */ inRange( start: number, end: number ): LoDashExplicitWrapper; /** * @see _.inRange */ inRange(end: number): LoDashExplicitWrapper; } //_.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 is returned. If floating is true, or either min or max are floats, a floating-point * number is returned instead of an integer. * * @param min The minimum possible value. * @param max The maximum possible value. * @param floating Specify returning a floating-point number. * @return Returns the random number. */ random( min?: number, max?: number, floating?: boolean ): number; /** * @see _.random */ random( min?: number, floating?: boolean ): number; /** * @see _.random */ random(floating?: boolean): number; } interface LoDashImplicitWrapper { /** * @see _.random */ random( max?: number, floating?: boolean ): number; /** * @see _.random */ random(floating?: boolean): number; } interface LoDashExplicitWrapper { /** * @see _.random */ random( max?: number, floating?: boolean ): LoDashExplicitWrapper; /** * @see _.random */ random(floating?: boolean): LoDashExplicitWrapper; } /********** * 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 LoDashImplicitObjectWrapper { /** * @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 LoDashImplicitObjectWrapper { /** * @see _.create */ create(properties?: Object): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.defaults **/ defaults(...sources: any[]): LoDashImplicitObjectWrapper } //_.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 LoDashImplicitObjectWrapper { /** * @see _.defaultsDeep **/ defaultsDeep(...sources: any[]): LoDashImplicitObjectWrapper } //_.findKey interface LoDashStatic { /** * This method is like _.find except that it returns the key of the first element predicate returns truthy for * instead of the element itself. * * 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 object The object to search. * @param predicate The function invoked per iteration. * @param thisArg The this binding of predicate. * @return Returns the key of the matched element, else undefined. */ findKey( object: TObject, predicate?: DictionaryIterator, thisArg?: any ): string; /** * @see _.findKey */ findKey( object: TObject, predicate?: ObjectIterator, thisArg?: any ): string; /** * @see _.findKey */ findKey( object: TObject, predicate?: string, thisArg?: any ): string; /** * @see _.findKey */ findKey, TObject>( object: TObject, predicate?: TWhere ): string; } interface LoDashImplicitObjectWrapper { /** * @see _.findKey */ findKey( predicate?: DictionaryIterator, thisArg?: any ): string; /** * @see _.findKey */ findKey( predicate?: ObjectIterator, thisArg?: any ): string; /** * @see _.findKey */ findKey( predicate?: string, thisArg?: any ): string; /** * @see _.findKey */ findKey>( predicate?: TWhere ): string; } //_.findLastKey interface LoDashStatic { /** * This method is like _.findKey except that it iterates over elements of a collection in the opposite order. * * 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 object The object to search. * @param predicate The function invoked per iteration. * @param thisArg The this binding of predicate. * @return Returns the key of the matched element, else undefined. */ findLastKey( object: TObject, predicate?: DictionaryIterator, thisArg?: any ): string; /** * @see _.findLastKey */ findLastKey( object: TObject, predicate?: ObjectIterator, thisArg?: any ): string; /** * @see _.findLastKey */ findLastKey( object: TObject, predicate?: string, thisArg?: any ): string; /** * @see _.findLastKey */ findLastKey, TObject>( object: TObject, predicate?: TWhere ): string; } interface LoDashImplicitObjectWrapper { /** * @see _.findLastKey */ findLastKey( predicate?: DictionaryIterator, thisArg?: any ): string; /** * @see _.findLastKey */ findLastKey( predicate?: ObjectIterator, thisArg?: any ): string; /** * @see _.findLastKey */ findLastKey( predicate?: string, thisArg?: any ): string; /** * @see _.findLastKey */ findLastKey>( predicate?: TWhere ): 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 LoDashImplicitObjectWrapper { /** * @see _.forIn **/ forIn( callback: ObjectIterator, thisArg?: any): _.LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.forInRight **/ forInRight( callback: ObjectIterator, thisArg?: any): _.LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.forOwn **/ forOwn( callback: ObjectIterator, thisArg?: any): _.LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.forOwnRight **/ forOwnRight( callback: ObjectIterator, thisArg?: any): _.LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.functions **/ functions(): _.LoDashImplicitArrayWrapper; /** * @see _.functions **/ methods(): _.LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @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 LoDashImplicitObjectWrapper { /** * @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 LoDashImplicitObjectWrapper { /** * @see _.invert */ invert(multiValue?: boolean): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.keys **/ keys(): LoDashImplicitArrayWrapper } //_.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 LoDashImplicitObjectWrapper { /** * @see _.keysIn **/ keysIn(): LoDashImplicitArrayWrapper } //_.mapKeys interface LoDashStatic { /** * The opposite of _.mapValues; this method creates an object with the same values as object and keys generated * by running each own enumerable property of object through iteratee. * * @param object The object to iterate over. * @param iteratee The function invoked per iteration. * @param thisArg The this binding of iteratee. * @return Returns the new mapped object. */ mapKeys( object: List, iteratee?: ListIterator, thisArg?: any ): Dictionary; /** * @see _.mapKeys */ mapKeys( object: Dictionary, iteratee?: DictionaryIterator, thisArg?: any ): Dictionary; /** * @see _.mapKeys */ mapKeys( object: List|Dictionary, iteratee?: TObject ): Dictionary; /** * @see _.mapKeys */ mapKeys( object: List|Dictionary, iteratee?: string ): Dictionary; } interface LoDashImplicitArrayWrapper { /** * @see _.mapKeys */ mapKeys( iteratee?: ListIterator, thisArg?: any ): LoDashImplicitObjectWrapper>; /** * @see _.mapKeys */ mapKeys( iteratee?: TObject ): LoDashImplicitObjectWrapper>; /** * @see _.mapKeys */ mapKeys( iteratee?: string ): LoDashImplicitObjectWrapper>; } interface LoDashImplicitObjectWrapper { /** * @see _.mapKeys */ mapKeys( iteratee?: ListIterator|DictionaryIterator, thisArg?: any ): LoDashImplicitObjectWrapper>; /** * @see _.mapKeys */ mapKeys( iteratee?: TObject ): LoDashImplicitObjectWrapper>; /** * @see _.mapKeys */ mapKeys( iteratee?: string ): LoDashImplicitObjectWrapper>; } //_.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 LoDashImplicitObjectWrapper { /** * @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): LoDashImplicitObjectWrapper>; /** * @see _.mapValues * TResult is the type of the property specified by pluck. * T should be a Dictionary> */ mapValues(pluck: string): LoDashImplicitObjectWrapper>; /** * @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): LoDashImplicitArrayWrapper>; /** * @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): LoDashImplicitArrayWrapper; } //_.merge interface MergeCustomizer { (value: any, srcValue: any, key?: string, object?: Object, source?: Object): any; } interface LoDashStatic { /** * Recursively merges own enumerable properties of the source object(s), that don’t resolve to undefined into * the destination object. Subsequent sources overwrite property assignments of previous sources. If customizer * is provided it’s invoked to produce the merged values of the destination and source properties. If * customizer returns undefined merging is handled by the method instead. The customizer is bound to thisArg * and invoked with five arguments: (objectValue, sourceValue, key, object, source). * * @param object The destination object. * @param source The source objects. * @param customizer The function to customize assigned values. * @param thisArg The this binding of customizer. * @return Returns object. */ merge( object: TObject, source: TSource, customizer?: MergeCustomizer, thisArg?: any ): TResult; /** * @see _.merge */ merge( object: TObject, source1: TSource1, source2: TSource2, customizer?: MergeCustomizer, thisArg?: any ): TResult; /** * @see _.merge */ merge( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, customizer?: MergeCustomizer, thisArg?: any ): TResult; /** * @see _.merge */ merge( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer?: MergeCustomizer, thisArg?: any ): TResult; /** * @see _.merge */ merge( object: TObject, ...otherArgs: any[] ): TResult; } interface LoDashImplicitObjectWrapper { /** * @see _.merge */ merge( source: TSource, customizer?: MergeCustomizer, thisArg?: any ): LoDashImplicitObjectWrapper; /** * @see _.merge */ merge( source1: TSource1, source2: TSource2, customizer?: MergeCustomizer, thisArg?: any ): LoDashImplicitObjectWrapper; /** * @see _.merge */ merge( source1: TSource1, source2: TSource2, source3: TSource3, customizer?: MergeCustomizer, thisArg?: any ): LoDashImplicitObjectWrapper; /** * @see _.merge */ merge( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer?: MergeCustomizer, thisArg?: any ): LoDashImplicitObjectWrapper; /** * @see _.merge */ merge( ...otherArgs: any[] ): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.omit **/ omit( ...keys: string[]): LoDashImplicitObjectWrapper; /** * @see _.omit **/ omit( keys: string[]): LoDashImplicitObjectWrapper; /** * @see _.omit **/ omit( callback: ObjectIterator, thisArg?: any): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.pairs **/ pairs(): LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.pick */ pick( predicate: ObjectIterator, thisArg?: any ): LoDashImplicitObjectWrapper; /** * @see _.pick */ pick( ...predicate: Array> ): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitWrapperBase { /** * @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 LoDashImplicitObjectWrapper { /** * @see _.set */ set( path: StringRepresentable|StringRepresentable[], value: any ): LoDashImplicitObjectWrapper; } //_.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 own enumerable properties through iteratee, with each invocation potentially mutating * the accumulator object. The iteratee is bound to thisArg and invoked with four arguments: (accumulator, * value, key, object). Iteratee functions may exit iteration early by explicitly returning false. * * @param object The object to iterate over. * @param iteratee The function invoked per iteration. * @param accumulator The custom accumulator value. * @param thisArg The this binding of iteratee. * @return Returns the accumulated value. */ transform( object: T[], iteratee?: MemoVoidArrayIterator, accumulator?: TResult[], thisArg?: any ): TResult[]; /** * @see _.transform */ transform( object: T[], iteratee?: MemoVoidArrayIterator>, accumulator?: Dictionary, thisArg?: any ): Dictionary; /** * @see _.transform */ transform( object: Dictionary, iteratee?: MemoVoidDictionaryIterator>, accumulator?: Dictionary, thisArg?: any ): Dictionary; /** * @see _.transform */ transform( object: Dictionary, iteratee?: MemoVoidDictionaryIterator, accumulator?: TResult[], thisArg?: any ): TResult[]; } interface LoDashImplicitArrayWrapper { /** * @see _.transform */ transform( iteratee?: MemoVoidArrayIterator, accumulator?: TResult[], thisArg?: any ): LoDashImplicitArrayWrapper; /** * @see _.transform */ transform( iteratee?: MemoVoidArrayIterator>, accumulator?: Dictionary, thisArg?: any ): LoDashImplicitObjectWrapper>; } interface LoDashImplicitObjectWrapper { /** * @see _.transform */ transform( iteratee?: MemoVoidDictionaryIterator>, accumulator?: Dictionary, thisArg?: any ): LoDashImplicitObjectWrapper>; /** * @see _.transform */ transform( iteratee?: MemoVoidDictionaryIterator, accumulator?: TResult[], thisArg?: any ): LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.values **/ values(): LoDashImplicitObjectWrapper; } //_.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 LoDashImplicitObjectWrapper { /** * @see _.valuesIn **/ valuesIn(): LoDashImplicitObjectWrapper; } /********** * 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 LoDashImplicitWrapper { /** * @see _.camelCase */ camelCase(): string; } interface LoDashExplicitWrapper { /** * @see _.camelCase */ camelCase(): LoDashExplicitWrapper; } //_.capitalize interface LoDashStatic { capitalize(string?: string): string; } interface LoDashImplicitWrapper { /** * @see _.capitalize */ capitalize(): string; } interface LoDashExplicitWrapper { /** * @see _.capitalize */ capitalize(): LoDashExplicitWrapper; } //_.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 LoDashImplicitWrapper { /** * @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 LoDashImplicitWrapper { /** * @see _.endsWith */ endsWith( target?: string, position?: number ): boolean; } interface LoDashExplicitWrapper { /** * @see _.endsWith */ endsWith( target?: string, position?: number ): LoDashExplicitWrapper; } // _.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 LoDashImplicitWrapper { /** * @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 LoDashImplicitWrapper { /** * @see _.escapeRegExp */ escapeRegExp(): string; } interface LoDashExplicitWrapper { /** * @see _.escapeRegExp */ escapeRegExp(): LoDashExplicitWrapper; } //_.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 LoDashImplicitWrapper { /** * @see _.kebabCase */ kebabCase(): string; } //_.pad interface LoDashStatic { /** * Pads string on the left and right sides if it’s shorter than length. Padding characters are truncated if * they can’t be evenly divided by length. * * @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; } interface LoDashImplicitWrapper { /** * @see _.pad */ pad( length?: number, chars?: string ): string; } interface LoDashExplicitWrapper { /** * @see _.pad */ pad( length?: number, chars?: string ): LoDashExplicitWrapper; } //_.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 LoDashImplicitWrapper { /** * @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; } interface LoDashImplicitWrapper { /** * @see _.padRight */ padRight( length?: number, chars?: string ): string; } interface LoDashExplicitWrapper { /** * @see _.padRight */ padRight( length?: number, chars?: string ): LoDashExplicitWrapper; } //_.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 LoDashImplicitWrapper { /** * @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 LoDashImplicitWrapper { /** * @see _.repeat */ repeat(n?: number): string; } interface LoDashExplicitWrapper { /** * @see _.repeat */ repeat(n?: number): LoDashExplicitWrapper; } //_.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 LoDashImplicitWrapper { /** * @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 LoDashImplicitWrapper { /** * @see _.startCase */ startCase(): string; } interface LoDashExplicitWrapper { /** * @see _.startCase */ startCase(): LoDashExplicitWrapper; } //_.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 LoDashImplicitWrapper { /** * @see _.startsWith */ startsWith(target?: string, position?: number): boolean; } //_.template interface TemplateOptions extends TemplateSettings { /** * The sourceURL of the template's compiled source. */ sourceURL?: string; } 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.sourceURL The sourceURL of the template's compiled source. * @param options.variable The data object variable name. * @return Returns the compiled template function. */ template( string: string, options?: TemplateOptions ): TemplateExecutor; } interface LoDashImplicitWrapper { /** * @see _.template */ template(options?: TemplateOptions): TemplateExecutor; } interface LoDashExplicitWrapper { /** * @see _.template */ template(options?: TemplateOptions): LoDashExplicitObjectWrapper; } //_.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 LoDashImplicitWrapper { /** * @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 LoDashImplicitWrapper { /** * @see _.trimLeft */ trimLeft(chars?: string): string; } interface LoDashExplicitWrapper { /** * @see _.trimLeft */ trimLeft(chars?: string): LoDashExplicitWrapper; } //_.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 LoDashImplicitWrapper { /** * @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 LoDashImplicitWrapper { /** * @see _.trunc */ trunc(options?: TruncOptions|number): string; } interface LoDashExplicitWrapper { /** * @see _.trunc */ trunc(options?: TruncOptions|number): LoDashExplicitWrapper; } //_.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 LoDashImplicitWrapper { /** * @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 LoDashImplicitWrapper { /** * @see _.words */ words(pattern?: string|RegExp): string[]; } interface LoDashExplicitWrapper { /** * @see _.words */ words(pattern?: string|RegExp): LoDashExplicitArrayWrapper; } /*********** * 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 LoDashImplicitObjectWrapper { /** * @see _.attempt */ attempt(): TResult|Error; } interface LoDashExplicitObjectWrapper { /** * @see _.attempt */ attempt(): LoDashExplicitObjectWrapper; } //_.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 LoDashImplicitWrapper { /** * @see _.callback */ callback(thisArg?: any): LoDashImplicitObjectWrapper<(object: any) => TResult>; } interface LoDashImplicitObjectWrapper { /** * @see _.callback */ callback(thisArg?: any): LoDashImplicitObjectWrapper<(object: any) => boolean>; /** * @see _.callback */ callback(thisArg?: any): LoDashImplicitObjectWrapper<(...args: any[]) => TResult>; } //_.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 LoDashImplicitWrapperBase { /** * @see _.constant */ constant(): LoDashImplicitObjectWrapper<() => TResult>; } interface LoDashExplicitWrapperBase { /** * @see _.constant */ constant(): LoDashExplicitObjectWrapper<() => 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 LoDashImplicitWrapper { /** * @see _.identity */ identity(): T; } interface LoDashImplicitArrayWrapper { /** * @see _.identity */ identity(): T[]; } interface LoDashImplicitObjectWrapper { /** * @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 LoDashImplicitWrapper { /** * @see _.callback */ iteratee(thisArg?: any): LoDashImplicitObjectWrapper<(object: any) => TResult>; } interface LoDashImplicitObjectWrapper { /** * @see _.callback */ iteratee(thisArg?: any): LoDashImplicitObjectWrapper<(object: any) => boolean>; /** * @see _.callback */ iteratee(thisArg?: any): LoDashImplicitObjectWrapper<(...args: any[]) => TResult>; } //_.matches interface LoDashStatic { /** * Creates a function that performs a deep comparison between a given object and source, returning true if the * given object has equivalent property values, else false. * * Note: This method supports comparing arrays, booleans, Date objects, numbers, Object objects, regexes, and * strings. Objects are compared by their own, not inherited, enumerable properties. For comparing a single own * or inherited property value see _.matchesProperty. * * @param source The object of property values to match. * @return Returns the new function. */ matches(source: T): (value: any) => boolean; /** * @see _.matches */ matches(source: T): (value: V) => boolean; } interface LoDashImplicitWrapperBase { /** * @see _.matches */ matches(): LoDashImplicitObjectWrapper<(value: V) => boolean>; } interface LoDashExplicitWrapperBase { /** * @see _.matches */ matches(): LoDashExplicitObjectWrapper<(value: V) => boolean>; } //_.matchesProperty interface LoDashStatic { /** * Creates a function that compares the property value of path on a given object to value. * * Note: This method supports comparing arrays, booleans, Date objects, numbers, Object objects, regexes, and * strings. Objects are compared by their own, not inherited, enumerable properties. * * @param path The path of the property to get. * @param srcValue The value to match. * @return Returns the new function. */ matchesProperty( path: StringRepresentable|StringRepresentable[], srcValue: T ): (value: any) => boolean; /** * @see _.matchesProperty */ matchesProperty( path: StringRepresentable|StringRepresentable[], srcValue: T ): (value: V) => boolean; } interface LoDashImplicitWrapperBase { /** * @see _.matchesProperty */ matchesProperty( srcValue: SrcValue ): LoDashImplicitObjectWrapper<(value: any) => boolean>; /** * @see _.matchesProperty */ matchesProperty( srcValue: SrcValue ): LoDashImplicitObjectWrapper<(value: Value) => boolean>; } //_.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|StringRepresentable[], ...args: any[] ): (object: TObject) => TResult; /** * @see _.method */ method( path: string|StringRepresentable[], ...args: any[] ): (object: any) => TResult; } interface LoDashImplicitWrapper { /** * @see _.method */ method(...args: any[]): LoDashImplicitObjectWrapper<(object: TObject) => TResult>; /** * @see _.method */ method(...args: any[]): LoDashImplicitObjectWrapper<(object: any) => TResult>; } interface LoDashImplicitArrayWrapper { /** * @see _.method */ method(...args: any[]): LoDashImplicitObjectWrapper<(object: TObject) => TResult>; /** * @see _.method */ method(...args: any[]): LoDashImplicitObjectWrapper<(object: any) => TResult>; } interface LoDashExplicitWrapper { /** * @see _.method */ method(...args: any[]): LoDashExplicitObjectWrapper<(object: TObject) => TResult>; /** * @see _.method */ method(...args: any[]): LoDashExplicitObjectWrapper<(object: any) => TResult>; } interface LoDashExplicitArrayWrapper { /** * @see _.method */ method(...args: any[]): LoDashExplicitObjectWrapper<(object: TObject) => TResult>; /** * @see _.method */ method(...args: any[]): LoDashExplicitObjectWrapper<(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 LoDashImplicitObjectWrapper { /** * @see _.methodOf */ methodOf(...args: any[]): LoDashImplicitObjectWrapper<(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 LoDashImplicitObjectWrapper { /** * @see _.mixin */ mixin( source: Dictionary, options?: MixinOptions ): LoDashImplicitObjectWrapper; /** * @see _.mixin */ mixin( options?: MixinOptions ): LoDashImplicitObjectWrapper; } interface LoDashExplicitObjectWrapper { /** * @see _.mixin */ mixin( source: Dictionary, options?: MixinOptions ): LoDashExplicitObjectWrapper; /** * @see _.mixin */ mixin( options?: MixinOptions ): LoDashExplicitObjectWrapper; } //_.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 LoDashImplicitWrapperBase { /** * @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 LoDashImplicitWrapperBase { /** * @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 LoDashImplicitStringWrapper { /** * @see _.property */ property(): LoDashImplicitObjectWrapper<(obj: TObj) => TResult>; } interface LoDashImplicitArrayWrapper { /** * @see _.property */ property(): LoDashImplicitObjectWrapper<(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 LoDashImplicitObjectWrapper { /** * @see _.propertyOf */ propertyOf(): LoDashImplicitObjectWrapper<(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 LoDashImplicitWrapper { /** * @see _.range */ range( end?: number, step?: number): LoDashImplicitArrayWrapper; } //_.runInContext interface LoDashStatic { /** * Create a new pristine lodash function using the given context object. * * @param context The context object. * @return Returns a new lodash function. */ runInContext(context?: Object): typeof _; } interface LoDashImplicitObjectWrapper { /** * @see _.runInContext */ runInContext(): 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 LoDashImplicitWrapper { /** * @see _.times */ times( iteratee: (num: number) => TResult, thisArgs?: any ): LoDashImplicitArrayWrapper; /** * @see _.times */ times(): LoDashImplicitArrayWrapper; } //_.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 LoDashImplicitWrapper { /** * @see _.uniqueId */ uniqueId(): string; } interface ListIterator { (value: T, index: number, collection: List): 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 MemoVoidArrayIterator { (acc: TResult, curr: T, index?: number, arr?: T[]): void; } interface MemoVoidDictionaryIterator { (acc: TResult, curr: T, key?: string, dict?: Dictionary): void; } //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 = _; }