diff --git a/types/lodash/common/array.d.ts b/types/lodash/common/array.d.ts index 34b9548221..5591bce088 100644 --- a/types/lodash/common/array.d.ts +++ b/types/lodash/common/array.d.ts @@ -577,20 +577,10 @@ declare module "../index" { 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. + * returns falsey. The predicate is invoked with three arguments: (value, index, array). * * @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( @@ -624,20 +614,10 @@ declare module "../index" { 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. + * returns falsey. The predicate is invoked with three arguments: (value, index, array). * * @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( @@ -797,15 +777,6 @@ declare module "../index" { * 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 fromIndex The index to search from. @@ -846,15 +817,6 @@ declare module "../index" { /** * 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 fromIndex The index to search from. @@ -1881,22 +1843,12 @@ declare module "../index" { 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. + * elements. The predicate is invoked with three arguments: (value, index, array). * * 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( @@ -2359,53 +2311,29 @@ declare module "../index" { * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); * // => [1.1, 2.2] */ - sortedUniqBy( - array: string | null | undefined, - iteratee: StringIterator - ): string[]; - - /** - * @see _.sortedUniqBy - */ sortedUniqBy( array: List | null | undefined, - iteratee: ListIteratee + iteratee: ValueIteratee ): T[]; } interface LoDashImplicitWrapper { - /** - * @see _.sortedUniqBy - */ - sortedUniqBy( - this: LoDashImplicitWrapper, - iteratee: StringIterator - ): LoDashImplicitWrapper; - /** * @see _.sortedUniqBy */ sortedUniqBy( this: LoDashImplicitWrapper | null | undefined>, - iteratee: ListIteratee + iteratee: ValueIteratee ): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { - /** - * @see _.sortedUniqBy - */ - sortedUniqBy( - this: LoDashExplicitWrapper, - iteratee: StringIterator - ): LoDashExplicitWrapper; - /** * @see _.sortedUniqBy */ sortedUniqBy( this: LoDashExplicitWrapper | null | undefined>, - iteratee: ListIteratee + iteratee: ValueIteratee ): LoDashExplicitWrapper; } @@ -2512,20 +2440,10 @@ declare module "../index" { 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. + * falsey. The predicate is invoked with three arguments: (value, index, array). * * @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( @@ -2559,20 +2477,10 @@ declare module "../index" { 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. + * falsey. The predicate is invoked with three arguments: (value, index, array). * * @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( @@ -2958,53 +2866,29 @@ declare module "../index" { * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); * // => [{ 'x': 1 }, { 'x': 2 }] */ - uniqBy( - array: string | null | undefined, - iteratee: StringIterator - ): string[]; - - /** - * @see _.uniqBy - */ uniqBy( array: List | null | undefined, - iteratee: ListIteratee + iteratee: ValueIteratee ): T[]; } interface LoDashImplicitWrapper { - /** - * @see _.uniqBy - */ - uniqBy( - this: LoDashImplicitWrapper, - iteratee: StringIterator - ): LoDashImplicitWrapper; - /** * @see _.uniqBy */ uniqBy( this: LoDashImplicitWrapper | null | undefined>, - iteratee: ListIteratee + iteratee: ValueIteratee ): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { - /** - * @see _.uniqBy - */ - uniqBy( - this: LoDashExplicitWrapper, - iteratee: StringIterator - ): LoDashExplicitWrapper; - /** * @see _.uniqBy */ uniqBy( this: LoDashExplicitWrapper | null | undefined>, - iteratee: ListIteratee + iteratee: ValueIteratee ): LoDashExplicitWrapper; } @@ -3085,12 +2969,10 @@ declare module "../index" { 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). + * combined. The iteratee is 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( @@ -3643,11 +3525,10 @@ declare module "../index" { 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, + * combined. The iteratee is invoked with four arguments: (accumulator, value, index, * group). - * @param [arrays] The arrays to process. - * @param [iteratee] The function to combine grouped values. - * @param [thisArg] The `this` binding of `iteratee`. + * @param arrays The arrays to process. + * @param iteratee The function to combine grouped values. * @return Returns the new array of grouped elements. */ zipWith( diff --git a/types/lodash/common/collection.d.ts b/types/lodash/common/collection.d.ts index 3c7e65d38f..2e38422b2d 100644 --- a/types/lodash/common/collection.d.ts +++ b/types/lodash/common/collection.d.ts @@ -6,34 +6,15 @@ declare module "../index" { /** * Creates an object composed of keys generated from the results of running each element of collection through * iteratee. The corresponding value of each key is the number of times the key was returned by 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. + * iteratee is invoked with one argument: (value). * * @param collection The collection to iterate over. * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. * @return Returns the composed aggregate object. */ - countBy( - collection: string | null | undefined, - iteratee?: StringIterator - ): Dictionary; - - /** - * @see _.countBy - */ countBy( collection: List | null | undefined, - iteratee?: ListIteratee + iteratee?: ValueIteratee ): Dictionary; /** @@ -41,25 +22,17 @@ declare module "../index" { */ countBy( collection: T | null | undefined, - iteratee?: ObjectIteratee + iteratee?: ValueIteratee ): Dictionary; } interface LoDashImplicitWrapper { - /** - * @see _.countBy - */ - countBy( - this: LoDashImplicitWrapper, - iteratee?: StringIterator - ): LoDashImplicitWrapper>; - /** * @see _.countBy */ countBy( this: LoDashImplicitWrapper | null | undefined>, - iteratee?: ListIteratee + iteratee?: ValueIteratee ): LoDashImplicitWrapper>; /** @@ -67,25 +40,17 @@ declare module "../index" { */ countBy( this: LoDashImplicitWrapper, - iteratee?: ObjectIteratee + iteratee?: ValueIteratee ): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { - /** - * @see _.countBy - */ - countBy( - this: LoDashExplicitWrapper, - iteratee?: StringIterator - ): LoDashExplicitWrapper>; - /** * @see _.countBy */ countBy( this: LoDashExplicitWrapper | null | undefined>, - iteratee?: ListIteratee + iteratee?: ValueIteratee ): LoDashExplicitWrapper>; /** @@ -93,7 +58,7 @@ declare module "../index" { */ countBy( this: LoDashExplicitWrapper, - iteratee?: ObjectIteratee + iteratee?: ValueIteratee ): LoDashExplicitWrapper>; } @@ -243,20 +208,10 @@ declare module "../index" { interface LoDashStatic { /** * Iterates over elements of collection, returning an array of all elements 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. + * predicate is invoked with three arguments: (value, index|key, collection). * * @param collection The collection to iterate over. * @param predicate The function invoked per iteration. - * @param thisArg The this binding of predicate. * @return Returns the new filtered array. */ filter( @@ -386,16 +341,7 @@ declare module "../index" { 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. + * The predicate is invoked with three arguments: (value, index|key, collection). * * @param collection The collection to search. * @param predicate The function invoked per iteration. @@ -1070,8 +1016,7 @@ declare module "../index" { interface LoDashStatic { /** - * Iterates over elements of collection invoking iteratee for each element. The iteratee is bound to thisArg - * and invoked with three arguments: + * Iterates over elements of collection invoking iteratee for each element. The iteratee is invoked with three arguments: * (value, index|key, collection). Iteratee functions may exit iteration early by explicitly returning false. * * Note: As with other "Collections" methods, objects with a "length" property are iterated like arrays. To @@ -1081,7 +1026,6 @@ declare module "../index" { * * @param collection The collection to iterate over. * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. */ forEach( collection: T[], @@ -1189,7 +1133,6 @@ declare module "../index" { * * @param collection The collection to iterate over. * @param iteratee The function called per iteration. - * @param thisArg The this binding of callback. */ forEachRight( collection: T[], @@ -1293,34 +1236,15 @@ declare module "../index" { /** * Creates an object composed of keys generated from the results of running each element of collection through * iteratee. The corresponding value of each key is an array of the elements responsible for generating the - * key. 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. + * key. The iteratee is invoked with one argument: (value). * * @param collection The collection to iterate over. * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. * @return Returns the composed aggregate object. */ - groupBy( - collection: string | null | undefined, - iteratee?: StringIterator - ): Dictionary; - - /** - * @see _.groupBy - */ groupBy( collection: List | null | undefined, - iteratee?: ListIteratee + iteratee?: ValueIteratee ): Dictionary; /** @@ -1328,25 +1252,17 @@ declare module "../index" { */ groupBy( collection: T | null | undefined, - iteratee?: ObjectIteratee + iteratee?: ValueIteratee ): Dictionary>; } interface LoDashImplicitWrapper { - /** - * @see _.groupBy - */ - groupBy( - this: LoDashImplicitWrapper, - iteratee?: StringIterator - ): LoDashImplicitWrapper>; - /** * @see _.groupBy */ groupBy( this: LoDashImplicitWrapper | null | undefined>, - iteratee?: ListIteratee + iteratee?: ValueIteratee ): LoDashImplicitWrapper>; /** @@ -1354,25 +1270,17 @@ declare module "../index" { */ groupBy( this: LoDashImplicitWrapper, - iteratee?: ObjectIteratee + iteratee?: ValueIteratee ): LoDashImplicitWrapper>>; } interface LoDashExplicitWrapper { - /** - * @see _.groupBy - */ - groupBy( - this: LoDashExplicitWrapper, - iteratee?: StringIterator - ): LoDashExplicitWrapper>; - /** * @see _.groupBy */ groupBy( this: LoDashExplicitWrapper | null | undefined>, - iteratee?: ListIteratee + iteratee?: ValueIteratee ): LoDashExplicitWrapper>; /** @@ -1380,7 +1288,7 @@ declare module "../index" { */ groupBy( this: LoDashExplicitWrapper, - iteratee?: ObjectIteratee + iteratee?: ValueIteratee ): LoDashExplicitWrapper>>; } @@ -1489,34 +1397,15 @@ declare module "../index" { /** * Creates an object composed of keys generated from the results of running each element of collection through * iteratee. The corresponding value of each key is the last element responsible for generating the key. The - * iteratee function 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. + * iteratee function is invoked with one argument: (value). * * @param collection The collection to iterate over. * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. * @return Returns the composed aggregate object. */ - keyBy( - collection: string | null | undefined, - iteratee?: StringIterator - ): Dictionary; - - /** - * @see _.keyBy - */ keyBy( collection: List | null | undefined, - iteratee?: ListIterateeCustom + iteratee?: ValueIterateeCustom ): Dictionary; /** @@ -1524,25 +1413,17 @@ declare module "../index" { */ keyBy( collection: T | null | undefined, - iteratee?: ObjectIterateeCustom + iteratee?: ValueIterateeCustom ): Dictionary; } interface LoDashImplicitWrapper { - /** - * @see _.keyBy - */ - keyBy( - this: LoDashImplicitWrapper, - iteratee?: StringIterator - ): LoDashImplicitWrapper>; - /** * @see _.keyBy */ keyBy( this: LoDashImplicitWrapper | null | undefined>, - iteratee?: ListIterateeCustom + iteratee?: ValueIterateeCustom ): LoDashImplicitWrapper>; /** @@ -1550,25 +1431,17 @@ declare module "../index" { */ keyBy( this: LoDashImplicitWrapper, - iteratee?: ObjectIterateeCustom + iteratee?: ValueIterateeCustom ): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { - /** - * @see _.keyBy - */ - keyBy( - this: LoDashExplicitWrapper, - iteratee?: StringIterator - ): LoDashExplicitWrapper>; - /** * @see _.keyBy */ keyBy( this: LoDashExplicitWrapper | null | undefined>, - iteratee?: ListIterateeCustom + iteratee?: ValueIterateeCustom ): LoDashExplicitWrapper>; /** @@ -1576,7 +1449,7 @@ declare module "../index" { */ keyBy( this: LoDashExplicitWrapper, - iteratee?: ObjectIterateeCustom + iteratee?: ValueIterateeCustom ): LoDashExplicitWrapper>; } @@ -1584,17 +1457,8 @@ declare module "../index" { 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. + * Creates an array of values by running each element in collection through iteratee. The iteratee is + * invoked with three arguments: (value, index|key, collection). * * Many lodash methods are guarded to work as iteratees for methods like _.every, _.filter, _.map, _.mapValues, * _.reject, and _.some. @@ -1606,7 +1470,6 @@ declare module "../index" { * * @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( @@ -1908,20 +1771,10 @@ declare module "../index" { /** * 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. + * The predicate is invoked with three arguments: (value, index|key, collection). * * @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( @@ -1982,7 +1835,7 @@ declare module "../index" { * 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). + * is 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. @@ -2015,26 +1868,26 @@ declare module "../index" { /** * @see _.reduce **/ - reduce( + reduce( collection: T[] | null | undefined, - callback: MemoListIterator - ): TResult | undefined; + callback: MemoListIterator + ): T | undefined; /** * @see _.reduce **/ - reduce( + reduce( collection: List | null | undefined, - callback: MemoListIterator> - ): TResult | undefined; + callback: MemoListIterator> + ): T | undefined; /** * @see _.reduce **/ - reduce( + reduce( collection: T | null | undefined, - callback: MemoObjectIterator - ): TResult | undefined; + callback: MemoObjectIterator + ): T[keyof T] | undefined; } interface LoDashImplicitWrapper { @@ -2068,26 +1921,26 @@ declare module "../index" { /** * @see _.reduce **/ - reduce( + reduce( this: LoDashImplicitWrapper, - callback: MemoListIterator - ): TResult | undefined; + callback: MemoListIterator + ): T | undefined; /** * @see _.reduce **/ - reduce( + reduce( this: LoDashImplicitWrapper | null | undefined>, - callback: MemoListIterator> - ): TResult | undefined; + callback: MemoListIterator> + ): T | undefined; /** * @see _.reduce **/ - reduce( + reduce( this: LoDashImplicitWrapper, - callback: MemoObjectIterator - ): TResult | undefined; + callback: MemoObjectIterator + ): T[keyof T] | undefined; } interface LoDashExplicitWrapper { @@ -2121,26 +1974,26 @@ declare module "../index" { /** * @see _.reduce **/ - reduce( + reduce( this: LoDashExplicitWrapper, - callback: MemoListIterator - ): LoDashExplicitWrapper; + callback: MemoListIterator + ): LoDashExplicitWrapper; /** * @see _.reduce **/ - reduce( + reduce( this: LoDashExplicitWrapper | null | undefined>, - callback: MemoListIterator> - ): LoDashExplicitWrapper; + callback: MemoListIterator> + ): LoDashExplicitWrapper; /** * @see _.reduce **/ - reduce( + reduce( this: LoDashExplicitWrapper, - callback: MemoObjectIterator - ): LoDashExplicitWrapper; + callback: MemoObjectIterator + ): LoDashExplicitWrapper; } // reduceRight @@ -2181,26 +2034,26 @@ declare module "../index" { /** * @see _.reduceRight **/ - reduceRight( + reduceRight( collection: T[] | null | undefined, - callback: MemoListIterator - ): TResult | undefined; + callback: MemoListIterator + ): T | undefined; /** * @see _.reduceRight **/ - reduceRight( + reduceRight( collection: List | null | undefined, - callback: MemoListIterator> - ): TResult | undefined; + callback: MemoListIterator> + ): T | undefined; /** * @see _.reduceRight **/ - reduceRight( + reduceRight( collection: T | null | undefined, - callback: MemoObjectIterator - ): TResult | undefined; + callback: MemoObjectIterator + ): T[keyof T] | undefined; } interface LoDashImplicitWrapper { @@ -2234,26 +2087,26 @@ declare module "../index" { /** * @see _.reduceRight **/ - reduceRight( + reduceRight( this: LoDashImplicitWrapper, - callback: MemoListIterator - ): TResult | undefined; + callback: MemoListIterator + ): T | undefined; /** * @see _.reduceRight **/ - reduceRight( + reduceRight( this: LoDashImplicitWrapper | null | undefined>, - callback: MemoListIterator> - ): TResult | undefined; + callback: MemoListIterator> + ): T | undefined; /** * @see _.reduceRight **/ - reduceRight( + reduceRight( this: LoDashImplicitWrapper, - callback: MemoObjectIterator - ): TResult | undefined; + callback: MemoObjectIterator + ): T[keyof T] | undefined; } interface LoDashExplicitWrapper { @@ -2287,26 +2140,26 @@ declare module "../index" { /** * @see _.reduceRight **/ - reduceRight( + reduceRight( this: LoDashExplicitWrapper, - callback: MemoListIterator - ): LoDashExplicitWrapper; + callback: MemoListIterator + ): LoDashExplicitWrapper; /** * @see _.reduceRight **/ - reduceRight( + reduceRight( this: LoDashExplicitWrapper | null | undefined>, - callback: MemoListIterator> - ): LoDashExplicitWrapper; + callback: MemoListIterator> + ): LoDashExplicitWrapper; /** * @see _.reduceRight **/ - reduceRight( + reduceRight( this: LoDashExplicitWrapper, - callback: MemoObjectIterator - ): LoDashExplicitWrapper; + callback: MemoObjectIterator + ): LoDashExplicitWrapper; } // reject @@ -2318,7 +2171,6 @@ declare module "../index" { * * @param collection The collection to iterate over. * @param predicate The function invoked per iteration. - * @param thisArg The this binding of predicate. * @return Returns the new filtered array. */ reject( diff --git a/types/lodash/common/common.d.ts b/types/lodash/common/common.d.ts index 17d5e04b36..28c4437073 100644 --- a/types/lodash/common/common.d.ts +++ b/types/lodash/common/common.d.ts @@ -182,7 +182,7 @@ declare module "../index" { type ArrayIterator = (value: T, index: number, collection: T[]) => TResult; type ListIterator = (value: T, index: number, collection: List) => TResult; type ListIteratee = ListIterator | string | [string, any] | PartialDeep; - type ListIterateeCustom = ListIterator | string | object | [string, any] | PartialDeep; + type ListIterateeCustom = ListIterator | string | [string, any] | PartialDeep; type ListIteratorTypeGuard = (value: T, index: number, collection: List) => value is S; // Note: key should be string, not keyof T, because the actual object may contain extra properties that were not specified in the type. diff --git a/types/lodash/common/math.d.ts b/types/lodash/common/math.d.ts index b38a7df970..640fbc429d 100644 --- a/types/lodash/common/math.d.ts +++ b/types/lodash/common/math.d.ts @@ -160,7 +160,7 @@ declare module "../index" { * * @category Math * @param array The array to iterate over. - * @param [iteratee=_.identity] The iteratee invoked per element. + * @param iteratee The iteratee invoked per element. * @returns Returns the maximum value. * @example * @@ -175,7 +175,7 @@ declare module "../index" { */ maxBy( collection: List | null | undefined, - iteratee?: ListIteratee + iteratee?: ValueIteratee ): T | undefined; } @@ -185,7 +185,7 @@ declare module "../index" { */ maxBy( this: LoDashImplicitWrapper | null | undefined>, - iteratee?: ListIteratee + iteratee?: ValueIteratee ): T | undefined; } @@ -195,7 +195,7 @@ declare module "../index" { */ maxBy( this: LoDashExplicitWrapper | null | undefined>, - iteratee?: ListIteratee + iteratee?: ValueIteratee ): LoDashExplicitWrapper; } @@ -240,7 +240,7 @@ declare module "../index" { * * @category Math * @param array The array to iterate over. - * @param [iteratee=_.identity] The iteratee invoked per element. + * @param iteratee The iteratee invoked per element. * @returns Returns the mean. * @example * @@ -249,7 +249,7 @@ declare module "../index" { */ meanBy( collection: List | null | undefined, - iteratee?: ListIteratee + iteratee?: ValueIteratee ): number; } @@ -259,7 +259,7 @@ declare module "../index" { */ meanBy( this: LoDashImplicitWrapper | null | undefined>, - iteratee?: ListIteratee + iteratee?: ValueIteratee ): number; } @@ -269,7 +269,7 @@ declare module "../index" { */ meanBy( this: LoDashExplicitWrapper | null | undefined>, - iteratee?: ListIteratee + iteratee?: ValueIteratee ): LoDashExplicitWrapper; } @@ -313,7 +313,7 @@ declare module "../index" { * * @category Math * @param array The array to iterate over. - * @param [iteratee=_.identity] The iteratee invoked per element. + * @param iteratee The iteratee invoked per element. * @returns Returns the minimum value. * @example * @@ -328,7 +328,7 @@ declare module "../index" { */ minBy( collection: List | null | undefined, - iteratee?: ListIteratee + iteratee?: ValueIteratee ): T | undefined; } @@ -338,7 +338,7 @@ declare module "../index" { */ minBy( this: LoDashImplicitWrapper | null | undefined>, - iteratee?: ListIteratee + iteratee?: ValueIteratee ): T | undefined; } @@ -348,7 +348,7 @@ declare module "../index" { */ minBy( this: LoDashExplicitWrapper | null | undefined>, - iteratee?: ListIteratee + iteratee?: ValueIteratee ): LoDashExplicitWrapper; } diff --git a/types/lodash/common/object.d.ts b/types/lodash/common/object.d.ts index 4845e7f31b..e0b1f3ebf1 100644 --- a/types/lodash/common/object.d.ts +++ b/types/lodash/common/object.d.ts @@ -1370,18 +1370,8 @@ declare module "../index" { * 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( @@ -1416,18 +1406,8 @@ declare module "../index" { /** * 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( @@ -1461,12 +1441,11 @@ declare module "../index" { interface LoDashStatic { /** * Iterates over own and inherited enumerable properties of an object invoking iteratee for each property. The - * iteratee is bound to thisArg and invoked with three arguments: (value, key, object). Iteratee functions may + * iteratee is invoked with three arguments: (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 thisArg The this binding of iteratee. * @return Returns object. */ forIn( @@ -1501,7 +1480,6 @@ declare module "../index" { * * @param object The object to iterate over. * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. * @return Returns object. */ forInRight( @@ -1533,12 +1511,11 @@ declare module "../index" { interface LoDashStatic { /** * Iterates over own enumerable properties of an object invoking iteratee for each property. The iteratee is - * bound to thisArg and invoked with three arguments: (value, key, object). Iteratee functions may exit + * invoked with three arguments: (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 thisArg The this binding of iteratee. * @return Returns object. */ forOwn( @@ -1573,7 +1550,6 @@ declare module "../index" { * * @param object The object to iterate over. * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. * @return Returns object. */ forOwnRight( @@ -2199,7 +2175,6 @@ declare module "../index" { * * @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( @@ -2257,21 +2232,11 @@ declare module "../index" { 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. + * enumerable property of object through iteratee. The iteratee function is + * invoked with three arguments: (value, key, object). * * @param object The object to iterate over. - * @param [iteratee=_.identity] The function invoked per iteration. - * @param [thisArg] The `this` binding of `iteratee`. + * @param iteratee The function invoked per iteration. * @return Returns the new mapped object. */ mapValues(obj: string | null | undefined, callback: StringIterator): NumericDictionary; @@ -3363,13 +3328,12 @@ declare module "../index" { /** * 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, + * the accumulator object. The iteratee is 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( diff --git a/types/lodash/common/seq.d.ts b/types/lodash/common/seq.d.ts index 22a7a14746..bc3cc39963 100644 --- a/types/lodash/common/seq.d.ts +++ b/types/lodash/common/seq.d.ts @@ -141,13 +141,12 @@ declare module "../index" { interface LoDashStatic { /** - * This method invokes interceptor and returns value. The interceptor is bound to thisArg and invoked with one + * This method invokes interceptor and returns value. The interceptor is 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( @@ -173,7 +172,6 @@ declare module "../index" { * * @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( diff --git a/types/lodash/common/util.d.ts b/types/lodash/common/util.d.ts index 8aad451ca1..80b06778fd 100644 --- a/types/lodash/common/util.d.ts +++ b/types/lodash/common/util.d.ts @@ -1250,21 +1250,21 @@ declare module "../index" { * * @returns Returns `false`. */ - stubFalse(): boolean; + stubFalse(): false; } interface LoDashImplicitWrapper { /** * @see _.stubFalse */ - stubFalse(): boolean; + stubFalse(): false; } interface LoDashExplicitWrapper { /** * @see _.stubFalse */ - stubFalse(): LoDashExplicitWrapper; + stubFalse(): LoDashExplicitWrapper; } // stubObject @@ -1325,21 +1325,21 @@ declare module "../index" { * * @returns Returns `true`. */ - stubTrue(): boolean; + stubTrue(): true; } interface LoDashImplicitWrapper { /** * @see _.stubTrue */ - stubTrue(): boolean; + stubTrue(): true; } interface LoDashExplicitWrapper { /** * @see _.stubTrue */ - stubTrue(): LoDashExplicitWrapper; + stubTrue(): LoDashExplicitWrapper; } // times diff --git a/types/lodash/fp.d.ts b/types/lodash/fp.d.ts index 725ee237aa..d577414aa4 100644 --- a/types/lodash/fp.d.ts +++ b/types/lodash/fp.d.ts @@ -350,20 +350,15 @@ declare namespace _ { type LodashContains1x1 = (collection: lodash.List | lodash.Dictionary | lodash.NumericDictionary | null | undefined) => boolean; type LodashContains1x2 = (target: T) => boolean; interface LodashCountBy { - (iteratee: (value: string) => T): LodashCountBy1x1; - (iteratee: lodash.__, collection: string | null | undefined): LodashCountBy1x2; - (iteratee: (value: string) => T, collection: string | null | undefined): lodash.Dictionary; - (iteratee: lodash.ValueIteratee): LodashCountBy2x1; - (iteratee: lodash.__, collection: lodash.List | null | undefined): LodashCountBy2x2; + (iteratee: lodash.ValueIteratee): LodashCountBy1x1; + (iteratee: lodash.__, collection: lodash.List | null | undefined): LodashCountBy1x2; (iteratee: lodash.ValueIteratee, collection: lodash.List | null | undefined): lodash.Dictionary; - (iteratee: lodash.__, collection: T | null | undefined): LodashCountBy3x2; + (iteratee: lodash.__, collection: T | null | undefined): LodashCountBy2x2; (iteratee: lodash.ValueIteratee, collection: T | null | undefined): lodash.Dictionary; } - type LodashCountBy1x1 = (collection: string | null | undefined) => lodash.Dictionary; - type LodashCountBy1x2 = (iteratee: (value: string) => T) => lodash.Dictionary; - type LodashCountBy2x1 = (collection: lodash.List | object | null | undefined) => lodash.Dictionary; - type LodashCountBy2x2 = (iteratee: lodash.ValueIteratee) => lodash.Dictionary; - type LodashCountBy3x2 = (iteratee: lodash.ValueIteratee) => lodash.Dictionary; + type LodashCountBy1x1 = (collection: lodash.List | object | null | undefined) => lodash.Dictionary; + type LodashCountBy1x2 = (iteratee: lodash.ValueIteratee) => lodash.Dictionary; + type LodashCountBy2x2 = (iteratee: lodash.ValueIteratee) => lodash.Dictionary; type LodashCreate = (prototype: T) => T & U; interface LodashCurry { (func: (t1: T1) => R): lodash.CurriedFunction1; @@ -744,7 +739,7 @@ declare namespace _ { } type LodashExtendWith1x5 = (object: TObject) => TObject & TSource; type LodashExtendWith1x6 = (customizer: lodash.AssignCustomizer) => TObject & TSource; - type LodashStubFalse = () => boolean; + type LodashStubFalse = () => false; interface LodashFill { (start: number): LodashFill1x1; (start: lodash.__, end: number): LodashFill1x2; @@ -1580,20 +1575,15 @@ declare namespace _ { type LodashGetOr4x5 = (path: lodash.PropertyPath) => any; type LodashGetOr4x6 = (defaultValue: any) => any; interface LodashGroupBy { - (iteratee: (value: string) => lodash.NotVoid): LodashGroupBy1x1; - (iteratee: lodash.__, collection: string | null | undefined): LodashGroupBy1x2; - (iteratee: (value: string) => lodash.NotVoid, collection: string | null | undefined): lodash.Dictionary; - (iteratee: lodash.ValueIteratee): LodashGroupBy2x1; - (iteratee: lodash.__, collection: lodash.List | null | undefined): LodashGroupBy2x2; + (iteratee: lodash.ValueIteratee): LodashGroupBy1x1; + (iteratee: lodash.__, collection: lodash.List | null | undefined): LodashGroupBy1x2; (iteratee: lodash.ValueIteratee, collection: lodash.List | null | undefined): lodash.Dictionary; - (iteratee: lodash.__, collection: T | null | undefined): LodashGroupBy3x2; + (iteratee: lodash.__, collection: T | null | undefined): LodashGroupBy2x2; (iteratee: lodash.ValueIteratee, collection: T | null | undefined): lodash.Dictionary>; } - type LodashGroupBy1x1 = (collection: string | null | undefined) => lodash.Dictionary; - type LodashGroupBy1x2 = (iteratee: (value: string) => lodash.NotVoid) => lodash.Dictionary; - type LodashGroupBy2x1 = (collection: lodash.List | object | null | undefined) => lodash.Dictionary; - type LodashGroupBy2x2 = (iteratee: lodash.ValueIteratee) => lodash.Dictionary; - type LodashGroupBy3x2 = (iteratee: lodash.ValueIteratee) => lodash.Dictionary>; + type LodashGroupBy1x1 = (collection: lodash.List | object | null | undefined) => lodash.Dictionary; + type LodashGroupBy1x2 = (iteratee: lodash.ValueIteratee) => lodash.Dictionary; + type LodashGroupBy2x2 = (iteratee: lodash.ValueIteratee) => lodash.Dictionary>; interface LodashGt { (value: any): LodashGt1x1; (value: lodash.__, other: any): LodashGt1x2; @@ -1661,20 +1651,15 @@ declare namespace _ { type LodashIncludesFrom1x5 = (fromIndex: number) => boolean; type LodashIncludesFrom1x6 = (target: T) => boolean; interface LodashKeyBy { - (iteratee: (value: string) => lodash.PropertyName): LodashKeyBy1x1; - (iteratee: lodash.__, collection: string | null | undefined): LodashKeyBy1x2; - (iteratee: (value: string) => lodash.PropertyName, collection: string | null | undefined): lodash.Dictionary; - (iteratee: lodash.ValueIterateeCustom): LodashKeyBy2x1; - (iteratee: lodash.__, collection: lodash.List | null | undefined): LodashKeyBy2x2; + (iteratee: lodash.ValueIterateeCustom): LodashKeyBy1x1; + (iteratee: lodash.__, collection: lodash.List | null | undefined): LodashKeyBy1x2; (iteratee: lodash.ValueIterateeCustom, collection: lodash.List | null | undefined): lodash.Dictionary; - (iteratee: lodash.__, collection: T | null | undefined): LodashKeyBy3x2; + (iteratee: lodash.__, collection: T | null | undefined): LodashKeyBy2x2; (iteratee: lodash.ValueIterateeCustom, collection: T | null | undefined): lodash.Dictionary; } - type LodashKeyBy1x1 = (collection: string | null | undefined) => lodash.Dictionary; - type LodashKeyBy1x2 = (iteratee: (value: string) => lodash.PropertyName) => lodash.Dictionary; - type LodashKeyBy2x1 = (collection: lodash.List | object | null | undefined) => lodash.Dictionary; - type LodashKeyBy2x2 = (iteratee: lodash.ValueIterateeCustom) => lodash.Dictionary; - type LodashKeyBy3x2 = (iteratee: lodash.ValueIterateeCustom) => lodash.Dictionary; + type LodashKeyBy1x1 = (collection: lodash.List | object | null | undefined) => lodash.Dictionary; + type LodashKeyBy1x2 = (iteratee: lodash.ValueIterateeCustom) => lodash.Dictionary; + type LodashKeyBy2x2 = (iteratee: lodash.ValueIterateeCustom) => lodash.Dictionary; interface LodashIndexOf { (value: T): LodashIndexOf1x1; (value: lodash.__, array: lodash.List | null | undefined): LodashIndexOf1x2; @@ -3546,17 +3531,12 @@ declare namespace _ { type LodashSortedLastIndexOf1x2 = (value: T) => number; type LodashSortedUniq = (array: lodash.List | null | undefined) => T[]; interface LodashSortedUniqBy { - (iteratee: (value: string) => lodash.NotVoid): LodashSortedUniqBy1x1; - (iteratee: lodash.__, array: string | null | undefined): LodashSortedUniqBy1x2; - (iteratee: (value: string) => lodash.NotVoid, array: string | null | undefined): string[]; - (iteratee: lodash.ValueIteratee): LodashSortedUniqBy2x1; - (iteratee: lodash.__, array: lodash.List | null | undefined): LodashSortedUniqBy2x2; + (iteratee: lodash.ValueIteratee): LodashSortedUniqBy1x1; + (iteratee: lodash.__, array: lodash.List | null | undefined): LodashSortedUniqBy1x2; (iteratee: lodash.ValueIteratee, array: lodash.List | null | undefined): T[]; } - type LodashSortedUniqBy1x1 = (array: string | null | undefined) => string[]; - type LodashSortedUniqBy1x2 = (iteratee: (value: string) => lodash.NotVoid) => string[]; - type LodashSortedUniqBy2x1 = (array: lodash.List | null | undefined) => T[]; - type LodashSortedUniqBy2x2 = (iteratee: lodash.ValueIteratee) => T[]; + type LodashSortedUniqBy1x1 = (array: lodash.List | null | undefined) => T[]; + type LodashSortedUniqBy1x2 = (iteratee: lodash.ValueIteratee) => T[]; interface LodashSplit { (separator: RegExp|string): LodashSplit1x1; (separator: lodash.__, string: string): LodashSplit1x2; @@ -3583,7 +3563,7 @@ declare namespace _ { type LodashStubArray = () => any[]; type LodashStubObject = () => any; type LodashStubString = () => string; - type LodashStubTrue = () => boolean; + type LodashStubTrue = () => true; interface LodashSubtract { (minuend: number): LodashSubtract1x1; (minuend: lodash.__, subtrahend: number): LodashSubtract1x2; @@ -3900,17 +3880,12 @@ declare namespace _ { type LodashUnionWith1x6 = (comparator: lodash.Comparator) => T[]; type LodashUniq = (array: lodash.List | null | undefined) => T[]; interface LodashUniqBy { - (iteratee: (value: string) => lodash.NotVoid): LodashUniqBy1x1; - (iteratee: lodash.__, array: string | null | undefined): LodashUniqBy1x2; - (iteratee: (value: string) => lodash.NotVoid, array: string | null | undefined): string[]; - (iteratee: lodash.ValueIteratee): LodashUniqBy2x1; - (iteratee: lodash.__, array: lodash.List | null | undefined): LodashUniqBy2x2; + (iteratee: lodash.ValueIteratee): LodashUniqBy1x1; + (iteratee: lodash.__, array: lodash.List | null | undefined): LodashUniqBy1x2; (iteratee: lodash.ValueIteratee, array: lodash.List | null | undefined): T[]; } - type LodashUniqBy1x1 = (array: string | null | undefined) => string[]; - type LodashUniqBy1x2 = (iteratee: (value: string) => lodash.NotVoid) => string[]; - type LodashUniqBy2x1 = (array: lodash.List | null | undefined) => T[]; - type LodashUniqBy2x2 = (iteratee: lodash.ValueIteratee) => T[]; + type LodashUniqBy1x1 = (array: lodash.List | null | undefined) => T[]; + type LodashUniqBy1x2 = (iteratee: lodash.ValueIteratee) => T[]; type LodashUniqueId = (prefix: string) => string; interface LodashUniqWith { (comparator: lodash.Comparator): LodashUniqWith1x1; diff --git a/types/lodash/lodash-tests.ts b/types/lodash/lodash-tests.ts index ee86770a2a..fbb164c4c5 100644 --- a/types/lodash/lodash-tests.ts +++ b/types/lodash/lodash-tests.ts @@ -1399,35 +1399,33 @@ _.chain([1, 2, 3, 4]).unshift(5, 6); // $ExpectType LoDashExplicitWrapper | null | undefined = anything; - const stringIterator = (value: string, index: number, collection: string) => ""; - const listIterator = (value: AbcObject, index: number, collection: _.List) => 0; - const stringIterator2 = (value: string) => ""; - const listIterator2 = (value: AbcObject) => 0; + const stringIterator = (value: string) => ""; + const valueIterator = (value: AbcObject) => 0; _.uniqBy("abc", stringIterator); // $ExpectType string[] - _.uniqBy(list, listIterator); // $ExpectType AbcObject[] + _.uniqBy(list, valueIterator); // $ExpectType AbcObject[] _.uniqBy(list, "a"); // $ExpectType AbcObject[] - _(list).uniqBy(listIterator); // $ExpectType LoDashImplicitWrapper + _(list).uniqBy(valueIterator); // $ExpectType LoDashImplicitWrapper _(list).uniqBy("a"); // $ExpectType LoDashImplicitWrapper - _.chain(list).uniqBy(listIterator); // $ExpectType LoDashExplicitWrapper + _.chain(list).uniqBy(valueIterator); // $ExpectType LoDashExplicitWrapper _.chain(list).uniqBy("a"); // $ExpectType LoDashExplicitWrapper - fp.uniqBy(stringIterator2, "abc"); // $ExpectType string[] - fp.uniqBy(listIterator2, list); // $ExpectType AbcObject[] - fp.uniqBy(listIterator2)(list); // $ExpectType AbcObject[] + fp.uniqBy(stringIterator, "abc"); // $ExpectType string[] + fp.uniqBy(valueIterator, list); // $ExpectType AbcObject[] + fp.uniqBy(valueIterator)(list); // $ExpectType AbcObject[] fp.uniqBy("a", list); // $ExpectType AbcObject[] _.sortedUniqBy("abc", stringIterator); // $ExpectType string[] - _.sortedUniqBy(list, listIterator); // $ExpectType AbcObject[] + _.sortedUniqBy(list, valueIterator); // $ExpectType AbcObject[] _.sortedUniqBy(list, "a"); // $ExpectType AbcObject[] - _(list).sortedUniqBy(listIterator); // $ExpectType LoDashImplicitWrapper + _(list).sortedUniqBy(valueIterator); // $ExpectType LoDashImplicitWrapper _(list).sortedUniqBy("a"); // $ExpectType LoDashImplicitWrapper - _.chain(list).sortedUniqBy(listIterator); // $ExpectType LoDashExplicitWrapper + _.chain(list).sortedUniqBy(valueIterator); // $ExpectType LoDashExplicitWrapper _.chain(list).sortedUniqBy("a"); // $ExpectType LoDashExplicitWrapper - fp.sortedUniqBy(stringIterator2, "abc"); // $ExpectType string[] - fp.sortedUniqBy(listIterator2, list); // $ExpectType AbcObject[] - fp.sortedUniqBy(listIterator2)(list); // $ExpectType AbcObject[] + fp.sortedUniqBy(stringIterator, "abc"); // $ExpectType string[] + fp.sortedUniqBy(valueIterator, list); // $ExpectType AbcObject[] + fp.sortedUniqBy(valueIterator)(list); // $ExpectType AbcObject[] fp.sortedUniqBy("a", list); // $ExpectType AbcObject[] } @@ -1725,26 +1723,24 @@ _.chain([1, 2, 3, 4]).unshift(5, 6); // $ExpectType LoDashExplicitWrapper | null | undefined = anything; const numericDictionary: _.NumericDictionary | null | undefined = anything; - const stringIterator = (value: string, index: number, collection: string) => 1; - const listIterator = (value: AbcObject, index: number, collection: _.List) => 1; - const dictionaryIterator = (value: AbcObject, key: string, collection: _.Dictionary) => 1; - const numericDictionaryIterator = (value: AbcObject, key: string, collection: _.NumericDictionary) => 1; + const stringIterator = (value: string) => 1; + const valueIterator = (value: AbcObject) => 1; _.countBy(""); // $ExpectType Dictionary _.countBy("", stringIterator); // $ExpectType Dictionary _.countBy(list); // $ExpectType Dictionary - _.countBy(list, listIterator); // $ExpectType Dictionary + _.countBy(list, valueIterator); // $ExpectType Dictionary _.countBy(list, ""); // $ExpectType Dictionary _.countBy(list, { a: 42 }); // $ExpectType Dictionary _.countBy(dictionary); // $ExpectType Dictionary - _.countBy(dictionary, dictionaryIterator); // $ExpectType Dictionary + _.countBy(dictionary, valueIterator); // $ExpectType Dictionary _.countBy(dictionary, ""); // $ExpectType Dictionary _.countBy(dictionary, { a: 42 }); // $ExpectType Dictionary _.countBy(numericDictionary); // $ExpectType Dictionary - _.countBy(numericDictionary, numericDictionaryIterator); // $ExpectType Dictionary + _.countBy(numericDictionary, valueIterator); // $ExpectType Dictionary _.countBy(numericDictionary, ""); // $ExpectType Dictionary _.countBy(numericDictionary, { a: 42 }); // $ExpectType Dictionary @@ -1752,17 +1748,17 @@ _.chain([1, 2, 3, 4]).unshift(5, 6); // $ExpectType LoDashExplicitWrapper> _(list).countBy(); // $ExpectType LoDashImplicitWrapper> - _(list).countBy(listIterator); // $ExpectType LoDashImplicitWrapper> + _(list).countBy(valueIterator); // $ExpectType LoDashImplicitWrapper> _(list).countBy(""); // $ExpectType LoDashImplicitWrapper> _(list).countBy({ a: 42 }); // $ExpectType LoDashImplicitWrapper> _(dictionary).countBy(); // $ExpectType LoDashImplicitWrapper> - _(dictionary).countBy(dictionaryIterator); // $ExpectType LoDashImplicitWrapper> + _(dictionary).countBy(valueIterator); // $ExpectType LoDashImplicitWrapper> _(dictionary).countBy(""); // $ExpectType LoDashImplicitWrapper> _(dictionary).countBy({ a: 42 }); // $ExpectType LoDashImplicitWrapper> _(numericDictionary).countBy(); // $ExpectType LoDashImplicitWrapper> - _(numericDictionary).countBy(numericDictionaryIterator); // $ExpectType LoDashImplicitWrapper> + _(numericDictionary).countBy(valueIterator); // $ExpectType LoDashImplicitWrapper> _(numericDictionary).countBy(""); // $ExpectType LoDashImplicitWrapper> _(numericDictionary).countBy({ a: 42 }); // $ExpectType LoDashImplicitWrapper> @@ -1770,30 +1766,28 @@ _.chain([1, 2, 3, 4]).unshift(5, 6); // $ExpectType LoDashExplicitWrapper> _.chain(list).countBy(); // $ExpectType LoDashExplicitWrapper> - _.chain(list).countBy(listIterator); // $ExpectType LoDashExplicitWrapper> + _.chain(list).countBy(valueIterator); // $ExpectType LoDashExplicitWrapper> _.chain(list).countBy(""); // $ExpectType LoDashExplicitWrapper> _.chain(list).countBy({ a: 42 }); // $ExpectType LoDashExplicitWrapper> _.chain(dictionary).countBy(); // $ExpectType LoDashExplicitWrapper> - _.chain(dictionary).countBy(dictionaryIterator); // $ExpectType LoDashExplicitWrapper> + _.chain(dictionary).countBy(valueIterator); // $ExpectType LoDashExplicitWrapper> _.chain(dictionary).countBy(""); // $ExpectType LoDashExplicitWrapper> _.chain(dictionary).countBy({ a: 42 }); // $ExpectType LoDashExplicitWrapper> _.chain(numericDictionary).countBy(); // $ExpectType LoDashExplicitWrapper> - _.chain(numericDictionary).countBy(numericDictionaryIterator); // $ExpectType LoDashExplicitWrapper> + _.chain(numericDictionary).countBy(valueIterator); // $ExpectType LoDashExplicitWrapper> _.chain(numericDictionary).countBy(""); // $ExpectType LoDashExplicitWrapper> _.chain(numericDictionary).countBy({ a: 42 }); // $ExpectType LoDashExplicitWrapper> - const stringIterator2 = (value: string) => 1; - const listIterator2 = (value: AbcObject) => 1; - fp.countBy(stringIterator2, ""); // $ExpectType Dictionary - fp.countBy(stringIterator2)(""); // $ExpectType Dictionary - fp.countBy(listIterator2, list); // $ExpectType Dictionary + fp.countBy(stringIterator, ""); // $ExpectType Dictionary + fp.countBy(stringIterator)(""); // $ExpectType Dictionary + fp.countBy(valueIterator, list); // $ExpectType Dictionary fp.countBy("", list); // $ExpectType Dictionary fp.countBy({ a: 42 }, list); // $ExpectType Dictionary - fp.countBy(listIterator2, dictionary); // $ExpectType Dictionary + fp.countBy(valueIterator, dictionary); // $ExpectType Dictionary fp.countBy({ a: 42 }, dictionary); // $ExpectType Dictionary - fp.countBy(listIterator2, numericDictionary); // $ExpectType Dictionary + fp.countBy(valueIterator, numericDictionary); // $ExpectType Dictionary fp.countBy({ a: 42 }, numericDictionary); // $ExpectType Dictionary } @@ -2656,41 +2650,39 @@ _.chain([1, 2, 3, 4]).unshift(5, 6); // $ExpectType LoDashExplicitWrapper | null | undefined = [] as any; const dictionary: _.Dictionary | null | undefined = anything; - const stringIterator = (char: string, index: number, string: string) => 0; - const listIterator = (value: AbcObject, index: number, collection: _.List) => 0; - const dictionaryIterator = (value: AbcObject, key: string, collection: _.Dictionary) => 0; + const stringIterator = (char: string) => 0; const valueIterator = (value: AbcObject) => 0; _.groupBy(""); // $ExpectType Dictionary _.groupBy("", stringIterator); // $ExpectType Dictionary _.groupBy(list); // $ExpectType Dictionary - _.groupBy(list, listIterator); // $ExpectType Dictionary + _.groupBy(list, valueIterator); // $ExpectType Dictionary _.groupBy(list, "a"); // $ExpectType Dictionary _.groupBy(list, { a: 42 }); // $ExpectType Dictionary _.groupBy(dictionary); // $ExpectType Dictionary - _.groupBy(dictionary, dictionaryIterator); // $ExpectType Dictionary + _.groupBy(dictionary, valueIterator); // $ExpectType Dictionary _.groupBy(dictionary, ""); // $ExpectType Dictionary _.groupBy(dictionary, { a: 42 }); // $ExpectType Dictionary _("").groupBy(); // $ExpectType LoDashImplicitWrapper> - _("").groupBy((char: string, index: number, string: ArrayLike) => 0); // $ExpectType LoDashImplicitWrapper> + _("").groupBy(stringIterator); // $ExpectType LoDashImplicitWrapper> _(list).groupBy(); // $ExpectType LoDashImplicitWrapper> - _(list).groupBy(listIterator); // $ExpectType LoDashImplicitWrapper> + _(list).groupBy(valueIterator); // $ExpectType LoDashImplicitWrapper> _(list).groupBy(""); // $ExpectType LoDashImplicitWrapper> _(list).groupBy({ a: 42 }); // $ExpectType LoDashImplicitWrapper> _(dictionary).groupBy(); // $ExpectType LoDashImplicitWrapper> - _(dictionary).groupBy(dictionaryIterator); // $ExpectType LoDashImplicitWrapper> + _(dictionary).groupBy(valueIterator); // $ExpectType LoDashImplicitWrapper> _(dictionary).groupBy(""); // $ExpectType LoDashImplicitWrapper> _(dictionary).groupBy({ a: 42 }); // $ExpectType LoDashImplicitWrapper> _.chain("").groupBy(); // $ExpectType LoDashExplicitWrapper> - _.chain("").groupBy((char: string, index: number, string: ArrayLike) => 0); // $ExpectType LoDashExplicitWrapper> + _.chain("").groupBy(stringIterator); // $ExpectType LoDashExplicitWrapper> _.chain(list).groupBy(); // $ExpectType LoDashExplicitWrapper> - _.chain(list).groupBy(listIterator); // $ExpectType LoDashExplicitWrapper> + _.chain(list).groupBy(valueIterator); // $ExpectType LoDashExplicitWrapper> _.chain(list).groupBy(""); // $ExpectType LoDashExplicitWrapper> _.chain(list).groupBy({ a: 42 }); // $ExpectType LoDashExplicitWrapper> _.chain(dictionary).groupBy(); // $ExpectType LoDashExplicitWrapper> - _.chain(dictionary).groupBy(dictionaryIterator); // $ExpectType LoDashExplicitWrapper> + _.chain(dictionary).groupBy(valueIterator); // $ExpectType LoDashExplicitWrapper> _.chain(dictionary).groupBy(""); // $ExpectType LoDashExplicitWrapper> _.chain(dictionary).groupBy({ a: 42 }); // $ExpectType LoDashExplicitWrapper> @@ -2741,57 +2733,54 @@ _.chain([1, 2, 3, 4]).unshift(5, 6); // $ExpectType LoDashExplicitWrapper | null | undefined = anything; const numericDictionary: _.NumericDictionary | null | undefined = anything; - const stringIterator = (value: string, index: number, collection: string) => "a"; - const listIterator = (value: AbcObject, index: number, collection: _.List) => 1; - const dictionaryIterator = (value: AbcObject, key: string, collection: _.Dictionary) => Symbol.name; - const numericDictionaryIterator = (value: AbcObject, key: string, collection: _.NumericDictionary) => "a"; + const stringIterator = (value: string) => "a"; const valueIterator = (value: AbcObject) => 1; _.keyBy("abcd"); // $ExpectType Dictionary _.keyBy("abcd", stringIterator); // $ExpectType Dictionary _.keyBy(list); // $ExpectType Dictionary - _.keyBy(list, listIterator); // $ExpectType Dictionary + _.keyBy(list, valueIterator); // $ExpectType Dictionary _.keyBy(list, "a"); // $ExpectType Dictionary _.keyBy(list, { a: 42 }); // $ExpectType Dictionary _.keyBy(dictionary); // $ExpectType Dictionary - _.keyBy(dictionary, dictionaryIterator); // $ExpectType Dictionary + _.keyBy(dictionary, valueIterator); // $ExpectType Dictionary _.keyBy(dictionary, "a"); // $ExpectType Dictionary _.keyBy(dictionary, { a: 42 }); // $ExpectType Dictionary // These fail in TS 2.4 // _.keyBy(numericDictionary); // Dictionary - // _.keyBy(numericDictionary, numericDictionaryIterator); // Dictionary + // _.keyBy(numericDictionary, valueIterator); // Dictionary // _.keyBy(numericDictionary, "a"); // Dictionary // _.keyBy(numericDictionary, { a: 42 }); // Dictionary _("abcd").keyBy(); // $ExpectType LoDashImplicitWrapper> _("abcd").keyBy(stringIterator); // $ExpectType LoDashImplicitWrapper> _(list).keyBy(); // $ExpectType LoDashImplicitWrapper> - _(list).keyBy(listIterator); // $ExpectType LoDashImplicitWrapper> + _(list).keyBy(valueIterator); // $ExpectType LoDashImplicitWrapper> _(list).keyBy("a"); // $ExpectType LoDashImplicitWrapper> _(list).keyBy({ a: 42 }); // $ExpectType LoDashImplicitWrapper> _(dictionary).keyBy(); // $ExpectType LoDashImplicitWrapper> - _(dictionary).keyBy(dictionaryIterator); // $ExpectType LoDashImplicitWrapper> + _(dictionary).keyBy(valueIterator); // $ExpectType LoDashImplicitWrapper> _(dictionary).keyBy("a"); // $ExpectType LoDashImplicitWrapper> _(dictionary).keyBy({ a: 42 }); // $ExpectType LoDashImplicitWrapper> // These fail in TS 2.4 // _(numericDictionary).keyBy(); // LoDashImplicitWrapper> - // _(numericDictionary).keyBy(numericDictionaryIterator); // LoDashImplicitWrapper> + // _(numericDictionary).keyBy(valueIterator); // LoDashImplicitWrapper> // _(numericDictionary).keyBy("a"); // LoDashImplicitWrapper> // _(numericDictionary).keyBy({ a: 42 }); // LoDashImplicitWrapper> _.chain("abcd").keyBy(); // $ExpectType LoDashExplicitWrapper> _.chain("abcd").keyBy(stringIterator); // $ExpectType LoDashExplicitWrapper> _.chain(list).keyBy(); // $ExpectType LoDashExplicitWrapper> - _.chain(list).keyBy(listIterator); // $ExpectType LoDashExplicitWrapper> + _.chain(list).keyBy(valueIterator); // $ExpectType LoDashExplicitWrapper> _.chain(list).keyBy("a"); // $ExpectType LoDashExplicitWrapper> _.chain(list).keyBy({ a: 42 }); // $ExpectType LoDashExplicitWrapper> _.chain(dictionary).keyBy(); // $ExpectType LoDashExplicitWrapper> - _.chain(dictionary).keyBy(dictionaryIterator); // $ExpectType LoDashExplicitWrapper> + _.chain(dictionary).keyBy(valueIterator); // $ExpectType LoDashExplicitWrapper> _.chain(dictionary).keyBy("a"); // $ExpectType LoDashExplicitWrapper> _.chain(dictionary).keyBy({ a: 42 }); // $ExpectType LoDashExplicitWrapper> // These fail in TS 2.4 // _.chain(numericDictionary).keyBy(); // LoDashExplicitWrapper> - // _.chain(numericDictionary).keyBy(numericDictionaryIterator); // LoDashExplicitWrapper> + // _.chain(numericDictionary).keyBy(valueIterator); // LoDashExplicitWrapper> // _.chain(numericDictionary).keyBy("a"); // LoDashExplicitWrapper> // _.chain(numericDictionary).keyBy({ a: 42 }); // LoDashExplicitWrapper> @@ -3085,27 +3074,34 @@ _.chain([1, 2, 3, 4]).unshift(5, 6); // $ExpectType LoDashExplicitWrapper sum + num); // $ExpectType number | undefined + // $ExpectType number | undefined + _.reduce([1, 2, 3], (sum, curr, key, coll) => { + sum; // $ExpectType number + curr; // $ExpectType number + key; // $ExpectType number + coll; // $ExpectType number[] + return sum + curr; + }); _.reduce(null, (sum: number, num: number) => sum + num); // $ExpectType number | undefined _.reduce({ a: 1, b: 2, c: 3 }, (r: ABC, num: number, key: string) => r, initial); // $ExpectType ABC - _([1, 2, 3]).reduce((sum: number, num: number) => sum + num); // $ExpectType number | undefined + _([1, 2, 3]).reduce((sum, num) => sum + num); // $ExpectType number | undefined _({ a: 1, b: 2, c: 3 }).reduce((r: ABC, num: number, key: string) => r, initial); // $ExpectType ABC - _.chain([1, 2, 3]).reduce((sum: number, num: number) => sum + num); // $ExpectType LoDashExplicitWrapper + _.chain([1, 2, 3]).reduce((sum, num) => sum + num); // $ExpectType LoDashExplicitWrapper _.chain({ a: 1, b: 2, c: 3 }).reduce((r: ABC, num: number, key: string) => r, initial); // $ExpectType LoDashExplicitWrapper fp.reduce((s: string, num: number) => s + num, "", [1, 2, 3]); // $ExpectType string fp.reduce((s: string, num: number) => s + num)("")([1, 2, 3]); // $ExpectType string - _.reduceRight([1, 2, 3], (sum: number, num: number) => sum + num); // $ExpectType number | undefined + _.reduceRight([1, 2, 3], (sum, num) => sum + num); // $ExpectType number | undefined _.reduceRight(null, (sum: number, num: number) => sum + num); // $ExpectType number | undefined _.reduceRight({ a: 1, b: 2, c: 3 }, (r: ABC, num: number, key: string) => r, initial); // $ExpectType ABC - _([1, 2, 3]).reduceRight((sum: number, num: number) => sum + num); // $ExpectType number | undefined + _([1, 2, 3]).reduceRight((sum, num) => sum + num); // $ExpectType number | undefined _({ a: 1, b: 2, c: 3 }).reduceRight((r: ABC, num: number, key: string) => r, initial); // $ExpectType ABC - _.chain([1, 2, 3]).reduceRight((sum: number, num: number) => sum + num); // $ExpectType LoDashExplicitWrapper + _.chain([1, 2, 3]).reduceRight((sum, num) => sum + num); // $ExpectType LoDashExplicitWrapper _.chain({ a: 1, b: 2, c: 3 }).reduceRight((r: ABC, num: number, key: string) => r, initial); // $ExpectType LoDashExplicitWrapper fp.reduceRight((num: number, s: string) => s + num, "", [1, 2, 3]); // $ExpectType string @@ -4886,29 +4882,28 @@ fp.now(); // $ExpectType number { const list: ArrayLike = anything; - const listIterator = (value: AbcObject, index: number, collection: ArrayLike) => 0; const valueIterator = (value: AbcObject) => 0; - _.maxBy(list, listIterator); // $ExpectType AbcObject | undefined + _.maxBy(list, valueIterator); // $ExpectType AbcObject | undefined _.maxBy(list, "a"); // $ExpectType AbcObject | undefined _.maxBy(list, { a: 42 }); // $ExpectType AbcObject | undefined - _(list).maxBy(listIterator); // $ExpectType AbcObject | undefined + _(list).maxBy(valueIterator); // $ExpectType AbcObject | undefined _(list).maxBy("a"); // $ExpectType AbcObject | undefined _(list).maxBy({ a: 42 }); // $ExpectType AbcObject | undefined - _.chain(list).maxBy(listIterator); // $ExpectType LoDashExplicitWrapper + _.chain(list).maxBy(valueIterator); // $ExpectType LoDashExplicitWrapper _.chain(list).maxBy("a"); // $ExpectType LoDashExplicitWrapper _.chain(list).maxBy({ a: 42 }); // $ExpectType LoDashExplicitWrapper fp.maxBy(valueIterator)(list); // $ExpectType AbcObject | undefined fp.maxBy("a", list); // $ExpectType AbcObject | undefined fp.maxBy({ a: 42 }, list); // $ExpectType AbcObject | undefined - _.minBy(list, listIterator); // $ExpectType AbcObject | undefined + _.minBy(list, valueIterator); // $ExpectType AbcObject | undefined _.minBy(list, "a"); // $ExpectType AbcObject | undefined _.minBy(list, { a: 42 }); // $ExpectType AbcObject | undefined - _(list).minBy(listIterator); // $ExpectType AbcObject | undefined + _(list).minBy(valueIterator); // $ExpectType AbcObject | undefined _(list).minBy("a"); // $ExpectType AbcObject | undefined _(list).minBy({ a: 42 }); // $ExpectType AbcObject | undefined - _.chain(list).minBy(listIterator); // $ExpectType LoDashExplicitWrapper + _.chain(list).minBy(valueIterator); // $ExpectType LoDashExplicitWrapper _.chain(list).minBy("a"); // $ExpectType LoDashExplicitWrapper _.chain(list).minBy({ a: 42 }); // $ExpectType LoDashExplicitWrapper fp.minBy(valueIterator)(list); // $ExpectType AbcObject | undefined @@ -7139,10 +7134,10 @@ fp.now(); // $ExpectType number // _.stubFalse { - _.stubFalse(); // $ExpectType boolean - _(anything).stubFalse(); // $ExpectType boolean - _.chain(anything).stubFalse(); // $ExpectType LoDashExplicitWrapper - fp.stubFalse(); // $ExpectType boolean + _.stubFalse(); // $ExpectType false + _(anything).stubFalse(); // $ExpectType false + _.chain(anything).stubFalse(); // $ExpectType LoDashExplicitWrapper + fp.stubFalse(); // $ExpectType false } // _.stubObject @@ -7163,10 +7158,10 @@ fp.now(); // $ExpectType number // _.stubTrue { - _.stubTrue(); // $ExpectType boolean - _(anything).stubTrue(); // $ExpectType boolean - _.chain(anything).stubTrue(); // $ExpectType LoDashExplicitWrapper - fp.stubTrue(); // $ExpectType boolean + _.stubTrue(); // $ExpectType true + _(anything).stubTrue(); // $ExpectType true + _.chain(anything).stubTrue(); // $ExpectType LoDashExplicitWrapper + fp.stubTrue(); // $ExpectType true } // _.times diff --git a/types/lodash/readme.md b/types/lodash/readme.md index d65d7f878f..e605e30784 100644 --- a/types/lodash/readme.md +++ b/types/lodash/readme.md @@ -18,7 +18,7 @@ You should not modify these scripts directly - you should use a script to re-generate them (see below). - `scripts` directory: contains code generation scripts. - Before running any scripts, run `npm install` in this directory (it contains its own `package.json`). - - Most notable script is `npm run fp`, which re-generates all of the `fp` files. + - Most notable script is `npm run generate`, which re-generates all of the `fp` files and `lowdb` wrapper extensions. - `v3` directory: contains types for lodash v3. ## Different ways people might use lodash @@ -38,7 +38,7 @@ ## Before creating a PR - For every function you modify, don't forget to update the corresponding wrapper functions. -- Re-generate the `fp` types by opening a terminal in the `scripts` directory and running `npm run fp`. +- Re-generate the `fp` types by opening a terminal in the `scripts` directory and running `npm run generate`. - Note that this directory has its own `package.json`, so you'll need to run `npm install` first if you haven't already. - Back at the root directory, do `npm run lint lodash` and make sure there are no errors. diff --git a/types/lodash/scripts/generate-fp.ts b/types/lodash/scripts/generate-fp.ts index 3b8320b59c..77f11b46ac 100644 --- a/types/lodash/scripts/generate-fp.ts +++ b/types/lodash/scripts/generate-fp.ts @@ -13,6 +13,7 @@ import fs from "fs"; import _ from "lodash"; import convert from "lodash/fp/convert"; import path from "path"; +import { readFile, getLineBreak, tab, getLineNumber } from "./utils"; interface Definition { name: string; @@ -45,10 +46,8 @@ interface TypeParam { let lineBreak = "\n"; async function main() { + lineBreak = await getLineBreak(); const commonTypes: string[] = []; - const tsconfigPath = path.join("..", "tsconfig.json"); - const tsconfigFile = await readFile(tsconfigPath); - lineBreak = _.find(["\r\n", "\n", "\r"], x => tsconfigFile.includes(x)) || "\n"; // Read each function definition and fp-ify it const subfolders = ["common"]; @@ -106,7 +105,7 @@ async function main() { const fpFile = [ "// AUTO-GENERATED: do not modify this file directly.", "// If you need to make changes, modify generate-fp.ts (if necessary), then open a terminal in types/lodash/scripts, and do:", - "// npm run fp", + "// npm install && npm run generate", "", 'import lodash = require("./index");', "", @@ -130,6 +129,8 @@ async function main() { }); // Make sure the generated files are listed in tsconfig.json, so they are included in the lint checks + const tsconfigPath = path.join("..", "tsconfig.json"); + const tsconfigFile = await readFile(tsconfigPath); const tsconfig = tsconfigFile.split(lineBreak).filter(row => !row.includes("fp/") || row.includes("fp/convert.d.ts")); const newRows = interfaceGroups.map(g => ` "fp/${g.functionName}.d.ts",`) .concat(["__", "placeholder"].map(p => ` "fp/${p}.d.ts",`)); @@ -146,22 +147,6 @@ async function main() { }); } -function readFile(filePath: string): Promise { - return new Promise((resolve, reject) => { - fs.readFile(filePath, "utf8", (err, data) => { - if (err) { - reject(err); - return; - } - try { - resolve(data); - } catch (e) { - reject(e); - } - }); - }); -} - async function processDefinitions(filePaths: string[], commonTypes: string[]): Promise { const builder: { [name: string]: (...args: number[][]) => () => Interface[] } = {}; const unconvertedBuilder: { [name: string]: (...args: number[][]) => () => Interface[] } = {}; @@ -255,7 +240,6 @@ async function parseFile(filePath: string, commonTypes: string[]): Promise !_.isEmpty(d.constants)); return definitons; } @@ -899,15 +883,6 @@ function getPreviousLine(s: string, index: number): string { return s.substring(bol + 1, eol); } -function getLineNumber(fileContents: string, index: number) { - return fileContents.substring(0, index).split(lineBreak).length + 1; -} - -function tab(s: string, count: number) { - const prepend: string = " ".repeat(count * 4); - return (s[0] === "\n" || s[0] === "\r" ? "" : prepend) + s.replace(/(?:\r\n|\n|\r)(.)/g, `${lineBreak}${prepend}$1`); -} - function indexOfAny(source: string, values: string[], position?: number): number { const indexes: number[] = []; for (const value of values) { diff --git a/types/lodash/scripts/generate-lowdb.ts b/types/lodash/scripts/generate-lowdb.ts new file mode 100644 index 0000000000..13fbd18fe4 --- /dev/null +++ b/types/lodash/scripts/generate-lowdb.ts @@ -0,0 +1,165 @@ +// Script for converting the lodash types into functional programming (FP) format. +// The convertion is done based on this guide: https://github.com/lodash/lodash/wiki/FP-Guide + +// Assumptions: +// - All functions are defined in one of the files in the "common" subfolder +// - All functions are defined inside of the LoDashStatic interface (although functions like _.partial may refer to another interface in the same file) +// - Consistent indentation is used for the start and end of the above interface +// - Consistent spacing is used for interface definitions: interface MyInterface { +// - Consistent line breaks (\n, \r, or \r\n) are used in all files +// - All overloads of a given function are defined in the same file + +import fs from "fs"; +import _ from "lodash"; +import path from "path"; +import { getLineBreak, getLineNumber } from "./utils"; + +interface Definition { + name: string; + overloads: Overload[]; + constants: string[]; + jsdoc: string; +} +interface InterfaceGroup { + functionName: string; + interfaces: Interface[]; +} +interface Interface { + name: string; + typeParams: TypeParam[]; + overloads: Overload[]; + constants: string[]; +} +interface Overload { + typeParams: TypeParam[]; + params: string[]; + returnType: string; + jsdoc: string; + tslintDisable?: string; +} +interface TypeParam { + name: string; + extends?: string; + equals?: string; +} + +// Get the correct line break for the current OS (git for windows will generally convert \n to \r\n during checkout) +let lineBreak = "\n"; +async function main() { + lineBreak = await getLineBreak(); + const commonTypes: string[] = []; + const tsconfigPath = path.join("..", "tsconfig.json"); + + const subfolders = ["common"]; + const promises: Array> = []; + for (const subfolder of subfolders) { + promises.push(new Promise((resolve, reject) => { + fs.readdir(path.join("..", subfolder), (err, files) => { + if (err) { + console.error(`failed to list directory contents for '${subfolder}': `, err); + reject(err); + return; + } + const filePaths = files.map(f => path.join("..", subfolder, f)); + try { + resolve(processDefinitions(filePaths, commonTypes)); + } catch (e) { + console.error(`failed to process files in '${subfolder}': `, e); + reject(e); + } + }); + })); + } + + let functions: string; + try { + functions = _.flatten(await Promise.all(promises)).join(lineBreak); + } catch (err) { + console.error("Failed to parse all functions: ", err); + return; + } + _.pull(commonTypes, "LoDashExplicitWrapper"); + const commonTypeSearch = new RegExp(`\\b(${commonTypes.join("|")})\\b`, "g"); + functions = functions.replace(commonTypeSearch, "_.$1"); + const syncFunctions = functions.replace(/\bLoDashExplicitWrapper\b/g, "LoDashExplicitSyncWrapper"); + const asyncFunctions = functions.replace(/\bLoDashExplicitWrapper\b/g, "LoDashExplicitAsyncWrapper"); + + const lodashFile = [ + "// AUTO-GENERATED: do not modify this file directly.", + "// If you need to make changes, modify types/lodash/scripts/generate-lowdb.ts (if necessary), then open a terminal in types/lodash/scripts, and do:", + "// npm install && npm run generate", + "", + 'import _ = require("lodash");', + 'declare module "./index" {', + " interface LoDashExplicitSyncWrapper {", + syncFunctions, // TODO: write sync? + " }", + "", + " interface LoDashExplicitAsyncWrapper {", + asyncFunctions, // TODO: write async? + " }", + "}", + "", + ].join(lineBreak); + const lodashFilePath = path.resolve(__dirname, "..", "..", "lowdb", "_lodash.d.ts"); + fs.writeFile(lodashFilePath, lodashFile, (err) => { + if (err) + console.error(`Failed to write ${lodashFilePath}: `, err); + }); +} + +function readFile(filePath: string): Promise { + return new Promise((resolve, reject) => { + fs.readFile(filePath, "utf8", (err, data) => { + if (err) { + reject(err); + return; + } + try { + resolve(data); + } catch (e) { + reject(e); + } + }); + }); +} + +async function processDefinitions(filePaths: string[], commonTypes: string[]): Promise { + const functions: string[] = []; + for (const filePath of filePaths) + functions.push(...await parseFile(filePath, commonTypes)); + return functions; +} + +async function parseFile(filePath: string, commonTypes: string[]): Promise { + const definitionString = await readFile(filePath); + const newCommonTypeRegExp = / (?:type|interface) ([A-Za-z0-9_]+)/g; + let newCommonType = newCommonTypeRegExp.exec(definitionString); + while (newCommonType) { + if (!commonTypes.includes(newCommonType[1])) + commonTypes.push(newCommonType[1]); + newCommonType = newCommonTypeRegExp.exec(definitionString); + } + + const functions: string[] = []; + const lodashWrapperRegExp = /( *)interface +LoDashExplicitWrapper<\w+> *(?:extends .+)? *{/g; + let lodashWrapperMatch = lodashWrapperRegExp.exec(definitionString); + while (lodashWrapperMatch) { + const startIndex = definitionString.indexOf(lineBreak, lodashWrapperMatch.index) + lineBreak.length; + const endIndex = definitionString.indexOf(`${lineBreak}${lodashWrapperMatch[1]}}`, startIndex); + if (endIndex === -1) { + const lineNumber = getLineNumber(definitionString, startIndex); + console.warn(`Failed to find end of interface 'LoDashExplicitWrapper' (starting at ${filePath} line ${lineNumber}).`); + break; + } + let functionString = definitionString.substring(startIndex, endIndex); + // Remove comments since they're generally useless (e.g. @see XXXX) + functionString = functionString.replace(/ *\/\*\*[\s\S]+?\*\/(?:\r\n|\n|\r)/g, ""); + functionString = functionString.replace(/(?:(\r\n){2,}|(\n){2,}|(\r){2,})/g, "$1$2$3"); + functions.push(functionString); + lodashWrapperMatch = lodashWrapperRegExp.exec(definitionString); + } + return functions; +} + +main(); diff --git a/types/lodash/scripts/package.json b/types/lodash/scripts/package.json index f98c233642..a91ecd226e 100644 --- a/types/lodash/scripts/package.json +++ b/types/lodash/scripts/package.json @@ -3,7 +3,9 @@ "name": "lodash-scripts", "version": "0.0.1", "scripts": { - "fp": "ts-node generate-fp" + "generate": "ts-node generate-fp && ts-node generate-lowdb", + "fp": "ts-node generate-fp", + "lowdb": "ts-node generate-lowdb" }, "devDependencies": { "lodash": "^4.17.4", diff --git a/types/lodash/scripts/utils.ts b/types/lodash/scripts/utils.ts new file mode 100644 index 0000000000..59bdd448a9 --- /dev/null +++ b/types/lodash/scripts/utils.ts @@ -0,0 +1,38 @@ +import fs from "fs"; +import _ from "lodash"; +import path from "path"; + +export function readFile(filePath: string): Promise { + return new Promise((resolve, reject) => { + fs.readFile(filePath, "utf8", (err, data) => { + if (err) { + reject(err); + return; + } + try { + resolve(data); + } catch (e) { + reject(e); + } + }); + }); +} + +let lineBreak = "\n"; + +/** Gets the correct line break for the current OS (git for windows will generally convert \n to \r\n during checkout) */ +export async function getLineBreak(): Promise { + const tsconfigPath = path.join("..", "tsconfig.json"); + const tsconfigFile = await readFile(tsconfigPath); + lineBreak = _.find(["\r\n", "\n", "\r"], x => tsconfigFile.includes(x)) || "\n"; + return lineBreak; +} + +export function getLineNumber(fileContents: string, index: number) { + return fileContents.substring(0, index).split(/\r\n|\n|\r/g).length + 1; +} + +export function tab(s: string, count: number) { + const prepend: string = " ".repeat(count * 4); + return (s[0] === "\n" || s[0] === "\r" ? "" : prepend) + s.replace(/(?:\r\n|\n|\r)(.)/g, `${lineBreak}${prepend}$1`); +} diff --git a/types/lowdb/_lodash.d.ts b/types/lowdb/_lodash.d.ts new file mode 100644 index 0000000000..78ff4901af --- /dev/null +++ b/types/lowdb/_lodash.d.ts @@ -0,0 +1,3134 @@ +// AUTO-GENERATED: do not modify this file directly. +// If you need to make changes, modify types/lodash/scripts/generate-lowdb.ts (if necessary), then open a terminal in types/lodash/scripts, and do: +// npm install && npm run generate + +import _ = require("lodash"); +declare module "./index" { + interface LoDashExplicitSyncWrapper { + chunk( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + size?: number, + ): LoDashExplicitSyncWrapper; + compact(this: LoDashExplicitSyncWrapper<_.List | null | undefined>): LoDashExplicitSyncWrapper; + concat(this: LoDashExplicitSyncWrapper<_.Many>, ...values: Array<_.Many>): LoDashExplicitSyncWrapper; + difference( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + ...values: Array<_.List> + ): LoDashExplicitSyncWrapper; + differenceBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + values: _.List, + iteratee: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + differenceBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + iteratee: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + differenceBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + values3: _.List, + iteratee: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + differenceBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + values3: _.List, + values4: _.List, + iteratee: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + differenceBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + values3: _.List, + values4: _.List, + values5: _.List, + iteratee: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + differenceBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + values3: _.List, + values4: _.List, + values5: _.List, + ...values: Array<_.List | _.ValueIteratee> + ): LoDashExplicitSyncWrapper; + differenceBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + ...values: Array<_.List> + ): LoDashExplicitSyncWrapper; + differenceWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + values: _.List, + comparator: _.Comparator2 + ): LoDashExplicitSyncWrapper; + differenceWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + comparator: _.Comparator2 + ): LoDashExplicitSyncWrapper; + differenceWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + ...values: Array<_.List | _.Comparator2> + ): LoDashExplicitSyncWrapper; + differenceWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + ...values: Array<_.List> + ): LoDashExplicitSyncWrapper; + drop(this: LoDashExplicitSyncWrapper<_.List | null | undefined>, n?: number): LoDashExplicitSyncWrapper; + dropRight(this: LoDashExplicitSyncWrapper<_.List | null | undefined>, n?: number): LoDashExplicitSyncWrapper; + dropRightWhile( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + predicate?: _.ListIteratee + ): LoDashExplicitSyncWrapper; + dropWhile( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + predicate?: _.ListIteratee + ): LoDashExplicitSyncWrapper; + fill( + this: LoDashExplicitSyncWrapper, + value: T + ): LoDashExplicitSyncWrapper; + fill( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + value: T + ): LoDashExplicitSyncWrapper<_.List>; + fill( + this: LoDashExplicitSyncWrapper, + value: T, + start?: number, + end?: number + ): LoDashExplicitSyncWrapper>; + fill( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + value: T, + start?: number, + end?: number + ): LoDashExplicitSyncWrapper<_.List>; + findIndex( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom, + fromIndex?: number + ): LoDashExplicitSyncWrapper; + findLastIndex( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom, + fromIndex?: number + ): LoDashExplicitSyncWrapper; + first(this: LoDashExplicitSyncWrapper<_.List | null | undefined>): LoDashExplicitSyncWrapper; + flatten(this: LoDashExplicitSyncWrapper<_.List<_.Many> | null | undefined>): LoDashExplicitSyncWrapper; + flattenDeep(this: LoDashExplicitSyncWrapper<_.ListOfRecursiveArraysOrValues | null | undefined>): LoDashExplicitSyncWrapper; + flattenDepth(this: LoDashExplicitSyncWrapper<_.ListOfRecursiveArraysOrValues | null | undefined>, depth?: number): LoDashExplicitSyncWrapper; + fromPairs( + this: LoDashExplicitSyncWrapper<_.List<[_.PropertyName, T]> | null | undefined> + ): LoDashExplicitSyncWrapper<_.Dictionary>; + fromPairs( + this: LoDashExplicitSyncWrapper<_.List | null | undefined> + ): LoDashExplicitSyncWrapper<_.Dictionary>; + head(this: LoDashExplicitSyncWrapper<_.List | null | undefined>): LoDashExplicitSyncWrapper; + indexOf( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + value: T, + fromIndex?: number + ): LoDashExplicitSyncWrapper; + initial(this: LoDashExplicitSyncWrapper<_.List | null | undefined>): LoDashExplicitSyncWrapper; + intersection( + this: LoDashExplicitSyncWrapper<_.List>, + ...arrays: Array<_.List> + ): LoDashExplicitSyncWrapper; + intersectionBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + values: _.List, + iteratee: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + intersectionBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + iteratee: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + intersectionBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + ...values: Array<_.List | _.ValueIteratee> + ): LoDashExplicitSyncWrapper; + intersectionBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + ...values: Array<_.List> + ): LoDashExplicitSyncWrapper; + intersectionWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + values: _.List, + comparator: _.Comparator2 + ): LoDashExplicitSyncWrapper; + intersectionWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + comparator: _.Comparator2 + ): LoDashExplicitSyncWrapper; + intersectionWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + ...values: Array<_.List | _.Comparator2> + ): LoDashExplicitSyncWrapper; + intersectionWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + ...values: Array<_.List> + ): LoDashExplicitSyncWrapper; + join(separator?: string): LoDashExplicitSyncWrapper; + last(this: LoDashExplicitSyncWrapper<_.List | null | undefined>): LoDashExplicitSyncWrapper; + lastIndexOf( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + value: T, + fromIndex?: true|number + ): LoDashExplicitSyncWrapper; + nth( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + n?: number + ): LoDashExplicitSyncWrapper; + pull( + this: LoDashExplicitSyncWrapper<_.List>, + ...values: T[] + ): this; + pullAll( + this: LoDashExplicitSyncWrapper<_.List>, + values?: _.List + ): this; + remove( + this: LoDashExplicitSyncWrapper<_.List>, + predicate?: _.ListIteratee + ): LoDashExplicitSyncWrapper; + slice( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + start?: number, + end?: number + ): LoDashExplicitSyncWrapper; + sortedIndex( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + value: T + ): LoDashExplicitSyncWrapper; + sortedIndex( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + value: T + ): LoDashExplicitSyncWrapper; + sortedIndexBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + value: T, + iteratee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + sortedIndexOf( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + value: T + ): LoDashExplicitSyncWrapper; + sortedLastIndex( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + value: T + ): LoDashExplicitSyncWrapper; + sortedLastIndexBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + value: T, + iteratee: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + sortedLastIndexOf( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + value: T + ): LoDashExplicitSyncWrapper; + sortedUniq(this: LoDashExplicitSyncWrapper<_.List | null | undefined>): LoDashExplicitSyncWrapper; + sortedUniqBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + tail(this: LoDashExplicitSyncWrapper<_.List | null | undefined>): LoDashExplicitSyncWrapper; + take( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + n?: number + ): LoDashExplicitSyncWrapper; + takeRight( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + n?: number + ): LoDashExplicitSyncWrapper; + takeRightWhile( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + predicate?: _.ListIteratee + ): LoDashExplicitSyncWrapper; + takeWhile( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + predicate?: _.ListIteratee + ): LoDashExplicitSyncWrapper; + union( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + ...arrays: Array<_.List | null | undefined> + ): LoDashExplicitSyncWrapper; + unionBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + unionBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + iteratee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + unionBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + arrays3: _.List | null | undefined, + iteratee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + unionBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + arrays3: _.List | null | undefined, + arrays4: _.List | null | undefined, + iteratee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + unionBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + arrays3: _.List | null | undefined, + arrays4: _.List | null | undefined, + arrays5: _.List | null | undefined, + ...iteratee: Array<_.ValueIteratee | _.List | null | undefined> + ): LoDashExplicitSyncWrapper; + unionWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + comparator?: _.Comparator + ): LoDashExplicitSyncWrapper; + unionWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + comparator?: _.Comparator + ): LoDashExplicitSyncWrapper; + unionWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + arrays3: _.List | null | undefined, + ...comparator: Array<_.Comparator | _.List | null | undefined> + ): LoDashExplicitSyncWrapper; + uniq(this: LoDashExplicitSyncWrapper<_.List | null | undefined>): LoDashExplicitSyncWrapper; + uniqBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + uniqWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + comparator?: _.Comparator + ): LoDashExplicitSyncWrapper; + unzip(this: LoDashExplicitSyncWrapper> | null | undefined>): LoDashExplicitSyncWrapper; + unzipWith( + this: LoDashExplicitSyncWrapper<_.List<_.List> | null | undefined>, + iteratee: (...values: T[]) => TResult + ): LoDashExplicitSyncWrapper; + unzipWith( + this: LoDashExplicitSyncWrapper<_.List<_.List> | null | undefined> + ): LoDashExplicitSyncWrapper; + without( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + ...values: T[] + ): LoDashExplicitSyncWrapper; + xor( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + ...arrays: Array<_.List | null | undefined> + ): LoDashExplicitSyncWrapper; + xorBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + xorBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + iteratee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + xorBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + arrays3: _.List | null | undefined, + ...iteratee: Array<_.ValueIteratee | _.List | null | undefined> + ): LoDashExplicitSyncWrapper; + xorWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + comparator?: _.Comparator + ): LoDashExplicitSyncWrapper; + xorWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + comparator?: _.Comparator + ): LoDashExplicitSyncWrapper; + xorWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + arrays3: _.List | null | undefined, + ...comparator: Array<_.Comparator | _.List | null | undefined> + ): LoDashExplicitSyncWrapper; + zip( + this: LoDashExplicitSyncWrapper<_.List>, + arrays2: _.List, + ): LoDashExplicitSyncWrapper>; + zip( + this: LoDashExplicitSyncWrapper<_.List>, + arrays2: _.List, + arrays3: _.List, + ): LoDashExplicitSyncWrapper>; + zip( + this: LoDashExplicitSyncWrapper<_.List>, + arrays2: _.List, + arrays3: _.List, + arrays4: _.List, + ): LoDashExplicitSyncWrapper>; + zip( + this: LoDashExplicitSyncWrapper<_.List>, + arrays2: _.List, + arrays3: _.List, + arrays4: _.List, + arrays5: _.List, + ): LoDashExplicitSyncWrapper>; + zip( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + ...arrays: Array<_.List | null | undefined> + ): LoDashExplicitSyncWrapper>>; + zipObject( + this: LoDashExplicitSyncWrapper<_.List<_.PropertyName>>, + values: _.List + ): LoDashExplicitSyncWrapper<_.Dictionary>; + zipObject( + this: LoDashExplicitSyncWrapper<_.List<_.PropertyName>> + ): LoDashExplicitSyncWrapper<_.Dictionary>; + zipObjectDeep( + this: LoDashExplicitSyncWrapper<_.List<_.PropertyPath>>, + values?: _.List + ): LoDashExplicitSyncWrapper; + zipWith( + this: LoDashExplicitSyncWrapper<_.List>, + iteratee: (value1: T) => TResult + ): LoDashExplicitSyncWrapper; + zipWith( + this: LoDashExplicitSyncWrapper<_.List>, + arrays2: _.List, + iteratee: (value1: T1, value2: T2) => TResult + ): LoDashExplicitSyncWrapper; + zipWith( + this: LoDashExplicitSyncWrapper<_.List>, + arrays2: _.List, + arrays3: _.List, + iteratee: (value1: T1, value2: T2, value3: T3) => TResult + ): LoDashExplicitSyncWrapper; + zipWith( + this: LoDashExplicitSyncWrapper<_.List>, + arrays2: _.List, + arrays3: _.List, + arrays4: _.List, + iteratee: (value1: T1, value2: T2, value3: T3, value4: T4) => TResult + ): LoDashExplicitSyncWrapper; + zipWith( + this: LoDashExplicitSyncWrapper<_.List>, + arrays2: _.List, + arrays3: _.List, + arrays4: _.List, + arrays5: _.List, + iteratee: (value1: T1, value2: T2, value3: T3, value4: T4, value5: T5) => TResult + ): LoDashExplicitSyncWrapper; + zipWith( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + ...iteratee: Array<((...group: T[]) => TResult) | _.List | null | undefined> + ): LoDashExplicitSyncWrapper; + countBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper<_.Dictionary>; + countBy( + this: LoDashExplicitSyncWrapper, + iteratee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper<_.Dictionary>; + every( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom + ): LoDashExplicitSyncWrapper; + every( + this: LoDashExplicitSyncWrapper, + predicate?: _.ObjectIterateeCustom + ): LoDashExplicitSyncWrapper; + filter( + this: LoDashExplicitSyncWrapper, + predicate?: _.StringIterator + ): LoDashExplicitSyncWrapper; + filter( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + predicate: _.ListIteratorTypeGuard + ): LoDashExplicitSyncWrapper; + filter( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom + ): LoDashExplicitSyncWrapper; + filter( + this: LoDashExplicitSyncWrapper, + predicate: _.ObjectIteratorTypeGuard + ): LoDashExplicitSyncWrapper; + filter( + this: LoDashExplicitSyncWrapper, + predicate?: _.ObjectIterateeCustom + ): LoDashExplicitSyncWrapper>; + find( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + predicate: _.ListIteratorTypeGuard, + fromIndex?: number + ): LoDashExplicitSyncWrapper; + find( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom, + fromIndex?: number + ): LoDashExplicitSyncWrapper; + find( + this: LoDashExplicitSyncWrapper, + predicate: _.ObjectIteratorTypeGuard, + fromIndex?: number + ): LoDashExplicitSyncWrapper; + find( + this: LoDashExplicitSyncWrapper, + predicate?: _.ObjectIterateeCustom, + fromIndex?: number + ): LoDashExplicitSyncWrapper; + findLast( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + predicate: _.ListIteratorTypeGuard, + fromIndex?: number + ): LoDashExplicitSyncWrapper; + findLast( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom, + fromIndex?: number + ): LoDashExplicitSyncWrapper; + findLast( + this: LoDashExplicitSyncWrapper, + predicate: _.ObjectIteratorTypeGuard, + fromIndex?: number + ): LoDashExplicitSyncWrapper; + findLast( + this: LoDashExplicitSyncWrapper, + predicate?: _.ObjectIterateeCustom, + fromIndex?: number + ): LoDashExplicitSyncWrapper; + flatMap(this: LoDashExplicitSyncWrapper<_.List<_.Many> | _.Dictionary<_.Many> | _.NumericDictionary<_.Many> | null | undefined>): LoDashExplicitSyncWrapper; + flatMap(): LoDashExplicitSyncWrapper; + flatMap( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee: _.ListIterator> + ): LoDashExplicitSyncWrapper; + flatMap( + this: LoDashExplicitSyncWrapper, + iteratee: _.ObjectIterator> + ): LoDashExplicitSyncWrapper; + flatMap( + iteratee: string + ): LoDashExplicitSyncWrapper; + flatMap( + iteratee: object + ): LoDashExplicitSyncWrapper; + flatMapDeep( + this: LoDashExplicitSyncWrapper<_.List<_.ListOfRecursiveArraysOrValues | T> | _.Dictionary<_.ListOfRecursiveArraysOrValues | T> | _.NumericDictionary<_.ListOfRecursiveArraysOrValues | T> | null | undefined> + ): LoDashExplicitSyncWrapper; + flatMapDeep( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee: _.ListIterator | TResult> + ): LoDashExplicitSyncWrapper; + flatMapDeep( + this: LoDashExplicitSyncWrapper, + iteratee: _.ObjectIterator | TResult> + ): LoDashExplicitSyncWrapper; + flatMapDeep( + this: LoDashExplicitSyncWrapper, + iteratee: string + ): LoDashExplicitSyncWrapper; + flatMapDeep( + this: LoDashExplicitSyncWrapper, + iteratee: object + ): LoDashExplicitSyncWrapper; + flatMapDepth( + this: LoDashExplicitSyncWrapper<_.List<_.ListOfRecursiveArraysOrValues | T> | _.Dictionary<_.ListOfRecursiveArraysOrValues | T> | _.NumericDictionary<_.ListOfRecursiveArraysOrValues | T> | null | undefined> + ): LoDashExplicitSyncWrapper; + flatMapDepth( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee: _.ListIterator | TResult>, + depth?: number + ): LoDashExplicitSyncWrapper; + flatMapDepth( + this: LoDashExplicitSyncWrapper, + iteratee: _.ObjectIterator | TResult>, + depth?: number + ): LoDashExplicitSyncWrapper; + flatMapDepth( + this: LoDashExplicitSyncWrapper, + iteratee: string, + depth?: number + ): LoDashExplicitSyncWrapper; + flatMapDepth( + this: LoDashExplicitSyncWrapper, + iteratee: object, + depth?: number + ): LoDashExplicitSyncWrapper; + groupBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper<_.Dictionary>; + groupBy( + this: LoDashExplicitSyncWrapper, + iteratee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper<_.Dictionary>>; + includes( + this: LoDashExplicitSyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>, + target: T, + fromIndex?: number + ): LoDashExplicitSyncWrapper; + invokeMap( + methodName: string, + ...args: any[]): LoDashExplicitSyncWrapper; + invokeMap( + method: (...args: any[]) => TResult, + ...args: any[]): LoDashExplicitSyncWrapper; + keyBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIterateeCustom + ): LoDashExplicitSyncWrapper<_.Dictionary>; + keyBy( + this: LoDashExplicitSyncWrapper, + iteratee?: _.ValueIterateeCustom + ): LoDashExplicitSyncWrapper<_.Dictionary>; + map( + this: LoDashExplicitSyncWrapper, + iteratee: _.ArrayIterator + ): LoDashExplicitSyncWrapper; + map( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee: _.ListIterator + ): LoDashExplicitSyncWrapper; + map(this: LoDashExplicitSyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>): LoDashExplicitSyncWrapper; + map( + this: LoDashExplicitSyncWrapper, + iteratee: _.ObjectIterator + ): LoDashExplicitSyncWrapper; + map( + this: LoDashExplicitSyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>, + iteratee: K + ): LoDashExplicitSyncWrapper>; + map( + this: LoDashExplicitSyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>, + iteratee?: string + ): LoDashExplicitSyncWrapper; + map( + this: LoDashExplicitSyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>, + iteratee?: object + ): LoDashExplicitSyncWrapper; + orderBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratees?: _.Many<_.ListIterator>, + orders?: _.Many + ): LoDashExplicitSyncWrapper; + orderBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratees?: _.Many<_.ListIteratee>, + orders?: _.Many + ): LoDashExplicitSyncWrapper; + orderBy( + this: LoDashExplicitSyncWrapper, + iteratees?: _.Many<_.ObjectIterator>, + orders?: _.Many + ): LoDashExplicitSyncWrapper>; + orderBy( + this: LoDashExplicitSyncWrapper, + iteratees?: _.Many<_.ObjectIteratee>, + orders?: _.Many + ): LoDashExplicitSyncWrapper>; + partition( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + callback: _.ValueIteratee + ): LoDashExplicitSyncWrapper<[T[], T[]]>; + partition( + this: LoDashExplicitSyncWrapper, + callback: _.ValueIteratee + ): LoDashExplicitSyncWrapper<[Array, Array]>; + reduce( + this: LoDashExplicitSyncWrapper, + callback: _.MemoListIterator, + accumulator: TResult + ): LoDashExplicitSyncWrapper; + reduce( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + callback: _.MemoListIterator>, + accumulator: TResult + ): LoDashExplicitSyncWrapper; + reduce( + this: LoDashExplicitSyncWrapper, + callback: _.MemoObjectIterator, + accumulator: TResult + ): LoDashExplicitSyncWrapper; + reduce( + this: LoDashExplicitSyncWrapper, + callback: _.MemoListIterator + ): LoDashExplicitSyncWrapper; + reduce( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + callback: _.MemoListIterator> + ): LoDashExplicitSyncWrapper; + reduce( + this: LoDashExplicitSyncWrapper, + callback: _.MemoObjectIterator + ): LoDashExplicitSyncWrapper; + reduceRight( + this: LoDashExplicitSyncWrapper, + callback: _.MemoListIterator, + accumulator: TResult + ): LoDashExplicitSyncWrapper; + reduceRight( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + callback: _.MemoListIterator>, + accumulator: TResult + ): LoDashExplicitSyncWrapper; + reduceRight( + this: LoDashExplicitSyncWrapper, + callback: _.MemoObjectIterator, + accumulator: TResult + ): LoDashExplicitSyncWrapper; + reduceRight( + this: LoDashExplicitSyncWrapper, + callback: _.MemoListIterator + ): LoDashExplicitSyncWrapper; + reduceRight( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + callback: _.MemoListIterator> + ): LoDashExplicitSyncWrapper; + reduceRight( + this: LoDashExplicitSyncWrapper, + callback: _.MemoObjectIterator + ): LoDashExplicitSyncWrapper; + reject( + this: LoDashExplicitSyncWrapper, + predicate?: _.StringIterator + ): LoDashExplicitSyncWrapper; + reject( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom + ): LoDashExplicitSyncWrapper; + reject( + this: LoDashExplicitSyncWrapper, + predicate?: _.ObjectIterateeCustom + ): LoDashExplicitSyncWrapper>; + sample( + this: LoDashExplicitSyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined> + ): LoDashExplicitSyncWrapper; + sample( + this: LoDashExplicitSyncWrapper + ): LoDashExplicitSyncWrapper; + sampleSize( + this: LoDashExplicitSyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>, + n?: number + ): LoDashExplicitSyncWrapper; + sampleSize( + this: LoDashExplicitSyncWrapper, + n?: number + ): LoDashExplicitSyncWrapper>; + shuffle(this: LoDashExplicitSyncWrapper<_.List | null | undefined>): LoDashExplicitSyncWrapper; + shuffle(this: LoDashExplicitSyncWrapper): LoDashExplicitSyncWrapper>; + size(): LoDashExplicitSyncWrapper; + some( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom + ): LoDashExplicitSyncWrapper; + some( + this: LoDashExplicitSyncWrapper, + predicate?: _.ObjectIterateeCustom + ): LoDashExplicitSyncWrapper; + sortBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + ...iteratees: Array<_.Many<_.ListIteratee>> + ): LoDashExplicitSyncWrapper; + sortBy( + this: LoDashExplicitSyncWrapper, + ...iteratees: Array<_.Many<_.ObjectIteratee>> + ): LoDashExplicitSyncWrapper>; + pop(this: LoDashExplicitSyncWrapper<_.List | null | undefined>): LoDashExplicitSyncWrapper; + push(this: LoDashExplicitSyncWrapper<_.List | null | undefined>, ...items: T[]): this; + shift(this: LoDashExplicitSyncWrapper<_.List | null | undefined>): LoDashExplicitSyncWrapper; + sort(this: LoDashExplicitSyncWrapper<_.List | null | undefined>, compareFn?: (a: T, b: T) => number): this; + splice(this: LoDashExplicitSyncWrapper<_.List | null | undefined>, start: number, deleteCount?: number, ...items: T[]): this; + unshift(this: LoDashExplicitSyncWrapper<_.List | null | undefined>, ...items: T[]): this; + now(): LoDashExplicitSyncWrapper; + after any>(func: TFunc): LoDashExplicitSyncWrapper; + ary(n?: number): LoDashExplicitSyncWrapper<(...args: any[]) => any>; + before any>(func: TFunc): LoDashExplicitSyncWrapper; + bind( + thisArg: any, + ...partials: any[] + ): LoDashExplicitSyncWrapper<(...args: any[]) => any>; + bindKey( + key: string, + ...partials: any[] + ): LoDashExplicitSyncWrapper<(...args: any[]) => any>; + curry(this: LoDashExplicitSyncWrapper<(t1: T1) => R>): + LoDashExplicitSyncWrapper<_.CurriedFunction1>; + curry(this: LoDashExplicitSyncWrapper<(t1: T1, t2: T2) => R>): + LoDashExplicitSyncWrapper<_.CurriedFunction2>; + curry(this: LoDashExplicitSyncWrapper<(t1: T1, t2: T2, t3: T3) => R>): + LoDashExplicitSyncWrapper<_.CurriedFunction3>; + curry(this: LoDashExplicitSyncWrapper<(t1: T1, t2: T2, t3: T3, t4: T4) => R>): + LoDashExplicitSyncWrapper<_.CurriedFunction4>; + curry(this: LoDashExplicitSyncWrapper<(t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R>): + LoDashExplicitSyncWrapper<_.CurriedFunction5>; + curry(arity?: number): LoDashExplicitSyncWrapper<(...args: any[]) => any>; + curryRight(this: LoDashExplicitSyncWrapper<(t1: T1) => R>, arity?: number): + LoDashExplicitSyncWrapper<_.RightCurriedFunction1>; + curryRight(this: LoDashExplicitSyncWrapper<(t1: T1, t2: T2) => R>, arity?: number): + LoDashExplicitSyncWrapper<_.RightCurriedFunction2>; + curryRight(this: LoDashExplicitSyncWrapper<(t1: T1, t2: T2, t3: T3) => R>, arity?: number): + LoDashExplicitSyncWrapper<_.RightCurriedFunction3>; + curryRight(this: LoDashExplicitSyncWrapper<(t1: T1, t2: T2, t3: T3, t4: T4) => R>, arity?: number): + LoDashExplicitSyncWrapper<_.RightCurriedFunction4>; + curryRight(this: LoDashExplicitSyncWrapper<(t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R>, arity?: number): + LoDashExplicitSyncWrapper<_.RightCurriedFunction5>; + curryRight(arity?: number): LoDashExplicitSyncWrapper<(...args: any[]) => any>; + debounce( + wait?: number, + options?: _.DebounceSettings + ): LoDashExplicitSyncWrapper; + defer(...args: any[]): LoDashExplicitSyncWrapper; + delay( + wait: number, + ...args: any[] + ): LoDashExplicitSyncWrapper; + memoize(resolver?: (...args: any[]) => any): LoDashExplicitSyncWrapper; + overArgs(...transforms: Array<_.Many<(...args: any[]) => any>>): LoDashExplicitSyncWrapper<(...args: any[]) => any>; + partial: _.ExplicitPartial; + partialRight: _.ExplicitPartialRight; + rearg(...indexes: Array<_.Many>): LoDashExplicitSyncWrapper<(...args: any[]) => any>; + rest(start?: number): LoDashExplicitSyncWrapper<(...args: any[]) => any>; + spread(this: LoDashExplicitSyncWrapper<(...args: any[]) => TResult>): LoDashExplicitSyncWrapper<(...args: any[]) => TResult>; + spread(this: LoDashExplicitSyncWrapper<(...args: any[]) => TResult>, start: number): LoDashExplicitSyncWrapper<(...args: any[]) => TResult>; + throttle( + wait?: number, + options?: _.ThrottleSettings + ): LoDashExplicitSyncWrapper; + unary(this: LoDashExplicitSyncWrapper<(arg1: T, ...args: any[]) => TResult>): LoDashExplicitSyncWrapper<(arg1: T) => TResult>; + wrap( + wrapper: (value: TValue, ...args: TArgs[]) => TResult + ): LoDashExplicitSyncWrapper<(...args: TArgs[]) => TResult>; + wrap( + wrapper: (value: TValue, ...args: any[]) => TResult + ): LoDashExplicitSyncWrapper<(...args: any[]) => TResult>; + castArray(this: LoDashExplicitSyncWrapper<_.Many>): LoDashExplicitSyncWrapper; + clone(): this; + cloneDeep(): this; + cloneDeepWith( + customizer: _.CloneDeepWithCustomizer + ): LoDashExplicitSyncWrapper; + cloneDeepWith(): this; + cloneWith( + customizer: _.CloneWithCustomizer + ): LoDashExplicitSyncWrapper; + cloneWith( + customizer: _.CloneWithCustomizer + ): LoDashExplicitSyncWrapper; + cloneWith(): this; + conformsTo(this: LoDashExplicitSyncWrapper, source: _.ConformsPredicateObject): LoDashExplicitSyncWrapper; + // Note: we can't use TValue here, because it generates a typescript error when strictFunctionTypes is enabled. + eq( + other: any + ): LoDashExplicitSyncWrapper; + gt(other: any): LoDashExplicitSyncWrapper; + gte(other: any): LoDashExplicitSyncWrapper; + isArguments(): LoDashExplicitSyncWrapper; + isArray(): LoDashExplicitSyncWrapper; + isArrayBuffer(): LoDashExplicitSyncWrapper; + isArrayLike(): LoDashExplicitSyncWrapper; + isArrayLikeObject(): LoDashExplicitSyncWrapper; + isBoolean(): LoDashExplicitSyncWrapper; + isBuffer(): LoDashExplicitSyncWrapper; + isDate(): LoDashExplicitSyncWrapper; + isElement(): LoDashExplicitSyncWrapper; + isEmpty(): LoDashExplicitSyncWrapper; + isEqual( + other: any + ): LoDashExplicitSyncWrapper; + isEqualWith( + other: any, + customizer?: _.IsEqualCustomizer + ): LoDashExplicitSyncWrapper; + isError(): LoDashExplicitSyncWrapper; + isFinite(): LoDashExplicitSyncWrapper; + isFunction(): LoDashExplicitSyncWrapper; + isInteger(): LoDashExplicitSyncWrapper; + isLength(): LoDashExplicitSyncWrapper; + isMap(): LoDashExplicitSyncWrapper; + isMatch(source: object): LoDashExplicitSyncWrapper; + isMatchWith(source: object, customizer: _.isMatchWithCustomizer): LoDashExplicitSyncWrapper; + isNaN(): LoDashExplicitSyncWrapper; + isNative(): LoDashExplicitSyncWrapper; + isNil(): LoDashExplicitSyncWrapper; + isNull(): LoDashExplicitSyncWrapper; + isNumber(): LoDashExplicitSyncWrapper; + isObject(): LoDashExplicitSyncWrapper; + isObjectLike(): LoDashExplicitSyncWrapper; + isPlainObject(): LoDashExplicitSyncWrapper; + isRegExp(): LoDashExplicitSyncWrapper; + isSafeInteger(): LoDashExplicitSyncWrapper; + isSet(): LoDashExplicitSyncWrapper; + isString(): LoDashExplicitSyncWrapper; + isSymbol(): LoDashExplicitSyncWrapper; + isTypedArray(): LoDashExplicitSyncWrapper; + isUndefined(): LoDashExplicitSyncWrapper; + isWeakMap(): LoDashExplicitSyncWrapper; + isWeakSet(): LoDashExplicitSyncWrapper; + lt(other: any): LoDashExplicitSyncWrapper; + lte(other: any): LoDashExplicitSyncWrapper; + toArray(this: LoDashExplicitSyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>): LoDashExplicitSyncWrapper; + toArray(this: _.LoDashImplicitWrapper): LoDashExplicitSyncWrapper>; + toFinite(): LoDashExplicitSyncWrapper; + toInteger(): LoDashExplicitSyncWrapper; + toLength(): LoDashExplicitSyncWrapper; + toNumber(): LoDashExplicitSyncWrapper; + toPlainObject(): LoDashExplicitSyncWrapper; + toSafeInteger(): LoDashExplicitSyncWrapper; + add(addend: number): LoDashExplicitSyncWrapper; + ceil(precision?: number): LoDashExplicitSyncWrapper; + divide(divisor: number): LoDashExplicitSyncWrapper; + floor(precision?: number): LoDashExplicitSyncWrapper; + max(this: LoDashExplicitSyncWrapper<_.List | null | undefined>): LoDashExplicitSyncWrapper; + maxBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + mean(): LoDashExplicitSyncWrapper; + meanBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + min(this: LoDashExplicitSyncWrapper<_.List | null | undefined>): LoDashExplicitSyncWrapper; + minBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper; + multiply(multiplicand: number): LoDashExplicitSyncWrapper; + round(precision?: number): LoDashExplicitSyncWrapper; + subtract( + subtrahend: number + ): LoDashExplicitSyncWrapper; + sum(): LoDashExplicitSyncWrapper; + sumBy( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee?: ((value: T) => number) | string + ): LoDashExplicitSyncWrapper; + clamp( + lower: number, + upper: number + ): LoDashExplicitSyncWrapper; + clamp( + upper: number + ): LoDashExplicitSyncWrapper; + inRange( + start: number, + end?: number + ): LoDashExplicitSyncWrapper; + random(floating?: boolean): LoDashExplicitSyncWrapper; + random( + max: number, + floating?: boolean + ): LoDashExplicitSyncWrapper; + assign( + source: TSource + ): LoDashExplicitSyncWrapper; + assign( + source1: TSource1, + source2: TSource2 + ): LoDashExplicitSyncWrapper; + assign( + source1: TSource1, + source2: TSource2, + source3: TSource3 + ): LoDashExplicitSyncWrapper; + assign( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4 + ): LoDashExplicitSyncWrapper; + assign(): LoDashExplicitSyncWrapper; + assign(...otherArgs: any[]): LoDashExplicitSyncWrapper; + assignIn( + source: TSource + ): LoDashExplicitSyncWrapper; + assignIn( + source1: TSource1, + source2: TSource2 + ): LoDashExplicitSyncWrapper; + assignIn( + source1: TSource1, + source2: TSource2, + source3: TSource3 + ): LoDashExplicitSyncWrapper; + assignIn( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4 + ): LoDashExplicitSyncWrapper; + assignIn(): LoDashExplicitSyncWrapper; + assignIn(...otherArgs: any[]): LoDashExplicitSyncWrapper; + assignInWith( + source: TSource, + customizer: _.AssignCustomizer + ): LoDashExplicitSyncWrapper; + assignInWith( + source1: TSource1, + source2: TSource2, + customizer: _.AssignCustomizer + ): LoDashExplicitSyncWrapper; + assignInWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + customizer: _.AssignCustomizer + ): LoDashExplicitSyncWrapper; + assignInWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4, + customizer: _.AssignCustomizer + ): LoDashExplicitSyncWrapper; + assignInWith(): LoDashExplicitSyncWrapper; + assignInWith(...otherArgs: any[]): LoDashExplicitSyncWrapper; + assignWith( + source: TSource, + customizer: _.AssignCustomizer + ): LoDashExplicitSyncWrapper; + assignWith( + source1: TSource1, + source2: TSource2, + customizer: _.AssignCustomizer + ): LoDashExplicitSyncWrapper; + assignWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + customizer: _.AssignCustomizer + ): LoDashExplicitSyncWrapper; + assignWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4, + customizer: _.AssignCustomizer + ): LoDashExplicitSyncWrapper; + assignWith(): LoDashExplicitSyncWrapper; + assignWith(...otherArgs: any[]): LoDashExplicitSyncWrapper; + at( + this: LoDashExplicitSyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>, + ...props: _.PropertyPath[] + ): LoDashExplicitSyncWrapper; + at( + this: LoDashExplicitSyncWrapper, + ...props: Array<_.Many> + ): LoDashExplicitSyncWrapper>; + create(properties?: U): LoDashExplicitSyncWrapper; + defaults( + source: TSource + ): LoDashExplicitSyncWrapper; + defaults( + source1: TSource1, + source2: TSource2 + ): LoDashExplicitSyncWrapper; + defaults( + source1: TSource1, + source2: TSource2, + source3: TSource3 + ): LoDashExplicitSyncWrapper; + defaults( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4 + ): LoDashExplicitSyncWrapper; + defaults(): LoDashExplicitSyncWrapper; + defaults(...sources: any[]): LoDashExplicitSyncWrapper; + defaultsDeep(...sources: any[]): LoDashExplicitSyncWrapper; + entries(this: LoDashExplicitSyncWrapper<_.Dictionary | _.NumericDictionary>): LoDashExplicitSyncWrapper>; + entries(): LoDashExplicitSyncWrapper>; + entriesIn(this: LoDashExplicitSyncWrapper<_.Dictionary | _.NumericDictionary>): LoDashExplicitSyncWrapper>; + entriesIn(): LoDashExplicitSyncWrapper>; + extend( + source: TSource + ): LoDashExplicitSyncWrapper; + extend( + source1: TSource1, + source2: TSource2 + ): LoDashExplicitSyncWrapper; + extend( + source1: TSource1, + source2: TSource2, + source3: TSource3 + ): LoDashExplicitSyncWrapper; + extend( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4 + ): LoDashExplicitSyncWrapper; + extend(): LoDashExplicitSyncWrapper; + extend(...otherArgs: any[]): LoDashExplicitSyncWrapper; + extendWith( + source: TSource, + customizer: _.AssignCustomizer + ): LoDashExplicitSyncWrapper; + extendWith( + source1: TSource1, + source2: TSource2, + customizer: _.AssignCustomizer + ): LoDashExplicitSyncWrapper; + extendWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + customizer: _.AssignCustomizer + ): LoDashExplicitSyncWrapper; + extendWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4, + customizer: _.AssignCustomizer + ): LoDashExplicitSyncWrapper; + extendWith(): LoDashExplicitSyncWrapper; + extendWith(...otherArgs: any[]): LoDashExplicitSyncWrapper; + findKey( + this: LoDashExplicitSyncWrapper, + predicate?: _.ObjectIteratee + ): LoDashExplicitSyncWrapper; + findLastKey( + this: LoDashExplicitSyncWrapper, + predicate?: _.ObjectIteratee + ): LoDashExplicitSyncWrapper; + functions(): LoDashExplicitSyncWrapper; + functionsIn(): LoDashExplicitSyncWrapper; + get( + path: TKey | [TKey] + ): LoDashExplicitSyncWrapper; + get( + this: LoDashExplicitSyncWrapper, + path: TKey | [TKey], + ): LoDashExplicitSyncWrapper; + get( + this: LoDashExplicitSyncWrapper, + path: TKey | [TKey], + defaultValue: TDefault + ): LoDashExplicitSyncWrapper; + get( + this: LoDashExplicitSyncWrapper<_.NumericDictionary>, + path: number + ): LoDashExplicitSyncWrapper; + get( + this: LoDashExplicitSyncWrapper<_.NumericDictionary | null | undefined>, + path: number + ): LoDashExplicitSyncWrapper; + get( + this: LoDashExplicitSyncWrapper<_.NumericDictionary | null | undefined>, + path: number, + defaultValue: TDefault + ): LoDashExplicitSyncWrapper; + get( + this: LoDashExplicitSyncWrapper, + path: _.PropertyPath, + defaultValue: TDefault + ): LoDashExplicitSyncWrapper; + get( + this: LoDashExplicitSyncWrapper, + path: _.PropertyPath + ): LoDashExplicitSyncWrapper; + get( + path: _.PropertyPath, + defaultValue?: any + ): LoDashExplicitSyncWrapper; + has(path: _.PropertyPath): LoDashExplicitSyncWrapper; + hasIn(path: _.PropertyPath): LoDashExplicitSyncWrapper; + invert(): LoDashExplicitSyncWrapper<_.Dictionary>; + invertBy( + this: LoDashExplicitSyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>, + interatee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper<_.Dictionary>; + invertBy( + this: LoDashExplicitSyncWrapper, + interatee?: _.ValueIteratee + ): LoDashExplicitSyncWrapper<_.Dictionary>; + invoke( + path: _.PropertyPath, + ...args: any[]): LoDashExplicitSyncWrapper; + keys(): LoDashExplicitSyncWrapper; + keysIn(): LoDashExplicitSyncWrapper; + mapKeys( + this: LoDashExplicitSyncWrapper<_.List | null | undefined>, + iteratee?: _.ListIteratee + ): LoDashExplicitSyncWrapper<_.Dictionary>; + mapKeys( + this: LoDashExplicitSyncWrapper, + iteratee?: _.ObjectIteratee + ): LoDashExplicitSyncWrapper<_.Dictionary>; + mapValues( + this: LoDashExplicitSyncWrapper, + callback: _.StringIterator + ): LoDashExplicitSyncWrapper<_.NumericDictionary>; + mapValues( + this: LoDashExplicitSyncWrapper<_.Dictionary | _.NumericDictionary | null | undefined>, + callback: _.DictionaryIterator + ): LoDashExplicitSyncWrapper<_.Dictionary>; + mapValues( + this: LoDashExplicitSyncWrapper, + callback: _.ObjectIterator + ): LoDashExplicitSyncWrapper<{ [P in keyof T]: TResult }>; + mapValues( + this: LoDashExplicitSyncWrapper<_.Dictionary | _.NumericDictionary | null | undefined>, + iteratee: object + ): LoDashExplicitSyncWrapper<_.Dictionary>; + mapValues( + this: LoDashExplicitSyncWrapper, + iteratee: object + ): LoDashExplicitSyncWrapper<{ [P in keyof T]: boolean }>; + mapValues( + this: LoDashExplicitSyncWrapper<_.Dictionary | _.NumericDictionary | null | undefined>, + iteratee: TKey + ): LoDashExplicitSyncWrapper<_.Dictionary>; + mapValues( + this: LoDashExplicitSyncWrapper<_.Dictionary | _.NumericDictionary | null | undefined>, + iteratee: string + ): LoDashExplicitSyncWrapper<_.Dictionary>; + mapValues( + this: LoDashExplicitSyncWrapper, + iteratee: string + ): LoDashExplicitSyncWrapper<{ [P in keyof T]: any }>; + mapValues(this: LoDashExplicitSyncWrapper): LoDashExplicitSyncWrapper<_.NumericDictionary>; + mapValues(this: LoDashExplicitSyncWrapper<_.Dictionary | _.NumericDictionary | null | undefined>): LoDashExplicitSyncWrapper<_.Dictionary>; + mapValues(this: LoDashExplicitSyncWrapper): LoDashExplicitSyncWrapper; + mapValues(this: LoDashExplicitSyncWrapper): LoDashExplicitSyncWrapper<_.PartialObject>; + merge( + source: TSource + ): LoDashExplicitSyncWrapper; + merge( + source1: TSource1, + source2: TSource2 + ): LoDashExplicitSyncWrapper; + merge( + source1: TSource1, + source2: TSource2, + source3: TSource3 + ): LoDashExplicitSyncWrapper; + merge( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4 + ): LoDashExplicitSyncWrapper; + merge( + ...otherArgs: any[] + ): LoDashExplicitSyncWrapper; + mergeWith( + source: TSource, + customizer: _.MergeWithCustomizer + ): LoDashExplicitSyncWrapper; + mergeWith( + source1: TSource1, + source2: TSource2, + customizer: _.MergeWithCustomizer + ): LoDashExplicitSyncWrapper; + mergeWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + customizer: _.MergeWithCustomizer + ): LoDashExplicitSyncWrapper; + mergeWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4, + customizer: _.MergeWithCustomizer + ): LoDashExplicitSyncWrapper; + mergeWith( + ...otherArgs: any[] + ): LoDashExplicitSyncWrapper; + omit( + this: LoDashExplicitSyncWrapper, + ...paths: _.PropertyPath[] + ): LoDashExplicitSyncWrapper; + omit( + this: LoDashExplicitSyncWrapper, + ...paths: _.PropertyPath[] + ): LoDashExplicitSyncWrapper<_.PartialObject>; + omitBy( + this: LoDashExplicitSyncWrapper, + predicate: _.ValueKeyIteratee + ): LoDashExplicitSyncWrapper<_.PartialObject>; + pick( + this: LoDashExplicitSyncWrapper, + ...props: Array<_.Many> + ): LoDashExplicitSyncWrapper>; + pick( + this: LoDashExplicitSyncWrapper, + ...props: _.PropertyPath[] + ): LoDashExplicitSyncWrapper<_.PartialObject>; + pickBy( + this: LoDashExplicitSyncWrapper, + predicate?: _.ValueKeyIteratee + ): LoDashExplicitSyncWrapper<_.PartialObject>; + result( + path: _.PropertyPath, + defaultValue?: TResult|((...args: any[]) => TResult) + ): LoDashExplicitSyncWrapper; + set( + path: _.PropertyPath, + value: any + ): this; + set( + path: _.PropertyPath, + value: any + ): LoDashExplicitSyncWrapper; + setWith( + path: _.PropertyPath, + value: any, + customizer?: _.SetWithCustomizer + ): this; + setWith( + path: _.PropertyPath, + value: any, + customizer?: _.SetWithCustomizer + ): LoDashExplicitSyncWrapper; + toPairs(this: LoDashExplicitSyncWrapper<_.Dictionary | _.NumericDictionary>): LoDashExplicitSyncWrapper>; + toPairs(): LoDashExplicitSyncWrapper>; + toPairsIn(this: LoDashExplicitSyncWrapper<_.Dictionary | _.NumericDictionary>): LoDashExplicitSyncWrapper>; + toPairsIn(): LoDashExplicitSyncWrapper>; + transform( + this: LoDashExplicitSyncWrapper, + iteratee: _.MemoVoidArrayIterator, + accumulator?: TResult[] + ): LoDashExplicitSyncWrapper; + transform( + this: LoDashExplicitSyncWrapper, + iteratee: _.MemoVoidArrayIterator>, + accumulator?: _.Dictionary + ): LoDashExplicitSyncWrapper<_.Dictionary>; + transform( + this: LoDashExplicitSyncWrapper<_.Dictionary>, + iteratee: _.MemoVoidDictionaryIterator>, + accumulator?: _.Dictionary + ): LoDashExplicitSyncWrapper<_.Dictionary>; + transform( + this: LoDashExplicitSyncWrapper<_.Dictionary>, + iteratee: _.MemoVoidDictionaryIterator, + accumulator?: TResult[] + ): LoDashExplicitSyncWrapper; + transform( + this: LoDashExplicitSyncWrapper, + ): LoDashExplicitSyncWrapper; + transform(): LoDashExplicitSyncWrapper<_.Dictionary>; + unset(path: _.PropertyPath): LoDashExplicitSyncWrapper; + update( + path: _.PropertyPath, + updater: (value: any) => any + ): LoDashExplicitSyncWrapper; + updateWith( + path: _.PropertyPath, + updater: (oldValue: any) => any, + customizer?: _.SetWithCustomizer + ): this; + updateWith( + path: _.PropertyPath, + updater: (oldValue: any) => any, + customizer?: _.SetWithCustomizer + ): LoDashExplicitSyncWrapper; + values(this: LoDashExplicitSyncWrapper<_.Dictionary | _.NumericDictionary | _.List | null | undefined>): LoDashExplicitSyncWrapper; + values(this: LoDashExplicitSyncWrapper): LoDashExplicitSyncWrapper>; + values(): LoDashExplicitSyncWrapper; + valuesIn(this: LoDashExplicitSyncWrapper<_.Dictionary | _.NumericDictionary | _.List | null | undefined>): LoDashExplicitSyncWrapper; + valuesIn(this: LoDashExplicitSyncWrapper): LoDashExplicitSyncWrapper>; + chain(): this; + chain(): this; + plant(value: T): LoDashExplicitSyncWrapper; + thru(interceptor: (value: TValue) => TResult): LoDashExplicitSyncWrapper; + camelCase(): LoDashExplicitSyncWrapper; + capitalize(): LoDashExplicitSyncWrapper; + deburr(): LoDashExplicitSyncWrapper; + endsWith( + target?: string, + position?: number + ): LoDashExplicitSyncWrapper; + escape(): LoDashExplicitSyncWrapper; + escapeRegExp(): LoDashExplicitSyncWrapper; + kebabCase(): LoDashExplicitSyncWrapper; + lowerCase(): LoDashExplicitSyncWrapper; + lowerFirst(): LoDashExplicitSyncWrapper; + pad( + length?: number, + chars?: string + ): LoDashExplicitSyncWrapper; + padEnd( + length?: number, + chars?: string + ): LoDashExplicitSyncWrapper; + padStart( + length?: number, + chars?: string + ): LoDashExplicitSyncWrapper; + parseInt(radix?: number): LoDashExplicitSyncWrapper; + repeat(n?: number): LoDashExplicitSyncWrapper; + replace( + pattern: RegExp | string, + replacement: _.ReplaceFunction | string + ): LoDashExplicitSyncWrapper; + replace( + replacement: _.ReplaceFunction | string + ): LoDashExplicitSyncWrapper; + snakeCase(): LoDashExplicitSyncWrapper; + split( + separator?: RegExp|string, + limit?: number + ): LoDashExplicitSyncWrapper; + startCase(): LoDashExplicitSyncWrapper; + startsWith( + target?: string, + position?: number + ): LoDashExplicitSyncWrapper; + template(options?: _.TemplateOptions): LoDashExplicitSyncWrapper<_.TemplateExecutor>; + toLower(): LoDashExplicitSyncWrapper; + toUpper(): LoDashExplicitSyncWrapper; + trim(chars?: string): LoDashExplicitSyncWrapper; + trimEnd(chars?: string): LoDashExplicitSyncWrapper; + trimStart(chars?: string): LoDashExplicitSyncWrapper; + truncate(options?: _.TruncateOptions): LoDashExplicitSyncWrapper; + unescape(): LoDashExplicitSyncWrapper; + upperCase(): LoDashExplicitSyncWrapper; + upperFirst(): LoDashExplicitSyncWrapper; + words(pattern?: string|RegExp): LoDashExplicitSyncWrapper; + attempt(...args: any[]): LoDashExplicitSyncWrapper; + conforms(this: LoDashExplicitSyncWrapper<_.ConformsPredicateObject>): LoDashExplicitSyncWrapper<(value: T) => boolean>; + constant(): LoDashExplicitSyncWrapper<() => TValue>; + defaultTo(this: LoDashExplicitSyncWrapper, defaultValue: T): LoDashExplicitSyncWrapper; + defaultTo( + this: LoDashExplicitSyncWrapper, + defaultValue: TDefault + ): LoDashExplicitSyncWrapper; + // 0-argument first function + flow(this: LoDashExplicitSyncWrapper<() => R1>, f2: (a: R1) => R2): LoDashExplicitSyncWrapper<() => R2>; + flow(this: LoDashExplicitSyncWrapper<() => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3): LoDashExplicitSyncWrapper<() => R3>; + flow(this: LoDashExplicitSyncWrapper<() => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): LoDashExplicitSyncWrapper<() => R4>; + flow(this: LoDashExplicitSyncWrapper<() => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): LoDashExplicitSyncWrapper<() => R5>; + flow(this: LoDashExplicitSyncWrapper<() => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): LoDashExplicitSyncWrapper<() => R6>; + flow(this: LoDashExplicitSyncWrapper<() => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): LoDashExplicitSyncWrapper<() => R7>; + flow(this: LoDashExplicitSyncWrapper<() => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7, ...funcs: Array<_.Many<(a: any) => any>>): LoDashExplicitSyncWrapper<() => any>; + // 1-argument first function + flow(this: LoDashExplicitSyncWrapper<(a1: A1) => R1>, f2: (a: R1) => R2): LoDashExplicitSyncWrapper<(a1: A1) => R2>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3): LoDashExplicitSyncWrapper<(a1: A1) => R3>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): LoDashExplicitSyncWrapper<(a1: A1) => R4>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): LoDashExplicitSyncWrapper<(a1: A1) => R5>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): LoDashExplicitSyncWrapper<(a1: A1) => R6>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): LoDashExplicitSyncWrapper<(a1: A1) => R7>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7, ...funcs: Array<_.Many<(a: any) => any>>): LoDashExplicitSyncWrapper<(a1: A1) => any>; + // 2-argument first function + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R1>, f2: (a: R1) => R2): LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R2>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3): LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R3>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R4>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R5>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R6>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R7>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7, ...funcs: Array<_.Many<(a: any) => any>>): LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => any>; + // 3-argument first function + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R1>, f2: (a: R1) => R2): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R2>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R3>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R4>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R5>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R6>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R7>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7, ...funcs: Array<_.Many<(a: any) => any>>): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => any>; + // 4-argument first function + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R1>, f2: (a: R1) => R2): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R2>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R3>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R4>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R5>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R6>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R7>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7, ...funcs: Array<_.Many<(a: any) => any>>): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => any>; + // any-argument first function + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R1>, f2: (a: R1) => R2): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R2>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R3>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R4>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R5>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R6>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R7>; + flow(this: LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7, ...funcs: Array<_.Many<(a: any) => any>>): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => any>; + flow(this: LoDashExplicitSyncWrapper<(...args: any[]) => any>, funcs: Array<_.Many<(a: any) => any>>): LoDashExplicitSyncWrapper<(...args: any[]) => any>; + // 0-argument first function + flowRight(this: LoDashExplicitSyncWrapper<(a: R1) => R2>, f1: () => R1): LoDashExplicitSyncWrapper<() => R2>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R2) => R3>, f2: (a: R1) => R2, f1: () => R1): LoDashExplicitSyncWrapper<() => R3>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R3) => R4>, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: () => R1): LoDashExplicitSyncWrapper<() => R4>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R4) => R5>, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: () => R1): LoDashExplicitSyncWrapper<() => R5>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R5) => R6>, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: () => R1): LoDashExplicitSyncWrapper<() => R6>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R6) => R7>, f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: () => R1): LoDashExplicitSyncWrapper<() => R7>; + // 1-argument first function + flowRight(this: LoDashExplicitSyncWrapper<(a: R1) => R2>, f1: (a1: A1) => R1): LoDashExplicitSyncWrapper<(a1: A1) => R2>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R2) => R3>, f2: (a: R1) => R2, f1: (a1: A1) => R1): LoDashExplicitSyncWrapper<(a1: A1) => R3>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R3) => R4>, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1) => R1): LoDashExplicitSyncWrapper<(a1: A1) => R4>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R4) => R5>, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1) => R1): LoDashExplicitSyncWrapper<(a1: A1) => R5>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R5) => R6>, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1) => R1): LoDashExplicitSyncWrapper<(a1: A1) => R6>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R6) => R7>, f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1) => R1): LoDashExplicitSyncWrapper<(a1: A1) => R7>; + // 2-argument first function + flowRight(this: LoDashExplicitSyncWrapper<(a: R1) => R2>, f1: (a1: A1, a2: A2) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R2>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R2) => R3>, f2: (a: R1) => R2, f1: (a1: A1, a2: A2) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R3>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R3) => R4>, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R4>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R4) => R5>, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R5>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R5) => R6>, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R6>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R6) => R7>, f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2) => R7>; + // 3-argument first function + flowRight(this: LoDashExplicitSyncWrapper<(a: R1) => R2>, f1: (a1: A1, a2: A2, a3: A3) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R2>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R2) => R3>, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R3>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R3) => R4>, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R4>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R4) => R5>, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R5>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R5) => R6>, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R6>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R6) => R7>, f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3) => R7>; + // 4-argument first function + flowRight(this: LoDashExplicitSyncWrapper<(a: R1) => R2>, f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R2>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R2) => R3>, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R3>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R3) => R4>, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R4>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R4) => R5>, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R5>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R5) => R6>, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R6>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R6) => R7>, f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1): LoDashExplicitSyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R7>; + // any-argument first function + flowRight(this: LoDashExplicitSyncWrapper<(a: R1) => R2>, f1: (...args: any[]) => R1): LoDashExplicitSyncWrapper<(...args: any[]) => R2>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R1) => R2>, f2: (a: R1) => R2, f1: (...args: any[]) => R1): LoDashExplicitSyncWrapper<(...args: any[]) => R3>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R1) => R2>, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: any[]) => R1): LoDashExplicitSyncWrapper<(...args: any[]) => R4>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R1) => R2>, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: any[]) => R1): LoDashExplicitSyncWrapper<(...args: any[]) => R5>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R1) => R2>, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: any[]) => R1): LoDashExplicitSyncWrapper<(...args: any[]) => R6>; + flowRight(this: LoDashExplicitSyncWrapper<(a: R1) => R2>, f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: any[]) => R1): LoDashExplicitSyncWrapper<(...args: any[]) => R7>; + flowRight(this: LoDashExplicitSyncWrapper<(a: any) => any>, f6: (a: any) => any, f5: (a: any) => any, f4: (a: any) => any, f3: (a: any) => any, f2: (a: any) => any, f1: () => any, ...funcs: Array<_.Many<(...args: any[]) => any>>): LoDashExplicitSyncWrapper<(...args: any[]) => any>; + flowRight(this: LoDashExplicitSyncWrapper<(a: any) => any>, funcs: Array<_.Many<(...args: any[]) => any>>): LoDashExplicitSyncWrapper<(...args: any[]) => any>; + identity(): this; + iteratee any>( + this: LoDashExplicitSyncWrapper + ): LoDashExplicitSyncWrapper; + matches(): LoDashExplicitSyncWrapper<(value: V) => boolean>; + matchesProperty( + srcValue: SrcValue + ): LoDashExplicitSyncWrapper<(value: any) => boolean>; + matchesProperty( + srcValue: SrcValue + ): LoDashExplicitSyncWrapper<(value: Value) => boolean>; + method(...args: any[]): LoDashExplicitSyncWrapper<(object: any) => any>; + methodOf( + ...args: any[] + ): LoDashExplicitSyncWrapper<(path: _.PropertyPath) => any>; + mixin( + source: _.Dictionary<(...args: any[]) => any>, + options?: _.MixinOptions + ): this; + mixin( + options?: _.MixinOptions + ): LoDashExplicitSyncWrapper<_.LoDashStatic>; + noConflict(): LoDashExplicitSyncWrapper; + noop(...args: any[]): LoDashExplicitSyncWrapper; + nthArg(): LoDashExplicitSyncWrapper<(...args: any[]) => any>; + over( + this: LoDashExplicitSyncWrapper<_.Many<(...args: any[]) => TResult>>, + ...iteratees: Array<_.Many<(...args: any[]) => TResult>> + ): LoDashExplicitSyncWrapper<(...args: any[]) => TResult[]>; + overEvery(...predicates: Array<_.Many<(...args: T[]) => boolean>>): LoDashExplicitSyncWrapper<(...args: T[]) => boolean>; + overSome(...predicates: Array<_.Many<(...args: T[]) => boolean>>): LoDashExplicitSyncWrapper<(...args: T[]) => boolean>; + property(): LoDashExplicitSyncWrapper<(obj: TObj) => TResult>; + propertyOf(): LoDashExplicitSyncWrapper<(path: _.PropertyPath) => any>; + range( + end?: number, + step?: number + ): LoDashExplicitSyncWrapper; + rangeRight( + end?: number, + step?: number + ): LoDashExplicitSyncWrapper; + stubArray(): LoDashExplicitSyncWrapper; + stubFalse(): LoDashExplicitSyncWrapper; + stubObject(): LoDashExplicitSyncWrapper; + stubString(): LoDashExplicitSyncWrapper; + stubTrue(): LoDashExplicitSyncWrapper; + times( + iteratee: (num: number) => TResult + ): LoDashExplicitSyncWrapper; + times(): LoDashExplicitSyncWrapper; + toPath(): LoDashExplicitSyncWrapper; + uniqueId(): LoDashExplicitSyncWrapper; + } + + interface LoDashExplicitAsyncWrapper { + chunk( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + size?: number, + ): LoDashExplicitAsyncWrapper; + compact(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>): LoDashExplicitAsyncWrapper; + concat(this: LoDashExplicitAsyncWrapper<_.Many>, ...values: Array<_.Many>): LoDashExplicitAsyncWrapper; + difference( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + ...values: Array<_.List> + ): LoDashExplicitAsyncWrapper; + differenceBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + values: _.List, + iteratee: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + differenceBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + iteratee: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + differenceBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + values3: _.List, + iteratee: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + differenceBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + values3: _.List, + values4: _.List, + iteratee: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + differenceBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + values3: _.List, + values4: _.List, + values5: _.List, + iteratee: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + differenceBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + values3: _.List, + values4: _.List, + values5: _.List, + ...values: Array<_.List | _.ValueIteratee> + ): LoDashExplicitAsyncWrapper; + differenceBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + ...values: Array<_.List> + ): LoDashExplicitAsyncWrapper; + differenceWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + values: _.List, + comparator: _.Comparator2 + ): LoDashExplicitAsyncWrapper; + differenceWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + comparator: _.Comparator2 + ): LoDashExplicitAsyncWrapper; + differenceWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + ...values: Array<_.List | _.Comparator2> + ): LoDashExplicitAsyncWrapper; + differenceWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + ...values: Array<_.List> + ): LoDashExplicitAsyncWrapper; + drop(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, n?: number): LoDashExplicitAsyncWrapper; + dropRight(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, n?: number): LoDashExplicitAsyncWrapper; + dropRightWhile( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + predicate?: _.ListIteratee + ): LoDashExplicitAsyncWrapper; + dropWhile( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + predicate?: _.ListIteratee + ): LoDashExplicitAsyncWrapper; + fill( + this: LoDashExplicitAsyncWrapper, + value: T + ): LoDashExplicitAsyncWrapper; + fill( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + value: T + ): LoDashExplicitAsyncWrapper<_.List>; + fill( + this: LoDashExplicitAsyncWrapper, + value: T, + start?: number, + end?: number + ): LoDashExplicitAsyncWrapper>; + fill( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + value: T, + start?: number, + end?: number + ): LoDashExplicitAsyncWrapper<_.List>; + findIndex( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom, + fromIndex?: number + ): LoDashExplicitAsyncWrapper; + findLastIndex( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom, + fromIndex?: number + ): LoDashExplicitAsyncWrapper; + first(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>): LoDashExplicitAsyncWrapper; + flatten(this: LoDashExplicitAsyncWrapper<_.List<_.Many> | null | undefined>): LoDashExplicitAsyncWrapper; + flattenDeep(this: LoDashExplicitAsyncWrapper<_.ListOfRecursiveArraysOrValues | null | undefined>): LoDashExplicitAsyncWrapper; + flattenDepth(this: LoDashExplicitAsyncWrapper<_.ListOfRecursiveArraysOrValues | null | undefined>, depth?: number): LoDashExplicitAsyncWrapper; + fromPairs( + this: LoDashExplicitAsyncWrapper<_.List<[_.PropertyName, T]> | null | undefined> + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + fromPairs( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined> + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + head(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>): LoDashExplicitAsyncWrapper; + indexOf( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + value: T, + fromIndex?: number + ): LoDashExplicitAsyncWrapper; + initial(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>): LoDashExplicitAsyncWrapper; + intersection( + this: LoDashExplicitAsyncWrapper<_.List>, + ...arrays: Array<_.List> + ): LoDashExplicitAsyncWrapper; + intersectionBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + values: _.List, + iteratee: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + intersectionBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + iteratee: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + intersectionBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + ...values: Array<_.List | _.ValueIteratee> + ): LoDashExplicitAsyncWrapper; + intersectionBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + ...values: Array<_.List> + ): LoDashExplicitAsyncWrapper; + intersectionWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + values: _.List, + comparator: _.Comparator2 + ): LoDashExplicitAsyncWrapper; + intersectionWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + comparator: _.Comparator2 + ): LoDashExplicitAsyncWrapper; + intersectionWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + values1: _.List, + values2: _.List, + ...values: Array<_.List | _.Comparator2> + ): LoDashExplicitAsyncWrapper; + intersectionWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + ...values: Array<_.List> + ): LoDashExplicitAsyncWrapper; + join(separator?: string): LoDashExplicitAsyncWrapper; + last(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>): LoDashExplicitAsyncWrapper; + lastIndexOf( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + value: T, + fromIndex?: true|number + ): LoDashExplicitAsyncWrapper; + nth( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + n?: number + ): LoDashExplicitAsyncWrapper; + pull( + this: LoDashExplicitAsyncWrapper<_.List>, + ...values: T[] + ): this; + pullAll( + this: LoDashExplicitAsyncWrapper<_.List>, + values?: _.List + ): this; + remove( + this: LoDashExplicitAsyncWrapper<_.List>, + predicate?: _.ListIteratee + ): LoDashExplicitAsyncWrapper; + slice( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + start?: number, + end?: number + ): LoDashExplicitAsyncWrapper; + sortedIndex( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + value: T + ): LoDashExplicitAsyncWrapper; + sortedIndex( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + value: T + ): LoDashExplicitAsyncWrapper; + sortedIndexBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + value: T, + iteratee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + sortedIndexOf( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + value: T + ): LoDashExplicitAsyncWrapper; + sortedLastIndex( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + value: T + ): LoDashExplicitAsyncWrapper; + sortedLastIndexBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + value: T, + iteratee: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + sortedLastIndexOf( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + value: T + ): LoDashExplicitAsyncWrapper; + sortedUniq(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>): LoDashExplicitAsyncWrapper; + sortedUniqBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + tail(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>): LoDashExplicitAsyncWrapper; + take( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + n?: number + ): LoDashExplicitAsyncWrapper; + takeRight( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + n?: number + ): LoDashExplicitAsyncWrapper; + takeRightWhile( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + predicate?: _.ListIteratee + ): LoDashExplicitAsyncWrapper; + takeWhile( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + predicate?: _.ListIteratee + ): LoDashExplicitAsyncWrapper; + union( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + ...arrays: Array<_.List | null | undefined> + ): LoDashExplicitAsyncWrapper; + unionBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + unionBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + iteratee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + unionBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + arrays3: _.List | null | undefined, + iteratee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + unionBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + arrays3: _.List | null | undefined, + arrays4: _.List | null | undefined, + iteratee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + unionBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + arrays3: _.List | null | undefined, + arrays4: _.List | null | undefined, + arrays5: _.List | null | undefined, + ...iteratee: Array<_.ValueIteratee | _.List | null | undefined> + ): LoDashExplicitAsyncWrapper; + unionWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + comparator?: _.Comparator + ): LoDashExplicitAsyncWrapper; + unionWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + comparator?: _.Comparator + ): LoDashExplicitAsyncWrapper; + unionWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + arrays3: _.List | null | undefined, + ...comparator: Array<_.Comparator | _.List | null | undefined> + ): LoDashExplicitAsyncWrapper; + uniq(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>): LoDashExplicitAsyncWrapper; + uniqBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + uniqWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + comparator?: _.Comparator + ): LoDashExplicitAsyncWrapper; + unzip(this: LoDashExplicitAsyncWrapper> | null | undefined>): LoDashExplicitAsyncWrapper; + unzipWith( + this: LoDashExplicitAsyncWrapper<_.List<_.List> | null | undefined>, + iteratee: (...values: T[]) => TResult + ): LoDashExplicitAsyncWrapper; + unzipWith( + this: LoDashExplicitAsyncWrapper<_.List<_.List> | null | undefined> + ): LoDashExplicitAsyncWrapper; + without( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + ...values: T[] + ): LoDashExplicitAsyncWrapper; + xor( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + ...arrays: Array<_.List | null | undefined> + ): LoDashExplicitAsyncWrapper; + xorBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + xorBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + iteratee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + xorBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + arrays3: _.List | null | undefined, + ...iteratee: Array<_.ValueIteratee | _.List | null | undefined> + ): LoDashExplicitAsyncWrapper; + xorWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + comparator?: _.Comparator + ): LoDashExplicitAsyncWrapper; + xorWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + comparator?: _.Comparator + ): LoDashExplicitAsyncWrapper; + xorWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + arrays2: _.List | null | undefined, + arrays3: _.List | null | undefined, + ...comparator: Array<_.Comparator | _.List | null | undefined> + ): LoDashExplicitAsyncWrapper; + zip( + this: LoDashExplicitAsyncWrapper<_.List>, + arrays2: _.List, + ): LoDashExplicitAsyncWrapper>; + zip( + this: LoDashExplicitAsyncWrapper<_.List>, + arrays2: _.List, + arrays3: _.List, + ): LoDashExplicitAsyncWrapper>; + zip( + this: LoDashExplicitAsyncWrapper<_.List>, + arrays2: _.List, + arrays3: _.List, + arrays4: _.List, + ): LoDashExplicitAsyncWrapper>; + zip( + this: LoDashExplicitAsyncWrapper<_.List>, + arrays2: _.List, + arrays3: _.List, + arrays4: _.List, + arrays5: _.List, + ): LoDashExplicitAsyncWrapper>; + zip( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + ...arrays: Array<_.List | null | undefined> + ): LoDashExplicitAsyncWrapper>>; + zipObject( + this: LoDashExplicitAsyncWrapper<_.List<_.PropertyName>>, + values: _.List + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + zipObject( + this: LoDashExplicitAsyncWrapper<_.List<_.PropertyName>> + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + zipObjectDeep( + this: LoDashExplicitAsyncWrapper<_.List<_.PropertyPath>>, + values?: _.List + ): LoDashExplicitAsyncWrapper; + zipWith( + this: LoDashExplicitAsyncWrapper<_.List>, + iteratee: (value1: T) => TResult + ): LoDashExplicitAsyncWrapper; + zipWith( + this: LoDashExplicitAsyncWrapper<_.List>, + arrays2: _.List, + iteratee: (value1: T1, value2: T2) => TResult + ): LoDashExplicitAsyncWrapper; + zipWith( + this: LoDashExplicitAsyncWrapper<_.List>, + arrays2: _.List, + arrays3: _.List, + iteratee: (value1: T1, value2: T2, value3: T3) => TResult + ): LoDashExplicitAsyncWrapper; + zipWith( + this: LoDashExplicitAsyncWrapper<_.List>, + arrays2: _.List, + arrays3: _.List, + arrays4: _.List, + iteratee: (value1: T1, value2: T2, value3: T3, value4: T4) => TResult + ): LoDashExplicitAsyncWrapper; + zipWith( + this: LoDashExplicitAsyncWrapper<_.List>, + arrays2: _.List, + arrays3: _.List, + arrays4: _.List, + arrays5: _.List, + iteratee: (value1: T1, value2: T2, value3: T3, value4: T4, value5: T5) => TResult + ): LoDashExplicitAsyncWrapper; + zipWith( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + ...iteratee: Array<((...group: T[]) => TResult) | _.List | null | undefined> + ): LoDashExplicitAsyncWrapper; + countBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + countBy( + this: LoDashExplicitAsyncWrapper, + iteratee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + every( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom + ): LoDashExplicitAsyncWrapper; + every( + this: LoDashExplicitAsyncWrapper, + predicate?: _.ObjectIterateeCustom + ): LoDashExplicitAsyncWrapper; + filter( + this: LoDashExplicitAsyncWrapper, + predicate?: _.StringIterator + ): LoDashExplicitAsyncWrapper; + filter( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + predicate: _.ListIteratorTypeGuard + ): LoDashExplicitAsyncWrapper; + filter( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom + ): LoDashExplicitAsyncWrapper; + filter( + this: LoDashExplicitAsyncWrapper, + predicate: _.ObjectIteratorTypeGuard + ): LoDashExplicitAsyncWrapper; + filter( + this: LoDashExplicitAsyncWrapper, + predicate?: _.ObjectIterateeCustom + ): LoDashExplicitAsyncWrapper>; + find( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + predicate: _.ListIteratorTypeGuard, + fromIndex?: number + ): LoDashExplicitAsyncWrapper; + find( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom, + fromIndex?: number + ): LoDashExplicitAsyncWrapper; + find( + this: LoDashExplicitAsyncWrapper, + predicate: _.ObjectIteratorTypeGuard, + fromIndex?: number + ): LoDashExplicitAsyncWrapper; + find( + this: LoDashExplicitAsyncWrapper, + predicate?: _.ObjectIterateeCustom, + fromIndex?: number + ): LoDashExplicitAsyncWrapper; + findLast( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + predicate: _.ListIteratorTypeGuard, + fromIndex?: number + ): LoDashExplicitAsyncWrapper; + findLast( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom, + fromIndex?: number + ): LoDashExplicitAsyncWrapper; + findLast( + this: LoDashExplicitAsyncWrapper, + predicate: _.ObjectIteratorTypeGuard, + fromIndex?: number + ): LoDashExplicitAsyncWrapper; + findLast( + this: LoDashExplicitAsyncWrapper, + predicate?: _.ObjectIterateeCustom, + fromIndex?: number + ): LoDashExplicitAsyncWrapper; + flatMap(this: LoDashExplicitAsyncWrapper<_.List<_.Many> | _.Dictionary<_.Many> | _.NumericDictionary<_.Many> | null | undefined>): LoDashExplicitAsyncWrapper; + flatMap(): LoDashExplicitAsyncWrapper; + flatMap( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee: _.ListIterator> + ): LoDashExplicitAsyncWrapper; + flatMap( + this: LoDashExplicitAsyncWrapper, + iteratee: _.ObjectIterator> + ): LoDashExplicitAsyncWrapper; + flatMap( + iteratee: string + ): LoDashExplicitAsyncWrapper; + flatMap( + iteratee: object + ): LoDashExplicitAsyncWrapper; + flatMapDeep( + this: LoDashExplicitAsyncWrapper<_.List<_.ListOfRecursiveArraysOrValues | T> | _.Dictionary<_.ListOfRecursiveArraysOrValues | T> | _.NumericDictionary<_.ListOfRecursiveArraysOrValues | T> | null | undefined> + ): LoDashExplicitAsyncWrapper; + flatMapDeep( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee: _.ListIterator | TResult> + ): LoDashExplicitAsyncWrapper; + flatMapDeep( + this: LoDashExplicitAsyncWrapper, + iteratee: _.ObjectIterator | TResult> + ): LoDashExplicitAsyncWrapper; + flatMapDeep( + this: LoDashExplicitAsyncWrapper, + iteratee: string + ): LoDashExplicitAsyncWrapper; + flatMapDeep( + this: LoDashExplicitAsyncWrapper, + iteratee: object + ): LoDashExplicitAsyncWrapper; + flatMapDepth( + this: LoDashExplicitAsyncWrapper<_.List<_.ListOfRecursiveArraysOrValues | T> | _.Dictionary<_.ListOfRecursiveArraysOrValues | T> | _.NumericDictionary<_.ListOfRecursiveArraysOrValues | T> | null | undefined> + ): LoDashExplicitAsyncWrapper; + flatMapDepth( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee: _.ListIterator | TResult>, + depth?: number + ): LoDashExplicitAsyncWrapper; + flatMapDepth( + this: LoDashExplicitAsyncWrapper, + iteratee: _.ObjectIterator | TResult>, + depth?: number + ): LoDashExplicitAsyncWrapper; + flatMapDepth( + this: LoDashExplicitAsyncWrapper, + iteratee: string, + depth?: number + ): LoDashExplicitAsyncWrapper; + flatMapDepth( + this: LoDashExplicitAsyncWrapper, + iteratee: object, + depth?: number + ): LoDashExplicitAsyncWrapper; + groupBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + groupBy( + this: LoDashExplicitAsyncWrapper, + iteratee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper<_.Dictionary>>; + includes( + this: LoDashExplicitAsyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>, + target: T, + fromIndex?: number + ): LoDashExplicitAsyncWrapper; + invokeMap( + methodName: string, + ...args: any[]): LoDashExplicitAsyncWrapper; + invokeMap( + method: (...args: any[]) => TResult, + ...args: any[]): LoDashExplicitAsyncWrapper; + keyBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIterateeCustom + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + keyBy( + this: LoDashExplicitAsyncWrapper, + iteratee?: _.ValueIterateeCustom + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + map( + this: LoDashExplicitAsyncWrapper, + iteratee: _.ArrayIterator + ): LoDashExplicitAsyncWrapper; + map( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee: _.ListIterator + ): LoDashExplicitAsyncWrapper; + map(this: LoDashExplicitAsyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>): LoDashExplicitAsyncWrapper; + map( + this: LoDashExplicitAsyncWrapper, + iteratee: _.ObjectIterator + ): LoDashExplicitAsyncWrapper; + map( + this: LoDashExplicitAsyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>, + iteratee: K + ): LoDashExplicitAsyncWrapper>; + map( + this: LoDashExplicitAsyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>, + iteratee?: string + ): LoDashExplicitAsyncWrapper; + map( + this: LoDashExplicitAsyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>, + iteratee?: object + ): LoDashExplicitAsyncWrapper; + orderBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratees?: _.Many<_.ListIterator>, + orders?: _.Many + ): LoDashExplicitAsyncWrapper; + orderBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratees?: _.Many<_.ListIteratee>, + orders?: _.Many + ): LoDashExplicitAsyncWrapper; + orderBy( + this: LoDashExplicitAsyncWrapper, + iteratees?: _.Many<_.ObjectIterator>, + orders?: _.Many + ): LoDashExplicitAsyncWrapper>; + orderBy( + this: LoDashExplicitAsyncWrapper, + iteratees?: _.Many<_.ObjectIteratee>, + orders?: _.Many + ): LoDashExplicitAsyncWrapper>; + partition( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + callback: _.ValueIteratee + ): LoDashExplicitAsyncWrapper<[T[], T[]]>; + partition( + this: LoDashExplicitAsyncWrapper, + callback: _.ValueIteratee + ): LoDashExplicitAsyncWrapper<[Array, Array]>; + reduce( + this: LoDashExplicitAsyncWrapper, + callback: _.MemoListIterator, + accumulator: TResult + ): LoDashExplicitAsyncWrapper; + reduce( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + callback: _.MemoListIterator>, + accumulator: TResult + ): LoDashExplicitAsyncWrapper; + reduce( + this: LoDashExplicitAsyncWrapper, + callback: _.MemoObjectIterator, + accumulator: TResult + ): LoDashExplicitAsyncWrapper; + reduce( + this: LoDashExplicitAsyncWrapper, + callback: _.MemoListIterator + ): LoDashExplicitAsyncWrapper; + reduce( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + callback: _.MemoListIterator> + ): LoDashExplicitAsyncWrapper; + reduce( + this: LoDashExplicitAsyncWrapper, + callback: _.MemoObjectIterator + ): LoDashExplicitAsyncWrapper; + reduceRight( + this: LoDashExplicitAsyncWrapper, + callback: _.MemoListIterator, + accumulator: TResult + ): LoDashExplicitAsyncWrapper; + reduceRight( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + callback: _.MemoListIterator>, + accumulator: TResult + ): LoDashExplicitAsyncWrapper; + reduceRight( + this: LoDashExplicitAsyncWrapper, + callback: _.MemoObjectIterator, + accumulator: TResult + ): LoDashExplicitAsyncWrapper; + reduceRight( + this: LoDashExplicitAsyncWrapper, + callback: _.MemoListIterator + ): LoDashExplicitAsyncWrapper; + reduceRight( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + callback: _.MemoListIterator> + ): LoDashExplicitAsyncWrapper; + reduceRight( + this: LoDashExplicitAsyncWrapper, + callback: _.MemoObjectIterator + ): LoDashExplicitAsyncWrapper; + reject( + this: LoDashExplicitAsyncWrapper, + predicate?: _.StringIterator + ): LoDashExplicitAsyncWrapper; + reject( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom + ): LoDashExplicitAsyncWrapper; + reject( + this: LoDashExplicitAsyncWrapper, + predicate?: _.ObjectIterateeCustom + ): LoDashExplicitAsyncWrapper>; + sample( + this: LoDashExplicitAsyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined> + ): LoDashExplicitAsyncWrapper; + sample( + this: LoDashExplicitAsyncWrapper + ): LoDashExplicitAsyncWrapper; + sampleSize( + this: LoDashExplicitAsyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>, + n?: number + ): LoDashExplicitAsyncWrapper; + sampleSize( + this: LoDashExplicitAsyncWrapper, + n?: number + ): LoDashExplicitAsyncWrapper>; + shuffle(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>): LoDashExplicitAsyncWrapper; + shuffle(this: LoDashExplicitAsyncWrapper): LoDashExplicitAsyncWrapper>; + size(): LoDashExplicitAsyncWrapper; + some( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + predicate?: _.ListIterateeCustom + ): LoDashExplicitAsyncWrapper; + some( + this: LoDashExplicitAsyncWrapper, + predicate?: _.ObjectIterateeCustom + ): LoDashExplicitAsyncWrapper; + sortBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + ...iteratees: Array<_.Many<_.ListIteratee>> + ): LoDashExplicitAsyncWrapper; + sortBy( + this: LoDashExplicitAsyncWrapper, + ...iteratees: Array<_.Many<_.ObjectIteratee>> + ): LoDashExplicitAsyncWrapper>; + pop(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>): LoDashExplicitAsyncWrapper; + push(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, ...items: T[]): this; + shift(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>): LoDashExplicitAsyncWrapper; + sort(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, compareFn?: (a: T, b: T) => number): this; + splice(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, start: number, deleteCount?: number, ...items: T[]): this; + unshift(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, ...items: T[]): this; + now(): LoDashExplicitAsyncWrapper; + after any>(func: TFunc): LoDashExplicitAsyncWrapper; + ary(n?: number): LoDashExplicitAsyncWrapper<(...args: any[]) => any>; + before any>(func: TFunc): LoDashExplicitAsyncWrapper; + bind( + thisArg: any, + ...partials: any[] + ): LoDashExplicitAsyncWrapper<(...args: any[]) => any>; + bindKey( + key: string, + ...partials: any[] + ): LoDashExplicitAsyncWrapper<(...args: any[]) => any>; + curry(this: LoDashExplicitAsyncWrapper<(t1: T1) => R>): + LoDashExplicitAsyncWrapper<_.CurriedFunction1>; + curry(this: LoDashExplicitAsyncWrapper<(t1: T1, t2: T2) => R>): + LoDashExplicitAsyncWrapper<_.CurriedFunction2>; + curry(this: LoDashExplicitAsyncWrapper<(t1: T1, t2: T2, t3: T3) => R>): + LoDashExplicitAsyncWrapper<_.CurriedFunction3>; + curry(this: LoDashExplicitAsyncWrapper<(t1: T1, t2: T2, t3: T3, t4: T4) => R>): + LoDashExplicitAsyncWrapper<_.CurriedFunction4>; + curry(this: LoDashExplicitAsyncWrapper<(t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R>): + LoDashExplicitAsyncWrapper<_.CurriedFunction5>; + curry(arity?: number): LoDashExplicitAsyncWrapper<(...args: any[]) => any>; + curryRight(this: LoDashExplicitAsyncWrapper<(t1: T1) => R>, arity?: number): + LoDashExplicitAsyncWrapper<_.RightCurriedFunction1>; + curryRight(this: LoDashExplicitAsyncWrapper<(t1: T1, t2: T2) => R>, arity?: number): + LoDashExplicitAsyncWrapper<_.RightCurriedFunction2>; + curryRight(this: LoDashExplicitAsyncWrapper<(t1: T1, t2: T2, t3: T3) => R>, arity?: number): + LoDashExplicitAsyncWrapper<_.RightCurriedFunction3>; + curryRight(this: LoDashExplicitAsyncWrapper<(t1: T1, t2: T2, t3: T3, t4: T4) => R>, arity?: number): + LoDashExplicitAsyncWrapper<_.RightCurriedFunction4>; + curryRight(this: LoDashExplicitAsyncWrapper<(t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R>, arity?: number): + LoDashExplicitAsyncWrapper<_.RightCurriedFunction5>; + curryRight(arity?: number): LoDashExplicitAsyncWrapper<(...args: any[]) => any>; + debounce( + wait?: number, + options?: _.DebounceSettings + ): LoDashExplicitAsyncWrapper; + defer(...args: any[]): LoDashExplicitAsyncWrapper; + delay( + wait: number, + ...args: any[] + ): LoDashExplicitAsyncWrapper; + memoize(resolver?: (...args: any[]) => any): LoDashExplicitAsyncWrapper; + overArgs(...transforms: Array<_.Many<(...args: any[]) => any>>): LoDashExplicitAsyncWrapper<(...args: any[]) => any>; + partial: _.ExplicitPartial; + partialRight: _.ExplicitPartialRight; + rearg(...indexes: Array<_.Many>): LoDashExplicitAsyncWrapper<(...args: any[]) => any>; + rest(start?: number): LoDashExplicitAsyncWrapper<(...args: any[]) => any>; + spread(this: LoDashExplicitAsyncWrapper<(...args: any[]) => TResult>): LoDashExplicitAsyncWrapper<(...args: any[]) => TResult>; + spread(this: LoDashExplicitAsyncWrapper<(...args: any[]) => TResult>, start: number): LoDashExplicitAsyncWrapper<(...args: any[]) => TResult>; + throttle( + wait?: number, + options?: _.ThrottleSettings + ): LoDashExplicitAsyncWrapper; + unary(this: LoDashExplicitAsyncWrapper<(arg1: T, ...args: any[]) => TResult>): LoDashExplicitAsyncWrapper<(arg1: T) => TResult>; + wrap( + wrapper: (value: TValue, ...args: TArgs[]) => TResult + ): LoDashExplicitAsyncWrapper<(...args: TArgs[]) => TResult>; + wrap( + wrapper: (value: TValue, ...args: any[]) => TResult + ): LoDashExplicitAsyncWrapper<(...args: any[]) => TResult>; + castArray(this: LoDashExplicitAsyncWrapper<_.Many>): LoDashExplicitAsyncWrapper; + clone(): this; + cloneDeep(): this; + cloneDeepWith( + customizer: _.CloneDeepWithCustomizer + ): LoDashExplicitAsyncWrapper; + cloneDeepWith(): this; + cloneWith( + customizer: _.CloneWithCustomizer + ): LoDashExplicitAsyncWrapper; + cloneWith( + customizer: _.CloneWithCustomizer + ): LoDashExplicitAsyncWrapper; + cloneWith(): this; + conformsTo(this: LoDashExplicitAsyncWrapper, source: _.ConformsPredicateObject): LoDashExplicitAsyncWrapper; + // Note: we can't use TValue here, because it generates a typescript error when strictFunctionTypes is enabled. + eq( + other: any + ): LoDashExplicitAsyncWrapper; + gt(other: any): LoDashExplicitAsyncWrapper; + gte(other: any): LoDashExplicitAsyncWrapper; + isArguments(): LoDashExplicitAsyncWrapper; + isArray(): LoDashExplicitAsyncWrapper; + isArrayBuffer(): LoDashExplicitAsyncWrapper; + isArrayLike(): LoDashExplicitAsyncWrapper; + isArrayLikeObject(): LoDashExplicitAsyncWrapper; + isBoolean(): LoDashExplicitAsyncWrapper; + isBuffer(): LoDashExplicitAsyncWrapper; + isDate(): LoDashExplicitAsyncWrapper; + isElement(): LoDashExplicitAsyncWrapper; + isEmpty(): LoDashExplicitAsyncWrapper; + isEqual( + other: any + ): LoDashExplicitAsyncWrapper; + isEqualWith( + other: any, + customizer?: _.IsEqualCustomizer + ): LoDashExplicitAsyncWrapper; + isError(): LoDashExplicitAsyncWrapper; + isFinite(): LoDashExplicitAsyncWrapper; + isFunction(): LoDashExplicitAsyncWrapper; + isInteger(): LoDashExplicitAsyncWrapper; + isLength(): LoDashExplicitAsyncWrapper; + isMap(): LoDashExplicitAsyncWrapper; + isMatch(source: object): LoDashExplicitAsyncWrapper; + isMatchWith(source: object, customizer: _.isMatchWithCustomizer): LoDashExplicitAsyncWrapper; + isNaN(): LoDashExplicitAsyncWrapper; + isNative(): LoDashExplicitAsyncWrapper; + isNil(): LoDashExplicitAsyncWrapper; + isNull(): LoDashExplicitAsyncWrapper; + isNumber(): LoDashExplicitAsyncWrapper; + isObject(): LoDashExplicitAsyncWrapper; + isObjectLike(): LoDashExplicitAsyncWrapper; + isPlainObject(): LoDashExplicitAsyncWrapper; + isRegExp(): LoDashExplicitAsyncWrapper; + isSafeInteger(): LoDashExplicitAsyncWrapper; + isSet(): LoDashExplicitAsyncWrapper; + isString(): LoDashExplicitAsyncWrapper; + isSymbol(): LoDashExplicitAsyncWrapper; + isTypedArray(): LoDashExplicitAsyncWrapper; + isUndefined(): LoDashExplicitAsyncWrapper; + isWeakMap(): LoDashExplicitAsyncWrapper; + isWeakSet(): LoDashExplicitAsyncWrapper; + lt(other: any): LoDashExplicitAsyncWrapper; + lte(other: any): LoDashExplicitAsyncWrapper; + toArray(this: LoDashExplicitAsyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>): LoDashExplicitAsyncWrapper; + toArray(this: _.LoDashImplicitWrapper): LoDashExplicitAsyncWrapper>; + toFinite(): LoDashExplicitAsyncWrapper; + toInteger(): LoDashExplicitAsyncWrapper; + toLength(): LoDashExplicitAsyncWrapper; + toNumber(): LoDashExplicitAsyncWrapper; + toPlainObject(): LoDashExplicitAsyncWrapper; + toSafeInteger(): LoDashExplicitAsyncWrapper; + add(addend: number): LoDashExplicitAsyncWrapper; + ceil(precision?: number): LoDashExplicitAsyncWrapper; + divide(divisor: number): LoDashExplicitAsyncWrapper; + floor(precision?: number): LoDashExplicitAsyncWrapper; + max(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>): LoDashExplicitAsyncWrapper; + maxBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + mean(): LoDashExplicitAsyncWrapper; + meanBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + min(this: LoDashExplicitAsyncWrapper<_.List | null | undefined>): LoDashExplicitAsyncWrapper; + minBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper; + multiply(multiplicand: number): LoDashExplicitAsyncWrapper; + round(precision?: number): LoDashExplicitAsyncWrapper; + subtract( + subtrahend: number + ): LoDashExplicitAsyncWrapper; + sum(): LoDashExplicitAsyncWrapper; + sumBy( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee?: ((value: T) => number) | string + ): LoDashExplicitAsyncWrapper; + clamp( + lower: number, + upper: number + ): LoDashExplicitAsyncWrapper; + clamp( + upper: number + ): LoDashExplicitAsyncWrapper; + inRange( + start: number, + end?: number + ): LoDashExplicitAsyncWrapper; + random(floating?: boolean): LoDashExplicitAsyncWrapper; + random( + max: number, + floating?: boolean + ): LoDashExplicitAsyncWrapper; + assign( + source: TSource + ): LoDashExplicitAsyncWrapper; + assign( + source1: TSource1, + source2: TSource2 + ): LoDashExplicitAsyncWrapper; + assign( + source1: TSource1, + source2: TSource2, + source3: TSource3 + ): LoDashExplicitAsyncWrapper; + assign( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4 + ): LoDashExplicitAsyncWrapper; + assign(): LoDashExplicitAsyncWrapper; + assign(...otherArgs: any[]): LoDashExplicitAsyncWrapper; + assignIn( + source: TSource + ): LoDashExplicitAsyncWrapper; + assignIn( + source1: TSource1, + source2: TSource2 + ): LoDashExplicitAsyncWrapper; + assignIn( + source1: TSource1, + source2: TSource2, + source3: TSource3 + ): LoDashExplicitAsyncWrapper; + assignIn( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4 + ): LoDashExplicitAsyncWrapper; + assignIn(): LoDashExplicitAsyncWrapper; + assignIn(...otherArgs: any[]): LoDashExplicitAsyncWrapper; + assignInWith( + source: TSource, + customizer: _.AssignCustomizer + ): LoDashExplicitAsyncWrapper; + assignInWith( + source1: TSource1, + source2: TSource2, + customizer: _.AssignCustomizer + ): LoDashExplicitAsyncWrapper; + assignInWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + customizer: _.AssignCustomizer + ): LoDashExplicitAsyncWrapper; + assignInWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4, + customizer: _.AssignCustomizer + ): LoDashExplicitAsyncWrapper; + assignInWith(): LoDashExplicitAsyncWrapper; + assignInWith(...otherArgs: any[]): LoDashExplicitAsyncWrapper; + assignWith( + source: TSource, + customizer: _.AssignCustomizer + ): LoDashExplicitAsyncWrapper; + assignWith( + source1: TSource1, + source2: TSource2, + customizer: _.AssignCustomizer + ): LoDashExplicitAsyncWrapper; + assignWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + customizer: _.AssignCustomizer + ): LoDashExplicitAsyncWrapper; + assignWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4, + customizer: _.AssignCustomizer + ): LoDashExplicitAsyncWrapper; + assignWith(): LoDashExplicitAsyncWrapper; + assignWith(...otherArgs: any[]): LoDashExplicitAsyncWrapper; + at( + this: LoDashExplicitAsyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>, + ...props: _.PropertyPath[] + ): LoDashExplicitAsyncWrapper; + at( + this: LoDashExplicitAsyncWrapper, + ...props: Array<_.Many> + ): LoDashExplicitAsyncWrapper>; + create(properties?: U): LoDashExplicitAsyncWrapper; + defaults( + source: TSource + ): LoDashExplicitAsyncWrapper; + defaults( + source1: TSource1, + source2: TSource2 + ): LoDashExplicitAsyncWrapper; + defaults( + source1: TSource1, + source2: TSource2, + source3: TSource3 + ): LoDashExplicitAsyncWrapper; + defaults( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4 + ): LoDashExplicitAsyncWrapper; + defaults(): LoDashExplicitAsyncWrapper; + defaults(...sources: any[]): LoDashExplicitAsyncWrapper; + defaultsDeep(...sources: any[]): LoDashExplicitAsyncWrapper; + entries(this: LoDashExplicitAsyncWrapper<_.Dictionary | _.NumericDictionary>): LoDashExplicitAsyncWrapper>; + entries(): LoDashExplicitAsyncWrapper>; + entriesIn(this: LoDashExplicitAsyncWrapper<_.Dictionary | _.NumericDictionary>): LoDashExplicitAsyncWrapper>; + entriesIn(): LoDashExplicitAsyncWrapper>; + extend( + source: TSource + ): LoDashExplicitAsyncWrapper; + extend( + source1: TSource1, + source2: TSource2 + ): LoDashExplicitAsyncWrapper; + extend( + source1: TSource1, + source2: TSource2, + source3: TSource3 + ): LoDashExplicitAsyncWrapper; + extend( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4 + ): LoDashExplicitAsyncWrapper; + extend(): LoDashExplicitAsyncWrapper; + extend(...otherArgs: any[]): LoDashExplicitAsyncWrapper; + extendWith( + source: TSource, + customizer: _.AssignCustomizer + ): LoDashExplicitAsyncWrapper; + extendWith( + source1: TSource1, + source2: TSource2, + customizer: _.AssignCustomizer + ): LoDashExplicitAsyncWrapper; + extendWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + customizer: _.AssignCustomizer + ): LoDashExplicitAsyncWrapper; + extendWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4, + customizer: _.AssignCustomizer + ): LoDashExplicitAsyncWrapper; + extendWith(): LoDashExplicitAsyncWrapper; + extendWith(...otherArgs: any[]): LoDashExplicitAsyncWrapper; + findKey( + this: LoDashExplicitAsyncWrapper, + predicate?: _.ObjectIteratee + ): LoDashExplicitAsyncWrapper; + findLastKey( + this: LoDashExplicitAsyncWrapper, + predicate?: _.ObjectIteratee + ): LoDashExplicitAsyncWrapper; + functions(): LoDashExplicitAsyncWrapper; + functionsIn(): LoDashExplicitAsyncWrapper; + get( + path: TKey | [TKey] + ): LoDashExplicitAsyncWrapper; + get( + this: LoDashExplicitAsyncWrapper, + path: TKey | [TKey], + ): LoDashExplicitAsyncWrapper; + get( + this: LoDashExplicitAsyncWrapper, + path: TKey | [TKey], + defaultValue: TDefault + ): LoDashExplicitAsyncWrapper; + get( + this: LoDashExplicitAsyncWrapper<_.NumericDictionary>, + path: number + ): LoDashExplicitAsyncWrapper; + get( + this: LoDashExplicitAsyncWrapper<_.NumericDictionary | null | undefined>, + path: number + ): LoDashExplicitAsyncWrapper; + get( + this: LoDashExplicitAsyncWrapper<_.NumericDictionary | null | undefined>, + path: number, + defaultValue: TDefault + ): LoDashExplicitAsyncWrapper; + get( + this: LoDashExplicitAsyncWrapper, + path: _.PropertyPath, + defaultValue: TDefault + ): LoDashExplicitAsyncWrapper; + get( + this: LoDashExplicitAsyncWrapper, + path: _.PropertyPath + ): LoDashExplicitAsyncWrapper; + get( + path: _.PropertyPath, + defaultValue?: any + ): LoDashExplicitAsyncWrapper; + has(path: _.PropertyPath): LoDashExplicitAsyncWrapper; + hasIn(path: _.PropertyPath): LoDashExplicitAsyncWrapper; + invert(): LoDashExplicitAsyncWrapper<_.Dictionary>; + invertBy( + this: LoDashExplicitAsyncWrapper<_.List | _.Dictionary | _.NumericDictionary | null | undefined>, + interatee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + invertBy( + this: LoDashExplicitAsyncWrapper, + interatee?: _.ValueIteratee + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + invoke( + path: _.PropertyPath, + ...args: any[]): LoDashExplicitAsyncWrapper; + keys(): LoDashExplicitAsyncWrapper; + keysIn(): LoDashExplicitAsyncWrapper; + mapKeys( + this: LoDashExplicitAsyncWrapper<_.List | null | undefined>, + iteratee?: _.ListIteratee + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + mapKeys( + this: LoDashExplicitAsyncWrapper, + iteratee?: _.ObjectIteratee + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + mapValues( + this: LoDashExplicitAsyncWrapper, + callback: _.StringIterator + ): LoDashExplicitAsyncWrapper<_.NumericDictionary>; + mapValues( + this: LoDashExplicitAsyncWrapper<_.Dictionary | _.NumericDictionary | null | undefined>, + callback: _.DictionaryIterator + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + mapValues( + this: LoDashExplicitAsyncWrapper, + callback: _.ObjectIterator + ): LoDashExplicitAsyncWrapper<{ [P in keyof T]: TResult }>; + mapValues( + this: LoDashExplicitAsyncWrapper<_.Dictionary | _.NumericDictionary | null | undefined>, + iteratee: object + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + mapValues( + this: LoDashExplicitAsyncWrapper, + iteratee: object + ): LoDashExplicitAsyncWrapper<{ [P in keyof T]: boolean }>; + mapValues( + this: LoDashExplicitAsyncWrapper<_.Dictionary | _.NumericDictionary | null | undefined>, + iteratee: TKey + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + mapValues( + this: LoDashExplicitAsyncWrapper<_.Dictionary | _.NumericDictionary | null | undefined>, + iteratee: string + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + mapValues( + this: LoDashExplicitAsyncWrapper, + iteratee: string + ): LoDashExplicitAsyncWrapper<{ [P in keyof T]: any }>; + mapValues(this: LoDashExplicitAsyncWrapper): LoDashExplicitAsyncWrapper<_.NumericDictionary>; + mapValues(this: LoDashExplicitAsyncWrapper<_.Dictionary | _.NumericDictionary | null | undefined>): LoDashExplicitAsyncWrapper<_.Dictionary>; + mapValues(this: LoDashExplicitAsyncWrapper): LoDashExplicitAsyncWrapper; + mapValues(this: LoDashExplicitAsyncWrapper): LoDashExplicitAsyncWrapper<_.PartialObject>; + merge( + source: TSource + ): LoDashExplicitAsyncWrapper; + merge( + source1: TSource1, + source2: TSource2 + ): LoDashExplicitAsyncWrapper; + merge( + source1: TSource1, + source2: TSource2, + source3: TSource3 + ): LoDashExplicitAsyncWrapper; + merge( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4 + ): LoDashExplicitAsyncWrapper; + merge( + ...otherArgs: any[] + ): LoDashExplicitAsyncWrapper; + mergeWith( + source: TSource, + customizer: _.MergeWithCustomizer + ): LoDashExplicitAsyncWrapper; + mergeWith( + source1: TSource1, + source2: TSource2, + customizer: _.MergeWithCustomizer + ): LoDashExplicitAsyncWrapper; + mergeWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + customizer: _.MergeWithCustomizer + ): LoDashExplicitAsyncWrapper; + mergeWith( + source1: TSource1, + source2: TSource2, + source3: TSource3, + source4: TSource4, + customizer: _.MergeWithCustomizer + ): LoDashExplicitAsyncWrapper; + mergeWith( + ...otherArgs: any[] + ): LoDashExplicitAsyncWrapper; + omit( + this: LoDashExplicitAsyncWrapper, + ...paths: _.PropertyPath[] + ): LoDashExplicitAsyncWrapper; + omit( + this: LoDashExplicitAsyncWrapper, + ...paths: _.PropertyPath[] + ): LoDashExplicitAsyncWrapper<_.PartialObject>; + omitBy( + this: LoDashExplicitAsyncWrapper, + predicate: _.ValueKeyIteratee + ): LoDashExplicitAsyncWrapper<_.PartialObject>; + pick( + this: LoDashExplicitAsyncWrapper, + ...props: Array<_.Many> + ): LoDashExplicitAsyncWrapper>; + pick( + this: LoDashExplicitAsyncWrapper, + ...props: _.PropertyPath[] + ): LoDashExplicitAsyncWrapper<_.PartialObject>; + pickBy( + this: LoDashExplicitAsyncWrapper, + predicate?: _.ValueKeyIteratee + ): LoDashExplicitAsyncWrapper<_.PartialObject>; + result( + path: _.PropertyPath, + defaultValue?: TResult|((...args: any[]) => TResult) + ): LoDashExplicitAsyncWrapper; + set( + path: _.PropertyPath, + value: any + ): this; + set( + path: _.PropertyPath, + value: any + ): LoDashExplicitAsyncWrapper; + setWith( + path: _.PropertyPath, + value: any, + customizer?: _.SetWithCustomizer + ): this; + setWith( + path: _.PropertyPath, + value: any, + customizer?: _.SetWithCustomizer + ): LoDashExplicitAsyncWrapper; + toPairs(this: LoDashExplicitAsyncWrapper<_.Dictionary | _.NumericDictionary>): LoDashExplicitAsyncWrapper>; + toPairs(): LoDashExplicitAsyncWrapper>; + toPairsIn(this: LoDashExplicitAsyncWrapper<_.Dictionary | _.NumericDictionary>): LoDashExplicitAsyncWrapper>; + toPairsIn(): LoDashExplicitAsyncWrapper>; + transform( + this: LoDashExplicitAsyncWrapper, + iteratee: _.MemoVoidArrayIterator, + accumulator?: TResult[] + ): LoDashExplicitAsyncWrapper; + transform( + this: LoDashExplicitAsyncWrapper, + iteratee: _.MemoVoidArrayIterator>, + accumulator?: _.Dictionary + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + transform( + this: LoDashExplicitAsyncWrapper<_.Dictionary>, + iteratee: _.MemoVoidDictionaryIterator>, + accumulator?: _.Dictionary + ): LoDashExplicitAsyncWrapper<_.Dictionary>; + transform( + this: LoDashExplicitAsyncWrapper<_.Dictionary>, + iteratee: _.MemoVoidDictionaryIterator, + accumulator?: TResult[] + ): LoDashExplicitAsyncWrapper; + transform( + this: LoDashExplicitAsyncWrapper, + ): LoDashExplicitAsyncWrapper; + transform(): LoDashExplicitAsyncWrapper<_.Dictionary>; + unset(path: _.PropertyPath): LoDashExplicitAsyncWrapper; + update( + path: _.PropertyPath, + updater: (value: any) => any + ): LoDashExplicitAsyncWrapper; + updateWith( + path: _.PropertyPath, + updater: (oldValue: any) => any, + customizer?: _.SetWithCustomizer + ): this; + updateWith( + path: _.PropertyPath, + updater: (oldValue: any) => any, + customizer?: _.SetWithCustomizer + ): LoDashExplicitAsyncWrapper; + values(this: LoDashExplicitAsyncWrapper<_.Dictionary | _.NumericDictionary | _.List | null | undefined>): LoDashExplicitAsyncWrapper; + values(this: LoDashExplicitAsyncWrapper): LoDashExplicitAsyncWrapper>; + values(): LoDashExplicitAsyncWrapper; + valuesIn(this: LoDashExplicitAsyncWrapper<_.Dictionary | _.NumericDictionary | _.List | null | undefined>): LoDashExplicitAsyncWrapper; + valuesIn(this: LoDashExplicitAsyncWrapper): LoDashExplicitAsyncWrapper>; + chain(): this; + chain(): this; + plant(value: T): LoDashExplicitAsyncWrapper; + thru(interceptor: (value: TValue) => TResult): LoDashExplicitAsyncWrapper; + camelCase(): LoDashExplicitAsyncWrapper; + capitalize(): LoDashExplicitAsyncWrapper; + deburr(): LoDashExplicitAsyncWrapper; + endsWith( + target?: string, + position?: number + ): LoDashExplicitAsyncWrapper; + escape(): LoDashExplicitAsyncWrapper; + escapeRegExp(): LoDashExplicitAsyncWrapper; + kebabCase(): LoDashExplicitAsyncWrapper; + lowerCase(): LoDashExplicitAsyncWrapper; + lowerFirst(): LoDashExplicitAsyncWrapper; + pad( + length?: number, + chars?: string + ): LoDashExplicitAsyncWrapper; + padEnd( + length?: number, + chars?: string + ): LoDashExplicitAsyncWrapper; + padStart( + length?: number, + chars?: string + ): LoDashExplicitAsyncWrapper; + parseInt(radix?: number): LoDashExplicitAsyncWrapper; + repeat(n?: number): LoDashExplicitAsyncWrapper; + replace( + pattern: RegExp | string, + replacement: _.ReplaceFunction | string + ): LoDashExplicitAsyncWrapper; + replace( + replacement: _.ReplaceFunction | string + ): LoDashExplicitAsyncWrapper; + snakeCase(): LoDashExplicitAsyncWrapper; + split( + separator?: RegExp|string, + limit?: number + ): LoDashExplicitAsyncWrapper; + startCase(): LoDashExplicitAsyncWrapper; + startsWith( + target?: string, + position?: number + ): LoDashExplicitAsyncWrapper; + template(options?: _.TemplateOptions): LoDashExplicitAsyncWrapper<_.TemplateExecutor>; + toLower(): LoDashExplicitAsyncWrapper; + toUpper(): LoDashExplicitAsyncWrapper; + trim(chars?: string): LoDashExplicitAsyncWrapper; + trimEnd(chars?: string): LoDashExplicitAsyncWrapper; + trimStart(chars?: string): LoDashExplicitAsyncWrapper; + truncate(options?: _.TruncateOptions): LoDashExplicitAsyncWrapper; + unescape(): LoDashExplicitAsyncWrapper; + upperCase(): LoDashExplicitAsyncWrapper; + upperFirst(): LoDashExplicitAsyncWrapper; + words(pattern?: string|RegExp): LoDashExplicitAsyncWrapper; + attempt(...args: any[]): LoDashExplicitAsyncWrapper; + conforms(this: LoDashExplicitAsyncWrapper<_.ConformsPredicateObject>): LoDashExplicitAsyncWrapper<(value: T) => boolean>; + constant(): LoDashExplicitAsyncWrapper<() => TValue>; + defaultTo(this: LoDashExplicitAsyncWrapper, defaultValue: T): LoDashExplicitAsyncWrapper; + defaultTo( + this: LoDashExplicitAsyncWrapper, + defaultValue: TDefault + ): LoDashExplicitAsyncWrapper; + // 0-argument first function + flow(this: LoDashExplicitAsyncWrapper<() => R1>, f2: (a: R1) => R2): LoDashExplicitAsyncWrapper<() => R2>; + flow(this: LoDashExplicitAsyncWrapper<() => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3): LoDashExplicitAsyncWrapper<() => R3>; + flow(this: LoDashExplicitAsyncWrapper<() => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): LoDashExplicitAsyncWrapper<() => R4>; + flow(this: LoDashExplicitAsyncWrapper<() => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): LoDashExplicitAsyncWrapper<() => R5>; + flow(this: LoDashExplicitAsyncWrapper<() => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): LoDashExplicitAsyncWrapper<() => R6>; + flow(this: LoDashExplicitAsyncWrapper<() => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): LoDashExplicitAsyncWrapper<() => R7>; + flow(this: LoDashExplicitAsyncWrapper<() => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7, ...funcs: Array<_.Many<(a: any) => any>>): LoDashExplicitAsyncWrapper<() => any>; + // 1-argument first function + flow(this: LoDashExplicitAsyncWrapper<(a1: A1) => R1>, f2: (a: R1) => R2): LoDashExplicitAsyncWrapper<(a1: A1) => R2>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3): LoDashExplicitAsyncWrapper<(a1: A1) => R3>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): LoDashExplicitAsyncWrapper<(a1: A1) => R4>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): LoDashExplicitAsyncWrapper<(a1: A1) => R5>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): LoDashExplicitAsyncWrapper<(a1: A1) => R6>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): LoDashExplicitAsyncWrapper<(a1: A1) => R7>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7, ...funcs: Array<_.Many<(a: any) => any>>): LoDashExplicitAsyncWrapper<(a1: A1) => any>; + // 2-argument first function + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R1>, f2: (a: R1) => R2): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R2>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R3>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R4>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R5>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R6>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R7>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7, ...funcs: Array<_.Many<(a: any) => any>>): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => any>; + // 3-argument first function + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R1>, f2: (a: R1) => R2): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R2>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R3>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R4>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R5>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R6>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R7>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7, ...funcs: Array<_.Many<(a: any) => any>>): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => any>; + // 4-argument first function + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R1>, f2: (a: R1) => R2): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R2>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R3>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R4>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R5>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R6>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R7>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7, ...funcs: Array<_.Many<(a: any) => any>>): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => any>; + // any-argument first function + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R1>, f2: (a: R1) => R2): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R2>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R3>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R4>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R5>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R6>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R7>; + flow(this: LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => R1>, f2: (a: R1) => R2, f3: (a: R2) => R3, f4: (a: R3) => R4, f5: (a: R4) => R5, f6: (a: R5) => R6, f7: (a: R6) => R7, ...funcs: Array<_.Many<(a: any) => any>>): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4, ...args: any[]) => any>; + flow(this: LoDashExplicitAsyncWrapper<(...args: any[]) => any>, funcs: Array<_.Many<(a: any) => any>>): LoDashExplicitAsyncWrapper<(...args: any[]) => any>; + // 0-argument first function + flowRight(this: LoDashExplicitAsyncWrapper<(a: R1) => R2>, f1: () => R1): LoDashExplicitAsyncWrapper<() => R2>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R2) => R3>, f2: (a: R1) => R2, f1: () => R1): LoDashExplicitAsyncWrapper<() => R3>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R3) => R4>, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: () => R1): LoDashExplicitAsyncWrapper<() => R4>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R4) => R5>, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: () => R1): LoDashExplicitAsyncWrapper<() => R5>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R5) => R6>, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: () => R1): LoDashExplicitAsyncWrapper<() => R6>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R6) => R7>, f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: () => R1): LoDashExplicitAsyncWrapper<() => R7>; + // 1-argument first function + flowRight(this: LoDashExplicitAsyncWrapper<(a: R1) => R2>, f1: (a1: A1) => R1): LoDashExplicitAsyncWrapper<(a1: A1) => R2>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R2) => R3>, f2: (a: R1) => R2, f1: (a1: A1) => R1): LoDashExplicitAsyncWrapper<(a1: A1) => R3>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R3) => R4>, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1) => R1): LoDashExplicitAsyncWrapper<(a1: A1) => R4>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R4) => R5>, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1) => R1): LoDashExplicitAsyncWrapper<(a1: A1) => R5>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R5) => R6>, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1) => R1): LoDashExplicitAsyncWrapper<(a1: A1) => R6>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R6) => R7>, f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1) => R1): LoDashExplicitAsyncWrapper<(a1: A1) => R7>; + // 2-argument first function + flowRight(this: LoDashExplicitAsyncWrapper<(a: R1) => R2>, f1: (a1: A1, a2: A2) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R2>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R2) => R3>, f2: (a: R1) => R2, f1: (a1: A1, a2: A2) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R3>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R3) => R4>, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R4>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R4) => R5>, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R5>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R5) => R6>, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R6>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R6) => R7>, f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2) => R7>; + // 3-argument first function + flowRight(this: LoDashExplicitAsyncWrapper<(a: R1) => R2>, f1: (a1: A1, a2: A2, a3: A3) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R2>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R2) => R3>, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R3>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R3) => R4>, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R4>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R4) => R5>, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R5>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R5) => R6>, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R6>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R6) => R7>, f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3) => R7>; + // 4-argument first function + flowRight(this: LoDashExplicitAsyncWrapper<(a: R1) => R2>, f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R2>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R2) => R3>, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R3>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R3) => R4>, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R4>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R4) => R5>, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R5>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R5) => R6>, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R6>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R6) => R7>, f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (a1: A1, a2: A2, a3: A3, a4: A4) => R1): LoDashExplicitAsyncWrapper<(a1: A1, a2: A2, a3: A3, a4: A4) => R7>; + // any-argument first function + flowRight(this: LoDashExplicitAsyncWrapper<(a: R1) => R2>, f1: (...args: any[]) => R1): LoDashExplicitAsyncWrapper<(...args: any[]) => R2>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R1) => R2>, f2: (a: R1) => R2, f1: (...args: any[]) => R1): LoDashExplicitAsyncWrapper<(...args: any[]) => R3>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R1) => R2>, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: any[]) => R1): LoDashExplicitAsyncWrapper<(...args: any[]) => R4>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R1) => R2>, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: any[]) => R1): LoDashExplicitAsyncWrapper<(...args: any[]) => R5>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R1) => R2>, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: any[]) => R1): LoDashExplicitAsyncWrapper<(...args: any[]) => R6>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: R1) => R2>, f6: (a: R5) => R6, f5: (a: R4) => R5, f4: (a: R3) => R4, f3: (a: R2) => R3, f2: (a: R1) => R2, f1: (...args: any[]) => R1): LoDashExplicitAsyncWrapper<(...args: any[]) => R7>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: any) => any>, f6: (a: any) => any, f5: (a: any) => any, f4: (a: any) => any, f3: (a: any) => any, f2: (a: any) => any, f1: () => any, ...funcs: Array<_.Many<(...args: any[]) => any>>): LoDashExplicitAsyncWrapper<(...args: any[]) => any>; + flowRight(this: LoDashExplicitAsyncWrapper<(a: any) => any>, funcs: Array<_.Many<(...args: any[]) => any>>): LoDashExplicitAsyncWrapper<(...args: any[]) => any>; + identity(): this; + iteratee any>( + this: LoDashExplicitAsyncWrapper + ): LoDashExplicitAsyncWrapper; + matches(): LoDashExplicitAsyncWrapper<(value: V) => boolean>; + matchesProperty( + srcValue: SrcValue + ): LoDashExplicitAsyncWrapper<(value: any) => boolean>; + matchesProperty( + srcValue: SrcValue + ): LoDashExplicitAsyncWrapper<(value: Value) => boolean>; + method(...args: any[]): LoDashExplicitAsyncWrapper<(object: any) => any>; + methodOf( + ...args: any[] + ): LoDashExplicitAsyncWrapper<(path: _.PropertyPath) => any>; + mixin( + source: _.Dictionary<(...args: any[]) => any>, + options?: _.MixinOptions + ): this; + mixin( + options?: _.MixinOptions + ): LoDashExplicitAsyncWrapper<_.LoDashStatic>; + noConflict(): LoDashExplicitAsyncWrapper; + noop(...args: any[]): LoDashExplicitAsyncWrapper; + nthArg(): LoDashExplicitAsyncWrapper<(...args: any[]) => any>; + over( + this: LoDashExplicitAsyncWrapper<_.Many<(...args: any[]) => TResult>>, + ...iteratees: Array<_.Many<(...args: any[]) => TResult>> + ): LoDashExplicitAsyncWrapper<(...args: any[]) => TResult[]>; + overEvery(...predicates: Array<_.Many<(...args: T[]) => boolean>>): LoDashExplicitAsyncWrapper<(...args: T[]) => boolean>; + overSome(...predicates: Array<_.Many<(...args: T[]) => boolean>>): LoDashExplicitAsyncWrapper<(...args: T[]) => boolean>; + property(): LoDashExplicitAsyncWrapper<(obj: TObj) => TResult>; + propertyOf(): LoDashExplicitAsyncWrapper<(path: _.PropertyPath) => any>; + range( + end?: number, + step?: number + ): LoDashExplicitAsyncWrapper; + rangeRight( + end?: number, + step?: number + ): LoDashExplicitAsyncWrapper; + stubArray(): LoDashExplicitAsyncWrapper; + stubFalse(): LoDashExplicitAsyncWrapper; + stubObject(): LoDashExplicitAsyncWrapper; + stubString(): LoDashExplicitAsyncWrapper; + stubTrue(): LoDashExplicitAsyncWrapper; + times( + iteratee: (num: number) => TResult + ): LoDashExplicitAsyncWrapper; + times(): LoDashExplicitAsyncWrapper; + toPath(): LoDashExplicitAsyncWrapper; + uniqueId(): LoDashExplicitAsyncWrapper; + } +} diff --git a/types/lowdb/index.d.ts b/types/lowdb/index.d.ts index bab0116404..a8146ef8a2 100644 --- a/types/lowdb/index.d.ts +++ b/types/lowdb/index.d.ts @@ -1,83 +1,77 @@ -// Type definitions for Lowdb 1.0.0 +// Type definitions for Lowdb 1.0 // Project: https://github.com/typicode/lowdb // Definitions by: typicode // Bazyli Brzóska // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.6 -import { LoDashExplicitWrapper, LoDashStatic } from "lodash"; +/// + +import { LoDashStatic } from "lodash"; declare let Lowdb: Lowdb.lowdb; export = Lowdb; declare namespace Lowdb { - export type AdapterOptions = { + interface AdapterOptions { defaultValue?: SchemaT; serialize?: (data: SchemaT) => string; deserialize?: (serializedData: string) => SchemaT; - }; + } - export interface BaseAdapter - extends AdapterOptions { + interface BaseAdapter extends AdapterOptions { readonly "@@reference": SchemaT; - new ( + new ( source: string, options?: AdapterOptions ): BaseAdapter; source: string; } - export interface AdapterSync - extends BaseAdapter { - new ( + interface AdapterSync extends BaseAdapter { + new ( source: string, options?: AdapterOptions ): AdapterSync; - readonly "@@isAsync": False; - write(state: Object): void; + write(state: object): void; } - export interface AdapterAsync - extends BaseAdapter { - new ( + interface AdapterAsync extends BaseAdapter { + new ( source: string, options?: AdapterOptions ): AdapterAsync; - readonly "@@isAsync": True; - write(state: Object): Promise; + write(state: object): Promise; } - export type Adapter = - | AdapterSync - | AdapterAsync; - - export interface LowdbBase< - SchemaT extends {}, - AdapterT extends Adapter - > { - read: () => Wrapper; + interface LowdbBase { getState: () => SchemaT; setState: (state: SchemaT) => this; } - export interface Lowdb> - extends LowdbBase, - LoDashExplicitWrapper { + interface LowdbSync extends LowdbBase, LoDashExplicitSyncWrapper { _: LoDashStatic; + read: () => this; /** * @description Be careful: This function overwrites the whole database. */ - write(returnValue?: T): Wrapper; + write(returnValue?: T): T; } - export interface LowdbFp< - SchemaT extends {} = any, - AdapterT extends Adapter = Adapter - > extends LowdbBase { + interface LowdbAsync extends LowdbBase, LoDashExplicitAsyncWrapper { + _: LoDashStatic; + read: () => Promise; /** * @description Be careful: This function overwrites the whole database. */ - write(returnValue?: T): Wrapper; + write(returnValue?: T): Promise; + } + + interface LowdbFpSync extends LowdbBase { + /** + * @description Be careful: This function overwrites the whole database. + */ + write(returnValue?: T): T; /** * @description Returns a function that allows you to access/modify the database at a given path. * @example @@ -90,11 +84,11 @@ declare namespace Lowdb { ( path: TKey | [TKey], defaultValue?: SchemaT[TKey] - ): FpReturn; + ): FpReturnSync; ( path: [TKey, TSubKey], defaultValue?: SchemaT[TKey][TSubKey] - ): FpReturn; + ): FpReturnSync; < TKey extends keyof SchemaT, TSubKey extends keyof SchemaT[TKey], @@ -102,7 +96,7 @@ declare namespace Lowdb { >( path: [TKey, TSubKey, TSubKey2], defaultValue?: SchemaT[TKey][TSubKey][TSubKey2] - ): FpReturn; + ): FpReturnSync; < TKey extends keyof SchemaT, TSubKey extends keyof SchemaT[TKey], @@ -111,7 +105,7 @@ declare namespace Lowdb { >( path: [TKey, TSubKey, TSubKey2, TSubKey3], defaultValue?: SchemaT[TKey][TSubKey][TSubKey2][TSubKey3] - ): FpReturn; + ): FpReturnSync; < TKey extends keyof SchemaT, TSubKey extends keyof SchemaT[TKey], @@ -121,10 +115,63 @@ declare namespace Lowdb { >( path: [TKey, TSubKey, TSubKey2, TSubKey3, TSubKey4], defaultValue?: SchemaT[TKey][TSubKey][TSubKey2][TSubKey3][TSubKey4] - ): FpReturn; - (path: string | Array, defaultValue?: T): T; + ): FpReturnSync; + (path: string | string[], defaultValue?: T): FpReturnSync; } - export interface FpReturn { + + interface LowdbFpAsync extends LowdbBase { + /** + * @description Be careful: This function overwrites the whole database. + */ + write(returnValue?: T): Promise; + /** + * @description Returns a function that allows you to access/modify the database at a given path. + * @example + * ```js + * const posts = db('posts') + * const firstPost = posts(all => all[0]) + * posts.write((allPosts) => [...allPosts, {title: 'Yup!'}]) + * ``` + */ + ( + path: TKey | [TKey], + defaultValue?: SchemaT[TKey] + ): FpReturnAsync; + ( + path: [TKey, TSubKey], + defaultValue?: SchemaT[TKey][TSubKey] + ): FpReturnAsync; + < + TKey extends keyof SchemaT, + TSubKey extends keyof SchemaT[TKey], + TSubKey2 extends keyof SchemaT[TKey][TSubKey] + >( + path: [TKey, TSubKey, TSubKey2], + defaultValue?: SchemaT[TKey][TSubKey][TSubKey2] + ): FpReturnAsync; + < + TKey extends keyof SchemaT, + TSubKey extends keyof SchemaT[TKey], + TSubKey2 extends keyof SchemaT[TKey][TSubKey], + TSubKey3 extends keyof SchemaT[TKey][TSubKey][TSubKey2] + >( + path: [TKey, TSubKey, TSubKey2, TSubKey3], + defaultValue?: SchemaT[TKey][TSubKey][TSubKey2][TSubKey3] + ): FpReturnAsync; + < + TKey extends keyof SchemaT, + TSubKey extends keyof SchemaT[TKey], + TSubKey2 extends keyof SchemaT[TKey][TSubKey], + TSubKey3 extends keyof SchemaT[TKey][TSubKey][TSubKey2], + TSubKey4 extends keyof SchemaT[TKey][TSubKey][TSubKey2][TSubKey3] + >( + path: [TKey, TSubKey, TSubKey2, TSubKey3, TSubKey4], + defaultValue?: SchemaT[TKey][TSubKey][TSubKey2][TSubKey3][TSubKey4] + ): FpReturnAsync; + (path: string | string[], defaultValue?: T): FpReturnAsync; + } + + interface FpReturnBase { /** * Execute a series of functions on the data at a given path. * Result of previous function is the input of the next one. @@ -168,7 +215,8 @@ declare namespace Lowdb { ] ): R7; (funcs: Array<(a: any) => any>): any; - + } + interface FpReturnSync extends FpReturnBase { /** * @description Writes the change to the database, based on the callback's return value. * @example @@ -176,198 +224,37 @@ declare namespace Lowdb { * posts.write((allPosts) => [...allPosts, {title: 'Yup!'}]) * ``` */ - write(f1: (a1: PathT) => R1): Wrapper; + write(f1: (a1: PathT) => R1): R1; + } + interface FpReturnAsync extends FpReturnBase { + /** + * @description Writes the change to the database, based on the callback's return value. + * @example + * ```js + * posts.write((allPosts) => [...allPosts, {title: 'Yup!'}]) + * ``` + */ + write(f1: (a1: PathT) => R1): Promise; } - export type lowdb = < - SchemaT extends AdapterT[ReferenceProperty], - AdapterT extends Adapter - >( - adapter: AdapterT - ) => If< - AdapterT[AsyncProperty], - Promise, AdapterT>>, - Lowdb, AdapterT> - >; + interface lowdb { + (adapter: AdapterT): Promise>; + (adapter: AdapterT): LowdbSync; + } - export type lowdbFp = < - SchemaT extends AdapterT[ReferenceProperty], - AdapterT extends Adapter - >( - adapter: AdapterT - ) => If< - AdapterT[AsyncProperty], - Promise>, - LowdbFp - >; + interface lowdbFp { + (adapter: AdapterT): Promise>; + (adapter: AdapterT): LowdbFpSync; + } - export type Wrapper = WrapInPromiseIfTrue< - T, - AdapterT[AsyncProperty] - >; -} - -/** - * lodash augmentation is necessary in order not to duplicate the whole lodash definition - * it's mostly harmless, aside from the fact that 'write' becomes a method in a lodash.chain() - */ -declare module "lodash" { - interface LoDashExplicitWrapper { - write(): WrapInPromiseIfAsyncTag>; - // override lodash's methods only if source tag is present: - value(): GetReferenceTypeIfDefined; + // Note: this interface is augmented in _lodash.d.ts + interface LoDashExplicitSyncWrapper extends _.LoDashWrapper { + write(): TValue; + } + // Note: this interface is augmented in _lodash.d.ts + interface LoDashExplicitAsyncWrapper extends _.LoDashWrapper { + write(): Promise; } } -// utility types: -type WrapInPromiseIfTrue = If, T>; type ReferenceProperty = "@@reference"; -/** - * Hidden source property for resolving to the correct type. - * It is doubly nested so that we retain all nullability information - */ -type SourceReference = { - readonly "@@reference"?: { readonly "@@reference": T }; -}; -type GetReferenceParent> = NonNull< - U[keyof U & ReferenceProperty] ->; -type GetDefinedReferenceType< - TValue, - SourceParent = GetReferenceParent -> = SourceParent[keyof SourceParent & ReferenceProperty]; -type AsyncProperty = "@@isAsync"; -type AsyncTag = { readonly "@@reference"?: { readonly "@@isAsync"?: true } }; -type SyncTag = {}; -type HasAsyncTag> = If< - HasReferenceProperty, - UnionHasKey, - False ->; -type HasReferenceProperty = UnionHasKey, ReferenceProperty>; -type WrapInPromiseIfAsyncTag< - TaggedT, - WrappedT = GetReferenceTypeIfDefined -> = WrapInPromiseIfTrue>; - -/** - * Resolves the hidden source type - * while preserving nullability as much as possible - */ -type GetReferenceType> = If< - IsEmptyType, - Source | undefined, - Source ->; - -type GetReferenceTypeIfDefined = If< - HasReferenceProperty, - GetReferenceType, - T ->; - -type RecursivelyExtend = If< - IsArrayType, - MapArrayType, AddT>, - MapScalarOrObjectType -> & - SourceReference; - -type MapScalarOrObjectType = If< - IsScalarOrInstance, - T, - MapObjectWithPossibleArrays & SourceReference & AddT ->; - -type MapObjectWithPossibleArrays = { - [P in keyof T]: If< - IsArrayType, - MapArrayType, AddT> & SourceReference, - MapScalarOrObjectType - > -}; - -type MapArrayType, AddT, T = Arr[-1]> = Array< - MapObjectWithPossibleArrays & SourceReference & AddT -> & - AddT; - -////////////////////////////////////////// -// generic utils (some from https://github.com/tycho01/typical/): - -type False = "0"; -type True = "1"; -type Bool = True | False; -type If = { 1: Then; 0: Else }[Cond]; - -type Obj = { [k: string]: T }; - -type And = ({ 1: { 1: "1" } & Obj<"0"> } & Obj< - Obj<"0"> ->)[A][B]; - -type UnionHasKey = ({ - [S in Union]: "1" -} & - Obj<"0">)[K]; - -type Indeterminate = And< - UnionHasKey, - UnionHasKey ->; - -type Not = { "1": "0"; "0": "1" }[T]; - -type Determinate = Not>; - -type DefinitelyYes = And>; - -type UnionContained = DefinitelyYes< - ({ [P in U]: "1" } & Obj<"0">)[T | U] ->; - -type UnionEmpty = And< - UnionContained, - UnionContained ->; - -type UnionToObject = { [K in Keys]: K }; - -type Keyed = { [K in keyof T]: K }; - -type KeyedSafe = Keyed & Obj; - -type IntersectionUnions = KeyedSafe< - UnionToObject ->[Big]; -type UnionsOverlap = Not< - UnionEmpty> ->; - -type DiffUnion = ({ [P in T]: P } & - { [P in U]: never } & { [k: string]: never })[T]; - -type ObjectHasKey = UnionHasKey; - -type ArrayPrototypeProperties = DiffUnion< - keyof Array, - "toString" | "toLocaleString" ->; -type IsArrayType = DefinitelyYes>; -/** - * either: undefined, never, null or {} - * can also be used to check if one union contains one of the above - **/ -type IsEmptyType = UnionEmpty; - -/** - * false for: undefined, interfaces - * true for: Array, boolean, number, string, Object - */ -type IsScalarOrInstance = ObjectHasKeySafe; -type ObjectHasKeySafe = UnionsOverlap; -type NonNull = T & {}; - -interface List { - readonly [n: number]: T; -} diff --git a/types/lowdb/lowdb-tests.ts b/types/lowdb/lowdb-tests.ts index d466681ab4..45662ce342 100644 --- a/types/lowdb/lowdb-tests.ts +++ b/types/lowdb/lowdb-tests.ts @@ -1,12 +1,14 @@ import * as low from "lowdb"; import * as lowfp from "lowdb/lib/fp"; +import * as Base from "lowdb/adapters/Base"; import * as FileSync from "lowdb/adapters/FileSync"; import * as FileAsync from "lowdb/adapters/FileAsync"; import * as LocalStorage from "lowdb/adapters/LocalStorage"; +import { find, filter, random, concat, sortBy, take, set } from "lodash/fp"; -const adapterSync: low.AdapterSync<{}> = new FileSync("db.json"); -const adapterAsync: low.AdapterAsync<{}> = new FileAsync("db.json"); -const db = low(adapterSync); +const adapterSync = new FileSync("db.json"); +const adapterAsync = new FileAsync("db.json"); +const db = low(adapterSync); const write: DbSchema = db.defaults({ posts: [] }).write(); @@ -15,25 +17,16 @@ const result: Post[] = db .push({ title: "hello", views: 123 }) .value(); -const teste = db.get("user").value(); -const post: Post | undefined = db - .get("posts") +// $ExpectType Post | undefined +db.get("posts") .find({ id: 123 }) .value(); - -// $ExpectError -const postAssertWithUndefined: Post = db - .get("posts") - .find({ id: 123 }) - .value(); - -// $ExpectError -const postAssertWithUndefined2: Post = db - .get("posts") +// $ExpectType Post | undefined +db.get("posts") .find({ id: 123 }) .write(); -low(adapterAsync).then(dbAsync => { +low(adapterAsync).then(dbAsync => { const writeAction: Promise = dbAsync .get("posts") .push({ title: "async hello" }) @@ -76,11 +69,10 @@ async () => { const dbSync = low(adapterSync); const dbAsync = await low(adapterAsync); - const dbAssertTypeSync: low.Lowdb = dbSync; - const dbAssertTypeAsync: low.Lowdb< - ExampleSchema, - typeof adapterAsync - > = dbAsync; + // $ExpectType LowdbSync + dbSync; + // $ExpectType LowdbAsync + dbAsync; const xSync: ExampleSchema = dbSync .defaults({ posts: [{ name: "baz" }] }) @@ -100,7 +92,9 @@ async () => { .push({ name: "hello" }) .write(); - const dbPromise = low(adapterAsync); + const otherAdapterAsync = new FileAsync("db.json"); + + const dbPromise = low(otherAdapterAsync); const db = await dbPromise; const nested: OtherSchema["nested"] = db.get("nested").value(); @@ -124,37 +118,32 @@ const weDidNotBreakLodash: ExampleSchema["posts"] = lodashChain const adapterLS = new LocalStorage("test.json"); const dbFP = lowfp(adapterLS); // Get posts - const postsFP: low.FpReturn> = dbFP( - "posts" - ); + const postsFP = dbFP("posts"); // replace posts with a new array resulting from concat // and persist database const write: Post[] = postsFP.write( - concat({ title: "lowdb is awesome", views: random(0, 5) }) + concat({ title: "lowdb is awesome", views: random(0, 5) }) ); // Find post by id - const post: Post = postsFP(find({ id: 1 })); + const post: Post | undefined = postsFP(find({ id: 1 })); // Find top 5 fives posts const popular: Post[] = postsFP([ - sortBy("views") as PostsAction, + sortBy("views") as PostsAction, take(5) as PostsAction ]); - const filtered: Post[] = dbFP("posts")(filter({ published: true })); - const writeAction: Post[] = dbFP("posts").write(concat({ id: "123" })); - const writeAction2: string = dbFP(["user", "name"]).write(set("typicode")); + const filtered: Post[] = dbFP("posts")(filter({ published: true })); + const writeAction: Post[] = dbFP("posts").write(concat({ id: 123 })); + const writeAction2: string = dbFP(["user", "name"]).write(() => "typicode"); async () => { const adapterAsync = new FileAsync("test.json"); const dbAsyncPromise = lowfp(adapterAsync); const dbAsync = await dbAsyncPromise; - const postsWithDefault: low.FpReturn< - Post[], - low.AdapterAsync - > = dbAsync("posts", [{ title: "baz" }] as Post[]); + const postsWithDefault = dbAsync("posts", [{ title: "baz" }] as Post[]); const func: Promise = postsWithDefault.write(post => [ ...post, @@ -165,16 +154,8 @@ const weDidNotBreakLodash: ExampleSchema["posts"] = lodashChain type PostsAction = (posts: Post[]) => Post[]; }; -declare function find(a: B): (arr: A[]) => A; -declare function filter(a: B): (arr: A[]) => A[]; -declare function random(a: number, b: number): number; -declare function concat(a: any): (arr: A) => A; -declare function sortBy(a: any): (arr: A) => A; -declare function take(a: A): (arr: A) => A; -declare function set(a: A): (val: A) => A; - interface DbSchema { - posts: Array; + posts: Post[]; user: { name: string; }; @@ -184,7 +165,7 @@ interface Post { title?: string; views?: number; id?: number; - published?: boolean | undefined; + published?: boolean; tuple?: [boolean, number]; } diff --git a/types/lowdb/tslint.json b/types/lowdb/tslint.json index a41bf5d19a..dfea11be1a 100644 --- a/types/lowdb/tslint.json +++ b/types/lowdb/tslint.json @@ -1,79 +1,6 @@ { "extends": "dtslint/dt.json", "rules": { - "adjacent-overload-signatures": false, - "array-type": false, - "arrow-return-shorthand": false, - "ban-types": false, - "callable-types": false, - "comment-format": false, - "dt-header": false, - "eofline": false, - "export-just-namespace": false, - "import-spacing": false, - "interface-name": false, - "interface-over-type-literal": false, - "jsdoc-format": false, - "max-line-length": false, - "member-access": false, - "new-parens": false, - "no-any-union": false, - "no-boolean-literal-compare": false, - "no-conditional-assignment": false, - "no-consecutive-blank-lines": false, - "no-construct": false, - "no-declare-current-package": false, - "no-duplicate-imports": false, - "no-duplicate-variable": false, - "no-empty-interface": false, - "no-for-in-array": false, - "no-inferrable-types": false, - "no-internal-module": false, - "no-irregular-whitespace": false, - "no-mergeable-namespace": false, - "no-misused-new": false, - "no-namespace": false, - "no-object-literal-type-assertion": false, - "no-padding": false, - "no-redundant-jsdoc": false, - "no-redundant-jsdoc-2": false, - "no-redundant-undefined": false, - "no-reference-import": false, - "no-relative-import-in-test": false, - "no-self-import": false, - "no-single-declare-module": false, - "no-string-throw": false, - "no-unnecessary-callback-wrapper": false, - "no-unnecessary-class": false, - "no-unnecessary-generics": false, - "no-unnecessary-qualifier": false, - "no-unnecessary-type-assertion": false, - "no-useless-files": false, - "no-var-keyword": false, - "no-var-requires": false, - "no-void-expression": false, - "no-trailing-whitespace": false, - "object-literal-key-quotes": false, - "object-literal-shorthand": false, - "one-line": false, - "one-variable-per-declaration": false, - "only-arrow-functions": false, - "prefer-conditional-expression": false, - "prefer-const": false, - "prefer-declare-function": false, - "prefer-for-of": false, - "prefer-method-signature": false, - "prefer-template": false, - "radix": false, - "semicolon": false, - "space-before-function-paren": false, - "space-within-parens": false, - "strict-export-declare-modifiers": false, - "trim-file": false, - "triple-equals": false, - "typedef-whitespace": false, - "unified-signatures": false, - "void-return": false, - "whitespace": false + "no-misused-new": false } }