diff --git a/flow-typed/npm/jest_v23.x.x.js b/flow-typed/npm/jest_v23.x.x.js index a6ac47578..23b66b07e 100644 --- a/flow-typed/npm/jest_v23.x.x.js +++ b/flow-typed/npm/jest_v23.x.x.js @@ -1,5 +1,5 @@ -// flow-typed signature: 4cacceffd326bb118e4a3c1b4d629e98 -// flow-typed version: e737b9832f/jest_v23.x.x/flow_>=v0.39.x +// flow-typed signature: f5a484315a3dea13d273645306e4076a +// flow-typed version: 7c5d14b3d4/jest_v23.x.x/flow_>=v0.39.x type JestMockFn, TReturn> = { (...args: TArguments): TReturn, @@ -65,14 +65,14 @@ type JestMockFn, TReturn> = { */ mockReturnThis(): void, /** - * Deprecated: use jest.fn(() => value) instead + * Accepts a value that will be returned whenever the mock function is called. */ mockReturnValue(value: TReturn): JestMockFn, /** * Sugar for only returning a value once inside your mock */ mockReturnValueOnce(value: TReturn): JestMockFn, - /** + /** * Sugar for jest.fn().mockImplementation(() => Promise.resolve(value)) */ mockResolvedValue(value: TReturn): JestMockFn>, @@ -140,6 +140,30 @@ type JestPromiseType = { */ type JestTestName = string | Function; +/** + * Plugin: jest-styled-components + */ + +type JestStyledComponentsMatcherValue = + | string + | JestAsymmetricEqualityType + | RegExp + | typeof undefined; + +type JestStyledComponentsMatcherOptions = { + media?: string; + modifier?: string; + supports?: string; +} + +type JestStyledComponentsMatchersType = { + toHaveStyleRule( + property: string, + value: JestStyledComponentsMatcherValue, + options?: JestStyledComponentsMatcherOptions + ): void, +}; + /** * Plugin: jest-enzyme */ @@ -500,7 +524,13 @@ type JestExtendedMatchersType = { }; interface JestExpectType { - not: JestExpectType & EnzymeMatchersType & DomTestingLibraryType & JestJQueryMatchersType & JestExtendedMatchersType, + not: + & JestExpectType + & EnzymeMatchersType + & DomTestingLibraryType + & JestJQueryMatchersType + & JestStyledComponentsMatchersType + & JestExtendedMatchersType, /** * If you have a mock function, you can use .lastCalledWith to test what * arguments it was last called with. @@ -664,6 +694,9 @@ interface JestExpectType { * This ensures that an Object matches the most recent snapshot. */ toMatchSnapshot(name: string): void, + + toMatchInlineSnapshot(snapshot?: string): void, + toMatchInlineSnapshot(propertyMatchers?: {[key: string]: JestAsymmetricEqualityType}, snapshot?: string): void, /** * Use .toThrow to test that a function throws when it is called. * If you want to test that a specific error gets thrown, you can provide an @@ -678,7 +711,8 @@ interface JestExpectType { * Use .toThrowErrorMatchingSnapshot to test that a function throws a error * matching the most recent snapshot when it is called. */ - toThrowErrorMatchingSnapshot(): void + toThrowErrorMatchingSnapshot(): void, + toThrowErrorMatchingInlineSnapshot(snapshot?: string): void, } type JestObjectType = { @@ -897,6 +931,17 @@ declare var it: { fn?: (done: () => void) => ?Promise, timeout?: number ): void, + /** + * each runs this test against array of argument arrays per each run + * + * @param {table} table of Test + */ + each( + table: Array> + ): ( + name: JestTestName, + fn?: (...args: Array) => ?Promise + ) => void, /** * Only run this test * @@ -908,7 +953,14 @@ declare var it: { name: JestTestName, fn?: (done: () => void) => ?Promise, timeout?: number - ): void, + ): { + each( + table: Array> + ): ( + name: JestTestName, + fn?: (...args: Array) => ?Promise + ) => void, + }, /** * Skip running this test * @@ -999,7 +1051,15 @@ type JestPrettyFormatPlugins = Array; /** The expect function is used every time you want to test a value */ declare var expect: { /** The object that you want to make assertions against */ - (value: any): JestExpectType & JestPromiseType & EnzymeMatchersType & DomTestingLibraryType & JestJQueryMatchersType & JestExtendedMatchersType, + (value: any): + & JestExpectType + & JestPromiseType + & EnzymeMatchersType + & DomTestingLibraryType + & JestJQueryMatchersType + & JestStyledComponentsMatchersType + & JestExtendedMatchersType, + /** Add additional Jasmine matchers to Jest's roster */ extend(matchers: { [name: string]: JestMatcher }): void, /** Add a module that formats application-specific data structures. */ diff --git a/flow-typed/npm/lodash_v4.x.x.js b/flow-typed/npm/lodash_v4.x.x.js index 63a0838b5..951225d17 100644 --- a/flow-typed/npm/lodash_v4.x.x.js +++ b/flow-typed/npm/lodash_v4.x.x.js @@ -1,5976 +1,5991 @@ -// flow-typed signature: a0ace6ecf9cb0e9f971f651691137591 -// flow-typed version: e4e1d58043/lodash_v4.x.x/flow_>=v0.63.x - -declare module "lodash" { - declare type __CurriedFunction1 = (...r: [AA]) => R; - declare type CurriedFunction1 = __CurriedFunction1; - - declare type __CurriedFunction2 = (( - ...r: [AA] - ) => CurriedFunction1) & - ((...r: [AA, BB]) => R); - declare type CurriedFunction2 = __CurriedFunction2; - - declare type __CurriedFunction3 = (( - ...r: [AA] - ) => CurriedFunction2) & - ((...r: [AA, BB]) => CurriedFunction1) & - ((...r: [AA, BB, CC]) => R); - declare type CurriedFunction3 = __CurriedFunction3< - A, - B, - C, - R, - *, - *, - * - >; - - declare type __CurriedFunction4< - A, - B, - C, - D, - R, - AA: A, - BB: B, - CC: C, - DD: D - > = ((...r: [AA]) => CurriedFunction3) & - ((...r: [AA, BB]) => CurriedFunction2) & - ((...r: [AA, BB, CC]) => CurriedFunction1) & - ((...r: [AA, BB, CC, DD]) => R); - declare type CurriedFunction4 = __CurriedFunction4< - A, - B, - C, - D, - R, - *, - *, - *, - * - >; - - declare type __CurriedFunction5< - A, - B, - C, - D, - E, - R, - AA: A, - BB: B, - CC: C, - DD: D, - EE: E - > = ((...r: [AA]) => CurriedFunction4) & - ((...r: [AA, BB]) => CurriedFunction3) & - ((...r: [AA, BB, CC]) => CurriedFunction2) & - ((...r: [AA, BB, CC, DD]) => CurriedFunction1) & - ((...r: [AA, BB, CC, DD, EE]) => R); - declare type CurriedFunction5 = __CurriedFunction5< - A, - B, - C, - D, - E, - R, - *, - *, - *, - *, - * - >; - - declare type __CurriedFunction6< - A, - B, - C, - D, - E, - F, - R, - AA: A, - BB: B, - CC: C, - DD: D, - EE: E, - FF: F - > = ((...r: [AA]) => CurriedFunction5) & - ((...r: [AA, BB]) => CurriedFunction4) & - ((...r: [AA, BB, CC]) => CurriedFunction3) & - ((...r: [AA, BB, CC, DD]) => CurriedFunction2) & - ((...r: [AA, BB, CC, DD, EE]) => CurriedFunction1) & - ((...r: [AA, BB, CC, DD, EE, FF]) => R); - declare type CurriedFunction6 = __CurriedFunction6< - A, - B, - C, - D, - E, - F, - R, - *, - *, - *, - *, - *, - * - >; - - declare type Curry = (((...r: [A]) => R) => CurriedFunction1) & - (((...r: [A, B]) => R) => CurriedFunction2) & - (((...r: [A, B, C]) => R) => CurriedFunction3) & - (( - (...r: [A, B, C, D]) => R - ) => CurriedFunction4) & - (( - (...r: [A, B, C, D, E]) => R - ) => CurriedFunction5) & - (( - (...r: [A, B, C, D, E, F]) => R - ) => CurriedFunction6); - - declare type UnaryFn = (a: A) => R; - - declare type TemplateSettings = { - escape?: RegExp, - evaluate?: RegExp, - imports?: Object, - interpolate?: RegExp, - variable?: string - }; - - declare type TruncateOptions = { - length?: number, - omission?: string, - separator?: RegExp | string - }; - - declare type DebounceOptions = { - leading?: boolean, - maxWait?: number, - trailing?: boolean - }; - - declare type ThrottleOptions = { - leading?: boolean, - trailing?: boolean - }; - - declare type NestedArray = Array>; - - declare type matchesIterateeShorthand = Object; - declare type matchesPropertyIterateeShorthand = [string, any]; - declare type propertyIterateeShorthand = string; - - declare type OPredicate = - | ((value: A, key: string, object: O) => any) - | matchesIterateeShorthand - | matchesPropertyIterateeShorthand - | propertyIterateeShorthand; - - declare type OIterateeWithResult = - | Object - | string - | ((value: V, key: string, object: O) => R); - declare type OIteratee = OIterateeWithResult; - declare type OFlatMapIteratee = OIterateeWithResult>; - - declare type Predicate = - | ((value: T, index: number, array: Array) => any) - | matchesIterateeShorthand - | matchesPropertyIterateeShorthand - | propertyIterateeShorthand; - - declare type _ValueOnlyIteratee = (value: T) => mixed; - declare type ValueOnlyIteratee = _ValueOnlyIteratee | string; - declare type _Iteratee = ( - item: T, - index: number, - array: ?Array - ) => mixed; - declare type Iteratee = _Iteratee | Object | string; - declare type FlatMapIteratee = - | ((item: T, index: number, array: ?Array) => Array) - | Object - | string; - declare type Comparator = (item: T, item2: T) => boolean; - - declare type MapIterator = - | ((item: T, index: number, array: Array) => U) - | propertyIterateeShorthand; - - declare type ReadOnlyMapIterator = - | ((item: T, index: number, array: $ReadOnlyArray) => U) - | propertyIterateeShorthand; - - declare type OMapIterator = - | ((item: T, key: string, object: O) => U) - | propertyIterateeShorthand; - - declare class Lodash { - // Array - chunk(array?: ?Array, size?: ?number): Array>; - compact(array?: ?Array): Array; - concat(base?: ?Array, ...elements: Array): Array; - difference(array?: ?$ReadOnlyArray, values?: ?$ReadOnlyArray): Array; - differenceBy( - array?: ?$ReadOnlyArray, - values?: ?$ReadOnlyArray, - iteratee?: ?ValueOnlyIteratee - ): T[]; - differenceWith(array?: ?$ReadOnlyArray, values?: ?$ReadOnlyArray, comparator?: ?Comparator): T[]; - drop(array?: ?Array, n?: ?number): Array; - dropRight(array?: ?Array, n?: ?number): Array; - dropRightWhile(array?: ?Array, predicate?: ?Predicate): Array; - dropWhile(array?: ?Array, predicate?: ?Predicate): Array; - fill( - array?: ?Array, - value?: ?U, - start?: ?number, - end?: ?number - ): Array; - findIndex( - array: $ReadOnlyArray, - predicate?: ?Predicate, - fromIndex?: ?number - ): number; - findIndex( - array: void | null, - predicate?: ?Predicate, - fromIndex?: ?number - ): -1; - findLastIndex( - array: $ReadOnlyArray, - predicate?: ?Predicate, - fromIndex?: ?number - ): number; - findLastIndex( - array: void | null, - predicate?: ?Predicate, - fromIndex?: ?number - ): -1; - // alias of _.head - first(array: ?Array): T; - flatten(array?: ?Array | X>): Array; - flattenDeep(array?: ?any[]): Array; - flattenDepth(array?: ?any[], depth?: ?number): any[]; - fromPairs(pairs?: ?Array<[A, B]>): { [key: A]: B }; - head(array: ?Array): T; - indexOf(array: Array, value: T, fromIndex?: number): number; - indexOf(array: void | null, value?: ?T, fromIndex?: ?number): -1; - initial(array: ?Array): Array; - intersection(...arrays?: Array>): Array; - //Workaround until (...parameter: T, parameter2: U) works - intersectionBy(a1?: ?Array, iteratee?: ?ValueOnlyIteratee): Array; - intersectionBy( - a1?: ?Array, - a2?: ?Array, - iteratee?: ?ValueOnlyIteratee - ): Array; - intersectionBy( - a1?: ?Array, - a2?: ?Array, - a3?: ?Array, - iteratee?: ?ValueOnlyIteratee - ): Array; - intersectionBy( - a1?: ?Array, - a2?: ?Array, - a3?: ?Array, - a4?: ?Array, - iteratee?: ?ValueOnlyIteratee - ): Array; - //Workaround until (...parameter: T, parameter2: U) works - intersectionWith(a1?: ?Array, comparator?: ?Comparator): Array; - intersectionWith( - a1?: ?Array, - a2?: ?Array, - comparator?: ?Comparator - ): Array; - intersectionWith( - a1?: ?Array, - a2?: ?Array, - a3?: ?Array, - comparator?: ?Comparator - ): Array; - intersectionWith( - a1?: ?Array, - a2?: ?Array, - a3?: ?Array, - a4?: ?Array, - comparator?: ?Comparator - ): Array; - join(array: Array, separator?: ?string): string; - join(array: void | null, separator?: ?string): ''; - last(array: ?Array): T; - lastIndexOf(array: Array, value?: ?T, fromIndex?: ?number): number; - lastIndexOf(array: void | null, value?: ?T, fromIndex?: ?number): -1; - nth(array: T[], n?: ?number): T; - nth(array: void | null, n?: ?number): void; - pull(array: Array, ...values?: Array): Array; - pull(array: T, ...values?: Array): T; - pullAll(array: Array, values?: ?Array): Array; - pullAll(array: T, values?: ?Array): T; - pullAllBy( - array: Array, - values?: ?Array, - iteratee?: ?ValueOnlyIteratee - ): Array; - pullAllBy( - array: T, - values?: ?Array, - iteratee?: ?ValueOnlyIteratee - ): T; - pullAllWith(array: T[], values?: ?T[], comparator?: ?Function): T[]; - pullAllWith(array: T, values?: ?Array, comparator?: ?Function): T; - pullAt(array?: ?Array, ...indexed?: Array): Array; - pullAt(array?: ?Array, indexed?: ?Array): Array; - remove(array?: ?Array, predicate?: ?Predicate): Array; - reverse(array: Array): Array; - reverse(array: T): T; - slice(array?: ?Array, start?: ?number, end?: ?number): Array; - sortedIndex(array: Array, value: T): number; - sortedIndex(array: void | null, value: ?T): 0; - sortedIndexBy( - array: Array, - value?: ?T, - iteratee?: ?ValueOnlyIteratee - ): number; - sortedIndexBy( - array: void | null, - value?: ?T, - iteratee?: ?ValueOnlyIteratee - ): 0; - sortedIndexOf(array: Array, value: T): number; - sortedIndexOf(array: void | null, value?: ?T): -1; - sortedLastIndex(array: Array, value: T): number; - sortedLastIndex(array: void | null, value?: ?T): 0; - sortedLastIndexBy( - array: Array, - value: T, - iteratee?: ValueOnlyIteratee - ): number; - sortedLastIndexBy( - array: void | null, - value?: ?T, - iteratee?: ?ValueOnlyIteratee - ): 0; - sortedLastIndexOf(array: Array, value: T): number; - sortedLastIndexOf(array: void | null, value?: ?T): -1; - sortedUniq(array?: ?Array): Array; - sortedUniqBy(array?: ?Array, iteratee?: ?(value: T) => mixed): Array; - tail(array?: ?Array): Array; - take(array?: ?Array, n?: ?number): Array; - takeRight(array?: ?Array, n?: ?number): Array; - takeRightWhile(array?: ?Array, predicate?: ?Predicate): Array; - takeWhile(array?: ?Array, predicate?: ?Predicate): Array; - union(...arrays?: Array>): Array; - //Workaround until (...parameter: T, parameter2: U) works - unionBy(a1?: ?Array, iteratee?: ?ValueOnlyIteratee): Array; - unionBy( - a1?: ?Array, - a2: Array, - iteratee?: ValueOnlyIteratee - ): Array; - unionBy( - a1: Array, - a2: Array, - a3: Array, - iteratee?: ValueOnlyIteratee - ): Array; - unionBy( - a1: Array, - a2: Array, - a3: Array, - a4: Array, - iteratee?: ValueOnlyIteratee - ): Array; - //Workaround until (...parameter: T, parameter2: U) works - unionWith(a1?: ?Array, comparator?: ?Comparator): Array; - unionWith( - a1: Array, - a2: Array, - comparator?: Comparator - ): Array; - unionWith( - a1: Array, - a2: Array, - a3: Array, - comparator?: Comparator - ): Array; - unionWith( - a1: Array, - a2: Array, - a3: Array, - a4: Array, - comparator?: Comparator - ): Array; - uniq(array?: ?Array): Array; - uniqBy(array?: ?Array, iteratee?: ?ValueOnlyIteratee): Array; - uniqWith(array?: ?Array, comparator?: ?Comparator): Array; - unzip(array?: ?Array): Array; - unzipWith(array: ?Array, iteratee?: ?Iteratee): Array; - without(array?: ?Array, ...values?: Array): Array; - xor(...array: Array>): Array; - //Workaround until (...parameter: T, parameter2: U) works - xorBy(a1?: ?Array, iteratee?: ?ValueOnlyIteratee): Array; - xorBy( - a1: Array, - a2: Array, - iteratee?: ValueOnlyIteratee - ): Array; - xorBy( - a1: Array, - a2: Array, - a3: Array, - iteratee?: ValueOnlyIteratee - ): Array; - xorBy( - a1: Array, - a2: Array, - a3: Array, - a4: Array, - iteratee?: ValueOnlyIteratee - ): Array; - //Workaround until (...parameter: T, parameter2: U) works - xorWith(a1?: ?Array, comparator?: ?Comparator): Array; - xorWith( - a1: Array, - a2: Array, - comparator?: Comparator - ): Array; - xorWith( - a1: Array, - a2: Array, - a3: Array, - comparator?: Comparator - ): Array; - xorWith( - a1: Array, - a2: Array, - a3: Array, - a4: Array, - comparator?: Comparator - ): Array; - zip(a1?: ?A[], a2?: ?B[]): Array<[A, B]>; - zip(a1: A[], a2: B[], a3: C[]): Array<[A, B, C]>; - zip(a1: A[], a2: B[], a3: C[], a4: D[]): Array<[A, B, C, D]>; - zip( - a1: A[], - a2: B[], - a3: C[], - a4: D[], - a5: E[] - ): Array<[A, B, C, D, E]>; - - zipObject(props: Array, values?: ?Array): { [key: K]: V }; - zipObject(props: void | null, values?: ?Array): {}; - zipObjectDeep(props: any[], values?: ?any): Object; - zipObjectDeep(props: void | null, values?: ?any): {}; - - zipWith(a1?: ?Array): Array<[A]>; - zipWith(a1: Array, iteratee: (A) => T): Array; - - zipWith(a1: Array, a2: Array): Array<[A, B]>; - zipWith( - a1: Array, - a2: Array, - iteratee: (A, B) => T - ): Array; - - zipWith( - a1: Array, - a2: Array, - a3: Array - ): Array<[A, B, C]>; - zipWith( - a1: Array, - a2: Array, - a3: Array, - iteratee: (A, B, C) => T - ): Array; - - zipWith( - a1: Array, - a2: Array, - a3: Array, - a4: Array - ): Array<[A, B, C, D]>; - zipWith( - a1: Array, - a2: Array, - a3: Array, - a4: Array, - iteratee: (A, B, C, D) => T - ): Array; - - // Collection - countBy(array: Array, iteratee?: ?ValueOnlyIteratee): Object; - countBy(array: void | null, iteratee?: ?ValueOnlyIteratee): {}; - countBy(object: T, iteratee?: ?ValueOnlyIteratee): Object; - // alias of _.forEach - each(array: Array, iteratee?: ?Iteratee): Array; - each(array: T, iteratee?: ?Iteratee): T; - each(object: T, iteratee?: ?OIteratee): T; - // alias of _.forEachRight - eachRight(array: Array, iteratee?: ?Iteratee): Array; - eachRight(array: T, iteratee?: ?Iteratee): T; - eachRight(object: T, iteratee?: OIteratee): T; - every(array?: ?Array, iteratee?: ?Iteratee): boolean; - every(object: T, iteratee?: OIteratee): boolean; - filter(array?: ?Array, predicate?: ?Predicate): Array; - filter( - object: T, - predicate?: OPredicate - ): Array; - find( - array: $ReadOnlyArray, - predicate?: ?Predicate, - fromIndex?: ?number - ): T | void; - find( - array: void | null, - predicate?: ?Predicate, - fromIndex?: ?number - ): void; - find( - object: T, - predicate?: OPredicate, - fromIndex?: number - ): V; - findLast( - array: ?$ReadOnlyArray, - predicate?: ?Predicate, - fromIndex?: ?number - ): T | void; - findLast( - object: T, - predicate?: ?OPredicate - ): V; - flatMap(array?: ?Array, iteratee?: ?FlatMapIteratee): Array; - flatMap( - object: T, - iteratee?: OFlatMapIteratee - ): Array; - flatMapDeep( - array?: ?Array, - iteratee?: ?FlatMapIteratee - ): Array; - flatMapDeep( - object: T, - iteratee?: ?OFlatMapIteratee - ): Array; - flatMapDepth( - array?: ?Array, - iteratee?: ?FlatMapIteratee, - depth?: ?number - ): Array; - flatMapDepth( - object: T, - iteratee?: OFlatMapIteratee, - depth?: number - ): Array; - forEach(array: Array, iteratee?: ?Iteratee): Array; - forEach(array: T, iteratee?: ?Iteratee): T; - forEach(object: T, iteratee?: ?OIteratee): T; - forEachRight(array: Array, iteratee?: ?Iteratee): Array; - forEachRight(array: T, iteratee?: ?Iteratee): T; - forEachRight(object: T, iteratee?: ?OIteratee): T; - groupBy( - array: Array, - iteratee?: ?ValueOnlyIteratee - ): { [key: V]: Array }; - groupBy( - array: void | null, - iteratee?: ?ValueOnlyIteratee - ): {}; - groupBy( - object: T, - iteratee?: ValueOnlyIteratee - ): { [key: V]: Array }; - includes(array: Array, value: T, fromIndex?: ?number): boolean; - includes(array: void | null, value?: ?T, fromIndex?: ?number): false; - includes(object: T, value: any, fromIndex?: number): boolean; - includes(str: string, value: string, fromIndex?: number): boolean; - invokeMap( - array?: ?Array, - path?: ?((value: T) => Array | string) | Array | string, - ...args?: Array - ): Array; - invokeMap( - object: T, - path: ((value: any) => Array | string) | Array | string, - ...args?: Array - ): Array; - keyBy( - array: Array, - iteratee?: ?ValueOnlyIteratee - ): { [key: V]: ?T }; - keyBy( - array: void | null, - iteratee?: ?ValueOnlyIteratee<*> - ): {}; - keyBy( - object: T, - iteratee?: ?ValueOnlyIteratee - ): { [key: V]: ?A }; - map(array?: ?Array, iteratee?: ?MapIterator): Array; - map( - array: ?$ReadOnlyArray, - iteratee?: ReadOnlyMapIterator - ): Array, - map( - object: ?T, - iteratee?: OMapIterator - ): Array; - map( - str: ?string, - iteratee?: (char: string, index: number, str: string) => any - ): string; - orderBy( - array: Array, - iteratees?: ?Array> | ?string, - orders?: ?Array<"asc" | "desc"> | ?string - ): Array; - orderBy( - array: null | void, - iteratees?: ?Array> | ?string, - orders?: ?Array<"asc" | "desc"> | ?string - ): Array; - orderBy( - object: T, - iteratees?: Array> | string, - orders?: Array<"asc" | "desc"> | string - ): Array; - partition( - array?: ?Array, - predicate?: ?Predicate - ): [Array, Array]; - partition( - object: T, - predicate?: OPredicate - ): [Array, Array]; - reduce( - array: Array, - iteratee?: ( - accumulator: U, - value: T, - index: number, - array: ?Array - ) => U, - accumulator?: U - ): U; - reduce( - array: void | null, - iteratee?: ?( - accumulator: U, - value: T, - index: number, - array: ?Array - ) => U, - accumulator?: ?U - ): void | null; - reduce( - object: T, - iteratee?: (accumulator: U, value: any, key: string, object: T) => U, - accumulator?: U - ): U; - reduceRight( - array: void | null, - iteratee?: ?( - accumulator: U, - value: T, - index: number, - array: ?Array - ) => U, - accumulator?: ?U - ): void | null; - reduceRight( - array: Array, - iteratee?: ?( - accumulator: U, - value: T, - index: number, - array: ?Array - ) => U, - accumulator?: ?U - ): U; - reduceRight( - object: T, - iteratee?: ?(accumulator: U, value: any, key: string, object: T) => U, - accumulator?: ?U - ): U; - reject(array: ?Array, predicate?: Predicate): Array; - reject( - object?: ?T, - predicate?: ?OPredicate - ): Array; - sample(array: ?Array): T; - sample(object: T): V; - sampleSize(array?: ?Array, n?: ?number): Array; - sampleSize(object: T, n?: number): Array; - shuffle(array: ?Array): Array; - shuffle(object: T): Array; - size(collection: Array | Object | string): number; - some(array: ?Array, predicate?: Predicate): boolean; - some(array: void | null, predicate?: ?Predicate): false; - some( - object?: ?T, - predicate?: OPredicate - ): boolean; - sortBy(array: ?Array, ...iteratees?: Array>): Array; - sortBy(array: ?Array, iteratees?: Array>): Array; - sortBy( - object: T, - ...iteratees?: Array> - ): Array; - sortBy(object: T, iteratees?: Array>): Array; - - // Date - now(): number; - - // Function - after(n: number, fn: Function): Function; - ary(func: Function, n?: number): Function; - before(n: number, fn: Function): Function; - bind(func: Function, thisArg: any, ...partials: Array): Function; - bindKey(obj?: ?Object, key?: ?string, ...partials?: Array): Function; - curry: Curry; - curry(func: Function, arity?: number): Function; - curryRight(func: Function, arity?: number): Function; - debounce(func: F, wait?: number, options?: DebounceOptions): F; - defer(func: Function, ...args?: Array): TimeoutID; - delay(func: Function, wait: number, ...args?: Array): TimeoutID; - flip(func: Function): Function; - memoize(func: F, resolver?: Function): F; - negate(predicate: Function): Function; - once(func: Function): Function; - overArgs(func?: ?Function, ...transforms?: Array): Function; - overArgs(func?: ?Function, transforms?: ?Array): Function; - partial(func: Function, ...partials: any[]): Function; - partialRight(func: Function, ...partials: Array): Function; - partialRight(func: Function, partials: Array): Function; - rearg(func: Function, ...indexes: Array): Function; - rearg(func: Function, indexes: Array): Function; - rest(func: Function, start?: number): Function; - spread(func: Function): Function; - throttle( - func: Function, - wait?: number, - options?: ThrottleOptions - ): Function; - unary(func: Function): Function; - wrap(value?: any, wrapper?: ?Function): Function; - - // Lang - castArray(value: *): any[]; - clone(value: T): T; - cloneDeep(value: T): T; - cloneDeepWith( - value: T, - customizer?: ?(value: T, key: number | string, object: T, stack: any) => U - ): U; - cloneWith( - value: T, - customizer?: ?(value: T, key: number | string, object: T, stack: any) => U - ): U; - conformsTo( - source: T, - predicates: T & { [key: string]: (x: any) => boolean } - ): boolean; - eq(value: any, other: any): boolean; - gt(value: any, other: any): boolean; - gte(value: any, other: any): boolean; - isArguments(value: void | null): false; - isArguments(value: any): boolean; - isArray(value: Array): true; - isArray(value: any): false; - isArrayBuffer(value: ArrayBuffer): true; - isArrayBuffer(value: any): false; - isArrayLike(value: Array | string | {length: number}): true; - isArrayLike(value: any): false; - isArrayLikeObject(value: {length: number} | Array): true; - isArrayLikeObject(value: any): false; - isBoolean(value: boolean): true; - isBoolean(value: any): false; - isBuffer(value: void | null): false; - isBuffer(value: any): boolean; - isDate(value: Date): true; - isDate(value: any): false; - isElement(value: Element): true; - isElement(value: any): false; - isEmpty(value: void | null | '' | {} | [] | number | boolean): true; - isEmpty(value: any): boolean; - isEqual(value: any, other: any): boolean; - isEqualWith( - value?: ?T, - other?: ?U, - customizer?: ?( - objValue: any, - otherValue: any, - key: number | string, - object: T, - other: U, - stack: any - ) => boolean | void - ): boolean; - isError(value: Error): true; - isError(value: any): false; - isFinite(value: number): boolean; - isFinite(value: any): false; - isFunction(value: Function): true; - isFunction(value: any): false; - isInteger(value: number): boolean; - isInteger(value: any): false; - isLength(value: void | null): false; - isLength(value: any): boolean; - isMap(value: Map): true; - isMap(value: any): false; - isMatch(object?: ?Object, source?: ?Object): boolean; - isMatchWith( - object?: ?T, - source?: ?U, - customizer?: ?( - objValue: any, - srcValue: any, - key: number | string, - object: T, - source: U - ) => boolean | void - ): boolean; - isNaN(value: Function | string | void | null | Object): false; - isNaN(value: number): boolean; - isNative(value: number | string | void | null | Object): false; - isNative(value: any): boolean; - isNil(value: void | null): true; - isNil(value: any): false; - isNull(value: null): true; - isNull(value: any): false; - isNumber(value: number): true; - isNumber(value: any): false; - isObject(value: Object): true; - isObject(value: any): false; - isObjectLike(value: void | null): false; - isObjectLike(value: any): boolean; - isPlainObject(value: Object): true; - isPlainObject(value: any): false; - isRegExp(value: RegExp): true; - isRegExp(value: any): false; - isSafeInteger(value: number): boolean; - isSafeInteger(value: any): false; - isSet(value: Set): true; - isSet(value: any): false; - isString(value: string): true; - isString( - value: number | boolean | Function | void | null | Object | Array - ): false; - isSymbol(value: Symbol): true; - isSymbol(value: any): false; - isTypedArray(value: $TypedArray): true; - isTypedArray(value: any): false; - isUndefined(value: void): true; - isUndefined(value: any): false; - isWeakMap(value: WeakMap): true; - isWeakMap(value: any): false; - isWeakSet(value: WeakSet): true; - isWeakSet(value: any): false; - lt(value: any, other: any): boolean; - lte(value: any, other: any): boolean; - toArray(value: any): Array; - toFinite(value: void | null): 0; - toFinite(value: any): number; - toInteger(value: void | null): 0; - toInteger(value: any): number; - toLength(value: void | null): 0; - toLength(value: any): number; - toNumber(value: void | null): 0; - toNumber(value: any): number; - toPlainObject(value: any): Object; - toSafeInteger(value: void | null): 0; - toSafeInteger(value: any): number; - toString(value: void | null): ''; - toString(value: any): string; - - // Math - add(augend: number, addend: number): number; - ceil(number: number, precision?: number): number; - divide(dividend: number, divisor: number): number; - floor(number: number, precision?: number): number; - max(array: ?Array): T; - maxBy(array: ?Array, iteratee?: Iteratee): T; - mean(array: Array<*>): number; - meanBy(array: Array, iteratee?: Iteratee): number; - min(array: ?Array): T; - minBy(array: ?Array, iteratee?: Iteratee): T; - multiply(multiplier: number, multiplicand: number): number; - round(number: number, precision?: number): number; - subtract(minuend: number, subtrahend: number): number; - sum(array: Array<*>): number; - sumBy(array: Array, iteratee?: Iteratee): number; - - // number - clamp(number?: number, lower?: ?number, upper?: ?number): number; - clamp(number: ?number, lower?: ?number, upper?: ?number): 0; - inRange(number: number, start?: number, end: number): boolean; - random(lower?: number, upper?: number, floating?: boolean): number; - - // Object - assign(object?: ?Object, ...sources?: Array): Object; - assignIn(): {}; - assignIn(a: A, b: B): A & B; - assignIn(a: A, b: B, c: C): A & B & C; - assignIn(a: A, b: B, c: C, d: D): A & B & C & D; - assignIn(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E; - assignInWith(): {}; - assignInWith( - object: T, - s1: A, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void - ): Object; - assignInWith( - object: T, - s1: A, - s2: B, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B - ) => any | void - ): Object; - assignInWith( - object: T, - s1: A, - s2: B, - s3: C, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C - ) => any | void - ): Object; - assignInWith( - object: T, - s1: A, - s2: B, - s3: C, - s4: D, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C | D - ) => any | void - ): Object; - assignWith(): {}; - assignWith( - object: T, - s1: A, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void - ): Object; - assignWith( - object: T, - s1: A, - s2: B, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B - ) => any | void - ): Object; - assignWith( - object: T, - s1: A, - s2: B, - s3: C, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C - ) => any | void - ): Object; - assignWith( - object: T, - s1: A, - s2: B, - s3: C, - s4: D, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C | D - ) => any | void - ): Object; - at(object?: ?Object, ...paths: Array): Array; - at(object?: ?Object, paths: Array): Array; - create(prototype: T, properties: Object): $Supertype; - create(prototype: any, properties: void | null): {}; - defaults(object?: ?Object, ...sources?: Array): Object; - defaultsDeep(object?: ?Object, ...sources?: Array): Object; - // alias for _.toPairs - entries(object?: ?Object): Array<[string, any]>; - // alias for _.toPairsIn - entriesIn(object?: ?Object): Array<[string, any]>; - // alias for _.assignIn - extend(a?: ?A, b?: ?B): A & B; - extend(a: A, b: B, c: C): A & B & C; - extend(a: A, b: B, c: C, d: D): A & B & C & D; - extend(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E; - // alias for _.assignInWith - extendWith( - object?: ?T, - s1?: ?A, - customizer?: ?( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void - ): Object; - extendWith( - object: T, - s1: A, - s2: B, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B - ) => any | void - ): Object; - extendWith( - object: T, - s1: A, - s2: B, - s3: C, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C - ) => any | void - ): Object; - extendWith( - object: T, - s1: A, - s2: B, - s3: C, - s4: D, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C | D - ) => any | void - ): Object; - findKey( - object: T, - predicate?: ?OPredicate - ): string | void; - findKey( - object: void | null, - predicate?: ?OPredicate - ): void; - findLastKey( - object: T, - predicate?: ?OPredicate - ): string | void; - findLastKey( - object: void | null, - predicate?: ?OPredicate - ): void; - forIn(object: Object, iteratee?: ?OIteratee<*>): Object; - forIn(object: void | null, iteratee?: ?OIteratee<*>): null; - forInRight(object: Object, iteratee?: ?OIteratee<*>): Object; - forInRight(object: void | null, iteratee?: ?OIteratee<*>): null; - forOwn(object: Object, iteratee?: ?OIteratee<*>): Object; - forOwn(object: void | null, iteratee?: ?OIteratee<*>): null; - forOwnRight(object: Object, iteratee?: ?OIteratee<*>): Object; - forOwnRight(object: void | null, iteratee?: ?OIteratee<*>): null; - functions(object?: ?Object): Array; - functionsIn(object?: ?Object): Array; - get( - object?: ?Object | ?Array, - path?: ?Array | string, - defaultValue?: any - ): any; - has(object: Object, path: Array | string): boolean; - has(object: Object, path: void | null): false; - has(object: void | null, path?: ?Array | ?string): false; - hasIn(object: Object, path: Array | string): boolean; - hasIn(object: Object, path: void | null): false; - hasIn(object: void | null, path?: ?Array | ?string): false; - invert(object: Object, multiVal?: ?boolean): Object; - invert(object: void | null, multiVal?: ?boolean): {}; - invertBy(object: Object, iteratee?: ?Function): Object; - invertBy(object: void | null, iteratee?: ?Function): {}; - invoke( - object?: ?Object, - path?: ?Array | string, - ...args?: Array - ): any; - keys(object?: ?{ [key: K]: any }): Array; - keys(object?: ?Object): Array; - keysIn(object?: ?Object): Array; - mapKeys(object: Object, iteratee?: ?OIteratee<*>): Object; - mapKeys(object: void | null, iteratee?: ?OIteratee<*>): {}; - mapValues(object: Object, iteratee?: ?OIteratee<*>): Object; - mapValues(object: void | null, iteratee?: ?OIteratee<*>): {}; - merge(object?: ?Object, ...sources?: Array): Object; - mergeWith(): {}; - mergeWith( - object: T, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void - ): Object; - mergeWith( - object: T, - s1: A, - s2: B, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B - ) => any | void - ): Object; - mergeWith( - object: T, - s1: A, - s2: B, - s3: C, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C - ) => any | void - ): Object; - mergeWith( - object: T, - s1: A, - s2: B, - s3: C, - s4: D, - customizer?: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B | C | D - ) => any | void - ): Object; - omit(object?: ?Object, ...props: Array): Object; - omit(object?: ?Object, props: Array): Object; - omitBy( - object: T, - predicate?: ?OPredicate - ): Object; - omitBy( - object: T, - predicate?: ?OPredicate - ): {}; - pick(object?: ?Object, ...props: Array): Object; - pick(object?: ?Object, props: Array): Object; - pickBy( - object: T, - predicate?: ?OPredicate - ): Object; - pickBy( - object: T, - predicate?: ?OPredicate - ): {}; - result( - object?: ?Object, - path?: ?Array | string, - defaultValue?: any - ): any; - set(object: Object, path?: ?Array | string, value: any): Object; - set( - object: T, - path?: ?Array | string, - value?: ?any): T; - setWith( - object: T, - path?: ?Array | string, - value: any, - customizer?: (nsValue: any, key: string, nsObject: T) => any - ): Object; - setWith( - object: T, - path?: ?Array | string, - value?: ?any, - customizer?: ?(nsValue: any, key: string, nsObject: T) => any - ): T; - toPairs(object?: ?Object | Array<*>): Array<[string, any]>; - toPairsIn(object?: ?Object): Array<[string, any]>; - transform( - collection: Object | Array, - iteratee?: ?OIteratee<*>, - accumulator?: any - ): any; - transform( - collection: void | null, - iteratee?: ?OIteratee<*>, - accumulator?: ?any - ): {}; - unset(object: Object, path?: ?Array | ?string): boolean; - unset(object: void | null, path?: ?Array | ?string): true; - update(object: Object, path: string[] | string, updater: Function): Object; - update( - object: T, - path?: ?string[] | ?string, - updater?: ?Function): T; - updateWith( - object: Object, - path?: ?string[] | ?string, - updater?: ?Function, - customizer?: ?Function - ): Object; - updateWith( - object: T, - path?: ?string[] | ?string, - updater?: ?Function, - customizer?: ?Function - ): T; - values(object?: ?Object): Array; - valuesIn(object?: ?Object): Array; - - // Seq - // harder to read, but this is _() - (value: any): any; - chain(value: T): any; - tap(value: T, interceptor: (value: T) => any): T; - thru(value: T1, interceptor: (value: T1) => T2): T2; - // TODO: _.prototype.* - - // String - camelCase(string: string): string; - camelCase(string: void | null): ''; - capitalize(string: string): string; - capitalize(string: void | null): ''; - deburr(string: string): string; - deburr(string: void | null): ''; - endsWith(string: string, target?: string, position?: ?number): boolean; - endsWith(string: void | null, target?: ?string, position?: ?number): false; - escape(string: string): string; - escape(string: void | null): ''; - escapeRegExp(string: string): string; - escapeRegExp(string: void | null): ''; - kebabCase(string: string): string; - kebabCase(string: void | null): ''; - lowerCase(string: string): string; - lowerCase(string: void | null): ''; - lowerFirst(string: string): string; - lowerFirst(string: void | null): ''; - pad(string?: ?string, length?: ?number, chars?: ?string): string; - padEnd(string?: ?string, length?: ?number, chars?: ?string): string; - padStart(string?: ?string, length?: ?number, chars?: ?string): string; - parseInt(string: string, radix?: ?number): number; - repeat(string: string, n?: ?number): string; - repeat(string: void | null, n?: ?number): ''; - replace( - string: string, - pattern: RegExp | string, - replacement: ((string: string) => string) | string - ): string; - replace( - string: void | null, - pattern?: ?RegExp | ?string, - replacement: ?((string: string) => string) | ?string - ): ''; - snakeCase(string: string): string; - snakeCase(string: void | null): ''; - split( - string?: ?string, - separator?: ?RegExp | ?string, - limit?: ?number - ): Array; - startCase(string: string): string; - startCase(string: void | null): ''; - startsWith(string: string, target?: string, position?: number): boolean; - startsWith(string: void | null, target?: ?string, position?: ?number): false; - template(string?: ?string, options?: ?TemplateSettings): Function; - toLower(string: string): string; - toLower(string: void | null): ''; - toUpper(string: string): string; - toUpper(string: void | null): ''; - trim(string: string, chars?: string): string; - trim(string: void | null, chars?: ?string): ''; - trimEnd(string: string, chars?: ?string): string; - trimEnd(string: void | null, chars?: ?string): ''; - trimStart(string: string, chars?: ?string): string; - trimStart(string: void | null, chars?: ?string): ''; - truncate(string: string, options?: TruncateOptions): string; - truncate(string: void | null, options?: ?TruncateOptions): ''; - unescape(string: string): string; - unescape(string: void | null): ''; - upperCase(string: string): string; - upperCase(string: void | null): ''; - upperFirst(string: string): string; - upperFirst(string: void | null): ''; - words(string?: ?string, pattern?: ?RegExp | ?string): Array; - - // Util - attempt(func: Function, ...args: Array): any; - bindAll(object: Object, methodNames?: ?Array): Object; - bindAll(object: T, methodNames?: ?Array): T; - bindAll(object: Object, ...methodNames: Array): Object; - cond(pairs?: ?NestedArray): Function; - conforms(source?: ?Object): Function; - constant(value: T): () => T; - defaultTo( - value: T1, - defaultValue: T2 - ): T1; - // NaN is a number instead of its own type, otherwise it would behave like null/void - defaultTo(value: T1, defaultValue: T2): T1 | T2; - defaultTo(value: T1, defaultValue: T2): T2; - flow: $ComposeReverse; - flow(funcs?: Array): Function; - flowRight: $Compose; - flowRight(funcs?: Array): Function; - identity(value: T): T; - iteratee(func?: any): Function; - matches(source?: ?Object): Function; - matchesProperty(path?: ?Array | string, srcValue: any): Function; - method(path?: ?Array | string, ...args?: Array): Function; - methodOf(object?: ?Object, ...args?: Array): Function; - mixin( - object?: T, - source: Object, - options?: { chain: boolean } - ): T; - noConflict(): Lodash; - noop(...args: Array): void; - nthArg(n?: ?number): Function; - over(...iteratees: Array): Function; - over(iteratees: Array): Function; - overEvery(...predicates: Array): Function; - overEvery(predicates: Array): Function; - overSome(...predicates: Array): Function; - overSome(predicates: Array): Function; - property(path?: ?Array | string): Function; - propertyOf(object?: ?Object): Function; - range(start: number, end: number, step?: number): Array; - range(end: number, step?: number): Array; - rangeRight(start?: ?number, end?: ?number, step?: ?number): Array; - rangeRight(end?: ?number, step?: ?number): Array; - runInContext(context?: ?Object): Function; - - stubArray(): Array<*>; - stubFalse(): false; - stubObject(): {}; - stubString(): ""; - stubTrue(): true; - times(n?: ?number, ...rest?: Array): Array; - times(n: number, iteratee: (i: number) => T): Array; - toPath(value: any): Array; - uniqueId(prefix?: ?string): string; - - // Properties - VERSION: string; - templateSettings: TemplateSettings; - } - - declare module.exports: Lodash; -} - -declare module "lodash/fp" { - declare type __CurriedFunction1 = (...r: [AA]) => R; - declare type CurriedFunction1 = __CurriedFunction1; - - declare type __CurriedFunction2 = (( - ...r: [AA] - ) => CurriedFunction1) & - ((...r: [AA, BB]) => R); - declare type CurriedFunction2 = __CurriedFunction2; - - declare type __CurriedFunction3 = (( - ...r: [AA] - ) => CurriedFunction2) & - ((...r: [AA, BB]) => CurriedFunction1) & - ((...r: [AA, BB, CC]) => R); - declare type CurriedFunction3 = __CurriedFunction3< - A, - B, - C, - R, - *, - *, - * - >; - - declare type __CurriedFunction4< - A, - B, - C, - D, - R, - AA: A, - BB: B, - CC: C, - DD: D - > = ((...r: [AA]) => CurriedFunction3) & - ((...r: [AA, BB]) => CurriedFunction2) & - ((...r: [AA, BB, CC]) => CurriedFunction1) & - ((...r: [AA, BB, CC, DD]) => R); - declare type CurriedFunction4 = __CurriedFunction4< - A, - B, - C, - D, - R, - *, - *, - *, - * - >; - - declare type __CurriedFunction5< - A, - B, - C, - D, - E, - R, - AA: A, - BB: B, - CC: C, - DD: D, - EE: E - > = ((...r: [AA]) => CurriedFunction4) & - ((...r: [AA, BB]) => CurriedFunction3) & - ((...r: [AA, BB, CC]) => CurriedFunction2) & - ((...r: [AA, BB, CC, DD]) => CurriedFunction1) & - ((...r: [AA, BB, CC, DD, EE]) => R); - declare type CurriedFunction5 = __CurriedFunction5< - A, - B, - C, - D, - E, - R, - *, - *, - *, - *, - * - >; - - declare type __CurriedFunction6< - A, - B, - C, - D, - E, - F, - R, - AA: A, - BB: B, - CC: C, - DD: D, - EE: E, - FF: F - > = ((...r: [AA]) => CurriedFunction5) & - ((...r: [AA, BB]) => CurriedFunction4) & - ((...r: [AA, BB, CC]) => CurriedFunction3) & - ((...r: [AA, BB, CC, DD]) => CurriedFunction2) & - ((...r: [AA, BB, CC, DD, EE]) => CurriedFunction1) & - ((...r: [AA, BB, CC, DD, EE, FF]) => R); - declare type CurriedFunction6 = __CurriedFunction6< - A, - B, - C, - D, - E, - F, - R, - *, - *, - *, - *, - *, - * - >; - - declare type Curry = (((...r: [A]) => R) => CurriedFunction1) & - (((...r: [A, B]) => R) => CurriedFunction2) & - (((...r: [A, B, C]) => R) => CurriedFunction3) & - (( - (...r: [A, B, C, D]) => R - ) => CurriedFunction4) & - (( - (...r: [A, B, C, D, E]) => R - ) => CurriedFunction5) & - (( - (...r: [A, B, C, D, E, F]) => R - ) => CurriedFunction6); - - declare type UnaryFn = (a: A) => R; - - declare type TemplateSettings = { - escape?: RegExp, - evaluate?: RegExp, - imports?: Object, - interpolate?: RegExp, - variable?: string - }; - - declare type TruncateOptions = { - length?: number, - omission?: string, - separator?: RegExp | string - }; - - declare type DebounceOptions = { - leading?: boolean, - maxWait?: number, - trailing?: boolean - }; - - declare type ThrottleOptions = { - leading?: boolean, - trailing?: boolean - }; - - declare type NestedArray = Array>; - - declare type matchesIterateeShorthand = Object; - declare type matchesPropertyIterateeShorthand = [string, any]; - declare type propertyIterateeShorthand = string; - - declare type OPredicate = - | ((value: A) => any) - | matchesIterateeShorthand - | matchesPropertyIterateeShorthand - | propertyIterateeShorthand; - - declare type OIterateeWithResult = Object | string | ((value: V) => R); - declare type OIteratee = OIterateeWithResult; - declare type OFlatMapIteratee = OIterateeWithResult>; - - declare type Predicate = - | ((value: T) => any) - | matchesIterateeShorthand - | matchesPropertyIterateeShorthand - | propertyIterateeShorthand; - - declare type _ValueOnlyIteratee = (value: T) => mixed; - declare type ValueOnlyIteratee = _ValueOnlyIteratee | string; - declare type _Iteratee = (item: T) => mixed; - declare type Iteratee = _Iteratee | Object | string; - declare type FlatMapIteratee = - | ((item: T) => Array) - | Object - | string; - declare type Comparator = (item: T, item2: T) => boolean; - - declare type MapIterator = ((item: T) => U) | propertyIterateeShorthand; - - declare type OMapIterator = - | ((item: T) => U) - | propertyIterateeShorthand; - - declare class Lodash { - // Array - chunk(size: number): (array: Array) => Array>; - chunk(size: number, array: Array): Array>; - compact(array: Array): Array; - concat | T, B: Array | U>( - base: A - ): (elements: B) => Array; - concat | T, B: Array | U>( - base: A, - elements: B - ): Array; - difference(values: Array): (array: Array) => Array; - difference(values: Array, array: Array): Array; - differenceBy( - iteratee: ValueOnlyIteratee - ): ((values: Array) => (array: Array) => T[]) & - ((values: Array, array: Array) => T[]); - differenceBy( - iteratee: ValueOnlyIteratee, - values: Array - ): (array: Array) => T[]; - differenceBy( - iteratee: ValueOnlyIteratee, - values: Array, - array: Array - ): T[]; - differenceWith( - values: T[] - ): ((comparator: Comparator) => (array: T[]) => T[]) & - ((comparator: Comparator, array: T[]) => T[]); - differenceWith( - values: T[], - comparator: Comparator - ): (array: T[]) => T[]; - differenceWith(values: T[], comparator: Comparator, array: T[]): T[]; - drop(n: number): (array: Array) => Array; - drop(n: number, array: Array): Array; - dropLast(n: number): (array: Array) => Array; - dropLast(n: number, array: Array): Array; - dropRight(n: number): (array: Array) => Array; - dropRight(n: number, array: Array): Array; - dropRightWhile(predicate: Predicate): (array: Array) => Array; - dropRightWhile(predicate: Predicate, array: Array): Array; - dropWhile(predicate: Predicate): (array: Array) => Array; - dropWhile(predicate: Predicate, array: Array): Array; - dropLastWhile(predicate: Predicate): (array: Array) => Array; - dropLastWhile(predicate: Predicate, array: Array): Array; - fill( - start: number - ): (( - end: number - ) => ((value: U) => (array: Array) => Array) & - ((value: U, array: Array) => Array)) & - ((end: number, value: U) => (array: Array) => Array) & - ((end: number, value: U, array: Array) => Array); - fill( - start: number, - end: number - ): ((value: U) => (array: Array) => Array) & - ((value: U, array: Array) => Array); - fill( - start: number, - end: number, - value: U - ): (array: Array) => Array; - fill( - start: number, - end: number, - value: U, - array: Array - ): Array; - findIndex(predicate: Predicate): (array: $ReadOnlyArray) => number; - findIndex(predicate: Predicate, array: $ReadOnlyArray): number; - findIndexFrom( - predicate: Predicate - ): ((fromIndex: number) => (array: $ReadOnlyArray) => number) & - ((fromIndex: number, array: $ReadOnlyArray) => number); - findIndexFrom( - predicate: Predicate, - fromIndex: number - ): (array: $ReadOnlyArray) => number; - findIndexFrom( - predicate: Predicate, - fromIndex: number, - array: $ReadOnlyArray - ): number; - findLastIndex( - predicate: Predicate - ): (array: $ReadOnlyArray) => number; - findLastIndex(predicate: Predicate, array: $ReadOnlyArray): number; - findLastIndexFrom( - predicate: Predicate - ): ((fromIndex: number) => (array: $ReadOnlyArray) => number) & - ((fromIndex: number, array: $ReadOnlyArray) => number); - findLastIndexFrom( - predicate: Predicate, - fromIndex: number - ): (array: $ReadOnlyArray) => number; - findLastIndexFrom( - predicate: Predicate, - fromIndex: number, - array: $ReadOnlyArray - ): number; - // alias of _.head - first(array: Array): T; - flatten(array: Array | X>): Array; - unnest(array: Array | X>): Array; - flattenDeep(array: any[]): Array; - flattenDepth(depth: number): (array: any[]) => any[]; - flattenDepth(depth: number, array: any[]): any[]; - fromPairs(pairs: Array<[A, B]>): { [key: A]: B }; - head(array: Array): T; - indexOf(value: T): (array: Array) => number; - indexOf(value: T, array: Array): number; - indexOfFrom( - value: T - ): ((fromIndex: number) => (array: Array) => number) & - ((fromIndex: number, array: Array) => number); - indexOfFrom(value: T, fromIndex: number): (array: Array) => number; - indexOfFrom(value: T, fromIndex: number, array: Array): number; - initial(array: Array): Array; - init(array: Array): Array; - intersection(a1: Array): (a2: Array) => Array; - intersection(a1: Array, a2: Array): Array; - intersectionBy( - iteratee: ValueOnlyIteratee - ): ((a1: Array) => (a2: Array) => Array) & - ((a1: Array, a2: Array) => Array); - intersectionBy( - iteratee: ValueOnlyIteratee, - a1: Array - ): (a2: Array) => Array; - intersectionBy( - iteratee: ValueOnlyIteratee, - a1: Array, - a2: Array - ): Array; - intersectionWith( - comparator: Comparator - ): ((a1: Array) => (a2: Array) => Array) & - ((a1: Array, a2: Array) => Array); - intersectionWith( - comparator: Comparator, - a1: Array - ): (a2: Array) => Array; - intersectionWith( - comparator: Comparator, - a1: Array, - a2: Array - ): Array; - join(separator: string): (array: Array) => string; - join(separator: string, array: Array): string; - last(array: Array): T; - lastIndexOf(value: T): (array: Array) => number; - lastIndexOf(value: T, array: Array): number; - lastIndexOfFrom( - value: T - ): ((fromIndex: number) => (array: Array) => number) & - ((fromIndex: number, array: Array) => number); - lastIndexOfFrom( - value: T, - fromIndex: number - ): (array: Array) => number; - lastIndexOfFrom(value: T, fromIndex: number, array: Array): number; - nth(n: number): (array: T[]) => T; - nth(n: number, array: T[]): T; - pull(value: T): (array: Array) => Array; - pull(value: T, array: Array): Array; - pullAll(values: Array): (array: Array) => Array; - pullAll(values: Array, array: Array): Array; - pullAllBy( - iteratee: ValueOnlyIteratee - ): ((values: Array) => (array: Array) => Array) & - ((values: Array, array: Array) => Array); - pullAllBy( - iteratee: ValueOnlyIteratee, - values: Array - ): (array: Array) => Array; - pullAllBy( - iteratee: ValueOnlyIteratee, - values: Array, - array: Array - ): Array; - pullAllWith( - comparator: Function - ): ((values: T[]) => (array: T[]) => T[]) & - ((values: T[], array: T[]) => T[]); - pullAllWith(comparator: Function, values: T[]): (array: T[]) => T[]; - pullAllWith(comparator: Function, values: T[], array: T[]): T[]; - pullAt(indexed: Array): (array: Array) => Array; - pullAt(indexed: Array, array: Array): Array; - remove(predicate: Predicate): (array: Array) => Array; - remove(predicate: Predicate, array: Array): Array; - reverse(array: Array): Array; - slice( - start: number - ): ((end: number) => (array: Array) => Array) & - ((end: number, array: Array) => Array); - slice(start: number, end: number): (array: Array) => Array; - slice(start: number, end: number, array: Array): Array; - sortedIndex(value: T): (array: Array) => number; - sortedIndex(value: T, array: Array): number; - sortedIndexBy( - iteratee: ValueOnlyIteratee - ): ((value: T) => (array: Array) => number) & - ((value: T, array: Array) => number); - sortedIndexBy( - iteratee: ValueOnlyIteratee, - value: T - ): (array: Array) => number; - sortedIndexBy( - iteratee: ValueOnlyIteratee, - value: T, - array: Array - ): number; - sortedIndexOf(value: T): (array: Array) => number; - sortedIndexOf(value: T, array: Array): number; - sortedLastIndex(value: T): (array: Array) => number; - sortedLastIndex(value: T, array: Array): number; - sortedLastIndexBy( - iteratee: ValueOnlyIteratee - ): ((value: T) => (array: Array) => number) & - ((value: T, array: Array) => number); - sortedLastIndexBy( - iteratee: ValueOnlyIteratee, - value: T - ): (array: Array) => number; - sortedLastIndexBy( - iteratee: ValueOnlyIteratee, - value: T, - array: Array - ): number; - sortedLastIndexOf(value: T): (array: Array) => number; - sortedLastIndexOf(value: T, array: Array): number; - sortedUniq(array: Array): Array; - sortedUniqBy( - iteratee: (value: T) => mixed - ): (array: Array) => Array; - sortedUniqBy(iteratee: (value: T) => mixed, array: Array): Array; - tail(array: Array): Array; - take(n: number): (array: Array) => Array; - take(n: number, array: Array): Array; - takeRight(n: number): (array: Array) => Array; - takeRight(n: number, array: Array): Array; - takeLast(n: number): (array: Array) => Array; - takeLast(n: number, array: Array): Array; - takeRightWhile(predicate: Predicate): (array: Array) => Array; - takeRightWhile(predicate: Predicate, array: Array): Array; - takeLastWhile(predicate: Predicate): (array: Array) => Array; - takeLastWhile(predicate: Predicate, array: Array): Array; - takeWhile(predicate: Predicate): (array: Array) => Array; - takeWhile(predicate: Predicate, array: Array): Array; - union(a1: Array): (a2: Array) => Array; - union(a1: Array, a2: Array): Array; - unionBy( - iteratee: ValueOnlyIteratee - ): ((a1: Array) => (a2: Array) => Array) & - ((a1: Array, a2: Array) => Array); - unionBy( - iteratee: ValueOnlyIteratee, - a1: Array - ): (a2: Array) => Array; - unionBy( - iteratee: ValueOnlyIteratee, - a1: Array, - a2: Array - ): Array; - unionWith( - comparator: Comparator - ): ((a1: Array) => (a2: Array) => Array) & - ((a1: Array, a2: Array) => Array); - unionWith( - comparator: Comparator, - a1: Array - ): (a2: Array) => Array; - unionWith( - comparator: Comparator, - a1: Array, - a2: Array - ): Array; - uniq(array: Array): Array; - uniqBy(iteratee: ValueOnlyIteratee): (array: Array) => Array; - uniqBy(iteratee: ValueOnlyIteratee, array: Array): Array; - uniqWith(comparator: Comparator): (array: Array) => Array; - uniqWith(comparator: Comparator, array: Array): Array; - unzip(array: Array): Array; - unzipWith(iteratee: Iteratee): (array: Array) => Array; - unzipWith(iteratee: Iteratee, array: Array): Array; - without(values: Array): (array: Array) => Array; - without(values: Array, array: Array): Array; - xor(a1: Array): (a2: Array) => Array; - xor(a1: Array, a2: Array): Array; - symmetricDifference(a1: Array): (a2: Array) => Array; - symmetricDifference(a1: Array, a2: Array): Array; - xorBy( - iteratee: ValueOnlyIteratee - ): ((a1: Array) => (a2: Array) => Array) & - ((a1: Array, a2: Array) => Array); - xorBy( - iteratee: ValueOnlyIteratee, - a1: Array - ): (a2: Array) => Array; - xorBy( - iteratee: ValueOnlyIteratee, - a1: Array, - a2: Array - ): Array; - symmetricDifferenceBy( - iteratee: ValueOnlyIteratee - ): ((a1: Array) => (a2: Array) => Array) & - ((a1: Array, a2: Array) => Array); - symmetricDifferenceBy( - iteratee: ValueOnlyIteratee, - a1: Array - ): (a2: Array) => Array; - symmetricDifferenceBy( - iteratee: ValueOnlyIteratee, - a1: Array, - a2: Array - ): Array; - xorWith( - comparator: Comparator - ): ((a1: Array) => (a2: Array) => Array) & - ((a1: Array, a2: Array) => Array); - xorWith( - comparator: Comparator, - a1: Array - ): (a2: Array) => Array; - xorWith(comparator: Comparator, a1: Array, a2: Array): Array; - symmetricDifferenceWith( - comparator: Comparator - ): ((a1: Array) => (a2: Array) => Array) & - ((a1: Array, a2: Array) => Array); - symmetricDifferenceWith( - comparator: Comparator, - a1: Array - ): (a2: Array) => Array; - symmetricDifferenceWith( - comparator: Comparator, - a1: Array, - a2: Array - ): Array; - zip(a1: A[]): (a2: B[]) => Array<[A, B]>; - zip(a1: A[], a2: B[]): Array<[A, B]>; - zipAll(arrays: Array>): Array; - zipObject(props?: Array): (values?: Array) => { [key: K]: V }; - zipObject(props?: Array, values?: Array): { [key: K]: V }; - zipObj(props: Array): (values: Array) => Object; - zipObj(props: Array, values: Array): Object; - zipObjectDeep(props: any[]): (values: any) => Object; - zipObjectDeep(props: any[], values: any): Object; - zipWith( - iteratee: Iteratee - ): ((a1: NestedArray) => (a2: NestedArray) => Array) & - ((a1: NestedArray, a2: NestedArray) => Array); - zipWith( - iteratee: Iteratee, - a1: NestedArray - ): (a2: NestedArray) => Array; - zipWith( - iteratee: Iteratee, - a1: NestedArray, - a2: NestedArray - ): Array; - // Collection - countBy( - iteratee: ValueOnlyIteratee - ): (collection: Array | { [id: any]: T }) => { [string]: number }; - countBy( - iteratee: ValueOnlyIteratee, - collection: Array | { [id: any]: T } - ): { [string]: number }; - // alias of _.forEach - each( - iteratee: Iteratee | OIteratee - ): (collection: Array | { [id: any]: T }) => Array; - each( - iteratee: Iteratee | OIteratee, - collection: Array | { [id: any]: T } - ): Array; - // alias of _.forEachRight - eachRight( - iteratee: Iteratee | OIteratee - ): (collection: Array | { [id: any]: T }) => Array; - eachRight( - iteratee: Iteratee | OIteratee, - collection: Array | { [id: any]: T } - ): Array; - every( - iteratee: Iteratee | OIteratee - ): (collection: Array | { [id: any]: T }) => boolean; - every( - iteratee: Iteratee | OIteratee, - collection: Array | { [id: any]: T } - ): boolean; - all( - iteratee: Iteratee | OIteratee - ): (collection: Array | { [id: any]: T }) => boolean; - all( - iteratee: Iteratee | OIteratee, - collection: Array | { [id: any]: T } - ): boolean; - filter( - predicate: Predicate | OPredicate - ): (collection: Array | { [id: any]: T }) => Array; - filter( - predicate: Predicate | OPredicate, - collection: Array | { [id: any]: T } - ): Array; - find( - predicate: Predicate | OPredicate - ): (collection: $ReadOnlyArray | { [id: any]: T }) => T | void; - find( - predicate: Predicate | OPredicate, - collection: $ReadOnlyArray | { [id: any]: T } - ): T | void; - findFrom( - predicate: Predicate | OPredicate - ): (( - fromIndex: number - ) => (collection: $ReadOnlyArray | { [id: any]: T }) => T | void) & - (( - fromIndex: number, - collection: $ReadOnlyArray | { [id: any]: T } - ) => T | void); - findFrom( - predicate: Predicate | OPredicate, - fromIndex: number - ): (collection: Array | { [id: any]: T }) => T | void; - findFrom( - predicate: Predicate | OPredicate, - fromIndex: number, - collection: $ReadOnlyArray | { [id: any]: T } - ): T | void; - findLast( - predicate: Predicate | OPredicate - ): (collection: $ReadOnlyArray | { [id: any]: T }) => T | void; - findLast( - predicate: Predicate | OPredicate, - collection: $ReadOnlyArray | { [id: any]: T } - ): T | void; - findLastFrom( - predicate: Predicate | OPredicate - ): (( - fromIndex: number - ) => (collection: $ReadOnlyArray | { [id: any]: T }) => T | void) & - (( - fromIndex: number, - collection: $ReadOnlyArray | { [id: any]: T } - ) => T | void); - findLastFrom( - predicate: Predicate | OPredicate, - fromIndex: number - ): (collection: $ReadOnlyArray | { [id: any]: T }) => T | void; - findLastFrom( - predicate: Predicate | OPredicate, - fromIndex: number, - collection: $ReadOnlyArray | { [id: any]: T } - ): T | void; - flatMap( - iteratee: FlatMapIteratee | OFlatMapIteratee - ): (collection: Array | { [id: any]: T }) => Array; - flatMap( - iteratee: FlatMapIteratee | OFlatMapIteratee, - collection: Array | { [id: any]: T } - ): Array; - flatMapDeep( - iteratee: FlatMapIteratee | OFlatMapIteratee - ): (collection: Array | { [id: any]: T }) => Array; - flatMapDeep( - iteratee: FlatMapIteratee | OFlatMapIteratee, - collection: Array | { [id: any]: T } - ): Array; - flatMapDepth( - iteratee: FlatMapIteratee | OFlatMapIteratee - ): (( - depth: number - ) => (collection: Array | { [id: any]: T }) => Array) & - ((depth: number, collection: Array | { [id: any]: T }) => Array); - flatMapDepth( - iteratee: FlatMapIteratee | OFlatMapIteratee, - depth: number - ): (collection: Array | { [id: any]: T }) => Array; - flatMapDepth( - iteratee: FlatMapIteratee | OFlatMapIteratee, - depth: number, - collection: Array | { [id: any]: T } - ): Array; - forEach( - iteratee: Iteratee | OIteratee - ): (collection: Array | { [id: any]: T }) => Array; - forEach( - iteratee: Iteratee | OIteratee, - collection: Array | { [id: any]: T } - ): Array; - forEachRight( - iteratee: Iteratee | OIteratee - ): (collection: Array | { [id: any]: T }) => Array; - forEachRight( - iteratee: Iteratee | OIteratee, - collection: Array | { [id: any]: T } - ): Array; - groupBy( - iteratee: ValueOnlyIteratee - ): (collection: Array | { [id: any]: T }) => { [key: V]: Array }; - groupBy( - iteratee: ValueOnlyIteratee, - collection: Array | { [id: any]: T } - ): { [key: V]: Array }; - includes(value: string): (str: string) => boolean; - includes(value: string, str: string): boolean; - includes(value: T): (collection: Array | { [id: any]: T }) => boolean; - includes(value: T, collection: Array | { [id: any]: T }): boolean; - contains(value: string): (str: string) => boolean; - contains(value: string, str: string): boolean; - contains(value: T): (collection: Array | { [id: any]: T }) => boolean; - contains(value: T, collection: Array | { [id: any]: T }): boolean; - includesFrom( - value: string - ): ((fromIndex: number) => (str: string) => boolean) & - ((fromIndex: number, str: string) => boolean); - includesFrom(value: string, fromIndex: number): (str: string) => boolean; - includesFrom(value: string, fromIndex: number, str: string): boolean; - includesFrom( - value: T - ): ((fromIndex: number) => (collection: Array) => boolean) & - ((fromIndex: number, collection: Array) => boolean); - includesFrom( - value: T, - fromIndex: number - ): (collection: Array) => boolean; - includesFrom(value: T, fromIndex: number, collection: Array): boolean; - invokeMap( - path: ((value: T) => Array | string) | Array | string - ): (collection: Array | { [id: any]: T }) => Array; - invokeMap( - path: ((value: T) => Array | string) | Array | string, - collection: Array | { [id: any]: T } - ): Array; - invokeArgsMap( - path: ((value: T) => Array | string) | Array | string - ): (( - collection: Array | { [id: any]: T } - ) => (args: Array) => Array) & - (( - collection: Array | { [id: any]: T }, - args: Array - ) => Array); - invokeArgsMap( - path: ((value: T) => Array | string) | Array | string, - collection: Array | { [id: any]: T } - ): (args: Array) => Array; - invokeArgsMap( - path: ((value: T) => Array | string) | Array | string, - collection: Array | { [id: any]: T }, - args: Array - ): Array; - keyBy( - iteratee: ValueOnlyIteratee - ): (collection: Array | { [id: any]: T }) => { [key: V]: T }; - keyBy( - iteratee: ValueOnlyIteratee, - collection: Array | { [id: any]: T } - ): { [key: V]: T }; - indexBy( - iteratee: ValueOnlyIteratee - ): (collection: Array | { [id: any]: T }) => { [key: V]: T }; - indexBy( - iteratee: ValueOnlyIteratee, - collection: Array | { [id: any]: T } - ): { [key: V]: T }; - map( - iteratee: MapIterator | OMapIterator - ): (collection: Array | { [id: any]: T }) => Array; - map( - iteratee: MapIterator | OMapIterator, - collection: Array | { [id: any]: T } - ): Array; - map(iteratee: (char: string) => any): (str: string) => string; - map(iteratee: (char: string) => any, str: string): string; - pluck( - iteratee: MapIterator | OMapIterator - ): (collection: Array | { [id: any]: T }) => Array; - pluck( - iteratee: MapIterator | OMapIterator, - collection: Array | { [id: any]: T } - ): Array; - pluck(iteratee: (char: string) => any): (str: string) => string; - pluck(iteratee: (char: string) => any, str: string): string; - orderBy( - iteratees: Array | OIteratee<*>> | string - ): (( - orders: Array<"asc" | "desc"> | string - ) => (collection: Array | { [id: any]: T }) => Array) & - (( - orders: Array<"asc" | "desc"> | string, - collection: Array | { [id: any]: T } - ) => Array); - orderBy( - iteratees: Array | OIteratee<*>> | string, - orders: Array<"asc" | "desc"> | string - ): (collection: Array | { [id: any]: T }) => Array; - orderBy( - iteratees: Array | OIteratee<*>> | string, - orders: Array<"asc" | "desc"> | string, - collection: Array | { [id: any]: T } - ): Array; - partition( - predicate: Predicate | OPredicate - ): (collection: Array | { [id: any]: T }) => [Array, Array]; - partition( - predicate: Predicate | OPredicate, - collection: Array | { [id: any]: T } - ): [Array, Array]; - reduce( - iteratee: (accumulator: U, value: T) => U - ): ((accumulator: U) => (collection: Array | { [id: any]: T }) => U) & - ((accumulator: U, collection: Array | { [id: any]: T }) => U); - reduce( - iteratee: (accumulator: U, value: T) => U, - accumulator: U - ): (collection: Array | { [id: any]: T }) => U; - reduce( - iteratee: (accumulator: U, value: T) => U, - accumulator: U, - collection: Array | { [id: any]: T } - ): U; - reduceRight( - iteratee: (value: T, accumulator: U) => U - ): ((accumulator: U) => (collection: Array | { [id: any]: T }) => U) & - ((accumulator: U, collection: Array | { [id: any]: T }) => U); - reduceRight( - iteratee: (value: T, accumulator: U) => U, - accumulator: U - ): (collection: Array | { [id: any]: T }) => U; - reduceRight( - iteratee: (value: T, accumulator: U) => U, - accumulator: U, - collection: Array | { [id: any]: T } - ): U; - reject( - predicate: Predicate | OPredicate - ): (collection: Array | { [id: any]: T }) => Array; - reject( - predicate: Predicate | OPredicate, - collection: Array | { [id: any]: T } - ): Array; - sample(collection: Array | { [id: any]: T }): T; - sampleSize( - n: number - ): (collection: Array | { [id: any]: T }) => Array; - sampleSize(n: number, collection: Array | { [id: any]: T }): Array; - shuffle(collection: Array | { [id: any]: T }): Array; - size(collection: Array | Object | string): number; - some( - predicate: Predicate | OPredicate - ): (collection: Array | { [id: any]: T }) => boolean; - some( - predicate: Predicate | OPredicate, - collection: Array | { [id: any]: T } - ): boolean; - any( - predicate: Predicate | OPredicate - ): (collection: Array | { [id: any]: T }) => boolean; - any( - predicate: Predicate | OPredicate, - collection: Array | { [id: any]: T } - ): boolean; - sortBy( - iteratees: Array | OIteratee> | Iteratee | OIteratee - ): (collection: Array | { [id: any]: T }) => Array; - sortBy( - iteratees: Array | OIteratee> | Iteratee | OIteratee, - collection: Array | { [id: any]: T } - ): Array; - - // Date - now(): number; - - // Function - after(fn: Function): (n: number) => Function; - after(fn: Function, n: number): Function; - ary(func: Function): Function; - nAry(n: number): (func: Function) => Function; - nAry(n: number, func: Function): Function; - before(fn: Function): (n: number) => Function; - before(fn: Function, n: number): Function; - bind(func: Function): (thisArg: any) => Function; - bind(func: Function, thisArg: any): Function; - bindKey(obj: Object): (key: string) => Function; - bindKey(obj: Object, key: string): Function; - curry: Curry; - curryN(arity: number): (func: Function) => Function; - curryN(arity: number, func: Function): Function; - curryRight(func: Function): Function; - curryRightN(arity: number): (func: Function) => Function; - curryRightN(arity: number, func: Function): Function; - debounce(wait: number): (func: F) => F; - debounce(wait: number, func: F): F; - defer(func: Function): TimeoutID; - delay(wait: number): (func: Function) => TimeoutID; - delay(wait: number, func: Function): TimeoutID; - flip(func: Function): Function; - memoize(func: F): F; - negate(predicate: Function): Function; - complement(predicate: Function): Function; - once(func: Function): Function; - overArgs(func: Function): (transforms: Array) => Function; - overArgs(func: Function, transforms: Array): Function; - useWith(func: Function): (transforms: Array) => Function; - useWith(func: Function, transforms: Array): Function; - partial(func: Function): (partials: any[]) => Function; - partial(func: Function, partials: any[]): Function; - partialRight(func: Function): (partials: Array) => Function; - partialRight(func: Function, partials: Array): Function; - rearg(indexes: Array): (func: Function) => Function; - rearg(indexes: Array, func: Function): Function; - rest(func: Function): Function; - unapply(func: Function): Function; - restFrom(start: number): (func: Function) => Function; - restFrom(start: number, func: Function): Function; - spread(func: Function): Function; - apply(func: Function): Function; - spreadFrom(start: number): (func: Function) => Function; - spreadFrom(start: number, func: Function): Function; - throttle(wait: number): (func: Function) => Function; - throttle(wait: number, func: Function): Function; - unary(func: Function): Function; - wrap(wrapper: Function): (value: any) => Function; - wrap(wrapper: Function, value: any): Function; - - // Lang - castArray(value: *): any[]; - clone(value: T): T; - cloneDeep(value: T): T; - cloneDeepWith( - customizer: (value: T, key: number | string, object: T, stack: any) => U - ): (value: T) => U; - cloneDeepWith( - customizer: (value: T, key: number | string, object: T, stack: any) => U, - value: T - ): U; - cloneWith( - customizer: (value: T, key: number | string, object: T, stack: any) => U - ): (value: T) => U; - cloneWith( - customizer: (value: T, key: number | string, object: T, stack: any) => U, - value: T - ): U; - conformsTo( - predicates: T & { [key: string]: (x: any) => boolean } - ): (source: T) => boolean; - conformsTo( - predicates: T & { [key: string]: (x: any) => boolean }, - source: T - ): boolean; - where( - predicates: T & { [key: string]: (x: any) => boolean } - ): (source: T) => boolean; - where( - predicates: T & { [key: string]: (x: any) => boolean }, - source: T - ): boolean; - conforms( - predicates: T & { [key: string]: (x: any) => boolean } - ): (source: T) => boolean; - conforms( - predicates: T & { [key: string]: (x: any) => boolean }, - source: T - ): boolean; - eq(value: any): (other: any) => boolean; - eq(value: any, other: any): boolean; - identical(value: any): (other: any) => boolean; - identical(value: any, other: any): boolean; - gt(value: any): (other: any) => boolean; - gt(value: any, other: any): boolean; - gte(value: any): (other: any) => boolean; - gte(value: any, other: any): boolean; - isArguments(value: any): boolean; - isArray(value: any): boolean; - isArrayBuffer(value: any): boolean; - isArrayLike(value: any): boolean; - isArrayLikeObject(value: any): boolean; - isBoolean(value: any): boolean; - isBuffer(value: any): boolean; - isDate(value: any): boolean; - isElement(value: any): boolean; - isEmpty(value: any): boolean; - isEqual(value: any): (other: any) => boolean; - isEqual(value: any, other: any): boolean; - equals(value: any): (other: any) => boolean; - equals(value: any, other: any): boolean; - isEqualWith( - customizer: ( - objValue: any, - otherValue: any, - key: number | string, - object: T, - other: U, - stack: any - ) => boolean | void - ): ((value: T) => (other: U) => boolean) & - ((value: T, other: U) => boolean); - isEqualWith( - customizer: ( - objValue: any, - otherValue: any, - key: number | string, - object: T, - other: U, - stack: any - ) => boolean | void, - value: T - ): (other: U) => boolean; - isEqualWith( - customizer: ( - objValue: any, - otherValue: any, - key: number | string, - object: T, - other: U, - stack: any - ) => boolean | void, - value: T, - other: U - ): boolean; - isError(value: any): boolean; - isFinite(value: any): boolean; - isFunction(value: Function): true; - isFunction(value: number | string | void | null | Object): false; - isInteger(value: any): boolean; - isLength(value: any): boolean; - isMap(value: any): boolean; - isMatch(source: Object): (object: Object) => boolean; - isMatch(source: Object, object: Object): boolean; - whereEq(source: Object): (object: Object) => boolean; - whereEq(source: Object, object: Object): boolean; - isMatchWith( - customizer: ( - objValue: any, - srcValue: any, - key: number | string, - object: T, - source: U - ) => boolean | void - ): ((source: U) => (object: T) => boolean) & - ((source: U, object: T) => boolean); - isMatchWith( - customizer: ( - objValue: any, - srcValue: any, - key: number | string, - object: T, - source: U - ) => boolean | void, - source: U - ): (object: T) => boolean; - isMatchWith( - customizer: ( - objValue: any, - srcValue: any, - key: number | string, - object: T, - source: U - ) => boolean | void, - source: U, - object: T - ): boolean; - isNaN(value: any): boolean; - isNative(value: any): boolean; - isNil(value: any): boolean; - isNull(value: any): boolean; - isNumber(value: any): boolean; - isObject(value: any): boolean; - isObjectLike(value: any): boolean; - isPlainObject(value: any): boolean; - isRegExp(value: any): boolean; - isSafeInteger(value: any): boolean; - isSet(value: any): boolean; - isString(value: string): true; - isString( - value: number | boolean | Function | void | null | Object | Array - ): false; - isSymbol(value: any): boolean; - isTypedArray(value: any): boolean; - isUndefined(value: any): boolean; - isWeakMap(value: any): boolean; - isWeakSet(value: any): boolean; - lt(value: any): (other: any) => boolean; - lt(value: any, other: any): boolean; - lte(value: any): (other: any) => boolean; - lte(value: any, other: any): boolean; - toArray(value: any): Array; - toFinite(value: any): number; - toInteger(value: any): number; - toLength(value: any): number; - toNumber(value: any): number; - toPlainObject(value: any): Object; - toSafeInteger(value: any): number; - toString(value: any): string; - - // Math - add(augend: number): (addend: number) => number; - add(augend: number, addend: number): number; - ceil(number: number): number; - divide(dividend: number): (divisor: number) => number; - divide(dividend: number, divisor: number): number; - floor(number: number): number; - max(array: Array): T; - maxBy(iteratee: Iteratee): (array: Array) => T; - maxBy(iteratee: Iteratee, array: Array): T; - mean(array: Array<*>): number; - meanBy(iteratee: Iteratee): (array: Array) => number; - meanBy(iteratee: Iteratee, array: Array): number; - min(array: Array): T; - minBy(iteratee: Iteratee): (array: Array) => T; - minBy(iteratee: Iteratee, array: Array): T; - multiply(multiplier: number): (multiplicand: number) => number; - multiply(multiplier: number, multiplicand: number): number; - round(number: number): number; - subtract(minuend: number): (subtrahend: number) => number; - subtract(minuend: number, subtrahend: number): number; - sum(array: Array<*>): number; - sumBy(iteratee: Iteratee): (array: Array) => number; - sumBy(iteratee: Iteratee, array: Array): number; - - // number - clamp( - lower: number - ): ((upper: number) => (number: number) => number) & - ((upper: number, number: number) => number); - clamp(lower: number, upper: number): (number: number) => number; - clamp(lower: number, upper: number, number: number): number; - inRange( - start: number - ): ((end: number) => (number: number) => boolean) & - ((end: number, number: number) => boolean); - inRange(start: number, end: number): (number: number) => boolean; - inRange(start: number, end: number, number: number): boolean; - random(lower: number): (upper: number) => number; - random(lower: number, upper: number): number; - - // Object - assign(object: Object): (source: Object) => Object; - assign(object: Object, source: Object): Object; - assignAll(objects: Array): Object; - assignInAll(objects: Array): Object; - extendAll(objects: Array): Object; - assignIn(a: A): (b: B) => A & B; - assignIn(a: A, b: B): A & B; - assignInWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void - ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); - assignInWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void, - object: T - ): (s1: A) => Object; - assignInWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void, - object: T, - s1: A - ): Object; - assignWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void - ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); - assignWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void, - object: T - ): (s1: A) => Object; - assignWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void, - object: T, - s1: A - ): Object; - assignInAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void - ): (objects: Array) => Object; - assignInAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void, - objects: Array - ): Object; - extendAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void - ): (objects: Array) => Object; - extendAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void, - objects: Array - ): Object; - assignAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void - ): (objects: Array) => Object; - assignAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void, - objects: Array - ): Object; - at(paths: Array): (object: Object) => Array; - at(paths: Array, object: Object): Array; - props(paths: Array): (object: Object) => Array; - props(paths: Array, object: Object): Array; - paths(paths: Array): (object: Object) => Array; - paths(paths: Array, object: Object): Array; - create(prototype: T): $Supertype; - defaults(source: Object): (object: Object) => Object; - defaults(source: Object, object: Object): Object; - defaultsAll(objects: Array): Object; - defaultsDeep(source: Object): (object: Object) => Object; - defaultsDeep(source: Object, object: Object): Object; - defaultsDeepAll(objects: Array): Object; - // alias for _.toPairs - entries(object: Object): Array<[string, any]>; - // alias for _.toPairsIn - entriesIn(object: Object): Array<[string, any]>; - // alias for _.assignIn - extend(a: A): (b: B) => A & B; - extend(a: A, b: B): A & B; - // alias for _.assignInWith - extendWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void - ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); - extendWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void, - object: T - ): (s1: A) => Object; - extendWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A - ) => any | void, - object: T, - s1: A - ): Object; - findKey( - predicate: OPredicate - ): (object: T) => string | void; - findKey( - predicate: OPredicate, - object: T - ): string | void; - findLastKey( - predicate: OPredicate - ): (object: T) => string | void; - findLastKey( - predicate: OPredicate, - object: T - ): string | void; - forIn(iteratee: OIteratee<*>): (object: Object) => Object; - forIn(iteratee: OIteratee<*>, object: Object): Object; - forInRight(iteratee: OIteratee<*>): (object: Object) => Object; - forInRight(iteratee: OIteratee<*>, object: Object): Object; - forOwn(iteratee: OIteratee<*>): (object: Object) => Object; - forOwn(iteratee: OIteratee<*>, object: Object): Object; - forOwnRight(iteratee: OIteratee<*>): (object: Object) => Object; - forOwnRight(iteratee: OIteratee<*>, object: Object): Object; - functions(object: Object): Array; - functionsIn(object: Object): Array; - get(path: Array | string): (object: Object | Array) => any; - get(path: Array | string, object: Object | Array): any; - prop(path: Array | string): (object: Object | Array) => any; - prop(path: Array | string, object: Object | Array): any; - path(path: Array | string): (object: Object | Array) => any; - path(path: Array | string, object: Object | Array): any; - getOr( - defaultValue: any - ): (( - path: Array | string - ) => (object: Object | Array) => any) & - ((path: Array | string, object: Object | Array) => any); - getOr( - defaultValue: any, - path: Array | string - ): (object: Object | Array) => any; - getOr( - defaultValue: any, - path: Array | string, - object: Object | Array - ): any; - propOr( - defaultValue: any - ): (( - path: Array | string - ) => (object: Object | Array) => any) & - ((path: Array | string, object: Object | Array) => any); - propOr( - defaultValue: any, - path: Array | string - ): (object: Object | Array) => any; - propOr( - defaultValue: any, - path: Array | string, - object: Object | Array - ): any; - pathOr( - defaultValue: any - ): (( - path: Array | string - ) => (object: Object | Array) => any) & - ((path: Array | string, object: Object | Array) => any); - pathOr( - defaultValue: any, - path: Array | string - ): (object: Object | Array) => any; - pathOr( - defaultValue: any, - path: Array | string, - object: Object | Array - ): any; - has(path: Array | string): (object: Object) => boolean; - has(path: Array | string, object: Object): boolean; - hasIn(path: Array | string): (object: Object) => boolean; - hasIn(path: Array | string, object: Object): boolean; - invert(object: Object): Object; - invertObj(object: Object): Object; - invertBy(iteratee: Function): (object: Object) => Object; - invertBy(iteratee: Function, object: Object): Object; - invoke(path: Array | string): (object: Object) => any; - invoke(path: Array | string, object: Object): any; - invokeArgs( - path: Array | string - ): ((object: Object) => (args: Array) => any) & - ((object: Object, args: Array) => any); - invokeArgs( - path: Array | string, - object: Object - ): (args: Array) => any; - invokeArgs( - path: Array | string, - object: Object, - args: Array - ): any; - keys(object: { [key: K]: any }): Array; - keys(object: Object): Array; - keysIn(object: Object): Array; - mapKeys(iteratee: OIteratee<*>): (object: Object) => Object; - mapKeys(iteratee: OIteratee<*>, object: Object): Object; - mapValues(iteratee: OIteratee<*>): (object: Object) => Object; - mapValues(iteratee: OIteratee<*>, object: Object): Object; - merge(object: Object): (source: Object) => Object; - merge(object: Object, source: Object): Object; - mergeAll(objects: Array): Object; - mergeWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B - ) => any | void - ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); - mergeWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B - ) => any | void, - object: T - ): (s1: A) => Object; - mergeWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: T, - source: A | B - ) => any | void, - object: T, - s1: A - ): Object; - mergeAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void - ): (objects: Array) => Object; - mergeAllWith( - customizer: ( - objValue: any, - srcValue: any, - key: string, - object: Object, - source: Object - ) => any | void, - objects: Array - ): Object; - omit(props: Array): (object: Object) => Object; - omit(props: Array, object: Object): Object; - omitAll(props: Array): (object: Object) => Object; - omitAll(props: Array, object: Object): Object; - omitBy( - predicate: OPredicate - ): (object: T) => Object; - omitBy(predicate: OPredicate, object: T): Object; - pick(props: Array): (object: Object) => Object; - pick(props: Array, object: Object): Object; - pickAll(props: Array): (object: Object) => Object; - pickAll(props: Array, object: Object): Object; - pickBy( - predicate: OPredicate - ): (object: T) => Object; - pickBy(predicate: OPredicate, object: T): Object; - result(path: Array | string): (object: Object) => any; - result(path: Array | string, object: Object): any; - set( - path: Array | string - ): ((value: any) => (object: Object) => Object) & - ((value: any, object: Object) => Object); - set(path: Array | string, value: any): (object: Object) => Object; - set(path: Array | string, value: any, object: Object): Object; - assoc( - path: Array | string - ): ((value: any) => (object: Object) => Object) & - ((value: any, object: Object) => Object); - assoc(path: Array | string, value: any): (object: Object) => Object; - assoc(path: Array | string, value: any, object: Object): Object; - assocPath( - path: Array | string - ): ((value: any) => (object: Object) => Object) & - ((value: any, object: Object) => Object); - assocPath( - path: Array | string, - value: any - ): (object: Object) => Object; - assocPath(path: Array | string, value: any, object: Object): Object; - setWith( - customizer: (nsValue: any, key: string, nsObject: T) => any - ): (( - path: Array | string - ) => ((value: any) => (object: T) => Object) & - ((value: any, object: T) => Object)) & - ((path: Array | string, value: any) => (object: T) => Object) & - ((path: Array | string, value: any, object: T) => Object); - setWith( - customizer: (nsValue: any, key: string, nsObject: T) => any, - path: Array | string - ): ((value: any) => (object: T) => Object) & - ((value: any, object: T) => Object); - setWith( - customizer: (nsValue: any, key: string, nsObject: T) => any, - path: Array | string, - value: any - ): (object: T) => Object; - setWith( - customizer: (nsValue: any, key: string, nsObject: T) => any, - path: Array | string, - value: any, - object: T - ): Object; - toPairs(object: Object | Array<*>): Array<[string, any]>; - toPairsIn(object: Object): Array<[string, any]>; - transform( - iteratee: OIteratee<*> - ): ((accumulator: any) => (collection: Object | Array) => any) & - ((accumulator: any, collection: Object | Array) => any); - transform( - iteratee: OIteratee<*>, - accumulator: any - ): (collection: Object | Array) => any; - transform( - iteratee: OIteratee<*>, - accumulator: any, - collection: Object | Array - ): any; - unset(path: Array | string): (object: Object) => boolean; - unset(path: Array | string, object: Object): boolean; - dissoc(path: Array | string): (object: Object) => boolean; - dissoc(path: Array | string, object: Object): boolean; - dissocPath(path: Array | string): (object: Object) => boolean; - dissocPath(path: Array | string, object: Object): boolean; - update( - path: string[] | string - ): ((updater: Function) => (object: Object) => Object) & - ((updater: Function, object: Object) => Object); - update( - path: string[] | string, - updater: Function - ): (object: Object) => Object; - update(path: string[] | string, updater: Function, object: Object): Object; - updateWith( - customizer: Function - ): (( - path: string[] | string - ) => ((updater: Function) => (object: Object) => Object) & - ((updater: Function, object: Object) => Object)) & - (( - path: string[] | string, - updater: Function - ) => (object: Object) => Object) & - ((path: string[] | string, updater: Function, object: Object) => Object); - updateWith( - customizer: Function, - path: string[] | string - ): ((updater: Function) => (object: Object) => Object) & - ((updater: Function, object: Object) => Object); - updateWith( - customizer: Function, - path: string[] | string, - updater: Function - ): (object: Object) => Object; - updateWith( - customizer: Function, - path: string[] | string, - updater: Function, - object: Object - ): Object; - values(object: Object): Array; - valuesIn(object: Object): Array; - - tap(interceptor: (value: T) => any): (value: T) => T; - tap(interceptor: (value: T) => any, value: T): T; - thru(interceptor: (value: T1) => T2): (value: T1) => T2; - thru(interceptor: (value: T1) => T2, value: T1): T2; - - // String - camelCase(string: string): string; - capitalize(string: string): string; - deburr(string: string): string; - endsWith(target: string): (string: string) => boolean; - endsWith(target: string, string: string): boolean; - escape(string: string): string; - escapeRegExp(string: string): string; - kebabCase(string: string): string; - lowerCase(string: string): string; - lowerFirst(string: string): string; - pad(length: number): (string: string) => string; - pad(length: number, string: string): string; - padChars( - chars: string - ): ((length: number) => (string: string) => string) & - ((length: number, string: string) => string); - padChars(chars: string, length: number): (string: string) => string; - padChars(chars: string, length: number, string: string): string; - padEnd(length: number): (string: string) => string; - padEnd(length: number, string: string): string; - padCharsEnd( - chars: string - ): ((length: number) => (string: string) => string) & - ((length: number, string: string) => string); - padCharsEnd(chars: string, length: number): (string: string) => string; - padCharsEnd(chars: string, length: number, string: string): string; - padStart(length: number): (string: string) => string; - padStart(length: number, string: string): string; - padCharsStart( - chars: string - ): ((length: number) => (string: string) => string) & - ((length: number, string: string) => string); - padCharsStart(chars: string, length: number): (string: string) => string; - padCharsStart(chars: string, length: number, string: string): string; - parseInt(radix: number): (string: string) => number; - parseInt(radix: number, string: string): number; - repeat(n: number): (string: string) => string; - repeat(n: number, string: string): string; - replace( - pattern: RegExp | string - ): (( - replacement: ((string: string) => string) | string - ) => (string: string) => string) & - (( - replacement: ((string: string) => string) | string, - string: string - ) => string); - replace( - pattern: RegExp | string, - replacement: ((string: string) => string) | string - ): (string: string) => string; - replace( - pattern: RegExp | string, - replacement: ((string: string) => string) | string, - string: string - ): string; - snakeCase(string: string): string; - split(separator: RegExp | string): (string: string) => Array; - split(separator: RegExp | string, string: string): Array; - startCase(string: string): string; - startsWith(target: string): (string: string) => boolean; - startsWith(target: string, string: string): boolean; - template(string: string): Function; - toLower(string: string): string; - toUpper(string: string): string; - trim(string: string): string; - trimChars(chars: string): (string: string) => string; - trimChars(chars: string, string: string): string; - trimEnd(string: string): string; - trimCharsEnd(chars: string): (string: string) => string; - trimCharsEnd(chars: string, string: string): string; - trimStart(string: string): string; - trimCharsStart(chars: string): (string: string) => string; - trimCharsStart(chars: string, string: string): string; - truncate(options: TruncateOptions): (string: string) => string; - truncate(options: TruncateOptions, string: string): string; - unescape(string: string): string; - upperCase(string: string): string; - upperFirst(string: string): string; - words(string: string): Array; - - // Util - attempt(func: Function): any; - bindAll(methodNames: Array): (object: Object) => Object; - bindAll(methodNames: Array, object: Object): Object; - cond(pairs: NestedArray): Function; - constant(value: T): () => T; - always(value: T): () => T; - defaultTo( - defaultValue: T2 - ): (value: T1) => T1; - defaultTo( - defaultValue: T2, - value: T1 - ): T1; - // NaN is a number instead of its own type, otherwise it would behave like null/void - defaultTo(defaultValue: T2): (value: T1) => T1 | T2; - defaultTo(defaultValue: T2, value: T1): T1 | T2; - defaultTo(defaultValue: T2): (value: T1) => T2; - defaultTo(defaultValue: T2, value: T1): T2; - flow: $ComposeReverse; - flow(funcs: Array): Function; - pipe: $ComposeReverse; - pipe(funcs: Array): Function; - flowRight: $Compose; - flowRight(funcs: Array): Function; - compose: $Compose; - compose(funcs: Array): Function; - identity(value: T): T; - iteratee(func: any): Function; - matches(source: Object): (object: Object) => boolean; - matches(source: Object, object: Object): boolean; - matchesProperty(path: Array | string): (srcValue: any) => Function; - matchesProperty(path: Array | string, srcValue: any): Function; - propEq(path: Array | string): (srcValue: any) => Function; - propEq(path: Array | string, srcValue: any): Function; - pathEq(path: Array | string): (srcValue: any) => Function; - pathEq(path: Array | string, srcValue: any): Function; - method(path: Array | string): Function; - methodOf(object: Object): Function; - mixin( - object: T - ): ((source: Object) => (options: { chain: boolean }) => T) & - ((source: Object, options: { chain: boolean }) => T); - mixin( - object: T, - source: Object - ): (options: { chain: boolean }) => T; - mixin( - object: T, - source: Object, - options: { chain: boolean } - ): T; - noConflict(): Lodash; - noop(...args: Array): void; - nthArg(n: number): Function; - over(iteratees: Array): Function; - juxt(iteratees: Array): Function; - overEvery(predicates: Array): Function; - allPass(predicates: Array): Function; - overSome(predicates: Array): Function; - anyPass(predicates: Array): Function; - property( - path: Array | string - ): (object: Object | Array) => any; - property(path: Array | string, object: Object | Array): any; - propertyOf(object: Object): (path: Array | string) => Function; - propertyOf(object: Object, path: Array | string): Function; - range(start: number): (end: number) => Array; - range(start: number, end: number): Array; - rangeStep( - step: number - ): ((start: number) => (end: number) => Array) & - ((start: number, end: number) => Array); - rangeStep(step: number, start: number): (end: number) => Array; - rangeStep(step: number, start: number, end: number): Array; - rangeRight(start: number): (end: number) => Array; - rangeRight(start: number, end: number): Array; - rangeStepRight( - step: number - ): ((start: number) => (end: number) => Array) & - ((start: number, end: number) => Array); - rangeStepRight(step: number, start: number): (end: number) => Array; - rangeStepRight(step: number, start: number, end: number): Array; - runInContext(context: Object): Function; - - stubArray(): Array<*>; - stubFalse(): false; - F(): false; - stubObject(): {}; - stubString(): ""; - stubTrue(): true; - T(): true; - times(iteratee: (i: number) => T): (n: number) => Array; - times(iteratee: (i: number) => T, n: number): Array; - toPath(value: any): Array; - uniqueId(prefix: string): string; - - __: any; - placeholder: any; - - convert(options: { - cap?: boolean, - curry?: boolean, - fixed?: boolean, - immutable?: boolean, - rearg?: boolean - }): void; - - // Properties - VERSION: string; - templateSettings: TemplateSettings; - } - - declare module.exports: Lodash; -} - -declare module "lodash/chunk" { - declare module.exports: $PropertyType<$Exports<"lodash">, "chunk">; -} - -declare module "lodash/compact" { - declare module.exports: $PropertyType<$Exports<"lodash">, "compact">; -} - -declare module "lodash/concat" { - declare module.exports: $PropertyType<$Exports<"lodash">, "concat">; -} - -declare module "lodash/difference" { - declare module.exports: $PropertyType<$Exports<"lodash">, "difference">; -} - -declare module "lodash/differenceBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "differenceBy">; -} - -declare module "lodash/differenceWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "differenceWith">; -} - -declare module "lodash/drop" { - declare module.exports: $PropertyType<$Exports<"lodash">, "drop">; -} - -declare module "lodash/dropRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "dropRight">; -} - -declare module "lodash/dropRightWhile" { - declare module.exports: $PropertyType<$Exports<"lodash">, "dropRightWhile">; -} - -declare module "lodash/dropWhile" { - declare module.exports: $PropertyType<$Exports<"lodash">, "dropWhile">; -} - -declare module "lodash/fill" { - declare module.exports: $PropertyType<$Exports<"lodash">, "fill">; -} - -declare module "lodash/findIndex" { - declare module.exports: $PropertyType<$Exports<"lodash">, "findIndex">; -} - -declare module "lodash/findLastIndex" { - declare module.exports: $PropertyType<$Exports<"lodash">, "findLastIndex">; -} - -declare module "lodash/first" { - declare module.exports: $PropertyType<$Exports<"lodash">, "first">; -} - -declare module "lodash/flatten" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flatten">; -} - -declare module "lodash/flattenDeep" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flattenDeep">; -} - -declare module "lodash/flattenDepth" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flattenDepth">; -} - -declare module "lodash/fromPairs" { - declare module.exports: $PropertyType<$Exports<"lodash">, "fromPairs">; -} - -declare module "lodash/head" { - declare module.exports: $PropertyType<$Exports<"lodash">, "head">; -} - -declare module "lodash/indexOf" { - declare module.exports: $PropertyType<$Exports<"lodash">, "indexOf">; -} - -declare module "lodash/initial" { - declare module.exports: $PropertyType<$Exports<"lodash">, "initial">; -} - -declare module "lodash/intersection" { - declare module.exports: $PropertyType<$Exports<"lodash">, "intersection">; -} - -declare module "lodash/intersectionBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "intersectionBy">; -} - -declare module "lodash/intersectionWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "intersectionWith">; -} - -declare module "lodash/join" { - declare module.exports: $PropertyType<$Exports<"lodash">, "join">; -} - -declare module "lodash/last" { - declare module.exports: $PropertyType<$Exports<"lodash">, "last">; -} - -declare module "lodash/lastIndexOf" { - declare module.exports: $PropertyType<$Exports<"lodash">, "lastIndexOf">; -} - -declare module "lodash/nth" { - declare module.exports: $PropertyType<$Exports<"lodash">, "nth">; -} - -declare module "lodash/pull" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pull">; -} - -declare module "lodash/pullAll" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pullAll">; -} - -declare module "lodash/pullAllBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pullAllBy">; -} - -declare module "lodash/pullAllWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pullAllWith">; -} - -declare module "lodash/pullAt" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pullAt">; -} - -declare module "lodash/remove" { - declare module.exports: $PropertyType<$Exports<"lodash">, "remove">; -} - -declare module "lodash/reverse" { - declare module.exports: $PropertyType<$Exports<"lodash">, "reverse">; -} - -declare module "lodash/slice" { - declare module.exports: $PropertyType<$Exports<"lodash">, "slice">; -} - -declare module "lodash/sortedIndex" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sortedIndex">; -} - -declare module "lodash/sortedIndexBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sortedIndexBy">; -} - -declare module "lodash/sortedIndexOf" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sortedIndexOf">; -} - -declare module "lodash/sortedLastIndex" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sortedLastIndex">; -} - -declare module "lodash/sortedLastIndexBy" { - declare module.exports: $PropertyType< - $Exports<"lodash">, - "sortedLastIndexBy" - >; -} - -declare module "lodash/sortedLastIndexOf" { - declare module.exports: $PropertyType< - $Exports<"lodash">, - "sortedLastIndexOf" - >; -} - -declare module "lodash/sortedUniq" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sortedUniq">; -} - -declare module "lodash/sortedUniqBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sortedUniqBy">; -} - -declare module "lodash/tail" { - declare module.exports: $PropertyType<$Exports<"lodash">, "tail">; -} - -declare module "lodash/take" { - declare module.exports: $PropertyType<$Exports<"lodash">, "take">; -} - -declare module "lodash/takeRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "takeRight">; -} - -declare module "lodash/takeRightWhile" { - declare module.exports: $PropertyType<$Exports<"lodash">, "takeRightWhile">; -} - -declare module "lodash/takeWhile" { - declare module.exports: $PropertyType<$Exports<"lodash">, "takeWhile">; -} - -declare module "lodash/union" { - declare module.exports: $PropertyType<$Exports<"lodash">, "union">; -} - -declare module "lodash/unionBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "unionBy">; -} - -declare module "lodash/unionWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "unionWith">; -} - -declare module "lodash/uniq" { - declare module.exports: $PropertyType<$Exports<"lodash">, "uniq">; -} - -declare module "lodash/uniqBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "uniqBy">; -} - -declare module "lodash/uniqWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "uniqWith">; -} - -declare module "lodash/unzip" { - declare module.exports: $PropertyType<$Exports<"lodash">, "unzip">; -} - -declare module "lodash/unzipWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "unzipWith">; -} - -declare module "lodash/without" { - declare module.exports: $PropertyType<$Exports<"lodash">, "without">; -} - -declare module "lodash/xor" { - declare module.exports: $PropertyType<$Exports<"lodash">, "xor">; -} - -declare module "lodash/xorBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "xorBy">; -} - -declare module "lodash/xorWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "xorWith">; -} - -declare module "lodash/zip" { - declare module.exports: $PropertyType<$Exports<"lodash">, "zip">; -} - -declare module "lodash/zipObject" { - declare module.exports: $PropertyType<$Exports<"lodash">, "zipObject">; -} - -declare module "lodash/zipObjectDeep" { - declare module.exports: $PropertyType<$Exports<"lodash">, "zipObjectDeep">; -} - -declare module "lodash/zipWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "zipWith">; -} - -declare module "lodash/countBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "countBy">; -} - -declare module "lodash/each" { - declare module.exports: $PropertyType<$Exports<"lodash">, "each">; -} - -declare module "lodash/eachRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "eachRight">; -} - -declare module "lodash/every" { - declare module.exports: $PropertyType<$Exports<"lodash">, "every">; -} - -declare module "lodash/filter" { - declare module.exports: $PropertyType<$Exports<"lodash">, "filter">; -} - -declare module "lodash/find" { - declare module.exports: $PropertyType<$Exports<"lodash">, "find">; -} - -declare module "lodash/findLast" { - declare module.exports: $PropertyType<$Exports<"lodash">, "findLast">; -} - -declare module "lodash/flatMap" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flatMap">; -} - -declare module "lodash/flatMapDeep" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flatMapDeep">; -} - -declare module "lodash/flatMapDepth" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flatMapDepth">; -} - -declare module "lodash/forEach" { - declare module.exports: $PropertyType<$Exports<"lodash">, "forEach">; -} - -declare module "lodash/forEachRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "forEachRight">; -} - -declare module "lodash/groupBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "groupBy">; -} - -declare module "lodash/includes" { - declare module.exports: $PropertyType<$Exports<"lodash">, "includes">; -} - -declare module "lodash/invokeMap" { - declare module.exports: $PropertyType<$Exports<"lodash">, "invokeMap">; -} - -declare module "lodash/keyBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "keyBy">; -} - -declare module "lodash/map" { - declare module.exports: $PropertyType<$Exports<"lodash">, "map">; -} - -declare module "lodash/orderBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "orderBy">; -} - -declare module "lodash/partition" { - declare module.exports: $PropertyType<$Exports<"lodash">, "partition">; -} - -declare module "lodash/reduce" { - declare module.exports: $PropertyType<$Exports<"lodash">, "reduce">; -} - -declare module "lodash/reduceRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "reduceRight">; -} - -declare module "lodash/reject" { - declare module.exports: $PropertyType<$Exports<"lodash">, "reject">; -} - -declare module "lodash/sample" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sample">; -} - -declare module "lodash/sampleSize" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sampleSize">; -} - -declare module "lodash/shuffle" { - declare module.exports: $PropertyType<$Exports<"lodash">, "shuffle">; -} - -declare module "lodash/size" { - declare module.exports: $PropertyType<$Exports<"lodash">, "size">; -} - -declare module "lodash/some" { - declare module.exports: $PropertyType<$Exports<"lodash">, "some">; -} - -declare module "lodash/sortBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sortBy">; -} - -declare module "lodash/now" { - declare module.exports: $PropertyType<$Exports<"lodash">, "now">; -} - -declare module "lodash/after" { - declare module.exports: $PropertyType<$Exports<"lodash">, "after">; -} - -declare module "lodash/ary" { - declare module.exports: $PropertyType<$Exports<"lodash">, "ary">; -} - -declare module "lodash/before" { - declare module.exports: $PropertyType<$Exports<"lodash">, "before">; -} - -declare module "lodash/bind" { - declare module.exports: $PropertyType<$Exports<"lodash">, "bind">; -} - -declare module "lodash/bindKey" { - declare module.exports: $PropertyType<$Exports<"lodash">, "bindKey">; -} - -declare module "lodash/curry" { - declare module.exports: $PropertyType<$Exports<"lodash">, "curry">; -} - -declare module "lodash/curryRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "curryRight">; -} - -declare module "lodash/debounce" { - declare module.exports: $PropertyType<$Exports<"lodash">, "debounce">; -} - -declare module "lodash/defer" { - declare module.exports: $PropertyType<$Exports<"lodash">, "defer">; -} - -declare module "lodash/delay" { - declare module.exports: $PropertyType<$Exports<"lodash">, "delay">; -} - -declare module "lodash/flip" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flip">; -} - -declare module "lodash/memoize" { - declare module.exports: $PropertyType<$Exports<"lodash">, "memoize">; -} - -declare module "lodash/negate" { - declare module.exports: $PropertyType<$Exports<"lodash">, "negate">; -} - -declare module "lodash/once" { - declare module.exports: $PropertyType<$Exports<"lodash">, "once">; -} - -declare module "lodash/overArgs" { - declare module.exports: $PropertyType<$Exports<"lodash">, "overArgs">; -} - -declare module "lodash/partial" { - declare module.exports: $PropertyType<$Exports<"lodash">, "partial">; -} - -declare module "lodash/partialRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "partialRight">; -} - -declare module "lodash/rearg" { - declare module.exports: $PropertyType<$Exports<"lodash">, "rearg">; -} - -declare module "lodash/rest" { - declare module.exports: $PropertyType<$Exports<"lodash">, "rest">; -} - -declare module "lodash/spread" { - declare module.exports: $PropertyType<$Exports<"lodash">, "spread">; -} - -declare module "lodash/throttle" { - declare module.exports: $PropertyType<$Exports<"lodash">, "throttle">; -} - -declare module "lodash/unary" { - declare module.exports: $PropertyType<$Exports<"lodash">, "unary">; -} - -declare module "lodash/wrap" { - declare module.exports: $PropertyType<$Exports<"lodash">, "wrap">; -} - -declare module "lodash/castArray" { - declare module.exports: $PropertyType<$Exports<"lodash">, "castArray">; -} - -declare module "lodash/clone" { - declare module.exports: $PropertyType<$Exports<"lodash">, "clone">; -} - -declare module "lodash/cloneDeep" { - declare module.exports: $PropertyType<$Exports<"lodash">, "cloneDeep">; -} - -declare module "lodash/cloneDeepWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "cloneDeepWith">; -} - -declare module "lodash/cloneWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "cloneWith">; -} - -declare module "lodash/conformsTo" { - declare module.exports: $PropertyType<$Exports<"lodash">, "conformsTo">; -} - -declare module "lodash/eq" { - declare module.exports: $PropertyType<$Exports<"lodash">, "eq">; -} - -declare module "lodash/gt" { - declare module.exports: $PropertyType<$Exports<"lodash">, "gt">; -} - -declare module "lodash/gte" { - declare module.exports: $PropertyType<$Exports<"lodash">, "gte">; -} - -declare module "lodash/isArguments" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isArguments">; -} - -declare module "lodash/isArray" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isArray">; -} - -declare module "lodash/isArrayBuffer" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isArrayBuffer">; -} - -declare module "lodash/isArrayLike" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isArrayLike">; -} - -declare module "lodash/isArrayLikeObject" { - declare module.exports: $PropertyType< - $Exports<"lodash">, - "isArrayLikeObject" - >; -} - -declare module "lodash/isBoolean" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isBoolean">; -} - -declare module "lodash/isBuffer" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isBuffer">; -} - -declare module "lodash/isDate" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isDate">; -} - -declare module "lodash/isElement" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isElement">; -} - -declare module "lodash/isEmpty" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isEmpty">; -} - -declare module "lodash/isEqual" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isEqual">; -} - -declare module "lodash/isEqualWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isEqualWith">; -} - -declare module "lodash/isError" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isError">; -} - -declare module "lodash/isFinite" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isFinite">; -} - -declare module "lodash/isFunction" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isFunction">; -} - -declare module "lodash/isInteger" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isInteger">; -} - -declare module "lodash/isLength" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isLength">; -} - -declare module "lodash/isMap" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isMap">; -} - -declare module "lodash/isMatch" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isMatch">; -} - -declare module "lodash/isMatchWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isMatchWith">; -} - -declare module "lodash/isNaN" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isNaN">; -} - -declare module "lodash/isNative" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isNative">; -} - -declare module "lodash/isNil" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isNil">; -} - -declare module "lodash/isNull" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isNull">; -} - -declare module "lodash/isNumber" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isNumber">; -} - -declare module "lodash/isObject" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isObject">; -} - -declare module "lodash/isObjectLike" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isObjectLike">; -} - -declare module "lodash/isPlainObject" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isPlainObject">; -} - -declare module "lodash/isRegExp" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isRegExp">; -} - -declare module "lodash/isSafeInteger" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isSafeInteger">; -} - -declare module "lodash/isSet" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isSet">; -} - -declare module "lodash/isString" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isString">; -} - -declare module "lodash/isSymbol" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isSymbol">; -} - -declare module "lodash/isTypedArray" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isTypedArray">; -} - -declare module "lodash/isUndefined" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isUndefined">; -} - -declare module "lodash/isWeakMap" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isWeakMap">; -} - -declare module "lodash/isWeakSet" { - declare module.exports: $PropertyType<$Exports<"lodash">, "isWeakSet">; -} - -declare module "lodash/lt" { - declare module.exports: $PropertyType<$Exports<"lodash">, "lt">; -} - -declare module "lodash/lte" { - declare module.exports: $PropertyType<$Exports<"lodash">, "lte">; -} - -declare module "lodash/toArray" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toArray">; -} - -declare module "lodash/toFinite" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toFinite">; -} - -declare module "lodash/toInteger" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toInteger">; -} - -declare module "lodash/toLength" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toLength">; -} - -declare module "lodash/toNumber" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toNumber">; -} - -declare module "lodash/toPlainObject" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toPlainObject">; -} - -declare module "lodash/toSafeInteger" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toSafeInteger">; -} - -declare module "lodash/toString" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toString">; -} - -declare module "lodash/add" { - declare module.exports: $PropertyType<$Exports<"lodash">, "add">; -} - -declare module "lodash/ceil" { - declare module.exports: $PropertyType<$Exports<"lodash">, "ceil">; -} - -declare module "lodash/divide" { - declare module.exports: $PropertyType<$Exports<"lodash">, "divide">; -} - -declare module "lodash/floor" { - declare module.exports: $PropertyType<$Exports<"lodash">, "floor">; -} - -declare module "lodash/max" { - declare module.exports: $PropertyType<$Exports<"lodash">, "max">; -} - -declare module "lodash/maxBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "maxBy">; -} - -declare module "lodash/mean" { - declare module.exports: $PropertyType<$Exports<"lodash">, "mean">; -} - -declare module "lodash/meanBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "meanBy">; -} - -declare module "lodash/min" { - declare module.exports: $PropertyType<$Exports<"lodash">, "min">; -} - -declare module "lodash/minBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "minBy">; -} - -declare module "lodash/multiply" { - declare module.exports: $PropertyType<$Exports<"lodash">, "multiply">; -} - -declare module "lodash/round" { - declare module.exports: $PropertyType<$Exports<"lodash">, "round">; -} - -declare module "lodash/subtract" { - declare module.exports: $PropertyType<$Exports<"lodash">, "subtract">; -} - -declare module "lodash/sum" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sum">; -} - -declare module "lodash/sumBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "sumBy">; -} - -declare module "lodash/clamp" { - declare module.exports: $PropertyType<$Exports<"lodash">, "clamp">; -} - -declare module "lodash/inRange" { - declare module.exports: $PropertyType<$Exports<"lodash">, "inRange">; -} - -declare module "lodash/random" { - declare module.exports: $PropertyType<$Exports<"lodash">, "random">; -} - -declare module "lodash/assign" { - declare module.exports: $PropertyType<$Exports<"lodash">, "assign">; -} - -declare module "lodash/assignIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "assignIn">; -} - -declare module "lodash/assignInWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "assignInWith">; -} - -declare module "lodash/assignWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "assignWith">; -} - -declare module "lodash/at" { - declare module.exports: $PropertyType<$Exports<"lodash">, "at">; -} - -declare module "lodash/create" { - declare module.exports: $PropertyType<$Exports<"lodash">, "create">; -} - -declare module "lodash/defaults" { - declare module.exports: $PropertyType<$Exports<"lodash">, "defaults">; -} - -declare module "lodash/defaultsDeep" { - declare module.exports: $PropertyType<$Exports<"lodash">, "defaultsDeep">; -} - -declare module "lodash/entries" { - declare module.exports: $PropertyType<$Exports<"lodash">, "entries">; -} - -declare module "lodash/entriesIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "entriesIn">; -} - -declare module "lodash/extend" { - declare module.exports: $PropertyType<$Exports<"lodash">, "extend">; -} - -declare module "lodash/extendWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "extendWith">; -} - -declare module "lodash/findKey" { - declare module.exports: $PropertyType<$Exports<"lodash">, "findKey">; -} - -declare module "lodash/findLastKey" { - declare module.exports: $PropertyType<$Exports<"lodash">, "findLastKey">; -} - -declare module "lodash/forIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "forIn">; -} - -declare module "lodash/forInRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "forInRight">; -} - -declare module "lodash/forOwn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "forOwn">; -} - -declare module "lodash/forOwnRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "forOwnRight">; -} - -declare module "lodash/functions" { - declare module.exports: $PropertyType<$Exports<"lodash">, "functions">; -} - -declare module "lodash/functionsIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "functionsIn">; -} - -declare module "lodash/get" { - declare module.exports: $PropertyType<$Exports<"lodash">, "get">; -} - -declare module "lodash/has" { - declare module.exports: $PropertyType<$Exports<"lodash">, "has">; -} - -declare module "lodash/hasIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "hasIn">; -} - -declare module "lodash/invert" { - declare module.exports: $PropertyType<$Exports<"lodash">, "invert">; -} - -declare module "lodash/invertBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "invertBy">; -} - -declare module "lodash/invoke" { - declare module.exports: $PropertyType<$Exports<"lodash">, "invoke">; -} - -declare module "lodash/keys" { - declare module.exports: $PropertyType<$Exports<"lodash">, "keys">; -} - -declare module "lodash/keysIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "keysIn">; -} - -declare module "lodash/mapKeys" { - declare module.exports: $PropertyType<$Exports<"lodash">, "mapKeys">; -} - -declare module "lodash/mapValues" { - declare module.exports: $PropertyType<$Exports<"lodash">, "mapValues">; -} - -declare module "lodash/merge" { - declare module.exports: $PropertyType<$Exports<"lodash">, "merge">; -} - -declare module "lodash/mergeWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "mergeWith">; -} - -declare module "lodash/omit" { - declare module.exports: $PropertyType<$Exports<"lodash">, "omit">; -} - -declare module "lodash/omitBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "omitBy">; -} - -declare module "lodash/pick" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pick">; -} - -declare module "lodash/pickBy" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pickBy">; -} - -declare module "lodash/result" { - declare module.exports: $PropertyType<$Exports<"lodash">, "result">; -} - -declare module "lodash/set" { - declare module.exports: $PropertyType<$Exports<"lodash">, "set">; -} - -declare module "lodash/setWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "setWith">; -} - -declare module "lodash/toPairs" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toPairs">; -} - -declare module "lodash/toPairsIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toPairsIn">; -} - -declare module "lodash/transform" { - declare module.exports: $PropertyType<$Exports<"lodash">, "transform">; -} - -declare module "lodash/unset" { - declare module.exports: $PropertyType<$Exports<"lodash">, "unset">; -} - -declare module "lodash/update" { - declare module.exports: $PropertyType<$Exports<"lodash">, "update">; -} - -declare module "lodash/updateWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "updateWith">; -} - -declare module "lodash/values" { - declare module.exports: $PropertyType<$Exports<"lodash">, "values">; -} - -declare module "lodash/valuesIn" { - declare module.exports: $PropertyType<$Exports<"lodash">, "valuesIn">; -} - -declare module "lodash/chain" { - declare module.exports: $PropertyType<$Exports<"lodash">, "chain">; -} - -declare module "lodash/tap" { - declare module.exports: $PropertyType<$Exports<"lodash">, "tap">; -} - -declare module "lodash/thru" { - declare module.exports: $PropertyType<$Exports<"lodash">, "thru">; -} - -declare module "lodash/camelCase" { - declare module.exports: $PropertyType<$Exports<"lodash">, "camelCase">; -} - -declare module "lodash/capitalize" { - declare module.exports: $PropertyType<$Exports<"lodash">, "capitalize">; -} - -declare module "lodash/deburr" { - declare module.exports: $PropertyType<$Exports<"lodash">, "deburr">; -} - -declare module "lodash/endsWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "endsWith">; -} - -declare module "lodash/escape" { - declare module.exports: $PropertyType<$Exports<"lodash">, "escape">; -} - -declare module "lodash/escapeRegExp" { - declare module.exports: $PropertyType<$Exports<"lodash">, "escapeRegExp">; -} - -declare module "lodash/kebabCase" { - declare module.exports: $PropertyType<$Exports<"lodash">, "kebabCase">; -} - -declare module "lodash/lowerCase" { - declare module.exports: $PropertyType<$Exports<"lodash">, "lowerCase">; -} - -declare module "lodash/lowerFirst" { - declare module.exports: $PropertyType<$Exports<"lodash">, "lowerFirst">; -} - -declare module "lodash/pad" { - declare module.exports: $PropertyType<$Exports<"lodash">, "pad">; -} - -declare module "lodash/padEnd" { - declare module.exports: $PropertyType<$Exports<"lodash">, "padEnd">; -} - -declare module "lodash/padStart" { - declare module.exports: $PropertyType<$Exports<"lodash">, "padStart">; -} - -declare module "lodash/parseInt" { - declare module.exports: $PropertyType<$Exports<"lodash">, "parseInt">; -} - -declare module "lodash/repeat" { - declare module.exports: $PropertyType<$Exports<"lodash">, "repeat">; -} - -declare module "lodash/replace" { - declare module.exports: $PropertyType<$Exports<"lodash">, "replace">; -} - -declare module "lodash/snakeCase" { - declare module.exports: $PropertyType<$Exports<"lodash">, "snakeCase">; -} - -declare module "lodash/split" { - declare module.exports: $PropertyType<$Exports<"lodash">, "split">; -} - -declare module "lodash/startCase" { - declare module.exports: $PropertyType<$Exports<"lodash">, "startCase">; -} - -declare module "lodash/startsWith" { - declare module.exports: $PropertyType<$Exports<"lodash">, "startsWith">; -} - -declare module "lodash/template" { - declare module.exports: $PropertyType<$Exports<"lodash">, "template">; -} - -declare module "lodash/toLower" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toLower">; -} - -declare module "lodash/toUpper" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toUpper">; -} - -declare module "lodash/trim" { - declare module.exports: $PropertyType<$Exports<"lodash">, "trim">; -} - -declare module "lodash/trimEnd" { - declare module.exports: $PropertyType<$Exports<"lodash">, "trimEnd">; -} - -declare module "lodash/trimStart" { - declare module.exports: $PropertyType<$Exports<"lodash">, "trimStart">; -} - -declare module "lodash/truncate" { - declare module.exports: $PropertyType<$Exports<"lodash">, "truncate">; -} - -declare module "lodash/unescape" { - declare module.exports: $PropertyType<$Exports<"lodash">, "unescape">; -} - -declare module "lodash/upperCase" { - declare module.exports: $PropertyType<$Exports<"lodash">, "upperCase">; -} - -declare module "lodash/upperFirst" { - declare module.exports: $PropertyType<$Exports<"lodash">, "upperFirst">; -} - -declare module "lodash/words" { - declare module.exports: $PropertyType<$Exports<"lodash">, "words">; -} - -declare module "lodash/attempt" { - declare module.exports: $PropertyType<$Exports<"lodash">, "attempt">; -} - -declare module "lodash/bindAll" { - declare module.exports: $PropertyType<$Exports<"lodash">, "bindAll">; -} - -declare module "lodash/cond" { - declare module.exports: $PropertyType<$Exports<"lodash">, "cond">; -} - -declare module "lodash/conforms" { - declare module.exports: $PropertyType<$Exports<"lodash">, "conforms">; -} - -declare module "lodash/constant" { - declare module.exports: $PropertyType<$Exports<"lodash">, "constant">; -} - -declare module "lodash/defaultTo" { - declare module.exports: $PropertyType<$Exports<"lodash">, "defaultTo">; -} - -declare module "lodash/flow" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flow">; -} - -declare module "lodash/flowRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "flowRight">; -} - -declare module "lodash/identity" { - declare module.exports: $PropertyType<$Exports<"lodash">, "identity">; -} - -declare module "lodash/iteratee" { - declare module.exports: $PropertyType<$Exports<"lodash">, "iteratee">; -} - -declare module "lodash/matches" { - declare module.exports: $PropertyType<$Exports<"lodash">, "matches">; -} - -declare module "lodash/matchesProperty" { - declare module.exports: $PropertyType<$Exports<"lodash">, "matchesProperty">; -} - -declare module "lodash/method" { - declare module.exports: $PropertyType<$Exports<"lodash">, "method">; -} - -declare module "lodash/methodOf" { - declare module.exports: $PropertyType<$Exports<"lodash">, "methodOf">; -} - -declare module "lodash/mixin" { - declare module.exports: $PropertyType<$Exports<"lodash">, "mixin">; -} - -declare module "lodash/noConflict" { - declare module.exports: $PropertyType<$Exports<"lodash">, "noConflict">; -} - -declare module "lodash/noop" { - declare module.exports: $PropertyType<$Exports<"lodash">, "noop">; -} - -declare module "lodash/nthArg" { - declare module.exports: $PropertyType<$Exports<"lodash">, "nthArg">; -} - -declare module "lodash/over" { - declare module.exports: $PropertyType<$Exports<"lodash">, "over">; -} - -declare module "lodash/overEvery" { - declare module.exports: $PropertyType<$Exports<"lodash">, "overEvery">; -} - -declare module "lodash/overSome" { - declare module.exports: $PropertyType<$Exports<"lodash">, "overSome">; -} - -declare module "lodash/property" { - declare module.exports: $PropertyType<$Exports<"lodash">, "property">; -} - -declare module "lodash/propertyOf" { - declare module.exports: $PropertyType<$Exports<"lodash">, "propertyOf">; -} - -declare module "lodash/range" { - declare module.exports: $PropertyType<$Exports<"lodash">, "range">; -} - -declare module "lodash/rangeRight" { - declare module.exports: $PropertyType<$Exports<"lodash">, "rangeRight">; -} - -declare module "lodash/runInContext" { - declare module.exports: $PropertyType<$Exports<"lodash">, "runInContext">; -} - -declare module "lodash/stubArray" { - declare module.exports: $PropertyType<$Exports<"lodash">, "stubArray">; -} - -declare module "lodash/stubFalse" { - declare module.exports: $PropertyType<$Exports<"lodash">, "stubFalse">; -} - -declare module "lodash/stubObject" { - declare module.exports: $PropertyType<$Exports<"lodash">, "stubObject">; -} - -declare module "lodash/stubString" { - declare module.exports: $PropertyType<$Exports<"lodash">, "stubString">; -} - -declare module "lodash/stubTrue" { - declare module.exports: $PropertyType<$Exports<"lodash">, "stubTrue">; -} - -declare module "lodash/times" { - declare module.exports: $PropertyType<$Exports<"lodash">, "times">; -} - -declare module "lodash/toPath" { - declare module.exports: $PropertyType<$Exports<"lodash">, "toPath">; -} - -declare module "lodash/uniqueId" { - declare module.exports: $PropertyType<$Exports<"lodash">, "uniqueId">; -} - -declare module "lodash/fp/chunk" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "chunk">; -} - -declare module "lodash/fp/compact" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "compact">; -} - -declare module "lodash/fp/concat" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "concat">; -} - -declare module "lodash/fp/difference" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "difference">; -} - -declare module "lodash/fp/differenceBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "differenceBy">; -} - -declare module "lodash/fp/differenceWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "differenceWith">; -} - -declare module "lodash/fp/drop" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "drop">; -} - -declare module "lodash/fp/dropLast" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dropLast">; -} - -declare module "lodash/fp/dropRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dropRight">; -} - -declare module "lodash/fp/dropRightWhile" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dropRightWhile">; -} - -declare module "lodash/fp/dropWhile" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dropWhile">; -} - -declare module "lodash/fp/dropLastWhile" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dropLastWhile">; -} - -declare module "lodash/fp/fill" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "fill">; -} - -declare module "lodash/fp/findIndex" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findIndex">; -} - -declare module "lodash/fp/findIndexFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findIndexFrom">; -} - -declare module "lodash/fp/findLastIndex" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findLastIndex">; -} - -declare module "lodash/fp/findLastIndexFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findLastIndexFrom">; -} - -declare module "lodash/fp/first" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "first">; -} - -declare module "lodash/fp/flatten" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flatten">; -} - -declare module "lodash/fp/unnest" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unnest">; -} - -declare module "lodash/fp/flattenDeep" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flattenDeep">; -} - -declare module "lodash/fp/flattenDepth" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flattenDepth">; -} - -declare module "lodash/fp/fromPairs" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "fromPairs">; -} - -declare module "lodash/fp/head" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "head">; -} - -declare module "lodash/fp/indexOf" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "indexOf">; -} - -declare module "lodash/fp/indexOfFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "indexOfFrom">; -} - -declare module "lodash/fp/initial" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "initial">; -} - -declare module "lodash/fp/init" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "init">; -} - -declare module "lodash/fp/intersection" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "intersection">; -} - -declare module "lodash/fp/intersectionBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "intersectionBy">; -} - -declare module "lodash/fp/intersectionWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "intersectionWith">; -} - -declare module "lodash/fp/join" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "join">; -} - -declare module "lodash/fp/last" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "last">; -} - -declare module "lodash/fp/lastIndexOf" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lastIndexOf">; -} - -declare module "lodash/fp/lastIndexOfFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lastIndexOfFrom">; -} - -declare module "lodash/fp/nth" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "nth">; -} - -declare module "lodash/fp/pull" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pull">; -} - -declare module "lodash/fp/pullAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pullAll">; -} - -declare module "lodash/fp/pullAllBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pullAllBy">; -} - -declare module "lodash/fp/pullAllWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pullAllWith">; -} - -declare module "lodash/fp/pullAt" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pullAt">; -} - -declare module "lodash/fp/remove" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "remove">; -} - -declare module "lodash/fp/reverse" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "reverse">; -} - -declare module "lodash/fp/slice" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "slice">; -} - -declare module "lodash/fp/sortedIndex" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedIndex">; -} - -declare module "lodash/fp/sortedIndexBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedIndexBy">; -} - -declare module "lodash/fp/sortedIndexOf" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedIndexOf">; -} - -declare module "lodash/fp/sortedLastIndex" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedLastIndex">; -} - -declare module "lodash/fp/sortedLastIndexBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedLastIndexBy">; -} - -declare module "lodash/fp/sortedLastIndexOf" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedLastIndexOf">; -} - -declare module "lodash/fp/sortedUniq" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedUniq">; -} - -declare module "lodash/fp/sortedUniqBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedUniqBy">; -} - -declare module "lodash/fp/tail" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "tail">; -} - -declare module "lodash/fp/take" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "take">; -} - -declare module "lodash/fp/takeRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "takeRight">; -} - -declare module "lodash/fp/takeLast" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "takeLast">; -} - -declare module "lodash/fp/takeRightWhile" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "takeRightWhile">; -} - -declare module "lodash/fp/takeLastWhile" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "takeLastWhile">; -} - -declare module "lodash/fp/takeWhile" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "takeWhile">; -} - -declare module "lodash/fp/union" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "union">; -} - -declare module "lodash/fp/unionBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unionBy">; -} - -declare module "lodash/fp/unionWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unionWith">; -} - -declare module "lodash/fp/uniq" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "uniq">; -} - -declare module "lodash/fp/uniqBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "uniqBy">; -} - -declare module "lodash/fp/uniqWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "uniqWith">; -} - -declare module "lodash/fp/unzip" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unzip">; -} - -declare module "lodash/fp/unzipWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unzipWith">; -} - -declare module "lodash/fp/without" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "without">; -} - -declare module "lodash/fp/xor" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "xor">; -} - -declare module "lodash/fp/symmetricDifference" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "symmetricDifference">; -} - -declare module "lodash/fp/xorBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "xorBy">; -} - -declare module "lodash/fp/symmetricDifferenceBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "symmetricDifferenceBy">; -} - -declare module "lodash/fp/xorWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "xorWith">; -} - -declare module "lodash/fp/symmetricDifferenceWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "symmetricDifferenceWith">; -} - -declare module "lodash/fp/zip" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zip">; -} - -declare module "lodash/fp/zipAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zipAll">; -} - -declare module "lodash/fp/zipObject" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zipObject">; -} - -declare module "lodash/fp/zipObj" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zipObj">; -} - -declare module "lodash/fp/zipObjectDeep" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zipObjectDeep">; -} - -declare module "lodash/fp/zipWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zipWith">; -} - -declare module "lodash/fp/countBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "countBy">; -} - -declare module "lodash/fp/each" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "each">; -} - -declare module "lodash/fp/eachRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "eachRight">; -} - -declare module "lodash/fp/every" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "every">; -} - -declare module "lodash/fp/all" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "all">; -} - -declare module "lodash/fp/filter" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "filter">; -} - -declare module "lodash/fp/find" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "find">; -} - -declare module "lodash/fp/findFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findFrom">; -} - -declare module "lodash/fp/findLast" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findLast">; -} - -declare module "lodash/fp/findLastFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findLastFrom">; -} - -declare module "lodash/fp/flatMap" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flatMap">; -} - -declare module "lodash/fp/flatMapDeep" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flatMapDeep">; -} - -declare module "lodash/fp/flatMapDepth" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flatMapDepth">; -} - -declare module "lodash/fp/forEach" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forEach">; -} - -declare module "lodash/fp/forEachRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forEachRight">; -} - -declare module "lodash/fp/groupBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "groupBy">; -} - -declare module "lodash/fp/includes" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "includes">; -} - -declare module "lodash/fp/contains" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "contains">; -} - -declare module "lodash/fp/includesFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "includesFrom">; -} - -declare module "lodash/fp/invokeMap" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invokeMap">; -} - -declare module "lodash/fp/invokeArgsMap" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invokeArgsMap">; -} - -declare module "lodash/fp/keyBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "keyBy">; -} - -declare module "lodash/fp/indexBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "indexBy">; -} - -declare module "lodash/fp/map" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "map">; -} - -declare module "lodash/fp/pluck" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pluck">; -} - -declare module "lodash/fp/orderBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "orderBy">; -} - -declare module "lodash/fp/partition" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "partition">; -} - -declare module "lodash/fp/reduce" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "reduce">; -} - -declare module "lodash/fp/reduceRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "reduceRight">; -} - -declare module "lodash/fp/reject" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "reject">; -} - -declare module "lodash/fp/sample" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sample">; -} - -declare module "lodash/fp/sampleSize" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sampleSize">; -} - -declare module "lodash/fp/shuffle" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "shuffle">; -} - -declare module "lodash/fp/size" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "size">; -} - -declare module "lodash/fp/some" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "some">; -} - -declare module "lodash/fp/any" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "any">; -} - -declare module "lodash/fp/sortBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortBy">; -} - -declare module "lodash/fp/now" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "now">; -} - -declare module "lodash/fp/after" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "after">; -} - -declare module "lodash/fp/ary" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "ary">; -} - -declare module "lodash/fp/nAry" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "nAry">; -} - -declare module "lodash/fp/before" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "before">; -} - -declare module "lodash/fp/bind" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "bind">; -} - -declare module "lodash/fp/bindKey" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "bindKey">; -} - -declare module "lodash/fp/curry" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "curry">; -} - -declare module "lodash/fp/curryN" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "curryN">; -} - -declare module "lodash/fp/curryRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "curryRight">; -} - -declare module "lodash/fp/curryRightN" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "curryRightN">; -} - -declare module "lodash/fp/debounce" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "debounce">; -} - -declare module "lodash/fp/defer" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defer">; -} - -declare module "lodash/fp/delay" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "delay">; -} - -declare module "lodash/fp/flip" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flip">; -} - -declare module "lodash/fp/memoize" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "memoize">; -} - -declare module "lodash/fp/negate" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "negate">; -} - -declare module "lodash/fp/complement" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "complement">; -} - -declare module "lodash/fp/once" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "once">; -} - -declare module "lodash/fp/overArgs" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "overArgs">; -} - -declare module "lodash/fp/useWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "useWith">; -} - -declare module "lodash/fp/partial" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "partial">; -} - -declare module "lodash/fp/partialRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "partialRight">; -} - -declare module "lodash/fp/rearg" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "rearg">; -} - -declare module "lodash/fp/rest" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "rest">; -} - -declare module "lodash/fp/unapply" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unapply">; -} - -declare module "lodash/fp/restFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "restFrom">; -} - -declare module "lodash/fp/spread" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "spread">; -} - -declare module "lodash/fp/apply" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "apply">; -} - -declare module "lodash/fp/spreadFrom" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "spreadFrom">; -} - -declare module "lodash/fp/throttle" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "throttle">; -} - -declare module "lodash/fp/unary" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unary">; -} - -declare module "lodash/fp/wrap" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "wrap">; -} - -declare module "lodash/fp/castArray" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "castArray">; -} - -declare module "lodash/fp/clone" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "clone">; -} - -declare module "lodash/fp/cloneDeep" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "cloneDeep">; -} - -declare module "lodash/fp/cloneDeepWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "cloneDeepWith">; -} - -declare module "lodash/fp/cloneWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "cloneWith">; -} - -declare module "lodash/fp/conformsTo" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "conformsTo">; -} - -declare module "lodash/fp/where" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "where">; -} - -declare module "lodash/fp/conforms" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "conforms">; -} - -declare module "lodash/fp/eq" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "eq">; -} - -declare module "lodash/fp/identical" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "identical">; -} - -declare module "lodash/fp/gt" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "gt">; -} - -declare module "lodash/fp/gte" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "gte">; -} - -declare module "lodash/fp/isArguments" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isArguments">; -} - -declare module "lodash/fp/isArray" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isArray">; -} - -declare module "lodash/fp/isArrayBuffer" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isArrayBuffer">; -} - -declare module "lodash/fp/isArrayLike" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isArrayLike">; -} - -declare module "lodash/fp/isArrayLikeObject" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isArrayLikeObject">; -} - -declare module "lodash/fp/isBoolean" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isBoolean">; -} - -declare module "lodash/fp/isBuffer" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isBuffer">; -} - -declare module "lodash/fp/isDate" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isDate">; -} - -declare module "lodash/fp/isElement" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isElement">; -} - -declare module "lodash/fp/isEmpty" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isEmpty">; -} - -declare module "lodash/fp/isEqual" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isEqual">; -} - -declare module "lodash/fp/equals" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "equals">; -} - -declare module "lodash/fp/isEqualWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isEqualWith">; -} - -declare module "lodash/fp/isError" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isError">; -} - -declare module "lodash/fp/isFinite" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isFinite">; -} - -declare module "lodash/fp/isFunction" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isFunction">; -} - -declare module "lodash/fp/isInteger" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isInteger">; -} - -declare module "lodash/fp/isLength" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isLength">; -} - -declare module "lodash/fp/isMap" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isMap">; -} - -declare module "lodash/fp/isMatch" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isMatch">; -} - -declare module "lodash/fp/whereEq" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "whereEq">; -} - -declare module "lodash/fp/isMatchWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isMatchWith">; -} - -declare module "lodash/fp/isNaN" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isNaN">; -} - -declare module "lodash/fp/isNative" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isNative">; -} - -declare module "lodash/fp/isNil" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isNil">; -} - -declare module "lodash/fp/isNull" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isNull">; -} - -declare module "lodash/fp/isNumber" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isNumber">; -} - -declare module "lodash/fp/isObject" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isObject">; -} - -declare module "lodash/fp/isObjectLike" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isObjectLike">; -} - -declare module "lodash/fp/isPlainObject" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isPlainObject">; -} - -declare module "lodash/fp/isRegExp" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isRegExp">; -} - -declare module "lodash/fp/isSafeInteger" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isSafeInteger">; -} - -declare module "lodash/fp/isSet" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isSet">; -} - -declare module "lodash/fp/isString" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isString">; -} - -declare module "lodash/fp/isSymbol" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isSymbol">; -} - -declare module "lodash/fp/isTypedArray" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isTypedArray">; -} - -declare module "lodash/fp/isUndefined" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isUndefined">; -} - -declare module "lodash/fp/isWeakMap" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isWeakMap">; -} - -declare module "lodash/fp/isWeakSet" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isWeakSet">; -} - -declare module "lodash/fp/lt" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lt">; -} - -declare module "lodash/fp/lte" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lte">; -} - -declare module "lodash/fp/toArray" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toArray">; -} - -declare module "lodash/fp/toFinite" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toFinite">; -} - -declare module "lodash/fp/toInteger" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toInteger">; -} - -declare module "lodash/fp/toLength" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toLength">; -} - -declare module "lodash/fp/toNumber" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toNumber">; -} - -declare module "lodash/fp/toPlainObject" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toPlainObject">; -} - -declare module "lodash/fp/toSafeInteger" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toSafeInteger">; -} - -declare module "lodash/fp/toString" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toString">; -} - -declare module "lodash/fp/add" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "add">; -} - -declare module "lodash/fp/ceil" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "ceil">; -} - -declare module "lodash/fp/divide" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "divide">; -} - -declare module "lodash/fp/floor" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "floor">; -} - -declare module "lodash/fp/max" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "max">; -} - -declare module "lodash/fp/maxBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "maxBy">; -} - -declare module "lodash/fp/mean" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mean">; -} - -declare module "lodash/fp/meanBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "meanBy">; -} - -declare module "lodash/fp/min" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "min">; -} - -declare module "lodash/fp/minBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "minBy">; -} - -declare module "lodash/fp/multiply" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "multiply">; -} - -declare module "lodash/fp/round" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "round">; -} - -declare module "lodash/fp/subtract" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "subtract">; -} - -declare module "lodash/fp/sum" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sum">; -} - -declare module "lodash/fp/sumBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sumBy">; -} - -declare module "lodash/fp/clamp" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "clamp">; -} - -declare module "lodash/fp/inRange" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "inRange">; -} - -declare module "lodash/fp/random" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "random">; -} - -declare module "lodash/fp/assign" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assign">; -} - -declare module "lodash/fp/assignAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignAll">; -} - -declare module "lodash/fp/assignInAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignInAll">; -} - -declare module "lodash/fp/extendAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "extendAll">; -} - -declare module "lodash/fp/assignIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignIn">; -} - -declare module "lodash/fp/assignInWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignInWith">; -} - -declare module "lodash/fp/assignWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignWith">; -} - -declare module "lodash/fp/assignInAllWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignInAllWith">; -} - -declare module "lodash/fp/extendAllWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "extendAllWith">; -} - -declare module "lodash/fp/assignAllWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignAllWith">; -} - -declare module "lodash/fp/at" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "at">; -} - -declare module "lodash/fp/props" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "props">; -} - -declare module "lodash/fp/paths" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "paths">; -} - -declare module "lodash/fp/create" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "create">; -} - -declare module "lodash/fp/defaults" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defaults">; -} - -declare module "lodash/fp/defaultsAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defaultsAll">; -} - -declare module "lodash/fp/defaultsDeep" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defaultsDeep">; -} - -declare module "lodash/fp/defaultsDeepAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defaultsDeepAll">; -} - -declare module "lodash/fp/entries" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "entries">; -} - -declare module "lodash/fp/entriesIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "entriesIn">; -} - -declare module "lodash/fp/extend" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "extend">; -} - -declare module "lodash/fp/extendWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "extendWith">; -} - -declare module "lodash/fp/findKey" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findKey">; -} - -declare module "lodash/fp/findLastKey" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findLastKey">; -} - -declare module "lodash/fp/forIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forIn">; -} - -declare module "lodash/fp/forInRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forInRight">; -} - -declare module "lodash/fp/forOwn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forOwn">; -} - -declare module "lodash/fp/forOwnRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forOwnRight">; -} - -declare module "lodash/fp/functions" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "functions">; -} - -declare module "lodash/fp/functionsIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "functionsIn">; -} - -declare module "lodash/fp/get" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "get">; -} - -declare module "lodash/fp/prop" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "prop">; -} - -declare module "lodash/fp/path" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "path">; -} - -declare module "lodash/fp/getOr" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "getOr">; -} - -declare module "lodash/fp/propOr" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "propOr">; -} - -declare module "lodash/fp/pathOr" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pathOr">; -} - -declare module "lodash/fp/has" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "has">; -} - -declare module "lodash/fp/hasIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "hasIn">; -} - -declare module "lodash/fp/invert" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invert">; -} - -declare module "lodash/fp/invertObj" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invertObj">; -} - -declare module "lodash/fp/invertBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invertBy">; -} - -declare module "lodash/fp/invoke" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invoke">; -} - -declare module "lodash/fp/invokeArgs" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invokeArgs">; -} - -declare module "lodash/fp/keys" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "keys">; -} - -declare module "lodash/fp/keysIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "keysIn">; -} - -declare module "lodash/fp/mapKeys" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mapKeys">; -} - -declare module "lodash/fp/mapValues" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mapValues">; -} - -declare module "lodash/fp/merge" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "merge">; -} - -declare module "lodash/fp/mergeAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mergeAll">; -} - -declare module "lodash/fp/mergeWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mergeWith">; -} - -declare module "lodash/fp/mergeAllWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mergeAllWith">; -} - -declare module "lodash/fp/omit" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "omit">; -} - -declare module "lodash/fp/omitAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "omitAll">; -} - -declare module "lodash/fp/omitBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "omitBy">; -} - -declare module "lodash/fp/pick" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pick">; -} - -declare module "lodash/fp/pickAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pickAll">; -} - -declare module "lodash/fp/pickBy" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pickBy">; -} - -declare module "lodash/fp/result" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "result">; -} - -declare module "lodash/fp/set" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "set">; -} - -declare module "lodash/fp/assoc" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assoc">; -} - -declare module "lodash/fp/assocPath" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assocPath">; -} - -declare module "lodash/fp/setWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "setWith">; -} - -declare module "lodash/fp/toPairs" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toPairs">; -} - -declare module "lodash/fp/toPairsIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toPairsIn">; -} - -declare module "lodash/fp/transform" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "transform">; -} - -declare module "lodash/fp/unset" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unset">; -} - -declare module "lodash/fp/dissoc" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dissoc">; -} - -declare module "lodash/fp/dissocPath" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dissocPath">; -} - -declare module "lodash/fp/update" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "update">; -} - -declare module "lodash/fp/updateWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "updateWith">; -} - -declare module "lodash/fp/values" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "values">; -} - -declare module "lodash/fp/valuesIn" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "valuesIn">; -} - -declare module "lodash/fp/tap" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "tap">; -} - -declare module "lodash/fp/thru" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "thru">; -} - -declare module "lodash/fp/camelCase" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "camelCase">; -} - -declare module "lodash/fp/capitalize" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "capitalize">; -} - -declare module "lodash/fp/deburr" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "deburr">; -} - -declare module "lodash/fp/endsWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "endsWith">; -} - -declare module "lodash/fp/escape" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "escape">; -} - -declare module "lodash/fp/escapeRegExp" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "escapeRegExp">; -} - -declare module "lodash/fp/kebabCase" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "kebabCase">; -} - -declare module "lodash/fp/lowerCase" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lowerCase">; -} - -declare module "lodash/fp/lowerFirst" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lowerFirst">; -} - -declare module "lodash/fp/pad" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pad">; -} - -declare module "lodash/fp/padChars" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "padChars">; -} - -declare module "lodash/fp/padEnd" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "padEnd">; -} - -declare module "lodash/fp/padCharsEnd" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "padCharsEnd">; -} - -declare module "lodash/fp/padStart" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "padStart">; -} - -declare module "lodash/fp/padCharsStart" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "padCharsStart">; -} - -declare module "lodash/fp/parseInt" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "parseInt">; -} - -declare module "lodash/fp/repeat" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "repeat">; -} - -declare module "lodash/fp/replace" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "replace">; -} - -declare module "lodash/fp/snakeCase" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "snakeCase">; -} - -declare module "lodash/fp/split" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "split">; -} - -declare module "lodash/fp/startCase" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "startCase">; -} - -declare module "lodash/fp/startsWith" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "startsWith">; -} - -declare module "lodash/fp/template" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "template">; -} - -declare module "lodash/fp/toLower" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toLower">; -} - -declare module "lodash/fp/toUpper" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toUpper">; -} - -declare module "lodash/fp/trim" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trim">; -} - -declare module "lodash/fp/trimChars" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trimChars">; -} - -declare module "lodash/fp/trimEnd" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trimEnd">; -} - -declare module "lodash/fp/trimCharsEnd" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trimCharsEnd">; -} - -declare module "lodash/fp/trimStart" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trimStart">; -} - -declare module "lodash/fp/trimCharsStart" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trimCharsStart">; -} - -declare module "lodash/fp/truncate" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "truncate">; -} - -declare module "lodash/fp/unescape" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unescape">; -} - -declare module "lodash/fp/upperCase" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "upperCase">; -} - -declare module "lodash/fp/upperFirst" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "upperFirst">; -} - -declare module "lodash/fp/words" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "words">; -} - -declare module "lodash/fp/attempt" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "attempt">; -} - -declare module "lodash/fp/bindAll" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "bindAll">; -} - -declare module "lodash/fp/cond" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "cond">; -} - -declare module "lodash/fp/constant" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "constant">; -} - -declare module "lodash/fp/always" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "always">; -} - -declare module "lodash/fp/defaultTo" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defaultTo">; -} - -declare module "lodash/fp/flow" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flow">; -} - -declare module "lodash/fp/pipe" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pipe">; -} - -declare module "lodash/fp/flowRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flowRight">; -} - -declare module "lodash/fp/compose" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "compose">; -} - -declare module "lodash/fp/identity" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "identity">; -} - -declare module "lodash/fp/iteratee" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "iteratee">; -} - -declare module "lodash/fp/matches" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "matches">; -} - -declare module "lodash/fp/matchesProperty" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "matchesProperty">; -} - -declare module "lodash/fp/propEq" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "propEq">; -} - -declare module "lodash/fp/pathEq" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pathEq">; -} - -declare module "lodash/fp/method" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "method">; -} - -declare module "lodash/fp/methodOf" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "methodOf">; -} - -declare module "lodash/fp/mixin" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mixin">; -} - -declare module "lodash/fp/noConflict" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "noConflict">; -} - -declare module "lodash/fp/noop" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "noop">; -} - -declare module "lodash/fp/nthArg" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "nthArg">; -} - -declare module "lodash/fp/over" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "over">; -} - -declare module "lodash/fp/juxt" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "juxt">; -} - -declare module "lodash/fp/overEvery" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "overEvery">; -} - -declare module "lodash/fp/allPass" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "allPass">; -} - -declare module "lodash/fp/overSome" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "overSome">; -} - -declare module "lodash/fp/anyPass" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "anyPass">; -} - -declare module "lodash/fp/property" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "property">; -} - -declare module "lodash/fp/propertyOf" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "propertyOf">; -} - -declare module "lodash/fp/range" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "range">; -} - -declare module "lodash/fp/rangeStep" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "rangeStep">; -} - -declare module "lodash/fp/rangeRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "rangeRight">; -} - -declare module "lodash/fp/rangeStepRight" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "rangeStepRight">; -} - -declare module "lodash/fp/runInContext" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "runInContext">; -} - -declare module "lodash/fp/stubArray" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "stubArray">; -} - -declare module "lodash/fp/stubFalse" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "stubFalse">; -} - -declare module "lodash/fp/F" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "F">; -} - -declare module "lodash/fp/stubObject" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "stubObject">; -} - -declare module "lodash/fp/stubString" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "stubString">; -} - -declare module "lodash/fp/stubTrue" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "stubTrue">; -} - -declare module "lodash/fp/T" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "T">; -} - -declare module "lodash/fp/times" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "times">; -} - -declare module "lodash/fp/toPath" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toPath">; -} - -declare module "lodash/fp/uniqueId" { - declare module.exports: $PropertyType<$Exports<"lodash/fp">, "uniqueId">; -} +// flow-typed signature: 1b1fe531123a979fe1c4624ccc62bd5a +// flow-typed version: dea0770be9/lodash_v4.x.x/flow_>=v0.63.x + +declare module "lodash" { + declare type __CurriedFunction1 = (...r: [AA]) => R; + declare type CurriedFunction1 = __CurriedFunction1; + + declare type __CurriedFunction2 = (( + ...r: [AA] + ) => CurriedFunction1) & + ((...r: [AA, BB]) => R); + declare type CurriedFunction2 = __CurriedFunction2; + + declare type __CurriedFunction3 = (( + ...r: [AA] + ) => CurriedFunction2) & + ((...r: [AA, BB]) => CurriedFunction1) & + ((...r: [AA, BB, CC]) => R); + declare type CurriedFunction3 = __CurriedFunction3< + A, + B, + C, + R, + *, + *, + * + >; + + declare type __CurriedFunction4< + A, + B, + C, + D, + R, + AA: A, + BB: B, + CC: C, + DD: D + > = ((...r: [AA]) => CurriedFunction3) & + ((...r: [AA, BB]) => CurriedFunction2) & + ((...r: [AA, BB, CC]) => CurriedFunction1) & + ((...r: [AA, BB, CC, DD]) => R); + declare type CurriedFunction4 = __CurriedFunction4< + A, + B, + C, + D, + R, + *, + *, + *, + * + >; + + declare type __CurriedFunction5< + A, + B, + C, + D, + E, + R, + AA: A, + BB: B, + CC: C, + DD: D, + EE: E + > = ((...r: [AA]) => CurriedFunction4) & + ((...r: [AA, BB]) => CurriedFunction3) & + ((...r: [AA, BB, CC]) => CurriedFunction2) & + ((...r: [AA, BB, CC, DD]) => CurriedFunction1) & + ((...r: [AA, BB, CC, DD, EE]) => R); + declare type CurriedFunction5 = __CurriedFunction5< + A, + B, + C, + D, + E, + R, + *, + *, + *, + *, + * + >; + + declare type __CurriedFunction6< + A, + B, + C, + D, + E, + F, + R, + AA: A, + BB: B, + CC: C, + DD: D, + EE: E, + FF: F + > = ((...r: [AA]) => CurriedFunction5) & + ((...r: [AA, BB]) => CurriedFunction4) & + ((...r: [AA, BB, CC]) => CurriedFunction3) & + ((...r: [AA, BB, CC, DD]) => CurriedFunction2) & + ((...r: [AA, BB, CC, DD, EE]) => CurriedFunction1) & + ((...r: [AA, BB, CC, DD, EE, FF]) => R); + declare type CurriedFunction6 = __CurriedFunction6< + A, + B, + C, + D, + E, + F, + R, + *, + *, + *, + *, + *, + * + >; + + declare type Curry = (((...r: [A]) => R) => CurriedFunction1) & + (((...r: [A, B]) => R) => CurriedFunction2) & + (((...r: [A, B, C]) => R) => CurriedFunction3) & + (( + (...r: [A, B, C, D]) => R + ) => CurriedFunction4) & + (( + (...r: [A, B, C, D, E]) => R + ) => CurriedFunction5) & + (( + (...r: [A, B, C, D, E, F]) => R + ) => CurriedFunction6); + + declare type UnaryFn = (a: A) => R; + + declare type TemplateSettings = { + escape?: RegExp, + evaluate?: RegExp, + imports?: Object, + interpolate?: RegExp, + variable?: string + }; + + declare type TruncateOptions = { + length?: number, + omission?: string, + separator?: RegExp | string + }; + + declare type DebounceOptions = { + leading?: boolean, + maxWait?: number, + trailing?: boolean + }; + + declare type ThrottleOptions = { + leading?: boolean, + trailing?: boolean + }; + + declare type NestedArray = Array>; + + declare type matchesIterateeShorthand = Object; + declare type matchesPropertyIterateeShorthand = [string, any]; + declare type propertyIterateeShorthand = string; + + declare type OPredicate = + | ((value: A, key: string, object: O) => any) + | matchesIterateeShorthand + | matchesPropertyIterateeShorthand + | propertyIterateeShorthand; + + declare type OIterateeWithResult = + | Object + | string + | ((value: V, key: string, object: O) => R); + declare type OIteratee = OIterateeWithResult; + declare type OFlatMapIteratee = OIterateeWithResult>; + + declare type Predicate = + | ((value: T, index: number, array: Array) => any) + | matchesIterateeShorthand + | matchesPropertyIterateeShorthand + | propertyIterateeShorthand; + + declare type _ValueOnlyIteratee = (value: T) => mixed; + declare type ValueOnlyIteratee = _ValueOnlyIteratee | string; + declare type _Iteratee = ( + item: T, + index: number, + array: ?Array + ) => mixed; + declare type Iteratee = _Iteratee | Object | string; + declare type FlatMapIteratee = + | ((item: T, index: number, array: ?$ReadOnlyArray) => Array) + | Object + | string; + declare type Comparator = (item: T, item2: T) => boolean; + + declare type MapIterator = + | ((item: T, index: number, array: Array) => U) + | propertyIterateeShorthand; + + declare type ReadOnlyMapIterator = + | ((item: T, index: number, array: $ReadOnlyArray) => U) + | propertyIterateeShorthand; + + declare type OMapIterator = + | ((item: T, key: string, object: O) => U) + | propertyIterateeShorthand; + + declare class Lodash { + // Array + chunk(array?: ?Array, size?: ?number): Array>; + compact(array?: ?Array): Array; + concat(base?: ?$ReadOnlyArray, ...elements: Array): Array; + difference(array?: ?$ReadOnlyArray, ...values: Array>): Array; + differenceBy( + array?: ?$ReadOnlyArray, + values?: ?$ReadOnlyArray, + iteratee?: ?ValueOnlyIteratee + ): T[]; + differenceWith(array?: ?$ReadOnlyArray, values?: ?$ReadOnlyArray, comparator?: ?Comparator): T[]; + drop(array?: ?Array, n?: ?number): Array; + dropRight(array?: ?Array, n?: ?number): Array; + dropRightWhile(array?: ?Array, predicate?: ?Predicate): Array; + dropWhile(array?: ?Array, predicate?: ?Predicate): Array; + fill( + array?: ?Array, + value?: ?U, + start?: ?number, + end?: ?number + ): Array; + findIndex( + array: $ReadOnlyArray, + predicate?: ?Predicate, + fromIndex?: ?number + ): number; + findIndex( + array: void | null, + predicate?: ?Predicate, + fromIndex?: ?number + ): -1; + findLastIndex( + array: $ReadOnlyArray, + predicate?: ?Predicate, + fromIndex?: ?number + ): number; + findLastIndex( + array: void | null, + predicate?: ?Predicate, + fromIndex?: ?number + ): -1; + // alias of _.head + first(array: ?$ReadOnlyArray): T; + flatten(array?: ?Array | X>): Array; + flattenDeep(array?: ?any[]): Array; + flattenDepth(array?: ?any[], depth?: ?number): any[]; + fromPairs(pairs?: ?Array<[A, B]>): { [key: A]: B }; + head(array: ?$ReadOnlyArray): T; + indexOf(array: Array, value: T, fromIndex?: number): number; + indexOf(array: void | null, value?: ?T, fromIndex?: ?number): -1; + initial(array: ?Array): Array; + intersection(...arrays?: Array<$ReadOnlyArray>): Array; + //Workaround until (...parameter: T, parameter2: U) works + intersectionBy(a1?: ?$ReadOnlyArray, iteratee?: ?ValueOnlyIteratee): Array; + intersectionBy( + a1?: ?$ReadOnlyArray, + a2?: ?$ReadOnlyArray, + iteratee?: ?ValueOnlyIteratee + ): Array; + intersectionBy( + a1?: ?$ReadOnlyArray, + a2?: ?$ReadOnlyArray, + a3?: ?$ReadOnlyArray, + iteratee?: ?ValueOnlyIteratee + ): Array; + intersectionBy( + a1?: ?$ReadOnlyArray, + a2?: ?$ReadOnlyArray, + a3?: ?$ReadOnlyArray, + a4?: ?$ReadOnlyArray, + iteratee?: ?ValueOnlyIteratee + ): Array; + //Workaround until (...parameter: T, parameter2: U) works + intersectionWith(a1?: ?$ReadOnlyArray, comparator?: ?Comparator): Array; + intersectionWith( + a1?: ?$ReadOnlyArray, + a2?: ?$ReadOnlyArray, + comparator?: ?Comparator + ): Array; + intersectionWith( + a1?: ?$ReadOnlyArray, + a2?: ?$ReadOnlyArray, + a3?: ?$ReadOnlyArray, + comparator?: ?Comparator + ): Array; + intersectionWith( + a1?: ?$ReadOnlyArray, + a2?: ?$ReadOnlyArray, + a3?: ?$ReadOnlyArray, + a4?: ?$ReadOnlyArray, + comparator?: ?Comparator + ): Array; + join(array: Array, separator?: ?string): string; + join(array: void | null, separator?: ?string): ''; + last(array: ?$ReadOnlyArray): T; + lastIndexOf(array: Array, value?: ?T, fromIndex?: ?number): number; + lastIndexOf(array: void | null, value?: ?T, fromIndex?: ?number): -1; + nth(array: T[], n?: ?number): T; + nth(array: void | null, n?: ?number): void; + pull(array: Array, ...values?: Array): Array; + pull(array: T, ...values?: Array): T; + pullAll(array: Array, values?: ?Array): Array; + pullAll(array: T, values?: ?Array): T; + pullAllBy( + array: Array, + values?: ?Array, + iteratee?: ?ValueOnlyIteratee + ): Array; + pullAllBy( + array: T, + values?: ?Array, + iteratee?: ?ValueOnlyIteratee + ): T; + pullAllWith(array: T[], values?: ?T[], comparator?: ?Function): T[]; + pullAllWith(array: T, values?: ?Array, comparator?: ?Function): T; + pullAt(array?: ?Array, ...indexed?: Array): Array; + pullAt(array?: ?Array, indexed?: ?Array): Array; + remove(array?: ?Array, predicate?: ?Predicate): Array; + reverse(array: Array): Array; + reverse(array: T): T; + slice(array?: ?$ReadOnlyArray, start?: ?number, end?: ?number): Array; + sortedIndex(array: Array, value: T): number; + sortedIndex(array: void | null, value: ?T): 0; + sortedIndexBy( + array: Array, + value?: ?T, + iteratee?: ?ValueOnlyIteratee + ): number; + sortedIndexBy( + array: void | null, + value?: ?T, + iteratee?: ?ValueOnlyIteratee + ): 0; + sortedIndexOf(array: Array, value: T): number; + sortedIndexOf(array: void | null, value?: ?T): -1; + sortedLastIndex(array: Array, value: T): number; + sortedLastIndex(array: void | null, value?: ?T): 0; + sortedLastIndexBy( + array: Array, + value: T, + iteratee?: ValueOnlyIteratee + ): number; + sortedLastIndexBy( + array: void | null, + value?: ?T, + iteratee?: ?ValueOnlyIteratee + ): 0; + sortedLastIndexOf(array: Array, value: T): number; + sortedLastIndexOf(array: void | null, value?: ?T): -1; + sortedUniq(array?: ?Array): Array; + sortedUniqBy(array?: ?Array, iteratee?: ?(value: T) => mixed): Array; + tail(array?: ?Array): Array; + take(array?: ?Array, n?: ?number): Array; + takeRight(array?: ?Array, n?: ?number): Array; + takeRightWhile(array?: ?Array, predicate?: ?Predicate): Array; + takeWhile(array?: ?Array, predicate?: ?Predicate): Array; + union(...arrays?: Array<$ReadOnlyArray>): Array; + //Workaround until (...parameter: T, parameter2: U) works + unionBy(a1?: ?$ReadOnlyArray, iteratee?: ?ValueOnlyIteratee): Array; + unionBy( + a1?: ?$ReadOnlyArray, + a2: $ReadOnlyArray, + iteratee?: ValueOnlyIteratee + ): Array; + unionBy( + a1: $ReadOnlyArray, + a2: $ReadOnlyArray, + a3: $ReadOnlyArray, + iteratee?: ValueOnlyIteratee + ): Array; + unionBy( + a1: $ReadOnlyArray, + a2: $ReadOnlyArray, + a3: $ReadOnlyArray, + a4: $ReadOnlyArray, + iteratee?: ValueOnlyIteratee + ): Array; + //Workaround until (...parameter: T, parameter2: U) works + unionWith(a1?: ?Array, comparator?: ?Comparator): Array; + unionWith( + a1: $ReadOnlyArray, + a2: $ReadOnlyArray, + comparator?: Comparator + ): Array; + unionWith( + a1: $ReadOnlyArray, + a2: $ReadOnlyArray, + a3: $ReadOnlyArray, + comparator?: Comparator + ): Array; + unionWith( + a1: $ReadOnlyArray, + a2: $ReadOnlyArray, + a3: $ReadOnlyArray, + a4: $ReadOnlyArray, + comparator?: Comparator + ): Array; + uniq(array?: ?Array): Array; + uniqBy(array?: ?Array, iteratee?: ?ValueOnlyIteratee): Array; + uniqWith(array?: ?Array, comparator?: ?Comparator): Array; + unzip(array?: ?Array): Array; + unzipWith(array: ?Array, iteratee?: ?Iteratee): Array; + without(array?: ?$ReadOnlyArray, ...values?: Array): Array; + xor(...array: Array>): Array; + //Workaround until (...parameter: T, parameter2: U) works + xorBy(a1?: ?Array, iteratee?: ?ValueOnlyIteratee): Array; + xorBy( + a1: Array, + a2: Array, + iteratee?: ValueOnlyIteratee + ): Array; + xorBy( + a1: Array, + a2: Array, + a3: Array, + iteratee?: ValueOnlyIteratee + ): Array; + xorBy( + a1: Array, + a2: Array, + a3: Array, + a4: Array, + iteratee?: ValueOnlyIteratee + ): Array; + //Workaround until (...parameter: T, parameter2: U) works + xorWith(a1?: ?Array, comparator?: ?Comparator): Array; + xorWith( + a1: Array, + a2: Array, + comparator?: Comparator + ): Array; + xorWith( + a1: Array, + a2: Array, + a3: Array, + comparator?: Comparator + ): Array; + xorWith( + a1: Array, + a2: Array, + a3: Array, + a4: Array, + comparator?: Comparator + ): Array; + zip(a1?: ?A[], a2?: ?B[]): Array<[A, B]>; + zip(a1: A[], a2: B[], a3: C[]): Array<[A, B, C]>; + zip(a1: A[], a2: B[], a3: C[], a4: D[]): Array<[A, B, C, D]>; + zip( + a1: A[], + a2: B[], + a3: C[], + a4: D[], + a5: E[] + ): Array<[A, B, C, D, E]>; + + zipObject(props: Array, values?: ?Array): { [key: K]: V }; + zipObject(props: void | null, values?: ?Array): {}; + zipObjectDeep(props: any[], values?: ?any): Object; + zipObjectDeep(props: void | null, values?: ?any): {}; + + zipWith(a1?: ?Array): Array<[A]>; + zipWith(a1: Array, iteratee: (A) => T): Array; + + zipWith(a1: Array, a2: Array): Array<[A, B]>; + zipWith( + a1: Array, + a2: Array, + iteratee: (A, B) => T + ): Array; + + zipWith( + a1: Array, + a2: Array, + a3: Array + ): Array<[A, B, C]>; + zipWith( + a1: Array, + a2: Array, + a3: Array, + iteratee: (A, B, C) => T + ): Array; + + zipWith( + a1: Array, + a2: Array, + a3: Array, + a4: Array + ): Array<[A, B, C, D]>; + zipWith( + a1: Array, + a2: Array, + a3: Array, + a4: Array, + iteratee: (A, B, C, D) => T + ): Array; + + // Collection + countBy(array: Array, iteratee?: ?ValueOnlyIteratee): Object; + countBy(array: void | null, iteratee?: ?ValueOnlyIteratee): {}; + countBy(object: T, iteratee?: ?ValueOnlyIteratee): Object; + // alias of _.forEach + each(array: $ReadOnlyArray, iteratee?: ?Iteratee): Array; + each(array: T, iteratee?: ?Iteratee): T; + each(object: T, iteratee?: ?OIteratee): T; + // alias of _.forEachRight + eachRight(array: $ReadOnlyArray, iteratee?: ?Iteratee): Array; + eachRight(array: T, iteratee?: ?Iteratee): T; + eachRight(object: T, iteratee?: OIteratee): T; + every(array?: ?$ReadOnlyArray, iteratee?: ?Iteratee): boolean; + every(object: T, iteratee?: OIteratee): boolean; + filter(array?: ?$ReadOnlyArray, predicate?: ?Predicate): Array; + filter( + object: T, + predicate?: OPredicate + ): Array; + find( + array: $ReadOnlyArray, + predicate?: ?Predicate, + fromIndex?: ?number + ): T | void; + find( + array: void | null, + predicate?: ?Predicate, + fromIndex?: ?number + ): void; + find( + object: T, + predicate?: OPredicate, + fromIndex?: number + ): V; + findLast( + array: ?$ReadOnlyArray, + predicate?: ?Predicate, + fromIndex?: ?number + ): T | void; + findLast( + object: T, + predicate?: ?OPredicate + ): V; + flatMap( + array?: ?$ReadOnlyArray, + iteratee?: ?FlatMapIteratee + ): Array; + flatMap( + object: T, + iteratee?: OFlatMapIteratee + ): Array; + flatMapDeep( + array?: ?$ReadOnlyArray, + iteratee?: ?FlatMapIteratee + ): Array; + flatMapDeep( + object: T, + iteratee?: ?OFlatMapIteratee + ): Array; + flatMapDepth( + array?: ?Array, + iteratee?: ?FlatMapIteratee, + depth?: ?number + ): Array; + flatMapDepth( + object: T, + iteratee?: OFlatMapIteratee, + depth?: number + ): Array; + forEach(array: $ReadOnlyArray, iteratee?: ?Iteratee): Array; + forEach(array: T, iteratee?: ?Iteratee): T; + forEach(object: T, iteratee?: ?OIteratee): T; + forEachRight(array: $ReadOnlyArray, iteratee?: ?Iteratee): Array; + forEachRight(array: T, iteratee?: ?Iteratee): T; + forEachRight(object: T, iteratee?: ?OIteratee): T; + groupBy( + array: $ReadOnlyArray, + iteratee?: ?ValueOnlyIteratee + ): { [key: V]: Array }; + groupBy( + array: void | null, + iteratee?: ?ValueOnlyIteratee + ): {}; + groupBy( + object: T, + iteratee?: ValueOnlyIteratee + ): { [key: V]: Array }; + includes(array: $ReadOnlyArray, value: T, fromIndex?: ?number): boolean; + includes(array: void | null, value?: ?T, fromIndex?: ?number): false; + includes(object: T, value: any, fromIndex?: number): boolean; + includes(str: string, value: string, fromIndex?: number): boolean; + invokeMap( + array?: ?$ReadOnlyArray, + path?: ?((value: T) => Array | string) | Array | string, + ...args?: Array + ): Array; + invokeMap( + object: T, + path: ((value: any) => Array | string) | Array | string, + ...args?: Array + ): Array; + keyBy( + array: $ReadOnlyArray, + iteratee?: ?ValueOnlyIteratee + ): { [key: V]: T }; + keyBy( + array: void | null, + iteratee?: ?ValueOnlyIteratee<*> + ): {}; + keyBy( + object: T, + iteratee?: ?ValueOnlyIteratee + ): { [key: V]: A }; + map(array?: ?Array, iteratee?: ?MapIterator): Array; + map( + array: ?$ReadOnlyArray, + iteratee?: ReadOnlyMapIterator + ): Array, + map( + object: ?T, + iteratee?: OMapIterator + ): Array; + map( + str: ?string, + iteratee?: (char: string, index: number, str: string) => any + ): string; + orderBy( + array: $ReadOnlyArray, + iteratees?: ?$ReadOnlyArray> | ?string, + orders?: ?$ReadOnlyArray<"asc" | "desc"> | ?string + ): Array; + orderBy( + array: null | void, + iteratees?: ?$ReadOnlyArray> | ?string, + orders?: ?$ReadOnlyArray<"asc" | "desc"> | ?string + ): Array; + orderBy( + object: T, + iteratees?: $ReadOnlyArray> | string, + orders?: $ReadOnlyArray<"asc" | "desc"> | string + ): Array; + partition( + array?: ?Array, + predicate?: ?Predicate + ): [Array, Array]; + partition( + object: T, + predicate?: OPredicate + ): [Array, Array]; + reduce( + array: $ReadOnlyArray, + iteratee?: ( + accumulator: U, + value: T, + index: number, + array: ?Array + ) => U, + accumulator?: U + ): U; + reduce( + array: void | null, + iteratee?: ?( + accumulator: U, + value: T, + index: number, + array: ?Array + ) => U, + accumulator?: ?U + ): void | null; + reduce( + object: T, + iteratee?: (accumulator: U, value: any, key: string, object: T) => U, + accumulator?: U + ): U; + reduceRight( + array: void | null, + iteratee?: ?( + accumulator: U, + value: T, + index: number, + array: ?Array + ) => U, + accumulator?: ?U + ): void | null; + reduceRight( + array: $ReadOnlyArray, + iteratee?: ?( + accumulator: U, + value: T, + index: number, + array: ?Array + ) => U, + accumulator?: ?U + ): U; + reduceRight( + object: T, + iteratee?: ?(accumulator: U, value: any, key: string, object: T) => U, + accumulator?: ?U + ): U; + reject(array: ?$ReadOnlyArray, predicate?: Predicate): Array; + reject( + object?: ?T, + predicate?: ?OPredicate + ): Array; + sample(array: ?Array): T; + sample(object: T): V; + sampleSize(array?: ?Array, n?: ?number): Array; + sampleSize(object: T, n?: number): Array; + shuffle(array: ?Array): Array; + shuffle(object: T): Array; + size(collection: $ReadOnlyArray | Object | string): number; + some(array: ?$ReadOnlyArray, predicate?: Predicate): boolean; + some(array: void | null, predicate?: ?Predicate): false; + some( + object?: ?T, + predicate?: OPredicate + ): boolean; + sortBy( + array: ?$ReadOnlyArray, + ...iteratees?: $ReadOnlyArray> + ): Array; + sortBy( + array: ?$ReadOnlyArray, + iteratees?: $ReadOnlyArray> + ): Array; + sortBy( + object: T, + ...iteratees?: Array> + ): Array; + sortBy( + object: T, + iteratees?: $ReadOnlyArray> + ): Array; + + // Date + now(): number; + + // Function + after(n: number, fn: Function): Function; + ary(func: Function, n?: number): Function; + before(n: number, fn: Function): Function; + bind(func: Function, thisArg: any, ...partials: Array): Function; + bindKey(obj?: ?Object, key?: ?string, ...partials?: Array): Function; + curry: Curry; + curry(func: Function, arity?: number): Function; + curryRight(func: Function, arity?: number): Function; + debounce(func: F, wait?: number, options?: DebounceOptions): F; + defer(func: Function, ...args?: Array): TimeoutID; + delay(func: Function, wait: number, ...args?: Array): TimeoutID; + flip(func: Function): Function; + memoize(func: F, resolver?: Function): F; + negate(predicate: Function): Function; + once(func: Function): Function; + overArgs(func?: ?Function, ...transforms?: Array): Function; + overArgs(func?: ?Function, transforms?: ?Array): Function; + partial(func: Function, ...partials: any[]): Function; + partialRight(func: Function, ...partials: Array): Function; + partialRight(func: Function, partials: Array): Function; + rearg(func: Function, ...indexes: Array): Function; + rearg(func: Function, indexes: Array): Function; + rest(func: Function, start?: number): Function; + spread(func: Function): Function; + throttle( + func: Function, + wait?: number, + options?: ThrottleOptions + ): Function; + unary(func: Function): Function; + wrap(value?: any, wrapper?: ?Function): Function; + + // Lang + castArray(value: *): any[]; + clone(value: T): T; + cloneDeep(value: T): T; + cloneDeepWith( + value: T, + customizer?: ?(value: T, key: number | string, object: T, stack: any) => U + ): U; + cloneWith( + value: T, + customizer?: ?(value: T, key: number | string, object: T, stack: any) => U + ): U; + conformsTo( + source: T, + predicates: T & { [key: string]: (x: any) => boolean } + ): boolean; + eq(value: any, other: any): boolean; + gt(value: any, other: any): boolean; + gte(value: any, other: any): boolean; + isArguments(value: void | null): false; + isArguments(value: any): boolean; + isArray(value: Array): true; + isArray(value: any): false; + isArrayBuffer(value: ArrayBuffer): true; + isArrayBuffer(value: any): false; + isArrayLike(value: Array | string | {length: number}): true; + isArrayLike(value: any): false; + isArrayLikeObject(value: {length: number} | Array): true; + isArrayLikeObject(value: any): false; + isBoolean(value: boolean): true; + isBoolean(value: any): false; + isBuffer(value: void | null): false; + isBuffer(value: any): boolean; + isDate(value: Date): true; + isDate(value: any): false; + isElement(value: Element): true; + isElement(value: any): false; + isEmpty(value: void | null | '' | {} | [] | number | boolean): true; + isEmpty(value: any): boolean; + isEqual(value: any, other: any): boolean; + isEqualWith( + value?: ?T, + other?: ?U, + customizer?: ?( + objValue: any, + otherValue: any, + key: number | string, + object: T, + other: U, + stack: any + ) => boolean | void + ): boolean; + isError(value: Error): true; + isError(value: any): false; + isFinite(value: number): boolean; + isFinite(value: any): false; + isFunction(value: Function): true; + isFunction(value: any): false; + isInteger(value: number): boolean; + isInteger(value: any): false; + isLength(value: void | null): false; + isLength(value: any): boolean; + isMap(value: Map): true; + isMap(value: any): false; + isMatch(object?: ?Object, source?: ?Object): boolean; + isMatchWith( + object?: ?T, + source?: ?U, + customizer?: ?( + objValue: any, + srcValue: any, + key: number | string, + object: T, + source: U + ) => boolean | void + ): boolean; + isNaN(value: number): boolean; + isNaN(value: any): false; + isNative(value: number | string | void | null | Object): false; + isNative(value: any): boolean; + isNil(value: void | null): true; + isNil(value: any): false; + isNull(value: null): true; + isNull(value: any): false; + isNumber(value: number): true; + isNumber(value: any): false; + isObject(value: Object): true; + isObject(value: any): false; + isObjectLike(value: void | null): false; + isObjectLike(value: any): boolean; + isPlainObject(value: Object): true; + isPlainObject(value: any): false; + isRegExp(value: RegExp): true; + isRegExp(value: any): false; + isSafeInteger(value: number): boolean; + isSafeInteger(value: any): false; + isSet(value: Set): true; + isSet(value: any): false; + isString(value: string): true; + isString(value: any): false; + isSymbol(value: Symbol): true; + isSymbol(value: any): false; + isTypedArray(value: $TypedArray): true; + isTypedArray(value: any): false; + isUndefined(value: void): true; + isUndefined(value: any): false; + isWeakMap(value: WeakMap): true; + isWeakMap(value: any): false; + isWeakSet(value: WeakSet): true; + isWeakSet(value: any): false; + lt(value: any, other: any): boolean; + lte(value: any, other: any): boolean; + toArray(value: any): Array; + toFinite(value: void | null): 0; + toFinite(value: any): number; + toInteger(value: void | null): 0; + toInteger(value: any): number; + toLength(value: void | null): 0; + toLength(value: any): number; + toNumber(value: void | null): 0; + toNumber(value: any): number; + toPlainObject(value: any): Object; + toSafeInteger(value: void | null): 0; + toSafeInteger(value: any): number; + toString(value: void | null): ''; + toString(value: any): string; + + // Math + add(augend: number, addend: number): number; + ceil(number: number, precision?: number): number; + divide(dividend: number, divisor: number): number; + floor(number: number, precision?: number): number; + max(array: ?Array): T; + maxBy(array: ?$ReadOnlyArray, iteratee?: Iteratee): T; + mean(array: Array<*>): number; + meanBy(array: Array, iteratee?: Iteratee): number; + min(array: ?Array): T; + minBy(array: ?$ReadOnlyArray, iteratee?: Iteratee): T; + multiply(multiplier: number, multiplicand: number): number; + round(number: number, precision?: number): number; + subtract(minuend: number, subtrahend: number): number; + sum(array: Array<*>): number; + sumBy(array: Array, iteratee?: Iteratee): number; + + // number + clamp(number?: number, lower?: ?number, upper?: ?number): number; + clamp(number: ?number, lower?: ?number, upper?: ?number): 0; + inRange(number: number, start?: number, end: number): boolean; + random(lower?: number, upper?: number, floating?: boolean): number; + + // Object + assign(object?: ?Object, ...sources?: Array): Object; + assignIn(): {}; + assignIn(a: A, b: B): A & B; + assignIn(a: A, b: B, c: C): A & B & C; + assignIn(a: A, b: B, c: C, d: D): A & B & C & D; + assignIn(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E; + assignInWith(): {}; + assignInWith( + object: T, + s1: A, + customizer?: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void + ): Object; + assignInWith( + object: T, + s1: A, + s2: B, + customizer?: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B + ) => any | void + ): Object; + assignInWith( + object: T, + s1: A, + s2: B, + s3: C, + customizer?: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B | C + ) => any | void + ): Object; + assignInWith( + object: T, + s1: A, + s2: B, + s3: C, + s4: D, + customizer?: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B | C | D + ) => any | void + ): Object; + assignWith(): {}; + assignWith( + object: T, + s1: A, + customizer?: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void + ): Object; + assignWith( + object: T, + s1: A, + s2: B, + customizer?: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B + ) => any | void + ): Object; + assignWith( + object: T, + s1: A, + s2: B, + s3: C, + customizer?: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B | C + ) => any | void + ): Object; + assignWith( + object: T, + s1: A, + s2: B, + s3: C, + s4: D, + customizer?: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B | C | D + ) => any | void + ): Object; + at(object?: ?Object, ...paths: Array): Array; + at(object?: ?Object, paths: Array): Array; + create(prototype: T, properties: Object): $Supertype; + create(prototype: any, properties: void | null): {}; + defaults(object?: ?Object, ...sources?: Array): Object; + defaultsDeep(object?: ?Object, ...sources?: Array): Object; + // alias for _.toPairs + entries(object?: ?Object): Array<[string, any]>; + // alias for _.toPairsIn + entriesIn(object?: ?Object): Array<[string, any]>; + // alias for _.assignIn + extend(a?: ?A, b?: ?B): A & B; + extend(a: A, b: B, c: C): A & B & C; + extend(a: A, b: B, c: C, d: D): A & B & C & D; + extend(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E; + // alias for _.assignInWith + extendWith( + object?: ?T, + s1?: ?A, + customizer?: ?( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void + ): Object; + extendWith( + object: T, + s1: A, + s2: B, + customizer?: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B + ) => any | void + ): Object; + extendWith( + object: T, + s1: A, + s2: B, + s3: C, + customizer?: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B | C + ) => any | void + ): Object; + extendWith( + object: T, + s1: A, + s2: B, + s3: C, + s4: D, + customizer?: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B | C | D + ) => any | void + ): Object; + findKey( + object: T, + predicate?: ?OPredicate + ): string | void; + findKey( + object: void | null, + predicate?: ?OPredicate + ): void; + findLastKey( + object: T, + predicate?: ?OPredicate + ): string | void; + findLastKey( + object: void | null, + predicate?: ?OPredicate + ): void; + forIn(object: Object, iteratee?: ?OIteratee<*>): Object; + forIn(object: void | null, iteratee?: ?OIteratee<*>): null; + forInRight(object: Object, iteratee?: ?OIteratee<*>): Object; + forInRight(object: void | null, iteratee?: ?OIteratee<*>): null; + forOwn(object: Object, iteratee?: ?OIteratee<*>): Object; + forOwn(object: void | null, iteratee?: ?OIteratee<*>): null; + forOwnRight(object: Object, iteratee?: ?OIteratee<*>): Object; + forOwnRight(object: void | null, iteratee?: ?OIteratee<*>): null; + functions(object?: ?Object): Array; + functionsIn(object?: ?Object): Array; + get( + object?: ?Object | ?$ReadOnlyArray | void | null, + path?: ?$ReadOnlyArray | string | number, + defaultValue?: any + ): any; + has(object: Object, path: Array | string): boolean; + has(object: Object, path: void | null): false; + has(object: void | null, path?: ?Array | ?string): false; + hasIn(object: Object, path: Array | string): boolean; + hasIn(object: Object, path: void | null): false; + hasIn(object: void | null, path?: ?Array | ?string): false; + invert(object: Object, multiVal?: ?boolean): Object; + invert(object: void | null, multiVal?: ?boolean): {}; + invertBy(object: Object, iteratee?: ?Function): Object; + invertBy(object: void | null, iteratee?: ?Function): {}; + invoke( + object?: ?Object, + path?: ?Array | string, + ...args?: Array + ): any; + keys(object?: ?{ [key: K]: any }): Array; + keys(object?: ?Object): Array; + keysIn(object?: ?Object): Array; + mapKeys(object: Object, iteratee?: ?OIteratee<*>): Object; + mapKeys(object: void | null, iteratee?: ?OIteratee<*>): {}; + mapValues(object: Object, iteratee?: ?OIteratee<*>): Object; + mapValues(object: void | null, iteratee?: ?OIteratee<*>): {}; + merge(object?: ?Object, ...sources?: Array): Object; + mergeWith(): {}; + mergeWith( + object: T, + customizer?: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void + ): Object; + mergeWith( + object: T, + s1: A, + s2: B, + customizer?: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B + ) => any | void + ): Object; + mergeWith( + object: T, + s1: A, + s2: B, + s3: C, + customizer?: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B | C + ) => any | void + ): Object; + mergeWith( + object: T, + s1: A, + s2: B, + s3: C, + s4: D, + customizer?: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B | C | D + ) => any | void + ): Object; + omit(object?: ?Object, ...props: Array): Object; + omit(object?: ?Object, props: Array): Object; + omitBy( + object: T, + predicate?: ?OPredicate + ): Object; + omitBy( + object: void | null, + predicate?: ?OPredicate + ): {}; + pick(object?: ?Object, ...props: Array): Object; + pick(object?: ?Object, props: Array): Object; + pickBy( + object: T, + predicate?: ?OPredicate + ): Object; + pickBy( + object: void | null, + predicate?: ?OPredicate + ): {}; + result( + object?: ?Object, + path?: ?Array | string, + defaultValue?: any + ): any; + set(object: Object, path?: ?Array | string, value: any): Object; + set( + object: T, + path?: ?Array | string, + value?: ?any): T; + setWith( + object: T, + path?: ?Array | string, + value: any, + customizer?: (nsValue: any, key: string, nsObject: T) => any + ): Object; + setWith( + object: T, + path?: ?Array | string, + value?: ?any, + customizer?: ?(nsValue: any, key: string, nsObject: T) => any + ): T; + toPairs(object?: ?Object | Array<*>): Array<[string, any]>; + toPairsIn(object?: ?Object): Array<[string, any]>; + transform( + collection: Object | $ReadOnlyArray, + iteratee?: ?OIteratee<*>, + accumulator?: any + ): any; + transform( + collection: void | null, + iteratee?: ?OIteratee<*>, + accumulator?: ?any + ): {}; + unset(object: Object, path?: ?Array | ?string): boolean; + unset(object: void | null, path?: ?Array | ?string): true; + update(object: Object, path: string[] | string, updater: Function): Object; + update( + object: T, + path?: ?string[] | ?string, + updater?: ?Function): T; + updateWith( + object: Object, + path?: ?string[] | ?string, + updater?: ?Function, + customizer?: ?Function + ): Object; + updateWith( + object: T, + path?: ?string[] | ?string, + updater?: ?Function, + customizer?: ?Function + ): T; + values(object?: ?Object): Array; + valuesIn(object?: ?Object): Array; + + // Seq + // harder to read, but this is _() + (value: any): any; + chain(value: T): any; + tap(value: T, interceptor: (value: T) => any): T; + thru(value: T1, interceptor: (value: T1) => T2): T2; + // TODO: _.prototype.* + + // String + camelCase(string: string): string; + camelCase(string: void | null): ''; + capitalize(string: string): string; + capitalize(string: void | null): ''; + deburr(string: string): string; + deburr(string: void | null): ''; + endsWith(string: string, target?: string, position?: ?number): boolean; + endsWith(string: void | null, target?: ?string, position?: ?number): false; + escape(string: string): string; + escape(string: void | null): ''; + escapeRegExp(string: string): string; + escapeRegExp(string: void | null): ''; + kebabCase(string: string): string; + kebabCase(string: void | null): ''; + lowerCase(string: string): string; + lowerCase(string: void | null): ''; + lowerFirst(string: string): string; + lowerFirst(string: void | null): ''; + pad(string?: ?string, length?: ?number, chars?: ?string): string; + padEnd(string?: ?string, length?: ?number, chars?: ?string): string; + padStart(string?: ?string, length?: ?number, chars?: ?string): string; + parseInt(string: string, radix?: ?number): number; + repeat(string: string, n?: ?number): string; + repeat(string: void | null, n?: ?number): ''; + replace( + string: string, + pattern: RegExp | string, + replacement: ((string: string) => string) | string + ): string; + replace( + string: void | null, + pattern?: ?RegExp | ?string, + replacement: ?((string: string) => string) | ?string + ): ''; + snakeCase(string: string): string; + snakeCase(string: void | null): ''; + split( + string?: ?string, + separator?: ?RegExp | ?string, + limit?: ?number + ): Array; + startCase(string: string): string; + startCase(string: void | null): ''; + startsWith(string: string, target?: string, position?: number): boolean; + startsWith(string: void | null, target?: ?string, position?: ?number): false; + template(string?: ?string, options?: ?TemplateSettings): Function; + toLower(string: string): string; + toLower(string: void | null): ''; + toUpper(string: string): string; + toUpper(string: void | null): ''; + trim(string: string, chars?: string): string; + trim(string: void | null, chars?: ?string): ''; + trimEnd(string: string, chars?: ?string): string; + trimEnd(string: void | null, chars?: ?string): ''; + trimStart(string: string, chars?: ?string): string; + trimStart(string: void | null, chars?: ?string): ''; + truncate(string: string, options?: TruncateOptions): string; + truncate(string: void | null, options?: ?TruncateOptions): ''; + unescape(string: string): string; + unescape(string: void | null): ''; + upperCase(string: string): string; + upperCase(string: void | null): ''; + upperFirst(string: string): string; + upperFirst(string: void | null): ''; + words(string?: ?string, pattern?: ?RegExp | ?string): Array; + + // Util + attempt(func: Function, ...args: Array): any; + bindAll(object: Object, methodNames?: ?Array): Object; + bindAll(object: T, methodNames?: ?Array): T; + bindAll(object: Object, ...methodNames: Array): Object; + cond(pairs?: ?NestedArray): Function; + conforms(source?: ?Object): Function; + constant(value: T): () => T; + defaultTo( + value: T1, + defaultValue: T2 + ): T1; + // NaN is a number instead of its own type, otherwise it would behave like null/void + defaultTo(value: T1, defaultValue: T2): T1 | T2; + defaultTo(value: T1, defaultValue: T2): T2; + flow: ($ComposeReverse & (funcs: Array) => Function); + flowRight: ($Compose & (funcs: Array) => Function); + identity(value: T): T; + iteratee(func?: any): Function; + matches(source?: ?Object): Function; + matchesProperty(path?: ?Array | string, srcValue: any): Function; + method(path?: ?Array | string, ...args?: Array): Function; + methodOf(object?: ?Object, ...args?: Array): Function; + mixin( + object?: T, + source: Object, + options?: { chain: boolean } + ): T; + noConflict(): Lodash; + noop(...args: Array): void; + nthArg(n?: ?number): Function; + over(...iteratees: Array): Function; + over(iteratees: Array): Function; + overEvery(...predicates: Array): Function; + overEvery(predicates: Array): Function; + overSome(...predicates: Array): Function; + overSome(predicates: Array): Function; + property(path?: ?Array | string): Function; + propertyOf(object?: ?Object): Function; + range(start: number, end: number, step?: number): Array; + range(end: number, step?: number): Array; + rangeRight(start?: ?number, end?: ?number, step?: ?number): Array; + rangeRight(end?: ?number, step?: ?number): Array; + runInContext(context?: ?Object): Function; + + stubArray(): Array<*>; + stubFalse(): false; + stubObject(): {}; + stubString(): ""; + stubTrue(): true; + times(n?: ?number, ...rest?: Array): Array; + times(n: number, iteratee: (i: number) => T): Array; + toPath(value: any): Array; + uniqueId(prefix?: ?string): string; + + // Properties + VERSION: string; + templateSettings: TemplateSettings; + } + + declare module.exports: Lodash; +} + +declare module "lodash/fp" { + declare type __CurriedFunction1 = (...r: [AA]) => R; + declare type CurriedFunction1 = __CurriedFunction1; + + declare type __CurriedFunction2 = (( + ...r: [AA] + ) => CurriedFunction1) & + ((...r: [AA, BB]) => R); + declare type CurriedFunction2 = __CurriedFunction2; + + declare type __CurriedFunction3 = (( + ...r: [AA] + ) => CurriedFunction2) & + ((...r: [AA, BB]) => CurriedFunction1) & + ((...r: [AA, BB, CC]) => R); + declare type CurriedFunction3 = __CurriedFunction3< + A, + B, + C, + R, + *, + *, + * + >; + + declare type __CurriedFunction4< + A, + B, + C, + D, + R, + AA: A, + BB: B, + CC: C, + DD: D + > = ((...r: [AA]) => CurriedFunction3) & + ((...r: [AA, BB]) => CurriedFunction2) & + ((...r: [AA, BB, CC]) => CurriedFunction1) & + ((...r: [AA, BB, CC, DD]) => R); + declare type CurriedFunction4 = __CurriedFunction4< + A, + B, + C, + D, + R, + *, + *, + *, + * + >; + + declare type __CurriedFunction5< + A, + B, + C, + D, + E, + R, + AA: A, + BB: B, + CC: C, + DD: D, + EE: E + > = ((...r: [AA]) => CurriedFunction4) & + ((...r: [AA, BB]) => CurriedFunction3) & + ((...r: [AA, BB, CC]) => CurriedFunction2) & + ((...r: [AA, BB, CC, DD]) => CurriedFunction1) & + ((...r: [AA, BB, CC, DD, EE]) => R); + declare type CurriedFunction5 = __CurriedFunction5< + A, + B, + C, + D, + E, + R, + *, + *, + *, + *, + * + >; + + declare type __CurriedFunction6< + A, + B, + C, + D, + E, + F, + R, + AA: A, + BB: B, + CC: C, + DD: D, + EE: E, + FF: F + > = ((...r: [AA]) => CurriedFunction5) & + ((...r: [AA, BB]) => CurriedFunction4) & + ((...r: [AA, BB, CC]) => CurriedFunction3) & + ((...r: [AA, BB, CC, DD]) => CurriedFunction2) & + ((...r: [AA, BB, CC, DD, EE]) => CurriedFunction1) & + ((...r: [AA, BB, CC, DD, EE, FF]) => R); + declare type CurriedFunction6 = __CurriedFunction6< + A, + B, + C, + D, + E, + F, + R, + *, + *, + *, + *, + *, + * + >; + + declare type Curry = (((...r: [A]) => R) => CurriedFunction1) & + (((...r: [A, B]) => R) => CurriedFunction2) & + (((...r: [A, B, C]) => R) => CurriedFunction3) & + (( + (...r: [A, B, C, D]) => R + ) => CurriedFunction4) & + (( + (...r: [A, B, C, D, E]) => R + ) => CurriedFunction5) & + (( + (...r: [A, B, C, D, E, F]) => R + ) => CurriedFunction6); + + declare type UnaryFn = (a: A) => R; + + declare type TemplateSettings = { + escape?: RegExp, + evaluate?: RegExp, + imports?: Object, + interpolate?: RegExp, + variable?: string + }; + + declare type TruncateOptions = { + length?: number, + omission?: string, + separator?: RegExp | string + }; + + declare type DebounceOptions = { + leading?: boolean, + maxWait?: number, + trailing?: boolean + }; + + declare type ThrottleOptions = { + leading?: boolean, + trailing?: boolean + }; + + declare type NestedArray = Array>; + + declare type matchesIterateeShorthand = Object; + declare type matchesPropertyIterateeShorthand = [string, any]; + declare type propertyIterateeShorthand = string; + + declare type OPredicate = + | ((value: A) => any) + | matchesIterateeShorthand + | matchesPropertyIterateeShorthand + | propertyIterateeShorthand; + + declare type OIterateeWithResult = Object | string | ((value: V) => R); + declare type OIteratee = OIterateeWithResult; + declare type OFlatMapIteratee = OIterateeWithResult>; + + declare type Predicate = + | ((value: T) => any) + | matchesIterateeShorthand + | matchesPropertyIterateeShorthand + | propertyIterateeShorthand; + + declare type _ValueOnlyIteratee = (value: T) => mixed; + declare type ValueOnlyIteratee = _ValueOnlyIteratee | string; + declare type _Iteratee = (item: T) => mixed; + declare type Iteratee = _Iteratee | Object | string; + declare type FlatMapIteratee = + | ((item: T) => Array) + | Object + | string; + declare type Comparator = (item: T, item2: T) => boolean; + + declare type MapIterator = ((item: T) => U) | propertyIterateeShorthand; + + declare type OMapIterator = + | ((item: T) => U) + | propertyIterateeShorthand; + + declare class Lodash { + // Array + chunk(size: number): (array: Array) => Array>; + chunk(size: number, array: Array): Array>; + compact(array?: ?$ReadOnlyArray): Array; + concat | T, B: Array | U>( + base: A + ): (elements: B) => Array; + concat | T, B: Array | U>( + base: A, + elements: B + ): Array; + difference(values: $ReadOnlyArray): (array: $ReadOnlyArray) => T[]; + difference(values: $ReadOnlyArray, array: $ReadOnlyArray): T[]; + differenceBy( + iteratee: ValueOnlyIteratee + ): ((values: $ReadOnlyArray) => (array: $ReadOnlyArray) => T[]) & + ((values: $ReadOnlyArray, array: $ReadOnlyArray) => T[]); + differenceBy( + iteratee: ValueOnlyIteratee, + values: $ReadOnlyArray + ): (array: $ReadOnlyArray) => T[]; + differenceBy( + iteratee: ValueOnlyIteratee, + values: $ReadOnlyArray, + array: $ReadOnlyArray + ): T[]; + differenceWith( + comparator: Comparator, + ): ((first: $ReadOnly) => (second: $ReadOnly) => T[]) & + ((first: $ReadOnly, second: $ReadOnly) => T[]); + differenceWith( + comparator: Comparator, + first: $ReadOnly, + ): (second: $ReadOnly) => T[]; + differenceWith( + comparator: Comparator, + first: $ReadOnly, + second: $ReadOnly + ): T[]; + drop(n: number): (array: Array) => Array; + drop(n: number, array: Array): Array; + dropLast(n: number): (array: Array) => Array; + dropLast(n: number, array: Array): Array; + dropRight(n: number): (array: Array) => Array; + dropRight(n: number, array: Array): Array; + dropRightWhile(predicate: Predicate): (array: Array) => Array; + dropRightWhile(predicate: Predicate, array: Array): Array; + dropWhile(predicate: Predicate): (array: Array) => Array; + dropWhile(predicate: Predicate, array: Array): Array; + dropLastWhile(predicate: Predicate): (array: Array) => Array; + dropLastWhile(predicate: Predicate, array: Array): Array; + fill( + start: number + ): (( + end: number + ) => ((value: U) => (array: Array) => Array) & + ((value: U, array: Array) => Array)) & + ((end: number, value: U) => (array: Array) => Array) & + ((end: number, value: U, array: Array) => Array); + fill( + start: number, + end: number + ): ((value: U) => (array: Array) => Array) & + ((value: U, array: Array) => Array); + fill( + start: number, + end: number, + value: U + ): (array: Array) => Array; + fill( + start: number, + end: number, + value: U, + array: Array + ): Array; + findIndex(predicate: Predicate): (array: $ReadOnlyArray) => number; + findIndex(predicate: Predicate, array: $ReadOnlyArray): number; + findIndexFrom( + predicate: Predicate + ): ((fromIndex: number) => (array: $ReadOnlyArray) => number) & + ((fromIndex: number, array: $ReadOnlyArray) => number); + findIndexFrom( + predicate: Predicate, + fromIndex: number + ): (array: $ReadOnlyArray) => number; + findIndexFrom( + predicate: Predicate, + fromIndex: number, + array: $ReadOnlyArray + ): number; + findLastIndex( + predicate: Predicate + ): (array: $ReadOnlyArray) => number; + findLastIndex(predicate: Predicate, array: $ReadOnlyArray): number; + findLastIndexFrom( + predicate: Predicate + ): ((fromIndex: number) => (array: $ReadOnlyArray) => number) & + ((fromIndex: number, array: $ReadOnlyArray) => number); + findLastIndexFrom( + predicate: Predicate, + fromIndex: number + ): (array: $ReadOnlyArray) => number; + findLastIndexFrom( + predicate: Predicate, + fromIndex: number, + array: $ReadOnlyArray + ): number; + // alias of _.head + first(array: $ReadOnlyArray): T; + flatten(array: Array | X>): Array; + unnest(array: Array | X>): Array; + flattenDeep(array: any[]): Array; + flattenDepth(depth: number): (array: any[]) => any[]; + flattenDepth(depth: number, array: any[]): any[]; + fromPairs(pairs: Array<[A, B]>): { [key: A]: B }; + head(array: $ReadOnlyArray): T; + indexOf(value: T): (array: Array) => number; + indexOf(value: T, array: Array): number; + indexOfFrom( + value: T + ): ((fromIndex: number) => (array: Array) => number) & + ((fromIndex: number, array: Array) => number); + indexOfFrom(value: T, fromIndex: number): (array: Array) => number; + indexOfFrom(value: T, fromIndex: number, array: Array): number; + initial(array: Array): Array; + init(array: Array): Array; + intersection(a1: Array): (a2: Array) => Array; + intersection(a1: Array, a2: Array): Array; + intersectionBy( + iteratee: ValueOnlyIteratee + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + intersectionBy( + iteratee: ValueOnlyIteratee, + a1: Array + ): (a2: Array) => Array; + intersectionBy( + iteratee: ValueOnlyIteratee, + a1: Array, + a2: Array + ): Array; + intersectionWith( + comparator: Comparator + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + intersectionWith( + comparator: Comparator, + a1: Array + ): (a2: Array) => Array; + intersectionWith( + comparator: Comparator, + a1: Array, + a2: Array + ): Array; + join(separator: string): (array: Array) => string; + join(separator: string, array: Array): string; + last(array: Array): T; + lastIndexOf(value: T): (array: Array) => number; + lastIndexOf(value: T, array: Array): number; + lastIndexOfFrom( + value: T + ): ((fromIndex: number) => (array: Array) => number) & + ((fromIndex: number, array: Array) => number); + lastIndexOfFrom( + value: T, + fromIndex: number + ): (array: Array) => number; + lastIndexOfFrom(value: T, fromIndex: number, array: Array): number; + nth(n: number): (array: T[]) => T; + nth(n: number, array: T[]): T; + pull(value: T): (array: Array) => Array; + pull(value: T, array: Array): Array; + pullAll(values: Array): (array: Array) => Array; + pullAll(values: Array, array: Array): Array; + pullAllBy( + iteratee: ValueOnlyIteratee + ): ((values: Array) => (array: Array) => Array) & + ((values: Array, array: Array) => Array); + pullAllBy( + iteratee: ValueOnlyIteratee, + values: Array + ): (array: Array) => Array; + pullAllBy( + iteratee: ValueOnlyIteratee, + values: Array, + array: Array + ): Array; + pullAllWith( + comparator: Function + ): ((values: T[]) => (array: T[]) => T[]) & + ((values: T[], array: T[]) => T[]); + pullAllWith(comparator: Function, values: T[]): (array: T[]) => T[]; + pullAllWith(comparator: Function, values: T[], array: T[]): T[]; + pullAt(indexed: Array): (array: Array) => Array; + pullAt(indexed: Array, array: Array): Array; + remove(predicate: Predicate): (array: Array) => Array; + remove(predicate: Predicate, array: Array): Array; + reverse(array: Array): Array; + slice( + start: number + ): ((end: number) => (array: Array) => Array) & + ((end: number, array: Array) => Array); + slice(start: number, end: number): (array: Array) => Array; + slice(start: number, end: number, array: Array): Array; + sortedIndex(value: T): (array: Array) => number; + sortedIndex(value: T, array: Array): number; + sortedIndexBy( + iteratee: ValueOnlyIteratee + ): ((value: T) => (array: Array) => number) & + ((value: T, array: Array) => number); + sortedIndexBy( + iteratee: ValueOnlyIteratee, + value: T + ): (array: Array) => number; + sortedIndexBy( + iteratee: ValueOnlyIteratee, + value: T, + array: Array + ): number; + sortedIndexOf(value: T): (array: Array) => number; + sortedIndexOf(value: T, array: Array): number; + sortedLastIndex(value: T): (array: Array) => number; + sortedLastIndex(value: T, array: Array): number; + sortedLastIndexBy( + iteratee: ValueOnlyIteratee + ): ((value: T) => (array: Array) => number) & + ((value: T, array: Array) => number); + sortedLastIndexBy( + iteratee: ValueOnlyIteratee, + value: T + ): (array: Array) => number; + sortedLastIndexBy( + iteratee: ValueOnlyIteratee, + value: T, + array: Array + ): number; + sortedLastIndexOf(value: T): (array: Array) => number; + sortedLastIndexOf(value: T, array: Array): number; + sortedUniq(array: Array): Array; + sortedUniqBy( + iteratee: (value: T) => mixed + ): (array: Array) => Array; + sortedUniqBy(iteratee: (value: T) => mixed, array: Array): Array; + tail(array: Array): Array; + take(n: number): (array: Array) => Array; + take(n: number, array: Array): Array; + takeRight(n: number): (array: Array) => Array; + takeRight(n: number, array: Array): Array; + takeLast(n: number): (array: Array) => Array; + takeLast(n: number, array: Array): Array; + takeRightWhile(predicate: Predicate): (array: Array) => Array; + takeRightWhile(predicate: Predicate, array: Array): Array; + takeLastWhile(predicate: Predicate): (array: Array) => Array; + takeLastWhile(predicate: Predicate, array: Array): Array; + takeWhile(predicate: Predicate): (array: Array) => Array; + takeWhile(predicate: Predicate, array: Array): Array; + union(a1: Array): (a2: Array) => Array; + union(a1: Array, a2: Array): Array; + unionBy( + iteratee: ValueOnlyIteratee + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + unionBy( + iteratee: ValueOnlyIteratee, + a1: Array + ): (a2: Array) => Array; + unionBy( + iteratee: ValueOnlyIteratee, + a1: Array, + a2: Array + ): Array; + unionWith( + comparator: Comparator + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + unionWith( + comparator: Comparator, + a1: Array + ): (a2: Array) => Array; + unionWith( + comparator: Comparator, + a1: Array, + a2: Array + ): Array; + uniq(array: Array): Array; + uniqBy(iteratee: ValueOnlyIteratee): (array: Array) => Array; + uniqBy(iteratee: ValueOnlyIteratee, array: Array): Array; + uniqWith(comparator: Comparator): (array: Array) => Array; + uniqWith(comparator: Comparator, array: Array): Array; + unzip(array: Array): Array; + unzipWith(iteratee: Iteratee): (array: Array) => Array; + unzipWith(iteratee: Iteratee, array: Array): Array; + without(values: Array): (array: Array) => Array; + without(values: Array, array: Array): Array; + xor(a1: Array): (a2: Array) => Array; + xor(a1: Array, a2: Array): Array; + symmetricDifference(a1: Array): (a2: Array) => Array; + symmetricDifference(a1: Array, a2: Array): Array; + xorBy( + iteratee: ValueOnlyIteratee + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + xorBy( + iteratee: ValueOnlyIteratee, + a1: Array + ): (a2: Array) => Array; + xorBy( + iteratee: ValueOnlyIteratee, + a1: Array, + a2: Array + ): Array; + symmetricDifferenceBy( + iteratee: ValueOnlyIteratee + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + symmetricDifferenceBy( + iteratee: ValueOnlyIteratee, + a1: Array + ): (a2: Array) => Array; + symmetricDifferenceBy( + iteratee: ValueOnlyIteratee, + a1: Array, + a2: Array + ): Array; + xorWith( + comparator: Comparator + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + xorWith( + comparator: Comparator, + a1: Array + ): (a2: Array) => Array; + xorWith(comparator: Comparator, a1: Array, a2: Array): Array; + symmetricDifferenceWith( + comparator: Comparator + ): ((a1: Array) => (a2: Array) => Array) & + ((a1: Array, a2: Array) => Array); + symmetricDifferenceWith( + comparator: Comparator, + a1: Array + ): (a2: Array) => Array; + symmetricDifferenceWith( + comparator: Comparator, + a1: Array, + a2: Array + ): Array; + zip(a1: A[]): (a2: B[]) => Array<[A, B]>; + zip(a1: A[], a2: B[]): Array<[A, B]>; + zipAll(arrays: Array>): Array; + zipObject(props?: Array): (values?: Array) => { [key: K]: V }; + zipObject(props?: Array, values?: Array): { [key: K]: V }; + zipObj(props: Array): (values: Array) => Object; + zipObj(props: Array, values: Array): Object; + zipObjectDeep(props: any[]): (values: any) => Object; + zipObjectDeep(props: any[], values: any): Object; + zipWith( + iteratee: Iteratee + ): ((a1: NestedArray) => (a2: NestedArray) => Array) & + ((a1: NestedArray, a2: NestedArray) => Array); + zipWith( + iteratee: Iteratee, + a1: NestedArray + ): (a2: NestedArray) => Array; + zipWith( + iteratee: Iteratee, + a1: NestedArray, + a2: NestedArray + ): Array; + // Collection + countBy( + iteratee: ValueOnlyIteratee + ): (collection: Array | { [id: any]: T }) => { [string]: number }; + countBy( + iteratee: ValueOnlyIteratee, + collection: Array | { [id: any]: T } + ): { [string]: number }; + // alias of _.forEach + each( + iteratee: Iteratee | OIteratee + ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; + each( + iteratee: Iteratee | OIteratee, + collection: $ReadOnlyArray | { [id: any]: T } + ): Array; + // alias of _.forEachRight + eachRight( + iteratee: Iteratee | OIteratee + ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; + eachRight( + iteratee: Iteratee | OIteratee, + collection: $ReadOnlyArray | { [id: any]: T } + ): Array; + every( + iteratee: Iteratee | OIteratee + ): (collection: $ReadOnlyArray | { [id: any]: T }) => boolean; + every( + iteratee: Iteratee | OIteratee, + collection: $ReadOnlyArray | { [id: any]: T } + ): boolean; + all( + iteratee: Iteratee | OIteratee + ): (collection: Array | { [id: any]: T }) => boolean; + all( + iteratee: Iteratee | OIteratee, + collection: Array | { [id: any]: T } + ): boolean; + filter( + predicate: Predicate | OPredicate + ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; + filter( + predicate: Predicate | OPredicate, + collection: $ReadOnlyArray | { [id: any]: T } + ): Array; + find( + predicate: Predicate | OPredicate + ): (collection: $ReadOnlyArray | { [id: any]: T }) => T | void; + find( + predicate: Predicate | OPredicate, + collection: $ReadOnlyArray | { [id: any]: T } + ): T | void; + findFrom( + predicate: Predicate | OPredicate + ): (( + fromIndex: number + ) => (collection: $ReadOnlyArray | { [id: any]: T }) => T | void) & + (( + fromIndex: number, + collection: $ReadOnlyArray | { [id: any]: T } + ) => T | void); + findFrom( + predicate: Predicate | OPredicate, + fromIndex: number + ): (collection: Array | { [id: any]: T }) => T | void; + findFrom( + predicate: Predicate | OPredicate, + fromIndex: number, + collection: $ReadOnlyArray | { [id: any]: T } + ): T | void; + findLast( + predicate: Predicate | OPredicate + ): (collection: $ReadOnlyArray | { [id: any]: T }) => T | void; + findLast( + predicate: Predicate | OPredicate, + collection: $ReadOnlyArray | { [id: any]: T } + ): T | void; + findLastFrom( + predicate: Predicate | OPredicate + ): (( + fromIndex: number + ) => (collection: $ReadOnlyArray | { [id: any]: T }) => T | void) & + (( + fromIndex: number, + collection: $ReadOnlyArray | { [id: any]: T } + ) => T | void); + findLastFrom( + predicate: Predicate | OPredicate, + fromIndex: number + ): (collection: $ReadOnlyArray | { [id: any]: T }) => T | void; + findLastFrom( + predicate: Predicate | OPredicate, + fromIndex: number, + collection: $ReadOnlyArray | { [id: any]: T } + ): T | void; + flatMap( + iteratee: FlatMapIteratee | OFlatMapIteratee + ): (collection: Array | { [id: any]: T }) => Array; + flatMap( + iteratee: FlatMapIteratee | OFlatMapIteratee, + collection: Array | { [id: any]: T } + ): Array; + flatMapDeep( + iteratee: FlatMapIteratee | OFlatMapIteratee + ): (collection: Array | { [id: any]: T }) => Array; + flatMapDeep( + iteratee: FlatMapIteratee | OFlatMapIteratee, + collection: Array | { [id: any]: T } + ): Array; + flatMapDepth( + iteratee: FlatMapIteratee | OFlatMapIteratee + ): (( + depth: number + ) => (collection: Array | { [id: any]: T }) => Array) & + ((depth: number, collection: Array | { [id: any]: T }) => Array); + flatMapDepth( + iteratee: FlatMapIteratee | OFlatMapIteratee, + depth: number + ): (collection: Array | { [id: any]: T }) => Array; + flatMapDepth( + iteratee: FlatMapIteratee | OFlatMapIteratee, + depth: number, + collection: Array | { [id: any]: T } + ): Array; + forEach( + iteratee: Iteratee | OIteratee + ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; + forEach( + iteratee: Iteratee | OIteratee, + collection: $ReadOnlyArray | { [id: any]: T } + ): Array; + forEachRight( + iteratee: Iteratee | OIteratee + ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; + forEachRight( + iteratee: Iteratee | OIteratee, + collection: $ReadOnlyArray | { [id: any]: T } + ): Array; + groupBy( + iteratee: ValueOnlyIteratee + ): ( + collection: $ReadOnlyArray | { [id: any]: T } + ) => { [key: V]: Array }; + groupBy( + iteratee: ValueOnlyIteratee, + collection: $ReadOnlyArray | { [id: any]: T } + ): { [key: V]: Array }; + includes(value: T): (collection: Array | { [id: any]: T }) => boolean; + includes(value: T, collection: Array | { [id: any]: T }): boolean; + includes(value: string): (str: string) => boolean; + includes(value: string, str: string): boolean; + contains(value: string): (str: string) => boolean; + contains(value: string, str: string): boolean; + contains(value: T): (collection: Array | { [id: any]: T }) => boolean; + contains(value: T, collection: Array | { [id: any]: T }): boolean; + includesFrom( + value: string + ): ((fromIndex: number) => (str: string) => boolean) & + ((fromIndex: number, str: string) => boolean); + includesFrom(value: string, fromIndex: number): (str: string) => boolean; + includesFrom(value: string, fromIndex: number, str: string): boolean; + includesFrom( + value: T + ): ((fromIndex: number) => (collection: Array) => boolean) & + ((fromIndex: number, collection: Array) => boolean); + includesFrom( + value: T, + fromIndex: number + ): (collection: Array) => boolean; + includesFrom(value: T, fromIndex: number, collection: Array): boolean; + invokeMap( + path: ((value: T) => Array | string) | Array | string + ): (collection: Array | { [id: any]: T }) => Array; + invokeMap( + path: ((value: T) => Array | string) | Array | string, + collection: Array | { [id: any]: T } + ): Array; + invokeArgsMap( + path: ((value: T) => Array | string) | Array | string + ): (( + collection: Array | { [id: any]: T } + ) => (args: Array) => Array) & + (( + collection: Array | { [id: any]: T }, + args: Array + ) => Array); + invokeArgsMap( + path: ((value: T) => Array | string) | Array | string, + collection: Array | { [id: any]: T } + ): (args: Array) => Array; + invokeArgsMap( + path: ((value: T) => Array | string) | Array | string, + collection: Array | { [id: any]: T }, + args: Array + ): Array; + keyBy( + iteratee: ValueOnlyIteratee + ): (collection: $ReadOnlyArray | { [id: any]: T }) => { [key: V]: T }; + keyBy( + iteratee: ValueOnlyIteratee, + collection: $ReadOnlyArray | { [id: any]: T } + ): { [key: V]: T }; + indexBy( + iteratee: ValueOnlyIteratee + ): (collection: $ReadOnlyArray | { [id: any]: T }) => { [key: V]: T }; + indexBy( + iteratee: ValueOnlyIteratee, + collection: $ReadOnlyArray | { [id: any]: T } + ): { [key: V]: T }; + map( + iteratee: MapIterator | OMapIterator + ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; + map( + iteratee: MapIterator | OMapIterator, + collection: $ReadOnlyArray | { [id: any]: T } + ): Array; + map(iteratee: (char: string) => any): (str: string) => string; + map(iteratee: (char: string) => any, str: string): string; + pluck( + iteratee: MapIterator | OMapIterator + ): (collection: Array | { [id: any]: T }) => Array; + pluck( + iteratee: MapIterator | OMapIterator, + collection: Array | { [id: any]: T } + ): Array; + pluck(iteratee: (char: string) => any): (str: string) => string; + pluck(iteratee: (char: string) => any, str: string): string; + orderBy( + iteratees: $ReadOnlyArray | OIteratee<*>> | string + ): (( + orders: $ReadOnlyArray<"asc" | "desc"> | string + ) => (collection: $ReadOnlyArray | { [id: any]: T }) => Array) & + (( + orders: $ReadOnlyArray<"asc" | "desc"> | string, + collection: $ReadOnlyArray | { [id: any]: T } + ) => Array); + orderBy( + iteratees: $ReadOnlyArray | OIteratee<*>> | string, + orders: $ReadOnlyArray<"asc" | "desc"> | string + ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; + orderBy( + iteratees: $ReadOnlyArray | OIteratee<*>> | string, + orders: $ReadOnlyArray<"asc" | "desc"> | string, + collection: $ReadOnlyArray | { [id: any]: T } + ): Array; + partition( + predicate: Predicate | OPredicate + ): (collection: Array | { [id: any]: T }) => [Array, Array]; + partition( + predicate: Predicate | OPredicate, + collection: Array | { [id: any]: T } + ): [Array, Array]; + reduce( + iteratee: (accumulator: U, value: T) => U + ): ((accumulator: U) => (collection: Array | { [id: any]: T }) => U) & + ((accumulator: U, collection: Array | { [id: any]: T }) => U); + reduce( + iteratee: (accumulator: U, value: T) => U, + accumulator: U + ): (collection: Array | { [id: any]: T }) => U; + reduce( + iteratee: (accumulator: U, value: T) => U, + accumulator: U, + collection: Array | { [id: any]: T } + ): U; + reduceRight( + iteratee: (value: T, accumulator: U) => U + ): ((accumulator: U) => (collection: Array | { [id: any]: T }) => U) & + ((accumulator: U, collection: Array | { [id: any]: T }) => U); + reduceRight( + iteratee: (value: T, accumulator: U) => U, + accumulator: U + ): (collection: Array | { [id: any]: T }) => U; + reduceRight( + iteratee: (value: T, accumulator: U) => U, + accumulator: U, + collection: Array | { [id: any]: T } + ): U; + reject( + predicate: Predicate | OPredicate + ): (collection: Array | { [id: any]: T }) => Array; + reject( + predicate: Predicate | OPredicate, + collection: Array | { [id: any]: T } + ): Array; + sample(collection: Array | { [id: any]: T }): T; + sampleSize( + n: number + ): (collection: Array | { [id: any]: T }) => Array; + sampleSize(n: number, collection: Array | { [id: any]: T }): Array; + shuffle(collection: Array | { [id: any]: T }): Array; + size(collection: $ReadOnlyArray | Object | string): number; + some( + predicate: Predicate | OPredicate + ): (collection: $ReadOnlyArray | { [id: any]: T }) => boolean; + some( + predicate: Predicate | OPredicate, + collection: $ReadOnlyArray | { [id: any]: T } + ): boolean; + any( + predicate: Predicate | OPredicate + ): (collection: $ReadOnlyArray | { [id: any]: T }) => boolean; + any( + predicate: Predicate | OPredicate, + collection: $ReadOnlyArray | { [id: any]: T } + ): boolean; + sortBy( + iteratees: | $ReadOnlyArray | OIteratee> + | Iteratee + | OIteratee + ): (collection: $ReadOnlyArray | { [id: any]: T }) => Array; + sortBy( + iteratees: | $ReadOnlyArray | OIteratee> + | Iteratee + | OIteratee, + collection: $ReadOnlyArray | { [id: any]: T }, + ): Array; + + // Date + now(): number; + + // Function + after(fn: Function): (n: number) => Function; + after(fn: Function, n: number): Function; + ary(func: Function): Function; + nAry(n: number): (func: Function) => Function; + nAry(n: number, func: Function): Function; + before(fn: Function): (n: number) => Function; + before(fn: Function, n: number): Function; + bind(func: Function): (thisArg: any) => Function; + bind(func: Function, thisArg: any): Function; + bindKey(obj: Object): (key: string) => Function; + bindKey(obj: Object, key: string): Function; + curry: Curry; + curryN(arity: number): (func: Function) => Function; + curryN(arity: number, func: Function): Function; + curryRight(func: Function): Function; + curryRightN(arity: number): (func: Function) => Function; + curryRightN(arity: number, func: Function): Function; + debounce(wait: number): (func: F) => F; + debounce(wait: number, func: F): F; + defer(func: Function): TimeoutID; + delay(wait: number): (func: Function) => TimeoutID; + delay(wait: number, func: Function): TimeoutID; + flip(func: Function): Function; + memoize(func: F): F; + negate(predicate: Function): Function; + complement(predicate: Function): Function; + once(func: Function): Function; + overArgs(func: Function): (transforms: Array) => Function; + overArgs(func: Function, transforms: Array): Function; + useWith(func: Function): (transforms: Array) => Function; + useWith(func: Function, transforms: Array): Function; + partial(func: Function): (partials: any[]) => Function; + partial(func: Function, partials: any[]): Function; + partialRight(func: Function): (partials: Array) => Function; + partialRight(func: Function, partials: Array): Function; + rearg(indexes: Array): (func: Function) => Function; + rearg(indexes: Array, func: Function): Function; + rest(func: Function): Function; + unapply(func: Function): Function; + restFrom(start: number): (func: Function) => Function; + restFrom(start: number, func: Function): Function; + spread(func: Function): Function; + apply(func: Function): Function; + spreadFrom(start: number): (func: Function) => Function; + spreadFrom(start: number, func: Function): Function; + throttle(wait: number): (func: Function) => Function; + throttle(wait: number, func: Function): Function; + unary(func: Function): Function; + wrap(wrapper: Function): (value: any) => Function; + wrap(wrapper: Function, value: any): Function; + + // Lang + castArray(value: *): any[]; + clone(value: T): T; + cloneDeep(value: T): T; + cloneDeepWith( + customizer: (value: T, key: number | string, object: T, stack: any) => U + ): (value: T) => U; + cloneDeepWith( + customizer: (value: T, key: number | string, object: T, stack: any) => U, + value: T + ): U; + cloneWith( + customizer: (value: T, key: number | string, object: T, stack: any) => U + ): (value: T) => U; + cloneWith( + customizer: (value: T, key: number | string, object: T, stack: any) => U, + value: T + ): U; + conformsTo( + predicates: T & { [key: string]: (x: any) => boolean } + ): (source: T) => boolean; + conformsTo( + predicates: T & { [key: string]: (x: any) => boolean }, + source: T + ): boolean; + where( + predicates: T & { [key: string]: (x: any) => boolean } + ): (source: T) => boolean; + where( + predicates: T & { [key: string]: (x: any) => boolean }, + source: T + ): boolean; + conforms( + predicates: T & { [key: string]: (x: any) => boolean } + ): (source: T) => boolean; + conforms( + predicates: T & { [key: string]: (x: any) => boolean }, + source: T + ): boolean; + eq(value: any): (other: any) => boolean; + eq(value: any, other: any): boolean; + identical(value: any): (other: any) => boolean; + identical(value: any, other: any): boolean; + gt(value: any): (other: any) => boolean; + gt(value: any, other: any): boolean; + gte(value: any): (other: any) => boolean; + gte(value: any, other: any): boolean; + isArguments(value: any): boolean; + isArray(value: any): boolean; + isArrayBuffer(value: any): boolean; + isArrayLike(value: any): boolean; + isArrayLikeObject(value: any): boolean; + isBoolean(value: any): boolean; + isBuffer(value: any): boolean; + isDate(value: any): boolean; + isElement(value: any): boolean; + isEmpty(value: any): boolean; + isEqual(value: any): (other: any) => boolean; + isEqual(value: any, other: any): boolean; + equals(value: any): (other: any) => boolean; + equals(value: any, other: any): boolean; + isEqualWith( + customizer: ( + objValue: any, + otherValue: any, + key: number | string, + object: T, + other: U, + stack: any + ) => boolean | void + ): ((value: T) => (other: U) => boolean) & + ((value: T, other: U) => boolean); + isEqualWith( + customizer: ( + objValue: any, + otherValue: any, + key: number | string, + object: T, + other: U, + stack: any + ) => boolean | void, + value: T + ): (other: U) => boolean; + isEqualWith( + customizer: ( + objValue: any, + otherValue: any, + key: number | string, + object: T, + other: U, + stack: any + ) => boolean | void, + value: T, + other: U + ): boolean; + isError(value: any): boolean; + isFinite(value: any): boolean; + isFunction(value: Function): true; + isFunction(value: number | string | void | null | Object): false; + isInteger(value: any): boolean; + isLength(value: any): boolean; + isMap(value: any): boolean; + isMatch(source: Object): (object: Object) => boolean; + isMatch(source: Object, object: Object): boolean; + whereEq(source: Object): (object: Object) => boolean; + whereEq(source: Object, object: Object): boolean; + isMatchWith( + customizer: ( + objValue: any, + srcValue: any, + key: number | string, + object: T, + source: U + ) => boolean | void + ): ((source: U) => (object: T) => boolean) & + ((source: U, object: T) => boolean); + isMatchWith( + customizer: ( + objValue: any, + srcValue: any, + key: number | string, + object: T, + source: U + ) => boolean | void, + source: U + ): (object: T) => boolean; + isMatchWith( + customizer: ( + objValue: any, + srcValue: any, + key: number | string, + object: T, + source: U + ) => boolean | void, + source: U, + object: T + ): boolean; + isNaN(value: any): boolean; + isNative(value: any): boolean; + isNil(value: any): boolean; + isNull(value: any): boolean; + isNumber(value: any): boolean; + isObject(value: any): boolean; + isObjectLike(value: any): boolean; + isPlainObject(value: any): boolean; + isRegExp(value: any): boolean; + isSafeInteger(value: any): boolean; + isSet(value: any): boolean; + isString(value: string): true; + isString(value: any): false; + isSymbol(value: any): boolean; + isTypedArray(value: any): boolean; + isUndefined(value: any): boolean; + isWeakMap(value: any): boolean; + isWeakSet(value: any): boolean; + lt(value: any): (other: any) => boolean; + lt(value: any, other: any): boolean; + lte(value: any): (other: any) => boolean; + lte(value: any, other: any): boolean; + toArray(value: any): Array; + toFinite(value: any): number; + toInteger(value: any): number; + toLength(value: any): number; + toNumber(value: any): number; + toPlainObject(value: any): Object; + toSafeInteger(value: any): number; + toString(value: any): string; + + // Math + add(augend: number): (addend: number) => number; + add(augend: number, addend: number): number; + ceil(number: number): number; + divide(dividend: number): (divisor: number) => number; + divide(dividend: number, divisor: number): number; + floor(number: number): number; + max(array: Array): T; + maxBy(iteratee: Iteratee): (array: Array) => T; + maxBy(iteratee: Iteratee, array: Array): T; + mean(array: Array<*>): number; + meanBy(iteratee: Iteratee): (array: Array) => number; + meanBy(iteratee: Iteratee, array: Array): number; + min(array: Array): T; + minBy(iteratee: Iteratee): (array: Array) => T; + minBy(iteratee: Iteratee, array: Array): T; + multiply(multiplier: number): (multiplicand: number) => number; + multiply(multiplier: number, multiplicand: number): number; + round(number: number): number; + subtract(minuend: number): (subtrahend: number) => number; + subtract(minuend: number, subtrahend: number): number; + sum(array: Array<*>): number; + sumBy(iteratee: Iteratee): (array: Array) => number; + sumBy(iteratee: Iteratee, array: Array): number; + + // number + clamp( + lower: number + ): ((upper: number) => (number: number) => number) & + ((upper: number, number: number) => number); + clamp(lower: number, upper: number): (number: number) => number; + clamp(lower: number, upper: number, number: number): number; + inRange( + start: number + ): ((end: number) => (number: number) => boolean) & + ((end: number, number: number) => boolean); + inRange(start: number, end: number): (number: number) => boolean; + inRange(start: number, end: number, number: number): boolean; + random(lower: number): (upper: number) => number; + random(lower: number, upper: number): number; + + // Object + assign(object: Object): (source: Object) => Object; + assign(object: Object, source: Object): Object; + assignAll(objects: Array): Object; + assignInAll(objects: Array): Object; + extendAll(objects: Array): Object; + assignIn(a: A): (b: B) => A & B; + assignIn(a: A, b: B): A & B; + assignInWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void + ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); + assignInWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void, + object: T + ): (s1: A) => Object; + assignInWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void, + object: T, + s1: A + ): Object; + assignWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void + ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); + assignWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void, + object: T + ): (s1: A) => Object; + assignWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void, + object: T, + s1: A + ): Object; + assignInAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void + ): (objects: Array) => Object; + assignInAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void, + objects: Array + ): Object; + extendAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void + ): (objects: Array) => Object; + extendAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void, + objects: Array + ): Object; + assignAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void + ): (objects: Array) => Object; + assignAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void, + objects: Array + ): Object; + at(paths: Array): (object: Object) => Array; + at(paths: Array, object: Object): Array; + props(paths: Array): (object: Object) => Array; + props(paths: Array, object: Object): Array; + paths(paths: Array): (object: Object) => Array; + paths(paths: Array, object: Object): Array; + create(prototype: T): $Supertype; + defaults(source: Object): (object: Object) => Object; + defaults(source: Object, object: Object): Object; + defaultsAll(objects: Array): Object; + defaultsDeep(source: Object): (object: Object) => Object; + defaultsDeep(source: Object, object: Object): Object; + defaultsDeepAll(objects: Array): Object; + // alias for _.toPairs + entries(object: Object): Array<[string, any]>; + // alias for _.toPairsIn + entriesIn(object: Object): Array<[string, any]>; + // alias for _.assignIn + extend(a: A): (b: B) => A & B; + extend(a: A, b: B): A & B; + // alias for _.assignInWith + extendWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void + ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); + extendWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void, + object: T + ): (s1: A) => Object; + extendWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A + ) => any | void, + object: T, + s1: A + ): Object; + findKey( + predicate: OPredicate + ): (object: T) => string | void; + findKey( + predicate: OPredicate, + object: T + ): string | void; + findLastKey( + predicate: OPredicate + ): (object: T) => string | void; + findLastKey( + predicate: OPredicate, + object: T + ): string | void; + forIn(iteratee: OIteratee<*>): (object: Object) => Object; + forIn(iteratee: OIteratee<*>, object: Object): Object; + forInRight(iteratee: OIteratee<*>): (object: Object) => Object; + forInRight(iteratee: OIteratee<*>, object: Object): Object; + forOwn(iteratee: OIteratee<*>): (object: Object) => Object; + forOwn(iteratee: OIteratee<*>, object: Object): Object; + forOwnRight(iteratee: OIteratee<*>): (object: Object) => Object; + forOwnRight(iteratee: OIteratee<*>, object: Object): Object; + functions(object: Object): Array; + functionsIn(object: Object): Array; + get(path: $ReadOnlyArray | string | number): (object: Object | $ReadOnlyArray | void | null) => any; + get(path: $ReadOnlyArray | string | number, object: Object | $ReadOnlyArray | void | null): any; + prop(path: Array | string): (object: Object | Array) => any; + prop(path: Array | string, object: Object | Array): any; + path(path: Array | string): (object: Object | Array) => any; + path(path: Array | string, object: Object | Array): any; + getOr( + defaultValue: any + ): (( + path: Array | string + ) => (object: Object | Array) => any) & + ((path: Array | string, object: Object | $ReadOnlyArray | void | null) => any); + getOr( + defaultValue: any, + path: Array | string + ): (object: Object | $ReadOnlyArray | void | null) => any; + getOr( + defaultValue: any, + path: Array | string, + object: Object | $ReadOnlyArray | void | null + ): any; + propOr( + defaultValue: any + ): (( + path: Array | string + ) => (object: Object | Array) => any) & + ((path: Array | string, object: Object | Array) => any); + propOr( + defaultValue: any, + path: Array | string + ): (object: Object | Array) => any; + propOr( + defaultValue: any, + path: Array | string, + object: Object | Array + ): any; + pathOr( + defaultValue: any + ): (( + path: Array | string + ) => (object: Object | Array) => any) & + ((path: Array | string, object: Object | Array) => any); + pathOr( + defaultValue: any, + path: Array | string + ): (object: Object | Array) => any; + pathOr( + defaultValue: any, + path: Array | string, + object: Object | Array + ): any; + has(path: Array | string): (object: Object) => boolean; + has(path: Array | string, object: Object): boolean; + hasIn(path: Array | string): (object: Object) => boolean; + hasIn(path: Array | string, object: Object): boolean; + invert(object: Object): Object; + invertObj(object: Object): Object; + invertBy(iteratee: Function): (object: Object) => Object; + invertBy(iteratee: Function, object: Object): Object; + invoke(path: Array | string): (object: Object) => any; + invoke(path: Array | string, object: Object): any; + invokeArgs( + path: Array | string + ): ((object: Object) => (args: Array) => any) & + ((object: Object, args: Array) => any); + invokeArgs( + path: Array | string, + object: Object + ): (args: Array) => any; + invokeArgs( + path: Array | string, + object: Object, + args: Array + ): any; + keys(object: { [key: K]: any }): Array; + keys(object: Object): Array; + keysIn(object: Object): Array; + mapKeys(iteratee: OIteratee<*>): (object: Object) => Object; + mapKeys(iteratee: OIteratee<*>, object: Object): Object; + mapValues(iteratee: OIteratee<*>): (object: Object) => Object; + mapValues(iteratee: OIteratee<*>, object: Object): Object; + merge(object: Object): (source: Object) => Object; + merge(object: Object, source: Object): Object; + mergeAll(objects: Array): Object; + mergeWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B + ) => any | void + ): ((object: T) => (s1: A) => Object) & ((object: T, s1: A) => Object); + mergeWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B + ) => any | void, + object: T + ): (s1: A) => Object; + mergeWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: T, + source: A | B + ) => any | void, + object: T, + s1: A + ): Object; + mergeAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void + ): (objects: Array) => Object; + mergeAllWith( + customizer: ( + objValue: any, + srcValue: any, + key: string, + object: Object, + source: Object + ) => any | void, + objects: Array + ): Object; + omit(props: Array): (object: Object) => Object; + omit(props: Array, object: Object): Object; + omitAll(props: Array): (object: Object) => Object; + omitAll(props: Array, object: Object): Object; + omitBy( + predicate: OPredicate + ): (object: T) => Object; + omitBy(predicate: OPredicate, object: T): Object; + pick(props: Array): (object: Object) => Object; + pick(props: Array, object: Object): Object; + pickAll(props: Array): (object: Object) => Object; + pickAll(props: Array, object: Object): Object; + pickBy( + predicate: OPredicate + ): (object: T) => Object; + pickBy(predicate: OPredicate, object: T): Object; + result(path: Array | string): (object: Object) => any; + result(path: Array | string, object: Object): any; + set( + path: Array | string + ): ((value: any) => (object: Object) => Object) & + ((value: any, object: Object) => Object); + set(path: Array | string, value: any): (object: Object) => Object; + set(path: Array | string, value: any, object: Object): Object; + assoc( + path: Array | string + ): ((value: any) => (object: Object) => Object) & + ((value: any, object: Object) => Object); + assoc(path: Array | string, value: any): (object: Object) => Object; + assoc(path: Array | string, value: any, object: Object): Object; + assocPath( + path: Array | string + ): ((value: any) => (object: Object) => Object) & + ((value: any, object: Object) => Object); + assocPath( + path: Array | string, + value: any + ): (object: Object) => Object; + assocPath(path: Array | string, value: any, object: Object): Object; + setWith( + customizer: (nsValue: any, key: string, nsObject: T) => any + ): (( + path: Array | string + ) => ((value: any) => (object: T) => Object) & + ((value: any, object: T) => Object)) & + ((path: Array | string, value: any) => (object: T) => Object) & + ((path: Array | string, value: any, object: T) => Object); + setWith( + customizer: (nsValue: any, key: string, nsObject: T) => any, + path: Array | string + ): ((value: any) => (object: T) => Object) & + ((value: any, object: T) => Object); + setWith( + customizer: (nsValue: any, key: string, nsObject: T) => any, + path: Array | string, + value: any + ): (object: T) => Object; + setWith( + customizer: (nsValue: any, key: string, nsObject: T) => any, + path: Array | string, + value: any, + object: T + ): Object; + toPairs(object: Object | Array<*>): Array<[string, any]>; + toPairsIn(object: Object): Array<[string, any]>; + transform( + iteratee: OIteratee<*> + ): (( + accumulator: any + ) => (collection: Object | $ReadOnlyArray) => any) & + ((accumulator: any, collection: Object | $ReadOnlyArray) => any); + transform( + iteratee: OIteratee<*>, + accumulator: any + ): (collection: Object | $ReadOnlyArray) => any; + transform( + iteratee: OIteratee<*>, + accumulator: any, + collection: Object | $ReadOnlyArray + ): any; + unset(path: Array | string): (object: Object) => Object; + unset(path: Array | string, object: Object): Object; + dissoc(path: Array | string): (object: Object) => Object; + dissoc(path: Array | string, object: Object): Object; + dissocPath(path: Array | string): (object: Object) => Object; + dissocPath(path: Array | string, object: Object): Object; + update( + path: string[] | string + ): ((updater: Function) => (object: Object) => Object) & + ((updater: Function, object: Object) => Object); + update( + path: string[] | string, + updater: Function + ): (object: Object) => Object; + update(path: string[] | string, updater: Function, object: Object): Object; + updateWith( + customizer: Function + ): (( + path: string[] | string + ) => ((updater: Function) => (object: Object) => Object) & + ((updater: Function, object: Object) => Object)) & + (( + path: string[] | string, + updater: Function + ) => (object: Object) => Object) & + ((path: string[] | string, updater: Function, object: Object) => Object); + updateWith( + customizer: Function, + path: string[] | string + ): ((updater: Function) => (object: Object) => Object) & + ((updater: Function, object: Object) => Object); + updateWith( + customizer: Function, + path: string[] | string, + updater: Function + ): (object: Object) => Object; + updateWith( + customizer: Function, + path: string[] | string, + updater: Function, + object: Object + ): Object; + values(object: Object): Array; + valuesIn(object: Object): Array; + + tap(interceptor: (value: T) => any): (value: T) => T; + tap(interceptor: (value: T) => any, value: T): T; + thru(interceptor: (value: T1) => T2): (value: T1) => T2; + thru(interceptor: (value: T1) => T2, value: T1): T2; + + // String + camelCase(string: string): string; + capitalize(string: string): string; + deburr(string: string): string; + endsWith(target: string): (string: string) => boolean; + endsWith(target: string, string: string): boolean; + escape(string: string): string; + escapeRegExp(string: string): string; + kebabCase(string: string): string; + lowerCase(string: string): string; + lowerFirst(string: string): string; + pad(length: number): (string: string) => string; + pad(length: number, string: string): string; + padChars( + chars: string + ): ((length: number) => (string: string) => string) & + ((length: number, string: string) => string); + padChars(chars: string, length: number): (string: string) => string; + padChars(chars: string, length: number, string: string): string; + padEnd(length: number): (string: string) => string; + padEnd(length: number, string: string): string; + padCharsEnd( + chars: string + ): ((length: number) => (string: string) => string) & + ((length: number, string: string) => string); + padCharsEnd(chars: string, length: number): (string: string) => string; + padCharsEnd(chars: string, length: number, string: string): string; + padStart(length: number): (string: string) => string; + padStart(length: number, string: string): string; + padCharsStart( + chars: string + ): ((length: number) => (string: string) => string) & + ((length: number, string: string) => string); + padCharsStart(chars: string, length: number): (string: string) => string; + padCharsStart(chars: string, length: number, string: string): string; + parseInt(radix: number): (string: string) => number; + parseInt(radix: number, string: string): number; + repeat(n: number): (string: string) => string; + repeat(n: number, string: string): string; + replace( + pattern: RegExp | string + ): (( + replacement: ((string: string) => string) | string + ) => (string: string) => string) & + (( + replacement: ((string: string) => string) | string, + string: string + ) => string); + replace( + pattern: RegExp | string, + replacement: ((string: string) => string) | string + ): (string: string) => string; + replace( + pattern: RegExp | string, + replacement: ((string: string) => string) | string, + string: string + ): string; + snakeCase(string: string): string; + split(separator: RegExp | string): (string: string) => Array; + split(separator: RegExp | string, string: string): Array; + startCase(string: string): string; + startsWith(target: string): (string: string) => boolean; + startsWith(target: string, string: string): boolean; + template(string: string): Function; + toLower(string: string): string; + toUpper(string: string): string; + trim(string: string): string; + trimChars(chars: string): (string: string) => string; + trimChars(chars: string, string: string): string; + trimEnd(string: string): string; + trimCharsEnd(chars: string): (string: string) => string; + trimCharsEnd(chars: string, string: string): string; + trimStart(string: string): string; + trimCharsStart(chars: string): (string: string) => string; + trimCharsStart(chars: string, string: string): string; + truncate(options: TruncateOptions): (string: string) => string; + truncate(options: TruncateOptions, string: string): string; + unescape(string: string): string; + upperCase(string: string): string; + upperFirst(string: string): string; + words(string: string): Array; + + // Util + attempt(func: Function): any; + bindAll(methodNames: Array): (object: Object) => Object; + bindAll(methodNames: Array, object: Object): Object; + cond(pairs: NestedArray): Function; + constant(value: T): () => T; + always(value: T): () => T; + defaultTo( + defaultValue: T2 + ): (value: T1) => T1; + defaultTo( + defaultValue: T2, + value: T1 + ): T1; + // NaN is a number instead of its own type, otherwise it would behave like null/void + defaultTo(defaultValue: T2): (value: T1) => T1 | T2; + defaultTo(defaultValue: T2, value: T1): T1 | T2; + defaultTo(defaultValue: T2): (value: T1) => T2; + defaultTo(defaultValue: T2, value: T1): T2; + flow: ($ComposeReverse & (funcs: Array) => Function); + pipe: ($ComposeReverse & (funcs: Array) => Function); + flowRight: ($Compose & (funcs: Array) => Function); + compose: ($Compose & (funcs: Array) => Function); + compose(funcs: Array): Function; + identity(value: T): T; + iteratee(func: any): Function; + matches(source: Object): (object: Object) => boolean; + matches(source: Object, object: Object): boolean; + matchesProperty(path: Array | string): (srcValue: any) => Function; + matchesProperty(path: Array | string, srcValue: any): Function; + propEq(path: Array | string): (srcValue: any) => Function; + propEq(path: Array | string, srcValue: any): Function; + pathEq(path: Array | string): (srcValue: any) => Function; + pathEq(path: Array | string, srcValue: any): Function; + method(path: Array | string): Function; + methodOf(object: Object): Function; + mixin( + object: T + ): ((source: Object) => (options: { chain: boolean }) => T) & + ((source: Object, options: { chain: boolean }) => T); + mixin( + object: T, + source: Object + ): (options: { chain: boolean }) => T; + mixin( + object: T, + source: Object, + options: { chain: boolean } + ): T; + noConflict(): Lodash; + noop(...args: Array): void; + nthArg(n: number): Function; + over(iteratees: Array): Function; + juxt(iteratees: Array): Function; + overEvery(predicates: Array): Function; + allPass(predicates: Array): Function; + overSome(predicates: Array): Function; + anyPass(predicates: Array): Function; + property( + path: Array | string + ): (object: Object | Array) => any; + property(path: Array | string, object: Object | Array): any; + propertyOf(object: Object): (path: Array | string) => Function; + propertyOf(object: Object, path: Array | string): Function; + range(start: number): (end: number) => Array; + range(start: number, end: number): Array; + rangeStep( + step: number + ): ((start: number) => (end: number) => Array) & + ((start: number, end: number) => Array); + rangeStep(step: number, start: number): (end: number) => Array; + rangeStep(step: number, start: number, end: number): Array; + rangeRight(start: number): (end: number) => Array; + rangeRight(start: number, end: number): Array; + rangeStepRight( + step: number + ): ((start: number) => (end: number) => Array) & + ((start: number, end: number) => Array); + rangeStepRight(step: number, start: number): (end: number) => Array; + rangeStepRight(step: number, start: number, end: number): Array; + runInContext(context: Object): Function; + + stubArray(): Array<*>; + stubFalse(): false; + F(): false; + stubObject(): {}; + stubString(): ""; + stubTrue(): true; + T(): true; + times(iteratee: (i: number) => T): (n: number) => Array; + times(iteratee: (i: number) => T, n: number): Array; + toPath(value: any): Array; + uniqueId(prefix: string): string; + + __: any; + placeholder: any; + + convert(options: { + cap?: boolean, + curry?: boolean, + fixed?: boolean, + immutable?: boolean, + rearg?: boolean + }): void; + + // Properties + VERSION: string; + templateSettings: TemplateSettings; + } + + declare module.exports: Lodash; +} + +declare module "lodash/chunk" { + declare module.exports: $PropertyType<$Exports<"lodash">, "chunk">; +} + +declare module "lodash/compact" { + declare module.exports: $PropertyType<$Exports<"lodash">, "compact">; +} + +declare module "lodash/concat" { + declare module.exports: $PropertyType<$Exports<"lodash">, "concat">; +} + +declare module "lodash/difference" { + declare module.exports: $PropertyType<$Exports<"lodash">, "difference">; +} + +declare module "lodash/differenceBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "differenceBy">; +} + +declare module "lodash/differenceWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "differenceWith">; +} + +declare module "lodash/drop" { + declare module.exports: $PropertyType<$Exports<"lodash">, "drop">; +} + +declare module "lodash/dropRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "dropRight">; +} + +declare module "lodash/dropRightWhile" { + declare module.exports: $PropertyType<$Exports<"lodash">, "dropRightWhile">; +} + +declare module "lodash/dropWhile" { + declare module.exports: $PropertyType<$Exports<"lodash">, "dropWhile">; +} + +declare module "lodash/fill" { + declare module.exports: $PropertyType<$Exports<"lodash">, "fill">; +} + +declare module "lodash/findIndex" { + declare module.exports: $PropertyType<$Exports<"lodash">, "findIndex">; +} + +declare module "lodash/findLastIndex" { + declare module.exports: $PropertyType<$Exports<"lodash">, "findLastIndex">; +} + +declare module "lodash/first" { + declare module.exports: $PropertyType<$Exports<"lodash">, "first">; +} + +declare module "lodash/flatten" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flatten">; +} + +declare module "lodash/flattenDeep" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flattenDeep">; +} + +declare module "lodash/flattenDepth" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flattenDepth">; +} + +declare module "lodash/fromPairs" { + declare module.exports: $PropertyType<$Exports<"lodash">, "fromPairs">; +} + +declare module "lodash/head" { + declare module.exports: $PropertyType<$Exports<"lodash">, "head">; +} + +declare module "lodash/indexOf" { + declare module.exports: $PropertyType<$Exports<"lodash">, "indexOf">; +} + +declare module "lodash/initial" { + declare module.exports: $PropertyType<$Exports<"lodash">, "initial">; +} + +declare module "lodash/intersection" { + declare module.exports: $PropertyType<$Exports<"lodash">, "intersection">; +} + +declare module "lodash/intersectionBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "intersectionBy">; +} + +declare module "lodash/intersectionWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "intersectionWith">; +} + +declare module "lodash/join" { + declare module.exports: $PropertyType<$Exports<"lodash">, "join">; +} + +declare module "lodash/last" { + declare module.exports: $PropertyType<$Exports<"lodash">, "last">; +} + +declare module "lodash/lastIndexOf" { + declare module.exports: $PropertyType<$Exports<"lodash">, "lastIndexOf">; +} + +declare module "lodash/nth" { + declare module.exports: $PropertyType<$Exports<"lodash">, "nth">; +} + +declare module "lodash/pull" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pull">; +} + +declare module "lodash/pullAll" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pullAll">; +} + +declare module "lodash/pullAllBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pullAllBy">; +} + +declare module "lodash/pullAllWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pullAllWith">; +} + +declare module "lodash/pullAt" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pullAt">; +} + +declare module "lodash/remove" { + declare module.exports: $PropertyType<$Exports<"lodash">, "remove">; +} + +declare module "lodash/reverse" { + declare module.exports: $PropertyType<$Exports<"lodash">, "reverse">; +} + +declare module "lodash/slice" { + declare module.exports: $PropertyType<$Exports<"lodash">, "slice">; +} + +declare module "lodash/sortedIndex" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sortedIndex">; +} + +declare module "lodash/sortedIndexBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sortedIndexBy">; +} + +declare module "lodash/sortedIndexOf" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sortedIndexOf">; +} + +declare module "lodash/sortedLastIndex" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sortedLastIndex">; +} + +declare module "lodash/sortedLastIndexBy" { + declare module.exports: $PropertyType< + $Exports<"lodash">, + "sortedLastIndexBy" + >; +} + +declare module "lodash/sortedLastIndexOf" { + declare module.exports: $PropertyType< + $Exports<"lodash">, + "sortedLastIndexOf" + >; +} + +declare module "lodash/sortedUniq" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sortedUniq">; +} + +declare module "lodash/sortedUniqBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sortedUniqBy">; +} + +declare module "lodash/tail" { + declare module.exports: $PropertyType<$Exports<"lodash">, "tail">; +} + +declare module "lodash/take" { + declare module.exports: $PropertyType<$Exports<"lodash">, "take">; +} + +declare module "lodash/takeRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "takeRight">; +} + +declare module "lodash/takeRightWhile" { + declare module.exports: $PropertyType<$Exports<"lodash">, "takeRightWhile">; +} + +declare module "lodash/takeWhile" { + declare module.exports: $PropertyType<$Exports<"lodash">, "takeWhile">; +} + +declare module "lodash/union" { + declare module.exports: $PropertyType<$Exports<"lodash">, "union">; +} + +declare module "lodash/unionBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "unionBy">; +} + +declare module "lodash/unionWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "unionWith">; +} + +declare module "lodash/uniq" { + declare module.exports: $PropertyType<$Exports<"lodash">, "uniq">; +} + +declare module "lodash/uniqBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "uniqBy">; +} + +declare module "lodash/uniqWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "uniqWith">; +} + +declare module "lodash/unzip" { + declare module.exports: $PropertyType<$Exports<"lodash">, "unzip">; +} + +declare module "lodash/unzipWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "unzipWith">; +} + +declare module "lodash/without" { + declare module.exports: $PropertyType<$Exports<"lodash">, "without">; +} + +declare module "lodash/xor" { + declare module.exports: $PropertyType<$Exports<"lodash">, "xor">; +} + +declare module "lodash/xorBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "xorBy">; +} + +declare module "lodash/xorWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "xorWith">; +} + +declare module "lodash/zip" { + declare module.exports: $PropertyType<$Exports<"lodash">, "zip">; +} + +declare module "lodash/zipObject" { + declare module.exports: $PropertyType<$Exports<"lodash">, "zipObject">; +} + +declare module "lodash/zipObjectDeep" { + declare module.exports: $PropertyType<$Exports<"lodash">, "zipObjectDeep">; +} + +declare module "lodash/zipWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "zipWith">; +} + +declare module "lodash/countBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "countBy">; +} + +declare module "lodash/each" { + declare module.exports: $PropertyType<$Exports<"lodash">, "each">; +} + +declare module "lodash/eachRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "eachRight">; +} + +declare module "lodash/every" { + declare module.exports: $PropertyType<$Exports<"lodash">, "every">; +} + +declare module "lodash/filter" { + declare module.exports: $PropertyType<$Exports<"lodash">, "filter">; +} + +declare module "lodash/find" { + declare module.exports: $PropertyType<$Exports<"lodash">, "find">; +} + +declare module "lodash/findLast" { + declare module.exports: $PropertyType<$Exports<"lodash">, "findLast">; +} + +declare module "lodash/flatMap" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flatMap">; +} + +declare module "lodash/flatMapDeep" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flatMapDeep">; +} + +declare module "lodash/flatMapDepth" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flatMapDepth">; +} + +declare module "lodash/forEach" { + declare module.exports: $PropertyType<$Exports<"lodash">, "forEach">; +} + +declare module "lodash/forEachRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "forEachRight">; +} + +declare module "lodash/groupBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "groupBy">; +} + +declare module "lodash/includes" { + declare module.exports: $PropertyType<$Exports<"lodash">, "includes">; +} + +declare module "lodash/invokeMap" { + declare module.exports: $PropertyType<$Exports<"lodash">, "invokeMap">; +} + +declare module "lodash/keyBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "keyBy">; +} + +declare module "lodash/map" { + declare module.exports: $PropertyType<$Exports<"lodash">, "map">; +} + +declare module "lodash/orderBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "orderBy">; +} + +declare module "lodash/partition" { + declare module.exports: $PropertyType<$Exports<"lodash">, "partition">; +} + +declare module "lodash/reduce" { + declare module.exports: $PropertyType<$Exports<"lodash">, "reduce">; +} + +declare module "lodash/reduceRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "reduceRight">; +} + +declare module "lodash/reject" { + declare module.exports: $PropertyType<$Exports<"lodash">, "reject">; +} + +declare module "lodash/sample" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sample">; +} + +declare module "lodash/sampleSize" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sampleSize">; +} + +declare module "lodash/shuffle" { + declare module.exports: $PropertyType<$Exports<"lodash">, "shuffle">; +} + +declare module "lodash/size" { + declare module.exports: $PropertyType<$Exports<"lodash">, "size">; +} + +declare module "lodash/some" { + declare module.exports: $PropertyType<$Exports<"lodash">, "some">; +} + +declare module "lodash/sortBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sortBy">; +} + +declare module "lodash/now" { + declare module.exports: $PropertyType<$Exports<"lodash">, "now">; +} + +declare module "lodash/after" { + declare module.exports: $PropertyType<$Exports<"lodash">, "after">; +} + +declare module "lodash/ary" { + declare module.exports: $PropertyType<$Exports<"lodash">, "ary">; +} + +declare module "lodash/before" { + declare module.exports: $PropertyType<$Exports<"lodash">, "before">; +} + +declare module "lodash/bind" { + declare module.exports: $PropertyType<$Exports<"lodash">, "bind">; +} + +declare module "lodash/bindKey" { + declare module.exports: $PropertyType<$Exports<"lodash">, "bindKey">; +} + +declare module "lodash/curry" { + declare module.exports: $PropertyType<$Exports<"lodash">, "curry">; +} + +declare module "lodash/curryRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "curryRight">; +} + +declare module "lodash/debounce" { + declare module.exports: $PropertyType<$Exports<"lodash">, "debounce">; +} + +declare module "lodash/defer" { + declare module.exports: $PropertyType<$Exports<"lodash">, "defer">; +} + +declare module "lodash/delay" { + declare module.exports: $PropertyType<$Exports<"lodash">, "delay">; +} + +declare module "lodash/flip" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flip">; +} + +declare module "lodash/memoize" { + declare module.exports: $PropertyType<$Exports<"lodash">, "memoize">; +} + +declare module "lodash/negate" { + declare module.exports: $PropertyType<$Exports<"lodash">, "negate">; +} + +declare module "lodash/once" { + declare module.exports: $PropertyType<$Exports<"lodash">, "once">; +} + +declare module "lodash/overArgs" { + declare module.exports: $PropertyType<$Exports<"lodash">, "overArgs">; +} + +declare module "lodash/partial" { + declare module.exports: $PropertyType<$Exports<"lodash">, "partial">; +} + +declare module "lodash/partialRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "partialRight">; +} + +declare module "lodash/rearg" { + declare module.exports: $PropertyType<$Exports<"lodash">, "rearg">; +} + +declare module "lodash/rest" { + declare module.exports: $PropertyType<$Exports<"lodash">, "rest">; +} + +declare module "lodash/spread" { + declare module.exports: $PropertyType<$Exports<"lodash">, "spread">; +} + +declare module "lodash/throttle" { + declare module.exports: $PropertyType<$Exports<"lodash">, "throttle">; +} + +declare module "lodash/unary" { + declare module.exports: $PropertyType<$Exports<"lodash">, "unary">; +} + +declare module "lodash/wrap" { + declare module.exports: $PropertyType<$Exports<"lodash">, "wrap">; +} + +declare module "lodash/castArray" { + declare module.exports: $PropertyType<$Exports<"lodash">, "castArray">; +} + +declare module "lodash/clone" { + declare module.exports: $PropertyType<$Exports<"lodash">, "clone">; +} + +declare module "lodash/cloneDeep" { + declare module.exports: $PropertyType<$Exports<"lodash">, "cloneDeep">; +} + +declare module "lodash/cloneDeepWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "cloneDeepWith">; +} + +declare module "lodash/cloneWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "cloneWith">; +} + +declare module "lodash/conformsTo" { + declare module.exports: $PropertyType<$Exports<"lodash">, "conformsTo">; +} + +declare module "lodash/eq" { + declare module.exports: $PropertyType<$Exports<"lodash">, "eq">; +} + +declare module "lodash/gt" { + declare module.exports: $PropertyType<$Exports<"lodash">, "gt">; +} + +declare module "lodash/gte" { + declare module.exports: $PropertyType<$Exports<"lodash">, "gte">; +} + +declare module "lodash/isArguments" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isArguments">; +} + +declare module "lodash/isArray" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isArray">; +} + +declare module "lodash/isArrayBuffer" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isArrayBuffer">; +} + +declare module "lodash/isArrayLike" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isArrayLike">; +} + +declare module "lodash/isArrayLikeObject" { + declare module.exports: $PropertyType< + $Exports<"lodash">, + "isArrayLikeObject" + >; +} + +declare module "lodash/isBoolean" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isBoolean">; +} + +declare module "lodash/isBuffer" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isBuffer">; +} + +declare module "lodash/isDate" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isDate">; +} + +declare module "lodash/isElement" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isElement">; +} + +declare module "lodash/isEmpty" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isEmpty">; +} + +declare module "lodash/isEqual" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isEqual">; +} + +declare module "lodash/isEqualWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isEqualWith">; +} + +declare module "lodash/isError" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isError">; +} + +declare module "lodash/isFinite" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isFinite">; +} + +declare module "lodash/isFunction" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isFunction">; +} + +declare module "lodash/isInteger" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isInteger">; +} + +declare module "lodash/isLength" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isLength">; +} + +declare module "lodash/isMap" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isMap">; +} + +declare module "lodash/isMatch" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isMatch">; +} + +declare module "lodash/isMatchWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isMatchWith">; +} + +declare module "lodash/isNaN" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isNaN">; +} + +declare module "lodash/isNative" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isNative">; +} + +declare module "lodash/isNil" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isNil">; +} + +declare module "lodash/isNull" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isNull">; +} + +declare module "lodash/isNumber" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isNumber">; +} + +declare module "lodash/isObject" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isObject">; +} + +declare module "lodash/isObjectLike" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isObjectLike">; +} + +declare module "lodash/isPlainObject" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isPlainObject">; +} + +declare module "lodash/isRegExp" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isRegExp">; +} + +declare module "lodash/isSafeInteger" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isSafeInteger">; +} + +declare module "lodash/isSet" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isSet">; +} + +declare module "lodash/isString" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isString">; +} + +declare module "lodash/isSymbol" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isSymbol">; +} + +declare module "lodash/isTypedArray" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isTypedArray">; +} + +declare module "lodash/isUndefined" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isUndefined">; +} + +declare module "lodash/isWeakMap" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isWeakMap">; +} + +declare module "lodash/isWeakSet" { + declare module.exports: $PropertyType<$Exports<"lodash">, "isWeakSet">; +} + +declare module "lodash/lt" { + declare module.exports: $PropertyType<$Exports<"lodash">, "lt">; +} + +declare module "lodash/lte" { + declare module.exports: $PropertyType<$Exports<"lodash">, "lte">; +} + +declare module "lodash/toArray" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toArray">; +} + +declare module "lodash/toFinite" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toFinite">; +} + +declare module "lodash/toInteger" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toInteger">; +} + +declare module "lodash/toLength" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toLength">; +} + +declare module "lodash/toNumber" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toNumber">; +} + +declare module "lodash/toPlainObject" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toPlainObject">; +} + +declare module "lodash/toSafeInteger" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toSafeInteger">; +} + +declare module "lodash/toString" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toString">; +} + +declare module "lodash/add" { + declare module.exports: $PropertyType<$Exports<"lodash">, "add">; +} + +declare module "lodash/ceil" { + declare module.exports: $PropertyType<$Exports<"lodash">, "ceil">; +} + +declare module "lodash/divide" { + declare module.exports: $PropertyType<$Exports<"lodash">, "divide">; +} + +declare module "lodash/floor" { + declare module.exports: $PropertyType<$Exports<"lodash">, "floor">; +} + +declare module "lodash/max" { + declare module.exports: $PropertyType<$Exports<"lodash">, "max">; +} + +declare module "lodash/maxBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "maxBy">; +} + +declare module "lodash/mean" { + declare module.exports: $PropertyType<$Exports<"lodash">, "mean">; +} + +declare module "lodash/meanBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "meanBy">; +} + +declare module "lodash/min" { + declare module.exports: $PropertyType<$Exports<"lodash">, "min">; +} + +declare module "lodash/minBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "minBy">; +} + +declare module "lodash/multiply" { + declare module.exports: $PropertyType<$Exports<"lodash">, "multiply">; +} + +declare module "lodash/round" { + declare module.exports: $PropertyType<$Exports<"lodash">, "round">; +} + +declare module "lodash/subtract" { + declare module.exports: $PropertyType<$Exports<"lodash">, "subtract">; +} + +declare module "lodash/sum" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sum">; +} + +declare module "lodash/sumBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "sumBy">; +} + +declare module "lodash/clamp" { + declare module.exports: $PropertyType<$Exports<"lodash">, "clamp">; +} + +declare module "lodash/inRange" { + declare module.exports: $PropertyType<$Exports<"lodash">, "inRange">; +} + +declare module "lodash/random" { + declare module.exports: $PropertyType<$Exports<"lodash">, "random">; +} + +declare module "lodash/assign" { + declare module.exports: $PropertyType<$Exports<"lodash">, "assign">; +} + +declare module "lodash/assignIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "assignIn">; +} + +declare module "lodash/assignInWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "assignInWith">; +} + +declare module "lodash/assignWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "assignWith">; +} + +declare module "lodash/at" { + declare module.exports: $PropertyType<$Exports<"lodash">, "at">; +} + +declare module "lodash/create" { + declare module.exports: $PropertyType<$Exports<"lodash">, "create">; +} + +declare module "lodash/defaults" { + declare module.exports: $PropertyType<$Exports<"lodash">, "defaults">; +} + +declare module "lodash/defaultsDeep" { + declare module.exports: $PropertyType<$Exports<"lodash">, "defaultsDeep">; +} + +declare module "lodash/entries" { + declare module.exports: $PropertyType<$Exports<"lodash">, "entries">; +} + +declare module "lodash/entriesIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "entriesIn">; +} + +declare module "lodash/extend" { + declare module.exports: $PropertyType<$Exports<"lodash">, "extend">; +} + +declare module "lodash/extendWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "extendWith">; +} + +declare module "lodash/findKey" { + declare module.exports: $PropertyType<$Exports<"lodash">, "findKey">; +} + +declare module "lodash/findLastKey" { + declare module.exports: $PropertyType<$Exports<"lodash">, "findLastKey">; +} + +declare module "lodash/forIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "forIn">; +} + +declare module "lodash/forInRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "forInRight">; +} + +declare module "lodash/forOwn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "forOwn">; +} + +declare module "lodash/forOwnRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "forOwnRight">; +} + +declare module "lodash/functions" { + declare module.exports: $PropertyType<$Exports<"lodash">, "functions">; +} + +declare module "lodash/functionsIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "functionsIn">; +} + +declare module "lodash/get" { + declare module.exports: $PropertyType<$Exports<"lodash">, "get">; +} + +declare module "lodash/has" { + declare module.exports: $PropertyType<$Exports<"lodash">, "has">; +} + +declare module "lodash/hasIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "hasIn">; +} + +declare module "lodash/invert" { + declare module.exports: $PropertyType<$Exports<"lodash">, "invert">; +} + +declare module "lodash/invertBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "invertBy">; +} + +declare module "lodash/invoke" { + declare module.exports: $PropertyType<$Exports<"lodash">, "invoke">; +} + +declare module "lodash/keys" { + declare module.exports: $PropertyType<$Exports<"lodash">, "keys">; +} + +declare module "lodash/keysIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "keysIn">; +} + +declare module "lodash/mapKeys" { + declare module.exports: $PropertyType<$Exports<"lodash">, "mapKeys">; +} + +declare module "lodash/mapValues" { + declare module.exports: $PropertyType<$Exports<"lodash">, "mapValues">; +} + +declare module "lodash/merge" { + declare module.exports: $PropertyType<$Exports<"lodash">, "merge">; +} + +declare module "lodash/mergeWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "mergeWith">; +} + +declare module "lodash/omit" { + declare module.exports: $PropertyType<$Exports<"lodash">, "omit">; +} + +declare module "lodash/omitBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "omitBy">; +} + +declare module "lodash/pick" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pick">; +} + +declare module "lodash/pickBy" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pickBy">; +} + +declare module "lodash/result" { + declare module.exports: $PropertyType<$Exports<"lodash">, "result">; +} + +declare module "lodash/set" { + declare module.exports: $PropertyType<$Exports<"lodash">, "set">; +} + +declare module "lodash/setWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "setWith">; +} + +declare module "lodash/toPairs" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toPairs">; +} + +declare module "lodash/toPairsIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toPairsIn">; +} + +declare module "lodash/transform" { + declare module.exports: $PropertyType<$Exports<"lodash">, "transform">; +} + +declare module "lodash/unset" { + declare module.exports: $PropertyType<$Exports<"lodash">, "unset">; +} + +declare module "lodash/update" { + declare module.exports: $PropertyType<$Exports<"lodash">, "update">; +} + +declare module "lodash/updateWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "updateWith">; +} + +declare module "lodash/values" { + declare module.exports: $PropertyType<$Exports<"lodash">, "values">; +} + +declare module "lodash/valuesIn" { + declare module.exports: $PropertyType<$Exports<"lodash">, "valuesIn">; +} + +declare module "lodash/chain" { + declare module.exports: $PropertyType<$Exports<"lodash">, "chain">; +} + +declare module "lodash/tap" { + declare module.exports: $PropertyType<$Exports<"lodash">, "tap">; +} + +declare module "lodash/thru" { + declare module.exports: $PropertyType<$Exports<"lodash">, "thru">; +} + +declare module "lodash/camelCase" { + declare module.exports: $PropertyType<$Exports<"lodash">, "camelCase">; +} + +declare module "lodash/capitalize" { + declare module.exports: $PropertyType<$Exports<"lodash">, "capitalize">; +} + +declare module "lodash/deburr" { + declare module.exports: $PropertyType<$Exports<"lodash">, "deburr">; +} + +declare module "lodash/endsWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "endsWith">; +} + +declare module "lodash/escape" { + declare module.exports: $PropertyType<$Exports<"lodash">, "escape">; +} + +declare module "lodash/escapeRegExp" { + declare module.exports: $PropertyType<$Exports<"lodash">, "escapeRegExp">; +} + +declare module "lodash/kebabCase" { + declare module.exports: $PropertyType<$Exports<"lodash">, "kebabCase">; +} + +declare module "lodash/lowerCase" { + declare module.exports: $PropertyType<$Exports<"lodash">, "lowerCase">; +} + +declare module "lodash/lowerFirst" { + declare module.exports: $PropertyType<$Exports<"lodash">, "lowerFirst">; +} + +declare module "lodash/pad" { + declare module.exports: $PropertyType<$Exports<"lodash">, "pad">; +} + +declare module "lodash/padEnd" { + declare module.exports: $PropertyType<$Exports<"lodash">, "padEnd">; +} + +declare module "lodash/padStart" { + declare module.exports: $PropertyType<$Exports<"lodash">, "padStart">; +} + +declare module "lodash/parseInt" { + declare module.exports: $PropertyType<$Exports<"lodash">, "parseInt">; +} + +declare module "lodash/repeat" { + declare module.exports: $PropertyType<$Exports<"lodash">, "repeat">; +} + +declare module "lodash/replace" { + declare module.exports: $PropertyType<$Exports<"lodash">, "replace">; +} + +declare module "lodash/snakeCase" { + declare module.exports: $PropertyType<$Exports<"lodash">, "snakeCase">; +} + +declare module "lodash/split" { + declare module.exports: $PropertyType<$Exports<"lodash">, "split">; +} + +declare module "lodash/startCase" { + declare module.exports: $PropertyType<$Exports<"lodash">, "startCase">; +} + +declare module "lodash/startsWith" { + declare module.exports: $PropertyType<$Exports<"lodash">, "startsWith">; +} + +declare module "lodash/template" { + declare module.exports: $PropertyType<$Exports<"lodash">, "template">; +} + +declare module "lodash/toLower" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toLower">; +} + +declare module "lodash/toUpper" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toUpper">; +} + +declare module "lodash/trim" { + declare module.exports: $PropertyType<$Exports<"lodash">, "trim">; +} + +declare module "lodash/trimEnd" { + declare module.exports: $PropertyType<$Exports<"lodash">, "trimEnd">; +} + +declare module "lodash/trimStart" { + declare module.exports: $PropertyType<$Exports<"lodash">, "trimStart">; +} + +declare module "lodash/truncate" { + declare module.exports: $PropertyType<$Exports<"lodash">, "truncate">; +} + +declare module "lodash/unescape" { + declare module.exports: $PropertyType<$Exports<"lodash">, "unescape">; +} + +declare module "lodash/upperCase" { + declare module.exports: $PropertyType<$Exports<"lodash">, "upperCase">; +} + +declare module "lodash/upperFirst" { + declare module.exports: $PropertyType<$Exports<"lodash">, "upperFirst">; +} + +declare module "lodash/words" { + declare module.exports: $PropertyType<$Exports<"lodash">, "words">; +} + +declare module "lodash/attempt" { + declare module.exports: $PropertyType<$Exports<"lodash">, "attempt">; +} + +declare module "lodash/bindAll" { + declare module.exports: $PropertyType<$Exports<"lodash">, "bindAll">; +} + +declare module "lodash/cond" { + declare module.exports: $PropertyType<$Exports<"lodash">, "cond">; +} + +declare module "lodash/conforms" { + declare module.exports: $PropertyType<$Exports<"lodash">, "conforms">; +} + +declare module "lodash/constant" { + declare module.exports: $PropertyType<$Exports<"lodash">, "constant">; +} + +declare module "lodash/defaultTo" { + declare module.exports: $PropertyType<$Exports<"lodash">, "defaultTo">; +} + +declare module "lodash/flow" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flow">; +} + +declare module "lodash/flowRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "flowRight">; +} + +declare module "lodash/identity" { + declare module.exports: $PropertyType<$Exports<"lodash">, "identity">; +} + +declare module "lodash/iteratee" { + declare module.exports: $PropertyType<$Exports<"lodash">, "iteratee">; +} + +declare module "lodash/matches" { + declare module.exports: $PropertyType<$Exports<"lodash">, "matches">; +} + +declare module "lodash/matchesProperty" { + declare module.exports: $PropertyType<$Exports<"lodash">, "matchesProperty">; +} + +declare module "lodash/method" { + declare module.exports: $PropertyType<$Exports<"lodash">, "method">; +} + +declare module "lodash/methodOf" { + declare module.exports: $PropertyType<$Exports<"lodash">, "methodOf">; +} + +declare module "lodash/mixin" { + declare module.exports: $PropertyType<$Exports<"lodash">, "mixin">; +} + +declare module "lodash/noConflict" { + declare module.exports: $PropertyType<$Exports<"lodash">, "noConflict">; +} + +declare module "lodash/noop" { + declare module.exports: $PropertyType<$Exports<"lodash">, "noop">; +} + +declare module "lodash/nthArg" { + declare module.exports: $PropertyType<$Exports<"lodash">, "nthArg">; +} + +declare module "lodash/over" { + declare module.exports: $PropertyType<$Exports<"lodash">, "over">; +} + +declare module "lodash/overEvery" { + declare module.exports: $PropertyType<$Exports<"lodash">, "overEvery">; +} + +declare module "lodash/overSome" { + declare module.exports: $PropertyType<$Exports<"lodash">, "overSome">; +} + +declare module "lodash/property" { + declare module.exports: $PropertyType<$Exports<"lodash">, "property">; +} + +declare module "lodash/propertyOf" { + declare module.exports: $PropertyType<$Exports<"lodash">, "propertyOf">; +} + +declare module "lodash/range" { + declare module.exports: $PropertyType<$Exports<"lodash">, "range">; +} + +declare module "lodash/rangeRight" { + declare module.exports: $PropertyType<$Exports<"lodash">, "rangeRight">; +} + +declare module "lodash/runInContext" { + declare module.exports: $PropertyType<$Exports<"lodash">, "runInContext">; +} + +declare module "lodash/stubArray" { + declare module.exports: $PropertyType<$Exports<"lodash">, "stubArray">; +} + +declare module "lodash/stubFalse" { + declare module.exports: $PropertyType<$Exports<"lodash">, "stubFalse">; +} + +declare module "lodash/stubObject" { + declare module.exports: $PropertyType<$Exports<"lodash">, "stubObject">; +} + +declare module "lodash/stubString" { + declare module.exports: $PropertyType<$Exports<"lodash">, "stubString">; +} + +declare module "lodash/stubTrue" { + declare module.exports: $PropertyType<$Exports<"lodash">, "stubTrue">; +} + +declare module "lodash/times" { + declare module.exports: $PropertyType<$Exports<"lodash">, "times">; +} + +declare module "lodash/toPath" { + declare module.exports: $PropertyType<$Exports<"lodash">, "toPath">; +} + +declare module "lodash/uniqueId" { + declare module.exports: $PropertyType<$Exports<"lodash">, "uniqueId">; +} + +declare module "lodash/fp/chunk" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "chunk">; +} + +declare module "lodash/fp/compact" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "compact">; +} + +declare module "lodash/fp/concat" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "concat">; +} + +declare module "lodash/fp/difference" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "difference">; +} + +declare module "lodash/fp/differenceBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "differenceBy">; +} + +declare module "lodash/fp/differenceWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "differenceWith">; +} + +declare module "lodash/fp/drop" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "drop">; +} + +declare module "lodash/fp/dropLast" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dropLast">; +} + +declare module "lodash/fp/dropRight" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dropRight">; +} + +declare module "lodash/fp/dropRightWhile" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dropRightWhile">; +} + +declare module "lodash/fp/dropWhile" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dropWhile">; +} + +declare module "lodash/fp/dropLastWhile" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dropLastWhile">; +} + +declare module "lodash/fp/fill" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "fill">; +} + +declare module "lodash/fp/findIndex" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findIndex">; +} + +declare module "lodash/fp/findIndexFrom" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findIndexFrom">; +} + +declare module "lodash/fp/findLastIndex" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findLastIndex">; +} + +declare module "lodash/fp/findLastIndexFrom" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findLastIndexFrom">; +} + +declare module "lodash/fp/first" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "first">; +} + +declare module "lodash/fp/flatten" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flatten">; +} + +declare module "lodash/fp/unnest" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unnest">; +} + +declare module "lodash/fp/flattenDeep" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flattenDeep">; +} + +declare module "lodash/fp/flattenDepth" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flattenDepth">; +} + +declare module "lodash/fp/fromPairs" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "fromPairs">; +} + +declare module "lodash/fp/head" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "head">; +} + +declare module "lodash/fp/indexOf" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "indexOf">; +} + +declare module "lodash/fp/indexOfFrom" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "indexOfFrom">; +} + +declare module "lodash/fp/initial" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "initial">; +} + +declare module "lodash/fp/init" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "init">; +} + +declare module "lodash/fp/intersection" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "intersection">; +} + +declare module "lodash/fp/intersectionBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "intersectionBy">; +} + +declare module "lodash/fp/intersectionWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "intersectionWith">; +} + +declare module "lodash/fp/join" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "join">; +} + +declare module "lodash/fp/last" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "last">; +} + +declare module "lodash/fp/lastIndexOf" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lastIndexOf">; +} + +declare module "lodash/fp/lastIndexOfFrom" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lastIndexOfFrom">; +} + +declare module "lodash/fp/nth" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "nth">; +} + +declare module "lodash/fp/pull" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pull">; +} + +declare module "lodash/fp/pullAll" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pullAll">; +} + +declare module "lodash/fp/pullAllBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pullAllBy">; +} + +declare module "lodash/fp/pullAllWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pullAllWith">; +} + +declare module "lodash/fp/pullAt" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pullAt">; +} + +declare module "lodash/fp/remove" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "remove">; +} + +declare module "lodash/fp/reverse" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "reverse">; +} + +declare module "lodash/fp/slice" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "slice">; +} + +declare module "lodash/fp/sortedIndex" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedIndex">; +} + +declare module "lodash/fp/sortedIndexBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedIndexBy">; +} + +declare module "lodash/fp/sortedIndexOf" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedIndexOf">; +} + +declare module "lodash/fp/sortedLastIndex" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedLastIndex">; +} + +declare module "lodash/fp/sortedLastIndexBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedLastIndexBy">; +} + +declare module "lodash/fp/sortedLastIndexOf" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedLastIndexOf">; +} + +declare module "lodash/fp/sortedUniq" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedUniq">; +} + +declare module "lodash/fp/sortedUniqBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortedUniqBy">; +} + +declare module "lodash/fp/tail" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "tail">; +} + +declare module "lodash/fp/take" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "take">; +} + +declare module "lodash/fp/takeRight" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "takeRight">; +} + +declare module "lodash/fp/takeLast" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "takeLast">; +} + +declare module "lodash/fp/takeRightWhile" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "takeRightWhile">; +} + +declare module "lodash/fp/takeLastWhile" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "takeLastWhile">; +} + +declare module "lodash/fp/takeWhile" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "takeWhile">; +} + +declare module "lodash/fp/union" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "union">; +} + +declare module "lodash/fp/unionBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unionBy">; +} + +declare module "lodash/fp/unionWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unionWith">; +} + +declare module "lodash/fp/uniq" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "uniq">; +} + +declare module "lodash/fp/uniqBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "uniqBy">; +} + +declare module "lodash/fp/uniqWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "uniqWith">; +} + +declare module "lodash/fp/unzip" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unzip">; +} + +declare module "lodash/fp/unzipWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unzipWith">; +} + +declare module "lodash/fp/without" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "without">; +} + +declare module "lodash/fp/xor" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "xor">; +} + +declare module "lodash/fp/symmetricDifference" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "symmetricDifference">; +} + +declare module "lodash/fp/xorBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "xorBy">; +} + +declare module "lodash/fp/symmetricDifferenceBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "symmetricDifferenceBy">; +} + +declare module "lodash/fp/xorWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "xorWith">; +} + +declare module "lodash/fp/symmetricDifferenceWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "symmetricDifferenceWith">; +} + +declare module "lodash/fp/zip" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zip">; +} + +declare module "lodash/fp/zipAll" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zipAll">; +} + +declare module "lodash/fp/zipObject" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zipObject">; +} + +declare module "lodash/fp/zipObj" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zipObj">; +} + +declare module "lodash/fp/zipObjectDeep" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zipObjectDeep">; +} + +declare module "lodash/fp/zipWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "zipWith">; +} + +declare module "lodash/fp/countBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "countBy">; +} + +declare module "lodash/fp/each" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "each">; +} + +declare module "lodash/fp/eachRight" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "eachRight">; +} + +declare module "lodash/fp/every" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "every">; +} + +declare module "lodash/fp/all" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "all">; +} + +declare module "lodash/fp/filter" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "filter">; +} + +declare module "lodash/fp/find" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "find">; +} + +declare module "lodash/fp/findFrom" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findFrom">; +} + +declare module "lodash/fp/findLast" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findLast">; +} + +declare module "lodash/fp/findLastFrom" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findLastFrom">; +} + +declare module "lodash/fp/flatMap" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flatMap">; +} + +declare module "lodash/fp/flatMapDeep" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flatMapDeep">; +} + +declare module "lodash/fp/flatMapDepth" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flatMapDepth">; +} + +declare module "lodash/fp/forEach" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forEach">; +} + +declare module "lodash/fp/forEachRight" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forEachRight">; +} + +declare module "lodash/fp/groupBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "groupBy">; +} + +declare module "lodash/fp/includes" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "includes">; +} + +declare module "lodash/fp/contains" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "contains">; +} + +declare module "lodash/fp/includesFrom" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "includesFrom">; +} + +declare module "lodash/fp/invokeMap" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invokeMap">; +} + +declare module "lodash/fp/invokeArgsMap" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invokeArgsMap">; +} + +declare module "lodash/fp/keyBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "keyBy">; +} + +declare module "lodash/fp/indexBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "indexBy">; +} + +declare module "lodash/fp/map" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "map">; +} + +declare module "lodash/fp/pluck" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pluck">; +} + +declare module "lodash/fp/orderBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "orderBy">; +} + +declare module "lodash/fp/partition" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "partition">; +} + +declare module "lodash/fp/reduce" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "reduce">; +} + +declare module "lodash/fp/reduceRight" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "reduceRight">; +} + +declare module "lodash/fp/reject" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "reject">; +} + +declare module "lodash/fp/sample" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sample">; +} + +declare module "lodash/fp/sampleSize" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sampleSize">; +} + +declare module "lodash/fp/shuffle" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "shuffle">; +} + +declare module "lodash/fp/size" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "size">; +} + +declare module "lodash/fp/some" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "some">; +} + +declare module "lodash/fp/any" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "any">; +} + +declare module "lodash/fp/sortBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sortBy">; +} + +declare module "lodash/fp/now" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "now">; +} + +declare module "lodash/fp/after" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "after">; +} + +declare module "lodash/fp/ary" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "ary">; +} + +declare module "lodash/fp/nAry" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "nAry">; +} + +declare module "lodash/fp/before" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "before">; +} + +declare module "lodash/fp/bind" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "bind">; +} + +declare module "lodash/fp/bindKey" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "bindKey">; +} + +declare module "lodash/fp/curry" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "curry">; +} + +declare module "lodash/fp/curryN" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "curryN">; +} + +declare module "lodash/fp/curryRight" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "curryRight">; +} + +declare module "lodash/fp/curryRightN" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "curryRightN">; +} + +declare module "lodash/fp/debounce" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "debounce">; +} + +declare module "lodash/fp/defer" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defer">; +} + +declare module "lodash/fp/delay" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "delay">; +} + +declare module "lodash/fp/flip" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flip">; +} + +declare module "lodash/fp/memoize" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "memoize">; +} + +declare module "lodash/fp/negate" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "negate">; +} + +declare module "lodash/fp/complement" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "complement">; +} + +declare module "lodash/fp/once" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "once">; +} + +declare module "lodash/fp/overArgs" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "overArgs">; +} + +declare module "lodash/fp/useWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "useWith">; +} + +declare module "lodash/fp/partial" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "partial">; +} + +declare module "lodash/fp/partialRight" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "partialRight">; +} + +declare module "lodash/fp/rearg" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "rearg">; +} + +declare module "lodash/fp/rest" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "rest">; +} + +declare module "lodash/fp/unapply" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unapply">; +} + +declare module "lodash/fp/restFrom" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "restFrom">; +} + +declare module "lodash/fp/spread" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "spread">; +} + +declare module "lodash/fp/apply" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "apply">; +} + +declare module "lodash/fp/spreadFrom" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "spreadFrom">; +} + +declare module "lodash/fp/throttle" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "throttle">; +} + +declare module "lodash/fp/unary" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unary">; +} + +declare module "lodash/fp/wrap" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "wrap">; +} + +declare module "lodash/fp/castArray" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "castArray">; +} + +declare module "lodash/fp/clone" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "clone">; +} + +declare module "lodash/fp/cloneDeep" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "cloneDeep">; +} + +declare module "lodash/fp/cloneDeepWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "cloneDeepWith">; +} + +declare module "lodash/fp/cloneWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "cloneWith">; +} + +declare module "lodash/fp/conformsTo" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "conformsTo">; +} + +declare module "lodash/fp/where" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "where">; +} + +declare module "lodash/fp/conforms" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "conforms">; +} + +declare module "lodash/fp/eq" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "eq">; +} + +declare module "lodash/fp/identical" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "identical">; +} + +declare module "lodash/fp/gt" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "gt">; +} + +declare module "lodash/fp/gte" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "gte">; +} + +declare module "lodash/fp/isArguments" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isArguments">; +} + +declare module "lodash/fp/isArray" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isArray">; +} + +declare module "lodash/fp/isArrayBuffer" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isArrayBuffer">; +} + +declare module "lodash/fp/isArrayLike" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isArrayLike">; +} + +declare module "lodash/fp/isArrayLikeObject" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isArrayLikeObject">; +} + +declare module "lodash/fp/isBoolean" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isBoolean">; +} + +declare module "lodash/fp/isBuffer" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isBuffer">; +} + +declare module "lodash/fp/isDate" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isDate">; +} + +declare module "lodash/fp/isElement" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isElement">; +} + +declare module "lodash/fp/isEmpty" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isEmpty">; +} + +declare module "lodash/fp/isEqual" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isEqual">; +} + +declare module "lodash/fp/equals" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "equals">; +} + +declare module "lodash/fp/isEqualWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isEqualWith">; +} + +declare module "lodash/fp/isError" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isError">; +} + +declare module "lodash/fp/isFinite" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isFinite">; +} + +declare module "lodash/fp/isFunction" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isFunction">; +} + +declare module "lodash/fp/isInteger" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isInteger">; +} + +declare module "lodash/fp/isLength" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isLength">; +} + +declare module "lodash/fp/isMap" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isMap">; +} + +declare module "lodash/fp/isMatch" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isMatch">; +} + +declare module "lodash/fp/whereEq" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "whereEq">; +} + +declare module "lodash/fp/isMatchWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isMatchWith">; +} + +declare module "lodash/fp/isNaN" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isNaN">; +} + +declare module "lodash/fp/isNative" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isNative">; +} + +declare module "lodash/fp/isNil" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isNil">; +} + +declare module "lodash/fp/isNull" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isNull">; +} + +declare module "lodash/fp/isNumber" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isNumber">; +} + +declare module "lodash/fp/isObject" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isObject">; +} + +declare module "lodash/fp/isObjectLike" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isObjectLike">; +} + +declare module "lodash/fp/isPlainObject" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isPlainObject">; +} + +declare module "lodash/fp/isRegExp" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isRegExp">; +} + +declare module "lodash/fp/isSafeInteger" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isSafeInteger">; +} + +declare module "lodash/fp/isSet" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isSet">; +} + +declare module "lodash/fp/isString" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isString">; +} + +declare module "lodash/fp/isSymbol" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isSymbol">; +} + +declare module "lodash/fp/isTypedArray" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isTypedArray">; +} + +declare module "lodash/fp/isUndefined" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isUndefined">; +} + +declare module "lodash/fp/isWeakMap" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isWeakMap">; +} + +declare module "lodash/fp/isWeakSet" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "isWeakSet">; +} + +declare module "lodash/fp/lt" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lt">; +} + +declare module "lodash/fp/lte" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lte">; +} + +declare module "lodash/fp/toArray" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toArray">; +} + +declare module "lodash/fp/toFinite" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toFinite">; +} + +declare module "lodash/fp/toInteger" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toInteger">; +} + +declare module "lodash/fp/toLength" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toLength">; +} + +declare module "lodash/fp/toNumber" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toNumber">; +} + +declare module "lodash/fp/toPlainObject" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toPlainObject">; +} + +declare module "lodash/fp/toSafeInteger" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toSafeInteger">; +} + +declare module "lodash/fp/toString" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toString">; +} + +declare module "lodash/fp/add" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "add">; +} + +declare module "lodash/fp/ceil" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "ceil">; +} + +declare module "lodash/fp/divide" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "divide">; +} + +declare module "lodash/fp/floor" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "floor">; +} + +declare module "lodash/fp/max" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "max">; +} + +declare module "lodash/fp/maxBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "maxBy">; +} + +declare module "lodash/fp/mean" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mean">; +} + +declare module "lodash/fp/meanBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "meanBy">; +} + +declare module "lodash/fp/min" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "min">; +} + +declare module "lodash/fp/minBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "minBy">; +} + +declare module "lodash/fp/multiply" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "multiply">; +} + +declare module "lodash/fp/round" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "round">; +} + +declare module "lodash/fp/subtract" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "subtract">; +} + +declare module "lodash/fp/sum" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sum">; +} + +declare module "lodash/fp/sumBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "sumBy">; +} + +declare module "lodash/fp/clamp" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "clamp">; +} + +declare module "lodash/fp/inRange" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "inRange">; +} + +declare module "lodash/fp/random" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "random">; +} + +declare module "lodash/fp/assign" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assign">; +} + +declare module "lodash/fp/assignAll" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignAll">; +} + +declare module "lodash/fp/assignInAll" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignInAll">; +} + +declare module "lodash/fp/extendAll" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "extendAll">; +} + +declare module "lodash/fp/assignIn" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignIn">; +} + +declare module "lodash/fp/assignInWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignInWith">; +} + +declare module "lodash/fp/assignWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignWith">; +} + +declare module "lodash/fp/assignInAllWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignInAllWith">; +} + +declare module "lodash/fp/extendAllWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "extendAllWith">; +} + +declare module "lodash/fp/assignAllWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assignAllWith">; +} + +declare module "lodash/fp/at" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "at">; +} + +declare module "lodash/fp/props" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "props">; +} + +declare module "lodash/fp/paths" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "paths">; +} + +declare module "lodash/fp/create" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "create">; +} + +declare module "lodash/fp/defaults" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defaults">; +} + +declare module "lodash/fp/defaultsAll" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defaultsAll">; +} + +declare module "lodash/fp/defaultsDeep" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defaultsDeep">; +} + +declare module "lodash/fp/defaultsDeepAll" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defaultsDeepAll">; +} + +declare module "lodash/fp/entries" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "entries">; +} + +declare module "lodash/fp/entriesIn" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "entriesIn">; +} + +declare module "lodash/fp/extend" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "extend">; +} + +declare module "lodash/fp/extendWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "extendWith">; +} + +declare module "lodash/fp/findKey" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findKey">; +} + +declare module "lodash/fp/findLastKey" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "findLastKey">; +} + +declare module "lodash/fp/forIn" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forIn">; +} + +declare module "lodash/fp/forInRight" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forInRight">; +} + +declare module "lodash/fp/forOwn" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forOwn">; +} + +declare module "lodash/fp/forOwnRight" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "forOwnRight">; +} + +declare module "lodash/fp/functions" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "functions">; +} + +declare module "lodash/fp/functionsIn" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "functionsIn">; +} + +declare module "lodash/fp/get" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "get">; +} + +declare module "lodash/fp/prop" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "prop">; +} + +declare module "lodash/fp/path" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "path">; +} + +declare module "lodash/fp/getOr" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "getOr">; +} + +declare module "lodash/fp/propOr" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "propOr">; +} + +declare module "lodash/fp/pathOr" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pathOr">; +} + +declare module "lodash/fp/has" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "has">; +} + +declare module "lodash/fp/hasIn" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "hasIn">; +} + +declare module "lodash/fp/invert" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invert">; +} + +declare module "lodash/fp/invertObj" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invertObj">; +} + +declare module "lodash/fp/invertBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invertBy">; +} + +declare module "lodash/fp/invoke" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invoke">; +} + +declare module "lodash/fp/invokeArgs" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "invokeArgs">; +} + +declare module "lodash/fp/keys" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "keys">; +} + +declare module "lodash/fp/keysIn" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "keysIn">; +} + +declare module "lodash/fp/mapKeys" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mapKeys">; +} + +declare module "lodash/fp/mapValues" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mapValues">; +} + +declare module "lodash/fp/merge" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "merge">; +} + +declare module "lodash/fp/mergeAll" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mergeAll">; +} + +declare module "lodash/fp/mergeWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mergeWith">; +} + +declare module "lodash/fp/mergeAllWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mergeAllWith">; +} + +declare module "lodash/fp/omit" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "omit">; +} + +declare module "lodash/fp/omitAll" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "omitAll">; +} + +declare module "lodash/fp/omitBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "omitBy">; +} + +declare module "lodash/fp/pick" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pick">; +} + +declare module "lodash/fp/pickAll" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pickAll">; +} + +declare module "lodash/fp/pickBy" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pickBy">; +} + +declare module "lodash/fp/result" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "result">; +} + +declare module "lodash/fp/set" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "set">; +} + +declare module "lodash/fp/assoc" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assoc">; +} + +declare module "lodash/fp/assocPath" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "assocPath">; +} + +declare module "lodash/fp/setWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "setWith">; +} + +declare module "lodash/fp/toPairs" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toPairs">; +} + +declare module "lodash/fp/toPairsIn" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toPairsIn">; +} + +declare module "lodash/fp/transform" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "transform">; +} + +declare module "lodash/fp/unset" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unset">; +} + +declare module "lodash/fp/dissoc" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dissoc">; +} + +declare module "lodash/fp/dissocPath" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "dissocPath">; +} + +declare module "lodash/fp/update" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "update">; +} + +declare module "lodash/fp/updateWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "updateWith">; +} + +declare module "lodash/fp/values" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "values">; +} + +declare module "lodash/fp/valuesIn" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "valuesIn">; +} + +declare module "lodash/fp/tap" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "tap">; +} + +declare module "lodash/fp/thru" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "thru">; +} + +declare module "lodash/fp/camelCase" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "camelCase">; +} + +declare module "lodash/fp/capitalize" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "capitalize">; +} + +declare module "lodash/fp/deburr" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "deburr">; +} + +declare module "lodash/fp/endsWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "endsWith">; +} + +declare module "lodash/fp/escape" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "escape">; +} + +declare module "lodash/fp/escapeRegExp" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "escapeRegExp">; +} + +declare module "lodash/fp/kebabCase" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "kebabCase">; +} + +declare module "lodash/fp/lowerCase" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lowerCase">; +} + +declare module "lodash/fp/lowerFirst" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "lowerFirst">; +} + +declare module "lodash/fp/pad" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pad">; +} + +declare module "lodash/fp/padChars" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "padChars">; +} + +declare module "lodash/fp/padEnd" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "padEnd">; +} + +declare module "lodash/fp/padCharsEnd" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "padCharsEnd">; +} + +declare module "lodash/fp/padStart" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "padStart">; +} + +declare module "lodash/fp/padCharsStart" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "padCharsStart">; +} + +declare module "lodash/fp/parseInt" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "parseInt">; +} + +declare module "lodash/fp/repeat" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "repeat">; +} + +declare module "lodash/fp/replace" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "replace">; +} + +declare module "lodash/fp/snakeCase" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "snakeCase">; +} + +declare module "lodash/fp/split" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "split">; +} + +declare module "lodash/fp/startCase" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "startCase">; +} + +declare module "lodash/fp/startsWith" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "startsWith">; +} + +declare module "lodash/fp/template" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "template">; +} + +declare module "lodash/fp/toLower" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toLower">; +} + +declare module "lodash/fp/toUpper" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toUpper">; +} + +declare module "lodash/fp/trim" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trim">; +} + +declare module "lodash/fp/trimChars" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trimChars">; +} + +declare module "lodash/fp/trimEnd" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trimEnd">; +} + +declare module "lodash/fp/trimCharsEnd" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trimCharsEnd">; +} + +declare module "lodash/fp/trimStart" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trimStart">; +} + +declare module "lodash/fp/trimCharsStart" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "trimCharsStart">; +} + +declare module "lodash/fp/truncate" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "truncate">; +} + +declare module "lodash/fp/unescape" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "unescape">; +} + +declare module "lodash/fp/upperCase" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "upperCase">; +} + +declare module "lodash/fp/upperFirst" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "upperFirst">; +} + +declare module "lodash/fp/words" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "words">; +} + +declare module "lodash/fp/attempt" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "attempt">; +} + +declare module "lodash/fp/bindAll" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "bindAll">; +} + +declare module "lodash/fp/cond" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "cond">; +} + +declare module "lodash/fp/constant" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "constant">; +} + +declare module "lodash/fp/always" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "always">; +} + +declare module "lodash/fp/defaultTo" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "defaultTo">; +} + +declare module "lodash/fp/flow" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flow">; +} + +declare module "lodash/fp/pipe" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pipe">; +} + +declare module "lodash/fp/flowRight" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "flowRight">; +} + +declare module "lodash/fp/compose" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "compose">; +} + +declare module "lodash/fp/identity" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "identity">; +} + +declare module "lodash/fp/iteratee" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "iteratee">; +} + +declare module "lodash/fp/matches" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "matches">; +} + +declare module "lodash/fp/matchesProperty" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "matchesProperty">; +} + +declare module "lodash/fp/propEq" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "propEq">; +} + +declare module "lodash/fp/pathEq" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "pathEq">; +} + +declare module "lodash/fp/method" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "method">; +} + +declare module "lodash/fp/methodOf" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "methodOf">; +} + +declare module "lodash/fp/mixin" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "mixin">; +} + +declare module "lodash/fp/noConflict" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "noConflict">; +} + +declare module "lodash/fp/noop" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "noop">; +} + +declare module "lodash/fp/nthArg" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "nthArg">; +} + +declare module "lodash/fp/over" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "over">; +} + +declare module "lodash/fp/juxt" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "juxt">; +} + +declare module "lodash/fp/overEvery" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "overEvery">; +} + +declare module "lodash/fp/allPass" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "allPass">; +} + +declare module "lodash/fp/overSome" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "overSome">; +} + +declare module "lodash/fp/anyPass" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "anyPass">; +} + +declare module "lodash/fp/property" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "property">; +} + +declare module "lodash/fp/propertyOf" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "propertyOf">; +} + +declare module "lodash/fp/range" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "range">; +} + +declare module "lodash/fp/rangeStep" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "rangeStep">; +} + +declare module "lodash/fp/rangeRight" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "rangeRight">; +} + +declare module "lodash/fp/rangeStepRight" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "rangeStepRight">; +} + +declare module "lodash/fp/runInContext" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "runInContext">; +} + +declare module "lodash/fp/stubArray" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "stubArray">; +} + +declare module "lodash/fp/stubFalse" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "stubFalse">; +} + +declare module "lodash/fp/F" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "F">; +} + +declare module "lodash/fp/stubObject" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "stubObject">; +} + +declare module "lodash/fp/stubString" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "stubString">; +} + +declare module "lodash/fp/stubTrue" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "stubTrue">; +} + +declare module "lodash/fp/T" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "T">; +} + +declare module "lodash/fp/times" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "times">; +} + +declare module "lodash/fp/toPath" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "toPath">; +} + +declare module "lodash/fp/uniqueId" { + declare module.exports: $PropertyType<$Exports<"lodash/fp">, "uniqueId">; +} diff --git a/jest.config.js b/jest.config.js index 38d2305ae..08ae8693d 100644 --- a/jest.config.js +++ b/jest.config.js @@ -37,6 +37,7 @@ module.exports = { coveragePathIgnorePatterns: [ 'node_modules', 'fixtures', + '/src/api/debug', '/test', ], moduleNameMapper: { diff --git a/src/api/middleware.js b/src/api/middleware.js index 4f43b873e..137a28ebc 100644 --- a/src/api/middleware.js +++ b/src/api/middleware.js @@ -1,6 +1,7 @@ // @flow import _ from 'lodash'; + import { validateName as utilValidateName, validatePackage as utilValidatePackage, @@ -115,7 +116,7 @@ export function allow(auth: IAuth) { } else { // last plugin (that's our built-in one) returns either // cb(err) or cb(null, true), so this should never happen - throw ErrorCode.getInternalError('bug in the auth plugin system'); + throw ErrorCode.getInternalError(API_ERROR.PLUGIN_ERROR); } }); }; @@ -123,15 +124,15 @@ export function allow(auth: IAuth) { } export function final(body: any, req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) { - if (res.statusCode === HTTP_STATUS.UNAUTHORIZED && !res.getHeader('WWW-Authenticate')) { + if (res.statusCode === HTTP_STATUS.UNAUTHORIZED && !res.getHeader(HEADERS.WWW_AUTH)) { // they say it's required for 401, so... - res.header('WWW-Authenticate', `${TOKEN_BASIC}, ${TOKEN_BEARER}`); + res.header(HEADERS.WWW_AUTH, `${TOKEN_BASIC}, ${TOKEN_BEARER}`); } try { if (_.isString(body) || _.isObject(body)) { - if (!res.getHeader('Content-type')) { - res.header('Content-type', HEADERS.JSON); + if (!res.getHeader(HEADERS.CONTENT_TYPE)) { + res.header(HEADERS.CONTENT_TYPE, HEADERS.JSON); } if (typeof(body) === 'object' && _.isNil(body) === false) { @@ -143,7 +144,7 @@ export function allow(auth: IAuth) { // don't send etags with errors if (!res.statusCode || (res.statusCode >= 200 && res.statusCode < 300)) { - res.header('ETag', '"' + stringToMD5(body) + '"'); + res.header(HEADERS.ETAG, '"' + stringToMD5(body) + '"'); } } else { // send(null), send(204), etc. diff --git a/src/lib/bootstrap.js b/src/lib/bootstrap.js index 98329ea5b..dc48b5ad2 100644 --- a/src/lib/bootstrap.js +++ b/src/lib/bootstrap.js @@ -1,7 +1,6 @@ // @flow import {assign, isObject, isFunction} from 'lodash'; -import Path from 'path'; import URL from 'url'; import fs from 'fs'; import http from 'http'; @@ -9,53 +8,14 @@ import https from 'https'; // $FlowFixMe import constants from 'constants'; import endPointAPI from '../api/index'; -import {parseAddress} from './utils'; +import {getListListenAddresses, resolveConfigPath} from './cli/utils'; +import {API_ERROR, certPem, csrPem, keyPem} from './constants'; import type {Callback} from '@verdaccio/types'; import type {$Application} from 'express'; -import {DEFAULT_PORT} from './constants'; const logger = require('./logger'); -/** - * Retrieve all addresses defined in the config file. - * Verdaccio is able to listen multiple ports - * @param {String} argListen - * @param {String} configListen - * eg: - * listen: - - localhost:5555 - - localhost:5557 - @return {Array} - */ -export function getListListenAddresses(argListen: string, configListen: mixed) { - // command line || config file || default - let addresses; - if (argListen) { - addresses = [argListen]; - } else if (Array.isArray(configListen)) { - addresses = configListen; - } else if (configListen) { - addresses = [configListen]; - } else { - addresses = [DEFAULT_PORT]; - } - addresses = addresses.map(function(addr) { - const parsedAddr = parseAddress(addr); - - if (!parsedAddr) { - logger.logger.warn({addr: addr}, - 'invalid address - @{addr}, we expect a port (e.g. "4873"),' - + ' host:port (e.g. "localhost:4873") or full url' - + ' (e.g. "http://localhost:4873/")'); - } - - return parsedAddr; - }).filter(Boolean); - - return addresses; -} - /** * Trigger the server after configuration has been loaded. * @param {Object} config @@ -71,7 +31,7 @@ function startVerdaccio(config: any, pkgName: string, callback: Callback) { if (isObject(config) === false) { - throw new Error('config file must be an object'); + throw new Error(API_ERROR.CONFIG_BAD_FORMAT); } endPointAPI(config).then((app)=> { @@ -82,7 +42,7 @@ function startVerdaccio(config: any, if (addr.proto === 'https') { // https must either have key cert and ca or a pfx and (optionally) a passphrase if (!config.https || !config.https.key || !config.https.cert || !config.https.ca) { - displayHTTPSWarning(configPath); + logHTTPSWarning(configPath); } webServer = handleHTTPS(app, configPath, config); @@ -103,11 +63,7 @@ function unlinkAddressPath(addr) { } } -function displayHTTPSWarning(storageLocation) { - const resolveConfigPath = function(file) { - return Path.resolve(Path.dirname(storageLocation), file); - }; - +function logHTTPSWarning(storageLocation) { logger.logger.fatal([ 'You have enabled HTTPS and need to specify either ', ' "https.key", "https.cert" and "https.ca" or ', @@ -116,16 +72,16 @@ function displayHTTPSWarning(storageLocation) { '', // commands are borrowed from node.js docs 'To quickly create self-signed certificate, use:', - ' $ openssl genrsa -out ' + resolveConfigPath('verdaccio-key.pem') + ' 2048', - ' $ openssl req -new -sha256 -key ' + resolveConfigPath('verdaccio-key.pem') + ' -out ' + resolveConfigPath('verdaccio-csr.pem'), - ' $ openssl x509 -req -in ' + resolveConfigPath('verdaccio-csr.pem') + - ' -signkey ' + resolveConfigPath('verdaccio-key.pem') + ' -out ' + resolveConfigPath('verdaccio-cert.pem'), + ' $ openssl genrsa -out ' + resolveConfigPath(storageLocation, keyPem) + ' 2048', + ' $ openssl req -new -sha256 -key ' + resolveConfigPath(storageLocation, keyPem) + ' -out ' + resolveConfigPath(storageLocation, csrPem), + ' $ openssl x509 -req -in ' + resolveConfigPath(storageLocation, csrPem) + + ' -signkey ' + resolveConfigPath(storageLocation, keyPem) + ' -out ' + resolveConfigPath(storageLocation, certPem), '', 'And then add to config file (' + storageLocation + '):', ' https:', - ` key: ${resolveConfigPath('verdaccio-key.pem')}`, - ` cert: ${resolveConfigPath('verdaccio-cert.pem')}`, - ` ca: ${resolveConfigPath('verdaccio-csr.pem')}`, + ` key: ${resolveConfigPath(storageLocation, keyPem)}`, + ` cert: ${resolveConfigPath(storageLocation, certPem)}`, + ` ca: ${resolveConfigPath(storageLocation, csrPem)}`, ].join('\n')); process.exit(2); } diff --git a/src/lib/cli/utils.js b/src/lib/cli/utils.js new file mode 100644 index 000000000..bc1857743 --- /dev/null +++ b/src/lib/cli/utils.js @@ -0,0 +1,51 @@ +// @flow + +import path from 'path'; + +import {parseAddress} from '../utils'; +import {DEFAULT_PORT} from '../constants'; + +const logger = require('../logger'); + +export const resolveConfigPath = function(storageLocation: string, file: string) { + return path.resolve(path.dirname(storageLocation), file); +}; + +/** + * Retrieve all addresses defined in the config file. + * Verdaccio is able to listen multiple ports + * @param {String} argListen + * @param {String} configListen + * eg: + * listen: + - localhost:5555 + - localhost:5557 + @return {Array} + */ +export function getListListenAddresses(argListen: string, configListen: mixed) { + // command line || config file || default + let addresses; + if (argListen) { + addresses = [argListen]; + } else if (Array.isArray(configListen)) { + addresses = configListen; + } else if (configListen) { + addresses = [configListen]; + } else { + addresses = [DEFAULT_PORT]; + } + addresses = addresses.map(function(addr) { + const parsedAddr = parseAddress(addr); + + if (!parsedAddr) { + logger.logger.warn({addr: addr}, + 'invalid address - @{addr}, we expect a port (e.g. "4873"),' + + ' host:port (e.g. "localhost:4873") or full url' + + ' (e.g. "http://localhost:4873/")'); + } + + return parsedAddr; + }).filter(Boolean); + + return addresses; +} diff --git a/src/lib/constants.js b/src/lib/constants.js index 8df9f2bae..414dfeab8 100644 --- a/src/lib/constants.js +++ b/src/lib/constants.js @@ -1,15 +1,24 @@ // @flow export const DEFAULT_PORT: string = '4873'; +export const DEFAULT_PROTOCOL: string = 'http'; export const DEFAULT_DOMAIN: string = 'localhost'; export const TIME_EXPIRATION_24H: string ='24h'; export const TIME_EXPIRATION_7D: string = '7d'; +export const DIST_TAGS = 'dist-tags'; + +export const keyPem = 'verdaccio-key.pem'; +export const certPem = 'verdaccio-cert.pem'; +export const csrPem = 'verdaccio-csr.pem'; export const HEADERS = { JSON: 'application/json', + CONTENT_TYPE: 'Content-type', + ETAG: 'ETag', JSON_CHARSET: 'application/json; charset=utf-8', OCTET_STREAM: 'application/octet-stream; charset=utf-8', TEXT_CHARSET: 'text/plain; charset=utf-8', + WWW_AUTH: 'WWW-Authenticate', GZIP: 'gzip', }; @@ -73,8 +82,11 @@ export const API_MESSAGE = { }; export const API_ERROR = { + PLUGIN_ERROR: 'bug in the auth plugin system', + CONFIG_BAD_FORMAT: 'config file must be an object', BAD_USERNAME_PASSWORD: 'bad username/password, access denied', NO_PACKAGE: 'no such package available', + BAD_DATA: 'bad data', NOT_ALLOWED: 'not allowed to access package', INTERNAL_SERVER_ERROR: 'internal server error', UNKNOWN_ERROR: 'unknown error', diff --git a/src/lib/notify.js b/src/lib/notify/index.js similarity index 55% rename from src/lib/notify.js rename to src/lib/notify/index.js index f817fa19d..6f891830d 100644 --- a/src/lib/notify.js +++ b/src/lib/notify/index.js @@ -1,14 +1,12 @@ import Handlebars from 'handlebars'; -import request from 'request'; import _ from 'lodash'; -import logger from './logger'; -const handleNotify = function(metadata, notifyEntry, publisherInfo, publishedPackage) { +import {notifyRequest} from './notify-request'; + +export function handleNotify(metadata, notifyEntry, publisherInfo, publishedPackage) { let regex; if (metadata.name && notifyEntry.packagePattern) { - // FUTURE: comment out due https://github.com/verdaccio/verdaccio/pull/108#issuecomment-312421052 - // regex = new RegExp(notifyEntry.packagePattern, notifyEntry.packagePatternFlags || ''); - regex = new RegExp(notifyEntry.packagePattern); + regex = new RegExp(notifyEntry.packagePattern, notifyEntry.packagePatternFlags || ''); if (!regex.test(metadata.name)) { return; } @@ -49,33 +47,14 @@ const handleNotify = function(metadata, notifyEntry, publisherInfo, publishedPac options.url = notifyEntry.endpoint; } - return new Promise((resolve, reject) => { - request(options, function(err, response, body) { - if (err || response.statusCode >= 400) { - const errorMessage = _.isNil(err) ? response.body : err.message; - logger.logger.error({errorMessage}, 'notify service has thrown an error: @{errorMessage}'); + return notifyRequest(options, content); +} - reject(errorMessage); - } else { - logger.logger.info({content}, 'A notification has been shipped: @{content}'); - if (_.isNil(body) === false) { - const bodyResolved = _.isNil(body) === false ? body : null; - - logger.logger.debug({body}, ' body: @{body}'); - return resolve(bodyResolved); - } - - reject(Error('body is missing')); - } - }); - }); -}; - -function sendNotification(metadata, key, ...moreMedatata) { +export function sendNotification(metadata, key, ...moreMedatata) { return handleNotify(metadata, key, ...moreMedatata); } -const notify = function(metadata, config, ...moreMedatata) { +export function notify(metadata, config, ...moreMedatata) { if (config.notify) { if (config.notify.content) { return sendNotification(metadata, config.notify, ...moreMedatata); @@ -86,6 +65,4 @@ const notify = function(metadata, config, ...moreMedatata) { } return Promise.resolve(); -}; - -export {notify}; +} diff --git a/src/lib/notify/notify-request.js b/src/lib/notify/notify-request.js new file mode 100644 index 000000000..0d4cfa6b0 --- /dev/null +++ b/src/lib/notify/notify-request.js @@ -0,0 +1,27 @@ +import isNil from 'lodash/isNil'; +import logger from '../logger'; +import request from 'request'; +import {HTTP_STATUS} from '../constants'; + +export function notifyRequest(options, content) { + return new Promise((resolve, reject) => { + request(options, function(err, response, body) { + if (err || response.statusCode >= HTTP_STATUS.BAD_REQUEST) { + const errorMessage = isNil(err) ? response.body : err.message; + logger.logger.error({errorMessage}, 'notify service has thrown an error: @{errorMessage}'); + + reject(errorMessage); + } else { + logger.logger.info({content}, 'A notification has been shipped: @{content}'); + if (isNil(body) === false) { + const bodyResolved = isNil(body) === false ? body : null; + + logger.logger.debug({body}, ' body: @{body}'); + return resolve(bodyResolved); + } + + reject(Error('body is missing')); + } + }); + }); +} diff --git a/src/lib/notify/notify-template.js b/src/lib/notify/notify-template.js new file mode 100644 index 000000000..e69de29bb diff --git a/src/lib/utils.js b/src/lib/utils.js index 5da764f9d..cd1b5f5a2 100644 --- a/src/lib/utils.js +++ b/src/lib/utils.js @@ -14,6 +14,7 @@ import { API_ERROR, DEFAULT_PORT, DEFAULT_DOMAIN, + DEFAULT_PROTOCOL, CHARACTER_ENCODING } from './constants'; import {generateGravatarUrl} from '../utils/user'; @@ -67,17 +68,18 @@ export function validateName(name: string): boolean { if (_.isString(name) === false) { return false; } - name = name.toLowerCase(); + + const normalizedName: string = name.toLowerCase(); // all URL-safe characters and "@" for issue #75 return !( - !name.match(/^[-a-zA-Z0-9_.!~*'()@]+$/) || - name.charAt(0) === '.' || // ".bin", etc. - name.charAt(0) === '-' || // "-" is reserved by couchdb - name === 'node_modules' || - name === '__proto__' || - name === 'package.json' || - name === 'favicon.ico' + !normalizedName.match(/^[-a-zA-Z0-9_.!~*'()@]+$/) || + normalizedName.charAt(0) === '.' || // ".bin", etc. + normalizedName.charAt(0) === '-' || // "-" is reserved by couchdb + normalizedName === 'node_modules' || + normalizedName === '__proto__' || + normalizedName === 'package.json' || + normalizedName === 'favicon.ico' ); } @@ -221,7 +223,7 @@ export function tagVersion(data: Package, version: string, tag: StringValue): bo */ export function getVersion(pkg: Package, version: any) { // this condition must allow cast - if (pkg.versions[version] != null) { + if (_.isNil(pkg.versions[version]) === false) { return pkg.versions[version]; } @@ -263,7 +265,7 @@ export function parseAddress(urlAddress: any) { if (urlPattern) { return { - proto: urlPattern[2] || 'http', + proto: urlPattern[2] || DEFAULT_PROTOCOL, host: urlPattern[6] || urlPattern[7] || DEFAULT_DOMAIN, port: urlPattern[8] || DEFAULT_PORT, }; @@ -273,7 +275,7 @@ export function parseAddress(urlAddress: any) { if (urlPattern) { return { - proto: urlPattern[2] || 'http', + proto: urlPattern[2] || DEFAULT_PROTOCOL, path: urlPattern[4], }; } @@ -391,7 +393,7 @@ export const ErrorCode = { return createError(HTTP_STATUS.CONFLICT, message); }, getBadData: (customMessage?: string) => { - return createError(HTTP_STATUS.BAD_DATA, customMessage || 'bad data'); + return createError(HTTP_STATUS.BAD_DATA, customMessage || API_ERROR.BAD_DATA); }, getBadRequest: (customMessage?: string) => { return createError(HTTP_STATUS.BAD_REQUEST, customMessage); diff --git a/test/functional/package/access.js b/test/functional/package/access.js index 4f7db25f1..e92947cc9 100644 --- a/test/functional/package/access.js +++ b/test/functional/package/access.js @@ -59,36 +59,40 @@ export default function(server) { const testOnlyTest = 'test-only-test'; const testOnlyAuth = 'test-only-auth'; - // all are allowed to access - checkAccess(validCredentials, testAccessOnly, true); - checkAccess(undefined, testAccessOnly, true); - checkAccess(badCredentials, testAccessOnly, true); - checkPublish(validCredentials, testAccessOnly, false); - checkPublish(undefined, testAccessOnly, false); - checkPublish(badCredentials, testAccessOnly, false); + describe('all are allowed to access', () => { + checkAccess(validCredentials, testAccessOnly, true); + checkAccess(undefined, testAccessOnly, true); + checkAccess(badCredentials, testAccessOnly, true); + checkPublish(validCredentials, testAccessOnly, false); + checkPublish(undefined, testAccessOnly, false); + checkPublish(badCredentials, testAccessOnly, false); + }); - // all are allowed to publish - checkAccess(validCredentials, testPublishOnly, false); - checkAccess(undefined, testPublishOnly, false); - checkAccess(badCredentials, testPublishOnly, false); - checkPublish(validCredentials, testPublishOnly, true); - checkPublish(undefined, testPublishOnly, true); - checkPublish(badCredentials, testPublishOnly, true); + describe('all are allowed to publish', () => { + checkAccess(validCredentials, testPublishOnly, false); + checkAccess(undefined, testPublishOnly, false); + checkAccess(badCredentials, testPublishOnly, false); + checkPublish(validCredentials, testPublishOnly, true); + checkPublish(undefined, testPublishOnly, true); + checkPublish(badCredentials, testPublishOnly, true); + }); - // only user "test" is allowed to publish and access - checkAccess(validCredentials, testOnlyTest, true); - checkAccess(undefined, testOnlyTest, false); - checkAccess(badCredentials, testOnlyTest, false); - checkPublish(validCredentials, testOnlyTest, true); - checkPublish(undefined, testOnlyTest, false); - checkPublish(badCredentials, testOnlyTest, false); + describe('only user "test" is allowed to publish and access', () => { + checkAccess(validCredentials, testOnlyTest, true); + checkAccess(undefined, testOnlyTest, false); + checkAccess(badCredentials, testOnlyTest, false); + checkPublish(validCredentials, testOnlyTest, true); + checkPublish(undefined, testOnlyTest, false); + checkPublish(badCredentials, testOnlyTest, false); + }); - // only authenticated users are allowed - checkAccess(validCredentials, testOnlyAuth, true); - checkAccess(undefined, testOnlyAuth, false); - checkAccess(badCredentials, testOnlyAuth, false); - checkPublish(validCredentials, testOnlyAuth, true); - checkPublish(undefined, testOnlyAuth, false); - checkPublish(badCredentials, testOnlyAuth, false); + describe('only authenticated users are allowed', () => { + checkAccess(validCredentials, testOnlyAuth, true); + checkAccess(undefined, testOnlyAuth, false); + checkAccess(badCredentials, testOnlyAuth, false); + checkPublish(validCredentials, testOnlyAuth, true); + checkPublish(undefined, testOnlyAuth, false); + checkPublish(badCredentials, testOnlyAuth, false); + }); }); } diff --git a/test/unit/api/cli.spec.js b/test/unit/api/cli.spec.js index 3344d01b5..003c1421f 100644 --- a/test/unit/api/cli.spec.js +++ b/test/unit/api/cli.spec.js @@ -2,27 +2,37 @@ import path from 'path'; import _ from 'lodash'; import startServer from '../../../src/index'; -import {getListListenAddresses} from '../../../src/lib/bootstrap'; import config from '../partials/config/index'; -import {DEFAULT_DOMAIN, DEFAULT_PORT} from '../../../src/lib/constants'; +import {DEFAULT_DOMAIN, DEFAULT_PORT, DEFAULT_PROTOCOL} from '../../../src/lib/constants'; +import {getListListenAddresses} from '../../../src/lib/cli/utils'; -require('../../../src/lib/logger').setup([]); +const logger = require('../../../src/lib/logger'); + +jest.mock('../../../src/lib/logger', () => ({ + setup: jest.fn(), + logger: { + child: jest.fn(), + warn: jest.fn(), + error: jest.fn(), + fatal: jest.fn() + } +})); describe('startServer via API', () => { describe('startServer launcher', () => { - test('should provide all server data await/async', async (done) => { + test('should provide all HTTP server data', async (done) => { const store = path.join(__dirname, 'partials/store'); const serverName = 'verdaccio-test'; const version = '1.0.0'; const port = '6000'; - await startServer(config, port, store, version, serverName, + await startServer(_.clone(config), port, store, version, serverName, (webServer, addrs, pkgName, pkgVersion) => { expect(webServer).toBeDefined(); expect(addrs).toBeDefined(); - expect(addrs.proto).toBe('http'); - expect(addrs.host).toBe('localhost'); + expect(addrs.proto).toBe(DEFAULT_PROTOCOL); + expect(addrs.host).toBe(DEFAULT_DOMAIN); expect(addrs.port).toBe(port); expect(pkgName).toBeDefined(); expect(pkgVersion).toBeDefined(); @@ -32,6 +42,28 @@ describe('startServer via API', () => { }); }); + test('should provide all HTTPS server fails', async (done) => { + const store = path.join(__dirname, 'partials/store'); + const serverName = 'verdaccio-test'; + const version = '1.0.0'; + const address = 'https://www.domain.com:443'; + const realProcess = process; + + const conf = _.clone(config); + conf.https = {}; + // save process to catch exist + const exitMock = jest.fn(); + global.process = { ...realProcess, exit: exitMock }; + await startServer(conf, address, store, version, serverName, () => { + expect(logger.logger.fatal).toBeCalled(); + expect(logger.logger.fatal).toHaveBeenCalledTimes(2); + done(); + }); + expect(exitMock).toHaveBeenCalledWith(2); + // restore process + global.process = realProcess; + }); + test('should fails if config is missing', async () => { try { await startServer(); @@ -43,27 +75,52 @@ describe('startServer via API', () => { }); describe('getListListenAddresses test', () => { - test(`should return by default ${DEFAULT_PORT}`, () => { - const addrs = getListListenAddresses()[0]; - expect(addrs.proto).toBe('http'); + test('should return no address if a single address is wrong', () => { + const addrs = getListListenAddresses("wrong"); + + expect(_.isArray(addrs)).toBeTruthy(); + expect(addrs).toHaveLength(0); + }); + + test('should return no address if a two address are wrong', () => { + const addrs = getListListenAddresses(["wrong", "same-wrong"]); + + expect(_.isArray(addrs)).toBeTruthy(); + expect(addrs).toHaveLength(0); + }); + + test('should return a list of 1 address provided', () => { + const addrs = getListListenAddresses(null, '1000'); + + expect(_.isArray(addrs)).toBeTruthy(); + expect(addrs).toHaveLength(1); + }); + + test('should return a list of 2 address provided', () => { + const addrs = getListListenAddresses(null, ['1000', '2000']); + + expect(_.isArray(addrs)).toBeTruthy(); + expect(addrs).toHaveLength(2); + }); + + test(`should return by default ${DEFAULT_PORT}`, () => { + const [addrs] = getListListenAddresses(); + + expect(addrs.proto).toBe(DEFAULT_PROTOCOL); expect(addrs.host).toBe(DEFAULT_DOMAIN); expect(addrs.port).toBe(DEFAULT_PORT); }); - test('should return a list of address and no cli argument provided', () => { - const addrs = getListListenAddresses(null, ['1000', '2000']); + test('should return default proto, host and custom port', () => { + const initPort = '1000'; + const [addrs] = getListListenAddresses(null, initPort); - expect(_.isArray(addrs)).toBeTruthy(); + expect(addrs.proto).toEqual(DEFAULT_PROTOCOL); + expect(addrs.host).toEqual(DEFAULT_DOMAIN); + expect(addrs.port).toEqual(initPort); }); - test('should return an address and no cli argument provided', () => { - const addrs = getListListenAddresses(null, '1000'); - - expect(_.isArray(addrs)).toBeTruthy(); - }); - - }); }); diff --git a/test/unit/api/notify.spec.js b/test/unit/api/notify.spec.js new file mode 100644 index 000000000..e55ab7c9c --- /dev/null +++ b/test/unit/api/notify.spec.js @@ -0,0 +1,81 @@ +// @flow + +import {parseConfigurationFile} from '../__helper'; +import {parseConfigFile} from '../../../src/lib/utils'; +import {notify} from '../../../src/lib/notify'; + +import {notifyRequest} from '../../../src/lib/notify/notify-request'; + +jest.mock('./../../../src/lib/notify/notify-request', () => ({ + notifyRequest: jest.fn((options, content) => Promise.resolve([options, content])) +})); + +require('../../../src/lib/logger').setup([]); + +const parseConfigurationNotifyFile = (name) => { + return parseConfigurationFile(`notify/${name}`); +}; +const singleNotificationConfig = parseConfigFile(parseConfigurationNotifyFile('single.notify')); +const singleHeaderNotificationConfig = parseConfigFile(parseConfigurationNotifyFile('single.header.notify')); +const packagePatternNotificationConfig = parseConfigFile(parseConfigurationNotifyFile('single.packagePattern.notify')); +const multiNotificationConfig = parseConfigFile(parseConfigurationNotifyFile('multiple.notify')); + + +describe('Notify', () => { + + beforeEach(() => { + jest.clearAllMocks(); + }); + + //FUTURE: we should add some sort of health check of all props, (not implemented yet) + + test("should not fails if config is not provided", async () => { + await notify({}, {}); + + expect(notifyRequest).toHaveBeenCalledTimes(0); + }); + + test("should send notification", async () => { + const name: string = 'package'; + const response = await notify({name}, singleNotificationConfig); + const [options, content] = response; + + expect(options.headers).toBeDefined(); + expect(options.url).toBeDefined(); + expect(options.body).toBeDefined(); + expect(content).toMatch(name); + expect(response).toBeTruthy(); + expect(notifyRequest).toHaveBeenCalledTimes(1); + }); + + test("should send single header notification", async () => { + await notify({}, singleHeaderNotificationConfig); + + expect(notifyRequest).toHaveBeenCalledTimes(1); + }); + + test("should send multiple notification", async () => { + await notify({}, multiNotificationConfig); + + expect(notifyRequest).toHaveBeenCalledTimes(3); + }); + + describe('packagePatternFlags', () => { + test("should send single notification with packagePatternFlags", async () => { + const name: string = 'package'; + await notify({name}, packagePatternNotificationConfig); + + + expect(notifyRequest).toHaveBeenCalledTimes(1); + }); + + test("should not match on send single notification with packagePatternFlags", async () => { + const name: string = 'no-mach-name'; + await notify({name}, packagePatternNotificationConfig); + + expect(notifyRequest).toHaveBeenCalledTimes(0); + }); + }) + + +}); diff --git a/test/unit/api/utils.spec.js b/test/unit/api/utils.spec.js index 80ba8e31b..50dfe4824 100644 --- a/test/unit/api/utils.spec.js +++ b/test/unit/api/utils.spec.js @@ -4,10 +4,10 @@ import { generateGravatarUrl, GRAVATAR_DEFAULT } from '../../../src/utils/user'; import { spliceURL } from '../../../src/utils/string'; import Package from '../../../src/webui/components/Package/index'; import { - validateName as validate, + validateName, convertDistRemoteToLocalTarballUrls, parseReadme, - addGravatarSupport + addGravatarSupport, validatePackage, validateMetadata, DIST_TAGS, combineBaseUrl, getVersion, normalizeDistTags } from '../../../src/lib/utils'; import Logger, { setup } from '../../../src/lib/logger'; import { readFile } from '../../functional/lib/test.utils'; @@ -18,6 +18,218 @@ const readmeFile = (fileName: string = 'markdown.md') => setup([]); describe('Utilities', () => { + const buildURI = (host, version) => + `http://${host}/npm_test/-/npm_test-${version}.tgz`; + const fakeHost = 'fake.com'; + const metadata: Package = { + name: 'npm_test', + versions: { + '1.0.0': { + dist: { + tarball: 'http://registry.org/npm_test/-/npm_test-1.0.0.tgz' + } + }, + '1.0.1': { + dist: { + tarball: 'http://registry.org/npm_test/-/npm_test-1.0.1.tgz' + } + } + } + }; + const cloneMetadata = (pkg = metadata) => Object.assign({}, pkg); + + describe('API utilities', () => { + describe('convertDistRemoteToLocalTarballUrls', () => { + test('should build a URI for dist tarball based on new domain', () => { + const convertDist = convertDistRemoteToLocalTarballUrls(cloneMetadata(), + // $FlowFixMe + { + headers: { + host: fakeHost + }, + get: () => 'http', + protocol: 'http' + }); + expect(convertDist.versions['1.0.0'].dist.tarball).toEqual(buildURI(fakeHost, '1.0.0')); + expect(convertDist.versions['1.0.1'].dist.tarball).toEqual(buildURI(fakeHost, '1.0.1')); + }); + + test('should return same URI whether host is missing', () => { + const convertDist = convertDistRemoteToLocalTarballUrls(cloneMetadata(), + // $FlowFixMe + { + headers: {}, + get: () => 'http', + protocol: 'http' + }); + expect(convertDist.versions['1.0.0'].dist.tarball).toEqual(convertDist.versions['1.0.0'].dist.tarball); + }); + }); + + describe('normalizeDistTags', () => { + test('should delete a invalid latest version', () => { + const pkg = cloneMetadata(); + pkg[DIST_TAGS] = { + latest: '20000' + }; + + normalizeDistTags(pkg) + + expect(Object.keys(pkg[DIST_TAGS])).toHaveLength(0); + }); + + test('should define last published version as latest', () => { + const pkg = cloneMetadata(); + pkg[DIST_TAGS] = {}; + + normalizeDistTags(pkg) + + expect(pkg[DIST_TAGS]).toEqual({latest: '1.0.1'}); + }); + + test('should define last published version as latest with a custom dist-tag', () => { + const pkg = cloneMetadata(); + pkg[DIST_TAGS] = { + beta: '1.0.1' + }; + + normalizeDistTags(pkg); + + expect(pkg[DIST_TAGS]).toEqual({beta: '1.0.1', latest: '1.0.1'}); + }); + + test('should convert any array of dist-tags to a plain string', () => { + const pkg = cloneMetadata(); + pkg[DIST_TAGS] = { + latest: ['1.0.1'] + }; + + normalizeDistTags(pkg); + + expect(pkg[DIST_TAGS]).toEqual({latest: '1.0.1'}); + }); + }); + + describe('getVersion', () => { + test('should get the right version', () => { + expect(getVersion(cloneMetadata(), '1.0.0')).toEqual(metadata.versions['1.0.0']); + expect(getVersion(cloneMetadata(), 'v1.0.0')).toEqual(metadata.versions['1.0.0']); + }); + + test('should return nothing on get non existing version', () => { + expect(getVersion(cloneMetadata(), '0')).toBeUndefined(); + expect(getVersion(cloneMetadata(), '2.0.0')).toBeUndefined(); + expect(getVersion(cloneMetadata(), 'v2.0.0')).toBeUndefined(); + expect(getVersion(cloneMetadata(), undefined)).toBeUndefined(); + expect(getVersion(cloneMetadata(), null)).toBeUndefined(); + expect(getVersion(cloneMetadata(), 2)).toBeUndefined(); + }) + }); + + describe('combineBaseUrl', () => { + test('should create a URI', () => { + expect(combineBaseUrl("http", 'domain')).toEqual('http://domain'); + }); + + test('should create a base url for registry', () => { + expect(combineBaseUrl("http", 'domain', '/prefix/')).toEqual('http://domain/prefix'); + expect(combineBaseUrl("http", 'domain', 'only-prefix')).toEqual('only-prefix'); + }); + + }); + + describe('validatePackage', () => { + test('should validate package names', () => { + expect(validatePackage("package-name")).toBeTruthy(); + expect(validatePackage("@scope/package-name")).toBeTruthy(); + }); + + test('should fails on validate package names', () => { + expect(validatePackage("package-name/test/fake")).toBeFalsy(); + expect(validatePackage("@/package-name")).toBeFalsy(); + expect(validatePackage("$%$%#$%$#%#$%$#")).toBeFalsy(); + expect(validatePackage("node_modules")).toBeFalsy(); + expect(validatePackage("__proto__")).toBeFalsy(); + expect(validatePackage("package.json")).toBeFalsy(); + expect(validatePackage("favicon.ico")).toBeFalsy(); + }); + + describe('validateName', () => { + test('should fails with no string', () => { + // intended to fail with flow, do not remove + // $FlowFixMe + expect(validateName(null)).toBeFalsy(); + // $FlowFixMe + expect(validateName()).toBeFalsy(); + }); + + test('good ones', () => { + expect(validateName('verdaccio')).toBeTruthy(); + expect(validateName('some.weird.package-zzz')).toBeTruthy(); + expect(validateName('old-package@0.1.2.tgz')).toBeTruthy(); + }); + + test('should be valid using uppercase', () => { + expect(validateName('ETE')).toBeTruthy(); + expect(validateName('JSONStream')).toBeTruthy(); + }); + + test('should fails using package.json', () => { + expect(validateName('package.json')).toBeFalsy(); + }); + + test('should fails with path seps', () => { + expect(validateName('some/thing')).toBeFalsy(); + expect(validateName('some\\thing')).toBeFalsy(); + }); + + test('should fail with no hidden files', () => { + expect(validateName('.bin')).toBeFalsy(); + }); + + test('should fails with reserved words', () => { + expect(validateName('favicon.ico')).toBeFalsy(); + expect(validateName('node_modules')).toBeFalsy(); + expect(validateName('__proto__')).toBeFalsy(); + }); + + test('should fails with other options', () => { + expect(validateName('pk g')).toBeFalsy(); + expect(validateName('pk\tg')).toBeFalsy(); + expect(validateName('pk%20g')).toBeFalsy(); + expect(validateName('pk+g')).toBeFalsy(); + expect(validateName('pk:g')).toBeFalsy(); + }); + }); + }); + + describe('validateMetadata', () => { + test('should fills an empty metadata object', () => { + // intended to fail with flow, do not remove + // $FlowFixMe + expect(Object.keys(validateMetadata({}))).toContain(DIST_TAGS); + // $FlowFixMe + expect(Object.keys(validateMetadata({}))).toContain('versions'); + // $FlowFixMe + expect(Object.keys(validateMetadata({}))).toContain('time'); + }); + + test('should fails the assertions is not an object', () => { + expect(function ( ) { + // $FlowFixMe + validateMetadata(''); + }).toThrow(assert.AssertionError); + }); + + test('should fails the assertions is name does not match', () => { + expect(function ( ) { + // $FlowFixMe + validateMetadata({}, "no-name"); + }).toThrow(assert.AssertionError); + }); + }); + }); + describe('String utilities', () => { test('should splice two strings and generate a url', () => { const url: string = spliceURL('http://domain.com', '/-/static/logo.png'); @@ -47,90 +259,6 @@ describe('Utilities', () => { }); }); - describe('Validations', () => { - test('good ones', () => { - assert(validate('verdaccio')); - assert(validate('some.weird.package-zzz')); - assert(validate('old-package@0.1.2.tgz')); - }); - - test('uppercase', () => { - assert(validate('EVE')); - assert(validate('JSONStream')); - }); - - test('no package.json', () => { - assert(!validate('package.json')); - }); - - test('no path seps', () => { - assert(!validate('some/thing')); - assert(!validate('some\\thing')); - }); - - test('no hidden', () => { - assert(!validate('.bin')); - }); - - test('no reserved', () => { - assert(!validate('favicon.ico')); - assert(!validate('node_modules')); - assert(!validate('__proto__')); - }); - - test('other', () => { - assert(!validate('pk g')); - assert(!validate('pk\tg')); - assert(!validate('pk%20g')); - assert(!validate('pk+g')); - assert(!validate('pk:g')); - }); - }); - - describe('Packages utilities', () => { - const metadata: Package = { - name: 'npm_test', - versions: { - '1.0.0': { - dist: { - tarball: 'http://registry.org/npm_test/-/npm_test-1.0.0.tgz' - } - }, - '1.0.1': { - dist: { - tarball: 'http://registry.org/npm_test/-/npm_test-1.0.1.tgz' - } - } - } - }; - - const buildURI = (host, version) => - `http://${host}/npm_test/-/npm_test-${version}.tgz`; - const host = 'fake.com'; - - test('convertDistRemoteToLocalTarballUrls', () => { - const convertDist = convertDistRemoteToLocalTarballUrls( - Object.assign({}, metadata), - // $FlowFixMe - { - headers: { - host - }, - get: () => 'http', - protocol: 'http' - }, - '' - ); - - expect(convertDist.versions['1.0.0'].dist.tarball).toEqual( - buildURI(host, '1.0.0') - ); - expect(convertDist.versions['1.0.1'].dist.tarball).toEqual( - buildURI(host, '1.0.1') - ); - }); - }); - describe('parseReadme', () => { test('should parse makrdown text to html template', () => { const markdown = '# markdown'; diff --git a/test/unit/partials/config/yaml/notify/multiple.notify.yaml b/test/unit/partials/config/yaml/notify/multiple.notify.yaml new file mode 100644 index 000000000..35ae213a3 --- /dev/null +++ b/test/unit/partials/config/yaml/notify/multiple.notify.yaml @@ -0,0 +1,20 @@ +notify: + 'example-google-chat': + method: POST + headers: [{ 'Content-Type': 'application/json' }] + endpoint: https://chat.googleapis.com/v1/spaces/AAAAB_TcJYs/messages?key=myKey&token=myToken + content: '{"text":"New package published: `{{ name }}{{#each versions}} v{{version}}{{/each}}`"}' + 'example-hipchat': + method: POST + headers: [{ 'Content-Type': 'application/json' }] + endpoint: https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken + content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}' + 'example-stride': + method: POST + headers: + [ + { 'Content-Type': 'application/json' }, + { 'authorization': 'Bearer secretToken' }, + ] + endpoint: https://api.atlassian.com/site/{cloudId}/conversation/{conversationId}/message + content: '{"body": {"version": 1,"type": "doc","content": [{"type": "paragraph","content": [{"type": "text","text": "New package published: * {{ name }}* Publisher name: * {{ publisher.name }}"}]}]}}' diff --git a/test/unit/partials/config/yaml/notify/single.header.notify.yaml b/test/unit/partials/config/yaml/notify/single.header.notify.yaml new file mode 100644 index 000000000..bbb42046b --- /dev/null +++ b/test/unit/partials/config/yaml/notify/single.header.notify.yaml @@ -0,0 +1,5 @@ +notify: + method: POST + headers: { 'Content-Type': 'application/json' } + endpoint: https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken + content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}' diff --git a/test/unit/partials/config/yaml/notify/single.notify.yaml b/test/unit/partials/config/yaml/notify/single.notify.yaml new file mode 100644 index 000000000..ecbabe511 --- /dev/null +++ b/test/unit/partials/config/yaml/notify/single.notify.yaml @@ -0,0 +1,5 @@ +notify: + method: POST + headers: [{ 'Content-Type': 'application/json' }] + endpoint: https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken + content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}' diff --git a/test/unit/partials/config/yaml/notify/single.packagePattern.notify.yaml b/test/unit/partials/config/yaml/notify/single.packagePattern.notify.yaml new file mode 100644 index 000000000..cc8f94bd4 --- /dev/null +++ b/test/unit/partials/config/yaml/notify/single.packagePattern.notify.yaml @@ -0,0 +1,7 @@ +notify: + method: POST + headers: { 'Content-Type': 'application/json' } + packagePattern: package + packagePatternFlags: g + endpoint: https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken + content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}'