import _ = require("../index"); declare module "../index" { // assign interface LoDashStatic { /** * Assigns own enumerable properties of source objects to the destination * object. Source objects are applied from left to right. Subsequent sources * overwrite property assignments of previous sources. * * **Note:** This method mutates `object` and is loosely based on * [`Object.assign`](https://mdn.io/Object/assign). * * @category Object * @param object The destination object. * @param [sources] The source objects. * @returns Returns `object`. * @example * * function Foo() { * this.c = 3; * } * * function Bar() { * this.e = 5; * } * * Foo.prototype.d = 4; * Bar.prototype.f = 6; * * _.assign({ 'a': 1 }, new Foo, new Bar); * // => { 'a': 1, 'c': 3, 'e': 5 } */ assign( object: TObject, source: TSource ): TObject & TSource; /** * @see assign */ assign( object: TObject, source1: TSource1, source2: TSource2 ): TObject & TSource1 & TSource2; /** * @see assign */ assign( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3 ): TObject & TSource1 & TSource2 & TSource3; /** * @see assign */ assign( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4 ): TObject & TSource1 & TSource2 & TSource3 & TSource4; /** * @see _.assign */ assign(object: TObject): TObject; /** * @see _.assign */ assign( object: any, ...otherArgs: any[] ): any; } interface LoDashImplicitWrapper { /** * @see _.assign */ assign( source: TSource ): LoDashImplicitWrapper; /** * @see assign */ assign( source1: TSource1, source2: TSource2 ): LoDashImplicitWrapper; /** * @see assign */ assign( source1: TSource1, source2: TSource2, source3: TSource3 ): LoDashImplicitWrapper; /** * @see assign */ assign( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4 ): LoDashImplicitWrapper; /** * @see _.assign */ assign(): LoDashImplicitWrapper; /** * @see _.assign */ assign(...otherArgs: any[]): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.assign */ assign( source: TSource ): LoDashExplicitWrapper; /** * @see assign */ assign( source1: TSource1, source2: TSource2 ): LoDashExplicitWrapper; /** * @see assign */ assign( source1: TSource1, source2: TSource2, source3: TSource3 ): LoDashExplicitWrapper; /** * @see assign */ assign( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4 ): LoDashExplicitWrapper; /** * @see _.assign */ assign(): LoDashExplicitWrapper; /** * @see _.assign */ assign(...otherArgs: any[]): LoDashExplicitWrapper; } // assignIn interface LoDashStatic { /** * This method is like `_.assign` except that it iterates over own and * inherited source properties. * * **Note:** This method mutates `object`. * * @alias extend * @category Object * @param object The destination object. * @param [sources] The source objects. * @returns Returns `object`. * @example * * function Foo() { * this.b = 2; * } * * function Bar() { * this.d = 4; * } * * Foo.prototype.c = 3; * Bar.prototype.e = 5; * * _.assignIn({ 'a': 1 }, new Foo, new Bar); * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5 } */ assignIn( object: TObject, source: TSource ): TObject & TSource; /** * @see assignIn */ assignIn( object: TObject, source1: TSource1, source2: TSource2 ): TObject & TSource1 & TSource2; /** * @see assignIn */ assignIn( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3 ): TObject & TSource1 & TSource2 & TSource3; /** * @see assignIn */ assignIn( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4 ): TObject & TSource1 & TSource2 & TSource3 & TSource4; /** * @see _.assignIn */ assignIn(object: TObject): TObject; /** * @see _.assignIn */ assignIn( object: any, ...otherArgs: any[] ): TResult; } interface LoDashImplicitWrapper { /** * @see _.assignIn */ assignIn( source: TSource ): LoDashImplicitWrapper; /** * @see assignIn */ assignIn( source1: TSource1, source2: TSource2 ): LoDashImplicitWrapper; /** * @see assignIn */ assignIn( source1: TSource1, source2: TSource2, source3: TSource3 ): LoDashImplicitWrapper; /** * @see assignIn */ assignIn( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4 ): LoDashImplicitWrapper; /** * @see _.assignIn */ assignIn(): LoDashImplicitWrapper; /** * @see _.assignIn */ assignIn(...otherArgs: any[]): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.assignIn */ assignIn( source: TSource ): LoDashExplicitWrapper; /** * @see assignIn */ assignIn( source1: TSource1, source2: TSource2 ): LoDashExplicitWrapper; /** * @see assignIn */ assignIn( source1: TSource1, source2: TSource2, source3: TSource3 ): LoDashExplicitWrapper; /** * @see assignIn */ assignIn( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4 ): LoDashExplicitWrapper; /** * @see _.assignIn */ assignIn(): LoDashExplicitWrapper; /** * @see _.assignIn */ assignIn(...otherArgs: any[]): LoDashExplicitWrapper; } // assignInWith type AssignCustomizer = (objectValue: any, sourceValue: any, key?: string, object?: {}, source?: {}) => any; interface LoDashStatic { /** * This method is like `_.assignIn` except that it accepts `customizer` which * is invoked to produce the assigned values. If `customizer` returns `undefined` * assignment is handled by the method instead. The `customizer` is invoked * with five arguments: (objValue, srcValue, key, object, source). * * **Note:** This method mutates `object`. * * @alias extendWith * @category Object * @param object The destination object. * @param sources The source objects. * @param [customizer] The function to customize assigned values. * @returns Returns `object`. * @example * * function customizer(objValue, srcValue) { * return _.isUndefined(objValue) ? srcValue : objValue; * } * * var defaults = _.partialRight(_.assignInWith, customizer); * * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); * // => { 'a': 1, 'b': 2 } */ assignInWith( object: TObject, source: TSource, customizer: AssignCustomizer ): TObject & TSource; /** * @see assignInWith */ assignInWith( object: TObject, source1: TSource1, source2: TSource2, customizer: AssignCustomizer ): TObject & TSource1 & TSource2; /** * @see assignInWith */ assignInWith( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer ): TObject & TSource1 & TSource2 & TSource3; /** * @see assignInWith */ assignInWith( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer ): TObject & TSource1 & TSource2 & TSource3 & TSource4; /** * @see _.assignInWith */ assignInWith(object: TObject): TObject; /** * @see _.assignInWith */ assignInWith( object: any, ...otherArgs: any[] ): TResult; } interface LoDashImplicitWrapper { /** * @see _.assignInWith */ assignInWith( source: TSource, customizer: AssignCustomizer ): LoDashImplicitWrapper; /** * @see assignInWith */ assignInWith( source1: TSource1, source2: TSource2, customizer: AssignCustomizer ): LoDashImplicitWrapper; /** * @see assignInWith */ assignInWith( source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer ): LoDashImplicitWrapper; /** * @see assignInWith */ assignInWith( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer ): LoDashImplicitWrapper; /** * @see _.assignInWith */ assignInWith(): LoDashImplicitWrapper; /** * @see _.assignInWith */ assignInWith(...otherArgs: any[]): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.assignInWith */ assignInWith( source: TSource, customizer: AssignCustomizer ): LoDashExplicitWrapper; /** * @see assignInWith */ assignInWith( source1: TSource1, source2: TSource2, customizer: AssignCustomizer ): LoDashExplicitWrapper; /** * @see assignInWith */ assignInWith( source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer ): LoDashExplicitWrapper; /** * @see assignInWith */ assignInWith( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer ): LoDashExplicitWrapper; /** * @see _.assignInWith */ assignInWith(): LoDashExplicitWrapper; /** * @see _.assignInWith */ assignInWith(...otherArgs: any[]): LoDashExplicitWrapper; } // assignWith interface LoDashStatic { /** * This method is like `_.assign` except that it accepts `customizer` which * is invoked to produce the assigned values. If `customizer` returns `undefined` * assignment is handled by the method instead. The `customizer` is invoked * with five arguments: (objValue, srcValue, key, object, source). * * **Note:** This method mutates `object`. * * @category Object * @param object The destination object. * @param sources The source objects. * @param [customizer] The function to customize assigned values. * @returns Returns `object`. * @example * * function customizer(objValue, srcValue) { * return _.isUndefined(objValue) ? srcValue : objValue; * } * * var defaults = _.partialRight(_.assignWith, customizer); * * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); * // => { 'a': 1, 'b': 2 } */ assignWith( object: TObject, source: TSource, customizer: AssignCustomizer ): TObject & TSource; /** * @see assignWith */ assignWith( object: TObject, source1: TSource1, source2: TSource2, customizer: AssignCustomizer ): TObject & TSource1 & TSource2; /** * @see assignWith */ assignWith( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer ): TObject & TSource1 & TSource2 & TSource3; /** * @see assignWith */ assignWith( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer ): TObject & TSource1 & TSource2 & TSource3 & TSource4; /** * @see _.assignWith */ assignWith(object: TObject): TObject; /** * @see _.assignWith */ assignWith( object: any, ...otherArgs: any[] ): TResult; } interface LoDashImplicitWrapper { /** * @see _.assignWith */ assignWith( source: TSource, customizer: AssignCustomizer ): LoDashImplicitWrapper; /** * @see assignWith */ assignWith( source1: TSource1, source2: TSource2, customizer: AssignCustomizer ): LoDashImplicitWrapper; /** * @see assignWith */ assignWith( source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer ): LoDashImplicitWrapper; /** * @see assignWith */ assignWith( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer ): LoDashImplicitWrapper; /** * @see _.assignWith */ assignWith(): LoDashImplicitWrapper; /** * @see _.assignWith */ assignWith(...otherArgs: any[]): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.assignWith */ assignWith( source: TSource, customizer: AssignCustomizer ): LoDashExplicitWrapper; /** * @see assignWith */ assignWith( source1: TSource1, source2: TSource2, customizer: AssignCustomizer ): LoDashExplicitWrapper; /** * @see assignWith */ assignWith( source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer ): LoDashExplicitWrapper; /** * @see assignWith */ assignWith( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer ): LoDashExplicitWrapper; /** * @see _.assignWith */ assignWith(): LoDashExplicitWrapper; /** * @see _.assignWith */ assignWith(...otherArgs: any[]): LoDashExplicitWrapper; } // at interface LoDashStatic { /** * Creates an array of elements corresponding to the given keys, or indexes, of collection. Keys may be * specified as individual arguments or as arrays of keys. * * @param object The object to iterate over. * @param props The property names or indexes of elements to pick, specified individually or in arrays. * @return Returns the new array of picked elements. */ at( object: List | Dictionary | NumericDictionary | null | undefined, ...props: PropertyPath[] ): T[]; /** * @see _.at */ at( object: T | null | undefined, ...props: Array> ): Array; } interface LoDashImplicitWrapper { /** * @see _.at */ at( this: LoDashImplicitWrapper | Dictionary | NumericDictionary | null | undefined>, ...props: PropertyPath[] ): LoDashImplicitWrapper; /** * @see _.at */ at( this: LoDashImplicitWrapper, ...props: Array> ): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { /** * @see _.at */ at( this: LoDashExplicitWrapper | Dictionary | NumericDictionary | null | undefined>, ...props: PropertyPath[] ): LoDashExplicitWrapper; /** * @see _.at */ at( this: LoDashExplicitWrapper, ...props: Array> ): LoDashExplicitWrapper>; } // create interface LoDashStatic { /** * Creates an object that inherits from the given prototype object. If a properties object is provided its own * enumerable properties are assigned to the created object. * * @param prototype The object to inherit from. * @param properties The properties to assign to the object. * @return Returns the new object. */ create( prototype: T, properties?: U ): T & U; } interface LoDashImplicitWrapper { /** * @see _.create */ create(properties?: U): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.create */ create(properties?: U): LoDashExplicitWrapper; } // defaults interface LoDashStatic { /** * Assigns own enumerable properties of source object(s) to the destination object for all destination * properties that resolve to undefined. Once a property is set, additional values of the same property are * ignored. * * Note: This method mutates object. * * @param object The destination object. * @param sources The source objects. * @return The destination object. */ defaults( object: TObject, source: TSource ): TSource & TObject; /** * @see _.defaults */ defaults( object: TObject, source1: TSource1, source2: TSource2 ): TSource2 & TSource1 & TObject; /** * @see _.defaults */ defaults( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3 ): TSource3 & TSource2 & TSource1 & TObject; /** * @see _.defaults */ defaults( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4 ): TSource4 & TSource3 & TSource2 & TSource1 & TObject; /** * @see _.defaults */ defaults(object: TObject): TObject; /** * @see _.defaults */ defaults( object: any, ...sources: any[] ): any; } interface LoDashImplicitWrapper { /** * @see _.defaults */ defaults( source: TSource ): LoDashImplicitWrapper; /** * @see _.defaults */ defaults( source1: TSource1, source2: TSource2 ): LoDashImplicitWrapper; /** * @see _.defaults */ defaults( source1: TSource1, source2: TSource2, source3: TSource3 ): LoDashImplicitWrapper; /** * @see _.defaults */ defaults( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4 ): LoDashImplicitWrapper; /** * @see _.defaults */ defaults(): LoDashImplicitWrapper; /** * @see _.defaults */ defaults(...sources: any[]): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.defaults */ defaults( source: TSource ): LoDashExplicitWrapper; /** * @see _.defaults */ defaults( source1: TSource1, source2: TSource2 ): LoDashExplicitWrapper; /** * @see _.defaults */ defaults( source1: TSource1, source2: TSource2, source3: TSource3 ): LoDashExplicitWrapper; /** * @see _.defaults */ defaults( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4 ): LoDashExplicitWrapper; /** * @see _.defaults */ defaults(): LoDashExplicitWrapper; /** * @see _.defaults */ defaults(...sources: any[]): LoDashExplicitWrapper; } // defaultsDeep interface LoDashStatic { /** * This method is like _.defaults except that it recursively assigns default properties. * @param object The destination object. * @param sources The source objects. * @return Returns object. **/ defaultsDeep( object: any, ...sources: any[]): any; } interface LoDashImplicitWrapper { /** * @see _.defaultsDeep **/ defaultsDeep(...sources: any[]): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.defaultsDeep **/ defaultsDeep(...sources: any[]): LoDashExplicitWrapper; } // entries interface LoDashStatic { /** * @see _.toPairs */ entries(object?: Dictionary | NumericDictionary): Array<[string, T]>; /** * @see _.toPairs */ entries(object?: object): Array<[string, any]>; } interface LoDashImplicitWrapper { /** * @see _.toPairs */ entries(this: LoDashImplicitWrapper | NumericDictionary>): LoDashImplicitWrapper>; /** * @see _.toPairs */ entries(): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { /** * @see _.toPairs */ entries(this: LoDashExplicitWrapper | NumericDictionary>): LoDashExplicitWrapper>; /** * @see _.toPairs */ entries(): LoDashExplicitWrapper>; } // entriesIn interface LoDashStatic { /** * @see _.entriesIn */ entriesIn(object?: Dictionary | NumericDictionary): Array<[string, T]>; /** * @see _.entriesIn */ entriesIn(object?: object): Array<[string, any]>; } interface LoDashImplicitWrapper { /** * @see _.entriesIn */ entriesIn(this: LoDashImplicitWrapper | NumericDictionary>): LoDashImplicitWrapper>; /** * @see _.entriesIn */ entriesIn(): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { /** * @see _.entriesIn */ entriesIn(this: LoDashExplicitWrapper | NumericDictionary>): LoDashExplicitWrapper>; /** * @see _.entriesIn */ entriesIn(): LoDashExplicitWrapper>; } // extend interface LoDashStatic { /** * @see _.extend */ extend( object: TObject, source: TSource ): TObject & TSource; /** * @see _.extend */ extend( object: TObject, source1: TSource1, source2: TSource2 ): TObject & TSource1 & TSource2; /** * @see _.extend */ extend( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3 ): TObject & TSource1 & TSource2 & TSource3; /** * @see _.extend */ extend( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4 ): TObject & TSource1 & TSource2 & TSource3 & TSource4; /** * @see _.extend */ extend(object: TObject): TObject; /** * @see _.extend */ extend( object: any, ...otherArgs: any[] ): TResult; } interface LoDashImplicitWrapper { /** * @see _.extend */ extend( source: TSource ): LoDashImplicitWrapper; /** * @see _.extend */ extend( source1: TSource1, source2: TSource2 ): LoDashImplicitWrapper; /** * @see _.extend */ extend( source1: TSource1, source2: TSource2, source3: TSource3 ): LoDashImplicitWrapper; /** * @see _.extend */ extend( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4 ): LoDashImplicitWrapper; /** * @see _.extend */ extend(): LoDashImplicitWrapper; /** * @see _.extend */ extend(...otherArgs: any[]): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.extend */ extend( source: TSource ): LoDashExplicitWrapper; /** * @see _.extend */ extend( source1: TSource1, source2: TSource2 ): LoDashExplicitWrapper; /** * @see _.extend */ extend( source1: TSource1, source2: TSource2, source3: TSource3 ): LoDashExplicitWrapper; /** * @see _.extend */ extend( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4 ): LoDashExplicitWrapper; /** * @see _.extend */ extend(): LoDashExplicitWrapper; /** * @see _.extend */ extend(...otherArgs: any[]): LoDashExplicitWrapper; } // extendWith interface LoDashStatic { /** * @see _.extendWith */ extendWith( object: TObject, source: TSource, customizer: AssignCustomizer ): TObject & TSource; /** * @see _.extendWith */ extendWith( object: TObject, source1: TSource1, source2: TSource2, customizer: AssignCustomizer ): TObject & TSource1 & TSource2; /** * @see _.extendWith */ extendWith( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer ): TObject & TSource1 & TSource2 & TSource3; /** * @see _.extendWith */ extendWith( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer ): TObject & TSource1 & TSource2 & TSource3 & TSource4; /** * @see _.extendWith */ extendWith(object: TObject): TObject; /** * @see _.extendWith */ extendWith( object: any, ...otherArgs: any[] ): TResult; } interface LoDashImplicitWrapper { /** * @see _.extendWith */ extendWith( source: TSource, customizer: AssignCustomizer ): LoDashImplicitWrapper; /** * @see _.extendWith */ extendWith( source1: TSource1, source2: TSource2, customizer: AssignCustomizer ): LoDashImplicitWrapper; /** * @see _.extendWith */ extendWith( source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer ): LoDashImplicitWrapper; /** * @see _.extendWith */ extendWith( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer ): LoDashImplicitWrapper; /** * @see _.extendWith */ extendWith(): LoDashImplicitWrapper; /** * @see _.extendWith */ extendWith(...otherArgs: any[]): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.extendWith */ extendWith( source: TSource, customizer: AssignCustomizer ): LoDashExplicitWrapper; /** * @see _.extendWith */ extendWith( source1: TSource1, source2: TSource2, customizer: AssignCustomizer ): LoDashExplicitWrapper; /** * @see _.extendWith */ extendWith( source1: TSource1, source2: TSource2, source3: TSource3, customizer: AssignCustomizer ): LoDashExplicitWrapper; /** * @see _.extendWith */ extendWith( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: AssignCustomizer ): LoDashExplicitWrapper; /** * @see _.extendWith */ extendWith(): LoDashExplicitWrapper; /** * @see _.extendWith */ extendWith(...otherArgs: any[]): LoDashExplicitWrapper; } // findKey interface LoDashStatic { /** * This method is like _.find except that it returns the key of the first element predicate returns truthy for * instead of the element itself. * * @param object The object to search. * @param predicate The function invoked per iteration. * @return Returns the key of the matched element, else undefined. */ findKey( object: T | null | undefined, predicate?: ObjectIteratee ): string | undefined; } interface LoDashImplicitWrapper { /** * @see _.findKey */ findKey( this: LoDashImplicitWrapper, predicate?: ObjectIteratee ): string | undefined; } interface LoDashExplicitWrapper { /** * @see _.findKey */ findKey( this: LoDashExplicitWrapper, predicate?: ObjectIteratee ): LoDashExplicitWrapper; } // findLastKey interface LoDashStatic { /** * This method is like _.findKey except that it iterates over elements of a collection in the opposite order. * * @param object The object to search. * @param predicate The function invoked per iteration. * @return Returns the key of the matched element, else undefined. */ findLastKey( object: T | null | undefined, predicate?: ObjectIteratee ): string | undefined; } interface LoDashImplicitWrapper { /** * @see _.findLastKey */ findLastKey( this: LoDashImplicitWrapper, predicate?: ObjectIteratee ): string | undefined; } interface LoDashExplicitWrapper { /** * @see _.findLastKey */ findLastKey( this: LoDashExplicitWrapper, predicate?: ObjectIteratee ): LoDashExplicitWrapper; } // forIn interface LoDashStatic { /** * Iterates over own and inherited enumerable properties of an object invoking iteratee for each property. The * 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. * @return Returns object. */ forIn( object: T, iteratee?: ObjectIterator ): T; /** * @see _.forIn */ forIn( object: T | null | undefined, iteratee?: ObjectIterator ): T | null | undefined; } interface LoDashWrapper { /** * @see _.forIn */ forIn( this: LoDashWrapper, iteratee?: ObjectIterator ): this; } // forInRight interface LoDashStatic { /** * This method is like _.forIn except that it iterates over properties of object in the opposite order. * * @param object The object to iterate over. * @param iteratee The function invoked per iteration. * @return Returns object. */ forInRight( object: T, iteratee?: ObjectIterator ): T; /** * @see _.forInRight */ forInRight( object: T | null | undefined, iteratee?: ObjectIterator ): T | null | undefined; } interface LoDashWrapper { /** * @see _.forInRight */ forInRight( this: LoDashWrapper, iteratee?: ObjectIterator ): this; } // forOwn interface LoDashStatic { /** * Iterates over own enumerable properties of an object invoking iteratee for each property. The 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. * @return Returns object. */ forOwn( object: T, iteratee?: ObjectIterator ): T; /** * @see _.forOwn */ forOwn( object: T | null | undefined, iteratee?: ObjectIterator ): T | null | undefined; } interface LoDashWrapper { /** * @see _.forOwn */ forOwn( this: LoDashWrapper, iteratee?: ObjectIterator ): this; } // forOwnRight interface LoDashStatic { /** * This method is like _.forOwn except that it iterates over properties of object in the opposite order. * * @param object The object to iterate over. * @param iteratee The function invoked per iteration. * @return Returns object. */ forOwnRight( object: T, iteratee?: ObjectIterator ): T; /** * @see _.forOwnRight */ forOwnRight( object: T | null | undefined, iteratee?: ObjectIterator ): T | null | undefined; } interface LoDashWrapper { /** * @see _.forOwnRight */ forOwnRight( this: LoDashWrapper, iteratee?: ObjectIterator ): this; } // functions interface LoDashStatic { /** * Creates an array of function property names from own enumerable properties * of `object`. * * @category Object * @param object The object to inspect. * @returns Returns the new array of property names. * @example * * function Foo() { * this.a = _.constant('a'); * this.b = _.constant('b'); * } * * Foo.prototype.c = _.constant('c'); * * _.functions(new Foo); * // => ['a', 'b'] */ functions(object: any): string[]; } interface LoDashImplicitWrapper { /** * @see _.functions */ functions(): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.functions */ functions(): LoDashExplicitWrapper; } // functionsIn interface LoDashStatic { /** * Creates an array of function property names from own and inherited * enumerable properties of `object`. * * @category Object * @param object The object to inspect. * @returns Returns the new array of property names. * @example * * function Foo() { * this.a = _.constant('a'); * this.b = _.constant('b'); * } * * Foo.prototype.c = _.constant('c'); * * _.functionsIn(new Foo); * // => ['a', 'b', 'c'] */ functionsIn(object: any): string[]; } interface LoDashImplicitWrapper { /** * @see _.functionsIn */ functionsIn(): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.functionsIn */ functionsIn(): LoDashExplicitWrapper; } // get interface LoDashStatic { /** * Gets the property value at path of object. If the resolved value is undefined the defaultValue is used * in its place. * * @param object The object to query. * @param path The path of the property to get. * @param defaultValue The value returned if the resolved value is undefined. * @return Returns the resolved value. */ get( object: TObject, path: TKey | [TKey] ): TObject[TKey]; /** * @see _.get */ get( object: TObject | null | undefined, path: TKey | [TKey] ): TObject[TKey] | undefined; /** * @see _.get */ get( object: TObject | null | undefined, path: TKey | [TKey], defaultValue: TDefault ): Exclude | TDefault; /** * @see _.get */ get( object: NumericDictionary, path: number ): T; /** * @see _.get */ get( object: NumericDictionary | null | undefined, path: number ): T | undefined; /** * @see _.get */ get( object: NumericDictionary | null | undefined, path: number, defaultValue: TDefault ): T | TDefault; /** * @see _.get */ get( object: null | undefined, path: PropertyPath, defaultValue: TDefault ): TDefault; /** * @see _.get */ get( object: null | undefined, path: PropertyPath ): undefined; /** * @see _.get */ get( object: any, path: PropertyPath, defaultValue?: any ): any; } interface LoDashImplicitWrapper { /** * @see _.get */ get( path: TKey | [TKey] ): TValue[TKey]; /** * @see _.get */ get( this: LoDashImplicitWrapper, path: TKey | [TKey], ): TObject[TKey] | undefined; /** * @see _.get */ get( this: LoDashImplicitWrapper, path: TKey | [TKey], defaultValue: TDefault ): Exclude | TDefault; /** * @see _.get */ get( this: LoDashImplicitWrapper>, path: number ): T; /** * @see _.get */ get( this: LoDashImplicitWrapper | null | undefined>, path: number ): T | undefined; /** * @see _.get */ get( this: LoDashImplicitWrapper | null | undefined>, path: number, defaultValue: TDefault ): T | TDefault; /** * @see _.get */ get( this: LoDashImplicitWrapper, path: PropertyPath, defaultValue: TDefault ): TDefault; /** * @see _.get */ get( this: LoDashImplicitWrapper, path: PropertyPath ): undefined; /** * @see _.get */ get( path: PropertyPath, defaultValue?: any ): any; } interface LoDashExplicitWrapper { /** * @see _.get */ get( path: TKey | [TKey] ): LoDashExplicitWrapper; /** * @see _.get */ get( this: LoDashExplicitWrapper, path: TKey | [TKey], ): LoDashExplicitWrapper; /** * @see _.get */ get( this: LoDashExplicitWrapper, path: TKey | [TKey], defaultValue: TDefault ): LoDashExplicitWrapper | TDefault>; /** * @see _.get */ get( this: LoDashExplicitWrapper>, path: number ): LoDashExplicitWrapper; /** * @see _.get */ get( this: LoDashExplicitWrapper | null | undefined>, path: number ): LoDashExplicitWrapper; /** * @see _.get */ get( this: LoDashExplicitWrapper | null | undefined>, path: number, defaultValue: TDefault ): LoDashExplicitWrapper; /** * @see _.get */ get( this: LoDashExplicitWrapper, path: PropertyPath, defaultValue: TDefault ): LoDashExplicitWrapper; /** * @see _.get */ get( this: LoDashExplicitWrapper, path: PropertyPath ): LoDashExplicitWrapper; /** * @see _.get */ get( path: PropertyPath, defaultValue?: any ): LoDashExplicitWrapper; } // has interface LoDashStatic { /** * Checks if `path` is a direct property of `object`. * * @category Object * @param object The object to query. * @param path The path to check. * @returns Returns `true` if `path` exists, else `false`. * @example * * var object = { 'a': { 'b': { 'c': 3 } } }; * var other = _.create({ 'a': _.create({ 'b': _.create({ 'c': 3 }) }) }); * * _.has(object, 'a'); * // => true * * _.has(object, 'a.b.c'); * // => true * * _.has(object, ['a', 'b', 'c']); * // => true * * _.has(other, 'a'); * // => false */ has( object: T, path: PropertyPath ): boolean; } interface LoDashImplicitWrapper { /** * @see _.has */ has(path: PropertyPath): boolean; } interface LoDashExplicitWrapper { /** * @see _.has */ has(path: PropertyPath): LoDashExplicitWrapper; } // hasIn interface LoDashStatic { /** * Checks if `path` is a direct or inherited property of `object`. * * @category Object * @param object The object to query. * @param path The path to check. * @returns Returns `true` if `path` exists, else `false`. * @example * * var object = _.create({ 'a': _.create({ 'b': _.create({ 'c': 3 }) }) }); * * _.hasIn(object, 'a'); * // => true * * _.hasIn(object, 'a.b.c'); * // => true * * _.hasIn(object, ['a', 'b', 'c']); * // => true * * _.hasIn(object, 'b'); * // => false */ hasIn( object: T, path: PropertyPath ): boolean; } interface LoDashImplicitWrapper { /** * @see _.hasIn */ hasIn(path: PropertyPath): boolean; } interface LoDashExplicitWrapper { /** * @see _.hasIn */ hasIn(path: PropertyPath): LoDashExplicitWrapper; } // invert interface LoDashStatic { /** * Creates an object composed of the inverted keys and values of object. If object contains duplicate values, * subsequent values overwrite property assignments of previous values unless multiValue is true. * * @param object The object to invert. * @param multiValue Allow multiple values per key. * @return Returns the new inverted object. */ invert( object: object ): Dictionary; } interface LoDashImplicitWrapper { /** * @see _.invert */ invert(): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { /** * @see _.invert */ invert(): LoDashExplicitWrapper>; } // invertBy interface LoDashStatic { /** * This method is like _.invert except that the inverted object is generated from the results of running each * element of object through iteratee. The corresponding inverted value of each inverted key is an array of * keys responsible for generating the inverted value. The iteratee is invoked with one argument: (value). * * @param object The object to invert. * @param interatee The iteratee invoked per element. * @return Returns the new inverted object. */ invertBy( object: List | Dictionary | NumericDictionary | null | undefined, interatee?: ValueIteratee ): Dictionary; /** * @see _.invertBy */ invertBy( object: T | null | undefined, interatee?: ValueIteratee ): Dictionary; } interface LoDashImplicitWrapper { /** * @see _.invertBy */ invertBy( this: LoDashImplicitWrapper | Dictionary | NumericDictionary | null | undefined>, interatee?: ValueIteratee ): LoDashImplicitWrapper>; /** * @see _.invertBy */ invertBy( this: LoDashImplicitWrapper, interatee?: ValueIteratee ): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { /** * @see _.invertBy */ invertBy( this: LoDashExplicitWrapper | Dictionary | NumericDictionary | null | undefined>, interatee?: ValueIteratee ): LoDashExplicitWrapper>; /** * @see _.invertBy */ invertBy( this: LoDashExplicitWrapper, interatee?: ValueIteratee ): LoDashExplicitWrapper>; } // invoke interface LoDashStatic { /** * Invokes the method at path of object. * @param object The object to query. * @param path The path of the method to invoke. * @param args The arguments to invoke the method with. **/ invoke( object: any, path: PropertyPath, ...args: any[]): any; } interface LoDashImplicitWrapper { /** * @see _.invoke **/ invoke( path: PropertyPath, ...args: any[]): any; } interface LoDashExplicitWrapper { /** * @see _.invoke **/ invoke( path: PropertyPath, ...args: any[]): LoDashExplicitWrapper; } // keys interface LoDashStatic { /** * Creates an array of the own enumerable property names of object. * * Note: Non-object values are coerced to objects. See the ES spec for more details. * * @param object The object to query. * @return Returns the array of property names. */ keys(object?: any): string[]; } interface LoDashImplicitWrapper { /** * @see _.keys */ keys(): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.keys */ keys(): LoDashExplicitWrapper; } // keysIn interface LoDashStatic { /** * Creates an array of the own and inherited enumerable property names of object. * * Note: Non-object values are coerced to objects. * * @param object The object to query. * @return An array of property names. */ keysIn(object?: any): string[]; } interface LoDashImplicitWrapper { /** * @see _.keysIn */ keysIn(): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.keysIn */ keysIn(): LoDashExplicitWrapper; } // mapKeys interface LoDashStatic { /** * The opposite of _.mapValues; this method creates an object with the same values as object and keys generated * by running each own enumerable property of object through iteratee. * * @param object The object to iterate over. * @param iteratee The function invoked per iteration. * @return Returns the new mapped object. */ mapKeys( object: List | null | undefined, iteratee?: ListIteratee ): Dictionary; /** * @see _.mapKeys */ mapKeys( object: T | null | undefined, iteratee?: ObjectIteratee ): Dictionary; } interface LoDashImplicitWrapper { /** * @see _.mapKeys */ mapKeys( this: LoDashImplicitWrapper | null | undefined>, iteratee?: ListIteratee ): LoDashImplicitWrapper>; /** * @see _.mapKeys */ mapKeys( this: LoDashImplicitWrapper, iteratee?: ObjectIteratee ): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { /** * @see _.mapKeys */ mapKeys( this: LoDashExplicitWrapper | null | undefined>, iteratee?: ListIteratee ): LoDashExplicitWrapper>; /** * @see _.mapKeys */ mapKeys( this: LoDashExplicitWrapper, iteratee?: ObjectIteratee ): LoDashExplicitWrapper>; } // mapValues interface LoDashStatic { /** * Creates an object with the same keys as object and values generated by running each own * enumerable property of object through iteratee. The iteratee function is * invoked with three arguments: (value, key, object). * * @param object The object to iterate over. * @param iteratee The function invoked per iteration. * @return Returns the new mapped object. */ mapValues(obj: string | null | undefined, callback: StringIterator): NumericDictionary; /** * @see _.mapValues * TODO: This would be better if we had a separate overload for obj: NumericDictionary that returned a NumericDictionary, * but TypeScript cannot select overload signatures based on number vs string index key type. */ mapValues(obj: Dictionary | NumericDictionary | null | undefined, callback: DictionaryIterator): Dictionary; /** * @see _.mapValues */ mapValues(obj: T | null | undefined, callback: ObjectIterator): { [P in keyof T]: TResult }; /** * @see _.mapValues * TODO: This would be better if we had a separate overload for obj: NumericDictionary that returned a NumericDictionary, * but TypeScript cannot select overload signatures based on number vs string index key type. */ mapValues(obj: Dictionary | NumericDictionary | null | undefined, iteratee: object): Dictionary; /** * @see _.mapValues */ mapValues(obj: T | null | undefined, iteratee: object): { [P in keyof T]: boolean }; /** * @see _.mapValues * TODO: This would be better if we had a separate overload for obj: NumericDictionary that returned a NumericDictionary, * but TypeScript cannot select overload signatures based on number vs string index key type. */ mapValues(obj: Dictionary | NumericDictionary | null | undefined, iteratee: TKey): Dictionary; /** * @see _.mapValues * TODO: This would be better if we had a separate overload for obj: NumericDictionary that returned a NumericDictionary, * but TypeScript cannot select overload signatures based on number vs string index key type. */ mapValues(obj: Dictionary | NumericDictionary | null | undefined, iteratee: string): Dictionary; /** * @see _.mapValues */ mapValues(obj: T | null | undefined, iteratee: string): { [P in keyof T]: any }; /** * @see _.mapValues */ mapValues(obj: string | null | undefined): NumericDictionary; /** * @see _.mapValues * TODO: This would be better if we had a separate overload for obj: NumericDictionary that returned a NumericDictionary, * but TypeScript cannot select overload signatures based on number vs string index key type. */ mapValues(obj: Dictionary | NumericDictionary | null | undefined): Dictionary; /** * @see _.mapValues */ mapValues(obj: T): T; /** * @see _.mapValues */ mapValues(obj: T | null | undefined): PartialObject; } interface LoDashImplicitWrapper { /** * @see _.mapValues */ mapValues( this: LoDashImplicitWrapper, callback: StringIterator ): LoDashImplicitWrapper>; /** * @see _.mapValues * TODO: This would be better if we had a separate overload for obj: NumericDictionary that returned a NumericDictionary, * but TypeScript cannot select overload signatures based on number vs string index key type. */ mapValues( this: LoDashImplicitWrapper | NumericDictionary | null | undefined>, callback: DictionaryIterator ): LoDashImplicitWrapper>; /** * @see _.mapValues */ mapValues( this: LoDashImplicitWrapper, callback: ObjectIterator ): LoDashImplicitWrapper<{ [P in keyof T]: TResult }>; /** * @see _.mapValues * TODO: This would be better if we had a separate overload for obj: NumericDictionary that returned a NumericDictionary, * but TypeScript cannot select overload signatures based on number vs string index key type. */ mapValues( this: LoDashImplicitWrapper | NumericDictionary | null | undefined>, iteratee: object ): LoDashImplicitWrapper>; /** * @see _.mapValues */ mapValues( this: LoDashImplicitWrapper, iteratee: object ): LoDashImplicitWrapper<{ [P in keyof T]: boolean }>; /** * @see _.mapValues * TODO: This would be better if we had a separate overload for obj: NumericDictionary that returned a NumericDictionary, * but TypeScript cannot select overload signatures based on number vs string index key type. */ mapValues( this: LoDashImplicitWrapper | NumericDictionary | null | undefined>, iteratee: TKey ): LoDashImplicitWrapper>; /** * @see _.mapValues * TODO: This would be better if we had a separate overload for obj: NumericDictionary that returned a NumericDictionary, * but TypeScript cannot select overload signatures based on number vs string index key type. */ mapValues( this: LoDashImplicitWrapper | NumericDictionary | null | undefined>, iteratee: string ): LoDashImplicitWrapper>; /** * @see _.mapValues */ mapValues( this: LoDashImplicitWrapper, iteratee: string ): LoDashImplicitWrapper<{ [P in keyof T]: any }>; /** * @see _.mapValues */ mapValues(this: LoDashImplicitWrapper): LoDashImplicitWrapper>; /** * @see _.mapValues * TODO: This would be better if we had a separate overload for obj: NumericDictionary that returned a NumericDictionary, * but TypeScript cannot select overload signatures based on number vs string index key type. */ mapValues(this: LoDashImplicitWrapper | NumericDictionary | null | undefined>): LoDashImplicitWrapper>; /** * @see _.mapValues */ mapValues(this: LoDashImplicitWrapper): LoDashImplicitWrapper; /** * @see _.mapValues */ mapValues(this: LoDashImplicitWrapper): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { /** * @see _.mapValues */ mapValues( this: LoDashExplicitWrapper, callback: StringIterator ): LoDashExplicitWrapper>; /** * @see _.mapValues * TODO: This would be better if we had a separate overload for obj: NumericDictionary that returned a NumericDictionary, * but TypeScript cannot select overload signatures based on number vs string index key type. */ mapValues( this: LoDashExplicitWrapper | NumericDictionary | null | undefined>, callback: DictionaryIterator ): LoDashExplicitWrapper>; /** * @see _.mapValues */ mapValues( this: LoDashExplicitWrapper, callback: ObjectIterator ): LoDashExplicitWrapper<{ [P in keyof T]: TResult }>; /** * @see _.mapValues * TODO: This would be better if we had a separate overload for obj: NumericDictionary that returned a NumericDictionary, * but TypeScript cannot select overload signatures based on number vs string index key type. */ mapValues( this: LoDashExplicitWrapper | NumericDictionary | null | undefined>, iteratee: object ): LoDashExplicitWrapper>; /** * @see _.mapValues */ mapValues( this: LoDashExplicitWrapper, iteratee: object ): LoDashExplicitWrapper<{ [P in keyof T]: boolean }>; /** * @see _.mapValues * TODO: This would be better if we had a separate overload for obj: NumericDictionary that returned a NumericDictionary, * but TypeScript cannot select overload signatures based on number vs string index key type. */ mapValues( this: LoDashExplicitWrapper | NumericDictionary | null | undefined>, iteratee: TKey ): LoDashExplicitWrapper>; /** * @see _.mapValues * TODO: This would be better if we had a separate overload for obj: NumericDictionary that returned a NumericDictionary, * but TypeScript cannot select overload signatures based on number vs string index key type. */ mapValues( this: LoDashExplicitWrapper | NumericDictionary | null | undefined>, iteratee: string ): LoDashExplicitWrapper>; /** * @see _.mapValues */ mapValues( this: LoDashExplicitWrapper, iteratee: string ): LoDashExplicitWrapper<{ [P in keyof T]: any }>; /** * @see _.mapValues */ mapValues(this: LoDashExplicitWrapper): LoDashExplicitWrapper>; /** * @see _.mapValues * TODO: This would be better if we had a separate overload for obj: NumericDictionary that returned a NumericDictionary, * but TypeScript cannot select overload signatures based on number vs string index key type. */ mapValues(this: LoDashExplicitWrapper | NumericDictionary | null | undefined>): LoDashExplicitWrapper>; /** * @see _.mapValues */ mapValues(this: LoDashExplicitWrapper): LoDashExplicitWrapper; /** * @see _.mapValues */ mapValues(this: LoDashExplicitWrapper): LoDashExplicitWrapper>; } // merge interface LoDashStatic { /** * Recursively merges own and inherited enumerable properties of source * objects into the destination object, skipping source properties that resolve * to `undefined`. Array and plain object properties are merged recursively. * Other objects and value types are overridden by assignment. Source objects * are applied from left to right. Subsequent sources overwrite property * assignments of previous sources. * * **Note:** This method mutates `object`. * * @category Object * @param object The destination object. * @param [sources] The source objects. * @returns Returns `object`. * @example * * var users = { * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }] * }; * * var ages = { * 'data': [{ 'age': 36 }, { 'age': 40 }] * }; * * _.merge(users, ages); * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] } */ merge( object: TObject, source: TSource ): TObject & TSource; /** * @see _.merge */ merge( object: TObject, source1: TSource1, source2: TSource2 ): TObject & TSource1 & TSource2; /** * @see _.merge */ merge( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3 ): TObject & TSource1 & TSource2 & TSource3; /** * @see _.merge */ merge( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4 ): TObject & TSource1 & TSource2 & TSource3 & TSource4; /** * @see _.merge */ merge( object: any, ...otherArgs: any[] ): any; } interface LoDashImplicitWrapper { /** * @see _.merge */ merge( source: TSource ): LoDashImplicitWrapper; /** * @see _.merge */ merge( source1: TSource1, source2: TSource2 ): LoDashImplicitWrapper; /** * @see _.merge */ merge( source1: TSource1, source2: TSource2, source3: TSource3 ): LoDashImplicitWrapper; /** * @see _.merge */ merge( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4 ): LoDashImplicitWrapper; /** * @see _.merge */ merge( ...otherArgs: any[] ): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.merge */ merge( source: TSource ): LoDashExplicitWrapper; /** * @see _.merge */ merge( source1: TSource1, source2: TSource2 ): LoDashExplicitWrapper; /** * @see _.merge */ merge( source1: TSource1, source2: TSource2, source3: TSource3 ): LoDashExplicitWrapper; /** * @see _.merge */ merge( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4 ): LoDashExplicitWrapper; /** * @see _.merge */ merge( ...otherArgs: any[] ): LoDashExplicitWrapper; } // mergeWith type MergeWithCustomizer = { bivariantHack(value: any, srcValue: any, key: string, object: any, source: any): any; }["bivariantHack"]; interface LoDashStatic { /** * This method is like `_.merge` except that it accepts `customizer` which * is invoked to produce the merged values of the destination and source * properties. If `customizer` returns `undefined` merging is handled by the * method instead. The `customizer` is invoked with seven arguments: * (objValue, srcValue, key, object, source, stack). * * @category Object * @param object The destination object. * @param sources The source objects. * @param customizer The function to customize assigned values. * @returns Returns `object`. * @example * * function customizer(objValue, srcValue) { * if (_.isArray(objValue)) { * return objValue.concat(srcValue); * } * } * * var object = { * 'fruits': ['apple'], * 'vegetables': ['beet'] * }; * * var other = { * 'fruits': ['banana'], * 'vegetables': ['carrot'] * }; * * _.merge(object, other, customizer); * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] } */ mergeWith( object: TObject, source: TSource, customizer: MergeWithCustomizer ): TObject & TSource; /** * @see _.mergeWith */ mergeWith( object: TObject, source1: TSource1, source2: TSource2, customizer: MergeWithCustomizer ): TObject & TSource1 & TSource2; /** * @see _.mergeWith */ mergeWith( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, customizer: MergeWithCustomizer ): TObject & TSource1 & TSource2 & TSource3; /** * @see _.mergeWith */ mergeWith( object: TObject, source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: MergeWithCustomizer ): TObject & TSource1 & TSource2 & TSource3 & TSource4; /** * @see _.mergeWith */ mergeWith( object: any, ...otherArgs: any[] ): any; } interface LoDashImplicitWrapper { /** * @see _.mergeWith */ mergeWith( source: TSource, customizer: MergeWithCustomizer ): LoDashImplicitWrapper; /** * @see _.mergeWith */ mergeWith( source1: TSource1, source2: TSource2, customizer: MergeWithCustomizer ): LoDashImplicitWrapper; /** * @see _.mergeWith */ mergeWith( source1: TSource1, source2: TSource2, source3: TSource3, customizer: MergeWithCustomizer ): LoDashImplicitWrapper; /** * @see _.mergeWith */ mergeWith( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: MergeWithCustomizer ): LoDashImplicitWrapper; /** * @see _.mergeWith */ mergeWith( ...otherArgs: any[] ): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.mergeWith */ mergeWith( source: TSource, customizer: MergeWithCustomizer ): LoDashExplicitWrapper; /** * @see _.mergeWith */ mergeWith( source1: TSource1, source2: TSource2, customizer: MergeWithCustomizer ): LoDashExplicitWrapper; /** * @see _.mergeWith */ mergeWith( source1: TSource1, source2: TSource2, source3: TSource3, customizer: MergeWithCustomizer ): LoDashExplicitWrapper; /** * @see _.mergeWith */ mergeWith( source1: TSource1, source2: TSource2, source3: TSource3, source4: TSource4, customizer: MergeWithCustomizer ): LoDashExplicitWrapper; /** * @see _.mergeWith */ mergeWith( ...otherArgs: any[] ): LoDashExplicitWrapper; } // omit interface LoDashStatic { /** * The opposite of `_.pick`; this method creates an object composed of the * own and inherited enumerable properties of `object` that are not omitted. * * @category Object * @param object The source object. * @param [paths] The property names to omit, specified * individually or in arrays.. * @returns Returns the new object. * @example * * var object = { 'a': 1, 'b': '2', 'c': 3 }; * * _.omit(object, ['a', 'c']); * // => { 'b': '2' } */ omit( object: T | null | undefined, ...paths: Array> ): T; /** * @see _.omit */ omit( object: T | null | undefined, ...paths: Array> ): Omit; /** * @see _.omit */ omit( object: T | null | undefined, ...paths: Array> ): PartialObject; } interface LoDashImplicitWrapper { /** * @see _.omit */ omit( this: LoDashImplicitWrapper, ...paths: Array> ): LoDashImplicitWrapper; /** * @see _.omit */ omit( this: LoDashImplicitWrapper, ...paths: Array> ): LoDashImplicitWrapper>; /** * @see _.omit */ omit( this: LoDashImplicitWrapper, ...paths: Array> ): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { /** * @see _.omit */ omit( this: LoDashExplicitWrapper, ...paths: Array> ): LoDashExplicitWrapper; /** * @see _.omit */ omit( this: LoDashExplicitWrapper, ...paths: Array> ): LoDashExplicitWrapper>; /** * @see _.omit */ omit( this: LoDashExplicitWrapper, ...paths: Array> ): LoDashExplicitWrapper>; } // omitBy interface LoDashStatic { /** * The opposite of `_.pickBy`; this method creates an object composed of the * own and inherited enumerable properties of `object` that `predicate` * doesn't return truthy for. * * @category Object * @param object The source object. * @param [predicate=_.identity] The function invoked per property. * @returns Returns the new object. * @example * * var object = { 'a': 1, 'b': '2', 'c': 3 }; * * _.omitBy(object, _.isNumber); * // => { 'b': '2' } */ omitBy( object: Dictionary | null | undefined, predicate?: ValueKeyIteratee ): Dictionary; /** * @see _.omitBy */ omitBy( object: NumericDictionary | null | undefined, predicate?: ValueKeyIteratee ): NumericDictionary; /** * @see _.omitBy */ omitBy( object: T | null | undefined, predicate: ValueKeyIteratee ): PartialObject; } interface LoDashImplicitWrapper { /** * @see _.omitBy */ omitBy( this: LoDashImplicitWrapper | null | undefined>, predicate?: ValueKeyIteratee ): LoDashImplicitWrapper>; /** * @see _.omitBy */ omitBy( this: LoDashImplicitWrapper | null | undefined>, predicate?: ValueKeyIteratee ): LoDashImplicitWrapper>; /** * @see _.omitBy */ omitBy( this: LoDashImplicitWrapper, predicate: ValueKeyIteratee ): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { /** * @see _.omitBy */ omitBy( this: LoDashExplicitWrapper | null | undefined>, predicate?: ValueKeyIteratee ): LoDashExplicitWrapper>; /** * @see _.omitBy */ omitBy( this: LoDashExplicitWrapper | null | undefined>, predicate?: ValueKeyIteratee ): LoDashExplicitWrapper>; /** * @see _.omitBy */ omitBy( this: LoDashExplicitWrapper, predicate: ValueKeyIteratee ): LoDashExplicitWrapper>; } // pick interface LoDashStatic { /** * Creates an object composed of the picked `object` properties. * * @category Object * @param object The source object. * @param [props] The property names to pick, specified * individually or in arrays. * @returns Returns the new object. * @example * * var object = { 'a': 1, 'b': '2', 'c': 3 }; * * _.pick(object, ['a', 'c']); * // => { 'a': 1, 'c': 3 } */ pick( object: T, ...props: Array> ): Pick; /** * @see _.pick */ pick( object: T | null | undefined, ...props: PropertyPath[] ): PartialDeep; } interface LoDashImplicitWrapper { /** * @see _.pick */ pick( this: LoDashImplicitWrapper, ...props: Array> ): LoDashImplicitWrapper>; /** * @see _.pick */ pick( this: LoDashImplicitWrapper, ...props: PropertyPath[] ): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { /** * @see _.pick */ pick( this: LoDashExplicitWrapper, ...props: Array> ): LoDashExplicitWrapper>; /** * @see _.pick */ pick( this: LoDashExplicitWrapper, ...props: PropertyPath[] ): LoDashExplicitWrapper>; } // pickBy interface LoDashStatic { /** * Creates an object composed of the `object` properties `predicate` returns * truthy for. The predicate is invoked with two arguments: (value, key). * * @category Object * @param object The source object. * @param [predicate=_.identity] The function invoked per property. * @returns Returns the new object. * @example * * var object = { 'a': 1, 'b': '2', 'c': 3 }; * * _.pickBy(object, _.isNumber); * // => { 'a': 1, 'c': 3 } */ pickBy( object: Dictionary | null | undefined, predicate: ValueKeyIterateeTypeGuard ): Dictionary; /** * @see _.pickBy */ pickBy( object: NumericDictionary | null | undefined, predicate: ValueKeyIterateeTypeGuard ): NumericDictionary; /** * @see _.pickBy */ pickBy( object: Dictionary | null | undefined, predicate?: ValueKeyIteratee ): Dictionary; /** * @see _.pickBy */ pickBy( object: NumericDictionary | null | undefined, predicate?: ValueKeyIteratee ): NumericDictionary; /** * @see _.pickBy */ pickBy( object: T | null | undefined, predicate?: ValueKeyIteratee ): PartialObject; } interface LoDashImplicitWrapper { /** * @see _.pickBy */ pickBy( this: LoDashImplicitWrapper | null | undefined>, predicate: ValueKeyIterateeTypeGuard ): LoDashImplicitWrapper>; /** * @see _.pickBy */ pickBy( this: LoDashImplicitWrapper | null | undefined>, predicate: ValueKeyIterateeTypeGuard ): LoDashImplicitWrapper>; /** * @see _.pickBy */ pickBy( this: LoDashImplicitWrapper | null | undefined>, predicate?: ValueKeyIteratee ): LoDashImplicitWrapper>; /** * @see _.pickBy */ pickBy( this: LoDashImplicitWrapper | null | undefined>, predicate?: ValueKeyIteratee ): LoDashImplicitWrapper>; /** * @see _.pickBy */ pickBy( this: LoDashImplicitWrapper, predicate?: ValueKeyIteratee ): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { /** * @see _.pickBy */ pickBy( this: LoDashExplicitWrapper | null | undefined>, predicate: ValueKeyIterateeTypeGuard ): LoDashExplicitWrapper>; /** * @see _.pickBy */ pickBy( this: LoDashExplicitWrapper | null | undefined>, predicate: ValueKeyIterateeTypeGuard ): LoDashExplicitWrapper>; /** * @see _.pickBy */ pickBy( this: LoDashExplicitWrapper | null | undefined>, predicate?: ValueKeyIteratee ): LoDashExplicitWrapper>; /** * @see _.pickBy */ pickBy( this: LoDashExplicitWrapper | null | undefined>, predicate?: ValueKeyIteratee ): LoDashExplicitWrapper>; /** * @see _.pickBy */ pickBy( this: LoDashExplicitWrapper, predicate?: ValueKeyIteratee ): LoDashExplicitWrapper>; } // result interface LoDashStatic { /** * This method is like _.get except that if the resolved value is a function it’s invoked with the this binding * of its parent object and its result is returned. * * @param object The object to query. * @param path The path of the property to resolve. * @param defaultValue The value returned if the resolved value is undefined. * @return Returns the resolved value. */ result( object: any, path: PropertyPath, defaultValue?: TResult|((...args: any[]) => TResult) ): TResult; } interface LoDashImplicitWrapper { /** * @see _.result */ result( path: PropertyPath, defaultValue?: TResult|((...args: any[]) => TResult) ): TResult; } interface LoDashExplicitWrapper { /** * @see _.result */ result( path: PropertyPath, defaultValue?: TResult|((...args: any[]) => TResult) ): LoDashExplicitWrapper; } // set interface LoDashStatic { /** * Sets the value at path of object. If a portion of path doesn’t exist it’s created. Arrays are created for * missing index properties while objects are created for all other missing properties. Use _.setWith to * customize path creation. * * @param object The object to modify. * @param path The path of the property to set. * @param value The value to set. * @return Returns object. */ set( object: T, path: PropertyPath, value: any ): T; /** * @see _.set */ set( object: object, path: PropertyPath, value: any ): TResult; } interface LoDashImplicitWrapper { /** * @see _.set */ set( path: PropertyPath, value: any ): this; /** * @see _.set */ set( path: PropertyPath, value: any ): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.set */ set( path: PropertyPath, value: any ): this; /** * @see _.set */ set( path: PropertyPath, value: any ): LoDashExplicitWrapper; } // setWith type SetWithCustomizer = (nsValue: any, key: string, nsObject: T) => any; interface LoDashStatic { /** * This method is like _.set except that it accepts customizer which is invoked to produce the objects of * path. If customizer returns undefined path creation is handled by the method instead. The customizer is * invoked with three arguments: (nsValue, key, nsObject). * * @param object The object to modify. * @param path The path of the property to set. * @param value The value to set. * @param customizer The function to customize assigned values. * @return Returns object. */ setWith( object: T, path: PropertyPath, value: any, customizer?: SetWithCustomizer ): T; setWith( object: T, path: PropertyPath, value: any, customizer?: SetWithCustomizer ): TResult; } interface LoDashImplicitWrapper { /** * @see _.setWith */ setWith( path: PropertyPath, value: any, customizer?: SetWithCustomizer ): this; /** * @see _.setWith */ setWith( path: PropertyPath, value: any, customizer?: SetWithCustomizer ): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.setWith */ setWith( path: PropertyPath, value: any, customizer?: SetWithCustomizer ): this; /** * @see _.setWith */ setWith( path: PropertyPath, value: any, customizer?: SetWithCustomizer ): LoDashExplicitWrapper; } // toPairs interface LoDashStatic { /** * Creates an array of own enumerable key-value pairs for object. * * @param object The object to query. * @return Returns the new array of key-value pairs. */ toPairs(object?: Dictionary | NumericDictionary): Array<[string, T]>; /** * @see _.toPairs */ toPairs(object?: object): Array<[string, any]>; } interface LoDashImplicitWrapper { /** * @see _.toPairs */ toPairs(this: LoDashImplicitWrapper | NumericDictionary>): LoDashImplicitWrapper>; /** * @see _.toPairs */ toPairs(): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { /** * @see _.toPairs */ toPairs(this: LoDashExplicitWrapper | NumericDictionary>): LoDashExplicitWrapper>; /** * @see _.toPairs */ toPairs(): LoDashExplicitWrapper>; } // toPairsIn interface LoDashStatic { /** * Creates an array of own and inherited enumerable key-value pairs for object. * * @param object The object to query. * @return Returns the new array of key-value pairs. */ toPairsIn(object?: Dictionary | NumericDictionary): Array<[string, T]>; /** * @see _.toPairsIn */ toPairsIn(object?: object): Array<[string, any]>; } interface LoDashImplicitWrapper { /** * @see _.toPairsIn */ toPairsIn(this: LoDashImplicitWrapper | NumericDictionary>): LoDashImplicitWrapper>; /** * @see _.toPairsIn */ toPairsIn(): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { /** * @see _.toPairsIn */ toPairsIn(this: LoDashExplicitWrapper | NumericDictionary>): LoDashExplicitWrapper>; /** * @see _.toPairsIn */ toPairsIn(): LoDashExplicitWrapper>; } // transform interface LoDashStatic { /** * An alternative to _.reduce; this method transforms object to a new accumulator object which is the result of * running each of its own enumerable properties through iteratee, with each invocation potentially mutating * the accumulator object. The iteratee is 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. * @return Returns the accumulated value. */ transform( object: T[], iteratee: MemoVoidArrayIterator, accumulator?: TResult[] ): TResult[]; /** * @see _.transform */ transform( object: T[], iteratee: MemoVoidArrayIterator>, accumulator: Dictionary ): Dictionary; /** * @see _.transform */ transform( object: Dictionary, iteratee: MemoVoidDictionaryIterator>, accumulator?: Dictionary ): Dictionary; /** * @see _.transform */ transform( object: Dictionary, iteratee: MemoVoidDictionaryIterator, accumulator: TResult[] ): TResult[]; /** * @see _.transform */ transform( object: any[], ): any[]; /** * @see _.transform */ transform( object: object, ): Dictionary; } interface LoDashImplicitWrapper { /** * @see _.transform */ transform( this: LoDashImplicitWrapper, iteratee: MemoVoidArrayIterator, accumulator?: TResult[] ): LoDashImplicitWrapper; /** * @see _.transform */ transform( this: LoDashImplicitWrapper, iteratee: MemoVoidArrayIterator>, accumulator: Dictionary ): LoDashImplicitWrapper>; /** * @see _.transform */ transform( this: LoDashImplicitWrapper>, iteratee: MemoVoidDictionaryIterator>, accumulator?: Dictionary ): LoDashImplicitWrapper>; /** * @see _.transform */ transform( this: LoDashImplicitWrapper>, iteratee: MemoVoidDictionaryIterator, accumulator: TResult[] ): LoDashImplicitWrapper; /** * @see _.transform */ transform( this: LoDashImplicitWrapper, ): LoDashImplicitWrapper; /** * @see _.transform */ transform(): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { /** * @see _.transform */ transform( this: LoDashExplicitWrapper, iteratee: MemoVoidArrayIterator, accumulator?: TResult[] ): LoDashExplicitWrapper; /** * @see _.transform */ transform( this: LoDashExplicitWrapper, iteratee: MemoVoidArrayIterator>, accumulator?: Dictionary ): LoDashExplicitWrapper>; /** * @see _.transform */ transform( this: LoDashExplicitWrapper>, iteratee: MemoVoidDictionaryIterator>, accumulator?: Dictionary ): LoDashExplicitWrapper>; /** * @see _.transform */ transform( this: LoDashExplicitWrapper>, iteratee: MemoVoidDictionaryIterator, accumulator?: TResult[] ): LoDashExplicitWrapper; /** * @see _.transform */ transform( this: LoDashExplicitWrapper, ): LoDashExplicitWrapper; /** * @see _.transform */ transform(): LoDashExplicitWrapper>; } // unset interface LoDashStatic { /** * Removes the property at path of object. * * Note: This method mutates object. * * @param object The object to modify. * @param path The path of the property to unset. * @return Returns true if the property is deleted, else false. */ unset( object: any, path: PropertyPath ): boolean; } interface LoDashImplicitWrapper { /** * @see _.unset */ unset(path: PropertyPath): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.unset */ unset(path: PropertyPath): LoDashExplicitWrapper; } // update interface LoDashStatic { /** * This method is like _.set except that accepts updater to produce the value to set. Use _.updateWith to * customize path creation. The updater is invoked with one argument: (value). * * @param object The object to modify. * @param path The path of the property to set. * @param updater The function to produce the updated value. * @return Returns object. */ update( object: object, path: PropertyPath, updater: (value: any) => any ): any; } interface LoDashImplicitWrapper { /** * @see _.update */ update( path: PropertyPath, updater: (value: any) => any ): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.update */ update( path: PropertyPath, updater: (value: any) => any ): LoDashExplicitWrapper; } // updateWith interface LoDashStatic { /** * This method is like `_.update` except that it accepts `customizer` which is * invoked to produce the objects of `path`. If `customizer` returns `undefined` * path creation is handled by the method instead. The `customizer` is invoked * with three arguments: (nsValue, key, nsObject). * * **Note:** This method mutates `object`. * * @since 4.6.0 * @category Object * @param object The object to modify. * @param path The path of the property to set. * @param updater The function to produce the updated value. * @param [customizer] The function to customize assigned values. * @returns Returns `object`. * @example * * var object = {}; * * _.updateWith(object, '[0][1]', _.constant('a'), Object); * // => { '0': { '1': 'a' } } */ updateWith( object: T, path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer ): T; /** * @see _.updateWith */ updateWith( object: T, path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer ): TResult; } interface LoDashImplicitWrapper { /** * @see _.updateWith */ updateWith( path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer ): this; /** * @see _.updateWith */ updateWith( path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer ): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.updateWith */ updateWith( path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer ): this; /** * @see _.updateWith */ updateWith( path: PropertyPath, updater: (oldValue: any) => any, customizer?: SetWithCustomizer ): LoDashExplicitWrapper; } // values interface LoDashStatic { /** * Creates an array of the own enumerable property values of object. * * @param object The object to query. * @return Returns an array of property values. */ values(object: Dictionary | NumericDictionary | List | null | undefined): T[]; /** * @see _.values */ values(object: T | null | undefined): Array; /** * @see _.values */ values(object: any): any[]; } interface LoDashImplicitWrapper { /** * @see _.values */ values(this: LoDashImplicitWrapper | NumericDictionary | List | null | undefined>): LoDashImplicitWrapper; /** * @see _.values */ values(this: LoDashImplicitWrapper): LoDashImplicitWrapper>; /** * @see _.values */ values(): LoDashImplicitWrapper; } interface LoDashExplicitWrapper { /** * @see _.values */ values(this: LoDashExplicitWrapper | NumericDictionary | List | null | undefined>): LoDashExplicitWrapper; /** * @see _.values */ values(this: LoDashExplicitWrapper): LoDashExplicitWrapper>; /** * @see _.values */ values(): LoDashExplicitWrapper; } // valuesIn interface LoDashStatic { /** * Creates an array of the own and inherited enumerable property values of object. * * @param object The object to query. * @return Returns the array of property values. */ valuesIn(object: Dictionary|NumericDictionary|List | null | undefined): T[]; /** * @see _.valuesIn */ valuesIn(object: T | null | undefined): Array; } interface LoDashImplicitWrapper { /** * @see _.valuesIn */ valuesIn(this: LoDashImplicitWrapper | NumericDictionary | List | null | undefined>): LoDashImplicitWrapper; /** * @see _.valuesIn */ valuesIn(this: LoDashImplicitWrapper): LoDashImplicitWrapper>; } interface LoDashExplicitWrapper { /** * @see _.valuesIn */ valuesIn(this: LoDashExplicitWrapper | NumericDictionary | List | null | undefined>): LoDashExplicitWrapper; /** * @see _.valuesIn */ valuesIn(this: LoDashExplicitWrapper): LoDashExplicitWrapper>; } }