diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/decl/lodash.d.ts | 16525 | ||||
-rw-r--r-- | lib/decl/mithril.d.ts | 926 | ||||
-rw-r--r-- | lib/module-trampoline.js | 10 | ||||
-rw-r--r-- | lib/vendor/lodash.core.min.js | 29 | ||||
-rw-r--r-- | lib/vendor/mithril.js | 2233 | ||||
-rw-r--r-- | lib/wallet/db.ts | 5 | ||||
-rw-r--r-- | lib/wallet/renderHtml.tsx | 4 |
7 files changed, 4 insertions, 19728 deletions
diff --git a/lib/decl/lodash.d.ts b/lib/decl/lodash.d.ts deleted file mode 100644 index f9249d16b..000000000 --- a/lib/decl/lodash.d.ts +++ /dev/null @@ -1,16525 +0,0 @@ -// Type definitions for Lo-Dash -// Project: http://lodash.com/ -// Definitions by: Brian Zengel <https://github.com/bczengel>, Ilya Mochalov <https://github.com/chrootsu> -// Definitions: https://github.com/borisyankov/DefinitelyTyped - - -/** -### 4.0.0 Changelog (https://github.com/lodash/lodash/wiki/Changelog) - -#### TODO: -removed: -- [x] Removed _.support -- [x] Removed _.findWhere in favor of _.find with iteratee shorthand -- [x] Removed _.where in favor of _.filter with iteratee shorthand -- [x] Removed _.pluck in favor of _.map with iteratee shorthand - -renamed: -- [x] Renamed _.first to _.head -- [x] Renamed _.indexBy to _.keyBy -- [x] Renamed _.invoke to _.invokeMap -- [x] Renamed _.overArgs to _.overArgs -- [x] Renamed _.padLeft & _.padRight to _.padStart & _.padEnd -- [x] Renamed _.pairs to _.toPairs -- [x] Renamed _.rest to _.tail -- [x] Renamed _.restParam to _.rest -- [x] Renamed _.sortByOrder to _.orderBy -- [x] Renamed _.trimLeft & _.trimRight to _.trimStart & _.trimEnd -- [x] Renamed _.trunc to _.truncate - -split: -- [x] Split _.indexOf & _.lastIndexOf into _.sortedIndexOf & _.sortedLastIndexOf -- [x] Split _.max & _.min into _.maxBy & _.minBy -- [x] Split _.omit & _.pick into _.omitBy & _.pickBy -- [x] Split _.sample into _.sampleSize -- [x] Split _.sortedIndex into _.sortedIndexBy -- [x] Split _.sortedLastIndex into _.sortedLastIndexBy -- [x] Split _.uniq into _.sortedUniq, _.sortedUniqBy, & _.uniqBy - -changes: -- [x] Absorbed _.sortByAll into _.sortBy -- [x] Changed the category of _.at to “Object” -- [x] Changed the category of _.bindAll to “Utility” -- [x] Made _.capitalize uppercase the first character & lowercase the rest -- [x] Made _.functions return only own method names - - -added 23 array methods: -- [x] _.concat -- [x] _.differenceBy -- [x] _.differenceWith -- [x] _.flatMap -- [x] _.fromPairs -- [x] _.intersectionBy -- [x] _.intersectionWith -- [x] _.join -- [x] _.pullAll -- [x] _.pullAllBy -- [x] _.reverse -- [x] _.sortedIndexBy -- [x] _.sortedIndexOf -- [x] _.sortedLastIndexBy -- [x] _.sortedLastIndexOf -- [x] _.sortedUniq -- [x] _.sortedUniqBy -- [x] _.unionBy -- [x] _.unionWith -- [x] _.uniqBy -- [x] _.uniqWith -- [x] _.xorBy -- [x] _.xorWith - -added 18 lang methods: -- [x] _.cloneDeepWith -- [x] _.cloneWith -- [x] _.eq -- [x] _.isArrayLike -- [x] _.isArrayLikeObject -- [x] _.isEqualWith -- [x] _.isInteger -- [x] _.isLength -- [x] _.isMatchWith -- [x] _.isNil -- [x] _.isObjectLike -- [x] _.isSafeInteger -- [x] _.isSymbol -- [x] _.toInteger -- [x] _.toLength -- [x] _.toNumber -- [x] _.toSafeInteger -- [x] _.toString - -added 13 object methods: -- [x] _.assignIn -- [x] _.assignInWith -- [x] _.assignWith -- [x] _.functionsIn -- [x] _.hasIn -- [x] _.mergeWith -- [x] _.omitBy -- [x] _.pickBy - - -added 8 string methods: -- [x] _.lowerCase -- [x] _.lowerFirst -- [x] _.upperCase -- [x] _.upperFirst -- [x] _.toLower -- [x] _.toUpper - -added 8 utility methods: -- [x] _.toPath - -added 4 math methods: -- [x] _.maxBy -- [x] _.mean -- [x] _.minBy -- [x] _.sumBy - -added 2 function methods: -- [x] _.flip -- [x] _.unary - -added 2 number methods: -- [x] _.clamp -- [x] _.subtract - -added collection method: -- [x] _.sampleSize - -Added 3 aliases - -- [x] _.first as an alias of _.head - -Removed 17 aliases -- [x] Removed aliase _.all -- [x] Removed aliase _.any -- [x] Removed aliase _.backflow -- [x] Removed aliase _.callback -- [x] Removed aliase _.collect -- [x] Removed aliase _.compose -- [x] Removed aliase _.contains -- [x] Removed aliase _.detect -- [x] Removed aliase _.foldl -- [x] Removed aliase _.foldr -- [x] Removed aliase _.include -- [x] Removed aliase _.inject -- [x] Removed aliase _.methods -- [x] Removed aliase _.object -- [x] Removed aliase _.run -- [x] Removed aliase _.select -- [x] Removed aliase _.unique - -Other changes -- [x] Added support for array buffers to _.isEqual -- [x] Added support for converting iterators to _.toArray -- [x] Added support for deep paths to _.zipObject -- [x] Changed UMD to export to window or self when available regardless of other exports -- [x] Ensured debounce cancel clears args & thisArg references -- [x] Ensured _.add, _.subtract, & _.sum don’t skip NaN values -- [x] Ensured _.clone treats generators like functions -- [x] Ensured _.clone produces clones with the source’s [[Prototype]] -- [x] Ensured _.defaults assigns properties that shadow Object.prototype -- [x] Ensured _.defaultsDeep doesn’t merge a string into an array -- [x] Ensured _.defaultsDeep & _.merge don’t modify sources -- [x] Ensured _.defaultsDeep works with circular references -- [x] Ensured _.keys skips “length” on strict mode arguments objects in Safari 9 -- [x] Ensured _.merge doesn’t convert strings to arrays -- [x] Ensured _.merge merges plain-objects onto non plain-objects -- [x] Ensured _#plant resets iterator data of cloned sequences -- [x] Ensured _.random swaps min & max if min is greater than max -- [x] Ensured _.range preserves the sign of start of -0 -- [x] Ensured _.reduce & _.reduceRight use getIteratee in their array branch -- [x] Fixed rounding issue with the precision param of _.floor - -** LATER ** -Misc: -- [ ] Made _.forEach, _.forIn, _.forOwn, & _.times implicitly end a chain sequence -- [ ] Removed thisArg params from most methods -- [ ] Made “By” methods provide a single param to iteratees -- [ ] Made _.words chainable by default -- [ ] Removed isDeep params from _.clone & _.flatten -- [ ] Removed _.bindAll support for binding all methods when no names are provided -- [ ] Removed func-first param signature from _.before & _.after -- [ ] _.extend as an alias of _.assignIn -- [ ] _.extendWith as an alias of _.assignInWith -- [ ] Added clear method to _.memoize.Cache -- [ ] Added flush method to debounced & throttled functions -- [ ] Added support for ES6 maps, sets, & symbols to _.clone, _.isEqual, & _.toArray -- [ ] Enabled _.flow & _.flowRight to accept an array of functions -- [ ] Ensured “Collection” methods treat functions as objects -- [ ] Ensured _.assign, _.defaults, & _.merge coerce object values to objects -- [ ] Ensured _.bindKey bound functions call object[key] when called with the new operator -- [ ] Ensured _.isFunction returns true for generator functions -- [ ] Ensured _.merge assigns typed arrays directly -- [ ] Made _(...) an iterator & iterable -- [ ] Made _.drop, _.take, & right forms coerce n of undefined to 0 - -Methods: -- [ ] _.concat -- [ ] _.differenceBy -- [ ] _.differenceWith -- [ ] _.flatMap -- [ ] _.fromPairs -- [ ] _.intersectionBy -- [ ] _.intersectionWith -- [ ] _.join -- [ ] _.pullAll -- [ ] _.pullAllBy -- [ ] _.reverse -- [ ] _.sortedLastIndexOf -- [ ] _.unionBy -- [ ] _.unionWith -- [ ] _.uniqWith -- [ ] _.xorBy -- [ ] _.xorWith -- [ ] _.toString - -- [ ] _.invoke -- [ ] _.setWith -- [ ] _.toPairs -- [ ] _.toPairsIn -- [ ] _.unset - -- [ ] _.replace -- [ ] _.split - -- [ ] _.cond -- [ ] _.conforms -- [ ] _.nthArg -- [ ] _.over -- [ ] _.overEvery -- [ ] _.overSome -- [ ] _.rangeRight - -- [ ] _.next -*/ - -declare var _: _.LoDashStatic; - -declare module _ { - interface LoDashStatic { - /** - * Creates a lodash object which wraps the given value to enable intuitive method chaining. - * - * In addition to Lo-Dash methods, wrappers also have the following Array methods: - * concat, join, pop, push, reverse, shift, slice, sort, splice, and unshift - * - * Chaining is supported in custom builds as long as the value method is implicitly or - * explicitly included in the build. - * - * The chainable wrapper functions are: - * after, assign, bind, bindAll, bindKey, chain, chunk, compact, compose, concat, countBy, - * createCallback, curry, debounce, defaults, defer, delay, difference, filter, flatten, - * forEach, forEachRight, forIn, forInRight, forOwn, forOwnRight, functions, groupBy, - * keyBy, initial, intersection, invert, invoke, keys, map, max, memoize, merge, min, - * object, omit, once, pairs, partial, partialRight, pick, pluck, pull, push, range, reject, - * remove, rest, reverse, sample, shuffle, slice, sort, sortBy, splice, tap, throttle, times, - * toArray, transform, union, uniq, unshift, unzip, values, where, without, wrap, and zip - * - * The non-chainable wrapper functions are: - * clone, cloneDeep, contains, escape, every, find, findIndex, findKey, findLast, - * findLastIndex, findLastKey, has, identity, indexOf, isArguments, isArray, isBoolean, - * isDate, isElement, isEmpty, isEqual, isFinite, isFunction, isNaN, isNull, isNumber, - * isObject, isPlainObject, isRegExp, isString, isUndefined, join, lastIndexOf, mixin, - * noConflict, parseInt, pop, random, reduce, reduceRight, result, shift, size, some, - * sortedIndex, runInContext, template, unescape, uniqueId, and value - * - * The wrapper functions first and last return wrapped values when n is provided, otherwise - * they return unwrapped values. - * - * Explicit chaining can be enabled by using the _.chain method. - **/ - (value: number): LoDashImplicitWrapper<number>; - (value: string): LoDashImplicitStringWrapper; - (value: boolean): LoDashImplicitWrapper<boolean>; - (value: Array<number>): LoDashImplicitNumberArrayWrapper; - <T>(value: Array<T>): LoDashImplicitArrayWrapper<T>; - <T extends {}>(value: T): LoDashImplicitObjectWrapper<T>; - (value: any): LoDashImplicitWrapper<any>; - - /** - * The semantic version number. - **/ - VERSION: string; - - /** - * By default, the template delimiters used by Lo-Dash are similar to those in embedded Ruby - * (ERB). Change the following template settings to use alternative delimiters. - **/ - templateSettings: TemplateSettings; - } - - /** - * By default, the template delimiters used by Lo-Dash are similar to those in embedded Ruby - * (ERB). Change the following template settings to use alternative delimiters. - **/ - interface TemplateSettings { - /** - * The "escape" delimiter. - **/ - escape?: RegExp; - - /** - * The "evaluate" delimiter. - **/ - evaluate?: RegExp; - - /** - * An object to import into the template as local variables. - **/ - imports?: Dictionary<any>; - - /** - * The "interpolate" delimiter. - **/ - interpolate?: RegExp; - - /** - * Used to reference the data object in the template text. - **/ - variable?: string; - } - - /** - * Creates a cache object to store key/value pairs. - */ - interface MapCache { - /** - * Removes `key` and its value from the cache. - * @param key The key of the value to remove. - * @return Returns `true` if the entry was removed successfully, else `false`. - */ - delete(key: string): boolean; - - /** - * Gets the cached value for `key`. - * @param key The key of the value to get. - * @return Returns the cached value. - */ - get(key: string): any; - - /** - * Checks if a cached value for `key` exists. - * @param key The key of the entry to check. - * @return Returns `true` if an entry for `key` exists, else `false`. - */ - has(key: string): boolean; - - /** - * Sets `value` to `key` of the cache. - * @param key The key of the value to cache. - * @param value The value to cache. - * @return Returns the cache object. - */ - set(key: string, value: any): _.Dictionary<any>; - } - - interface LoDashWrapperBase<T, TWrapper> { } - - interface LoDashImplicitWrapperBase<T, TWrapper> extends LoDashWrapperBase<T, TWrapper> { } - - interface LoDashExplicitWrapperBase<T, TWrapper> extends LoDashWrapperBase<T, TWrapper> { } - - interface LoDashImplicitWrapper<T> extends LoDashImplicitWrapperBase<T, LoDashImplicitWrapper<T>> { } - - interface LoDashExplicitWrapper<T> extends LoDashExplicitWrapperBase<T, LoDashExplicitWrapper<T>> { } - - interface LoDashImplicitStringWrapper extends LoDashImplicitWrapper<string> { } - - interface LoDashExplicitStringWrapper extends LoDashExplicitWrapper<string> { } - - interface LoDashImplicitObjectWrapper<T> extends LoDashImplicitWrapperBase<T, LoDashImplicitObjectWrapper<T>> { } - - interface LoDashExplicitObjectWrapper<T> extends LoDashExplicitWrapperBase<T, LoDashExplicitObjectWrapper<T>> { } - - interface LoDashImplicitArrayWrapper<T> extends LoDashImplicitWrapperBase<T[], LoDashImplicitArrayWrapper<T>> { - join(seperator?: string): string; - pop(): T; - push(...items: T[]): LoDashImplicitArrayWrapper<T>; - shift(): T; - sort(compareFn?: (a: T, b: T) => number): LoDashImplicitArrayWrapper<T>; - splice(start: number): LoDashImplicitArrayWrapper<T>; - splice(start: number, deleteCount: number, ...items: any[]): LoDashImplicitArrayWrapper<T>; - unshift(...items: T[]): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> extends LoDashExplicitWrapperBase<T[], LoDashExplicitArrayWrapper<T>> { } - - interface LoDashImplicitNumberArrayWrapper extends LoDashImplicitArrayWrapper<number> { } - - interface LoDashExplicitNumberArrayWrapper extends LoDashExplicitArrayWrapper<number> { } - - /********* - * Array * - *********/ - - //_.chunk - interface LoDashStatic { - /** - * Creates an array of elements split into groups the length of size. If collection can’t be split evenly, the - * final chunk will be the remaining elements. - * - * @param array The array to process. - * @param size The length of each chunk. - * @return Returns the new array containing chunks. - */ - chunk<T>( - array: List<T>, - size?: number - ): T[][]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.chunk - */ - chunk(size?: number): LoDashImplicitArrayWrapper<T[]>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.chunk - */ - chunk<TResult>(size?: number): LoDashImplicitArrayWrapper<TResult[]>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.chunk - */ - chunk(size?: number): LoDashExplicitArrayWrapper<T[]>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.chunk - */ - chunk<TResult>(size?: number): LoDashExplicitArrayWrapper<TResult[]>; - } - - //_.compact - interface LoDashStatic { - /** - * Creates an array with all falsey values removed. The values false, null, 0, "", undefined, and NaN are - * falsey. - * - * @param array The array to compact. - * @return (Array) Returns the new array of filtered values. - */ - compact<T>(array?: List<T>): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.compact - */ - compact(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.compact - */ - compact<TResult>(): LoDashImplicitArrayWrapper<TResult>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.compact - */ - compact(): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.compact - */ - compact<TResult>(): LoDashExplicitArrayWrapper<TResult>; - } - - //_.concat DUMMY - interface LoDashStatic { - /** - * Creates a new array concatenating `array` with any additional arrays - * and/or values. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to concatenate. - * @param {...*} [values] The values to concatenate. - * @returns {Array} Returns the new concatenated array. - * @example - * - * var array = [1]; - * var other = _.concat(array, 2, [3], [[4]]); - * - * console.log(other); - * // => [1, 2, 3, [4]] - * - * console.log(array); - * // => [1] - */ - concat<T>(...values: (T[]|List<T>)[]) : T[]; - } - - //_.difference - interface LoDashStatic { - /** - * Creates an array of unique array values not included in the other provided arrays using SameValueZero for - * equality comparisons. - * - * @param array The array to inspect. - * @param values The arrays of values to exclude. - * @return Returns the new array of filtered values. - */ - difference<T>( - array: any[]|List<any>, - ...values: any[] - ): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.difference - */ - difference(...values: (T[]|List<T>)[]): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.difference - */ - difference<TValue>(...values: (TValue[]|List<TValue>)[]): LoDashImplicitArrayWrapper<TValue>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.difference - */ - difference(...values: (T[]|List<T>)[]): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.difference - */ - difference<TValue>(...values: (TValue[]|List<TValue>)[]): LoDashExplicitArrayWrapper<TValue>; - } - - //_.differenceBy DUMMY - interface LoDashStatic { - /** - * Creates an array of unique `array` values not included in the other - * provided arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * for equality comparisons. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.difference([3, 2, 1], [4, 2]); - * // => [3, 1] - */ - differenceBy( - array: any[]|List<any>, - ...values: any[] - ): any[]; - } - - //_.differenceWith DUMMY - interface LoDashStatic { - /** - * Creates an array of unique `array` values not included in the other - * provided arrays using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * for equality comparisons. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.difference([3, 2, 1], [4, 2]); - * // => [3, 1] - */ - differenceWith( - array: any[]|List<any>, - ...values: any[] - ): any[]; - } - - //_.drop - interface LoDashStatic { - /** - * Creates a slice of array with n elements dropped from the beginning. - * - * @param array The array to query. - * @param n The number of elements to drop. - * @return Returns the slice of array. - */ - drop<T>(array: T[]|List<T>, n?: number): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.drop - */ - drop(n?: number): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.drop - */ - drop<T>(n?: number): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.drop - */ - drop(n?: number): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.drop - */ - drop<T>(n?: number): LoDashExplicitArrayWrapper<T>; - } - - //_.dropRight - interface LoDashStatic { - /** - * Creates a slice of array with n elements dropped from the end. - * - * @param array The array to query. - * @param n The number of elements to drop. - * @return Returns the slice of array. - */ - dropRight<T>( - array: List<T>, - n?: number - ): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.dropRight - */ - dropRight(n?: number): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.dropRight - */ - dropRight<TResult>(n?: number): LoDashImplicitArrayWrapper<TResult>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.dropRight - */ - dropRight(n?: number): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.dropRight - */ - dropRight<TResult>(n?: number): LoDashExplicitArrayWrapper<TResult>; - } - - //_.dropRightWhile - interface LoDashStatic { - /** - * Creates a slice of array excluding elements dropped from the end. Elements are dropped until predicate - * returns falsey. The predicate is bound to thisArg and invoked with three arguments: (value, index, array). - * - * If a property name is provided for predicate the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for predicate the created _.matches style callback returns true for elements that - * match the properties of the given object, else false. - * - * @param array The array to query. - * @param predicate The function invoked per iteration. - * @param thisArg The this binding of predicate. - * @return Returns the slice of array. - */ - dropRightWhile<TValue>( - array: List<TValue>, - predicate?: ListIterator<TValue, boolean>, - thisArg?: any - ): TValue[]; - - /** - * @see _.dropRightWhile - */ - dropRightWhile<TValue>( - array: List<TValue>, - predicate?: string, - thisArg?: any - ): TValue[]; - - /** - * @see _.dropRightWhile - */ - dropRightWhile<TWhere, TValue>( - array: List<TValue>, - predicate?: TWhere - ): TValue[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.dropRightWhile - */ - dropRightWhile( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.dropRightWhile - */ - dropRightWhile( - predicate?: string, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.dropRightWhile - */ - dropRightWhile<TWhere>( - predicate?: TWhere - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.dropRightWhile - */ - dropRightWhile<TValue>( - predicate?: ListIterator<TValue, boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<TValue>; - - /** - * @see _.dropRightWhile - */ - dropRightWhile<TValue>( - predicate?: string, - thisArg?: any - ): LoDashImplicitArrayWrapper<TValue>; - - /** - * @see _.dropRightWhile - */ - dropRightWhile<TWhere, TValue>( - predicate?: TWhere - ): LoDashImplicitArrayWrapper<TValue>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.dropRightWhile - */ - dropRightWhile( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.dropRightWhile - */ - dropRightWhile( - predicate?: string, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.dropRightWhile - */ - dropRightWhile<TWhere>( - predicate?: TWhere - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.dropRightWhile - */ - dropRightWhile<TValue>( - predicate?: ListIterator<TValue, boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<TValue>; - - /** - * @see _.dropRightWhile - */ - dropRightWhile<TValue>( - predicate?: string, - thisArg?: any - ): LoDashExplicitArrayWrapper<TValue>; - - /** - * @see _.dropRightWhile - */ - dropRightWhile<TWhere, TValue>( - predicate?: TWhere - ): LoDashExplicitArrayWrapper<TValue>; - } - - //_.dropWhile - interface LoDashStatic { - /** - * Creates a slice of array excluding elements dropped from the beginning. Elements are dropped until predicate - * returns falsey. The predicate is bound to thisArg and invoked with three arguments: (value, index, array). - * - * If a property name is provided for predicate the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for predicate the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * @param array The array to query. - * @param predicate The function invoked per iteration. - * @param thisArg The this binding of predicate. - * @return Returns the slice of array. - */ - dropWhile<TValue>( - array: List<TValue>, - predicate?: ListIterator<TValue, boolean>, - thisArg?: any - ): TValue[]; - - /** - * @see _.dropWhile - */ - dropWhile<TValue>( - array: List<TValue>, - predicate?: string, - thisArg?: any - ): TValue[]; - - /** - * @see _.dropWhile - */ - dropWhile<TWhere, TValue>( - array: List<TValue>, - predicate?: TWhere - ): TValue[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.dropWhile - */ - dropWhile( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.dropWhile - */ - dropWhile( - predicate?: string, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.dropWhile - */ - dropWhile<TWhere>( - predicate?: TWhere - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.dropWhile - */ - dropWhile<TValue>( - predicate?: ListIterator<TValue, boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<TValue>; - - /** - * @see _.dropWhile - */ - dropWhile<TValue>( - predicate?: string, - thisArg?: any - ): LoDashImplicitArrayWrapper<TValue>; - - /** - * @see _.dropWhile - */ - dropWhile<TWhere, TValue>( - predicate?: TWhere - ): LoDashImplicitArrayWrapper<TValue>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.dropWhile - */ - dropWhile( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.dropWhile - */ - dropWhile( - predicate?: string, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.dropWhile - */ - dropWhile<TWhere>( - predicate?: TWhere - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.dropWhile - */ - dropWhile<TValue>( - predicate?: ListIterator<TValue, boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<TValue>; - - /** - * @see _.dropWhile - */ - dropWhile<TValue>( - predicate?: string, - thisArg?: any - ): LoDashExplicitArrayWrapper<TValue>; - - /** - * @see _.dropWhile - */ - dropWhile<TWhere, TValue>( - predicate?: TWhere - ): LoDashExplicitArrayWrapper<TValue>; - } - - //_.fill - interface LoDashStatic { - /** - * Fills elements of array with value from start up to, but not including, end. - * - * Note: This method mutates array. - * - * @param array The array to fill. - * @param value The value to fill array with. - * @param start The start position. - * @param end The end position. - * @return Returns array. - */ - fill<T>( - array: any[], - value: T, - start?: number, - end?: number - ): T[]; - - /** - * @see _.fill - */ - fill<T>( - array: List<any>, - value: T, - start?: number, - end?: number - ): List<T>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.fill - */ - fill<T>( - value: T, - start?: number, - end?: number - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.fill - */ - fill<T>( - value: T, - start?: number, - end?: number - ): LoDashImplicitObjectWrapper<List<T>>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.fill - */ - fill<T>( - value: T, - start?: number, - end?: number - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.fill - */ - fill<T>( - value: T, - start?: number, - end?: number - ): LoDashExplicitObjectWrapper<List<T>>; - } - - //_.findIndex - interface LoDashStatic { - /** - * This method is like _.find except that it returns the index of the first element predicate returns truthy - * for instead of the element itself. - * - * If a property name is provided for predicate the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for predicate the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * @param array The array to search. - * @param predicate The function invoked per iteration. - * @param thisArg The this binding of predicate. - * @return Returns the index of the found element, else -1. - */ - findIndex<T>( - array: List<T>, - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): number; - - /** - * @see _.findIndex - */ - findIndex<T>( - array: List<T>, - predicate?: string, - thisArg?: any - ): number; - - /** - * @see _.findIndex - */ - findIndex<W, T>( - array: List<T>, - predicate?: W - ): number; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.findIndex - */ - findIndex( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): number; - - /** - * @see _.findIndex - */ - findIndex( - predicate?: string, - thisArg?: any - ): number; - - /** - * @see _.findIndex - */ - findIndex<W>( - predicate?: W - ): number; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.findIndex - */ - findIndex<TResult>( - predicate?: ListIterator<TResult, boolean>, - thisArg?: any - ): number; - - /** - * @see _.findIndex - */ - findIndex( - predicate?: string, - thisArg?: any - ): number; - - /** - * @see _.findIndex - */ - findIndex<W>( - predicate?: W - ): number; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.findIndex - */ - findIndex( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): LoDashExplicitWrapper<number>; - - /** - * @see _.findIndex - */ - findIndex( - predicate?: string, - thisArg?: any - ): LoDashExplicitWrapper<number>; - - /** - * @see _.findIndex - */ - findIndex<W>( - predicate?: W - ): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.findIndex - */ - findIndex<TResult>( - predicate?: ListIterator<TResult, boolean>, - thisArg?: any - ): LoDashExplicitWrapper<number>; - - /** - * @see _.findIndex - */ - findIndex( - predicate?: string, - thisArg?: any - ): LoDashExplicitWrapper<number>; - - /** - * @see _.findIndex - */ - findIndex<W>( - predicate?: W - ): LoDashExplicitWrapper<number>; - } - - //_.findLastIndex - interface LoDashStatic { - /** - * This method is like _.findIndex except that it iterates over elements of collection from right to left. - * - * If a property name is provided for predicate the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for predicate the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * @param array The array to search. - * @param predicate The function invoked per iteration. - * @param thisArg The function invoked per iteration. - * @return Returns the index of the found element, else -1. - */ - findLastIndex<T>( - array: List<T>, - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): number; - - /** - * @see _.findLastIndex - */ - findLastIndex<T>( - array: List<T>, - predicate?: string, - thisArg?: any - ): number; - - /** - * @see _.findLastIndex - */ - findLastIndex<W, T>( - array: List<T>, - predicate?: W - ): number; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.findLastIndex - */ - findLastIndex( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): number; - - /** - * @see _.findLastIndex - */ - findLastIndex( - predicate?: string, - thisArg?: any - ): number; - - /** - * @see _.findLastIndex - */ - findLastIndex<W>( - predicate?: W - ): number; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.findLastIndex - */ - findLastIndex<TResult>( - predicate?: ListIterator<TResult, boolean>, - thisArg?: any - ): number; - - /** - * @see _.findLastIndex - */ - findLastIndex( - predicate?: string, - thisArg?: any - ): number; - - /** - * @see _.findLastIndex - */ - findLastIndex<W>( - predicate?: W - ): number; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.findLastIndex - */ - findLastIndex( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): LoDashExplicitWrapper<number>; - - /** - * @see _.findLastIndex - */ - findLastIndex( - predicate?: string, - thisArg?: any - ): LoDashExplicitWrapper<number>; - - /** - * @see _.findLastIndex - */ - findLastIndex<W>( - predicate?: W - ): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.findLastIndex - */ - findLastIndex<TResult>( - predicate?: ListIterator<TResult, boolean>, - thisArg?: any - ): LoDashExplicitWrapper<number>; - - /** - * @see _.findLastIndex - */ - findLastIndex( - predicate?: string, - thisArg?: any - ): LoDashExplicitWrapper<number>; - - /** - * @see _.findLastIndex - */ - findLastIndex<W>( - predicate?: W - ): LoDashExplicitWrapper<number>; - } - - //_.first - interface LoDashStatic { - /** - * @see _.head - */ - first<T>(array: List<T>): T; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.head - */ - first(): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.head - */ - first<TResult>(): TResult; - } - - interface RecursiveArray<T> extends Array<T|RecursiveArray<T>> {} - interface ListOfRecursiveArraysOrValues<T> extends List<T|RecursiveArray<T>> {} - - //_.flatMap DUMMY - interface LoDashStatic { - /** - * Creates an array of flattened values by running each element in `array` - * through `iteratee` and concating its result to the other mapped values. - * The iteratee is invoked with three arguments: (value, index|key, array). - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new array. - * @example - * - * function duplicate(n) { - * return [n, n]; - * } - * - * _.flatMap([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ - flatMap( - array: any[]|List<any>, - ...values: any[] - ): any[]; - } - - //_.flatten - interface LoDashStatic { - /** - * Flattens a nested array. If isDeep is true the array is recursively flattened, otherwise it’s only - * flattened a single level. - * - * @param array The array to flatten. - * @param isDeep Specify a deep flatten. - * @return Returns the new flattened array. - */ - flatten<T>(array: ListOfRecursiveArraysOrValues<T>, isDeep: boolean): T[]; - - /** - * @see _.flatten - */ - flatten<T>(array: List<T|T[]>): T[]; - - /** - * @see _.flatten - */ - flatten<T>(array: ListOfRecursiveArraysOrValues<T>): RecursiveArray<T>; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.flatten - */ - flatten(): LoDashImplicitArrayWrapper<string>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.flatten - */ - flatten<TResult>(isDeep?: boolean): LoDashImplicitArrayWrapper<TResult>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.flatten - */ - flatten<TResult>(isDeep?: boolean): LoDashImplicitArrayWrapper<TResult>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.flatten - */ - flatten(): LoDashExplicitArrayWrapper<string>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.flatten - */ - flatten<TResult>(isDeep?: boolean): LoDashExplicitArrayWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.flatten - */ - flatten<TResult>(isDeep?: boolean): LoDashExplicitArrayWrapper<TResult>; - } - - //_.flattenDeep - interface LoDashStatic { - /** - * Recursively flattens a nested array. - * - * @param array The array to recursively flatten. - * @return Returns the new flattened array. - */ - flattenDeep<T>(array: ListOfRecursiveArraysOrValues<T>): T[]; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.flattenDeep - */ - flattenDeep(): LoDashImplicitArrayWrapper<string>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.flattenDeep - */ - flattenDeep<T>(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.flattenDeep - */ - flattenDeep<T>(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.flattenDeep - */ - flattenDeep(): LoDashExplicitArrayWrapper<string>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.flattenDeep - */ - flattenDeep<T>(): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.flattenDeep - */ - flattenDeep<T>(): LoDashExplicitArrayWrapper<T>; - } - - //_.fromPairs DUMMY - interface LoDashStatic { - /** - * The inverse of `_.toPairs`; this method returns an object composed - * from key-value `pairs`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} pairs The key-value pairs. - * @returns {Object} Returns the new object. - * @example - * - * _.fromPairs([['fred', 30], ['barney', 40]]); - * // => { 'fred': 30, 'barney': 40 } - */ - fromPairs( - array: any[]|List<any> - ): any[]; - } - - //_.head - interface LoDashStatic { - /** - * Gets the first element of array. - * - * @alias _.first - * - * @param array The array to query. - * @return Returns the first element of array. - */ - head<T>(array: List<T>): T; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.first - */ - head(): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.first - */ - head<TResult>(): TResult; - } - - //_.indexOf - interface LoDashStatic { - /** - * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it's used as the offset - * from the end of `array`. If `array` is sorted providing `true` for `fromIndex` - * performs a faster binary search. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.indexOf([1, 2, 1, 2], 2); - * // => 1 - * - * // using `fromIndex` - * _.indexOf([1, 2, 1, 2], 2, 2); - * // => 3 - */ - indexOf<T>( - array: List<T>, - value: T, - fromIndex?: boolean|number - ): number; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.indexOf - */ - indexOf( - value: T, - fromIndex?: boolean|number - ): number; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.indexOf - */ - indexOf<TValue>( - value: TValue, - fromIndex?: boolean|number - ): number; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.indexOf - */ - indexOf( - value: T, - fromIndex?: boolean|number - ): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.indexOf - */ - indexOf<TValue>( - value: TValue, - fromIndex?: boolean|number - ): LoDashExplicitWrapper<number>; - } - - //_.intersectionBy DUMMY - interface LoDashStatic { - /** - * This method is like `_.intersection` except that it accepts `iteratee` - * which is invoked for each element of each `arrays` to generate the criterion - * by which uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of shared values. - * @example - * - * _.intersectionBy([2.1, 1.2], [4.3, 2.4], Math.floor); - * // => [2.1] - * - * // using the `_.property` iteratee shorthand - * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }] - */ - intersectionBy( - array: any[]|List<any>, - ...values: any[] - ): any[]; - } - - //_.intersectionWith DUMMY - interface LoDashStatic { - /** - * This method is like `_.intersection` except that it accepts `comparator` - * which is invoked to compare elements of `arrays`. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of shared values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.intersectionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }] - */ - intersectionWith( - array: any[]|List<any>, - ...values: any[] - ): any[]; - } - - //_.join DUMMY - interface LoDashStatic { - /** - * Converts all elements in `array` into a string separated by `separator`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to convert. - * @param {string} [separator=','] The element separator. - * @returns {string} Returns the joined string. - * @example - * - * _.join(['a', 'b', 'c'], '~'); - * // => 'a~b~c' - */ - join( - array: any[]|List<any>, - ...values: any[] - ): any[]; - } - - //_.pullAll DUMMY - interface LoDashStatic { - /** - * This method is like `_.pull` except that it accepts an array of values to remove. - * - * **Note:** Unlike `_.difference`, this method mutates `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3, 1, 2, 3]; - * - * _.pull(array, [2, 3]); - * console.log(array); - * // => [1, 1] - */ - pullAll( - array: any[]|List<any>, - ...values: any[] - ): any[]; - } - - //_.pullAllBy DUMMY - interface LoDashStatic { - /** - * This method is like `_.pullAll` except that it accepts `iteratee` which is - * invoked for each element of `array` and `values` to to generate the criterion - * by which uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * **Note:** Unlike `_.differenceBy`, this method mutates `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns `array`. - * @example - * - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; - * - * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] - */ - pullAllBy( - array: any[]|List<any>, - ...values: any[] - ): any[]; - } - - //_.reverse DUMMY - interface LoDashStatic { - /** - * Reverses `array` so that the first element becomes the last, the second - * element becomes the second to last, and so on. - * - * **Note:** This method mutates `array` and is based on - * [`Array#reverse`](https://mdn.io/Array/reverse). - * - * @memberOf _ - * @category Array - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.reverse(array); - * // => [3, 2, 1] - * - * console.log(array); - * // => [3, 2, 1] - */ - reverse( - array: any[]|List<any>, - ...values: any[] - ): any[]; - } - - //_.sortedIndexOf - interface LoDashStatic { - /** - * This method is like `_.indexOf` except that it performs a binary - * search on a sorted `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.sortedIndexOf([1, 1, 2, 2], 2); - * // => 2 - */ - sortedIndexOf<T>( - array: List<T>, - value: T - ): number; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.sortedIndexOf - */ - sortedIndexOf( - value: T - ): number; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.sortedIndexOf - */ - sortedIndexOf<TValue>( - value: TValue - ): number; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.sortedIndexOf - */ - sortedIndexOf( - value: T - ): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.sortedIndexOf - */ - sortedIndexOf<TValue>( - value: TValue - ): LoDashExplicitWrapper<number>; - } - - //_.initial - interface LoDashStatic { - /** - * Gets all but the last element of array. - * - * @param array The array to query. - * @return Returns the slice of array. - */ - initial<T>(array: List<T>): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.initial - */ - initial(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.initial - */ - initial<T>(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.initial - */ - initial(): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.initial - */ - initial<T>(): LoDashExplicitArrayWrapper<T>; - } - - //_.intersection - interface LoDashStatic { - /** - * Creates an array of unique values that are included in all of the provided arrays using SameValueZero for - * equality comparisons. - * - * @param arrays The arrays to inspect. - * @return Returns the new array of shared values. - */ - intersection<T>(...arrays: (T[]|List<T>)[]): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.intersection - */ - intersection<TResult>(...arrays: (TResult[]|List<TResult>)[]): LoDashImplicitArrayWrapper<TResult>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.intersection - */ - intersection<TResult>(...arrays: (TResult[]|List<TResult>)[]): LoDashImplicitArrayWrapper<TResult>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.intersection - */ - intersection<TResult>(...arrays: (TResult[]|List<TResult>)[]): LoDashExplicitArrayWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.intersection - */ - intersection<TResult>(...arrays: (TResult[]|List<TResult>)[]): LoDashExplicitArrayWrapper<TResult>; - } - - //_.last - interface LoDashStatic { - /** - * Gets the last element of array. - * - * @param array The array to query. - * @return Returns the last element of array. - */ - last<T>(array: List<T>): T; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.last - */ - last(): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.last - */ - last<T>(): T; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.last - */ - last(): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.last - */ - last<T>(): LoDashExplicitObjectWrapper<T>; - } - - //_.lastIndexOf - interface LoDashStatic { - /** - * This method is like _.indexOf except that it iterates over elements of array from right to left. - * - * @param array The array to search. - * @param value The value to search for. - * @param fromIndex The index to search from or true to perform a binary search on a sorted array. - * @return Returns the index of the matched value, else -1. - */ - lastIndexOf<T>( - array: List<T>, - value: T, - fromIndex?: boolean|number - ): number; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.lastIndexOf - */ - lastIndexOf( - value: T, - fromIndex?: boolean|number - ): number; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.lastIndexOf - */ - lastIndexOf<TResult>( - value: TResult, - fromIndex?: boolean|number - ): number; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.lastIndexOf - */ - lastIndexOf( - value: T, - fromIndex?: boolean|number - ): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.lastIndexOf - */ - lastIndexOf<TResult>( - value: TResult, - fromIndex?: boolean|number - ): LoDashExplicitWrapper<number>; - } - - //_.pull - interface LoDashStatic { - /** - * Removes all provided values from array using SameValueZero for equality comparisons. - * - * Note: Unlike _.without, this method mutates array. - * - * @param array The array to modify. - * @param values The values to remove. - * @return Returns array. - */ - pull<T>( - array: T[], - ...values: T[] - ): T[]; - - /** - * @see _.pull - */ - pull<T>( - array: List<T>, - ...values: T[] - ): List<T>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.pull - */ - pull(...values: T[]): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.pull - */ - pull<TValue>(...values: TValue[]): LoDashImplicitObjectWrapper<List<TValue>>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.pull - */ - pull(...values: T[]): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.pull - */ - pull<TValue>(...values: TValue[]): LoDashExplicitObjectWrapper<List<TValue>>; - } - - //_.pullAt - interface LoDashStatic { - /** - * Removes elements from array corresponding to the given indexes and returns an array of the removed elements. - * Indexes may be specified as an array of indexes or as individual arguments. - * - * Note: Unlike _.at, this method mutates array. - * - * @param array The array to modify. - * @param indexes The indexes of elements to remove, specified as individual indexes or arrays of indexes. - * @return Returns the new array of removed elements. - */ - pullAt<T>( - array: List<T>, - ...indexes: (number|number[])[] - ): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.pullAt - */ - pullAt(...indexes: (number|number[])[]): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.pullAt - */ - pullAt<T>(...indexes: (number|number[])[]): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.pullAt - */ - pullAt(...indexes: (number|number[])[]): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.pullAt - */ - pullAt<T>(...indexes: (number|number[])[]): LoDashExplicitArrayWrapper<T>; - } - - //_.remove - interface LoDashStatic { - /** - * Removes all elements from array that predicate returns truthy for and returns an array of the removed - * elements. The predicate is bound to thisArg and invoked with three arguments: (value, index, array). - * - * If a property name is provided for predicate the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for predicate the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * Note: Unlike _.filter, this method mutates array. - * - * @param array The array to modify. - * @param predicate The function invoked per iteration. - * @param thisArg The this binding of predicate. - * @return Returns the new array of removed elements. - */ - remove<T>( - array: List<T>, - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): T[]; - - /** - * @see _.remove - */ - remove<T>( - array: List<T>, - predicate?: string, - thisArg?: any - ): T[]; - - /** - * @see _.remove - */ - remove<W, T>( - array: List<T>, - predicate?: W - ): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.remove - */ - remove( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.remove - */ - remove( - predicate?: string, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.remove - */ - remove<W>( - predicate?: W - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.remove - */ - remove<TResult>( - predicate?: ListIterator<TResult, boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<TResult>; - - /** - * @see _.remove - */ - remove<TResult>( - predicate?: string, - thisArg?: any - ): LoDashImplicitArrayWrapper<TResult>; - - /** - * @see _.remove - */ - remove<W, TResult>( - predicate?: W - ): LoDashImplicitArrayWrapper<TResult>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.remove - */ - remove( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.remove - */ - remove( - predicate?: string, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.remove - */ - remove<W>( - predicate?: W - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.remove - */ - remove<TResult>( - predicate?: ListIterator<TResult, boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<TResult>; - - /** - * @see _.remove - */ - remove<TResult>( - predicate?: string, - thisArg?: any - ): LoDashExplicitArrayWrapper<TResult>; - - /** - * @see _.remove - */ - remove<W, TResult>( - predicate?: W - ): LoDashExplicitArrayWrapper<TResult>; - } - - //_.tail - interface LoDashStatic { - /** - * Gets all but the first element of array. - * - * @alias _.tail - * - * @param array The array to query. - * @return Returns the slice of array. - */ - tail<T>(array: List<T>): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.tail - */ - tail(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.tail - */ - tail<T>(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.tail - */ - tail(): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.tail - */ - tail<T>(): LoDashExplicitArrayWrapper<T>; - } - - //_.slice - interface LoDashStatic { - /** - * Creates a slice of array from start up to, but not including, end. - * - * @param array The array to slice. - * @param start The start position. - * @param end The end position. - * @return Returns the slice of array. - */ - slice<T>( - array: T[], - start?: number, - end?: number - ): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.slice - */ - slice( - start?: number, - end?: number - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.slice - */ - slice( - start?: number, - end?: number - ): LoDashExplicitArrayWrapper<T>; - } - - //_.sortedIndex - interface LoDashStatic { - /** - * Uses a binary search to determine the lowest index at which `value` should - * be inserted into `array` in order to maintain its sort order. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted into `array`. - * @example - * - * _.sortedIndex([30, 50], 40); - * // => 1 - * - * _.sortedIndex([4, 5], 4); - * // => 0 - */ - sortedIndex<T, TSort>( - array: List<T>, - value: T - ): number; - - /** - * @see _.sortedIndex - */ - sortedIndex<T>( - array: List<T>, - value: T - ): number; - - /** - * @see _.sortedIndex - */ - sortedIndex<T>( - array: List<T>, - value: T - ): number; - - /** - * @see _.sortedIndex - */ - sortedIndex<W, T>( - array: List<T>, - value: T - ): number; - - /** - * @see _.sortedIndex - */ - sortedIndex<T>( - array: List<T>, - value: T - ): number; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.sortedIndex - */ - sortedIndex<TSort>( - value: string - ): number; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.sortedIndex - */ - sortedIndex<TSort>( - value: T - ): number; - - /** - * @see _.sortedIndex - */ - sortedIndex( - value: T - ): number; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.sortedIndex - */ - sortedIndex<T, TSort>( - value: T - ): number; - - /** - * @see _.sortedIndex - */ - sortedIndex<T>( - value: T - ): number; - - /** - * @see _.sortedIndex - */ - sortedIndex<W, T>( - value: T - ): number; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.sortedIndex - */ - sortedIndex<TSort>( - value: string - ): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.sortedIndex - */ - sortedIndex<TSort>( - value: T - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedIndex - */ - sortedIndex( - value: T - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedIndex - */ - sortedIndex<W>( - value: T - ): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.sortedIndex - */ - sortedIndex<T, TSort>( - value: T - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedIndex - */ - sortedIndex<T>( - value: T - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedIndex - */ - sortedIndex<W, T>( - value: T - ): LoDashExplicitWrapper<number>; - - - } - - //_.sortedIndexBy - interface LoDashStatic { - /** - * This method is like `_.sortedIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted into `array`. - * @example - * - * var dict = { 'thirty': 30, 'forty': 40, 'fifty': 50 }; - * - * _.sortedIndexBy(['thirty', 'fifty'], 'forty', _.propertyOf(dict)); - * // => 1 - * - * // using the `_.property` iteratee shorthand - * _.sortedIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x'); - * // => 0 - */ - sortedIndexBy<T, TSort>( - array: List<T>, - value: T, - iteratee: (x: T) => TSort - ): number; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<T>( - array: List<T>, - value: T, - iteratee: (x: T) => any - ): number; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<T>( - array: List<T>, - value: T, - iteratee: string - ): number; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<W, T>( - array: List<T>, - value: T, - iteratee: W - ): number; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<T>( - array: List<T>, - value: T, - iteratee: Object - ): number; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<TSort>( - value: string, - iteratee: (x: string) => TSort - ): number; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<TSort>( - value: T, - iteratee: (x: T) => TSort - ): number; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy( - value: T, - iteratee: string - ): number; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<W>( - value: T, - iteratee: W - ): number; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<T, TSort>( - value: T, - iteratee: (x: T) => TSort - ): number; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<T>( - value: T, - iteratee: (x: T) => any - ): number; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<T>( - value: T, - iteratee: string - ): number; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<W, T>( - value: T, - iteratee: W - ): number; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<T>( - value: T, - iteratee: Object - ): number; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<TSort>( - value: string, - iteratee: (x: string) => TSort - ): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<TSort>( - value: T, - iteratee: (x: T) => TSort - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy( - value: T, - iteratee: string - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<W>( - value: T, - iteratee: W - ): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<T, TSort>( - value: T, - iteratee: (x: T) => TSort - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<T>( - value: T, - iteratee: (x: T) => any - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<T>( - value: T, - iteratee: string - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<W, T>( - value: T, - iteratee: W - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedIndexBy - */ - sortedIndexBy<T>( - value: T, - iteratee: Object - ): LoDashExplicitWrapper<number>; - } - - //_.sortedLastIndex - interface LoDashStatic { - /** - * This method is like `_.sortedIndex` except that it returns the highest - * index at which `value` should be inserted into `array` in order to - * maintain its sort order. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted into `array`. - * @example - * - * _.sortedLastIndex([4, 5], 4); - * // => 1 - */ - sortedLastIndex<T, TSort>( - array: List<T>, - value: T - ): number; - - /** - * @see _.sortedLastIndex - */ - sortedLastIndex<T>( - array: List<T>, - value: T - ): number; - - /** - * @see _.sortedLastIndex - */ - sortedLastIndex<T>( - array: List<T>, - value: T - ): number; - - /** - * @see _.sortedLastIndex - */ - sortedLastIndex<W, T>( - array: List<T>, - value: T - ): number; - - /** - * @see _.sortedLastIndex - */ - sortedLastIndex<T>( - array: List<T>, - value: T - ): number; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.sortedLastIndex - */ - sortedLastIndex<TSort>( - value: string - ): number; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.sortedLastIndex - */ - sortedLastIndex<TSort>( - value: T - ): number; - - /** - * @see _.sortedLastIndex - */ - sortedLastIndex( - value: T - ): number; - - /** - * @see _.sortedLastIndex - */ - sortedLastIndex<W>( - value: T - ): number; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.sortedLastIndex - */ - sortedLastIndex<T, TSort>( - value: T - ): number; - - /** - * @see _.sortedLastIndex - */ - sortedLastIndex<T>( - value: T - ): number; - - /** - * @see _.sortedLastIndex - */ - sortedLastIndex<W, T>( - value: T - ): number; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.sortedLastIndex - */ - sortedLastIndex<TSort>( - value: string - ): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.sortedLastIndex - */ - sortedLastIndex<TSort>( - value: T - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedLastIndex - */ - sortedLastIndex( - value: T - ): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.sortedLastIndex - */ - sortedLastIndex<T, TSort>( - value: T - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedLastIndex - */ - sortedLastIndex<T>( - value: T - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedLastIndex - */ - sortedLastIndex<W, T>( - value: T - ): LoDashExplicitWrapper<number>; - } - - //_.sortedLastIndexBy - interface LoDashStatic { - /** - * This method is like `_.sortedLastIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted into `array`. - * @example - * - * // using the `_.property` iteratee shorthand - * _.sortedLastIndexBy([{ 'x': 4 }, { 'x': 5 }], { 'x': 4 }, 'x'); - * // => 1 - */ - sortedLastIndexBy<T, TSort>( - array: List<T>, - value: T, - iteratee: (x: T) => TSort - ): number; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<T>( - array: List<T>, - value: T, - iteratee: (x: T) => any - ): number; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<T>( - array: List<T>, - value: T, - iteratee: string - ): number; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<W, T>( - array: List<T>, - value: T, - iteratee: W - ): number; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<T>( - array: List<T>, - value: T, - iteratee: Object - ): number; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<TSort>( - value: string, - iteratee: (x: string) => TSort - ): number; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<TSort>( - value: T, - iteratee: (x: T) => TSort - ): number; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy( - value: T, - iteratee: string - ): number; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<W>( - value: T, - iteratee: W - ): number; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<T, TSort>( - value: T, - iteratee: (x: T) => TSort - ): number; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<T>( - value: T, - iteratee: (x: T) => any - ): number; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<T>( - value: T, - iteratee: string - ): number; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<W, T>( - value: T, - iteratee: W - ): number; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<T>( - value: T, - iteratee: Object - ): number; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<TSort>( - value: string, - iteratee: (x: string) => TSort - ): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<TSort>( - value: T, - iteratee: (x: T) => TSort - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy( - value: T, - iteratee: string - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<W>( - value: T, - iteratee: W - ): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<T, TSort>( - value: T, - iteratee: (x: T) => TSort - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<T>( - value: T, - iteratee: (x: T) => any - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<T>( - value: T, - iteratee: string - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<W, T>( - value: T, - iteratee: W - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sortedLastIndexBy - */ - sortedLastIndexBy<T>( - value: T, - iteratee: Object - ): LoDashExplicitWrapper<number>; - } - - //_.sortedLastIndexOf DUMMY - interface LoDashStatic { - /** - * This method is like `_.lastIndexOf` except that it performs a binary - * search on a sorted `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.sortedLastIndexOf([1, 1, 2, 2], 2); - * // => 3 - */ - sortedLastIndexOf( - array: any[]|List<any>, - ...values: any[] - ): any[]; - } - - //_.tail - interface LoDashStatic { - /** - * @see _.rest - */ - tail<T>(array: List<T>): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.rest - */ - tail(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.rest - */ - tail<T>(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.rest - */ - tail(): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.rest - */ - tail<T>(): LoDashExplicitArrayWrapper<T>; - } - - //_.take - interface LoDashStatic { - /** - * Creates a slice of array with n elements taken from the beginning. - * - * @param array The array to query. - * @param n The number of elements to take. - * @return Returns the slice of array. - */ - take<T>( - array: List<T>, - n?: number - ): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.take - */ - take(n?: number): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.take - */ - take<TResult>(n?: number): LoDashImplicitArrayWrapper<TResult>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.take - */ - take(n?: number): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.take - */ - take<TResult>(n?: number): LoDashExplicitArrayWrapper<TResult>; - } - - //_.takeRight - interface LoDashStatic { - /** - * Creates a slice of array with n elements taken from the end. - * - * @param array The array to query. - * @param n The number of elements to take. - * @return Returns the slice of array. - */ - takeRight<T>( - array: List<T>, - n?: number - ): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.takeRight - */ - takeRight(n?: number): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.takeRight - */ - takeRight<TResult>(n?: number): LoDashImplicitArrayWrapper<TResult>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.takeRight - */ - takeRight(n?: number): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.takeRight - */ - takeRight<TResult>(n?: number): LoDashExplicitArrayWrapper<TResult>; - } - - //_.takeRightWhile - interface LoDashStatic { - /** - * Creates a slice of array with elements taken from the end. Elements are taken until predicate returns - * falsey. The predicate is bound to thisArg and invoked with three arguments: (value, index, array). - * - * If a property name is provided for predicate the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for predicate the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * @param array The array to query. - * @param predicate The function invoked per iteration. - * @param thisArg The this binding of predicate. - * @return Returns the slice of array. - */ - takeRightWhile<TValue>( - array: List<TValue>, - predicate?: ListIterator<TValue, boolean>, - thisArg?: any - ): TValue[]; - - /** - * @see _.takeRightWhile - */ - takeRightWhile<TValue>( - array: List<TValue>, - predicate?: string, - thisArg?: any - ): TValue[]; - - /** - * @see _.takeRightWhile - */ - takeRightWhile<TWhere, TValue>( - array: List<TValue>, - predicate?: TWhere - ): TValue[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.takeRightWhile - */ - takeRightWhile( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.takeRightWhile - */ - takeRightWhile( - predicate?: string, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.takeRightWhile - */ - takeRightWhile<TWhere>( - predicate?: TWhere - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.takeRightWhile - */ - takeRightWhile<TValue>( - predicate?: ListIterator<TValue, boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<TValue>; - - /** - * @see _.takeRightWhile - */ - takeRightWhile<TValue>( - predicate?: string, - thisArg?: any - ): LoDashImplicitArrayWrapper<TValue>; - - /** - * @see _.takeRightWhile - */ - takeRightWhile<TWhere, TValue>( - predicate?: TWhere - ): LoDashImplicitArrayWrapper<TValue>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.takeRightWhile - */ - takeRightWhile( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.takeRightWhile - */ - takeRightWhile( - predicate?: string, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.takeRightWhile - */ - takeRightWhile<TWhere>( - predicate?: TWhere - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.takeRightWhile - */ - takeRightWhile<TValue>( - predicate?: ListIterator<TValue, boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<TValue>; - - /** - * @see _.takeRightWhile - */ - takeRightWhile<TValue>( - predicate?: string, - thisArg?: any - ): LoDashExplicitArrayWrapper<TValue>; - - /** - * @see _.takeRightWhile - */ - takeRightWhile<TWhere, TValue>( - predicate?: TWhere - ): LoDashExplicitArrayWrapper<TValue>; - } - - //_.takeWhile - interface LoDashStatic { - /** - * Creates a slice of array with elements taken from the beginning. Elements are taken until predicate returns - * falsey. The predicate is bound to thisArg and invoked with three arguments: (value, index, array). - * - * If a property name is provided for predicate the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for predicate the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * @param array The array to query. - * @param predicate The function invoked per iteration. - * @param thisArg The this binding of predicate. - * @return Returns the slice of array. - */ - takeWhile<TValue>( - array: List<TValue>, - predicate?: ListIterator<TValue, boolean>, - thisArg?: any - ): TValue[]; - - /** - * @see _.takeWhile - */ - takeWhile<TValue>( - array: List<TValue>, - predicate?: string, - thisArg?: any - ): TValue[]; - - /** - * @see _.takeWhile - */ - takeWhile<TWhere, TValue>( - array: List<TValue>, - predicate?: TWhere - ): TValue[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.takeWhile - */ - takeWhile( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.takeWhile - */ - takeWhile( - predicate?: string, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.takeWhile - */ - takeWhile<TWhere>( - predicate?: TWhere - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.takeWhile - */ - takeWhile<TValue>( - predicate?: ListIterator<TValue, boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<TValue>; - - /** - * @see _.takeWhile - */ - takeWhile<TValue>( - predicate?: string, - thisArg?: any - ): LoDashImplicitArrayWrapper<TValue>; - - /** - * @see _.takeWhile - */ - takeWhile<TWhere, TValue>( - predicate?: TWhere - ): LoDashImplicitArrayWrapper<TValue>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.takeWhile - */ - takeWhile( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.takeWhile - */ - takeWhile( - predicate?: string, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.takeWhile - */ - takeWhile<TWhere>( - predicate?: TWhere - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.takeWhile - */ - takeWhile<TValue>( - predicate?: ListIterator<TValue, boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<TValue>; - - /** - * @see _.takeWhile - */ - takeWhile<TValue>( - predicate?: string, - thisArg?: any - ): LoDashExplicitArrayWrapper<TValue>; - - /** - * @see _.takeWhile - */ - takeWhile<TWhere, TValue>( - predicate?: TWhere - ): LoDashExplicitArrayWrapper<TValue>; - } - - //_.union - interface LoDashStatic { - /** - * Creates an array of unique values, in order, from all of the provided arrays using SameValueZero for - * equality comparisons. - * - * @param arrays The arrays to inspect. - * @return Returns the new array of combined values. - */ - union<T>(...arrays: List<T>[]): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.union - */ - union(...arrays: List<T>[]): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.union - */ - union<T>(...arrays: List<T>[]): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.union - */ - union<T>(...arrays: List<T>[]): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.union - */ - union(...arrays: List<T>[]): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.union - */ - union<T>(...arrays: List<T>[]): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.union - */ - union<T>(...arrays: List<T>[]): LoDashExplicitArrayWrapper<T>; - } - - //_.uniq - interface LoDashStatic { - /** - * Creates a duplicate-free version of an array, using - * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * for equality comparisons, in which only the first occurrence of each element - * is kept. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniq([2, 1, 2]); - * // => [2, 1] - */ - uniq<T>( - array: List<T> - ): T[]; - - /** - * @see _.uniq - */ - uniq<T, TSort>( - array: List<T> - ): T[]; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.uniq - */ - uniq<TSort>(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.uniq - */ - uniq<TSort>(): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.uniq - */ - uniq(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - uniq<T>(): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.uniq - */ - uniq<T, TSort>(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.uniq - */ - uniq<TSort>(): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.uniq - */ - uniq<TSort>(): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.uniq - */ - uniq(): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.uniq - */ - uniq<T>(): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.uniq - */ - uniq<T, TSort>(): LoDashExplicitArrayWrapper<T>; - } - - //_.uniqBy - interface LoDashStatic { - /** - * This method is like `_.uniq` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to inspect. - * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniqBy([2.1, 1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * // using the `_.property` iteratee shorthand - * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - uniqBy<T>( - array: List<T>, - iteratee: ListIterator<T, any> - ): T[]; - - /** - * @see _.uniqBy - */ - uniqBy<T, TSort>( - array: List<T>, - iteratee: ListIterator<T, TSort> - ): T[]; - - /** - * @see _.uniqBy - */ - uniqBy<T>( - array: List<T>, - iteratee: string - ): T[]; - - /** - * @see _.uniqBy - */ - uniqBy<T>( - array: List<T>, - iteratee: Object - ): T[]; - - /** - * @see _.uniqBy - */ - uniqBy<TWhere extends {}, T>( - array: List<T>, - iteratee: TWhere - ): T[]; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.uniqBy - */ - uniqBy<TSort>( - iteratee: ListIterator<T, TSort> - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.uniqBy - */ - uniqBy<TSort>( - iteratee: ListIterator<T, TSort> - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.uniqBy - */ - uniqBy( - iteratee: string - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.uniqBy - */ - uniqBy<TWhere extends {}>( - iteratee: TWhere - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.uniqBy - */ - uniqBy<T>( - iteratee: ListIterator<T, any> - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.uniqBy - */ - uniqBy<T, TSort>( - iteratee: ListIterator<T, TSort> - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.uniqBy - */ - uniqBy<T>( - iteratee: string - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.uniqBy - */ - uniqBy<T>( - iteratee: Object - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.uniqBy - */ - uniqBy<TWhere extends {}, T>( - iteratee: TWhere - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.uniqBy - */ - uniqBy<TSort>( - iteratee: ListIterator<T, TSort> - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.uniqBy - */ - uniqBy<TSort>( - iteratee: ListIterator<T, TSort> - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.uniqBy - */ - uniqBy( - iteratee: string - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.uniqBy - */ - uniqBy<TWhere extends {}>( - iteratee: TWhere - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.uniqBy - */ - uniqBy<T>( - iteratee: ListIterator<T, any> - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.uniqBy - */ - uniqBy<T, TSort>( - iteratee: ListIterator<T, TSort> - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.uniqBy - */ - uniqBy<T>( - iteratee: string - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.uniqBy - */ - uniqBy<T>( - iteratee: Object - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.uniqBy - */ - uniqBy<TWhere extends {}, T>( - iteratee: TWhere - ): LoDashExplicitArrayWrapper<T>; - } - - //_.sortedUniq - interface LoDashStatic { - /** - * This method is like `_.uniq` except that it's designed and optimized - * for sorted arrays. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.sortedUniq([1, 1, 2]); - * // => [1, 2] - */ - sortedUniq<T>( - array: List<T> - ): T[]; - - /** - * @see _.sortedUniq - */ - sortedUniq<T, TSort>( - array: List<T> - ): T[]; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.sortedUniq - */ - sortedUniq<TSort>(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.sortedUniq - */ - sortedUniq<TSort>(): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortedUniq - */ - sortedUniq(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - sortedUniq<T>(): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortedUniq - */ - sortedUniq<T, TSort>(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.sortedUniq - */ - sortedUniq<TSort>(): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.sortedUniq - */ - sortedUniq<TSort>(): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.sortedUniq - */ - sortedUniq(): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.sortedUniq - */ - sortedUniq<T>(): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.sortedUniq - */ - sortedUniq<T, TSort>(): LoDashExplicitArrayWrapper<T>; - } - - //_.sortedUniqBy - interface LoDashStatic { - /** - * This method is like `_.uniqBy` except that it's designed and optimized - * for sorted arrays. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); - * // => [1.1, 2.2] - */ - sortedUniqBy<T>( - array: List<T>, - iteratee: ListIterator<T, any> - ): T[]; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<T, TSort>( - array: List<T>, - iteratee: ListIterator<T, TSort> - ): T[]; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<T>( - array: List<T>, - iteratee: string - ): T[]; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<T>( - array: List<T>, - iteratee: Object - ): T[]; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<TWhere extends {}, T>( - array: List<T>, - iteratee: TWhere - ): T[]; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<TSort>( - iteratee: ListIterator<T, TSort> - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<TSort>( - iteratee: ListIterator<T, TSort> - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy( - iteratee: string - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<TWhere extends {}>( - iteratee: TWhere - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<T>( - iteratee: ListIterator<T, any> - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<T, TSort>( - iteratee: ListIterator<T, TSort> - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<T>( - iteratee: string - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<T>( - iteratee: Object - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<TWhere extends {}, T>( - iteratee: TWhere - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<TSort>( - iteratee: ListIterator<T, TSort> - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<TSort>( - iteratee: ListIterator<T, TSort> - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy( - iteratee: string - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<TWhere extends {}>( - iteratee: TWhere - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<T>( - iteratee: ListIterator<T, any> - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<T, TSort>( - iteratee: ListIterator<T, TSort> - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<T>( - iteratee: string - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<T>( - iteratee: Object - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.sortedUniqBy - */ - sortedUniqBy<TWhere extends {}, T>( - iteratee: TWhere - ): LoDashExplicitArrayWrapper<T>; - } - - //_.unionBy DUMMY - interface LoDashStatic { - /** - * This method is like `_.union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.unionBy([2.1, 1.2], [4.3, 2.4], Math.floor); - * // => [2.1, 1.2, 4.3] - * - * // using the `_.property` iteratee shorthand - * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - unionBy( - array: any[]|List<any>, - ...values: any[] - ): any[]; - } - - //_.unionWith DUMMY - interface LoDashStatic { - /** - * This method is like `_.union` except that it accepts `comparator` which - * is invoked to compare elements of `arrays`. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of combined values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.unionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ - unionWith( - array: any[]|List<any>, - ...values: any[] - ): any[]; - } - - //_.uniqWith DUMMY - interface LoDashStatic { - /** - * This method is like `_.uniq` except that it accepts `comparator` which - * is invoked to compare elements of `array`. The comparator is invoked with - * two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.uniqWith(objects, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] - */ - uniqWith( - array: any[]|List<any>, - ...values: any[] - ): any[]; - } - - //_.unzip - interface LoDashStatic { - /** - * This method is like _.zip except that it accepts an array of grouped elements and creates an array - * regrouping the elements to their pre-zip configuration. - * - * @param array The array of grouped elements to process. - * @return Returns the new array of regrouped elements. - */ - unzip<T>(array: List<List<T>>): T[][]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.unzip - */ - unzip<T>(): LoDashImplicitArrayWrapper<T[]>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.unzip - */ - unzip<T>(): LoDashImplicitArrayWrapper<T[]>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.unzip - */ - unzip<T>(): LoDashExplicitArrayWrapper<T[]>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.unzip - */ - unzip<T>(): LoDashExplicitArrayWrapper<T[]>; - } - - //_.unzipWith - interface LoDashStatic { - /** - * This method is like _.unzip except that it accepts an iteratee to specify how regrouped values should be - * combined. The iteratee is bound to thisArg and invoked with four arguments: (accumulator, value, index, - * group). - * - * @param array The array of grouped elements to process. - * @param iteratee The function to combine regrouped values. - * @param thisArg The this binding of iteratee. - * @return Returns the new array of regrouped elements. - */ - unzipWith<TArray, TResult>( - array: List<List<TArray>>, - iteratee?: MemoIterator<TArray, TResult>, - thisArg?: any - ): TResult[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.unzipWith - */ - unzipWith<TArr, TResult>( - iteratee?: MemoIterator<TArr, TResult>, - thisArg?: any - ): LoDashImplicitArrayWrapper<TResult>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.unzipWith - */ - unzipWith<TArr, TResult>( - iteratee?: MemoIterator<TArr, TResult>, - thisArg?: any - ): LoDashImplicitArrayWrapper<TResult>; - } - - //_.without - interface LoDashStatic { - /** - * Creates an array excluding all provided values using SameValueZero for equality comparisons. - * - * @param array The array to filter. - * @param values The values to exclude. - * @return Returns the new array of filtered values. - */ - without<T>( - array: List<T>, - ...values: T[] - ): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.without - */ - without(...values: T[]): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.without - */ - without<T>(...values: T[]): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.without - */ - without(...values: T[]): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.without - */ - without<T>(...values: T[]): LoDashExplicitArrayWrapper<T>; - } - - //_.xor - interface LoDashStatic { - /** - * Creates an array of unique values that is the symmetric difference of the provided arrays. - * - * @param arrays The arrays to inspect. - * @return Returns the new array of values. - */ - xor<T>(...arrays: List<T>[]): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.xor - */ - xor(...arrays: List<T>[]): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.xor - */ - xor<T>(...arrays: List<T>[]): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.xor - */ - xor(...arrays: List<T>[]): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.xor - */ - xor<T>(...arrays: List<T>[]): LoDashExplicitArrayWrapper<T>; - } - - //_.xorBy DUMMY - interface LoDashStatic { - /** - * This method is like `_.xor` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by which - * uniqueness is computed. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of values. - * @example - * - * _.xorBy([2.1, 1.2], [4.3, 2.4], Math.floor); - * // => [1.2, 4.3] - * - * // using the `_.property` iteratee shorthand - * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ - xorBy( - array: any[]|List<any>, - ...values: any[] - ): any[]; - } - - //_.xorWith DUMMY - interface LoDashStatic { - /** - * This method is like `_.xor` except that it accepts `comparator` which is - * invoked to compare elements of `arrays`. The comparator is invoked with - * two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.xorWith(objects, others, _.isEqual); - * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ - xorWith( - array: any[]|List<any>, - ...values: any[] - ): any[]; - } - - //_.zip - interface LoDashStatic { - /** - * Creates an array of grouped elements, the first of which contains the first elements of the given arrays, - * the second of which contains the second elements of the given arrays, and so on. - * - * @param arrays The arrays to process. - * @return Returns the new array of grouped elements. - */ - zip<T>(...arrays: List<T>[]): T[][]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.zip - */ - zip<T>(...arrays: List<T>[]): _.LoDashImplicitArrayWrapper<T[]>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.zip - */ - zip<T>(...arrays: List<T>[]): _.LoDashImplicitArrayWrapper<T[]>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.zip - */ - zip<T>(...arrays: List<T>[]): _.LoDashExplicitArrayWrapper<T[]>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.zip - */ - zip<T>(...arrays: List<T>[]): _.LoDashExplicitArrayWrapper<T[]>; - } - - //_.zipObject - interface LoDashStatic { - /** - * The inverse of _.pairs; this method returns an object composed from arrays of property names and values. - * Provide either a single two dimensional array, e.g. [[key1, value1], [key2, value2]] or two arrays, one of - * property names and one of corresponding values. - * - * @param props The property names. - * @param values The property values. - * @return Returns the new object. - */ - zipObject<TValues, TResult extends {}>( - props: List<StringRepresentable>|List<List<any>>, - values?: List<TValues> - ): TResult; - - /** - * @see _.zipObject - */ - zipObject<TResult extends {}>( - props: List<StringRepresentable>|List<List<any>>, - values?: List<any> - ): TResult; - - /** - * @see _.zipObject - */ - zipObject( - props: List<StringRepresentable>|List<List<any>>, - values?: List<any> - ): _.Dictionary<any>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.zipObject - */ - zipObject<TValues, TResult extends {}>( - values?: List<TValues> - ): _.LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.zipObject - */ - zipObject<TResult extends {}>( - values?: List<any> - ): _.LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.zipObject - */ - zipObject( - values?: List<any> - ): _.LoDashImplicitObjectWrapper<_.Dictionary<any>>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.zipObject - */ - zipObject<TValues, TResult extends {}>( - values?: List<TValues> - ): _.LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.zipObject - */ - zipObject<TResult extends {}>( - values?: List<any> - ): _.LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.zipObject - */ - zipObject( - values?: List<any> - ): _.LoDashImplicitObjectWrapper<_.Dictionary<any>>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.zipObject - */ - zipObject<TValues, TResult extends {}>( - values?: List<TValues> - ): _.LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.zipObject - */ - zipObject<TResult extends {}>( - values?: List<any> - ): _.LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.zipObject - */ - zipObject( - values?: List<any> - ): _.LoDashExplicitObjectWrapper<_.Dictionary<any>>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.zipObject - */ - zipObject<TValues, TResult extends {}>( - values?: List<TValues> - ): _.LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.zipObject - */ - zipObject<TResult extends {}>( - values?: List<any> - ): _.LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.zipObject - */ - zipObject( - values?: List<any> - ): _.LoDashExplicitObjectWrapper<_.Dictionary<any>>; - } - - //_.zipWith - interface LoDashStatic { - /** - * This method is like _.zip except that it accepts an iteratee to specify how grouped values should be - * combined. The iteratee is bound to thisArg and invoked with four arguments: (accumulator, value, index, - * group). - * @param {...Array} [arrays] The arrays to process. - * @param {Function} [iteratee] The function to combine grouped values. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @return Returns the new array of grouped elements. - */ - zipWith<TResult>(...args: any[]): TResult[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.zipWith - */ - zipWith<TResult>(...args: any[]): LoDashImplicitArrayWrapper<TResult>; - } - - /********* - * Chain * - *********/ - - //_.chain - interface LoDashStatic { - /** - * Creates a lodash object that wraps value with explicit method chaining enabled. - * - * @param value The value to wrap. - * @return Returns the new lodash wrapper instance. - */ - chain(value: number): LoDashExplicitWrapper<number>; - chain(value: string): LoDashExplicitWrapper<string>; - chain(value: boolean): LoDashExplicitWrapper<boolean>; - chain<T>(value: T[]): LoDashExplicitArrayWrapper<T>; - chain<T extends {}>(value: T): LoDashExplicitObjectWrapper<T>; - chain(value: any): LoDashExplicitWrapper<any>; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.chain - */ - chain(): LoDashExplicitWrapper<T>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.chain - */ - chain(): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.chain - */ - chain(): LoDashExplicitObjectWrapper<T>; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.chain - */ - chain(): TWrapper; - } - - //_.tap - interface LoDashStatic { - /** - * This method invokes interceptor and returns value. The interceptor is bound to thisArg and invoked with one - * argument; (value). The purpose of this method is to "tap into" a method chain in order to perform operations - * on intermediate results within the chain. - * - * @param value The value to provide to interceptor. - * @param interceptor The function to invoke. - * @parem thisArg The this binding of interceptor. - * @return Returns value. - **/ - tap<T>( - value: T, - interceptor: (value: T) => void, - thisArg?: any - ): T; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.tap - */ - tap( - interceptor: (value: T) => void, - thisArg?: any - ): TWrapper; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.tap - */ - tap( - interceptor: (value: T) => void, - thisArg?: any - ): TWrapper; - } - - //_.thru - interface LoDashStatic { - /** - * This method is like _.tap except that it returns the result of interceptor. - * - * @param value The value to provide to interceptor. - * @param interceptor The function to invoke. - * @param thisArg The this binding of interceptor. - * @return Returns the result of interceptor. - */ - thru<T, TResult>( - value: T, - interceptor: (value: T) => TResult, - thisArg?: any - ): TResult; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.thru - */ - thru<TResult extends number>( - interceptor: (value: T) => TResult, - thisArg?: any): LoDashImplicitWrapper<TResult>; - - /** - * @see _.thru - */ - thru<TResult extends string>( - interceptor: (value: T) => TResult, - thisArg?: any): LoDashImplicitWrapper<TResult>; - - /** - * @see _.thru - */ - thru<TResult extends boolean>( - interceptor: (value: T) => TResult, - thisArg?: any): LoDashImplicitWrapper<TResult>; - - /** - * @see _.thru - */ - thru<TResult extends {}>( - interceptor: (value: T) => TResult, - thisArg?: any): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.thru - */ - thru<TResult>( - interceptor: (value: T) => TResult[], - thisArg?: any): LoDashImplicitArrayWrapper<TResult>; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.thru - */ - thru<TResult extends number>( - interceptor: (value: T) => TResult, - thisArg?: any - ): LoDashExplicitWrapper<TResult>; - - /** - * @see _.thru - */ - thru<TResult extends string>( - interceptor: (value: T) => TResult, - thisArg?: any - ): LoDashExplicitWrapper<TResult>; - - /** - * @see _.thru - */ - thru<TResult extends boolean>( - interceptor: (value: T) => TResult, - thisArg?: any - ): LoDashExplicitWrapper<TResult>; - - /** - * @see _.thru - */ - thru<TResult extends {}>( - interceptor: (value: T) => TResult, - thisArg?: any - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.thru - */ - thru<TResult>( - interceptor: (value: T) => TResult[], - thisArg?: any - ): LoDashExplicitArrayWrapper<TResult>; - } - - //_.prototype.commit - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * Executes the chained sequence and returns the wrapped result. - * - * @return Returns the new lodash wrapper instance. - */ - commit(): TWrapper; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.commit - */ - commit(): TWrapper; - } - - //_.prototype.concat - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * Creates a new array joining a wrapped array with any additional arrays and/or values. - * - * @param items - * @return Returns the new concatenated array. - */ - concat<TItem>(...items: Array<TItem|Array<TItem>>): LoDashImplicitArrayWrapper<TItem>; - - /** - * @see _.concat - */ - concat(...items: Array<T|Array<T>>): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.concat - */ - concat<TItem>(...items: Array<TItem|Array<TItem>>): LoDashExplicitArrayWrapper<TItem>; - - /** - * @see _.concat - */ - concat(...items: Array<T|Array<T>>): LoDashExplicitArrayWrapper<T>; - } - - //_.prototype.plant - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * Creates a clone of the chained sequence planting value as the wrapped value. - * @param value The value to plant as the wrapped value. - * @return Returns the new lodash wrapper instance. - */ - plant(value: number): LoDashImplicitWrapper<number>; - - /** - * @see _.plant - */ - plant(value: string): LoDashImplicitStringWrapper; - - /** - * @see _.plant - */ - plant(value: boolean): LoDashImplicitWrapper<boolean>; - - /** - * @see _.plant - */ - plant(value: number[]): LoDashImplicitNumberArrayWrapper; - - /** - * @see _.plant - */ - plant<T>(value: T[]): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.plant - */ - plant<T extends {}>(value: T): LoDashImplicitObjectWrapper<T>; - - /** - * @see _.plant - */ - plant(value: any): LoDashImplicitWrapper<any>; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.plant - */ - plant(value: number): LoDashExplicitWrapper<number>; - - /** - * @see _.plant - */ - plant(value: string): LoDashExplicitStringWrapper; - - /** - * @see _.plant - */ - plant(value: boolean): LoDashExplicitWrapper<boolean>; - - /** - * @see _.plant - */ - plant(value: number[]): LoDashExplicitNumberArrayWrapper; - - /** - * @see _.plant - */ - plant<T>(value: T[]): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.plant - */ - plant<T extends {}>(value: T): LoDashExplicitObjectWrapper<T>; - - /** - * @see _.plant - */ - plant(value: any): LoDashExplicitWrapper<any>; - } - - //_.prototype.reverse - interface LoDashImplicitArrayWrapper<T> { - /** - * Reverses the wrapped array so the first element becomes the last, the second element becomes the second to - * last, and so on. - * - * Note: This method mutates the wrapped array. - * - * @return Returns the new reversed lodash wrapper instance. - */ - reverse(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.reverse - */ - reverse(): LoDashExplicitArrayWrapper<T>; - } - - //_.prototype.toJSON - interface LoDashWrapperBase<T, TWrapper> { - /** - * @see _.value - */ - toJSON(): T; - } - - //_.prototype.toString - interface LoDashWrapperBase<T, TWrapper> { - /** - * Produces the result of coercing the unwrapped value to a string. - * - * @return Returns the coerced string value. - */ - toString(): string; - } - - //_.prototype.value - interface LoDashWrapperBase<T, TWrapper> { - /** - * Executes the chained sequence to extract the unwrapped value. - * - * @alias _.toJSON, _.valueOf - * - * @return Returns the resolved unwrapped value. - */ - value(): T; - } - - //_.valueOf - interface LoDashWrapperBase<T, TWrapper> { - /** - * @see _.value - */ - valueOf(): T; - } - - /************** - * Collection * - **************/ - - //_.at - interface LoDashStatic { - /** - * Creates an array of elements corresponding to the given keys, or indexes, of collection. Keys may be - * specified as individual arguments or as arrays of keys. - * - * @param collection The collection to iterate over. - * @param props The property names or indexes of elements to pick, specified individually or in arrays. - * @return Returns the new array of picked elements. - */ - at<T>( - collection: List<T>|Dictionary<T>, - ...props: (number|string|(number|string)[])[] - ): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.at - */ - at(...props: (number|string|(number|string)[])[]): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.at - */ - at<T>(...props: (number|string|(number|string)[])[]): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.at - */ - at(...props: (number|string|(number|string)[])[]): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.at - */ - at<T>(...props: (number|string|(number|string)[])[]): LoDashExplicitArrayWrapper<T>; - } - - //_.countBy - interface LoDashStatic { - /** - * Creates an object composed of keys generated from the results of running each element of collection through - * iteratee. The corresponding value of each key is the number of times the key was returned by iteratee. The - * iteratee is bound to thisArg and invoked with three arguments: - * (value, index|key, collection). - * - * If a property name is provided for iteratee the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for iteratee the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * @param collection The collection to iterate over. - * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. - * @return Returns the composed aggregate object. - */ - countBy<T>( - collection: List<T>, - iteratee?: ListIterator<T, any>, - thisArg?: any - ): Dictionary<number>; - - /** - * @see _.countBy - */ - countBy<T>( - collection: Dictionary<T>, - iteratee?: DictionaryIterator<T, any>, - thisArg?: any - ): Dictionary<number>; - - /** - * @see _.countBy - */ - countBy<T>( - collection: NumericDictionary<T>, - iteratee?: NumericDictionaryIterator<T, any>, - thisArg?: any - ): Dictionary<number>; - - /** - * @see _.countBy - */ - countBy<T>( - collection: List<T>|Dictionary<T>|NumericDictionary<T>, - iteratee?: string, - thisArg?: any - ): Dictionary<number>; - - /** - * @see _.countBy - */ - countBy<W, T>( - collection: List<T>|Dictionary<T>|NumericDictionary<T>, - iteratee?: W - ): Dictionary<number>; - - /** - * @see _.countBy - */ - countBy<T>( - collection: List<T>|Dictionary<T>|NumericDictionary<T>, - iteratee?: Object - ): Dictionary<number>; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.countBy - */ - countBy( - iteratee?: ListIterator<T, any>, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<number>>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.countBy - */ - countBy( - iteratee?: ListIterator<T, any>, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<number>>; - - /** - * @see _.countBy - */ - countBy( - iteratee?: string, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<number>>; - - /** - * @see _.countBy - */ - countBy<W>( - iteratee?: W - ): LoDashImplicitObjectWrapper<Dictionary<number>>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.countBy - */ - countBy<T>( - iteratee?: ListIterator<T, any>|DictionaryIterator<T, any>|NumericDictionaryIterator<T, any>, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<number>>; - - /** - * @see _.countBy - */ - countBy( - iteratee?: string, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<number>>; - - /** - * @see _.countBy - */ - countBy<W>( - iteratee?: W - ): LoDashImplicitObjectWrapper<Dictionary<number>>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.countBy - */ - countBy( - iteratee?: ListIterator<T, any>, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<number>>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.countBy - */ - countBy( - iteratee?: ListIterator<T, any>, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<number>>; - - /** - * @see _.countBy - */ - countBy( - iteratee?: string, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<number>>; - - /** - * @see _.countBy - */ - countBy<W>( - iteratee?: W - ): LoDashExplicitObjectWrapper<Dictionary<number>>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.countBy - */ - countBy<T>( - iteratee?: ListIterator<T, any>|DictionaryIterator<T, any>|NumericDictionaryIterator<T, any>, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<number>>; - - /** - * @see _.countBy - */ - countBy( - iteratee?: string, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<number>>; - - /** - * @see _.countBy - */ - countBy<W>( - iteratee?: W - ): LoDashExplicitObjectWrapper<Dictionary<number>>; - } - - //_.each - interface LoDashStatic { - /** - * @see _.forEach - */ - each<T>( - collection: T[], - iteratee?: ListIterator<T, any>, - thisArg?: any - ): T[]; - - /** - * @see _.forEach - */ - each<T>( - collection: List<T>, - iteratee?: ListIterator<T, any>, - thisArg?: any - ): List<T>; - - /** - * @see _.forEach - */ - each<T>( - collection: Dictionary<T>, - iteratee?: DictionaryIterator<T, any>, - thisArg?: any - ): Dictionary<T>; - - /** - * @see _.forEach - */ - each<T extends {}>( - collection: T, - iteratee?: ObjectIterator<any, any>, - thisArgs?: any - ): T; - - /** - * @see _.forEach - */ - each<T extends {}, TValue>( - collection: T, - iteratee?: ObjectIterator<TValue, any>, - thisArgs?: any - ): T; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.forEach - */ - each( - iteratee: ListIterator<string, any>, - thisArg?: any - ): LoDashImplicitWrapper<string>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.forEach - */ - each( - iteratee: ListIterator<T, any>, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.forEach - */ - each<TValue>( - iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>, - thisArg?: any - ): LoDashImplicitObjectWrapper<T>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.forEach - */ - each( - iteratee: ListIterator<string, any>, - thisArg?: any - ): LoDashExplicitWrapper<string>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.forEach - */ - each( - iteratee: ListIterator<T, any>, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.forEach - */ - each<TValue>( - iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>, - thisArg?: any - ): LoDashExplicitObjectWrapper<T>; - } - - //_.eachRight - interface LoDashStatic { - /** - * @see _.forEachRight - */ - eachRight<T>( - collection: T[], - iteratee?: ListIterator<T, any>, - thisArg?: any - ): T[]; - - /** - * @see _.forEachRight - */ - eachRight<T>( - collection: List<T>, - iteratee?: ListIterator<T, any>, - thisArg?: any - ): List<T>; - - /** - * @see _.forEachRight - */ - eachRight<T>( - collection: Dictionary<T>, - iteratee?: DictionaryIterator<T, any>, - thisArg?: any - ): Dictionary<T>; - - /** - * @see _.forEachRight - */ - eachRight<T extends {}>( - collection: T, - iteratee?: ObjectIterator<any, any>, - thisArgs?: any - ): T; - - /** - * @see _.forEachRight - */ - eachRight<T extends {}, TValue>( - collection: T, - iteratee?: ObjectIterator<TValue, any>, - thisArgs?: any - ): T; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.forEachRight - */ - eachRight( - iteratee: ListIterator<string, any>, - thisArg?: any - ): LoDashImplicitWrapper<string>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.forEachRight - */ - eachRight( - iteratee: ListIterator<T, any>, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.forEachRight - */ - eachRight<TValue>( - iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>, - thisArg?: any - ): LoDashImplicitObjectWrapper<T>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.forEachRight - */ - eachRight( - iteratee: ListIterator<string, any>, - thisArg?: any - ): LoDashExplicitWrapper<string>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.forEachRight - */ - eachRight( - iteratee: ListIterator<T, any>, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.forEachRight - */ - eachRight<TValue>( - iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>, - thisArg?: any - ): LoDashExplicitObjectWrapper<T>; - } - - //_.every - interface LoDashStatic { - /** - * Checks if predicate returns truthy for all elements of collection. The predicate is bound to thisArg and - * invoked with three arguments: (value, index|key, collection). - * - * If a property name is provided for predicate the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for predicate the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * @param collection The collection to iterate over. - * @param predicate The function invoked per iteration. - * @param thisArg The this binding of predicate. - * @return Returns true if all elements pass the predicate check, else false. - */ - every<T>( - collection: List<T>, - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): boolean; - - /** - * @see _.every - */ - every<T>( - collection: Dictionary<T>, - predicate?: DictionaryIterator<T, boolean>, - thisArg?: any - ): boolean; - - /** - * @see _.every - */ - every<T>( - collection: List<T>|Dictionary<T>, - predicate?: string, - thisArg?: any - ): boolean; - - /** - * @see _.every - */ - every<TObject extends {}, T>( - collection: List<T>|Dictionary<T>, - predicate?: TObject - ): boolean; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.every - */ - every( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): boolean; - - /** - * @see _.every - */ - every( - predicate?: string, - thisArg?: any - ): boolean; - - /** - * @see _.every - */ - every<TObject extends {}>( - predicate?: TObject - ): boolean; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.every - */ - every<TResult>( - predicate?: ListIterator<TResult, boolean>|DictionaryIterator<TResult, boolean>, - thisArg?: any - ): boolean; - - /** - * @see _.every - */ - every( - predicate?: string, - thisArg?: any - ): boolean; - - /** - * @see _.every - */ - every<TObject extends {}>( - predicate?: TObject - ): boolean; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.every - */ - every( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): LoDashExplicitWrapper<boolean>; - - /** - * @see _.every - */ - every( - predicate?: string, - thisArg?: any - ): LoDashExplicitWrapper<boolean>; - - /** - * @see _.every - */ - every<TObject extends {}>( - predicate?: TObject - ): LoDashExplicitWrapper<boolean>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.every - */ - every<TResult>( - predicate?: ListIterator<TResult, boolean>|DictionaryIterator<TResult, boolean>, - thisArg?: any - ): LoDashExplicitWrapper<boolean>; - - /** - * @see _.every - */ - every( - predicate?: string, - thisArg?: any - ): LoDashExplicitWrapper<boolean>; - - /** - * @see _.every - */ - every<TObject extends {}>( - predicate?: TObject - ): LoDashExplicitWrapper<boolean>; - } - - //_.filter - interface LoDashStatic { - /** - * Iterates over elements of collection, returning an array of all elements predicate returns truthy for. The - * predicate is bound to thisArg and invoked with three arguments: (value, index|key, collection). - * - * If a property name is provided for predicate the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for predicate the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * @param collection The collection to iterate over. - * @param predicate The function invoked per iteration. - * @param thisArg The this binding of predicate. - * @return Returns the new filtered array. - */ - filter<T>( - collection: List<T>, - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): T[]; - - /** - * @see _.filter - */ - filter<T>( - collection: Dictionary<T>, - predicate?: DictionaryIterator<T, boolean>, - thisArg?: any - ): T[]; - - /** - * @see _.filter - */ - filter( - collection: string, - predicate?: StringIterator<boolean>, - thisArg?: any - ): string[]; - - /** - * @see _.filter - */ - filter<T>( - collection: List<T>|Dictionary<T>, - predicate: string, - thisArg?: any - ): T[]; - - /** - * @see _.filter - */ - filter<W extends {}, T>( - collection: List<T>|Dictionary<T>, - predicate: W - ): T[]; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.filter - */ - filter( - predicate?: StringIterator<boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<string>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.filter - */ - filter( - predicate: ListIterator<T, boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.filter - */ - filter( - predicate: string, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.filter - */ - filter<W>(predicate: W): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.filter - */ - filter<T>( - predicate: ListIterator<T, boolean>|DictionaryIterator<T, boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.filter - */ - filter<T>( - predicate: string, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.filter - */ - filter<W, T>(predicate: W): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.filter - */ - filter( - predicate?: StringIterator<boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<string>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.filter - */ - filter( - predicate: ListIterator<T, boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.filter - */ - filter( - predicate: string, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.filter - */ - filter<W>(predicate: W): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.filter - */ - filter<T>( - predicate: ListIterator<T, boolean>|DictionaryIterator<T, boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.filter - */ - filter<T>( - predicate: string, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.filter - */ - filter<W, T>(predicate: W): LoDashExplicitArrayWrapper<T>; - } - - //_.find - interface LoDashStatic { - /** - * Iterates over elements of collection, returning the first element predicate returns truthy for. - * The predicate is bound to thisArg and invoked with three arguments: (value, index|key, collection). - * - * If a property name is provided for predicate the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for predicate the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * @param collection The collection to search. - * @param predicate The function invoked per iteration. - * @param thisArg The this binding of predicate. - * @return Returns the matched element, else undefined. - */ - find<T>( - collection: List<T>, - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): T; - - /** - * @see _.find - */ - find<T>( - collection: Dictionary<T>, - predicate?: DictionaryIterator<T, boolean>, - thisArg?: any - ): T; - - /** - * @see _.find - */ - find<T>( - collection: List<T>|Dictionary<T>, - predicate?: string, - thisArg?: any - ): T; - - /** - * @see _.find - */ - find<TObject extends {}, T>( - collection: List<T>|Dictionary<T>, - predicate?: TObject - ): T; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.find - */ - find( - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): T; - - /** - * @see _.find - */ - find( - predicate?: string, - thisArg?: any - ): T; - - /** - * @see _.find - */ - find<TObject extends {}>( - predicate?: TObject - ): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.find - */ - find<TResult>( - predicate?: ListIterator<TResult, boolean>|DictionaryIterator<TResult, boolean>, - thisArg?: any - ): TResult; - - /** - * @see _.find - */ - find<TResult>( - predicate?: string, - thisArg?: any - ): TResult; - - /** - * @see _.find - */ - find<TObject extends {}, TResult>( - predicate?: TObject - ): TResult; - } - - //_.findLast - interface LoDashStatic { - /** - * This method is like _.find except that it iterates over elements of a collection from - * right to left. - * @param collection Searches for a value in this list. - * @param callback The function called per iteration. - * @param thisArg The this binding of callback. - * @return The found element, else undefined. - **/ - findLast<T>( - collection: Array<T>, - callback: ListIterator<T, boolean>, - thisArg?: any): T; - - /** - * @see _.find - **/ - findLast<T>( - collection: List<T>, - callback: ListIterator<T, boolean>, - thisArg?: any): T; - - /** - * @see _.find - **/ - findLast<T>( - collection: Dictionary<T>, - callback: DictionaryIterator<T, boolean>, - thisArg?: any): T; - - /** - * @see _.find - * @param _.pluck style callback - **/ - findLast<W, T>( - collection: Array<T>, - whereValue: W): T; - - /** - * @see _.find - * @param _.pluck style callback - **/ - findLast<W, T>( - collection: List<T>, - whereValue: W): T; - - /** - * @see _.find - * @param _.pluck style callback - **/ - findLast<W, T>( - collection: Dictionary<T>, - whereValue: W): T; - - /** - * @see _.find - * @param _.where style callback - **/ - findLast<T>( - collection: Array<T>, - pluckValue: string): T; - - /** - * @see _.find - * @param _.where style callback - **/ - findLast<T>( - collection: List<T>, - pluckValue: string): T; - - /** - * @see _.find - * @param _.where style callback - **/ - findLast<T>( - collection: Dictionary<T>, - pluckValue: string): T; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.findLast - */ - findLast( - callback: ListIterator<T, boolean>, - thisArg?: any): T; - /** - * @see _.findLast - * @param _.where style callback - */ - findLast<W>( - whereValue: W): T; - - /** - * @see _.findLast - * @param _.where style callback - */ - findLast( - pluckValue: string): T; - } - - //_.forEach - interface LoDashStatic { - /** - * Iterates over elements of collection invoking iteratee for each element. The iteratee is bound to thisArg - * and invoked with three arguments: - * (value, index|key, collection). Iteratee functions may exit iteration early by explicitly returning false. - * - * Note: As with other "Collections" methods, objects with a "length" property are iterated like arrays. To - * avoid this behavior _.forIn or _.forOwn may be used for object iteration. - * - * @alias _.each - * - * @param collection The collection to iterate over. - * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. - */ - forEach<T>( - collection: T[], - iteratee?: ListIterator<T, any>, - thisArg?: any - ): T[]; - - /** - * @see _.forEach - */ - forEach<T>( - collection: List<T>, - iteratee?: ListIterator<T, any>, - thisArg?: any - ): List<T>; - - /** - * @see _.forEach - */ - forEach<T>( - collection: Dictionary<T>, - iteratee?: DictionaryIterator<T, any>, - thisArg?: any - ): Dictionary<T>; - - /** - * @see _.forEach - */ - forEach<T extends {}>( - collection: T, - iteratee?: ObjectIterator<any, any>, - thisArgs?: any - ): T; - - /** - * @see _.forEach - */ - forEach<T extends {}, TValue>( - collection: T, - iteratee?: ObjectIterator<TValue, any>, - thisArgs?: any - ): T; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.forEach - */ - forEach( - iteratee: ListIterator<string, any>, - thisArg?: any - ): LoDashImplicitWrapper<string>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.forEach - */ - forEach( - iteratee: ListIterator<T, any>, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.forEach - */ - forEach<TValue>( - iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>, - thisArg?: any - ): LoDashImplicitObjectWrapper<T>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.forEach - */ - forEach( - iteratee: ListIterator<string, any>, - thisArg?: any - ): LoDashExplicitWrapper<string>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.forEach - */ - forEach( - iteratee: ListIterator<T, any>, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.forEach - */ - forEach<TValue>( - iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>, - thisArg?: any - ): LoDashExplicitObjectWrapper<T>; - } - - //_.forEachRight - interface LoDashStatic { - /** - * This method is like _.forEach except that it iterates over elements of collection from right to left. - * - * @alias _.eachRight - * - * @param collection The collection to iterate over. - * @param iteratee The function called per iteration. - * @param thisArg The this binding of callback. - */ - forEachRight<T>( - collection: T[], - iteratee?: ListIterator<T, any>, - thisArg?: any - ): T[]; - - /** - * @see _.forEachRight - */ - forEachRight<T>( - collection: List<T>, - iteratee?: ListIterator<T, any>, - thisArg?: any - ): List<T>; - - /** - * @see _.forEachRight - */ - forEachRight<T>( - collection: Dictionary<T>, - iteratee?: DictionaryIterator<T, any>, - thisArg?: any - ): Dictionary<T>; - - /** - * @see _.forEachRight - */ - forEachRight<T extends {}>( - collection: T, - iteratee?: ObjectIterator<any, any>, - thisArgs?: any - ): T; - - /** - * @see _.forEachRight - */ - forEachRight<T extends {}, TValue>( - collection: T, - iteratee?: ObjectIterator<TValue, any>, - thisArgs?: any - ): T; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.forEachRight - */ - forEachRight( - iteratee: ListIterator<string, any>, - thisArg?: any - ): LoDashImplicitWrapper<string>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.forEachRight - */ - forEachRight( - iteratee: ListIterator<T, any>, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.forEachRight - */ - forEachRight<TValue>( - iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>, - thisArg?: any - ): LoDashImplicitObjectWrapper<T>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.forEachRight - */ - forEachRight( - iteratee: ListIterator<string, any>, - thisArg?: any - ): LoDashExplicitWrapper<string>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.forEachRight - */ - forEachRight( - iteratee: ListIterator<T, any>, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.forEachRight - */ - forEachRight<TValue>( - iteratee?: ListIterator<TValue, any>|DictionaryIterator<TValue, any>, - thisArg?: any - ): LoDashExplicitObjectWrapper<T>; - } - - //_.groupBy - interface LoDashStatic { - /** - * Creates an object composed of keys generated from the results of running each element of collection through - * iteratee. The corresponding value of each key is an array of the elements responsible for generating the - * key. The iteratee is bound to thisArg and invoked with three arguments: - * (value, index|key, collection). - * - * If a property name is provided for iteratee the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for iteratee the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * @param collection The collection to iterate over. - * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. - * @return Returns the composed aggregate object. - */ - groupBy<T, TKey>( - collection: List<T>, - iteratee?: ListIterator<T, TKey>, - thisArg?: any - ): Dictionary<T[]>; - - /** - * @see _.groupBy - */ - groupBy<T>( - collection: List<any>, - iteratee?: ListIterator<T, any>, - thisArg?: any - ): Dictionary<T[]>; - - /** - * @see _.groupBy - */ - groupBy<T, TKey>( - collection: Dictionary<T>, - iteratee?: DictionaryIterator<T, TKey>, - thisArg?: any - ): Dictionary<T[]>; - - /** - * @see _.groupBy - */ - groupBy<T>( - collection: Dictionary<any>, - iteratee?: DictionaryIterator<T, any>, - thisArg?: any - ): Dictionary<T[]>; - - /** - * @see _.groupBy - */ - groupBy<T, TValue>( - collection: List<T>|Dictionary<T>, - iteratee?: string, - thisArg?: TValue - ): Dictionary<T[]>; - - /** - * @see _.groupBy - */ - groupBy<T>( - collection: List<T>|Dictionary<T>, - iteratee?: string, - thisArg?: any - ): Dictionary<T[]>; - - /** - * @see _.groupBy - */ - groupBy<TWhere, T>( - collection: List<T>|Dictionary<T>, - iteratee?: TWhere - ): Dictionary<T[]>; - - /** - * @see _.groupBy - */ - groupBy<T>( - collection: List<T>|Dictionary<T>, - iteratee?: Object - ): Dictionary<T[]>; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.groupBy - */ - groupBy<TKey>( - iteratee?: ListIterator<T, TKey>, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<T[]>>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.groupBy - */ - groupBy<TKey>( - iteratee?: ListIterator<T, TKey>, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<T[]>>; - - /** - * @see _.groupBy - */ - groupBy<TValue>( - iteratee?: string, - thisArg?: TValue - ): LoDashImplicitObjectWrapper<Dictionary<T[]>>; - - /** - * @see _.groupBy - */ - groupBy<TWhere>( - iteratee?: TWhere - ): LoDashImplicitObjectWrapper<Dictionary<T[]>>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.groupBy - */ - groupBy<T, TKey>( - iteratee?: ListIterator<T, TKey>|DictionaryIterator<T, TKey>, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<T[]>>; - - /** - * @see _.groupBy - */ - groupBy<T>( - iteratee?: ListIterator<T, any>|DictionaryIterator<T, any>, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<T[]>>; - - /** - * @see _.groupBy - */ - groupBy<T, TValue>( - iteratee?: string, - thisArg?: TValue - ): LoDashImplicitObjectWrapper<Dictionary<T[]>>; - - /** - * @see _.groupBy - */ - groupBy<T>( - iteratee?: string, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<T[]>>; - - /** - * @see _.groupBy - */ - groupBy<TWhere, T>( - iteratee?: TWhere - ): LoDashImplicitObjectWrapper<Dictionary<T[]>>; - - /** - * @see _.groupBy - */ - groupBy<T>( - iteratee?: Object - ): LoDashImplicitObjectWrapper<Dictionary<T[]>>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.groupBy - */ - groupBy<TKey>( - iteratee?: ListIterator<T, TKey>, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<T[]>>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.groupBy - */ - groupBy<TKey>( - iteratee?: ListIterator<T, TKey>, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<T[]>>; - - /** - * @see _.groupBy - */ - groupBy<TValue>( - iteratee?: string, - thisArg?: TValue - ): LoDashExplicitObjectWrapper<Dictionary<T[]>>; - - /** - * @see _.groupBy - */ - groupBy<TWhere>( - iteratee?: TWhere - ): LoDashExplicitObjectWrapper<Dictionary<T[]>>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.groupBy - */ - groupBy<T, TKey>( - iteratee?: ListIterator<T, TKey>|DictionaryIterator<T, TKey>, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<T[]>>; - - /** - * @see _.groupBy - */ - groupBy<T>( - iteratee?: ListIterator<T, any>|DictionaryIterator<T, any>, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<T[]>>; - - /** - * @see _.groupBy - */ - groupBy<T, TValue>( - iteratee?: string, - thisArg?: TValue - ): LoDashExplicitObjectWrapper<Dictionary<T[]>>; - - /** - * @see _.groupBy - */ - groupBy<T>( - iteratee?: string, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<T[]>>; - - /** - * @see _.groupBy - */ - groupBy<TWhere, T>( - iteratee?: TWhere - ): LoDashExplicitObjectWrapper<Dictionary<T[]>>; - - /** - * @see _.groupBy - */ - groupBy<T>( - iteratee?: Object - ): LoDashExplicitObjectWrapper<Dictionary<T[]>>; - } - - //_.includes - interface LoDashStatic { - /** - * Checks if target is in collection using SameValueZero for equality comparisons. If fromIndex is negative, - * it’s used as the offset from the end of collection. - * - * @param collection The collection to search. - * @param target The value to search for. - * @param fromIndex The index to search from. - * @return True if the target element is found, else false. - */ - includes<T>( - collection: List<T>|Dictionary<T>, - target: T, - fromIndex?: number - ): boolean; - - /** - * @see _.includes - */ - includes( - collection: string, - target: string, - fromIndex?: number - ): boolean; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.includes - */ - includes( - target: T, - fromIndex?: number - ): boolean; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.includes - */ - includes<TValue>( - target: TValue, - fromIndex?: number - ): boolean; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.includes - */ - includes( - target: string, - fromIndex?: number - ): boolean; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.includes - */ - includes( - target: T, - fromIndex?: number - ): LoDashExplicitWrapper<boolean>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.includes - */ - includes<TValue>( - target: TValue, - fromIndex?: number - ): LoDashExplicitWrapper<boolean>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.includes - */ - includes( - target: string, - fromIndex?: number - ): LoDashExplicitWrapper<boolean>; - } - - //_.keyBy - interface LoDashStatic { - /** - * Creates an object composed of keys generated from the results of running each element of collection through - * iteratee. The corresponding value of each key is the last element responsible for generating the key. The - * iteratee function is bound to thisArg and invoked with three arguments: - * (value, index|key, collection). - * - * If a property name is provided for iteratee the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for iteratee the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * @param collection The collection to iterate over. - * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. - * @return Returns the composed aggregate object. - */ - keyBy<T>( - collection: List<T>, - iteratee?: ListIterator<T, any>, - thisArg?: any - ): Dictionary<T>; - - /** - * @see _.keyBy - */ - keyBy<T>( - collection: NumericDictionary<T>, - iteratee?: NumericDictionaryIterator<T, any>, - thisArg?: any - ): Dictionary<T>; - - /** - * @see _.keyBy - */ - keyBy<T>( - collection: Dictionary<T>, - iteratee?: DictionaryIterator<T, any>, - thisArg?: any - ): Dictionary<T>; - - /** - * @see _.keyBy - */ - keyBy<T>( - collection: List<T>|NumericDictionary<T>|Dictionary<T>, - iteratee?: string, - thisArg?: any - ): Dictionary<T>; - - /** - * @see _.keyBy - */ - keyBy<W extends Object, T>( - collection: List<T>|NumericDictionary<T>|Dictionary<T>, - iteratee?: W - ): Dictionary<T>; - - /** - * @see _.keyBy - */ - keyBy<T>( - collection: List<T>|NumericDictionary<T>|Dictionary<T>, - iteratee?: Object - ): Dictionary<T>; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.keyBy - */ - keyBy( - iteratee?: ListIterator<T, any>, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<T>>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.keyBy - */ - keyBy( - iteratee?: ListIterator<T, any>, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<T>>; - - /** - * @see _.keyBy - */ - keyBy( - iteratee?: string, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<T>>; - - /** - * @see _.keyBy - */ - keyBy<W extends Object>( - iteratee?: W - ): LoDashImplicitObjectWrapper<Dictionary<T>>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.keyBy - */ - keyBy<T>( - iteratee?: ListIterator<T, any>|NumericDictionaryIterator<T, any>|DictionaryIterator<T, any>, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<T>>; - - /** - * @see _.keyBy - */ - keyBy<T>( - iteratee?: string, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<T>>; - - /** - * @see _.keyBy - */ - keyBy<W extends Object, T>( - iteratee?: W - ): LoDashImplicitObjectWrapper<Dictionary<T>>; - - /** - * @see _.keyBy - */ - keyBy<T>( - iteratee?: Object - ): LoDashImplicitObjectWrapper<Dictionary<T>>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.keyBy - */ - keyBy( - iteratee?: ListIterator<T, any>, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<T>>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.keyBy - */ - keyBy( - iteratee?: ListIterator<T, any>, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<T>>; - - /** - * @see _.keyBy - */ - keyBy( - iteratee?: string, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<T>>; - - /** - * @see _.keyBy - */ - keyBy<W extends Object>( - iteratee?: W - ): LoDashExplicitObjectWrapper<Dictionary<T>>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.keyBy - */ - keyBy<T>( - iteratee?: ListIterator<T, any>|NumericDictionaryIterator<T, any>|DictionaryIterator<T, any>, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<T>>; - - /** - * @see _.keyBy - */ - keyBy<T>( - iteratee?: string, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<T>>; - - /** - * @see _.keyBy - */ - keyBy<W extends Object, T>( - iteratee?: W - ): LoDashExplicitObjectWrapper<Dictionary<T>>; - - /** - * @see _.keyBy - */ - keyBy<T>( - iteratee?: Object - ): LoDashExplicitObjectWrapper<Dictionary<T>>; - } - - //_.invokeMap - interface LoDashStatic { - /** - * Invokes the method named by methodName on each element in the collection returning - * an array of the results of each invoked method. Additional arguments will be provided - * to each invoked method. If methodName is a function it will be invoked for, and this - * bound to, each element in the collection. - * @param collection The collection to iterate over. - * @param methodName The name of the method to invoke. - * @param args Arguments to invoke the method with. - **/ - invokeMap<T extends {}>( - collection: Array<T>, - methodName: string, - ...args: any[]): any; - - /** - * @see _.invokeMap - **/ - invokeMap<T extends {}>( - collection: List<T>, - methodName: string, - ...args: any[]): any; - - /** - * @see _.invokeMap - **/ - invokeMap<T extends {}>( - collection: Dictionary<T>, - methodName: string, - ...args: any[]): any; - - /** - * @see _.invokeMap - **/ - invokeMap<T extends {}>( - collection: Array<T>, - method: Function, - ...args: any[]): any; - - /** - * @see _.invokeMap - **/ - invokeMap<T extends {}>( - collection: List<T>, - method: Function, - ...args: any[]): any; - - /** - * @see _.invokeMap - **/ - invokeMap<T extends {}>( - collection: Dictionary<T>, - method: Function, - ...args: any[]): any; - } - - //_.map - interface LoDashStatic { - /** - * Creates an array of values by running each element in collection through iteratee. The iteratee is bound to - * thisArg and invoked with three arguments: (value, index|key, collection). - * - * If a property name is provided for iteratee the created _.property style callback returns the property value - * of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for iteratee the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * Many lodash methods are guarded to work as iteratees for methods like _.every, _.filter, _.map, _.mapValues, - * _.reject, and _.some. - * - * The guarded methods are: - * ary, callback, chunk, clone, create, curry, curryRight, drop, dropRight, every, fill, flatten, invert, max, - * min, parseInt, slice, sortBy, take, takeRight, template, trim, trimLeft, trimRight, trunc, random, range, - * sample, some, sum, uniq, and words - * - * @param collection The collection to iterate over. - * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. - * @return Returns the new mapped array. - */ - map<T, TResult>( - collection: List<T>, - iteratee?: ListIterator<T, TResult>, - thisArg?: any - ): TResult[]; - - /** - * @see _.map - */ - map<T extends {}, TResult>( - collection: Dictionary<T>, - iteratee?: DictionaryIterator<T, TResult>, - thisArg?: any - ): TResult[]; - - /** - * @see _.map - */ - map<T, TResult>( - collection: List<T>|Dictionary<T>, - iteratee?: string - ): TResult[]; - - /** - * @see _.map - */ - map<T, TObject extends {}>( - collection: List<T>|Dictionary<T>, - iteratee?: TObject - ): boolean[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.map - */ - map<TResult>( - iteratee?: ListIterator<T, TResult>, - thisArg?: any - ): LoDashImplicitArrayWrapper<TResult>; - - /** - * @see _.map - */ - map<TResult>( - iteratee?: string - ): LoDashImplicitArrayWrapper<TResult>; - - /** - * @see _.map - */ - map<TObject extends {}>( - iteratee?: TObject - ): LoDashImplicitArrayWrapper<boolean>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.map - */ - map<TValue, TResult>( - iteratee?: ListIterator<TValue, TResult>|DictionaryIterator<TValue, TResult>, - thisArg?: any - ): LoDashImplicitArrayWrapper<TResult>; - - /** - * @see _.map - */ - map<TValue, TResult>( - iteratee?: string - ): LoDashImplicitArrayWrapper<TResult>; - - /** - * @see _.map - */ - map<TObject extends {}>( - iteratee?: TObject - ): LoDashImplicitArrayWrapper<boolean>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.map - */ - map<TResult>( - iteratee?: ListIterator<T, TResult>, - thisArg?: any - ): LoDashExplicitArrayWrapper<TResult>; - - /** - * @see _.map - */ - map<TResult>( - iteratee?: string - ): LoDashExplicitArrayWrapper<TResult>; - - /** - * @see _.map - */ - map<TObject extends {}>( - iteratee?: TObject - ): LoDashExplicitArrayWrapper<boolean>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.map - */ - map<TValue, TResult>( - iteratee?: ListIterator<TValue, TResult>|DictionaryIterator<TValue, TResult>, - thisArg?: any - ): LoDashExplicitArrayWrapper<TResult>; - - /** - * @see _.map - */ - map<TValue, TResult>( - iteratee?: string - ): LoDashExplicitArrayWrapper<TResult>; - - /** - * @see _.map - */ - map<TObject extends {}>( - iteratee?: TObject - ): LoDashExplicitArrayWrapper<boolean>; - } - - //_.partition - interface LoDashStatic { - /** - * Creates an array of elements split into two groups, the first of which contains elements predicate returns truthy for, - * while the second of which contains elements predicate returns falsey for. - * The predicate is bound to thisArg and invoked with three arguments: (value, index|key, collection). - * - * If a property name is provided for predicate the created _.property style callback - * returns the property value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback - * returns true for elements that have a matching property value, else false. - * - * If an object is provided for predicate the created _.matches style callback returns - * true for elements that have the properties of the given object, else false. - * - * @param collection The collection to iterate over. - * @param callback The function called per iteration. - * @param thisArg The this binding of predicate. - * @return Returns the array of grouped elements. - **/ - partition<T>( - collection: List<T>, - callback: ListIterator<T, boolean>, - thisArg?: any): T[][]; - - /** - * @see _.partition - **/ - partition<T>( - collection: Dictionary<T>, - callback: DictionaryIterator<T, boolean>, - thisArg?: any): T[][]; - - /** - * @see _.partition - **/ - partition<W, T>( - collection: List<T>, - whereValue: W): T[][]; - - /** - * @see _.partition - **/ - partition<W, T>( - collection: Dictionary<T>, - whereValue: W): T[][]; - - /** - * @see _.partition - **/ - partition<T>( - collection: List<T>, - path: string, - srcValue: any): T[][]; - - /** - * @see _.partition - **/ - partition<T>( - collection: Dictionary<T>, - path: string, - srcValue: any): T[][]; - - /** - * @see _.partition - **/ - partition<T>( - collection: List<T>, - pluckValue: string): T[][]; - - /** - * @see _.partition - **/ - partition<T>( - collection: Dictionary<T>, - pluckValue: string): T[][]; - } - - interface LoDashImplicitStringWrapper { - /** - * @see _.partition - */ - partition( - callback: ListIterator<string, boolean>, - thisArg?: any): LoDashImplicitArrayWrapper<string[]>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.partition - */ - partition( - callback: ListIterator<T, boolean>, - thisArg?: any): LoDashImplicitArrayWrapper<T[]>; - /** - * @see _.partition - */ - partition<W>( - whereValue: W): LoDashImplicitArrayWrapper<T[]>; - /** - * @see _.partition - */ - partition( - path: string, - srcValue: any): LoDashImplicitArrayWrapper<T[]>; - /** - * @see _.partition - */ - partition( - pluckValue: string): LoDashImplicitArrayWrapper<T[]>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.partition - */ - partition<TResult>( - callback: ListIterator<TResult, boolean>, - thisArg?: any): LoDashImplicitArrayWrapper<TResult[]>; - - /** - * @see _.partition - */ - partition<TResult>( - callback: DictionaryIterator<TResult, boolean>, - thisArg?: any): LoDashImplicitArrayWrapper<TResult[]>; - - /** - * @see _.partition - */ - partition<W, TResult>( - whereValue: W): LoDashImplicitArrayWrapper<TResult[]>; - - /** - * @see _.partition - */ - partition<TResult>( - path: string, - srcValue: any): LoDashImplicitArrayWrapper<TResult[]>; - - /** - * @see _.partition - */ - partition<TResult>( - pluckValue: string): LoDashImplicitArrayWrapper<TResult[]>; - } - - //_.reduce - interface LoDashStatic { - /** - * Reduces a collection to a value which is the accumulated result of running each - * element in the collection through the callback, where each successive callback execution - * consumes the return value of the previous execution. If accumulator is not provided the - * first element of the collection will be used as the initial accumulator value. The callback - * is bound to thisArg and invoked with four arguments; (accumulator, value, index|key, collection). - * @param collection The collection to iterate over. - * @param callback The function called per iteration. - * @param accumulator Initial value of the accumulator. - * @param thisArg The this binding of callback. - * @return Returns the accumulated value. - **/ - reduce<T, TResult>( - collection: Array<T>, - callback: MemoIterator<T, TResult>, - accumulator: TResult, - thisArg?: any): TResult; - - /** - * @see _.reduce - **/ - reduce<T, TResult>( - collection: List<T>, - callback: MemoIterator<T, TResult>, - accumulator: TResult, - thisArg?: any): TResult; - - /** - * @see _.reduce - **/ - reduce<T, TResult>( - collection: Dictionary<T>, - callback: MemoIterator<T, TResult>, - accumulator: TResult, - thisArg?: any): TResult; - - /** - * @see _.reduce - **/ - reduce<T, TResult>( - collection: Array<T>, - callback: MemoIterator<T, TResult>, - thisArg?: any): TResult; - - /** - * @see _.reduce - **/ - reduce<T, TResult>( - collection: List<T>, - callback: MemoIterator<T, TResult>, - thisArg?: any): TResult; - - /** - * @see _.reduce - **/ - reduce<T, TResult>( - collection: Dictionary<T>, - callback: MemoIterator<T, TResult>, - thisArg?: any): TResult; - - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.reduce - **/ - reduce<TResult>( - callback: MemoIterator<T, TResult>, - accumulator: TResult, - thisArg?: any): TResult; - - /** - * @see _.reduce - **/ - reduce<TResult>( - callback: MemoIterator<T, TResult>, - thisArg?: any): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.reduce - **/ - reduce<TValue, TResult>( - callback: MemoIterator<TValue, TResult>, - accumulator: TResult, - thisArg?: any): TResult; - - /** - * @see _.reduce - **/ - reduce<TValue, TResult>( - callback: MemoIterator<TValue, TResult>, - thisArg?: any): TResult; - } - - //_.reduceRight - interface LoDashStatic { - /** - * This method is like _.reduce except that it iterates over elements of a collection from - * right to left. - * @param collection The collection to iterate over. - * @param callback The function called per iteration. - * @param accumulator Initial value of the accumulator. - * @param thisArg The this binding of callback. - * @return The accumulated value. - **/ - reduceRight<T, TResult>( - collection: Array<T>, - callback: MemoIterator<T, TResult>, - accumulator: TResult, - thisArg?: any): TResult; - - /** - * @see _.reduceRight - **/ - reduceRight<T, TResult>( - collection: List<T>, - callback: MemoIterator<T, TResult>, - accumulator: TResult, - thisArg?: any): TResult; - - /** - * @see _.reduceRight - **/ - reduceRight<T, TResult>( - collection: Dictionary<T>, - callback: MemoIterator<T, TResult>, - accumulator: TResult, - thisArg?: any): TResult; - - /** - * @see _.reduceRight - **/ - reduceRight<T, TResult>( - collection: Array<T>, - callback: MemoIterator<T, TResult>, - thisArg?: any): TResult; - - /** - * @see _.reduceRight - **/ - reduceRight<T, TResult>( - collection: List<T>, - callback: MemoIterator<T, TResult>, - thisArg?: any): TResult; - - /** - * @see _.reduceRight - **/ - reduceRight<T, TResult>( - collection: Dictionary<T>, - callback: MemoIterator<T, TResult>, - thisArg?: any): TResult; - } - - //_.reject - interface LoDashStatic { - /** - * The opposite of _.filter; this method returns the elements of collection that predicate does not return - * truthy for. - * - * @param collection The collection to iterate over. - * @param predicate The function invoked per iteration. - * @param thisArg The this binding of predicate. - * @return Returns the new filtered array. - */ - reject<T>( - collection: List<T>, - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): T[]; - - /** - * @see _.reject - */ - reject<T>( - collection: Dictionary<T>, - predicate?: DictionaryIterator<T, boolean>, - thisArg?: any - ): T[]; - - /** - * @see _.reject - */ - reject( - collection: string, - predicate?: StringIterator<boolean>, - thisArg?: any - ): string[]; - - /** - * @see _.reject - */ - reject<T>( - collection: List<T>|Dictionary<T>, - predicate: string, - thisArg?: any - ): T[]; - - /** - * @see _.reject - */ - reject<W extends {}, T>( - collection: List<T>|Dictionary<T>, - predicate: W - ): T[]; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.reject - */ - reject( - predicate?: StringIterator<boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<string>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.reject - */ - reject( - predicate: ListIterator<T, boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.reject - */ - reject( - predicate: string, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.reject - */ - reject<W>(predicate: W): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.reject - */ - reject<T>( - predicate: ListIterator<T, boolean>|DictionaryIterator<T, boolean>, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.reject - */ - reject<T>( - predicate: string, - thisArg?: any - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.reject - */ - reject<W, T>(predicate: W): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.reject - */ - reject( - predicate?: StringIterator<boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<string>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.reject - */ - reject( - predicate: ListIterator<T, boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.reject - */ - reject( - predicate: string, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.reject - */ - reject<W>(predicate: W): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.reject - */ - reject<T>( - predicate: ListIterator<T, boolean>|DictionaryIterator<T, boolean>, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.reject - */ - reject<T>( - predicate: string, - thisArg?: any - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.reject - */ - reject<W, T>(predicate: W): LoDashExplicitArrayWrapper<T>; - } - - //_.sample - interface LoDashStatic { - /** - * Gets a random element from `collection`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @returns {*} Returns the random element. - * @example - * - * _.sample([1, 2, 3, 4]); - * // => 2 - */ - sample<T>(collection: Array<T>): T; - - /** - * @see _.sample - **/ - sample<T>(collection: List<T>): T; - - /** - * @see _.sample - **/ - sample<T>(collection: Dictionary<T>): T; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.sample - **/ - sample(): LoDashImplicitWrapper<T>; - } - - //_.sampleSize - interface LoDashStatic { - /** - * Gets `n` random elements from `collection`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @param {number} [n=0] The number of elements to sample. - * @returns {Array} Returns the random elements. - * @example - * - * _.sampleSize([1, 2, 3, 4], 2); - * // => [3, 1] - */ - sampleSize<T>(collection: Array<T>, n: number): T[]; - - /** - * @see _.sampleSize - **/ - sampleSize<T>(collection: List<T>, n: number): T[]; - - /** - * @see _.sampleSize - **/ - sampleSize<T>(collection: Dictionary<T>, n: number): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.sampleSize - **/ - sampleSize(n: number): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sampleSize - **/ - sampleSize(): LoDashImplicitWrapper<T>; - } - - //_.shuffle - interface LoDashStatic { - /** - * Creates an array of shuffled values, using a version of the Fisher-Yates shuffle. - * - * @param collection The collection to shuffle. - * @return Returns the new shuffled array. - */ - shuffle<T>(collection: List<T>|Dictionary<T>): T[]; - - /** - * @see _.shuffle - */ - shuffle(collection: string): string[]; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.shuffle - */ - shuffle(): LoDashImplicitArrayWrapper<string>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.shuffle - */ - shuffle(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.shuffle - */ - shuffle<T>(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.shuffle - */ - shuffle(): LoDashExplicitArrayWrapper<string>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.shuffle - */ - shuffle(): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.shuffle - */ - shuffle<T>(): LoDashExplicitArrayWrapper<T>; - } - - //_.size - interface LoDashStatic { - /** - * Gets the size of collection by returning its length for array-like values or the number of own enumerable - * properties for objects. - * - * @param collection The collection to inspect. - * @return Returns the size of collection. - */ - size<T>(collection: List<T>|Dictionary<T>): number; - - /** - * @see _.size - */ - size(collection: string): number; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.size - */ - size(): number; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.size - */ - size(): number; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.size - */ - size(): number; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.size - */ - size(): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.size - */ - size(): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.size - */ - size(): LoDashExplicitWrapper<number>; - } - - //_.some - interface LoDashStatic { - /** - * Checks if predicate returns truthy for any element of collection. The function returns as soon as it finds - * a passing value and does not iterate over the entire collection. The predicate is bound to thisArg and - * invoked with three arguments: (value, index|key, collection). - * - * If a property name is provided for predicate the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for predicate the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * @param collection The collection to iterate over. - * @param predicate The function invoked per iteration. - * @param thisArg The this binding of predicate. - * @return Returns true if any element passes the predicate check, else false. - */ - some<T>( - collection: List<T>, - predicate?: ListIterator<T, boolean>, - thisArg?: any - ): boolean; - - /** - * @see _.some - */ - some<T>( - collection: Dictionary<T>, - predicate?: DictionaryIterator<T, boolean>, - thisArg?: any - ): boolean; - - /** - * @see _.some - */ - some<T>( - collection: NumericDictionary<T>, - predicate?: NumericDictionaryIterator<T, boolean>, - thisArg?: any - ): boolean; - - /** - * @see _.some - */ - some<T>( - collection: List<T>|Dictionary<T>|NumericDictionary<T>, - predicate?: string, - thisArg?: any - ): boolean; - - /** - * @see _.some - */ - some<TObject extends {}, T>( - collection: List<T>|Dictionary<T>|NumericDictionary<T>, - predicate?: TObject - ): boolean; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.some - */ - some( - predicate?: ListIterator<T, boolean>|NumericDictionaryIterator<T, boolean>, - thisArg?: any - ): boolean; - - /** - * @see _.some - */ - some( - predicate?: string, - thisArg?: any - ): boolean; - - /** - * @see _.some - */ - some<TObject extends {}>( - predicate?: TObject - ): boolean; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.some - */ - some<TResult>( - predicate?: ListIterator<TResult, boolean>|DictionaryIterator<TResult, boolean>|NumericDictionaryIterator<T, boolean>, - thisArg?: any - ): boolean; - - /** - * @see _.some - */ - some( - predicate?: string, - thisArg?: any - ): boolean; - - /** - * @see _.some - */ - some<TObject extends {}>( - predicate?: TObject - ): boolean; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.some - */ - some( - predicate?: ListIterator<T, boolean>|NumericDictionaryIterator<T, boolean>, - thisArg?: any - ): LoDashExplicitWrapper<boolean>; - - /** - * @see _.some - */ - some( - predicate?: string, - thisArg?: any - ): LoDashExplicitWrapper<boolean>; - - /** - * @see _.some - */ - some<TObject extends {}>( - predicate?: TObject - ): LoDashExplicitWrapper<boolean>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.some - */ - some<TResult>( - predicate?: ListIterator<TResult, boolean>|DictionaryIterator<TResult, boolean>|NumericDictionaryIterator<T, boolean>, - thisArg?: any - ): LoDashExplicitWrapper<boolean>; - - /** - * @see _.some - */ - some( - predicate?: string, - thisArg?: any - ): LoDashExplicitWrapper<boolean>; - - /** - * @see _.some - */ - some<TObject extends {}>( - predicate?: TObject - ): LoDashExplicitWrapper<boolean>; - } - - //_.sortBy - interface LoDashStatic { - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection through each iteratee. This method - * performs a stable sort, that is, it preserves the original sort order of - * equal elements. The iteratees are invoked with one argument: (value). - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {...(Function|Function[]|Object|Object[]|string|string[])} [iteratees=[_.identity]] - * The iteratees to sort by, specified individually or in arrays. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 42 }, - * { 'user': 'barney', 'age': 34 } - * ]; - * - * _.sortBy(users, function(o) { return o.user; }); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]] - * - * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 42], ['fred', 48]] - * - * _.sortBy(users, 'user', function(o) { - * return Math.floor(o.age / 10); - * }); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]] - */ - sortBy<T, TSort>( - collection: List<T>, - iteratee?: ListIterator<T, TSort> - ): T[]; - - /** - * @see _.sortBy - */ - sortBy<T, TSort>( - collection: Dictionary<T>, - iteratee?: DictionaryIterator<T, TSort> - ): T[]; - - /** - * @see _.sortBy - */ - sortBy<T>( - collection: List<T>|Dictionary<T>, - iteratee: string - ): T[]; - - /** - * @see _.sortBy - */ - sortBy<W extends {}, T>( - collection: List<T>|Dictionary<T>, - whereValue: W - ): T[]; - - /** - * @see _.sortBy - */ - sortBy<T>( - collection: List<T>|Dictionary<T> - ): T[]; - - /** - * @see _.sortBy - */ - sortBy<T>( - collection: (Array<T>|List<T>), - iteratees: (ListIterator<T, any>|string|Object)[]): T[]; - - /** - * @see _.sortBy - */ - sortBy<T>( - collection: (Array<T>|List<T>), - ...iteratees: (ListIterator<T, boolean>|Object|string)[]): T[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.sortBy - */ - sortBy<TSort>( - iteratee?: ListIterator<T, TSort> - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortBy - */ - sortBy(iteratee: string): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortBy - */ - sortBy<W extends {}>(whereValue: W): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortBy - */ - sortBy(): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortBy - */ - sortBy(...iteratees: (ListIterator<T, boolean>|Object|string)[]): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortBy - **/ - sortBy(iteratees: (ListIterator<T, any>|string|Object)[]): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.sortBy - */ - sortBy<T, TSort>( - iteratee?: ListIterator<T, TSort>|DictionaryIterator<T, TSort> - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortBy - */ - sortBy<T>(iteratee: string): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortBy - */ - sortBy<W extends {}, T>(whereValue: W): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.sortBy - */ - sortBy<T>(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.sortBy - */ - sortBy<TSort>( - iteratee?: ListIterator<T, TSort> - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.sortBy - */ - sortBy(iteratee: string): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.sortBy - */ - sortBy<W extends {}>(whereValue: W): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.sortBy - */ - sortBy(): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.sortBy - */ - sortBy<T, TSort>( - iteratee?: ListIterator<T, TSort>|DictionaryIterator<T, TSort> - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.sortBy - */ - sortBy<T>(iteratee: string): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.sortBy - */ - sortBy<W extends {}, T>(whereValue: W): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.sortBy - */ - sortBy<T>(): LoDashExplicitArrayWrapper<T>; - } - - //_.orderBy - interface LoDashStatic { - /** - * This method is like `_.sortBy` except that it allows specifying the sort - * orders of the iteratees to sort by. If `orders` is unspecified, all values - * are sorted in ascending order. Otherwise, specify an order of "desc" for - * descending or "asc" for ascending sort order of corresponding values. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function[]|Object[]|string[]} [iteratees=[_.identity]] The iteratees to sort by. - * @param {string[]} [orders] The sort orders of `iteratees`. - * @param- {Object} [guard] Enables use as an iteratee for functions like `_.reduce`. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 34 }, - * { 'user': 'fred', 'age': 42 }, - * { 'user': 'barney', 'age': 36 } - * ]; - * - * // sort by `user` in ascending order and by `age` in descending order - * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]] - */ - orderBy<W extends Object, T>( - collection: List<T>, - iteratees: ListIterator<T, any>|string|W|(ListIterator<T, any>|string|W)[], - orders?: boolean|string|(boolean|string)[] - ): T[]; - - /** - * @see _.orderBy - */ - orderBy<T>( - collection: List<T>, - iteratees: ListIterator<T, any>|string|Object|(ListIterator<T, any>|string|Object)[], - orders?: boolean|string|(boolean|string)[] - ): T[]; - - /** - * @see _.orderBy - */ - orderBy<W extends Object, T>( - collection: NumericDictionary<T>, - iteratees: NumericDictionaryIterator<T, any>|string|W|(NumericDictionaryIterator<T, any>|string|W)[], - orders?: boolean|string|(boolean|string)[] - ): T[]; - - /** - * @see _.orderBy - */ - orderBy<T>( - collection: NumericDictionary<T>, - iteratees: NumericDictionaryIterator<T, any>|string|Object|(NumericDictionaryIterator<T, any>|string|Object)[], - orders?: boolean|string|(boolean|string)[] - ): T[]; - - /** - * @see _.orderBy - */ - orderBy<W extends Object, T>( - collection: Dictionary<T>, - iteratees: DictionaryIterator<T, any>|string|W|(DictionaryIterator<T, any>|string|W)[], - orders?: boolean|string|(boolean|string)[] - ): T[]; - - /** - * @see _.orderBy - */ - orderBy<T>( - collection: Dictionary<T>, - iteratees: DictionaryIterator<T, any>|string|Object|(DictionaryIterator<T, any>|string|Object)[], - orders?: boolean|string|(boolean|string)[] - ): T[]; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.orderBy - */ - orderBy( - iteratees: ListIterator<T, any>|string|(ListIterator<T, any>|string)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.orderBy - */ - orderBy<W extends Object>( - iteratees: ListIterator<T, any>|string|W|(ListIterator<T, any>|string|W)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.orderBy - */ - orderBy<W extends Object, T>( - iteratees: ListIterator<T, any>|string|W|(ListIterator<T, any>|string|W)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.orderBy - */ - orderBy<T>( - iteratees: ListIterator<T, any>|string|Object|(ListIterator<T, any>|string|Object)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.orderBy - */ - orderBy<W extends Object, T>( - iteratees: NumericDictionaryIterator<T, any>|string|W|(NumericDictionaryIterator<T, any>|string|W)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.orderBy - */ - orderBy<T>( - iteratees: NumericDictionaryIterator<T, any>|string|Object|(NumericDictionaryIterator<T, any>|string|Object)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.orderBy - */ - orderBy<W extends Object, T>( - iteratees: DictionaryIterator<T, any>|string|W|(DictionaryIterator<T, any>|string|W)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashImplicitArrayWrapper<T>; - - /** - * @see _.orderBy - */ - orderBy<T>( - iteratees: DictionaryIterator<T, any>|string|Object|(DictionaryIterator<T, any>|string|Object)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.orderBy - */ - orderBy( - iteratees: ListIterator<T, any>|string|(ListIterator<T, any>|string)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.orderBy - */ - orderBy<W extends Object>( - iteratees: ListIterator<T, any>|string|W|(ListIterator<T, any>|string|W)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.orderBy - */ - orderBy<W extends Object, T>( - iteratees: ListIterator<T, any>|string|W|(ListIterator<T, any>|string|W)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.orderBy - */ - orderBy<T>( - iteratees: ListIterator<T, any>|string|Object|(ListIterator<T, any>|string|Object)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.orderBy - */ - orderBy<W extends Object, T>( - iteratees: NumericDictionaryIterator<T, any>|string|W|(NumericDictionaryIterator<T, any>|string|W)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.orderBy - */ - orderBy<T>( - iteratees: NumericDictionaryIterator<T, any>|string|Object|(NumericDictionaryIterator<T, any>|string|Object)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.orderBy - */ - orderBy<W extends Object, T>( - iteratees: DictionaryIterator<T, any>|string|W|(DictionaryIterator<T, any>|string|W)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashExplicitArrayWrapper<T>; - - /** - * @see _.orderBy - */ - orderBy<T>( - iteratees: DictionaryIterator<T, any>|string|Object|(DictionaryIterator<T, any>|string|Object)[], - orders?: boolean|string|(boolean|string)[] - ): LoDashExplicitArrayWrapper<T>; - } - - /******** - * Date * - ********/ - - //_.now - interface LoDashStatic { - /** - * Gets the number of milliseconds that have elapsed since the Unix epoch (1 January 1970 00:00:00 UTC). - * - * @return The number of milliseconds. - */ - now(): number; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.now - */ - now(): number; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.now - */ - now(): LoDashExplicitWrapper<number>; - } - - /************* - * Functions * - *************/ - - //_.after - interface LoDashStatic { - /** - * The opposite of _.before; this method creates a function that invokes func once it’s called n or more times. - * - * @param n The number of calls before func is invoked. - * @param func The function to restrict. - * @return Returns the new restricted function. - */ - after<TFunc extends Function>( - n: number, - func: TFunc - ): TFunc; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.after - **/ - after<TFunc extends Function>(func: TFunc): LoDashImplicitObjectWrapper<TFunc>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.after - **/ - after<TFunc extends Function>(func: TFunc): LoDashExplicitObjectWrapper<TFunc>; - } - - //_.ary - interface LoDashStatic { - /** - * Creates a function that accepts up to n arguments ignoring any additional arguments. - * - * @param func The function to cap arguments for. - * @param n The arity cap. - * @returns Returns the new function. - */ - ary<TResult extends Function>( - func: Function, - n?: number - ): TResult; - - ary<T extends Function, TResult extends Function>( - func: T, - n?: number - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.ary - */ - ary<TResult extends Function>(n?: number): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.ary - */ - ary<TResult extends Function>(n?: number): LoDashExplicitObjectWrapper<TResult>; - } - - //_.before - interface LoDashStatic { - /** - * Creates a function that invokes func, with the this binding and arguments of the created function, while - * it’s called less than n times. Subsequent calls to the created function return the result of the last func - * invocation. - * - * @param n The number of calls at which func is no longer invoked. - * @param func The function to restrict. - * @return Returns the new restricted function. - */ - before<TFunc extends Function>( - n: number, - func: TFunc - ): TFunc; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.before - **/ - before<TFunc extends Function>(func: TFunc): LoDashImplicitObjectWrapper<TFunc>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.before - **/ - before<TFunc extends Function>(func: TFunc): LoDashExplicitObjectWrapper<TFunc>; - } - - //_.bind - interface FunctionBind { - placeholder: any; - - <T extends Function, TResult extends Function>( - func: T, - thisArg: any, - ...partials: any[] - ): TResult; - - <TResult extends Function>( - func: Function, - thisArg: any, - ...partials: any[] - ): TResult; - } - - interface LoDashStatic { - /** - * Creates a function that invokes func with the this binding of thisArg and prepends any additional _.bind - * arguments to those provided to the bound function. - * - * The _.bind.placeholder value, which defaults to _ in monolithic builds, may be used as a placeholder for - * partially applied arguments. - * - * Note: Unlike native Function#bind this method does not set the "length" property of bound functions. - * - * @param func The function to bind. - * @param thisArg The this binding of func. - * @param partials The arguments to be partially applied. - * @return Returns the new bound function. - */ - bind: FunctionBind; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.bind - */ - bind<TResult extends Function>( - thisArg: any, - ...partials: any[] - ): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.bind - */ - bind<TResult extends Function>( - thisArg: any, - ...partials: any[] - ): LoDashExplicitObjectWrapper<TResult>; - } - - //_.bindAll - interface LoDashStatic { - /** - * Binds methods of an object to the object itself, overwriting the existing method. Method names may be - * specified as individual arguments or as arrays of method names. If no method names are provided all - * enumerable function properties, own and inherited, of object are bound. - * - * Note: This method does not set the "length" property of bound functions. - * - * @param object The object to bind and assign the bound methods to. - * @param methodNames The object method names to bind, specified as individual method names or arrays of - * method names. - * @return Returns object. - */ - bindAll<T>( - object: T, - ...methodNames: (string|string[])[] - ): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.bindAll - */ - bindAll(...methodNames: (string|string[])[]): LoDashImplicitObjectWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.bindAll - */ - bindAll(...methodNames: (string|string[])[]): LoDashExplicitObjectWrapper<T>; - } - - //_.bindKey - interface FunctionBindKey { - placeholder: any; - - <T extends Object, TResult extends Function>( - object: T, - key: any, - ...partials: any[] - ): TResult; - - <TResult extends Function>( - object: Object, - key: any, - ...partials: any[] - ): TResult; - } - - interface LoDashStatic { - /** - * Creates a function that invokes the method at object[key] and prepends any additional _.bindKey arguments - * to those provided to the bound function. - * - * This method differs from _.bind by allowing bound functions to reference methods that may be redefined - * or don’t yet exist. See Peter Michaux’s article for more details. - * - * The _.bindKey.placeholder value, which defaults to _ in monolithic builds, may be used as a placeholder - * for partially applied arguments. - * - * @param object The object the method belongs to. - * @param key The key of the method. - * @param partials The arguments to be partially applied. - * @return Returns the new bound function. - */ - bindKey: FunctionBindKey; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.bindKey - */ - bindKey<TResult extends Function>( - key: any, - ...partials: any[] - ): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.bindKey - */ - bindKey<TResult extends Function>( - key: any, - ...partials: any[] - ): LoDashExplicitObjectWrapper<TResult>; - } - - //_.createCallback - interface LoDashStatic { - /** - * Produces a callback bound to an optional thisArg. If func is a property name the created - * callback will return the property value for a given element. If func is an object the created - * callback will return true for elements that contain the equivalent object properties, - * otherwise it will return false. - * @param func The value to convert to a callback. - * @param thisArg The this binding of the created callback. - * @param argCount The number of arguments the callback accepts. - * @return A callback function. - **/ - createCallback( - func: string, - thisArg?: any, - argCount?: number): () => any; - - /** - * @see _.createCallback - **/ - createCallback( - func: Dictionary<any>, - thisArg?: any, - argCount?: number): () => boolean; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.createCallback - **/ - createCallback( - thisArg?: any, - argCount?: number): LoDashImplicitObjectWrapper<() => any>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.createCallback - **/ - createCallback( - thisArg?: any, - argCount?: number): LoDashImplicitObjectWrapper<() => any>; - } - - //_.curry - interface LoDashStatic { - /** - * Creates a function that accepts one or more arguments of func that when called either invokes func returning - * its result, if all func arguments have been provided, or returns a function that accepts one or more of the - * remaining func arguments, and so on. The arity of func may be specified if func.length is not sufficient. - * @param func The function to curry. - * @return Returns the new curried function. - */ - curry<T1, R>(func: (t1: T1) => R): - CurriedFunction1<T1, R>; - /** - * Creates a function that accepts one or more arguments of func that when called either invokes func returning - * its result, if all func arguments have been provided, or returns a function that accepts one or more of the - * remaining func arguments, and so on. The arity of func may be specified if func.length is not sufficient. - * @param func The function to curry. - * @return Returns the new curried function. - */ - curry<T1, T2, R>(func: (t1: T1, t2: T2) => R): - CurriedFunction2<T1, T2, R>; - /** - * Creates a function that accepts one or more arguments of func that when called either invokes func returning - * its result, if all func arguments have been provided, or returns a function that accepts one or more of the - * remaining func arguments, and so on. The arity of func may be specified if func.length is not sufficient. - * @param func The function to curry. - * @return Returns the new curried function. - */ - curry<T1, T2, T3, R>(func: (t1: T1, t2: T2, t3: T3) => R): - CurriedFunction3<T1, T2, T3, R>; - /** - * Creates a function that accepts one or more arguments of func that when called either invokes func returning - * its result, if all func arguments have been provided, or returns a function that accepts one or more of the - * remaining func arguments, and so on. The arity of func may be specified if func.length is not sufficient. - * @param func The function to curry. - * @return Returns the new curried function. - */ - curry<T1, T2, T3, T4, R>(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R): - CurriedFunction4<T1, T2, T3, T4, R>; - /** - * Creates a function that accepts one or more arguments of func that when called either invokes func returning - * its result, if all func arguments have been provided, or returns a function that accepts one or more of the - * remaining func arguments, and so on. The arity of func may be specified if func.length is not sufficient. - * @param func The function to curry. - * @return Returns the new curried function. - */ - curry<T1, T2, T3, T4, T5, R>(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R): - CurriedFunction5<T1, T2, T3, T4, T5, R>; - /** - * Creates a function that accepts one or more arguments of func that when called either invokes func returning - * its result, if all func arguments have been provided, or returns a function that accepts one or more of the - * remaining func arguments, and so on. The arity of func may be specified if func.length is not sufficient. - * @param func The function to curry. - * @param arity The arity of func. - * @return Returns the new curried function. - */ - curry<TResult extends Function>( - func: Function, - arity?: number): TResult; - } - - interface CurriedFunction1<T1, R> { - (): CurriedFunction1<T1, R>; - (t1: T1): R; - } - - interface CurriedFunction2<T1, T2, R> { - (): CurriedFunction2<T1, T2, R>; - (t1: T1): CurriedFunction1<T2, R>; - (t1: T1, t2: T2): R; - } - - interface CurriedFunction3<T1, T2, T3, R> { - (): CurriedFunction3<T1, T2, T3, R>; - (t1: T1): CurriedFunction2<T2, T3, R>; - (t1: T1, t2: T2): CurriedFunction1<T3, R>; - (t1: T1, t2: T2, t3: T3): R; - } - - interface CurriedFunction4<T1, T2, T3, T4, R> { - (): CurriedFunction4<T1, T2, T3, T4, R>; - (t1: T1): CurriedFunction3<T2, T3, T4, R>; - (t1: T1, t2: T2): CurriedFunction2<T3, T4, R>; - (t1: T1, t2: T2, t3: T3): CurriedFunction1<T4, R>; - (t1: T1, t2: T2, t3: T3, t4: T4): R; - } - - interface CurriedFunction5<T1, T2, T3, T4, T5, R> { - (): CurriedFunction5<T1, T2, T3, T4, T5, R>; - (t1: T1): CurriedFunction4<T2, T3, T4, T5, R>; - (t1: T1, t2: T2): CurriedFunction3<T3, T4, T5, R>; - (t1: T1, t2: T2, t3: T3): CurriedFunction2<T4, T5, R>; - (t1: T1, t2: T2, t3: T3, t4: T4): CurriedFunction1<T5, R>; - (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5): R; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.curry - **/ - curry<TResult extends Function>(arity?: number): LoDashImplicitObjectWrapper<TResult>; - } - - //_.curryRight - interface LoDashStatic { - /** - * This method is like _.curry except that arguments are applied to func in the manner of _.partialRight - * instead of _.partial. - * @param func The function to curry. - * @return Returns the new curried function. - */ - curryRight<T1, R>(func: (t1: T1) => R): - CurriedFunction1<T1, R>; - /** - * This method is like _.curry except that arguments are applied to func in the manner of _.partialRight - * instead of _.partial. - * @param func The function to curry. - * @return Returns the new curried function. - */ - curryRight<T1, T2, R>(func: (t1: T1, t2: T2) => R): - CurriedFunction2<T2, T1, R>; - /** - * This method is like _.curry except that arguments are applied to func in the manner of _.partialRight - * instead of _.partial. - * @param func The function to curry. - * @return Returns the new curried function. - */ - curryRight<T1, T2, T3, R>(func: (t1: T1, t2: T2, t3: T3) => R): - CurriedFunction3<T3, T2, T1, R>; - /** - * This method is like _.curry except that arguments are applied to func in the manner of _.partialRight - * instead of _.partial. - * @param func The function to curry. - * @return Returns the new curried function. - */ - curryRight<T1, T2, T3, T4, R>(func: (t1: T1, t2: T2, t3: T3, t4: T4) => R): - CurriedFunction4<T4, T3, T2, T1, R>; - /** - * This method is like _.curry except that arguments are applied to func in the manner of _.partialRight - * instead of _.partial. - * @param func The function to curry. - * @return Returns the new curried function. - */ - curryRight<T1, T2, T3, T4, T5, R>(func: (t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => R): - CurriedFunction5<T5, T4, T3, T2, T1, R>; - /** - * This method is like _.curry except that arguments are applied to func in the manner of _.partialRight - * instead of _.partial. - * @param func The function to curry. - * @param arity The arity of func. - * @return Returns the new curried function. - */ - curryRight<TResult extends Function>( - func: Function, - arity?: number): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.curryRight - **/ - curryRight<TResult extends Function>(arity?: number): LoDashImplicitObjectWrapper<TResult>; - } - - //_.debounce - interface DebounceSettings { - /** - * Specify invoking on the leading edge of the timeout. - */ - leading?: boolean; - - /** - * The maximum time func is allowed to be delayed before it’s invoked. - */ - maxWait?: number; - - /** - * Specify invoking on the trailing edge of the timeout. - */ - trailing?: boolean; - } - - interface LoDashStatic { - /** - * Creates a debounced function that delays invoking func until after wait milliseconds have elapsed since - * the last time the debounced function was invoked. The debounced function comes with a cancel method to - * cancel delayed invocations. Provide an options object to indicate that func should be invoked on the - * leading and/or trailing edge of the wait timeout. Subsequent calls to the debounced function return the - * result of the last func invocation. - * - * Note: If leading and trailing options are true, func is invoked on the trailing edge of the timeout only - * if the the debounced function is invoked more than once during the wait timeout. - * - * See David Corbacho’s article for details over the differences between _.debounce and _.throttle. - * - * @param func The function to debounce. - * @param wait The number of milliseconds to delay. - * @param options The options object. - * @param options.leading Specify invoking on the leading edge of the timeout. - * @param options.maxWait The maximum time func is allowed to be delayed before it’s invoked. - * @param options.trailing Specify invoking on the trailing edge of the timeout. - * @return Returns the new debounced function. - */ - debounce<T extends Function>( - func: T, - wait?: number, - options?: DebounceSettings - ): T & Cancelable; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.debounce - */ - debounce( - wait?: number, - options?: DebounceSettings - ): LoDashImplicitObjectWrapper<T & Cancelable>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.debounce - */ - debounce( - wait?: number, - options?: DebounceSettings - ): LoDashExplicitObjectWrapper<T & Cancelable>; - } - - //_.defer - interface LoDashStatic { - /** - * Defers invoking the func until the current call stack has cleared. Any additional arguments are provided to - * func when it’s invoked. - * - * @param func The function to defer. - * @param args The arguments to invoke the function with. - * @return Returns the timer id. - */ - defer<T extends Function>( - func: T, - ...args: any[] - ): number; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.defer - */ - defer(...args: any[]): LoDashImplicitWrapper<number>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.defer - */ - defer(...args: any[]): LoDashExplicitWrapper<number>; - } - - //_.delay - interface LoDashStatic { - /** - * Invokes func after wait milliseconds. Any additional arguments are provided to func when it’s invoked. - * - * @param func The function to delay. - * @param wait The number of milliseconds to delay invocation. - * @param args The arguments to invoke the function with. - * @return Returns the timer id. - */ - delay<T extends Function>( - func: T, - wait: number, - ...args: any[] - ): number; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.delay - */ - delay( - wait: number, - ...args: any[] - ): LoDashImplicitWrapper<number>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.delay - */ - delay( - wait: number, - ...args: any[] - ): LoDashExplicitWrapper<number>; - } - - interface LoDashStatic { - /** - * Creates a function that invokes `func` with arguments reversed. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to flip arguments for. - * @returns {Function} Returns the new function. - * @example - * - * var flipped = _.flip(function() { - * return _.toArray(arguments); - * }); - * - * flipped('a', 'b', 'c', 'd'); - * // => ['d', 'c', 'b', 'a'] - */ - flip<T extends Function>(func: T): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.flip - */ - flip(): LoDashImplicitObjectWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.flip - */ - flip(): LoDashExplicitObjectWrapper<T>; - } - - //_.flow - interface LoDashStatic { - /** - * Creates a function that returns the result of invoking the provided functions with the this binding of the - * created function, where each successive invocation is supplied the return value of the previous. - * - * @param funcs Functions to invoke. - * @return Returns the new function. - */ - flow<TResult extends Function>(...funcs: Function[]): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.flow - */ - flow<TResult extends Function>(...funcs: Function[]): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.flow - */ - flow<TResult extends Function>(...funcs: Function[]): LoDashExplicitObjectWrapper<TResult>; - } - - //_.flowRight - interface LoDashStatic { - /** - * This method is like _.flow except that it creates a function that invokes the provided functions from right - * to left. - * - * @param funcs Functions to invoke. - * @return Returns the new function. - */ - flowRight<TResult extends Function>(...funcs: Function[]): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.flowRight - */ - flowRight<TResult extends Function>(...funcs: Function[]): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.flowRight - */ - flowRight<TResult extends Function>(...funcs: Function[]): LoDashExplicitObjectWrapper<TResult>; - } - - - //_.memoize - interface MemoizedFunction extends Function { - cache: MapCache; - } - - interface LoDashStatic { - /** - * Creates a function that memoizes the result of func. If resolver is provided it determines the cache key for - * storing the result based on the arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is coerced to a string and used as the cache key. The func is invoked with - * the this binding of the memoized function. - * @param func The function to have its output memoized. - * @param resolver The function to resolve the cache key. - * @return Returns the new memoizing function. - */ - memoize<TResult extends MemoizedFunction>( - func: Function, - resolver?: Function): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.memoize - */ - memoize<TResult extends MemoizedFunction>(resolver?: Function): LoDashImplicitObjectWrapper<TResult>; - } - - //_.overArgs (was _.modArgs) - interface LoDashStatic { - /** - * Creates a function that runs each argument through a corresponding transform function. - * - * @param func The function to wrap. - * @param transforms The functions to transform arguments, specified as individual functions or arrays - * of functions. - * @return Returns the new function. - */ - overArgs<T extends Function, TResult extends Function>( - func: T, - ...transforms: Function[] - ): TResult; - - /** - * @see _.overArgs - */ - overArgs<T extends Function, TResult extends Function>( - func: T, - transforms: Function[] - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.overArgs - */ - overArgs<TResult extends Function>(...transforms: Function[]): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.overArgs - */ - overArgs<TResult extends Function>(transforms: Function[]): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.overArgs - */ - overArgs<TResult extends Function>(...transforms: Function[]): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.overArgs - */ - overArgs<TResult extends Function>(transforms: Function[]): LoDashExplicitObjectWrapper<TResult>; - } - - //_.negate - interface LoDashStatic { - /** - * Creates a function that negates the result of the predicate func. The func predicate is invoked with - * the this binding and arguments of the created function. - * - * @param predicate The predicate to negate. - * @return Returns the new function. - */ - negate<T extends Function>(predicate: T): (...args: any[]) => boolean; - - /** - * @see _.negate - */ - negate<T extends Function, TResult extends Function>(predicate: T): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.negate - */ - negate(): LoDashImplicitObjectWrapper<(...args: any[]) => boolean>; - - /** - * @see _.negate - */ - negate<TResult extends Function>(): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.negate - */ - negate(): LoDashExplicitObjectWrapper<(...args: any[]) => boolean>; - - /** - * @see _.negate - */ - negate<TResult extends Function>(): LoDashExplicitObjectWrapper<TResult>; - } - - //_.once - interface LoDashStatic { - /** - * Creates a function that is restricted to invoking func once. Repeat calls to the function return the value - * of the first call. The func is invoked with the this binding and arguments of the created function. - * - * @param func The function to restrict. - * @return Returns the new restricted function. - */ - once<T extends Function>(func: T): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.once - */ - once(): LoDashImplicitObjectWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.once - */ - once(): LoDashExplicitObjectWrapper<T>; - } - - //_.partial - interface LoDashStatic { - /** - * Creates a function that, when called, invokes func with any additional partial arguments - * prepended to those provided to the new function. This method is similar to _.bind except - * it does not alter the this binding. - * @param func The function to partially apply arguments to. - * @param args Arguments to be partially applied. - * @return The new partially applied function. - **/ - partial: Partial; - } - - type PH = LoDashStatic; - - interface Function0<R> { - (): R; - } - interface Function1<T1, R> { - (t1: T1): R; - } - interface Function2<T1, T2, R> { - (t1: T1, t2: T2): R; - } - interface Function3<T1, T2, T3, R> { - (t1: T1, t2: T2, t3: T3): R; - } - interface Function4<T1, T2, T3, T4, R> { - (t1: T1, t2: T2, t3: T3, t4: T4): R; - } - - interface Partial { - // arity 0 - <R>(func: Function0<R>): Function0<R>; - // arity 1 - <T1, R>(func: Function1<T1, R>): Function1<T1, R>; - <T1, R>(func: Function1<T1, R>, arg1: T1): Function0<R>; - // arity 2 - <T1, T2, R>(func: Function2<T1, T2, R>): Function2<T1, T2, R>; - <T1, T2, R>(func: Function2<T1, T2, R>, arg1: T1): Function1< T2, R>; - <T1, T2, R>(func: Function2<T1, T2, R>, plc1: PH, arg2: T2): Function1<T1, R>; - <T1, T2, R>(func: Function2<T1, T2, R>, arg1: T1, arg2: T2): Function0< R>; - // arity 3 - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>): Function3<T1, T2, T3, R>; - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1): Function2< T2, T3, R>; - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, plc1: PH, arg2: T2): Function2<T1, T3, R>; - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1, arg2: T2): Function1< T3, R>; - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, plc1: PH, plc2: PH, arg3: T3): Function2<T1, T2, R>; - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1, plc2: PH, arg3: T3): Function1< T2, R>; - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, plc1: PH, arg2: T2, arg3: T3): Function1<T1, R>; - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1, arg2: T2, arg3: T3): Function0< R>; - // arity 4 - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>): Function4<T1, T2, T3, T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1): Function3< T2, T3, T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, plc1: PH, arg2: T2): Function3<T1, T3, T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2): Function2< T3, T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, plc1: PH, plc2: PH, arg3: T3): Function3<T1, T2, T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, plc2: PH, arg3: T3): Function2< T2, T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, plc1: PH, arg2: T2, arg3: T3): Function2<T1, T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2, arg3: T3): Function1< T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, plc1: PH, plc2: PH, plc3: PH, arg4: T4): Function3<T1, T2, T3, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, plc2: PH, plc3: PH, arg4: T4): Function2< T2, T3, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, plc1: PH, arg2: T2, plc3: PH, arg4: T4): Function2<T1, T3, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2, plc3: PH, arg4: T4): Function1< T3, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, plc1: PH, plc2: PH, arg3: T3, arg4: T4): Function2<T1, T2, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, plc2: PH, arg3: T3, arg4: T4): Function1< T2, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, plc1: PH, arg2: T2, arg3: T3, arg4: T4): Function1<T1, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2, arg3: T3, arg4: T4): Function0< R>; - // catch-all - (func: Function, ...args: any[]): Function; - } - - //_.partialRight - interface LoDashStatic { - /** - * This method is like _.partial except that partial arguments are appended to those provided - * to the new function. - * @param func The function to partially apply arguments to. - * @param args Arguments to be partially applied. - * @return The new partially applied function. - **/ - partialRight: PartialRight - } - - interface PartialRight { - // arity 0 - <R>(func: Function0<R>): Function0<R>; - // arity 1 - <T1, R>(func: Function1<T1, R>): Function1<T1, R>; - <T1, R>(func: Function1<T1, R>, arg1: T1): Function0<R>; - // arity 2 - <T1, T2, R>(func: Function2<T1, T2, R>): Function2<T1, T2, R>; - <T1, T2, R>(func: Function2<T1, T2, R>, arg1: T1, plc2: PH): Function1< T2, R>; - <T1, T2, R>(func: Function2<T1, T2, R>, arg2: T2): Function1<T1, R>; - <T1, T2, R>(func: Function2<T1, T2, R>, arg1: T1, arg2: T2): Function0< R>; - // arity 3 - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>): Function3<T1, T2, T3, R>; - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1, plc2: PH, plc3: PH): Function2< T2, T3, R>; - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg2: T2, plc3: PH): Function2<T1, T3, R>; - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1, arg2: T2, plc3: PH): Function1< T3, R>; - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg3: T3): Function2<T1, T2, R>; - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1, plc2: PH, arg3: T3): Function1< T2, R>; - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg2: T2, arg3: T3): Function1<T1, R>; - <T1, T2, T3, R>(func: Function3<T1, T2, T3, R>, arg1: T1, arg2: T2, arg3: T3): Function0< R>; - // arity 4 - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>): Function4<T1, T2, T3, T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, plc2: PH, plc3: PH, plc4: PH): Function3< T2, T3, T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg2: T2, plc3: PH, plc4: PH): Function3<T1, T3, T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2, plc3: PH, plc4: PH): Function2< T3, T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg3: T3, plc4: PH): Function3<T1, T2, T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, plc2: PH, arg3: T3, plc4: PH): Function2< T2, T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg2: T2, arg3: T3, plc4: PH): Function2<T1, T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2, arg3: T3, plc4: PH): Function1< T4, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg4: T4): Function3<T1, T2, T3, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, plc2: PH, plc3: PH, arg4: T4): Function2< T2, T3, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg2: T2, plc3: PH, arg4: T4): Function2<T1, T3, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2, plc3: PH, arg4: T4): Function1< T3, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg3: T3, arg4: T4): Function2<T1, T2, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, plc2: PH, arg3: T3, arg4: T4): Function1< T2, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg2: T2, arg3: T3, arg4: T4): Function1<T1, R>; - <T1, T2, T3, T4, R>(func: Function4<T1, T2, T3, T4, R>, arg1: T1, arg2: T2, arg3: T3, arg4: T4): Function0< R>; - // catch-all - (func: Function, ...args: any[]): Function; - } - - //_.rearg - interface LoDashStatic { - /** - * Creates a function that invokes func with arguments arranged according to the specified indexes where the - * argument value at the first index is provided as the first argument, the argument value at the second index - * is provided as the second argument, and so on. - * @param func The function to rearrange arguments for. - * @param indexes The arranged argument indexes, specified as individual indexes or arrays of indexes. - * @return Returns the new function. - */ - rearg<TResult extends Function>(func: Function, indexes: number[]): TResult; - - /** - * @see _.rearg - */ - rearg<TResult extends Function>(func: Function, ...indexes: number[]): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.rearg - */ - rearg<TResult extends Function>(indexes: number[]): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.rearg - */ - rearg<TResult extends Function>(...indexes: number[]): LoDashImplicitObjectWrapper<TResult>; - } - - //_.rest - interface LoDashStatic { - /** - * Creates a function that invokes func with the this binding of the created function and arguments from start - * and beyond provided as an array. - * - * Note: This method is based on the rest parameter. - * - * @param func The function to apply a rest parameter to. - * @param start The start position of the rest parameter. - * @return Returns the new function. - */ - rest<TResult extends Function>( - func: Function, - start?: number - ): TResult; - - /** - * @see _.rest - */ - rest<TResult extends Function, TFunc extends Function>( - func: TFunc, - start?: number - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.rest - */ - rest<TResult extends Function>(start?: number): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.rest - */ - rest<TResult extends Function>(start?: number): LoDashExplicitObjectWrapper<TResult>; - } - - //_.spread - interface LoDashStatic { - /** - * Creates a function that invokes func with the this binding of the created function and an array of arguments - * much like Function#apply. - * - * Note: This method is based on the spread operator. - * - * @param func The function to spread arguments over. - * @return Returns the new function. - */ - spread<F extends Function, T extends Function>(func: F): T; - - /** - * @see _.spread - */ - spread<T extends Function>(func: Function): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.spread - */ - spread<T extends Function>(): LoDashImplicitObjectWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.spread - */ - spread<T extends Function>(): LoDashExplicitObjectWrapper<T>; - } - - //_.throttle - interface ThrottleSettings { - /** - * If you'd like to disable the leading-edge call, pass this as false. - */ - leading?: boolean; - - /** - * If you'd like to disable the execution on the trailing-edge, pass false. - */ - trailing?: boolean; - } - - interface LoDashStatic { - /** - * Creates a throttled function that only invokes func at most once per every wait milliseconds. The throttled - * function comes with a cancel method to cancel delayed invocations. Provide an options object to indicate - * that func should be invoked on the leading and/or trailing edge of the wait timeout. Subsequent calls to - * the throttled function return the result of the last func call. - * - * Note: If leading and trailing options are true, func is invoked on the trailing edge of the timeout only if - * the the throttled function is invoked more than once during the wait timeout. - * - * @param func The function to throttle. - * @param wait The number of milliseconds to throttle invocations to. - * @param options The options object. - * @param options.leading Specify invoking on the leading edge of the timeout. - * @param options.trailing Specify invoking on the trailing edge of the timeout. - * @return Returns the new throttled function. - */ - throttle<T extends Function>( - func: T, - wait?: number, - options?: ThrottleSettings - ): T & Cancelable; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.throttle - */ - throttle( - wait?: number, - options?: ThrottleSettings - ): LoDashImplicitObjectWrapper<T & Cancelable>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.throttle - */ - throttle( - wait?: number, - options?: ThrottleSettings - ): LoDashExplicitObjectWrapper<T & Cancelable>; - } - - //_.unary - interface LoDashStatic { - /** - * Creates a function that accepts up to one argument, ignoring any - * additional arguments. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new function. - * @example - * - * _.map(['6', '8', '10'], _.unary(parseInt)); - * // => [6, 8, 10] - */ - unary<T extends Function>(func: T): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.unary - */ - unary(): LoDashImplicitObjectWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.unary - */ - unary(): LoDashExplicitObjectWrapper<T>; - } - - //_.wrap - interface LoDashStatic { - /** - * Creates a function that provides value to the wrapper function as its first argument. Any additional - * arguments provided to the function are appended to those provided to the wrapper function. The wrapper is - * invoked with the this binding of the created function. - * - * @param value The value to wrap. - * @param wrapper The wrapper function. - * @return Returns the new function. - */ - wrap<V, W extends Function, R extends Function>( - value: V, - wrapper: W - ): R; - - /** - * @see _.wrap - */ - wrap<V, R extends Function>( - value: V, - wrapper: Function - ): R; - - /** - * @see _.wrap - */ - wrap<R extends Function>( - value: any, - wrapper: Function - ): R; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.wrap - */ - wrap<W extends Function, R extends Function>(wrapper: W): LoDashImplicitObjectWrapper<R>; - - /** - * @see _.wrap - */ - wrap<R extends Function>(wrapper: Function): LoDashImplicitObjectWrapper<R>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.wrap - */ - wrap<W extends Function, R extends Function>(wrapper: W): LoDashImplicitObjectWrapper<R>; - - /** - * @see _.wrap - */ - wrap<R extends Function>(wrapper: Function): LoDashImplicitObjectWrapper<R>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.wrap - */ - wrap<W extends Function, R extends Function>(wrapper: W): LoDashImplicitObjectWrapper<R>; - - /** - * @see _.wrap - */ - wrap<R extends Function>(wrapper: Function): LoDashImplicitObjectWrapper<R>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.wrap - */ - wrap<W extends Function, R extends Function>(wrapper: W): LoDashExplicitObjectWrapper<R>; - - /** - * @see _.wrap - */ - wrap<R extends Function>(wrapper: Function): LoDashExplicitObjectWrapper<R>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.wrap - */ - wrap<W extends Function, R extends Function>(wrapper: W): LoDashExplicitObjectWrapper<R>; - - /** - * @see _.wrap - */ - wrap<R extends Function>(wrapper: Function): LoDashExplicitObjectWrapper<R>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.wrap - */ - wrap<W extends Function, R extends Function>(wrapper: W): LoDashExplicitObjectWrapper<R>; - - /** - * @see _.wrap - */ - wrap<R extends Function>(wrapper: Function): LoDashExplicitObjectWrapper<R>; - } - - /******** - * Lang * - ********/ - - //_.clone - interface LoDashStatic { - /** - * Creates a shallow clone of `value`. - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) - * and supports cloning arrays, array buffers, booleans, date objects, maps, - * numbers, `Object` objects, regexes, sets, strings, symbols, and typed - * arrays. The own enumerable properties of `arguments` objects are cloned - * as plain objects. An empty object is returned for uncloneable values such - * as error objects, functions, DOM nodes, and WeakMaps. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to clone. - * @returns {*} Returns the cloned value. - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var shallow = _.clone(objects); - * console.log(shallow[0] === objects[0]); - * // => true - */ - clone<T>(value: T): T; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.clone - */ - clone(): T; - } - - interface LoDashImplicitArrayWrapper<T> { - - /** - * @see _.clone - */ - clone(): T[]; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.clone - */ - clone(): T; - } - - //_.cloneDeep - interface LoDashStatic { - /** - * This method is like `_.clone` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to recursively clone. - * @returns {*} Returns the deep cloned value. - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var deep = _.cloneDeep(objects); - * console.log(deep[0] === objects[0]); - * // => false - */ - cloneDeep<T>(value: T): T; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.cloneDeep - */ - cloneDeep(): T; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.cloneDeep - */ - cloneDeep(): T[]; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.cloneDeep - */ - cloneDeep(): T; - } - - //_.cloneWith - interface LoDashStatic { - /** - * Creates a shallow clone of `value`. - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) - * and supports cloning arrays, array buffers, booleans, date objects, maps, - * numbers, `Object` objects, regexes, sets, strings, symbols, and typed - * arrays. The own enumerable properties of `arguments` objects are cloned - * as plain objects. An empty object is returned for uncloneable values such - * as error objects, functions, DOM nodes, and WeakMaps. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to clone. - * @returns {*} Returns the cloned value. - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var shallow = _.clone(objects); - * console.log(shallow[0] === objects[0]); - * // => true - */ - clone<T>( - value: T, - customizer: (value: any) => any): T; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.clone - */ - clone(customizer: (value: any) => any): T; - } - - interface LoDashImplicitArrayWrapper<T> { - - /** - * @see _.clone - */ - clone(customizer: (value: any) => any): T[]; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.clone - */ - clone(customizer: (value: any) => any): T; - } - - //_.cloneDeepWith - interface LoDashStatic { - /** - * Creates a deep clone of value. If customizer is provided it’s invoked to produce the cloned values. If - * customizer returns undefined cloning is handled by the method instead. The customizer is bound to thisArg - * and invoked with up to three argument; (value [, index|key, object]). - * Note: This method is loosely based on the structured clone algorithm. The enumerable properties of arguments - * objects and objects created by constructors other than Object are cloned to plain Object objects. An empty - * object is returned for uncloneable values such as functions, DOM nodes, Maps, Sets, and WeakMaps. - * @param value The value to deep clone. - * @param customizer The function to customize cloning values. - * @param thisArg The this binding of customizer. - * @return Returns the deep cloned value. - */ - cloneDeep<T>( - value: T, - customizer: (value: any) => any): T; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.cloneDeep - */ - cloneDeep(customizer: (value: any) => any): T; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.cloneDeep - */ - cloneDeep(customizer: (value: any) => any): T[]; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.cloneDeep - */ - cloneDeep(customizer: (value: any) => any): T; - } - - //_.eq - interface LoDashStatic { - /** - * Performs a [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'user': 'fred' }; - * var other = { 'user': 'fred' }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ - eq( - value: any, - other: any - ): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.isEqual - */ - eq( - other: any - ): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.isEqual - */ - eq( - other: any - ): LoDashExplicitWrapper<boolean>; - } - - //_.gt - interface LoDashStatic { - /** - * Checks if value is greater than other. - * - * @param value The value to compare. - * @param other The other value to compare. - * @return Returns true if value is greater than other, else false. - */ - gt( - value: any, - other: any - ): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.gt - */ - gt(other: any): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.gt - */ - gt(other: any): LoDashExplicitWrapper<boolean>; - } - - //_.gte - interface LoDashStatic { - /** - * Checks if value is greater than or equal to other. - * - * @param value The value to compare. - * @param other The other value to compare. - * @return Returns true if value is greater than or equal to other, else false. - */ - gte( - value: any, - other: any - ): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.gte - */ - gte(other: any): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.gte - */ - gte(other: any): LoDashExplicitWrapper<boolean>; - } - - //_.isArguments - interface LoDashStatic { - /** - * Checks if value is classified as an arguments object. - * - * @param value The value to check. - * @return Returns true if value is correctly classified, else false. - */ - isArguments(value?: any): value is IArguments; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.isArguments - */ - isArguments(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.isArguments - */ - isArguments(): LoDashExplicitWrapper<boolean>; - } - - //_.isArray - interface LoDashStatic { - /** - * Checks if value is classified as an Array object. - * @param value The value to check. - * - * @return Returns true if value is correctly classified, else false. - */ - isArray<T>(value?: any): value is T[]; - } - - interface LoDashImplicitWrapperBase<T,TWrapper> { - /** - * @see _.isArray - */ - isArray(): boolean; - } - - interface LoDashExplicitWrapperBase<T,TWrapper> { - /** - * @see _.isArray - */ - isArray(): LoDashExplicitWrapper<boolean>; - } - - //_.isArrayLike - interface LoDashStatic { - /** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @type Function - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ - isArrayLike<T>(value?: any): value is T[]; - } - - interface LoDashImplicitWrapperBase<T,TWrapper> { - /** - * @see _.isArrayLike - */ - isArrayLike(): boolean; - } - - interface LoDashExplicitWrapperBase<T,TWrapper> { - /** - * @see _.isArrayLike - */ - isArrayLike(): LoDashExplicitWrapper<boolean>; - } - - //_.isArrayLikeObject - interface LoDashStatic { - /** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @type Function - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ - isArrayLikeObject<T>(value?: any): value is T[]; - } - - interface LoDashImplicitWrapperBase<T,TWrapper> { - /** - * @see _.isArrayLikeObject - */ - isArrayLikeObject(): boolean; - } - - interface LoDashExplicitWrapperBase<T,TWrapper> { - /** - * @see _.isArrayLikeObject - */ - isArrayLikeObject(): LoDashExplicitWrapper<boolean>; - } - - //_.isBoolean - interface LoDashStatic { - /** - * Checks if value is classified as a boolean primitive or object. - * - * @param value The value to check. - * @return Returns true if value is correctly classified, else false. - */ - isBoolean(value?: any): value is boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.isBoolean - */ - isBoolean(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.isBoolean - */ - isBoolean(): LoDashExplicitWrapper<boolean>; - } - - //_.isDate - interface LoDashStatic { - /** - * Checks if value is classified as a Date object. - * @param value The value to check. - * - * @return Returns true if value is correctly classified, else false. - */ - isDate(value?: any): value is Date; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.isDate - */ - isDate(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.isDate - */ - isDate(): LoDashExplicitWrapper<boolean>; - } - - //_.isElement - interface LoDashStatic { - /** - * Checks if value is a DOM element. - * - * @param value The value to check. - * @return Returns true if value is a DOM element, else false. - */ - isElement(value?: any): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.isElement - */ - isElement(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.isElement - */ - isElement(): LoDashExplicitWrapper<boolean>; - } - - //_.isEmpty - interface LoDashStatic { - /** - * Checks if value is empty. A value is considered empty unless it’s an arguments object, array, string, or - * jQuery-like collection with a length greater than 0 or an object with own enumerable properties. - * @param value The value to inspect. - * @return Returns true if value is empty, else false. - **/ - isEmpty(value?: any[]|Dictionary<any>|string|any): boolean; - } - - interface LoDashImplicitWrapperBase<T,TWrapper> { - /** - * @see _.isEmpty - */ - isEmpty(): boolean; - } - - //_.isEqual - interface LoDashStatic { - /** - * Performs a deep comparison between two values to determine if they are - * equivalent. - * - * **Note:** This method supports comparing arrays, array buffers, booleans, - * date objects, error objects, maps, numbers, `Object` objects, regexes, - * sets, strings, symbols, and typed arrays. `Object` objects are compared - * by their own, not inherited, enumerable properties. Functions and DOM - * nodes are **not** supported. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'user': 'fred' }; - * var other = { 'user': 'fred' }; - * - * _.isEqual(object, other); - * // => true - * - * object === other; - * // => false - */ - isEqual( - value: any, - other: any - ): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.isEqual - */ - isEqual( - other: any - ): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.isEqual - */ - isEqual( - other: any - ): LoDashExplicitWrapper<boolean>; - } - - // _.isEqualWith - interface IsEqualCustomizer { - (value: any, other: any, indexOrKey?: number|string): boolean; - } - - interface LoDashStatic { - /** - * This method is like `_.isEqual` except that it accepts `customizer` which is - * invoked to compare values. If `customizer` returns `undefined` comparisons are - * handled by the method instead. The `customizer` is invoked with up to seven arguments: - * (objValue, othValue [, index|key, object, other, stack]). - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, othValue) { - * if (isGreeting(objValue) && isGreeting(othValue)) { - * return true; - * } - * } - * - * var array = ['hello', 'goodbye']; - * var other = ['hi', 'goodbye']; - * - * _.isEqualWith(array, other, customizer); - * // => true - */ - isEqualWith( - value: any, - other: any, - customizer: IsEqualCustomizer - ): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.isEqualWith - */ - isEqualWith( - other: any, - customizer: IsEqualCustomizer - ): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.isEqualWith - */ - isEqualWith( - other: any, - customizer: IsEqualCustomizer - ): LoDashExplicitWrapper<boolean>; - } - - //_.isError - interface LoDashStatic { - /** - * Checks if value is an Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, or URIError - * object. - * - * @param value The value to check. - * @return Returns true if value is an error object, else false. - */ - isError(value: any): value is Error; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.isError - */ - isError(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.isError - */ - isError(): LoDashExplicitWrapper<boolean>; - } - - //_.isFinite - interface LoDashStatic { - /** - * Checks if value is a finite primitive number. - * - * Note: This method is based on Number.isFinite. - * - * @param value The value to check. - * @return Returns true if value is a finite number, else false. - */ - isFinite(value?: any): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.isFinite - */ - isFinite(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.isFinite - */ - isFinite(): LoDashExplicitWrapper<boolean>; - } - - //_.isFunction - interface LoDashStatic { - /** - * Checks if value is classified as a Function object. - * - * @param value The value to check. - * @return Returns true if value is correctly classified, else false. - */ - isFunction(value?: any): value is Function; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.isFunction - */ - isFunction(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.isFunction - */ - isFunction(): LoDashExplicitWrapper<boolean>; - } - - //_.isInteger - interface LoDashStatic { - /** - * Checks if `value` is an integer. - * - * **Note:** This method is based on [`Number.isInteger`](https://mdn.io/Number/isInteger). - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an integer, else `false`. - * @example - * - * _.isInteger(3); - * // => true - * - * _.isInteger(Number.MIN_VALUE); - * // => false - * - * _.isInteger(Infinity); - * // => false - * - * _.isInteger('3'); - * // => false - */ - isInteger(value?: any): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.isInteger - */ - isInteger(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.isInteger - */ - isInteger(): LoDashExplicitWrapper<boolean>; - } - - //_.isLength - interface LoDashStatic { - /** - * Checks if `value` is a valid array-like length. - * - * **Note:** This function is loosely based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ - isLength(value?: any): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.isLength - */ - isLength(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.isLength - */ - isLength(): LoDashExplicitWrapper<boolean>; - } - - //_.isMatch - interface isMatchCustomizer { - (value: any, other: any, indexOrKey?: number|string): boolean; - } - - interface LoDashStatic { - /** - * Performs a deep comparison between `object` and `source` to determine if - * `object` contains equivalent property values. - * - * **Note:** This method supports comparing the same values as `_.isEqual`. - * - * @static - * @memberOf _ - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * var object = { 'user': 'fred', 'age': 40 }; - * - * _.isMatch(object, { 'age': 40 }); - * // => true - * - * _.isMatch(object, { 'age': 36 }); - * // => false - */ - isMatch(object: Object, source: Object): boolean; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.isMatch - */ - isMatch(source: Object): boolean; - } - - //_.isMatchWith - interface isMatchWithCustomizer { - (value: any, other: any, indexOrKey?: number|string): boolean; - } - - interface LoDashStatic { - /** - * This method is like `_.isMatch` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined` comparisons - * are handled by the method instead. The `customizer` is invoked with three - * arguments: (objValue, srcValue, index|key, object, source). - * - * @static - * @memberOf _ - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, srcValue) { - * if (isGreeting(objValue) && isGreeting(srcValue)) { - * return true; - * } - * } - * - * var object = { 'greeting': 'hello' }; - * var source = { 'greeting': 'hi' }; - * - * _.isMatchWith(object, source, customizer); - * // => true - */ - isMatchWith(object: Object, source: Object, customizer: isMatchWithCustomizer): boolean; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.isMatchWith - */ - isMatchWith(source: Object, customizer: isMatchWithCustomizer): boolean; - } - - //_.isNaN - interface LoDashStatic { - /** - * Checks if value is NaN. - * - * Note: This method is not the same as isNaN which returns true for undefined and other non-numeric values. - * - * @param value The value to check. - * @return Returns true if value is NaN, else false. - */ - isNaN(value?: any): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.isNaN - */ - isNaN(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.isNaN - */ - isNaN(): LoDashExplicitWrapper<boolean>; - } - - //_.isNative - interface LoDashStatic { - /** - * Checks if value is a native function. - * @param value The value to check. - * - * @retrun Returns true if value is a native function, else false. - */ - isNative(value: any): value is Function; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * see _.isNative - */ - isNative(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * see _.isNative - */ - isNative(): LoDashExplicitWrapper<boolean>; - } - - //_.isNil - interface LoDashStatic { - /** - * Checks if `value` is `null` or `undefined`. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is nullish, else `false`. - * @example - * - * _.isNil(null); - * // => true - * - * _.isNil(void 0); - * // => true - * - * _.isNil(NaN); - * // => false - */ - isNil(value?: any): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * see _.isNil - */ - isNil(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * see _.isNil - */ - isNil(): LoDashExplicitWrapper<boolean>; - } - - //_.isNull - interface LoDashStatic { - /** - * Checks if value is null. - * - * @param value The value to check. - * @return Returns true if value is null, else false. - */ - isNull(value?: any): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * see _.isNull - */ - isNull(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * see _.isNull - */ - isNull(): LoDashExplicitWrapper<boolean>; - } - - //_.isNumber - interface LoDashStatic { - /** - * Checks if value is classified as a Number primitive or object. - * - * Note: To exclude Infinity, -Infinity, and NaN, which are classified as numbers, use the _.isFinite method. - * - * @param value The value to check. - * @return Returns true if value is correctly classified, else false. - */ - isNumber(value?: any): value is number; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * see _.isNumber - */ - isNumber(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * see _.isNumber - */ - isNumber(): LoDashExplicitWrapper<boolean>; - } - - //_.isObject - interface LoDashStatic { - /** - * Checks if value is the language type of Object. (e.g. arrays, functions, objects, regexes, new Number(0), - * and new String('')) - * - * @param value The value to check. - * @return Returns true if value is an object, else false. - */ - isObject(value?: any): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * see _.isObject - */ - isObject(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * see _.isObject - */ - isObject(): LoDashExplicitWrapper<boolean>; - } - - //_.isObjectLike - interface LoDashStatic { - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - isObjectLike(value?: any): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * see _.isObjectLike - */ - isObjectLike(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * see _.isObjectLike - */ - isObjectLike(): LoDashExplicitWrapper<boolean>; - } - - //_.isPlainObject - interface LoDashStatic { - /** - * Checks if value is a plain object, that is, an object created by the Object constructor or one with a - * [[Prototype]] of null. - * - * Note: This method assumes objects created by the Object constructor have no inherited enumerable properties. - * - * @param value The value to check. - * @return Returns true if value is a plain object, else false. - */ - isPlainObject(value?: any): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * see _.isPlainObject - */ - isPlainObject(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * see _.isPlainObject - */ - isPlainObject(): LoDashExplicitWrapper<boolean>; - } - - //_.isRegExp - interface LoDashStatic { - /** - * Checks if value is classified as a RegExp object. - * @param value The value to check. - * - * @return Returns true if value is correctly classified, else false. - */ - isRegExp(value?: any): value is RegExp; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * see _.isRegExp - */ - isRegExp(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * see _.isRegExp - */ - isRegExp(): LoDashExplicitWrapper<boolean>; - } - - //_.isSafeInteger - interface LoDashStatic { - /** - * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 - * double precision number which isn't the result of a rounded unsafe integer. - * - * **Note:** This method is based on [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. - * @example - * - * _.isSafeInteger(3); - * // => true - * - * _.isSafeInteger(Number.MIN_VALUE); - * // => false - * - * _.isSafeInteger(Infinity); - * // => false - * - * _.isSafeInteger('3'); - * // => false - */ - isSafeInteger(value: any): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * see _.isSafeInteger - */ - isSafeInteger(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * see _.isSafeInteger - */ - isSafeInteger(): LoDashExplicitWrapper<boolean>; - } - - //_.isString - interface LoDashStatic { - /** - * Checks if value is classified as a String primitive or object. - * - * @param value The value to check. - * @return Returns true if value is correctly classified, else false. - */ - isString(value?: any): value is string; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * see _.isString - */ - isString(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * see _.isString - */ - isString(): LoDashExplicitWrapper<boolean>; - } - - //_.isSymbol - interface LoDashStatic { - /** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ - isSymbol(value: any): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * see _.isSymbol - */ - isSymbol(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * see _.isSymbol - */ - isSymbol(): LoDashExplicitWrapper<boolean>; - } - - //_.isTypedArray - interface LoDashStatic { - /** - * Checks if value is classified as a typed array. - * - * @param value The value to check. - * @return Returns true if value is correctly classified, else false. - */ - isTypedArray(value: any): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * see _.isTypedArray - */ - isTypedArray(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * see _.isTypedArray - */ - isTypedArray(): LoDashExplicitWrapper<boolean>; - } - - //_.isUndefined - interface LoDashStatic { - /** - * Checks if value is undefined. - * - * @param value The value to check. - * @return Returns true if value is undefined, else false. - */ - isUndefined(value: any): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * see _.isUndefined - */ - isUndefined(): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * see _.isUndefined - */ - isUndefined(): LoDashExplicitWrapper<boolean>; - } - - //_.lt - interface LoDashStatic { - /** - * Checks if value is less than other. - * - * @param value The value to compare. - * @param other The other value to compare. - * @return Returns true if value is less than other, else false. - */ - lt( - value: any, - other: any - ): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.lt - */ - lt(other: any): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.lt - */ - lt(other: any): LoDashExplicitWrapper<boolean>; - } - - //_.lte - interface LoDashStatic { - /** - * Checks if value is less than or equal to other. - * - * @param value The value to compare. - * @param other The other value to compare. - * @return Returns true if value is less than or equal to other, else false. - */ - lte( - value: any, - other: any - ): boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.lte - */ - lte(other: any): boolean; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.lte - */ - lte(other: any): LoDashExplicitWrapper<boolean>; - } - - //_.toArray - interface LoDashStatic { - /** - * Converts value to an array. - * - * @param value The value to convert. - * @return Returns the converted array. - */ - toArray<T>(value: List<T>|Dictionary<T>|NumericDictionary<T>): T[]; - - /** - * @see _.toArray - */ - toArray<TValue, TResult>(value: TValue): TResult[]; - - /** - * @see _.toArray - */ - toArray<TResult>(value?: any): TResult[]; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.toArray - */ - toArray<TResult>(): LoDashImplicitArrayWrapper<TResult>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.toArray - */ - toArray(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.toArray - */ - toArray<TResult>(): LoDashImplicitArrayWrapper<TResult>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.toArray - */ - toArray<TResult>(): LoDashExplicitArrayWrapper<TResult>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.toArray - */ - toArray(): LoDashExplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.toArray - */ - toArray<TResult>(): LoDashExplicitArrayWrapper<TResult>; - } - - //_.toPlainObject - interface LoDashStatic { - /** - * Converts value to a plain object flattening inherited enumerable properties of value to own properties - * of the plain object. - * - * @param value The value to convert. - * @return Returns the converted plain object. - */ - toPlainObject<TResult extends {}>(value?: any): TResult; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.toPlainObject - */ - toPlainObject<TResult extends {}>(): LoDashImplicitObjectWrapper<TResult>; - } - - //_.toInteger - interface LoDashStatic { - /** - * Converts `value` to an integer. - * - * **Note:** This function is loosely based on [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger). - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toInteger(3); - * // => 3 - * - * _.toInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toInteger(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toInteger('3'); - * // => 3 - */ - toInteger(value: any): number; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.toInteger - */ - toInteger(): LoDashImplicitWrapper<number>; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.toInteger - */ - toInteger(): LoDashExplicitWrapper<number>; - } - - //_.toLength - interface LoDashStatic { - /** - * Converts `value` to an integer suitable for use as the length of an - * array-like object. - * - * **Note:** This method is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @return {number} Returns the converted integer. - * @example - * - * _.toLength(3); - * // => 3 - * - * _.toLength(Number.MIN_VALUE); - * // => 0 - * - * _.toLength(Infinity); - * // => 4294967295 - * - * _.toLength('3'); - * // => 3 - */ - toLength(value: any): number; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.toLength - */ - toLength(): LoDashImplicitWrapper<number>; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.toLength - */ - toLength(): LoDashExplicitWrapper<number>; - } - - //_.toNumber - interface LoDashStatic { - /** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3); - * // => 3 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3'); - * // => 3 - */ - toNumber(value: any): number; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.toNumber - */ - toNumber(): LoDashImplicitWrapper<number>; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.toNumber - */ - toNumber(): LoDashExplicitWrapper<number>; - } - - //_.toSafeInteger - interface LoDashStatic { - /** - * Converts `value` to a safe integer. A safe integer can be compared and - * represented correctly. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toSafeInteger(3); - * // => 3 - * - * _.toSafeInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toSafeInteger(Infinity); - * // => 9007199254740991 - * - * _.toSafeInteger('3'); - * // => 3 - */ - toSafeInteger(value: any): number; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.toSafeInteger - */ - toSafeInteger(): LoDashImplicitWrapper<number>; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.toSafeInteger - */ - toSafeInteger(): LoDashExplicitWrapper<number>; - } - - //_.toString DUMMY - interface LoDashStatic { - /** - * Converts `value` to a string if it's not one. An empty string is returned - * for `null` and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to process. - * @returns {string} Returns the string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ - toString(value: any): string; - } - - /******** - * Math * - ********/ - - //_.add - interface LoDashStatic { - /** - * Adds two numbers. - * - * @param augend The first number to add. - * @param addend The second number to add. - * @return Returns the sum. - */ - add( - augend: number, - addend: number - ): number; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.add - */ - add(addend: number): number; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.add - */ - add(addend: number): LoDashExplicitWrapper<number>; - } - - //_.ceil - interface LoDashStatic { - /** - * Calculates n rounded up to precision. - * - * @param n The number to round up. - * @param precision The precision to round up to. - * @return Returns the rounded up number. - */ - ceil( - n: number, - precision?: number - ): number; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.ceil - */ - ceil(precision?: number): number; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.ceil - */ - ceil(precision?: number): LoDashExplicitWrapper<number>; - } - - //_.floor - interface LoDashStatic { - /** - * Calculates n rounded down to precision. - * - * @param n The number to round down. - * @param precision The precision to round down to. - * @return Returns the rounded down number. - */ - floor( - n: number, - precision?: number - ): number; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.floor - */ - floor(precision?: number): number; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.floor - */ - floor(precision?: number): LoDashExplicitWrapper<number>; - } - - //_.max - interface LoDashStatic { - /** - * Computes the maximum value of `array`. If `array` is empty or falsey - * `undefined` is returned. - * - * @static - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @returns {*} Returns the maximum value. - */ - max<T>( - collection: List<T> - ): T; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.max - */ - max(): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.max - */ - max<T>(): T; - } - - //_.maxBy - interface LoDashStatic { - /** - * This method is like `_.max` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the criterion by which - * the value is ranked. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element. - * @returns {*} Returns the maximum value. - * @example - * - * var objects = [{ 'n': 1 }, { 'n': 2 }]; - * - * _.maxBy(objects, function(o) { return o.a; }); - * // => { 'n': 2 } - * - * // using the `_.property` iteratee shorthand - * _.maxBy(objects, 'n'); - * // => { 'n': 2 } - */ - maxBy<T>( - collection: List<T>, - iteratee?: ListIterator<T, any> - ): T; - - /** - * @see _.maxBy - */ - maxBy<T>( - collection: Dictionary<T>, - iteratee?: DictionaryIterator<T, any> - ): T; - - /** - * @see _.maxBy - */ - maxBy<T>( - collection: List<T>|Dictionary<T>, - iteratee?: string - ): T; - - /** - * @see _.maxBy - */ - maxBy<TObject extends {}, T>( - collection: List<T>|Dictionary<T>, - whereValue?: TObject - ): T; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.maxBy - */ - maxBy( - iteratee?: ListIterator<T, any> - ): T; - - /** - * @see _.maxBy - */ - maxBy( - iteratee?: string - ): T; - - /** - * @see _.maxBy - */ - maxBy<TObject extends {}>( - whereValue?: TObject - ): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.maxBy - */ - maxBy<T>( - iteratee?: ListIterator<T, any>|DictionaryIterator<T, any>, - thisArg?: any - ): T; - - /** - * @see _.maxBy - */ - maxBy<T>( - iteratee?: string, - thisArg?: any - ): T; - - /** - * @see _.maxBy - */ - maxBy<TObject extends {}, T>( - whereValue?: TObject - ): T; - } - - //_.mean - interface LoDashStatic { - /** - * Computes the mean of the values in `array`. - * - * @static - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @returns {number} Returns the mean. - * @example - * - * _.mean([4, 2, 8, 6]); - * // => 5 - */ - mean<T>( - collection: List<T> - ): number; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.mean - */ - mean<T>(): number; - - /** - * @see _.mean - */ - mean(): number; - } - - //_.min - interface LoDashStatic { - /** - * Computes the minimum value of `array`. If `array` is empty or falsey - * `undefined` is returned. - * - * @static - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @returns {*} Returns the minimum value. - */ - min<T>( - collection: List<T> - ): T; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.min - */ - min(): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.min - */ - min<T>(): T; - } - - //_.minBy - interface LoDashStatic { - /** - * This method is like `_.min` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the criterion by which - * the value is ranked. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element. - * @returns {*} Returns the minimum value. - * @example - * - * var objects = [{ 'n': 1 }, { 'n': 2 }]; - * - * _.minBy(objects, function(o) { return o.a; }); - * // => { 'n': 1 } - * - * // using the `_.property` iteratee shorthand - * _.minBy(objects, 'n'); - * // => { 'n': 1 } - */ - minBy<T>( - collection: List<T>, - iteratee?: ListIterator<T, any> - ): T; - - /** - * @see _.minBy - */ - minBy<T>( - collection: Dictionary<T>, - iteratee?: DictionaryIterator<T, any> - ): T; - - /** - * @see _.minBy - */ - minBy<T>( - collection: List<T>|Dictionary<T>, - iteratee?: string - ): T; - - /** - * @see _.minBy - */ - minBy<TObject extends {}, T>( - collection: List<T>|Dictionary<T>, - whereValue?: TObject - ): T; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.minBy - */ - minBy( - iteratee?: ListIterator<T, any> - ): T; - - /** - * @see _.minBy - */ - minBy( - iteratee?: string - ): T; - - /** - * @see _.minBy - */ - minBy<TObject extends {}>( - whereValue?: TObject - ): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.minBy - */ - minBy<T>( - iteratee?: ListIterator<T, any>|DictionaryIterator<T, any>, - thisArg?: any - ): T; - - /** - * @see _.minBy - */ - minBy<T>( - iteratee?: string, - thisArg?: any - ): T; - - /** - * @see _.minBy - */ - minBy<TObject extends {}, T>( - whereValue?: TObject - ): T; - } - - //_.round - interface LoDashStatic { - /** - * Calculates n rounded to precision. - * - * @param n The number to round. - * @param precision The precision to round to. - * @return Returns the rounded number. - */ - round( - n: number, - precision?: number - ): number; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.round - */ - round(precision?: number): number; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.round - */ - round(precision?: number): LoDashExplicitWrapper<number>; - } - - //_.sum - interface LoDashStatic { - /** - * Computes the sum of the values in `array`. - * - * @static - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @returns {number} Returns the sum. - * @example - * - * _.sum([4, 2, 8, 6]); - * // => 20 - */ - sum<T>(collection: List<T>): number; - - /** - * @see _.sum - */ - sum(collection: List<number>|Dictionary<number>): number; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.sum - */ - sum(): number; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.sum - **/ - sum<TValue>(): number; - - /** - * @see _.sum - */ - sum(): number; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.sum - */ - sum(): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.sum - */ - sum<TValue>(): LoDashExplicitWrapper<number>; - - /** - * @see _.sum - */ - sum(): LoDashExplicitWrapper<number>; - } - - //_.sumBy - interface LoDashStatic { - /** - * This method is like `_.sum` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the value to be summed. - * The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the sum. - * @example - * - * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; - * - * _.sumBy(objects, function(o) { return o.n; }); - * // => 20 - * - * // using the `_.property` iteratee shorthand - * _.sumBy(objects, 'n'); - * // => 20 - */ - sumBy<T>( - collection: List<T>, - iteratee: ListIterator<T, number> - ): number; - - /** - * @see _.sumBy - **/ - sumBy<T>( - collection: Dictionary<T>, - iteratee: DictionaryIterator<T, number> - ): number; - - /** - * @see _.sumBy - */ - sumBy<T>( - collection: List<number>|Dictionary<number>, - iteratee: string - ): number; - - /** - * @see _.sumBy - */ - sumBy<T>(collection: List<T>|Dictionary<T>): number; - - /** - * @see _.sumBy - */ - sumBy(collection: List<number>|Dictionary<number>): number; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.sumBy - */ - sumBy( - iteratee: ListIterator<T, number> - ): number; - - /** - * @see _.sumBy - */ - sumBy(iteratee: string): number; - - /** - * @see _.sumBy - */ - sumBy(): number; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.sumBy - **/ - sumBy<TValue>( - iteratee: ListIterator<TValue, number>|DictionaryIterator<TValue, number> - ): number; - - /** - * @see _.sumBy - */ - sumBy(iteratee: string): number; - - /** - * @see _.sumBy - */ - sumBy(): number; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.sumBy - */ - sumBy( - iteratee: ListIterator<T, number> - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sumBy - */ - sumBy(iteratee: string): LoDashExplicitWrapper<number>; - - /** - * @see _.sumBy - */ - sumBy(): LoDashExplicitWrapper<number>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.sumBy - */ - sumBy<TValue>( - iteratee: ListIterator<TValue, number>|DictionaryIterator<TValue, number> - ): LoDashExplicitWrapper<number>; - - /** - * @see _.sumBy - */ - sumBy(iteratee: string): LoDashExplicitWrapper<number>; - - /** - * @see _.sumBy - */ - sumBy(): LoDashExplicitWrapper<number>; - } - - /********** - * Number * - **********/ - - //_.subtract - interface LoDashStatic { - /** - * Subtract two numbers. - * - * @static - * @memberOf _ - * @category Math - * @param {number} minuend The first number in a subtraction. - * @param {number} subtrahend The second number in a subtraction. - * @returns {number} Returns the difference. - * @example - * - * _.subtract(6, 4); - * // => 2 - */ - subtract( - minuend: number, - subtrahend: number - ): number; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.subtract - */ - subtract( - subtrahend: number - ): number; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.subtract - */ - subtract( - subtrahend: number - ): LoDashExplicitWrapper<number>; - } - - //_.clamp - interface LoDashStatic { - /** - * Clamps `number` within the inclusive `lower` and `upper` bounds. - * - * @static - * @memberOf _ - * @category Number - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - * @example - * - * _.clamp(-10, -5, 5); - * // => -5 - * - * _.clamp(10, -5, 5); - * // => 5 - */ - clamp( - number: number, - lower: number, - upper: number - ): number; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.clamp - */ - clamp( - lower: number, - upper: number - ): number; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.clamp - */ - clamp( - lower: number, - upper: number - ): LoDashExplicitWrapper<number>; - } - - //_.inRange - interface LoDashStatic { - /** - * Checks if n is between start and up to but not including, end. If end is not specified it’s set to start - * with start then set to 0. - * - * @param n The number to check. - * @param start The start of the range. - * @param end The end of the range. - * @return Returns true if n is in the range, else false. - */ - inRange( - n: number, - start: number, - end: number - ): boolean; - - - /** - * @see _.inRange - */ - inRange( - n: number, - end: number - ): boolean; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.inRange - */ - inRange( - start: number, - end: number - ): boolean; - - /** - * @see _.inRange - */ - inRange(end: number): boolean; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.inRange - */ - inRange( - start: number, - end: number - ): LoDashExplicitWrapper<boolean>; - - /** - * @see _.inRange - */ - inRange(end: number): LoDashExplicitWrapper<boolean>; - } - - //_.random - interface LoDashStatic { - /** - * Produces a random number between min and max (inclusive). If only one argument is provided a number between - * 0 and the given number is returned. If floating is true, or either min or max are floats, a floating-point - * number is returned instead of an integer. - * - * @param min The minimum possible value. - * @param max The maximum possible value. - * @param floating Specify returning a floating-point number. - * @return Returns the random number. - */ - random( - min?: number, - max?: number, - floating?: boolean - ): number; - - /** - * @see _.random - */ - random( - min?: number, - floating?: boolean - ): number; - - /** - * @see _.random - */ - random(floating?: boolean): number; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.random - */ - random( - max?: number, - floating?: boolean - ): number; - - /** - * @see _.random - */ - random(floating?: boolean): number; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.random - */ - random( - max?: number, - floating?: boolean - ): LoDashExplicitWrapper<number>; - - /** - * @see _.random - */ - random(floating?: boolean): LoDashExplicitWrapper<number>; - } - - /********** - * Object * - **********/ - - //_.assign - interface LoDashStatic { - /** - * Assigns own enumerable properties of source objects to the destination - * object. Source objects are applied from left to right. Subsequent sources - * overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object` and is loosely based on - * [`Object.assign`](https://mdn.io/Object/assign). - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @example - * - * function Foo() { - * this.c = 3; - * } - * - * function Bar() { - * this.e = 5; - * } - * - * Foo.prototype.d = 4; - * Bar.prototype.f = 6; - * - * _.assign({ 'a': 1 }, new Foo, new Bar); - * // => { 'a': 1, 'c': 3, 'e': 5 } - */ - assign<TObject extends {}, TSource extends {}, TResult extends {}>( - object: TObject, - source: TSource - ): TResult; - - /** - * @see assign - */ - assign<TObject extends {}, TSource1 extends {}, TSource2 extends {}, TResult extends {}>( - object: TObject, - source1: TSource1, - source2: TSource2 - ): TResult; - - /** - * @see assign - */ - assign<TObject extends {}, TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TResult extends {}>( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3 - ): TResult; - - /** - * @see assign - */ - assign<TObject extends {}, TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TSource4 extends {}, - TResult extends {}> - ( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4 - ): TResult; - - /** - * @see _.assign - */ - assign<TObject extends {}>(object: TObject): TObject; - - /** - * @see _.assign - */ - assign<TObject extends {}, TResult extends {}>( - object: TObject, ...otherArgs: any[] - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.assign - */ - assign<TSource extends {}, TResult extends {}>( - source: TSource - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see assign - */ - assign<TSource1 extends {}, TSource2 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2 - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see assign - */ - assign<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3 - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see assign - */ - assign<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TSource4 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4 - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.assign - */ - assign(): LoDashImplicitObjectWrapper<T>; - - /** - * @see _.assign - */ - assign<TResult extends {}>(...otherArgs: any[]): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.assign - */ - assign<TSource extends {}, TResult extends {}>( - source: TSource - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see assign - */ - assign<TSource1 extends {}, TSource2 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2 - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see assign - */ - assign<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3 - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see assign - */ - assign<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TSource4 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4 - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.assign - */ - assign(): LoDashExplicitObjectWrapper<T>; - - /** - * @see _.assign - */ - assign<TResult extends {}>(...otherArgs: any[]): LoDashExplicitObjectWrapper<TResult>; - } - - //_.assignWith - interface AssignCustomizer { - (objectValue: any, sourceValue: any, key?: string, object?: {}, source?: {}): any; - } - - interface LoDashStatic { - /** - * This method is like `_.assign` except that it accepts `customizer` which - * is invoked to produce the assigned values. If `customizer` returns `undefined` - * assignment is handled by the method instead. The `customizer` is invoked - * with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - assignWith<TObject extends {}, TSource extends {}, TResult extends {}>( - object: TObject, - source: TSource, - customizer: AssignCustomizer - ): TResult; - - /** - * @see assignWith - */ - assignWith<TObject extends {}, TSource1 extends {}, TSource2 extends {}, TResult extends {}>( - object: TObject, - source1: TSource1, - source2: TSource2, - customizer: AssignCustomizer - ): TResult; - - /** - * @see assignWith - */ - assignWith<TObject extends {}, TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TResult extends {}>( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3, - customizer: AssignCustomizer - ): TResult; - - /** - * @see assignWith - */ - assignWith<TObject extends {}, TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TSource4 extends {}, - TResult extends {}> - ( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4, - customizer: AssignCustomizer - ): TResult; - - /** - * @see _.assignWith - */ - assignWith<TObject extends {}>(object: TObject): TObject; - - /** - * @see _.assignWith - */ - assignWith<TObject extends {}, TResult extends {}>( - object: TObject, ...otherArgs: any[] - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.assignWith - */ - assignWith<TSource extends {}, TResult extends {}>( - source: TSource, - customizer: AssignCustomizer - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see assignWith - */ - assignWith<TSource1 extends {}, TSource2 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - customizer: AssignCustomizer - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see assignWith - */ - assignWith<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - customizer: AssignCustomizer - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see assignWith - */ - assignWith<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TSource4 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4, - customizer: AssignCustomizer - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.assignWith - */ - assignWith(): LoDashImplicitObjectWrapper<T>; - - /** - * @see _.assignWith - */ - assignWith<TResult extends {}>(...otherArgs: any[]): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.assignWith - */ - assignWith<TSource extends {}, TResult extends {}>( - source: TSource, - customizer: AssignCustomizer - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see assignWith - */ - assignWith<TSource1 extends {}, TSource2 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - customizer: AssignCustomizer - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see assignWith - */ - assignWith<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - customizer: AssignCustomizer - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see assignWith - */ - assignWith<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TSource4 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4, - customizer: AssignCustomizer - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.assignWith - */ - assignWith(): LoDashExplicitObjectWrapper<T>; - - /** - * @see _.assignWith - */ - assignWith<TResult extends {}>(...otherArgs: any[]): LoDashExplicitObjectWrapper<TResult>; - } - - //_.assignIn - interface LoDashStatic { - /** - * This method is like `_.assign` except that it iterates over own and - * inherited source properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @alias extend - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @example - * - * function Foo() { - * this.b = 2; - * } - * - * function Bar() { - * this.d = 4; - * } - * - * Foo.prototype.c = 3; - * Bar.prototype.e = 5; - * - * _.assignIn({ 'a': 1 }, new Foo, new Bar); - * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5 } - */ - assignIn<TObject extends {}, TSource extends {}, TResult extends {}>( - object: TObject, - source: TSource - ): TResult; - - /** - * @see assignIn - */ - assignIn<TObject extends {}, TSource1 extends {}, TSource2 extends {}, TResult extends {}>( - object: TObject, - source1: TSource1, - source2: TSource2 - ): TResult; - - /** - * @see assignIn - */ - assignIn<TObject extends {}, TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TResult extends {}>( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3 - ): TResult; - - /** - * @see assignIn - */ - assignIn<TObject extends {}, TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TSource4 extends {}, - TResult extends {}> - ( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4 - ): TResult; - - /** - * @see _.assignIn - */ - assignIn<TObject extends {}>(object: TObject): TObject; - - /** - * @see _.assignIn - */ - assignIn<TObject extends {}, TResult extends {}>( - object: TObject, ...otherArgs: any[] - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.assignIn - */ - assignIn<TSource extends {}, TResult extends {}>( - source: TSource - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see assignIn - */ - assignIn<TSource1 extends {}, TSource2 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2 - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see assignIn - */ - assignIn<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3 - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see assignIn - */ - assignIn<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TSource4 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4 - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.assignIn - */ - assignIn(): LoDashImplicitObjectWrapper<T>; - - /** - * @see _.assignIn - */ - assignIn<TResult extends {}>(...otherArgs: any[]): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.assignIn - */ - assignIn<TSource extends {}, TResult extends {}>( - source: TSource - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see assignIn - */ - assignIn<TSource1 extends {}, TSource2 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2 - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see assignIn - */ - assignIn<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3 - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see assignIn - */ - assignIn<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TSource4 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4 - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.assignIn - */ - assignIn(): LoDashExplicitObjectWrapper<T>; - - /** - * @see _.assignIn - */ - assignIn<TResult extends {}>(...otherArgs: any[]): LoDashExplicitObjectWrapper<TResult>; - } - - //_.assignInWith - interface AssignCustomizer { - (objectValue: any, sourceValue: any, key?: string, object?: {}, source?: {}): any; - } - - interface LoDashStatic { - /** - * This method is like `_.assignIn` except that it accepts `customizer` which - * is invoked to produce the assigned values. If `customizer` returns `undefined` - * assignment is handled by the method instead. The `customizer` is invoked - * with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @alias extendWith - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignInWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - assignInWith<TObject extends {}, TSource extends {}, TResult extends {}>( - object: TObject, - source: TSource, - customizer: AssignCustomizer - ): TResult; - - /** - * @see assignInWith - */ - assignInWith<TObject extends {}, TSource1 extends {}, TSource2 extends {}, TResult extends {}>( - object: TObject, - source1: TSource1, - source2: TSource2, - customizer: AssignCustomizer - ): TResult; - - /** - * @see assignInWith - */ - assignInWith<TObject extends {}, TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TResult extends {}>( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3, - customizer: AssignCustomizer - ): TResult; - - /** - * @see assignInWith - */ - assignInWith<TObject extends {}, TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TSource4 extends {}, - TResult extends {}> - ( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4, - customizer: AssignCustomizer - ): TResult; - - /** - * @see _.assignInWith - */ - assignInWith<TObject extends {}>(object: TObject): TObject; - - /** - * @see _.assignInWith - */ - assignInWith<TObject extends {}, TResult extends {}>( - object: TObject, ...otherArgs: any[] - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.assignInWith - */ - assignInWith<TSource extends {}, TResult extends {}>( - source: TSource, - customizer: AssignCustomizer - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see assignInWith - */ - assignInWith<TSource1 extends {}, TSource2 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - customizer: AssignCustomizer - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see assignInWith - */ - assignInWith<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - customizer: AssignCustomizer - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see assignInWith - */ - assignInWith<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TSource4 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4, - customizer: AssignCustomizer - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.assignInWith - */ - assignInWith(): LoDashImplicitObjectWrapper<T>; - - /** - * @see _.assignInWith - */ - assignInWith<TResult extends {}>(...otherArgs: any[]): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.assignInWith - */ - assignInWith<TSource extends {}, TResult extends {}>( - source: TSource, - customizer: AssignCustomizer - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see assignInWith - */ - assignInWith<TSource1 extends {}, TSource2 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - customizer: AssignCustomizer - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see assignInWith - */ - assignInWith<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - customizer: AssignCustomizer - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see assignInWith - */ - assignInWith<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TSource4 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4, - customizer: AssignCustomizer - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.assignInWith - */ - assignInWith(): LoDashExplicitObjectWrapper<T>; - - /** - * @see _.assignInWith - */ - assignInWith<TResult extends {}>(...otherArgs: any[]): LoDashExplicitObjectWrapper<TResult>; - } - - //_.create - interface LoDashStatic { - /** - * Creates an object that inherits from the given prototype object. If a properties object is provided its own - * enumerable properties are assigned to the created object. - * - * @param prototype The object to inherit from. - * @param properties The properties to assign to the object. - * @return Returns the new object. - */ - create<T extends Object, U extends Object>( - prototype: T, - properties?: U - ): T & U; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.create - */ - create<U extends Object>(properties?: U): LoDashImplicitObjectWrapper<T & U>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.create - */ - create<U extends Object>(properties?: U): LoDashExplicitObjectWrapper<T & U>; - } - - //_.defaults - interface LoDashStatic { - /** - * Assigns own enumerable properties of source object(s) to the destination object for all destination - * properties that resolve to undefined. Once a property is set, additional values of the same property are - * ignored. - * - * Note: This method mutates object. - * - * @param object The destination object. - * @param sources The source objects. - * @return The destination object. - */ - defaults<Obj extends {}, TResult extends {}>( - object: Obj, - ...sources: {}[] - ): TResult; - - /** - * @see _.defaults - */ - defaults<Obj extends {}, S1 extends {}, TResult extends {}>( - object: Obj, - source1: S1, - ...sources: {}[] - ): TResult; - - /** - * @see _.defaults - */ - defaults<Obj extends {}, S1 extends {}, S2 extends {}, TResult extends {}>( - object: Obj, - source1: S1, - source2: S2, - ...sources: {}[] - ): TResult; - - /** - * @see _.defaults - */ - defaults<Obj extends {}, S1 extends {}, S2 extends {}, S3 extends {}, TResult extends {}>( - object: Obj, - source1: S1, - source2: S2, - source3: S3, - ...sources: {}[] - ): TResult; - - /** - * @see _.defaults - */ - defaults<Obj extends {}, S1 extends {}, S2 extends {}, S3 extends {}, S4 extends {}, TResult extends {}>( - object: Obj, - source1: S1, - source2: S2, - source3: S3, - source4: S4, - ...sources: {}[] - ): TResult; - - /** - * @see _.defaults - */ - defaults<TResult extends {}>( - object: {}, - ...sources: {}[] - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.defaults - */ - defaults<S1 extends {}, TResult extends {}>( - source1: S1, - ...sources: {}[] - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.defaults - */ - defaults<S1 extends {}, S2 extends {}, TResult extends {}>( - source1: S1, - source2: S2, - ...sources: {}[] - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.defaults - */ - defaults<S1 extends {}, S2 extends {}, S3 extends {}, TResult extends {}>( - source1: S1, - source2: S2, - source3: S3, - ...sources: {}[] - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.defaults - */ - defaults<S1 extends {}, S2 extends {}, S3 extends {}, S4 extends {}, TResult extends {}>( - source1: S1, - source2: S2, - source3: S3, - source4: S4, - ...sources: {}[] - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.defaults - */ - defaults(): LoDashImplicitObjectWrapper<T>; - - /** - * @see _.defaults - */ - defaults<TResult>(...sources: {}[]): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.defaults - */ - defaults<S1 extends {}, TResult extends {}>( - source1: S1, - ...sources: {}[] - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.defaults - */ - defaults<S1 extends {}, S2 extends {}, TResult extends {}>( - source1: S1, - source2: S2, - ...sources: {}[] - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.defaults - */ - defaults<S1 extends {}, S2 extends {}, S3 extends {}, TResult extends {}>( - source1: S1, - source2: S2, - source3: S3, - ...sources: {}[] - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.defaults - */ - defaults<S1 extends {}, S2 extends {}, S3 extends {}, S4 extends {}, TResult extends {}>( - source1: S1, - source2: S2, - source3: S3, - source4: S4, - ...sources: {}[] - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.defaults - */ - defaults(): LoDashExplicitObjectWrapper<T>; - - /** - * @see _.defaults - */ - defaults<TResult>(...sources: {}[]): LoDashExplicitObjectWrapper<TResult>; - } - - //_.defaultsDeep - interface LoDashStatic { - /** - * This method is like _.defaults except that it recursively assigns default properties. - * @param object The destination object. - * @param sources The source objects. - * @return Returns object. - **/ - defaultsDeep<T, TResult>( - object: T, - ...sources: any[]): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.defaultsDeep - **/ - defaultsDeep<TResult>(...sources: any[]): LoDashImplicitObjectWrapper<TResult> - } - - //_.extend - interface LoDashStatic { - /** - * @see assign - */ - extend<TObject extends {}, TSource extends {}, TResult extends {}>( - object: TObject, - source: TSource, - customizer?: AssignCustomizer, - thisArg?: any - ): TResult; - - /** - * @see assign - */ - extend<TObject extends {}, TSource1 extends {}, TSource2 extends {}, TResult extends {}>( - object: TObject, - source1: TSource1, - source2: TSource2, - customizer?: AssignCustomizer, - thisArg?: any - ): TResult; - - /** - * @see assign - */ - extend<TObject extends {}, TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TResult extends {}>( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3, - customizer?: AssignCustomizer, - thisArg?: any - ): TResult; - - /** - * @see assign - */ - extend<TObject extends {}, TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TSource4 extends {}, - TResult extends {}> - ( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4, - customizer?: AssignCustomizer, - thisArg?: any - ): TResult; - - /** - * @see _.assign - */ - extend<TObject extends {}>(object: TObject): TObject; - - /** - * @see _.assign - */ - extend<TObject extends {}, TResult extends {}>( - object: TObject, ...otherArgs: any[] - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.assign - */ - extend<TSource extends {}, TResult extends {}>( - source: TSource, - customizer?: AssignCustomizer, - thisArg?: any - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see assign - */ - extend<TSource1 extends {}, TSource2 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - customizer?: AssignCustomizer, - thisArg?: any - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see assign - */ - extend<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - customizer?: AssignCustomizer, - thisArg?: any - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see assign - */ - extend<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TSource4 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4, - customizer?: AssignCustomizer, - thisArg?: any - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.assign - */ - extend(): LoDashImplicitObjectWrapper<T>; - - /** - * @see _.assign - */ - extend<TResult extends {}>(...otherArgs: any[]): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.assign - */ - extend<TSource extends {}, TResult extends {}>( - source: TSource, - customizer?: AssignCustomizer, - thisArg?: any - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see assign - */ - extend<TSource1 extends {}, TSource2 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - customizer?: AssignCustomizer, - thisArg?: any - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see assign - */ - extend<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - customizer?: AssignCustomizer, - thisArg?: any - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see assign - */ - extend<TSource1 extends {}, TSource2 extends {}, TSource3 extends {}, TSource4 extends {}, TResult extends {}>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4, - customizer?: AssignCustomizer, - thisArg?: any - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.assign - */ - extend(): LoDashExplicitObjectWrapper<T>; - - /** - * @see _.assign - */ - extend<TResult extends {}>(...otherArgs: any[]): LoDashExplicitObjectWrapper<TResult>; - } - - //_.findKey - interface LoDashStatic { - /** - * This method is like _.find except that it returns the key of the first element predicate returns truthy for - * instead of the element itself. - * - * If a property name is provided for predicate the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for predicate the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * @param object The object to search. - * @param predicate The function invoked per iteration. - * @param thisArg The this binding of predicate. - * @return Returns the key of the matched element, else undefined. - */ - findKey<TValues, TObject>( - object: TObject, - predicate?: DictionaryIterator<TValues, boolean>, - thisArg?: any - ): string; - - /** - * @see _.findKey - */ - findKey<TObject>( - object: TObject, - predicate?: ObjectIterator<any, boolean>, - thisArg?: any - ): string; - - /** - * @see _.findKey - */ - findKey<TObject>( - object: TObject, - predicate?: string, - thisArg?: any - ): string; - - /** - * @see _.findKey - */ - findKey<TWhere extends Dictionary<any>, TObject>( - object: TObject, - predicate?: TWhere - ): string; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.findKey - */ - findKey<TValues>( - predicate?: DictionaryIterator<TValues, boolean>, - thisArg?: any - ): string; - - /** - * @see _.findKey - */ - findKey( - predicate?: ObjectIterator<any, boolean>, - thisArg?: any - ): string; - - /** - * @see _.findKey - */ - findKey( - predicate?: string, - thisArg?: any - ): string; - - /** - * @see _.findKey - */ - findKey<TWhere extends Dictionary<any>>( - predicate?: TWhere - ): string; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.findKey - */ - findKey<TValues>( - predicate?: DictionaryIterator<TValues, boolean>, - thisArg?: any - ): LoDashExplicitWrapper<string>; - - /** - * @see _.findKey - */ - findKey( - predicate?: ObjectIterator<any, boolean>, - thisArg?: any - ): LoDashExplicitWrapper<string>; - - /** - * @see _.findKey - */ - findKey( - predicate?: string, - thisArg?: any - ): LoDashExplicitWrapper<string>; - - /** - * @see _.findKey - */ - findKey<TWhere extends Dictionary<any>>( - predicate?: TWhere - ): LoDashExplicitWrapper<string>; - } - - //_.findLastKey - interface LoDashStatic { - /** - * This method is like _.findKey except that it iterates over elements of a collection in the opposite order. - * - * If a property name is provided for predicate the created _.property style callback returns the property - * value of the given element. - * - * If a value is also provided for thisArg the created _.matchesProperty style callback returns true for - * elements that have a matching property value, else false. - * - * If an object is provided for predicate the created _.matches style callback returns true for elements that - * have the properties of the given object, else false. - * - * @param object The object to search. - * @param predicate The function invoked per iteration. - * @param thisArg The this binding of predicate. - * @return Returns the key of the matched element, else undefined. - */ - findLastKey<TValues, TObject>( - object: TObject, - predicate?: DictionaryIterator<TValues, boolean>, - thisArg?: any - ): string; - - /** - * @see _.findLastKey - */ - findLastKey<TObject>( - object: TObject, - predicate?: ObjectIterator<any, boolean>, - thisArg?: any - ): string; - - /** - * @see _.findLastKey - */ - findLastKey<TObject>( - object: TObject, - predicate?: string, - thisArg?: any - ): string; - - /** - * @see _.findLastKey - */ - findLastKey<TWhere extends Dictionary<any>, TObject>( - object: TObject, - predicate?: TWhere - ): string; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.findLastKey - */ - findLastKey<TValues>( - predicate?: DictionaryIterator<TValues, boolean>, - thisArg?: any - ): string; - - /** - * @see _.findLastKey - */ - findLastKey( - predicate?: ObjectIterator<any, boolean>, - thisArg?: any - ): string; - - /** - * @see _.findLastKey - */ - findLastKey( - predicate?: string, - thisArg?: any - ): string; - - /** - * @see _.findLastKey - */ - findLastKey<TWhere extends Dictionary<any>>( - predicate?: TWhere - ): string; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.findLastKey - */ - findLastKey<TValues>( - predicate?: DictionaryIterator<TValues, boolean>, - thisArg?: any - ): LoDashExplicitWrapper<string>; - - /** - * @see _.findLastKey - */ - findLastKey( - predicate?: ObjectIterator<any, boolean>, - thisArg?: any - ): LoDashExplicitWrapper<string>; - - /** - * @see _.findLastKey - */ - findLastKey( - predicate?: string, - thisArg?: any - ): LoDashExplicitWrapper<string>; - - /** - * @see _.findLastKey - */ - findLastKey<TWhere extends Dictionary<any>>( - predicate?: TWhere - ): LoDashExplicitWrapper<string>; - } - - //_.forIn - interface LoDashStatic { - /** - * Iterates over own and inherited enumerable properties of an object invoking iteratee for each property. The - * iteratee is bound to thisArg and invoked with three arguments: (value, key, object). Iteratee functions may - * exit iteration early by explicitly returning false. - * - * @param object The object to iterate over. - * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. - * @return Returns object. - */ - forIn<T>( - object: Dictionary<T>, - iteratee?: DictionaryIterator<T, any>, - thisArg?: any - ): Dictionary<T>; - - /** - * @see _.forIn - */ - forIn<T extends {}>( - object: T, - iteratee?: ObjectIterator<any, any>, - thisArg?: any - ): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.forIn - */ - forIn<TValue>( - iteratee?: DictionaryIterator<TValue, any>, - thisArg?: any - ): _.LoDashImplicitObjectWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.forIn - */ - forIn<TValue>( - iteratee?: DictionaryIterator<TValue, any>, - thisArg?: any - ): _.LoDashExplicitObjectWrapper<T>; - } - - //_.forInRight - interface LoDashStatic { - /** - * This method is like _.forIn except that it iterates over properties of object in the opposite order. - * - * @param object The object to iterate over. - * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. - * @return Returns object. - */ - forInRight<T>( - object: Dictionary<T>, - iteratee?: DictionaryIterator<T, any>, - thisArg?: any - ): Dictionary<T>; - - /** - * @see _.forInRight - */ - forInRight<T extends {}>( - object: T, - iteratee?: ObjectIterator<any, any>, - thisArg?: any - ): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.forInRight - */ - forInRight<TValue>( - iteratee?: DictionaryIterator<TValue, any>, - thisArg?: any - ): _.LoDashImplicitObjectWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.forInRight - */ - forInRight<TValue>( - iteratee?: DictionaryIterator<TValue, any>, - thisArg?: any - ): _.LoDashExplicitObjectWrapper<T>; - } - - //_.forOwn - interface LoDashStatic { - /** - * Iterates over own enumerable properties of an object invoking iteratee for each property. The iteratee is - * bound to thisArg and invoked with three arguments: (value, key, object). Iteratee functions may exit - * iteration early by explicitly returning false. - * - * @param object The object to iterate over. - * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. - * @return Returns object. - */ - forOwn<T>( - object: Dictionary<T>, - iteratee?: DictionaryIterator<T, any>, - thisArg?: any - ): Dictionary<T>; - - /** - * @see _.forOwn - */ - forOwn<T extends {}>( - object: T, - iteratee?: ObjectIterator<any, any>, - thisArg?: any - ): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.forOwn - */ - forOwn<TValue>( - iteratee?: DictionaryIterator<TValue, any>, - thisArg?: any - ): _.LoDashImplicitObjectWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.forOwn - */ - forOwn<TValue>( - iteratee?: DictionaryIterator<TValue, any>, - thisArg?: any - ): _.LoDashExplicitObjectWrapper<T>; - } - - //_.forOwnRight - interface LoDashStatic { - /** - * This method is like _.forOwn except that it iterates over properties of object in the opposite order. - * - * @param object The object to iterate over. - * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. - * @return Returns object. - */ - forOwnRight<T>( - object: Dictionary<T>, - iteratee?: DictionaryIterator<T, any>, - thisArg?: any - ): Dictionary<T>; - - /** - * @see _.forOwnRight - */ - forOwnRight<T extends {}>( - object: T, - iteratee?: ObjectIterator<any, any>, - thisArg?: any - ): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.forOwnRight - */ - forOwnRight<TValue>( - iteratee?: DictionaryIterator<TValue, any>, - thisArg?: any - ): _.LoDashImplicitObjectWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.forOwnRight - */ - forOwnRight<TValue>( - iteratee?: DictionaryIterator<TValue, any>, - thisArg?: any - ): _.LoDashExplicitObjectWrapper<T>; - } - - //_.functions - interface LoDashStatic { - /** - * Creates an array of function property names from own enumerable properties - * of `object`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the new array of property names. - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functions(new Foo); - * // => ['a', 'b'] - */ - functions<T extends {}>(object: any): string[]; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.functions - */ - functions(): _.LoDashImplicitArrayWrapper<string>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.functions - */ - functions(): _.LoDashExplicitArrayWrapper<string>; - } - - //_.functionsIn - interface LoDashStatic { - /** - * Creates an array of function property names from own and inherited - * enumerable properties of `object`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the new array of property names. - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functionsIn(new Foo); - * // => ['a', 'b', 'c'] - */ - functionsIn<T extends {}>(object: any): string[]; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.functionsIn - */ - functionsIn(): _.LoDashImplicitArrayWrapper<string>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.functionsIn - */ - functionsIn(): _.LoDashExplicitArrayWrapper<string>; - } - - //_.get - interface LoDashStatic { - /** - * Gets the property value at path of object. If the resolved - * value is undefined the defaultValue is used in its place. - * @param object The object to query. - * @param path The path of the property to get. - * @param defaultValue The value returned if the resolved value is undefined. - * @return Returns the resolved value. - **/ - get<TResult>(object: Object, - path: string|number|boolean|Array<string|number|boolean>, - defaultValue?:TResult - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.get - **/ - get<TResult>(path: string|number|boolean|Array<string|number|boolean>, - defaultValue?: TResult - ): TResult; - } - - //_.has - interface LoDashStatic { - /** - * Checks if `path` is a direct property of `object`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = { 'a': { 'b': { 'c': 3 } } }; - * var other = _.create({ 'a': _.create({ 'b': _.create({ 'c': 3 }) }) }); - * - * _.has(object, 'a'); - * // => true - * - * _.has(object, 'a.b.c'); - * // => true - * - * _.has(object, ['a', 'b', 'c']); - * // => true - * - * _.has(other, 'a'); - * // => false - */ - has<T extends {}>( - object: T, - path: StringRepresentable|StringRepresentable[] - ): boolean; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.has - */ - has(path: StringRepresentable|StringRepresentable[]): boolean; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.has - */ - has(path: StringRepresentable|StringRepresentable[]): LoDashExplicitWrapper<boolean>; - } - - //_.hasIn - interface LoDashStatic { - /** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': _.create({ 'c': 3 }) }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b.c'); - * // => true - * - * _.hasIn(object, ['a', 'b', 'c']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ - hasIn<T extends {}>( - object: T, - path: StringRepresentable|StringRepresentable[] - ): boolean; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.hasIn - */ - hasIn(path: StringRepresentable|StringRepresentable[]): boolean; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.hasIn - */ - hasIn(path: StringRepresentable|StringRepresentable[]): LoDashExplicitWrapper<boolean>; - } - - //_.invert - interface LoDashStatic { - /** - * Creates an object composed of the inverted keys and values of object. If object contains duplicate values, - * subsequent values overwrite property assignments of previous values unless multiValue is true. - * - * @param object The object to invert. - * @param multiValue Allow multiple values per key. - * @return Returns the new inverted object. - */ - invert<T extends {}, TResult extends {}>( - object: T, - multiValue?: boolean - ): TResult; - - /** - * @see _.invert - */ - invert<TResult extends {}>( - object: Object, - multiValue?: boolean - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.invert - */ - invert<TResult extends {}>(multiValue?: boolean): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.invert - */ - invert<TResult extends {}>(multiValue?: boolean): LoDashExplicitObjectWrapper<TResult>; - } - - //_.keys - interface LoDashStatic { - /** - * Creates an array of the own enumerable property names of object. - * - * Note: Non-object values are coerced to objects. See the ES spec for more details. - * - * @param object The object to query. - * @return Returns the array of property names. - */ - keys(object?: any): string[]; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.keys - */ - keys(): LoDashImplicitArrayWrapper<string>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.keys - */ - keys(): LoDashExplicitArrayWrapper<string>; - } - - //_.keysIn - interface LoDashStatic { - /** - * Creates an array of the own and inherited enumerable property names of object. - * - * Note: Non-object values are coerced to objects. - * - * @param object The object to query. - * @return An array of property names. - */ - keysIn(object?: any): string[]; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.keysIn - */ - keysIn(): LoDashImplicitArrayWrapper<string>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.keysIn - */ - keysIn(): LoDashExplicitArrayWrapper<string>; - } - - //_.mapKeys - interface LoDashStatic { - /** - * The opposite of _.mapValues; this method creates an object with the same values as object and keys generated - * by running each own enumerable property of object through iteratee. - * - * @param object The object to iterate over. - * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. - * @return Returns the new mapped object. - */ - mapKeys<T, TKey>( - object: List<T>, - iteratee?: ListIterator<T, TKey>, - thisArg?: any - ): Dictionary<T>; - - /** - * @see _.mapKeys - */ - mapKeys<T, TKey>( - object: Dictionary<T>, - iteratee?: DictionaryIterator<T, TKey>, - thisArg?: any - ): Dictionary<T>; - - /** - * @see _.mapKeys - */ - mapKeys<T, TObject extends {}>( - object: List<T>|Dictionary<T>, - iteratee?: TObject - ): Dictionary<T>; - - /** - * @see _.mapKeys - */ - mapKeys<T>( - object: List<T>|Dictionary<T>, - iteratee?: string, - thisArg?: any - ): Dictionary<T>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.mapKeys - */ - mapKeys<TKey>( - iteratee?: ListIterator<T, TKey>, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<T>>; - - /** - * @see _.mapKeys - */ - mapKeys<TObject extends {}>( - iteratee?: TObject - ): LoDashImplicitObjectWrapper<Dictionary<T>>; - - /** - * @see _.mapKeys - */ - mapKeys( - iteratee?: string, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<T>>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.mapKeys - */ - mapKeys<TResult, TKey>( - iteratee?: ListIterator<TResult, TKey>|DictionaryIterator<TResult, TKey>, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<TResult>>; - - /** - * @see _.mapKeys - */ - mapKeys<TResult, TObject extends {}>( - iteratee?: TObject - ): LoDashImplicitObjectWrapper<Dictionary<TResult>>; - - /** - * @see _.mapKeys - */ - mapKeys<TResult>( - iteratee?: string, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<TResult>>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.mapKeys - */ - mapKeys<TKey>( - iteratee?: ListIterator<T, TKey>, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<T>>; - - /** - * @see _.mapKeys - */ - mapKeys<TObject extends {}>( - iteratee?: TObject - ): LoDashExplicitObjectWrapper<Dictionary<T>>; - - /** - * @see _.mapKeys - */ - mapKeys( - iteratee?: string, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<T>>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.mapKeys - */ - mapKeys<TResult, TKey>( - iteratee?: ListIterator<TResult, TKey>|DictionaryIterator<TResult, TKey>, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<TResult>>; - - /** - * @see _.mapKeys - */ - mapKeys<TResult, TObject extends {}>( - iteratee?: TObject - ): LoDashExplicitObjectWrapper<Dictionary<TResult>>; - - /** - * @see _.mapKeys - */ - mapKeys<TResult>( - iteratee?: string, - thisArg?: any - ): LoDashExplicitObjectWrapper<Dictionary<TResult>>; - } - - //_.mapValues - interface LoDashStatic { - /** - * Creates an object with the same keys as object and values generated by running each own - * enumerable property of object through iteratee. The iteratee function is bound to thisArg - * and invoked with three arguments: (value, key, object). - * - * If a property name is provided iteratee the created "_.property" style callback returns - * the property value of the given element. - * - * If a value is also provided for thisArg the creted "_.matchesProperty" style callback returns - * true for elements that have a matching property value, else false;. - * - * If an object is provided for iteratee the created "_.matches" style callback returns true - * for elements that have the properties of the given object, else false. - * - * @param {Object} object The object to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked per iteration. - * @param {Object} [thisArg] The `this` binding of `iteratee`. - * @return {Object} Returns the new mapped object. - */ - mapValues<T, TResult>(obj: Dictionary<T>, callback: ObjectIterator<T, TResult>, thisArg?: any): Dictionary<TResult>; - mapValues<T>(obj: Dictionary<T>, where: Dictionary<T>): Dictionary<boolean>; - mapValues<T, TMapped>(obj: T, pluck: string): TMapped; - mapValues<T>(obj: T, callback: ObjectIterator<any, any>, thisArg?: any): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.mapValues - * TValue is the type of the property values of T. - * TResult is the type output by the ObjectIterator function - */ - mapValues<TValue, TResult>(callback: ObjectIterator<TValue, TResult>, thisArg?: any): LoDashImplicitObjectWrapper<Dictionary<TResult>>; - - /** - * @see _.mapValues - * TResult is the type of the property specified by pluck. - * T should be a Dictionary<Dictionary<TResult>> - */ - mapValues<TResult>(pluck: string): LoDashImplicitObjectWrapper<Dictionary<TResult>>; - - /** - * @see _.mapValues - * TResult is the type of the properties on the object specified by pluck. - * T should be a Dictionary<Dictionary<Dictionary<TResult>>> - */ - mapValues<TResult>(pluck: string, where: Dictionary<TResult>): LoDashImplicitArrayWrapper<Dictionary<boolean>>; - - /** - * @see _.mapValues - * TResult is the type of the properties of each object in the values of T - * T should be a Dictionary<Dictionary<TResult>> - */ - mapValues<TResult>(where: Dictionary<TResult>): LoDashImplicitArrayWrapper<boolean>; - } - - //_.merge - interface LoDashStatic { - /** - * Recursively merges own and inherited enumerable properties of source - * objects into the destination object, skipping source properties that resolve - * to `undefined`. Array and plain object properties are merged recursively. - * Other objects and value types are overridden by assignment. Source objects - * are applied from left to right. Subsequent sources overwrite property - * assignments of previous sources. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @example - * - * var users = { - * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }] - * }; - * - * var ages = { - * 'data': [{ 'age': 36 }, { 'age': 40 }] - * }; - * - * _.merge(users, ages); - * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] } - */ - merge<TObject, TSource>( - object: TObject, - source: TSource - ): TObject & TSource; - - /** - * @see _.merge - */ - merge<TObject, TSource1, TSource2>( - object: TObject, - source1: TSource1, - source2: TSource2 - ): TObject & TSource1 & TSource2; - - /** - * @see _.merge - */ - merge<TObject, TSource1, TSource2, TSource3>( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3 - ): TObject & TSource1 & TSource2 & TSource3; - - /** - * @see _.merge - */ - merge<TObject, TSource1, TSource2, TSource3, TSource4>( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4 - ): TObject & TSource1 & TSource2 & TSource3 & TSource4; - - /** - * @see _.merge - */ - merge<TResult>( - object: any, - ...otherArgs: any[] - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.merge - */ - merge<TSource>( - source: TSource - ): LoDashImplicitObjectWrapper<T & TSource>; - - /** - * @see _.merge - */ - merge<TSource1, TSource2>( - source1: TSource1, - source2: TSource2 - ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2>; - - /** - * @see _.merge - */ - merge<TSource1, TSource2, TSource3>( - source1: TSource1, - source2: TSource2, - source3: TSource3 - ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>; - - /** - * @see _.merge - */ - merge<TSource1, TSource2, TSource3, TSource4>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4 - ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>; - - /** - * @see _.merge - */ - merge<TResult>( - ...otherArgs: any[] - ): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.merge - */ - merge<TSource>( - source: TSource - ): LoDashExplicitObjectWrapper<T & TSource>; - - /** - * @see _.merge - */ - merge<TSource1, TSource2>( - source1: TSource1, - source2: TSource2 - ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2>; - - /** - * @see _.merge - */ - merge<TSource1, TSource2, TSource3>( - source1: TSource1, - source2: TSource2, - source3: TSource3 - ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>; - - /** - * @see _.merge - */ - merge<TSource1, TSource2, TSource3, TSource4>( - ): LoDashExplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>; - - /** - * @see _.merge - */ - merge<TResult>( - ...otherArgs: any[] - ): LoDashExplicitObjectWrapper<TResult>; - } - - //_.mergeWith - interface MergeWithCustomizer { - (value: any, srcValue: any, key?: string, object?: Object, source?: Object): any; - } - - interface LoDashStatic { - /** - * This method is like `_.merge` except that it accepts `customizer` which - * is invoked to produce the merged values of the destination and source - * properties. If `customizer` returns `undefined` merging is handled by the - * method instead. The `customizer` is invoked with seven arguments: - * (objValue, srcValue, key, object, source, stack). - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} customizer The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * function customizer(objValue, srcValue) { - * if (_.isArray(objValue)) { - * return objValue.concat(srcValue); - * } - * } - * - * var object = { - * 'fruits': ['apple'], - * 'vegetables': ['beet'] - * }; - * - * var other = { - * 'fruits': ['banana'], - * 'vegetables': ['carrot'] - * }; - * - * _.merge(object, other, customizer); - * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] } - */ - mergeWith<TObject, TSource>( - object: TObject, - source: TSource, - customizer: MergeWithCustomizer - ): TObject & TSource; - - /** - * @see _.mergeWith - */ - mergeWith<TObject, TSource1, TSource2>( - object: TObject, - source1: TSource1, - source2: TSource2, - customizer: MergeWithCustomizer - ): TObject & TSource1 & TSource2; - - /** - * @see _.mergeWith - */ - mergeWith<TObject, TSource1, TSource2, TSource3>( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3, - customizer: MergeWithCustomizer - ): TObject & TSource1 & TSource2 & TSource3; - - /** - * @see _.mergeWith - */ - mergeWith<TObject, TSource1, TSource2, TSource3, TSource4>( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4, - customizer: MergeWithCustomizer - ): TObject & TSource1 & TSource2 & TSource3 & TSource4; - - /** - * @see _.mergeWith - */ - mergeWith<TResult>( - object: any, - ...otherArgs: any[] - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.mergeWith - */ - mergeWith<TSource>( - source: TSource, - customizer: MergeWithCustomizer - ): LoDashImplicitObjectWrapper<T & TSource>; - - /** - * @see _.mergeWith - */ - mergeWith<TSource1, TSource2>( - source1: TSource1, - source2: TSource2, - customizer: MergeWithCustomizer - ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2>; - - /** - * @see _.mergeWith - */ - mergeWith<TSource1, TSource2, TSource3>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - customizer: MergeWithCustomizer - ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3>; - - /** - * @see _.mergeWith - */ - mergeWith<TSource1, TSource2, TSource3, TSource4>( - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4, - customizer: MergeWithCustomizer - ): LoDashImplicitObjectWrapper<T & TSource1 & TSource2 & TSource3 & TSource4>; - - /** - * @see _.mergeWith - */ - mergeWith<TResult>( - ...otherArgs: any[] - ): LoDashImplicitObjectWrapper<TResult>; - } - - //_.omit - interface LoDashStatic { - /** - * The opposite of `_.pick`; this method creates an object composed of the - * own and inherited enumerable properties of `object` that are not omitted. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [props] The property names to omit, specified - * individually or in arrays.. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omit(object, ['a', 'c']); - * // => { 'b': '2' } - */ - - omit<TResult extends {}, T extends {}>( - object: T, - ...predicate: (StringRepresentable|StringRepresentable[])[] - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - - /** - * @see _.omit - */ - omit<TResult extends {}>( - ...predicate: (StringRepresentable|StringRepresentable[])[] - ): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - - /** - * @see _.omit - */ - omit<TResult extends {}>( - ...predicate: (StringRepresentable|StringRepresentable[])[] - ): LoDashExplicitObjectWrapper<TResult>; - } - - //_.omitBy - interface LoDashStatic { - /** - * The opposite of `_.pickBy`; this method creates an object composed of the - * own and inherited enumerable properties of `object` that `predicate` - * doesn't return truthy for. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {Function|Object|string} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omitBy(object, _.isNumber); - * // => { 'b': '2' } - */ - omitBy<TResult extends {}, T extends {}>( - object: T, - predicate: ObjectIterator<any, boolean> - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.omitBy - */ - omitBy<TResult extends {}>( - predicate: ObjectIterator<any, boolean> - ): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.omitBy - */ - omitBy<TResult extends {}>( - predicate: ObjectIterator<any, boolean> - ): LoDashExplicitObjectWrapper<TResult>; - } - - //_.toPairs - interface LoDashStatic { - /** - * Creates a two dimensional array of the key-value pairs for object, e.g. [[key1, value1], [key2, value2]]. - * - * @param object The object to query. - * @return Returns the new array of key-value pairs. - */ - toPairs<T extends {}>(object?: T): any[][]; - - toPairs<T extends {}, TResult>(object?: T): TResult[][]; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.toPairs - */ - toPairs<TResult>(): LoDashImplicitArrayWrapper<TResult[]>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.toPairs - */ - toPairs<TResult>(): LoDashExplicitArrayWrapper<TResult[]>; - } - - //_.pick - interface LoDashStatic { - /** - * Creates an object composed of the picked `object` properties. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [props] The property names to pick, specified - * individually or in arrays. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pick(object, ['a', 'c']); - * // => { 'a': 1, 'c': 3 } - */ - pick<TResult extends {}, T extends {}>( - object: T, - ...predicate: (StringRepresentable|StringRepresentable[])[] - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.pick - */ - pick<TResult extends {}>( - ...predicate: (StringRepresentable|StringRepresentable[])[] - ): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.pick - */ - pick<TResult extends {}>( - ...predicate: (StringRepresentable|StringRepresentable[])[] - ): LoDashExplicitObjectWrapper<TResult>; - } - - //_.pickBy - interface LoDashStatic { - /** - * Creates an object composed of the `object` properties `predicate` returns - * truthy for. The predicate is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {Function|Object|string} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pickBy(object, _.isNumber); - * // => { 'a': 1, 'c': 3 } - */ - pickBy<TResult extends {}, T extends {}>( - object: T, - predicate: ObjectIterator<any, boolean> - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.pickBy - */ - pickBy<TResult extends {}>( - predicate: ObjectIterator<any, boolean> - ): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.pickBy - */ - pickBy<TResult extends {}>( - predicate: ObjectIterator<any, boolean> - ): LoDashExplicitObjectWrapper<TResult>; - } - - //_.result - interface LoDashStatic { - /** - * This method is like _.get except that if the resolved value is a function it’s invoked with the this binding - * of its parent object and its result is returned. - * - * @param object The object to query. - * @param path The path of the property to resolve. - * @param defaultValue The value returned if the resolved value is undefined. - * @return Returns the resolved value. - */ - result<TObject, TResult>( - object: TObject, - path: number|string|boolean|Array<number|string|boolean>, - defaultValue?: TResult - ): TResult; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.result - */ - result<TResult>( - path: number|string|boolean|Array<number|string|boolean>, - defaultValue?: TResult - ): TResult; - } - - //_.set - interface LoDashStatic { - /** - * Sets the property value of path on object. If a portion of path does not exist it’s created. - * - * @param object The object to augment. - * @param path The path of the property to set. - * @param value The value to set. - * @return Returns object. - */ - set<T>( - object: T, - path: StringRepresentable|StringRepresentable[], - value: any - ): T; - - /** - * @see _.set - */ - set<V, T>( - object: T, - path: StringRepresentable|StringRepresentable[], - value: V - ): T; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.set - */ - set<V>( - path: StringRepresentable|StringRepresentable[], - value: V - ): LoDashImplicitObjectWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.set - */ - set<V>( - path: StringRepresentable|StringRepresentable[], - value: V - ): LoDashExplicitObjectWrapper<T>; - } - - //_.transform - interface LoDashStatic { - /** - * An alternative to _.reduce; this method transforms object to a new accumulator object which is the result of - * running each of its own enumerable properties through iteratee, with each invocation potentially mutating - * the accumulator object. The iteratee is bound to thisArg and invoked with four arguments: (accumulator, - * value, key, object). Iteratee functions may exit iteration early by explicitly returning false. - * - * @param object The object to iterate over. - * @param iteratee The function invoked per iteration. - * @param accumulator The custom accumulator value. - * @param thisArg The this binding of iteratee. - * @return Returns the accumulated value. - */ - transform<T, TResult>( - object: T[], - iteratee?: MemoVoidArrayIterator<T, TResult[]>, - accumulator?: TResult[], - thisArg?: any - ): TResult[]; - - /** - * @see _.transform - */ - transform<T, TResult>( - object: T[], - iteratee?: MemoVoidArrayIterator<T, Dictionary<TResult>>, - accumulator?: Dictionary<TResult>, - thisArg?: any - ): Dictionary<TResult>; - - /** - * @see _.transform - */ - transform<T, TResult>( - object: Dictionary<T>, - iteratee?: MemoVoidDictionaryIterator<T, Dictionary<TResult>>, - accumulator?: Dictionary<TResult>, - thisArg?: any - ): Dictionary<TResult>; - - /** - * @see _.transform - */ - transform<T, TResult>( - object: Dictionary<T>, - iteratee?: MemoVoidDictionaryIterator<T, TResult[]>, - accumulator?: TResult[], - thisArg?: any - ): TResult[]; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.transform - */ - transform<TResult>( - iteratee?: MemoVoidArrayIterator<T, TResult[]>, - accumulator?: TResult[], - thisArg?: any - ): LoDashImplicitArrayWrapper<TResult>; - - /** - * @see _.transform - */ - transform<TResult>( - iteratee?: MemoVoidArrayIterator<T, Dictionary<TResult>>, - accumulator?: Dictionary<TResult>, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<TResult>>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.transform - */ - transform<T, TResult>( - iteratee?: MemoVoidDictionaryIterator<T, Dictionary<TResult>>, - accumulator?: Dictionary<TResult>, - thisArg?: any - ): LoDashImplicitObjectWrapper<Dictionary<TResult>>; - - /** - * @see _.transform - */ - transform<T, TResult>( - iteratee?: MemoVoidDictionaryIterator<T, TResult[]>, - accumulator?: TResult[], - thisArg?: any - ): LoDashImplicitArrayWrapper<TResult>; - } - - //_.values - interface LoDashStatic { - /** - * Creates an array of the own enumerable property values of object. - * - * @param object The object to query. - * @return Returns an array of property values. - */ - values<T>(object?: any): T[]; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.values - */ - values<T>(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.values - */ - values<T>(): LoDashExplicitArrayWrapper<T>; - } - - //_.valuesIn - interface LoDashStatic { - /** - * Creates an array of the own and inherited enumerable property values of object. - * - * @param object The object to query. - * @return Returns the array of property values. - */ - valuesIn<T>(object?: any): T[]; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.valuesIn - */ - valuesIn<T>(): LoDashImplicitArrayWrapper<T>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.valuesIn - */ - valuesIn<T>(): LoDashExplicitArrayWrapper<T>; - } - - /********** - * String * - **********/ - - //_.camelCase - interface LoDashStatic { - /** - * Converts string to camel case. - * - * @param string The string to convert. - * @return Returns the camel cased string. - */ - camelCase(string?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.camelCase - */ - camelCase(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.camelCase - */ - camelCase(): LoDashExplicitWrapper<string>; - } - - //_.capitalize - interface LoDashStatic { - capitalize(string?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.capitalize - */ - capitalize(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.capitalize - */ - capitalize(): LoDashExplicitWrapper<string>; - } - - //_.deburr - interface LoDashStatic { - /** - * Deburrs string by converting latin-1 supplementary letters to basic latin letters and removing combining - * diacritical marks. - * - * @param string The string to deburr. - * @return Returns the deburred string. - */ - deburr(string?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.deburr - */ - deburr(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.deburr - */ - deburr(): LoDashExplicitWrapper<string>; - } - - //_.endsWith - interface LoDashStatic { - /** - * Checks if string ends with the given target string. - * - * @param string The string to search. - * @param target The string to search for. - * @param position The position to search from. - * @return Returns true if string ends with target, else false. - */ - endsWith( - string?: string, - target?: string, - position?: number - ): boolean; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.endsWith - */ - endsWith( - target?: string, - position?: number - ): boolean; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.endsWith - */ - endsWith( - target?: string, - position?: number - ): LoDashExplicitWrapper<boolean>; - } - - // _.escape - interface LoDashStatic { - /** - * Converts the characters "&", "<", ">", '"', "'", and "`", in string to their corresponding HTML entities. - * - * Note: No other characters are escaped. To escape additional characters use a third-party library like he. - * - * Though the ">" character is escaped for symmetry, characters like ">" and "/" don’t need escaping in HTML - * and have no special meaning unless they're part of a tag or unquoted attribute value. See Mathias Bynens’s - * article (under "semi-related fun fact") for more details. - * - * Backticks are escaped because in Internet Explorer < 9, they can break out of attribute values or HTML - * comments. See #59, #102, #108, and #133 of the HTML5 Security Cheatsheet for more details. - * - * When working with HTML you should always quote attribute values to reduce XSS vectors. - * - * @param string The string to escape. - * @return Returns the escaped string. - */ - escape(string?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.escape - */ - escape(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.escape - */ - escape(): LoDashExplicitWrapper<string>; - } - - // _.escapeRegExp - interface LoDashStatic { - /** - * Escapes the RegExp special characters "\", "/", "^", "$", ".", "|", "?", "*", "+", "(", ")", "[", "]", - * "{" and "}" in string. - * - * @param string The string to escape. - * @return Returns the escaped string. - */ - escapeRegExp(string?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.escapeRegExp - */ - escapeRegExp(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.escapeRegExp - */ - escapeRegExp(): LoDashExplicitWrapper<string>; - } - - //_.kebabCase - interface LoDashStatic { - /** - * Converts string to kebab case. - * - * @param string The string to convert. - * @return Returns the kebab cased string. - */ - kebabCase(string?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.kebabCase - */ - kebabCase(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.kebabCase - */ - kebabCase(): LoDashExplicitWrapper<string>; - } - - //_.lowerCase - interface LoDashStatic { - /** - * Converts `string`, as space separated words, to lower case. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the lower cased string. - * @example - * - * _.lowerCase('--Foo-Bar'); - * // => 'foo bar' - * - * _.lowerCase('fooBar'); - * // => 'foo bar' - * - * _.lowerCase('__FOO_BAR__'); - * // => 'foo bar' - */ - lowerCase(string?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.lowerCase - */ - lowerCase(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.lowerCase - */ - lowerCase(): LoDashExplicitWrapper<string>; - } - - //_.lowerFirst - interface LoDashStatic { - /** - * Converts the first character of `string` to lower case. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.lowerFirst('Fred'); - * // => 'fred' - * - * _.lowerFirst('FRED'); - * // => 'fRED' - */ - lowerFirst(string?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.lowerFirst - */ - lowerFirst(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.lowerFirst - */ - lowerFirst(): LoDashExplicitWrapper<string>; - } - - //_.pad - interface LoDashStatic { - /** - * Pads string on the left and right sides if it’s shorter than length. Padding characters are truncated if - * they can’t be evenly divided by length. - * - * @param string The string to pad. - * @param length The padding length. - * @param chars The string used as padding. - * @return Returns the padded string. - */ - pad( - string?: string, - length?: number, - chars?: string - ): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.pad - */ - pad( - length?: number, - chars?: string - ): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.pad - */ - pad( - length?: number, - chars?: string - ): LoDashExplicitWrapper<string>; - } - - //_.padStart - interface LoDashStatic { - /** - * Pads string on the left side if it’s shorter than length. Padding characters are truncated if they exceed - * length. - * - * @param string The string to pad. - * @param length The padding length. - * @param chars The string used as padding. - * @return Returns the padded string. - */ - padStart( - string?: string, - length?: number, - chars?: string - ): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.padStart - */ - padStart( - length?: number, - chars?: string - ): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.padStart - */ - padStart( - length?: number, - chars?: string - ): LoDashExplicitWrapper<string>; - } - - //_.padEnd - interface LoDashStatic { - /** - * Pads string on the right side if it’s shorter than length. Padding characters are truncated if they exceed - * length. - * - * @param string The string to pad. - * @param length The padding length. - * @param chars The string used as padding. - * @return Returns the padded string. - */ - padEnd( - string?: string, - length?: number, - chars?: string - ): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.padEnd - */ - padEnd( - length?: number, - chars?: string - ): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.padEnd - */ - padEnd( - length?: number, - chars?: string - ): LoDashExplicitWrapper<string>; - } - - //_.parseInt - interface LoDashStatic { - /** - * Converts string to an integer of the specified radix. If radix is undefined or 0, a radix of 10 is used - * unless value is a hexadecimal, in which case a radix of 16 is used. - * - * Note: This method aligns with the ES5 implementation of parseInt. - * - * @param string The string to convert. - * @param radix The radix to interpret value by. - * @return Returns the converted integer. - */ - parseInt( - string: string, - radix?: number - ): number; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.parseInt - */ - parseInt(radix?: number): number; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.parseInt - */ - parseInt(radix?: number): LoDashExplicitWrapper<number>; - } - - //_.repeat - interface LoDashStatic { - /** - * Repeats the given string n times. - * - * @param string The string to repeat. - * @param n The number of times to repeat the string. - * @return Returns the repeated string. - */ - repeat( - string?: string, - n?: number - ): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.repeat - */ - repeat(n?: number): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.repeat - */ - repeat(n?: number): LoDashExplicitWrapper<string>; - } - - //_.snakeCase - interface LoDashStatic { - /** - * Converts string to snake case. - * - * @param string The string to convert. - * @return Returns the snake cased string. - */ - snakeCase(string?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.snakeCase - */ - snakeCase(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.snakeCase - */ - snakeCase(): LoDashExplicitWrapper<string>; - } - - //_.startCase - interface LoDashStatic { - /** - * Converts string to start case. - * - * @param string The string to convert. - * @return Returns the start cased string. - */ - startCase(string?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.startCase - */ - startCase(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.startCase - */ - startCase(): LoDashExplicitWrapper<string>; - } - - //_.startsWith - interface LoDashStatic { - /** - * Checks if string starts with the given target string. - * - * @param string The string to search. - * @param target The string to search for. - * @param position The position to search from. - * @return Returns true if string starts with target, else false. - */ - startsWith( - string?: string, - target?: string, - position?: number - ): boolean; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.startsWith - */ - startsWith( - target?: string, - position?: number - ): boolean; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.startsWith - */ - startsWith( - target?: string, - position?: number - ): LoDashExplicitWrapper<boolean>; - } - - //_.template - interface TemplateOptions extends TemplateSettings { - /** - * The sourceURL of the template's compiled source. - */ - sourceURL?: string; - } - - interface TemplateExecutor { - (data?: Object): string; - source: string; - } - - interface LoDashStatic { - /** - * Creates a compiled template function that can interpolate data properties in "interpolate" delimiters, - * HTML-escape interpolated data properties in "escape" delimiters, and execute JavaScript in "evaluate" - * delimiters. Data properties may be accessed as free variables in the template. If a setting object is - * provided it takes precedence over _.templateSettings values. - * - * Note: In the development build _.template utilizes - * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) for easier - * debugging. - * - * For more information on precompiling templates see - * [lodash's custom builds documentation](https://lodash.com/custom-builds). - * - * For more information on Chrome extension sandboxes see - * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). - * - * @param string The template string. - * @param options The options object. - * @param options.escape The HTML "escape" delimiter. - * @param options.evaluate The "evaluate" delimiter. - * @param options.imports An object to import into the template as free variables. - * @param options.interpolate The "interpolate" delimiter. - * @param options.sourceURL The sourceURL of the template's compiled source. - * @param options.variable The data object variable name. - * @return Returns the compiled template function. - */ - template( - string: string, - options?: TemplateOptions - ): TemplateExecutor; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.template - */ - template(options?: TemplateOptions): TemplateExecutor; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.template - */ - template(options?: TemplateOptions): LoDashExplicitObjectWrapper<TemplateExecutor>; - } - - //_.toLower - interface LoDashStatic { - /** - * Converts `string`, as a whole, to lower case. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the lower cased string. - * @example - * - * _.toLower('--Foo-Bar'); - * // => '--foo-bar' - * - * _.toLower('fooBar'); - * // => 'foobar' - * - * _.toLower('__FOO_BAR__'); - * // => '__foo_bar__' - */ - toLower(string?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.toLower - */ - toLower(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.toLower - */ - toLower(): LoDashExplicitWrapper<string>; - } - - //_.toUpper - interface LoDashStatic { - /** - * Converts `string`, as a whole, to upper case. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the upper cased string. - * @example - * - * _.toUpper('--foo-bar'); - * // => '--FOO-BAR' - * - * _.toUpper('fooBar'); - * // => 'FOOBAR' - * - * _.toUpper('__foo_bar__'); - * // => '__FOO_BAR__' - */ - toUpper(string?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.toUpper - */ - toUpper(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.toUpper - */ - toUpper(): LoDashExplicitWrapper<string>; - } - - //_.trim - interface LoDashStatic { - /** - * Removes leading and trailing whitespace or specified characters from string. - * - * @param string The string to trim. - * @param chars The characters to trim. - * @return Returns the trimmed string. - */ - trim( - string?: string, - chars?: string - ): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.trim - */ - trim(chars?: string): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.trim - */ - trim(chars?: string): LoDashExplicitWrapper<string>; - } - - //_.trimStart - interface LoDashStatic { - /** - * Removes leading whitespace or specified characters from string. - * - * @param string The string to trim. - * @param chars The characters to trim. - * @return Returns the trimmed string. - */ - trimStart( - string?: string, - chars?: string - ): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.trimStart - */ - trimStart(chars?: string): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.trimStart - */ - trimStart(chars?: string): LoDashExplicitWrapper<string>; - } - - //_.trimEnd - interface LoDashStatic { - /** - * Removes trailing whitespace or specified characters from string. - * - * @param string The string to trim. - * @param chars The characters to trim. - * @return Returns the trimmed string. - */ - trimEnd( - string?: string, - chars?: string - ): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.trimEnd - */ - trimEnd(chars?: string): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.trimEnd - */ - trimEnd(chars?: string): LoDashExplicitWrapper<string>; - } - - //_.truncate - interface TruncateOptions { - /** The maximum string length. */ - length?: number; - /** The string to indicate text is omitted. */ - omission?: string; - /** The separator pattern to truncate to. */ - separator?: string|RegExp; - } - - interface LoDashStatic { - /** - * Truncates string if it’s longer than the given maximum string length. The last characters of the truncated - * string are replaced with the omission string which defaults to "…". - * - * @param string The string to truncate. - * @param options The options object or maximum string length. - * @return Returns the truncated string. - */ - truncate( - string?: string, - options?: TruncateOptions|number - ): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.truncate - */ - truncate(options?: TruncateOptions|number): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.truncate - */ - truncate(options?: TruncateOptions|number): LoDashExplicitWrapper<string>; - } - - //_.upperCase - interface LoDashStatic { - /** - * Converts `string`, as space separated words, to upper case. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the upper cased string. - * @example - * - * _.upperCase('--foo-bar'); - * // => 'FOO BAR' - * - * _.upperCase('fooBar'); - * // => 'FOO BAR' - * - * _.upperCase('__foo_bar__'); - * // => 'FOO BAR' - */ - upperCase(string?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.upperCase - */ - upperCase(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.upperCase - */ - upperCase(): LoDashExplicitWrapper<string>; - } - - //_.upperFirst - interface LoDashStatic { - /** - * Converts the first character of `string` to upper case. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.upperFirst('fred'); - * // => 'Fred' - * - * _.upperFirst('FRED'); - * // => 'FRED' - */ - upperFirst(string?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.upperFirst - */ - upperFirst(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.upperFirst - */ - upperFirst(): LoDashExplicitWrapper<string>; - } - - //_.unescape - interface LoDashStatic { - /** - * The inverse of _.escape; this method converts the HTML entities &, <, >, ", ', and ` - * in string to their corresponding characters. - * - * @param string The string to unescape. - * @return Returns the unescaped string. - */ - unescape(string?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.unescape - */ - unescape(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.unescape - */ - unescape(): LoDashExplicitWrapper<string>; - } - - //_.words - interface LoDashStatic { - /** - * Splits `string` into an array of its words. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to inspect. - * @param {RegExp|string} [pattern] The pattern to match words. - * @param- {Object} [guard] Enables use as an iteratee for functions like `_.map`. - * @returns {Array} Returns the words of `string`. - * @example - * - * _.words('fred, barney, & pebbles'); - * // => ['fred', 'barney', 'pebbles'] - * - * _.words('fred, barney, & pebbles', /[^, ]+/g); - * // => ['fred', 'barney', '&', 'pebbles'] - */ - words( - string?: string, - pattern?: string|RegExp - ): string[]; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.words - */ - words(pattern?: string|RegExp): string[]; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.words - */ - words(pattern?: string|RegExp): LoDashExplicitArrayWrapper<string>; - } - - /*********** - * Utility * - ***********/ - - //_.attempt - interface LoDashStatic { - /** - * Attempts to invoke func, returning either the result or the caught error object. Any additional arguments - * are provided to func when it’s invoked. - * - * @param func The function to attempt. - * @return Returns the func result or error object. - */ - attempt<TResult>(func: (...args: any[]) => TResult): TResult|Error; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.attempt - */ - attempt<TResult>(): TResult|Error; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.attempt - */ - attempt<TResult>(): LoDashExplicitObjectWrapper<TResult|Error>; - } - - //_.constant - interface LoDashStatic { - /** - * Creates a function that returns value. - * - * @param value The value to return from the new function. - * @return Returns the new function. - */ - constant<T>(value: T): () => T; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.constant - */ - constant<TResult>(): LoDashImplicitObjectWrapper<() => TResult>; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.constant - */ - constant<TResult>(): LoDashExplicitObjectWrapper<() => TResult>; - } - - //_.identity - interface LoDashStatic { - /** - * This method returns the first argument provided to it. - * @param value Any value. - * @return Returns value. - */ - identity<T>(value?: T): T; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.identity - */ - identity(): T; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.identity - */ - identity(): T[]; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.identity - */ - identity(): T; - } - - //_.iteratee - interface LoDashStatic { - /** - * Creates a function that invokes `func` with the arguments of the created - * function. If `func` is a property name the created callback returns the - * property value for a given element. If `func` is an object the created - * callback returns `true` for elements that contain the equivalent object properties, otherwise it returns `false`. - * - * @static - * @memberOf _ - * @category Util - * @param {*} [func=_.identity] The value to convert to a callback. - * @returns {Function} Returns the callback. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; - * - * // create custom iteratee shorthands - * _.iteratee = _.wrap(_.iteratee, function(callback, func) { - * var p = /^(\S+)\s*([<>])\s*(\S+)$/.exec(func); - * return !p ? callback(func) : function(object) { - * return (p[2] == '>' ? object[p[1]] > p[3] : object[p[1]] < p[3]); - * }; - * }); - * - * _.filter(users, 'age > 36'); - * // => [{ 'user': 'fred', 'age': 40 }] - */ - iteratee<TResult>( - func: Function, - thisArg?: any - ): (...args: any[]) => TResult; - - /** - * @see _.iteratee - */ - iteratee<TResult>( - func: string, - thisArg?: any - ): (object: any) => TResult; - - /** - * @see _.iteratee - */ - iteratee( - func: Object, - thisArg?: any - ): (object: any) => boolean; - - /** - * @see _.iteratee - */ - iteratee<TResult>(): (value: TResult) => TResult; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.iteratee - */ - iteratee<TResult>(thisArg?: any): LoDashImplicitObjectWrapper<(object: any) => TResult>; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.iteratee - */ - iteratee(thisArg?: any): LoDashImplicitObjectWrapper<(object: any) => boolean>; - - /** - * @see _.iteratee - */ - iteratee<TResult>(thisArg?: any): LoDashImplicitObjectWrapper<(...args: any[]) => TResult>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.iteratee - */ - iteratee<TResult>(thisArg?: any): LoDashExplicitObjectWrapper<(object: any) => TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.iteratee - */ - iteratee(thisArg?: any): LoDashExplicitObjectWrapper<(object: any) => boolean>; - - /** - * @see _.iteratee - */ - iteratee<TResult>(thisArg?: any): LoDashExplicitObjectWrapper<(...args: any[]) => TResult>; - } - - //_.matches - interface LoDashStatic { - /** - * Creates a function that performs a deep comparison between a given object and source, returning true if the - * given object has equivalent property values, else false. - * - * Note: This method supports comparing arrays, booleans, Date objects, numbers, Object objects, regexes, and - * strings. Objects are compared by their own, not inherited, enumerable properties. For comparing a single own - * or inherited property value see _.matchesProperty. - * - * @param source The object of property values to match. - * @return Returns the new function. - */ - matches<T>(source: T): (value: any) => boolean; - - /** - * @see _.matches - */ - matches<T, V>(source: T): (value: V) => boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.matches - */ - matches<V>(): LoDashImplicitObjectWrapper<(value: V) => boolean>; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.matches - */ - matches<V>(): LoDashExplicitObjectWrapper<(value: V) => boolean>; - } - - //_.matchesProperty - interface LoDashStatic { - /** - * Creates a function that compares the property value of path on a given object to value. - * - * Note: This method supports comparing arrays, booleans, Date objects, numbers, Object objects, regexes, and - * strings. Objects are compared by their own, not inherited, enumerable properties. - * - * @param path The path of the property to get. - * @param srcValue The value to match. - * @return Returns the new function. - */ - matchesProperty<T>( - path: StringRepresentable|StringRepresentable[], - srcValue: T - ): (value: any) => boolean; - - /** - * @see _.matchesProperty - */ - matchesProperty<T, V>( - path: StringRepresentable|StringRepresentable[], - srcValue: T - ): (value: V) => boolean; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.matchesProperty - */ - matchesProperty<SrcValue>( - srcValue: SrcValue - ): LoDashImplicitObjectWrapper<(value: any) => boolean>; - - /** - * @see _.matchesProperty - */ - matchesProperty<SrcValue, Value>( - srcValue: SrcValue - ): LoDashImplicitObjectWrapper<(value: Value) => boolean>; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.matchesProperty - */ - matchesProperty<SrcValue>( - srcValue: SrcValue - ): LoDashExplicitObjectWrapper<(value: any) => boolean>; - - /** - * @see _.matchesProperty - */ - matchesProperty<SrcValue, Value>( - srcValue: SrcValue - ): LoDashExplicitObjectWrapper<(value: Value) => boolean>; - } - - //_.method - interface LoDashStatic { - /** - * Creates a function that invokes the method at path on a given object. Any additional arguments are provided - * to the invoked method. - * - * @param path The path of the method to invoke. - * @param args The arguments to invoke the method with. - * @return Returns the new function. - */ - method<TObject, TResult>( - path: string|StringRepresentable[], - ...args: any[] - ): (object: TObject) => TResult; - - /** - * @see _.method - */ - method<TResult>( - path: string|StringRepresentable[], - ...args: any[] - ): (object: any) => TResult; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.method - */ - method<TObject, TResult>(...args: any[]): LoDashImplicitObjectWrapper<(object: TObject) => TResult>; - - /** - * @see _.method - */ - method<TResult>(...args: any[]): LoDashImplicitObjectWrapper<(object: any) => TResult>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.method - */ - method<TObject, TResult>(...args: any[]): LoDashImplicitObjectWrapper<(object: TObject) => TResult>; - - /** - * @see _.method - */ - method<TResult>(...args: any[]): LoDashImplicitObjectWrapper<(object: any) => TResult>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.method - */ - method<TObject, TResult>(...args: any[]): LoDashExplicitObjectWrapper<(object: TObject) => TResult>; - - /** - * @see _.method - */ - method<TResult>(...args: any[]): LoDashExplicitObjectWrapper<(object: any) => TResult>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.method - */ - method<TObject, TResult>(...args: any[]): LoDashExplicitObjectWrapper<(object: TObject) => TResult>; - - /** - * @see _.method - */ - method<TResult>(...args: any[]): LoDashExplicitObjectWrapper<(object: any) => TResult>; - } - - //_.methodOf - interface LoDashStatic { - /** - * The opposite of _.method; this method creates a function that invokes the method at a given path on object. - * Any additional arguments are provided to the invoked method. - * - * @param object The object to query. - * @param args The arguments to invoke the method with. - * @return Returns the new function. - */ - methodOf<TObject extends {}, TResult>( - object: TObject, - ...args: any[] - ): (path: StringRepresentable|StringRepresentable[]) => TResult; - - /** - * @see _.methodOf - */ - methodOf<TResult>( - object: {}, - ...args: any[] - ): (path: StringRepresentable|StringRepresentable[]) => TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.methodOf - */ - methodOf<TResult>( - ...args: any[] - ): LoDashImplicitObjectWrapper<(path: StringRepresentable|StringRepresentable[]) => TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.methodOf - */ - methodOf<TResult>( - ...args: any[] - ): LoDashExplicitObjectWrapper<(path: StringRepresentable|StringRepresentable[]) => TResult>; - } - - //_.mixin - interface MixinOptions { - chain?: boolean; - } - - interface LoDashStatic { - /** - * Adds all own enumerable function properties of a source object to the destination object. If object is a - * function then methods are added to its prototype as well. - * - * Note: Use _.runInContext to create a pristine lodash function to avoid conflicts caused by modifying - * the original. - * - * @param object The destination object. - * @param source The object of functions to add. - * @param options The options object. - * @param options.chain Specify whether the functions added are chainable. - * @return Returns object. - */ - mixin<TResult, TObject>( - object: TObject, - source: Dictionary<Function>, - options?: MixinOptions - ): TResult; - - /** - * @see _.mixin - */ - mixin<TResult>( - source: Dictionary<Function>, - options?: MixinOptions - ): TResult; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.mixin - */ - mixin<TResult>( - source: Dictionary<Function>, - options?: MixinOptions - ): LoDashImplicitObjectWrapper<TResult>; - - /** - * @see _.mixin - */ - mixin<TResult>( - options?: MixinOptions - ): LoDashImplicitObjectWrapper<TResult>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.mixin - */ - mixin<TResult>( - source: Dictionary<Function>, - options?: MixinOptions - ): LoDashExplicitObjectWrapper<TResult>; - - /** - * @see _.mixin - */ - mixin<TResult>( - options?: MixinOptions - ): LoDashExplicitObjectWrapper<TResult>; - } - - //_.noConflict - interface LoDashStatic { - /** - * Reverts the _ variable to its previous value and returns a reference to the lodash function. - * - * @return Returns the lodash function. - */ - noConflict(): typeof _; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.noConflict - */ - noConflict(): typeof _; - } - - //_.noop - interface LoDashStatic { - /** - * A no-operation function that returns undefined regardless of the arguments it receives. - * - * @return undefined - */ - noop(...args: any[]): void; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.noop - */ - noop(...args: any[]): void; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.noop - */ - noop(...args: any[]): _.LoDashExplicitWrapper<void>; - } - - //_.property - interface LoDashStatic { - /** - * Creates a function that returns the property value at path on a given object. - * - * @param path The path of the property to get. - * @return Returns the new function. - */ - property<TObj, TResult>(path: StringRepresentable|StringRepresentable[]): (obj: TObj) => TResult; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.property - */ - property<TObj, TResult>(): LoDashImplicitObjectWrapper<(obj: TObj) => TResult>; - } - - interface LoDashImplicitArrayWrapper<T> { - /** - * @see _.property - */ - property<TObj, TResult>(): LoDashImplicitObjectWrapper<(obj: TObj) => TResult>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.property - */ - property<TObj, TResult>(): LoDashExplicitObjectWrapper<(obj: TObj) => TResult>; - } - - interface LoDashExplicitArrayWrapper<T> { - /** - * @see _.property - */ - property<TObj, TResult>(): LoDashExplicitObjectWrapper<(obj: TObj) => TResult>; - } - - //_.propertyOf - interface LoDashStatic { - /** - * The opposite of _.property; this method creates a function that returns the property value at a given path - * on object. - * - * @param object The object to query. - * @return Returns the new function. - */ - propertyOf<T extends {}>(object: T): (path: string|string[]) => any; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.propertyOf - */ - propertyOf(): LoDashImplicitObjectWrapper<(path: string|string[]) => any>; - } - - interface LoDashExplicitObjectWrapper<T> { - /** - * @see _.propertyOf - */ - propertyOf(): LoDashExplicitObjectWrapper<(path: string|string[]) => any>; - } - - //_.range - interface LoDashStatic { - /** - * Creates an array of numbers (positive and/or negative) progressing from start up to, but not including, end. - * If end is not specified it’s set to start with start then set to 0. If end is less than start a zero-length - * range is created unless a negative step is specified. - * - * @param start The start of the range. - * @param end The end of the range. - * @param step The value to increment or decrement by. - * @return Returns a new range array. - */ - range( - start: number, - end: number, - step?: number - ): number[]; - - /** - * @see _.range - */ - range( - end: number, - step?: number - ): number[]; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.range - */ - range( - end?: number, - step?: number - ): LoDashImplicitArrayWrapper<number>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.range - */ - range( - end?: number, - step?: number - ): LoDashExplicitArrayWrapper<number>; - } - - //_.rangeRight - interface LoDashStatic { - /** - * This method is like `_.range` except that it populates values in - * descending order. - * - * @static - * @memberOf _ - * @category Util - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @param {number} [step=1] The value to increment or decrement by. - * @returns {Array} Returns the new array of numbers. - * @example - * - * _.rangeRight(4); - * // => [3, 2, 1, 0] - * - * _.rangeRight(-4); - * // => [-3, -2, -1, 0] - * - * _.rangeRight(1, 5); - * // => [4, 3, 2, 1] - * - * _.rangeRight(0, 20, 5); - * // => [15, 10, 5, 0] - * - * _.rangeRight(0, -4, -1); - * // => [-3, -2, -1, 0] - * - * _.rangeRight(1, 4, 0); - * // => [1, 1, 1] - * - * _.rangeRight(0); - * // => [] - */ - rangeRight( - start: number, - end: number, - step?: number - ): number[]; - - /** - * @see _.rangeRight - */ - rangeRight( - end: number, - step?: number - ): number[]; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.rangeRight - */ - rangeRight( - end?: number, - step?: number - ): LoDashImplicitArrayWrapper<number>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.rangeRight - */ - rangeRight( - end?: number, - step?: number - ): LoDashExplicitArrayWrapper<number>; - } - - //_.runInContext - interface LoDashStatic { - /** - * Create a new pristine lodash function using the given context object. - * - * @param context The context object. - * @return Returns a new lodash function. - */ - runInContext(context?: Object): typeof _; - } - - interface LoDashImplicitObjectWrapper<T> { - /** - * @see _.runInContext - */ - runInContext(): typeof _; - } - - //_.times - interface LoDashStatic { - /** - * Invokes the iteratee function n times, returning an array of the results of each invocation. The iteratee is - * bound to thisArg and invoked with one argument; (index). - * - * @param n The number of times to invoke iteratee. - * @param iteratee The function invoked per iteration. - * @param thisArg The this binding of iteratee. - * @return Returns the array of results. - */ - times<TResult>( - n: number, - iteratee: (num: number) => TResult, - thisArg?: any - ): TResult[]; - - /** - * @see _.times - */ - times(n: number): number[]; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.times - */ - times<TResult>( - iteratee: (num: number) => TResult, - thisArgs?: any - ): LoDashImplicitArrayWrapper<TResult>; - - /** - * @see _.times - */ - times(): LoDashImplicitArrayWrapper<number>; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.times - */ - times<TResult>( - iteratee: (num: number) => TResult, - thisArgs?: any - ): LoDashExplicitArrayWrapper<TResult>; - - /** - * @see _.times - */ - times(): LoDashExplicitArrayWrapper<number>; - } - - //_.toPath - interface LoDashStatic { - /** - * Converts `value` to a property path array. - * - * @static - * @memberOf _ - * @category Util - * @param {*} value The value to convert. - * @returns {Array} Returns the new property path array. - * @example - * - * _.toPath('a.b.c'); - * // => ['a', 'b', 'c'] - * - * _.toPath('a[0].b.c'); - * // => ['a', '0', 'b', 'c'] - * - * var path = ['a', 'b', 'c'], - * newPath = _.toPath(path); - * - * console.log(newPath); - * // => ['a', 'b', 'c'] - * - * console.log(path === newPath); - * // => false - */ - toPath(value: any): string[]; - } - - interface LoDashImplicitWrapperBase<T, TWrapper> { - /** - * @see _.toPath - */ - toPath(): LoDashImplicitWrapper<string[]>; - } - - interface LoDashExplicitWrapperBase<T, TWrapper> { - /** - * @see _.toPath - */ - toPath(): LoDashExplicitWrapper<string[]>; - } - - //_.uniqueId - interface LoDashStatic { - /** - * Generates a unique ID. If prefix is provided the ID is appended to it. - * - * @param prefix The value to prefix the ID with. - * @return Returns the unique ID. - */ - uniqueId(prefix?: string): string; - } - - interface LoDashImplicitWrapper<T> { - /** - * @see _.uniqueId - */ - uniqueId(): string; - } - - interface LoDashExplicitWrapper<T> { - /** - * @see _.uniqueId - */ - uniqueId(): LoDashExplicitWrapper<string>; - } - - interface ListIterator<T, TResult> { - (value: T, index: number, collection: List<T>): TResult; - } - - interface DictionaryIterator<T, TResult> { - (value: T, key?: string, collection?: Dictionary<T>): TResult; - } - - interface NumericDictionaryIterator<T, TResult> { - (value: T, key?: number, collection?: Dictionary<T>): TResult; - } - - interface ObjectIterator<T, TResult> { - (element: T, key?: string, collection?: any): TResult; - } - - interface StringIterator<TResult> { - (char: string, index?: number, string?: string): TResult; - } - - interface MemoVoidIterator<T, TResult> { - (prev: TResult, curr: T, indexOrKey?: any, list?: T[]): void; - } - interface MemoIterator<T, TResult> { - (prev: TResult, curr: T, indexOrKey?: any, list?: T[]): TResult; - } - - interface MemoVoidArrayIterator<T, TResult> { - (acc: TResult, curr: T, index?: number, arr?: T[]): void; - } - interface MemoVoidDictionaryIterator<T, TResult> { - (acc: TResult, curr: T, key?: string, dict?: Dictionary<T>): void; - } - - //interface Collection<T> {} - - // Common interface between Arrays and jQuery objects - interface List<T> { - [index: number]: T; - length: number; - } - - interface Dictionary<T> { - [index: string]: T; - } - - interface NumericDictionary<T> { - [index: number]: T; - } - - interface StringRepresentable { - toString(): string; - } - - interface Cancelable { - cancel(): void; - } -} - -declare module "lodash" { - export = _; -} diff --git a/lib/decl/mithril.d.ts b/lib/decl/mithril.d.ts deleted file mode 100644 index c45633490..000000000 --- a/lib/decl/mithril.d.ts +++ /dev/null @@ -1,926 +0,0 @@ -// Mithril type definitions for Typescript - -/** -* This is the module containing all the types/declarations/etc. for Mithril -*/ -declare module _mithril { - interface MithrilStatic { - /** - * Creates a virtual element for use with m.render, m.mount, etc. - * - * @param selector A simple CSS selector. May include SVG tags. Nested - * selectors are not supported. - * @param attributes Attributes to add. Any DOM attribute may be used - * as an attribute, although innerHTML and the like may be overwritten - * silently. - * @param children Child elements, components, and text to add. - * @return A virtual element. - * - * @see m.render - * @see m.mount - * @see m.component - */ - <T extends MithrilController>( - selector: string, - attributes: MithrilAttributes, - ...children: Array<string | - MithrilVirtualElement<T> | - MithrilComponent<T>> - ): MithrilVirtualElement<T>; - - /** - * Initializes a component for use with m.render, m.mount, etc. - * - * @param component A component. - * @param args Arguments to optionally pass to the component. - * @return A component. - * - * @see m.render - * @see m.mount - * @see m - */ - <T extends MithrilController>( - component: MithrilComponent<T>, - ...args: any[] - ): MithrilComponent<T>; - - /** - * Creates a virtual element for use with m.render, m.mount, etc. - * - * @param selector A simple CSS selector. Nested selectors are not - * supported. - * @param children Child elements, components, and text to add. - * @return A virtual element. - * - * @see m.render - * @see m.mount - * @see m.component - */ - <T extends MithrilController>( - selector: string, - ...children: Array<string | - MithrilVirtualElement<T> | - MithrilComponent<T>> - ): MithrilVirtualElement<T>; - - /** - * Initializes a component for use with m.render, m.mount, etc. - * Shorthand for m.component. - * - * @param selector A component. - * @param args Arguments to optionally pass to the component. - * @return A component. - * - * @see m.render - * @see m.mount - * @see m.component - */ - <T extends MithrilController>( - component: MithrilComponent<T>, - ...args: any[] - ): MithrilComponent<T>; - - /** - * Creates a getter-setter function that wraps a Mithril promise. Useful - * for uniform data access, m.withAttr, etc. - * - * @param promise A thennable to initialize the property with. It may - * optionally be a Mithril promise. - * @return A getter-setter function wrapping the promise. - * - * @see m.withAttr - */ - prop<T>(promise: Thennable<T>) : MithrilPromiseProperty<T>; - - /** - * Creates a getter-setter function that wraps a simple value. Useful - * for uniform data access, m.withAttr, etc. - * - * @param value A value to initialize the property with - * @return A getter-setter function wrapping the value. - * - * @see m.withAttr - */ - prop<T>(value: T): MithrilBasicProperty<T>; - - /** - * Creates a getter-setter function that wraps a simple value. Useful - * for uniform data access, m.withAttr, etc. - * - * @return A getter-setter function wrapping the value. - * - * @see m.withAttr - */ - prop<T>(): MithrilBasicProperty<T>; - - /** - * Returns a event handler that can be bound to an element, firing with - * the specified property. - * - * @param property The property to get from the event. - * @param callback The handler to use the value from the event. - * @return A function suitable for listening to an event. - */ - withAttr( - property: string, - callback: (value: any) => void, - callbackThis: any - ): (e: Event) => any; - - /** - * Returns a event handler that can be bound to an element, firing with - * the specified property. - * - * @param attributeName Name of the element's attribute to bind to. - * @param property The property to bind. - * @return A function suitable for listening to an event. - */ - withAttr<T>( - attributeName: string, - property: MithrilBasicProperty<T> - ) : (e: Event) => any; - - /** - * @deprecated Use m.mount instead - */ - module<T extends MithrilController>( - rootElement: Node, - component: MithrilComponent<T> - ): T; - - /** - * Mounts a component to a base DOM node. - * - * @param rootElement The base node. - * @param component The component to mount. - * @return An instance of the top-level component's controller - */ - mount<T extends MithrilController>( - rootElement: Node, - component: MithrilComponent<T> - ): T; - - /** - * Initializes a component for use with m.render, m.mount, etc. - * - * @param selector A component. - * @param args Arguments to optionally pass to the component. - * @return A component. - * - * @see m.render - * @see m.mount - * @see m - */ - component<T extends MithrilController>( - component: MithrilComponent<T>, - ...args: any[] - ): MithrilComponent<T>; - - /** - * Trust this string of HTML. - * - * @param html The HTML to trust - * @return A String object instance with an added internal flag to mark - * it as trusted. - */ - trust(html: string): MithrilTrustedString; - - /** - * Render a virtual DOM tree. - * - * @param rootElement The base element/node to render the tree from. - * @param children One or more child nodes to add to the tree. - * @param forceRecreation If true, overwrite the entire tree without - * diffing against it. - */ - render<T extends MithrilController>( - rootElement: Element, - children: MithrilVirtualElement<T>|MithrilVirtualElement<T>[], - forceRecreation?: boolean - ): void; - - redraw: { - /** - * Force a redraw the active component. It redraws asynchronously by - * default to allow for simultaneous events to run before redrawing, - * such as the event combination keypress + input frequently used for - * input. - * - * @param force If true, redraw synchronously. - */ - (force?: boolean): void; - - strategy: { - /** - * Gets the current redraw strategy, which returns one of the - * following: - * - * "all" - recreates the DOM tree from scratch - * "diff" - recreates the DOM tree from scratch - * "none" - leaves the DOM tree intact - * - * This is useful for event handlers, which may want to cancel - * the next redraw if the event doesn't update the UI. - * - * @return The current strategy - */ - (): string; - - /** - * Sets the current redraw strategy. The parameter must be one of - * the following values: - * - * "all" - recreates the DOM tree from scratch - * "diff" - recreates the DOM tree from scratch - * "none" - leaves the DOM tree intact - * - * This is useful for event handlers, which may want to cancel - * the next redraw if the event doesn't update the UI. - * - * @param value The value to set - * @return The new strategy - */ - (value: string): string; - - /** - * @private - * Implementation detail - it's a MithrilBasicProperty instance - */ - toJSON(): string; - } - } - - route: { - /** - * Enable routing, mounting a controller based on the route. It - * automatically mounts the components for you, starting with the one - * specified by the default route. - * - * @param rootElement The element to mount the active controller to. - * @param defaultRoute The route to start with. - * @param routes A key-value mapping of pathname to controller. - */ - <T extends MithrilController>( - rootElement: Element, - defaultRoute: string, - routes: MithrilRoutes - ): void; - - /** - * This allows m.route to be used as the `config` attribute for a - * virtual element, particularly useful for cases like this: - * - * ```ts - * // Note that the '#' is not required in `href`, thanks to the - * `config` setting. - * m("a[href='/dashboard/alicesmith']", {config: m.route}); - * ``` - */ - <T extends MithrilController>( - element: Element, - isInitialized: boolean, - context?: MithrilContext, - vdom?: MithrilVirtualElement<T> - ): void; - - /** - * Programmatically redirect to another route. - * - * @param path The route to go to. - * @param params Parameters to pass as a query string. - * @param shouldReplaceHistory Whether to replace the current history - * instead of adding a new one. - */ - (path: string, params?: any, shouldReplaceHistory?: boolean): void; - - /** - * Gets the current route. - * - * @return The current route. - */ - (): string; - - /** - * Gets a route parameter. - * - * @param key The key to get. - * @return The value associated with the parameter key. - */ - param(key: string): string; - - /** - * The current routing mode. This may be changed before calling - * m.route to change the part of the URL used to perform the routing. - * - * The value can be set to one of the following, defaulting to - * "hash": - * - * "search" - Uses the query string. This allows for named anchors to - * work on the page, but changes cause IE8 and lower to refresh the - * page. - * - * "hash" - Uses the hash. This is the only routing mode that does - * not cause page refreshes on any browser, but it does not support - * named anchors. - * - * "pathname" - Uses the URL pathname. This requires server-side - * setup to support bookmarking and page refreshes. It always causes - * page refreshes on IE8 and lower. Note that this requires that the - * application to be run from the root of the URL. - */ - mode: string; - - /** - * Serialize an object into a query string. - * - * @param data The data to serialize. - * @return The serialized string. - */ - buildQueryString(data: Object): String - - /** - * Parse a query string into an object. - * - * @param data The data to parse. - * @return The parsed object data. - */ - parseQueryString(data: String): Object - } - - /** - * Send a request to a server to server. Note that the `url` option is - * required. - * - * @param options The options to use - * @return A promise to the returned data for "GET" requests, or a void - * promise for any other request type. - * - * @see MithrilXHROptions for the available options. - */ - request<T>(options: MithrilXHROptions<T>): MithrilPromise<T>; - - deferred: { - /** - * Create a Mithril deferred object. It behaves synchronously if - * possible, an intentional deviation from Promises/A+. Note that - * deferreds are completely separate from the redrawing system, and - * never trigger a redraw on their own. - * - * @return A new Mithril deferred instance. - * - * @see m.deferred.onerror for the error callback called for Error - * subclasses - */ - <T>(): MithrilDeferred<T>; - - /** - * A callback for all uncaught native Error subclasses in deferreds. - * This defaults to synchronously rethrowing all errors, a deviation - * from Promises/A+, but the behavior is configurable. To restore - * Promises/A+-compatible behavior. simply set this to a no-op. - */ - onerror(e: Error): void; - } - - /** - * Takes a list of promises or thennables and returns a Mithril promise - * that resolves once all in the list are resolved, or rejects if any of - * them reject. - * - * @param promises A list of promises to try to resolve. - * @return A promise that resolves to all the promises if all resolve, or - * rejects with the error contained in the first rejection. - */ - sync<T>(promises: Thennable<T>[]): MithrilPromise<T[]>; - - /** - * Use this and endComputation if your views aren't redrawing after - * calls to third-party libraries. For integrating asynchronous code, - * this should be called before any asynchronous work is done. For - * synchronous code, this should be called at the beginning of the - * problematic segment. Note that these calls must be balanced, much like - * braces and parentheses. This is mostly used internally. Prefer - * m.redraw where possible, especially when making repeated calls. - * - * @see endComputation - * @see m.render - */ - startComputation(): void; - - /** - * Use startComputation and this if your views aren't redrawing after - * calls to third-party libraries. For integrating asynchronous code, - * this should be called after all asynchronous work completes. For - * synchronous code, this should be called at the end of the problematic - * segment. Note that these calls must be balanced, much like braces and - * parentheses. This is mostly used internally. Prefer m.redraw where - * possible, especially when making repeated calls. - * - * @see startComputation - * @see m.render - */ - endComputation(): void; - - /** - * This overwrites the internal version of window used by Mithril. - * It's mostly useful for testing, and is also used internally by - * Mithril to test itself. By default Mithril uses `window` for the - * dependency. - * - * @param mockWindow The mock to use for the window. - * @return The mock that was passed in. - */ - deps(mockWindow: Window): Window; - } - - interface MithrilTrustedString extends String { - /** @private Implementation detail. Don't depend on it. */ - $trusted: boolean; - } - - /** - * The interface for a virtual element. It's best to consider this immutable - * for most use cases. - * - * @see m - */ - interface MithrilVirtualElement<T extends MithrilController> { - /** - * A key to optionally associate with this element. - */ - key?: number; - - /** - * The tag name of this element. - */ - tag?: string; - - /** - * The attributes of this element. - */ - attrs?: MithrilAttributes; - - /** - * The children of this element. - */ - children?: Array<string|MithrilVirtualElement<T>|MithrilComponent<T>>; - } - - /** - * An event passed by Mithril to unload event handlers. - */ - interface MithrilEvent { - /** - * Prevent the default behavior of scrolling the page and updating the - * URL on next route change. - */ - preventDefault(): void; - } - - /** - * A context object for configuration functions. - * - * @see MithrilElementConfig - */ - interface MithrilContext { - /** - * A function to call when the node is unloaded. Useful for cleanup. - */ - onunload?(): any; - - /** - * Set true if the backing DOM node needs to be retained between route - * changes if possible. Set false if this node needs to be recreated - * every single time, regardless of how "different" it is. - */ - retain?: boolean; - } - - /** - * This represents a callback function for a virtual element's config - * attribute. It's a low-level function useful for extra cleanup after - * removal from the tree, storing instances of third-party classes that - * need to be associated with the DOM, etc. - * - * @see MithrilAttributes - * @see MithrilContext - */ - interface MithrilElementConfig { - /** - * A callback function for a virtual element's config attribute. - * - * @param element The associated DOM element. - * @param isInitialized Whether this is the first call for the virtual - * element or not. - * @param context The associated context for this element. - * @param vdom The associated virtual element. - */ - <T extends MithrilController>( - element: Element, - isInitialized: boolean, - context: MithrilContext, - vdom: MithrilVirtualElement<T> - ): void; - } - - /** - * This represents the attributes available for configuring virtual elements, - * beyond the applicable DOM attributes. - * - * @see m - */ - interface MithrilAttributes { - /** - * The class name(s) for this virtual element, as a space-separated list. - */ - className?: string; - - /** - * The class name(s) for this virtual element, as a space-separated list. - */ - class?: string; - - /** - * A custom, low-level configuration in case this element needs special - * cleanup after removal from the tree. - * - * @see MithrilElementConfig - */ - config?: MithrilElementConfig; - - /** - * Any other virtual element properties including attributes and - * event handlers - */ - [property: string]: any; - } - - /** - * The basis of a Mithril controller instance. - */ - interface MithrilController { - /** - * An optional handler to call when the associated virtual element is - * destroyed. - * - * @param evt An associated event. - */ - onunload?(evt: MithrilEvent): any; - } - - /** - * This represents a controller function. - * - * @see MithrilControllerConstructor - */ - interface MithrilControllerFunction<T extends MithrilController> { - (opts?: any): T; - } - - /** - * This represents a controller constructor. - * - * @see MithrilControllerFunction - */ - interface MithrilControllerConstructor<T extends MithrilController> { - new(): T; - } - - /** - * This represents a view factory. - */ - interface MithrilView<T extends MithrilController> { - /** - * Creates a view out of virtual elements. - */ - (ctrl: T): MithrilVirtualElement<T>; - } - - /** - * This represents a Mithril component. - * - * @see m - * @see m.component - */ - interface MithrilComponent<T extends MithrilController> { - /** - * The component's controller. - * - * @see m.component - */ - controller?: MithrilControllerFunction<T> | - MithrilControllerConstructor<T>; - - /** - * Creates a view out of virtual elements. - * - * @see m.component - */ - view(ctrl?: T, opts?: any): MithrilVirtualElement<T>; - } - - /** - * This is the base interface for property getter-setters - * - * @see m.prop - */ - interface MithrilProperty<T> { - /** - * Gets the contained value. - * - * @return The contained value. - */ - (): T; - - /** - * Sets the contained value. - * - * @param value The new value to set. - * @return The newly set value. - */ - (value: T): T; - } - - /** - * This represents a non-promise getter-setter functions. - * - * @see m.prop which returns objects that implement this interface. - */ - interface MithrilBasicProperty<T> extends MithrilProperty<T> { - /** - * Makes this serializable to JSON. - */ - toJSON(): T; - } - - /** - * This represents a promise getter-setter function. - * - * @see m.prop which returns objects that implement this interface. - */ - interface MithrilPromiseProperty<T> extends MithrilPromise<T>, - MithrilProperty<MithrilPromise<T>> { - /** - * Gets the contained promise. - * - * @return The contained value. - */ - (): MithrilPromise<T>; - - /** - * Sets the contained promise. - * - * @param value The new value to set. - * @return The newly set value. - */ - (value: MithrilPromise<T>): MithrilPromise<T>; - - /** - * Sets the contained wrapped value. - * - * @param value The new value to set. - * @return The newly set value. - */ - (value: T): MithrilPromise<T>; - } - - /** - * This represents a key-value mapping linking routes to components. - */ - interface MithrilRoutes { - /** - * The key represents the route. The value represents the corresponding - * component. - */ - [key: string]: MithrilComponent<MithrilController>; - } - - /** - * This represents a Mithril deferred object. - */ - interface MithrilDeferred<T> { - /** - * Resolve this deferred's promise with a value. - * - * @param value The value to resolve the promise with. - */ - resolve(value?: T): void; - - /** - * Reject this deferred with an error. - * - * @param value The reason for rejecting the promise. - */ - reject(reason?: any): void; - - /** - * The backing promise. - * - * @see MithrilPromise - */ - promise: MithrilPromise<T>; - } - - /** - * This represents a thennable success callback. - */ - interface MithrilSuccessCallback<T, U> { - (value: T): U | Thennable<U>; - } - - /** - * This represents a thennable error callback. - */ - interface MithrilErrorCallback<T> { - (value: Error): T | Thennable<T>; - } - - /** - * This represents a thennable. - */ - interface Thennable<T> { - then<U>(success: (value: T) => U): Thennable<U>; - then<U,V>(success: (value: T) => U, error: (value: Error) => V): Thennable<U>|Thennable<V>; - catch?: <U>(error: (value: Error) => U) => Thennable<U>; - } - - /** - * This represents a Mithril promise object. - */ - interface MithrilPromise<T> extends Thennable<T>, MithrilProperty<MithrilPromise<T>> { - /** - * Chain this promise with a simple success callback, propogating - * rejections. - * - * @param success The callback to call when the promise is resolved. - * @return The chained promise. - */ - then<U>(success: MithrilSuccessCallback<T,U>): MithrilPromise<U>; - - /** - * Chain this promise with a success callback and error callback, without - * propogating rejections. - * - * @param success The callback to call when the promise is resolved. - * @param error The callback to call when the promise is rejected. - * @return The chained promise. - */ - then<U, V>( - success: MithrilSuccessCallback<T, U>, - error: MithrilErrorCallback<V> - ): MithrilPromise<U> | MithrilPromise<V>; - - /** - * Chain this promise with a single error callback, without propogating - * rejections. - * - * @param error The callback to call when the promise is rejected. - * @return The chained promise. - */ - catch<U>(error: MithrilErrorCallback<U>): MithrilPromise<T> | - MithrilPromise<U>; - } - - /** - * This represents the available options for configuring m.request. - * - * @see m.request - */ - interface MithrilXHROptions<T> { - /** - * This represents the HTTP method used, one of the following: - * - * - "GET" (default) - * - "POST" - * - "PUT" - * - "DELETE" - * - "HEAD" - * - "OPTIONS" - */ - method?: string; - - /** - * The URL to send the request to. - */ - url: string; - - /** - * The username for HTTP authentication. - */ - user?: string; - - /** - * The password for HTTP authentication. - */ - password?: string; - - /** - * The data to be sent. It's automatically serialized in the right format - * depending on the method (with exception of HTML5 FormData), and put in - * the appropriate section of the request. - */ - data?: any; - - /** - * Whether to run it in the background, i.e. true if it doesn't affect - * template rendering. - */ - background?: boolean; - - /** - * Set an initial value while the request is working, to populate the - * promise getter-setter. - */ - initialValue?: T; - - /** - * An optional preprocessor function to unwrap a successful response, in - * case the response contains metadata wrapping the data. - * - * @param data The data to unwrap. - * @return The unwrapped result. - */ - unwrapSuccess?(data: any): T; - - /** - * An optional preprocessor function to unwrap an unsuccessful response, - * in case the response contains metadata wrapping the data. - * - * @param data The data to unwrap. - * @return The unwrapped result. - */ - unwrapError?(data: any): T; - - /** - * An optional function to serialize the data. This defaults to - * `JSON.stringify`. - * - * @param dataToSerialize The data to serialize. - * @return The serialized form as a string. - */ - serialize?(dataToSerialize: any): string; - - /** - * An optional function to deserialize the data. This defaults to - * `JSON.parse`. - * - * @param dataToSerialize The data to parse. - * @return The parsed form. - */ - deserialize?(dataToDeserialize: string): any; - - /** - * An optional function to extract the data from a raw XMLHttpRequest, - * useful if the relevant data is in a response header or the status - * field. - * - * @param xhr The associated XMLHttpRequest. - * @param options The options passed to this request. - * @return string The serialized format. - */ - extract?(xhr: XMLHttpRequest, options: MithrilXHROptions<T>): string; - - /** - * The parsed data, or its children if it's an array, will be passed to - * this class constructor if it's given, to parse it into classes. - * - * @param data The data to parse. - * @return The new instance for the list. - */ - type?: new (data: Object) => any; - - /** - * An optional function to run between `open` and `send`, useful for - * adding request headers or using XHR2 features such as the `upload` - * property. It is even possible to override the XHR altogether with a - * similar object, such as an XDomainRequest instance. - * - * @param xhr The associated XMLHttpRequest. - * @param options The options passed to this request. - * @return The new XMLHttpRequest, or nothing if the same one is kept. - */ - config?(xhr: XMLHttpRequest, options: MithrilXHROptions<T>): any; - - /** - * For JSONP requests, this must be the string "jsonp". Otherwise, it's - * ignored. - */ - dataType?: string; - - /** - * For JSONP requests, this is the query string key for the JSONP - * request. This is useful for APIs that don't use common conventions, - * such as `www.example.com/?jsonpCallback=doSomething`. It defaults to - * `callback` for JSONP requests, and is ignored for any other kind of - * request. - */ - callbackKey?: string; - } -} - -declare var Mithril: _mithril.MithrilStatic; -declare var m: _mithril.MithrilStatic; - -declare module "mithril" { - export = m; -} diff --git a/lib/module-trampoline.js b/lib/module-trampoline.js index 3eb94e36a..4815fdfb8 100644 --- a/lib/module-trampoline.js +++ b/lib/module-trampoline.js @@ -32,16 +32,6 @@ System.config({ defaultJSExtensions: true, }); - -// Register mithril as a module, -// but only if it is ambient. -if (typeof m !== "undefined") { - let mod = System.newModule({default: m}); - let modName = "mithril"; - System.set(modName, mod); -} - - let me = window.location.protocol + "//" + window.location.host + window.location.pathname.replace(/[.]html$/, ".js"); diff --git a/lib/vendor/lodash.core.min.js b/lib/vendor/lodash.core.min.js deleted file mode 100644 index 062e55d49..000000000 --- a/lib/vendor/lodash.core.min.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @license - * lodash 4.0.0 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE - * Build: `lodash core -o ./dist/lodash.core.js` - */ -;(function(){function n(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function t(n,t,r){for(var e=-1,u=n.length;++e<u;){var o=n[e],i=t(o);if(null!=i&&(c===ln?i===i:r(i,c)))var c=i,f=o}return f}function r(n,t,r){var e;return r(n,function(n,r,u){return t(n,r,u)?(e=n,false):void 0}),e}function e(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function u(n,t){return w(t,function(t){return n[t]})}function o(n){return n&&n.Object===Object?n:null}function i(n){return vn[n]; -}function c(n){var t=false;if(null!=n&&typeof n.toString!="function")try{t=!!(n+"")}catch(r){}return t}function f(n,t){return n=typeof n=="number"||hn.test(n)?+n:-1,n>-1&&0==n%1&&(null==t?9007199254740991:t)>n}function a(n){if(Z(n)&&!Vn(n)){if(n instanceof l)return n;if(En.call(n,"__wrapped__")){var t=new l(n.__wrapped__,n.__chain__);return t.__actions__=k(n.__actions__),t}}return new l(n)}function l(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function p(n,t,r,e){return n===ln||H(n,xn[r])&&!En.call(e,r)?t:n; -}function s(n,t,r){if(typeof n!="function")throw new TypeError("Expected a function");return setTimeout(function(){n.apply(ln,r)},t)}function h(n,t){var r=true;return $n(n,function(n,e,u){return r=!!t(n,e,u)}),r}function v(n,t){var r=[];return $n(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function y(t,r,e,u){u||(u=[]);for(var o=-1,i=t.length;++o<i;){var c=t[o];Z(c)&&Q(c)&&(e||Vn(c)||L(c))?r?y(c,r,e,u):n(u,c):e||(u[u.length]=c)}return u}function _(n,t){return n&&qn(n,t,un)}function g(n,t){return v(t,function(t){ -return W(n[t])})}function b(n,t,r,e,u){return n===t?true:null==n||null==t||!Y(n)&&!Z(t)?n!==n&&t!==t:j(n,t,b,r,e,u)}function j(n,t,r,e,u,o){var i=Vn(n),f=Vn(t),a="[object Array]",l="[object Array]";i||(a=kn.call(n),"[object Arguments]"==a&&(a="[object Object]")),f||(l=kn.call(t),"[object Arguments]"==l&&(l="[object Object]"));var p="[object Object]"==a&&!c(n),f="[object Object]"==l&&!c(t);return!(l=a==l)||i||p?2&u||(a=p&&En.call(n,"__wrapped__"),f=f&&En.call(t,"__wrapped__"),!a&&!f)?l?(o||(o=[]),(a=C(o,function(t){ -return t[0]===n}))&&a[1]?a[1]==t:(o.push([n,t]),t=(i?R:$)(n,t,r,e,u,o),o.pop(),t)):false:r(a?n.value():n,f?t.value():t,e,u,o):I(n,t,a)}function d(n){var t=typeof n;return"function"==t?n:null==n?fn:("object"==t?O:E)(n)}function m(n){n=null==n?n:Object(n);var t,r=[];for(t in n)r.push(t);return r}function w(n,t){var r=-1,e=Q(n)?Array(n.length):[];return $n(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function O(n){var t=un(n),r=t.length;return function(e){if(null==e)return!r;for(e=Object(e);r--;){var u=t[r];if(!(u in e&&b(n[u],e[u],ln,true)))return false; -}return true}}function x(n,t){return n=Object(n),J(t,function(t,r){return r in n&&(t[r]=n[r]),t},{})}function E(n){return function(t){return null==t?ln:t[n]}}function A(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++e<u;)r[e]=n[e+t];return r}function k(n){return A(n,0,n.length)}function N(n,t){var r;return $n(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function S(t,r){return J(r,function(t,r){return r.func.apply(r.thisArg,n([t],r.args))},t); -}function T(n,t,r,e){r||(r={});for(var u=-1,o=t.length;++u<o;){var i=t[u],c=e?e(r[i],n[i],i,r,n):n[i],f=r,a=f[i];(!H(a,c)||H(a,xn[i])&&!En.call(f,i)||c===ln&&!(i in f))&&(f[i]=c)}return r}function F(n){return V(function(t,r){var e=-1,u=r.length,o=u>1?r[u-1]:ln,o=typeof o=="function"?(u--,o):ln;for(t=Object(t);++e<u;){var i=r[e];i&&n(t,i,o)}return t})}function B(n){return function(){var t=arguments,r=In(n.prototype),t=n.apply(r,t);return Y(t)?t:r}}function D(n,t,r){function e(){for(var o=-1,i=arguments.length,c=-1,f=r.length,a=Array(f+i),l=this&&this!==wn&&this instanceof e?u:n;++c<f;)a[c]=r[c]; -for(;i--;)a[c++]=arguments[++o];return l.apply(t,a)}if(typeof n!="function")throw new TypeError("Expected a function");var u=B(n);return e}function R(n,t,r,e,u,o){var i=-1,c=1&u,f=n.length,a=t.length;if(f!=a&&!(2&u&&a>f))return false;for(a=true;++i<f;){var l=n[i],p=t[i];if(void 0!==ln){a=false;break}if(c){if(!N(t,function(n){return l===n||r(l,n,e,u,o)})){a=false;break}}else if(l!==p&&!r(l,p,e,u,o)){a=false;break}}return a}function I(n,t,r){switch(r){case"[object Boolean]":case"[object Date]":return+n==+t;case"[object Error]": -return n.name==t.name&&n.message==t.message;case"[object Number]":return n!=+n?t!=+t:n==+t;case"[object RegExp]":case"[object String]":return n==t+""}return false}function $(n,t,r,e,u,o){var i=2&u,c=1&u,f=un(n),a=f.length,l=un(t);if(a!=l.length&&!i)return false;for(var p=a;p--;){var s=f[p];if(!(i?s in t:En.call(t,s))||!c&&s!=l[p])return false}for(c=true;++p<a;){var s=f[p],l=n[s],h=t[s];if(void 0!==ln||l!==h&&!r(l,h,e,u,o)){c=false;break}i||(i="constructor"==s)}return c&&!i&&(r=n.constructor,e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(c=false)), -c}function q(n){var t=n?n.length:ln;if(X(t)&&(Vn(n)||tn(n)||L(n))){n=String;for(var r=-1,e=Array(t);++r<t;)e[r]=n(r);t=e}else t=null;return t}function M(n){var t=n&&n.constructor;return n===(typeof t=="function"&&t.prototype||xn)}function z(n){return n?n[0]:ln}function C(n,t){return r(n,d(t),$n)}function G(n,t){return $n(n,typeof t=="function"?t:fn)}function J(n,t,r){return e(n,d(t),r,3>arguments.length,$n)}function P(n){return null==n?0:(n=Q(n)?n:un(n),n.length)}function U(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function"); -return n=Hn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=ln),r}}function V(n){var t;if(typeof n!="function")throw new TypeError("Expected a function");return t=Rn(t===ln?n.length-1:Hn(t),0),function(){for(var r=arguments,e=-1,u=Rn(r.length-t,0),o=Array(u);++e<u;)o[e]=r[t+e];for(u=Array(t+1),e=-1;++e<t;)u[e]=r[e];return u[t]=o,n.apply(this,u)}}function H(n,t){return n===t||n!==n&&t!==t}function K(n,t){return n>t}function L(n){return Z(n)&&Q(n)&&En.call(n,"callee")&&(!Fn.call(n,"callee")||"[object Arguments]"==kn.call(n)); -}function Q(n){return null!=n&&!(typeof n=="function"&&W(n))&&X(Mn(n))}function W(n){return n=Y(n)?kn.call(n):"","[object Function]"==n||"[object GeneratorFunction]"==n}function X(n){return typeof n=="number"&&n>-1&&0==n%1&&9007199254740991>=n}function Y(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function Z(n){return!!n&&typeof n=="object"}function nn(n){return typeof n=="number"||Z(n)&&"[object Number]"==kn.call(n)}function tn(n){return typeof n=="string"||!Vn(n)&&Z(n)&&"[object String]"==kn.call(n); -}function rn(n,t){return t>n}function en(n){return typeof n=="string"?n:null==n?"":n+""}function un(n){var t=M(n);if(!t&&!Q(n))return Dn(Object(n));var r,e=q(n),u=!!e,e=e||[],o=e.length;for(r in n)!En.call(n,r)||u&&("length"==r||f(r,o))||t&&"constructor"==r||e.push(r);return e}function on(n){for(var t=-1,r=M(n),e=m(n),u=e.length,o=q(n),i=!!o,o=o||[],c=o.length;++t<u;){var a=e[t];i&&("length"==a||f(a,c))||"constructor"==a&&(r||!En.call(n,a))||o.push(a)}return o}function cn(n){return n?u(n,un(n)):[]; -}function fn(n){return n}function an(t,r,e){var u=un(r),o=g(r,u);null!=e||Y(r)&&(o.length||!u.length)||(e=r,r=t,t=this,o=g(r,un(r)));var i=Y(e)&&"chain"in e?e.chain:true,c=W(t);return $n(o,function(e){var u=r[e];t[e]=u,c&&(t.prototype[e]=function(){var r=this.__chain__;if(i||r){var e=t(this.__wrapped__);return(e.__actions__=k(this.__actions__)).push({func:u,args:arguments,thisArg:t}),e.__chain__=r,e}return u.apply(t,n([this.value()],arguments))})}),t}var ln,pn=/[&<>"'`]/g,sn=RegExp(pn.source),hn=/^(?:0|[1-9]\d*)$/,vn={ -"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},yn={"function":true,object:true},_n=yn[typeof exports]&&exports&&!exports.nodeType?exports:null,gn=yn[typeof module]&&module&&!module.nodeType?module:null,bn=o(yn[typeof self]&&self),jn=o(yn[typeof window]&&window),dn=gn&&gn.exports===_n?_n:null,mn=o(yn[typeof this]&&this),wn=o(_n&&gn&&typeof global=="object"&&global)||jn!==(mn&&mn.window)&&jn||bn||mn||Function("return this")(),On=Array.prototype,xn=Object.prototype,En=xn.hasOwnProperty,An=0,kn=xn.toString,Nn=wn._,Sn=wn.f,Tn=Sn?Sn.g:ln,Fn=xn.propertyIsEnumerable,Bn=wn.isFinite,Dn=Object.keys,Rn=Math.max,In=function(){ -function n(){}return function(t){if(Y(t)){n.prototype=t;var r=new n;n.prototype=ln}return r||{}}}(),$n=function(n,t){return function(r,e){if(null==r)return r;if(!Q(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}(_),qn=function(n){return function(t,r,e){var u=-1,o=Object(t);e=e(t);for(var i=e.length;i--;){var c=e[n?i:++u];if(false===r(o[c],c,o))break}return t}}();Tn&&!Fn.call({valueOf:1},"valueOf")&&(m=function(n){n=Tn(n);for(var t,r=[];!(t=n.next()).done;)r.push(t.value); -return r});var Mn=E("length"),zn=V(function(t,r){y(r);var e=Vn(t)?t:[Object(t)];return n(k(e),cn)}),Cn=V(function(n,t,r){var e=typeof t=="function";return w(n,function(n){var u=e?t:n[t];return null==u?u:u.apply(n,r)})}),Gn=Date.now,Jn=V(function(n,t,r){return D(n,t,r)}),Pn=V(function(n,t){return s(n,1,t)}),Un=V(function(n,t,r){return s(n,Kn(t)||0,r)}),Vn=Array.isArray,Hn=Number,Kn=Number,Ln=F(function(n,t){T(t,un(t),n)}),Qn=F(function(n,t){T(t,on(t),n)}),Wn=F(function(n,t,r){T(t,on(t),n,r)}),Xn=V(function(n){ -return n.push(ln,p),Wn.apply(ln,n)}),Yn=V(function(n,t){return null==n?{}:x(n,y(t))}),Zn=d;l.prototype=In(a.prototype),l.prototype.constructor=l,a.assignIn=Qn,a.before=U,a.bind=Jn,a.chain=function(n){return n=a(n),n.__chain__=true,n},a.compact=function(n){return v(n,Boolean)},a.concat=zn,a.create=function(n,t){var r=In(n);return t?Ln(r,t):r},a.defaults=Xn,a.defer=Pn,a.delay=Un,a.filter=function(n,t){return v(n,d(t))},a.flatten=function(n){return n&&n.length?y(n):[]},a.flattenDeep=function(n){return n&&n.length?y(n,true):[]; -},a.invokeMap=Cn,a.iteratee=Zn,a.keys=un,a.map=function(n,t){return w(n,d(t))},a.mixin=an,a.negate=function(n){if(typeof n!="function")throw new TypeError("Expected a function");return function(){return!n.apply(this,arguments)}},a.once=function(n){return U(2,n)},a.pick=Yn,a.slice=function(n,t,r){return n&&n.length?A(n,t,r):[]},a.sortBy=function(n,t){var r=0;return t=d(t),w(w(n,function(n,e,u){return{c:n,b:r++,a:t(n,e,u)}}).sort(function(n,t){var r;n:{r=n.a;var e=t.a;if(r!==e){var u=null===r,o=r===ln,i=r===r,c=null===e,f=e===ln,a=e===e; -if(r>e&&!c||!i||u&&!f&&a||o&&a){r=1;break n}if(e>r&&!u||!a||c&&!o&&i||f&&i){r=-1;break n}}r=0}return r||n.b-t.b}),E("c"))},a.tap=function(n,t){return t(n),n},a.thru=function(n,t){return t(n)},a.toArray=function(n){return Q(n)?n.length?k(n):[]:cn(n)},a.values=cn,a.each=G,a.extend=Qn,an(a,a),a.clone=function(n){return Y(n)?Vn(n)?k(n):T(n,un(n)):n},a.escape=function(n){return(n=en(n))&&sn.test(n)?n.replace(pn,i):n},a.every=function(n,t,r){return t=r?ln:t,h(n,d(t))},a.find=C,a.forEach=G,a.has=function(n,t){ -return null!=n&&En.call(n,t)},a.head=z,a.identity=fn,a.indexOf=function(n,t,r){var e=n?n.length:0;r=typeof r=="number"?0>r?Rn(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++r<e;){var o=n[r];if(u?o===t:o!==o)return r}return-1},a.isArguments=L,a.isArray=Vn,a.isBoolean=function(n){return true===n||false===n||Z(n)&&"[object Boolean]"==kn.call(n)},a.isDate=function(n){return Z(n)&&"[object Date]"==kn.call(n)},a.isEmpty=function(n){return!Z(n)||W(n.splice)?!P(n):!un(n).length},a.isEqual=function(n,t){return b(n,t)}, -a.isFinite=function(n){return typeof n=="number"&&Bn(n)},a.isFunction=W,a.isNaN=function(n){return nn(n)&&n!=+n},a.isNull=function(n){return null===n},a.isNumber=nn,a.isObject=Y,a.isRegExp=function(n){return Y(n)&&"[object RegExp]"==kn.call(n)},a.isString=tn,a.isUndefined=function(n){return n===ln},a.last=function(n){var t=n?n.length:0;return t?n[t-1]:ln},a.max=function(n){return n&&n.length?t(n,fn,K):ln},a.min=function(n){return n&&n.length?t(n,fn,rn):ln},a.noConflict=function(){return wn._=Nn,this; -},a.noop=function(){},a.now=Gn,a.reduce=J,a.result=function(n,t,r){return t=null==n?ln:n[t],t===ln&&(t=r),W(t)?t.call(n):t},a.size=P,a.some=function(n,t,r){return t=r?ln:t,N(n,d(t))},a.uniqueId=function(n){var t=++An;return en(n)+t},a.first=z,an(a,function(){var n={};return _(a,function(t,r){En.call(a.prototype,r)||(n[r]=t)}),n}(),{chain:false}),a.VERSION="4.0.0",$n("pop join replace reverse split push shift sort splice unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?String.prototype:On)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|join|replace|shift)$/.test(n); -a.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?t.apply(this.value(),n):this[r](function(r){return t.apply(r,n)})}}),a.prototype.toJSON=a.prototype.valueOf=a.prototype.value=function(){return S(this.__wrapped__,this.__actions__)},(jn||bn||{})._=a,typeof define=="function"&&typeof define.amd=="object"&&define.amd? define(function(){return a}):_n&&gn?(dn&&((gn.exports=a)._=a),_n._=a):wn._=a}).call(this);
\ No newline at end of file diff --git a/lib/vendor/mithril.js b/lib/vendor/mithril.js deleted file mode 100644 index 55bef997f..000000000 --- a/lib/vendor/mithril.js +++ /dev/null @@ -1,2233 +0,0 @@ -;(function (global, factory) { // eslint-disable-line
- "use strict"
- /* eslint-disable no-undef */
- var m = factory(global)
- if (typeof module === "object" && module != null && module.exports) {
- module.exports = m
- } else if (typeof define === "function" && define.amd) {
- define(function () { return m })
- } else {
- global.m = m
- }
- /* eslint-enable no-undef */
-})(typeof window !== "undefined" ? window : this, function (global, undefined) { // eslint-disable-line
- "use strict"
-
- m.version = function () {
- return "v0.2.5"
- }
-
- var hasOwn = {}.hasOwnProperty
- var type = {}.toString
-
- function isFunction(object) {
- return typeof object === "function"
- }
-
- function isObject(object) {
- return type.call(object) === "[object Object]"
- }
-
- function isString(object) {
- return type.call(object) === "[object String]"
- }
-
- var isArray = Array.isArray || function (object) {
- return type.call(object) === "[object Array]"
- }
-
- function noop() {}
-
- var voidElements = {
- AREA: 1,
- BASE: 1,
- BR: 1,
- COL: 1,
- COMMAND: 1,
- EMBED: 1,
- HR: 1,
- IMG: 1,
- INPUT: 1,
- KEYGEN: 1,
- LINK: 1,
- META: 1,
- PARAM: 1,
- SOURCE: 1,
- TRACK: 1,
- WBR: 1
- }
-
- // caching commonly used variables
- var $document, $location, $requestAnimationFrame, $cancelAnimationFrame
-
- // self invoking function needed because of the way mocks work
- function initialize(mock) {
- $document = mock.document
- $location = mock.location
- $cancelAnimationFrame = mock.cancelAnimationFrame || mock.clearTimeout
- $requestAnimationFrame = mock.requestAnimationFrame || mock.setTimeout
- }
-
- // testing API
- m.deps = function (mock) {
- initialize(global = mock || window)
- return global
- }
-
- m.deps(global)
-
- /**
- * @typedef {String} Tag
- * A string that looks like -> div.classname#id[param=one][param2=two]
- * Which describes a DOM node
- */
-
- function parseTagAttrs(cell, tag) {
- var classes = []
- var parser = /(?:(^|#|\.)([^#\.\[\]]+))|(\[.+?\])/g
- var match
-
- while ((match = parser.exec(tag))) {
- if (match[1] === "" && match[2]) {
- cell.tag = match[2]
- } else if (match[1] === "#") {
- cell.attrs.id = match[2]
- } else if (match[1] === ".") {
- classes.push(match[2])
- } else if (match[3][0] === "[") {
- var pair = /\[(.+?)(?:=("|'|)(.*?)\2)?\]/.exec(match[3])
- cell.attrs[pair[1]] = pair[3] || ""
- }
- }
-
- return classes
- }
-
- function getVirtualChildren(args, hasAttrs) {
- var children = hasAttrs ? args.slice(1) : args
-
- if (children.length === 1 && isArray(children[0])) {
- return children[0]
- } else {
- return children
- }
- }
-
- function assignAttrs(target, attrs, classes) {
- var classAttr = "class" in attrs ? "class" : "className"
-
- for (var attrName in attrs) {
- if (hasOwn.call(attrs, attrName)) {
- if (attrName === classAttr &&
- attrs[attrName] != null &&
- attrs[attrName] !== "") {
- classes.push(attrs[attrName])
- // create key in correct iteration order
- target[attrName] = ""
- } else {
- target[attrName] = attrs[attrName]
- }
- }
- }
-
- if (classes.length) target[classAttr] = classes.join(" ")
- }
-
- /**
- *
- * @param {Tag} The DOM node tag
- * @param {Object=[]} optional key-value pairs to be mapped to DOM attrs
- * @param {...mNode=[]} Zero or more Mithril child nodes. Can be an array,
- * or splat (optional)
- */
- function m(tag, pairs) {
- var args = []
-
- for (var i = 1, length = arguments.length; i < length; i++) {
- args[i - 1] = arguments[i]
- }
-
- if (isObject(tag)) return parameterize(tag, args)
-
- if (!isString(tag)) {
- throw new Error("selector in m(selector, attrs, children) should " +
- "be a string")
- }
-
- var hasAttrs = pairs != null && isObject(pairs) &&
- !("tag" in pairs || "view" in pairs || "subtree" in pairs)
-
- var attrs = hasAttrs ? pairs : {}
- var cell = {
- tag: "div",
- attrs: {},
- children: getVirtualChildren(args, hasAttrs)
- }
-
- assignAttrs(cell.attrs, attrs, parseTagAttrs(cell, tag))
- return cell
- }
-
- function forEach(list, f) {
- for (var i = 0; i < list.length && !f(list[i], i++);) {
- // function called in condition
- }
- }
-
- function forKeys(list, f) {
- forEach(list, function (attrs, i) {
- return (attrs = attrs && attrs.attrs) &&
- attrs.key != null &&
- f(attrs, i)
- })
- }
- // This function was causing deopts in Chrome.
- function dataToString(data) {
- // data.toString() might throw or return null if data is the return
- // value of Console.log in some versions of Firefox (behavior depends on
- // version)
- try {
- if (data != null && data.toString() != null) return data
- } catch (e) {
- // silently ignore errors
- }
- return ""
- }
-
- // This function was causing deopts in Chrome.
- function injectTextNode(parentElement, first, index, data) {
- try {
- insertNode(parentElement, first, index)
- first.nodeValue = data
- } catch (e) {
- // IE erroneously throws error when appending an empty text node
- // after a null
- }
- }
-
- function flatten(list) {
- // recursively flatten array
- for (var i = 0; i < list.length; i++) {
- if (isArray(list[i])) {
- list = list.concat.apply([], list)
- // check current index again and flatten until there are no more
- // nested arrays at that index
- i--
- }
- }
- return list
- }
-
- function insertNode(parentElement, node, index) {
- parentElement.insertBefore(node,
- parentElement.childNodes[index] || null)
- }
-
- var DELETION = 1
- var INSERTION = 2
- var MOVE = 3
-
- function handleKeysDiffer(data, existing, cached, parentElement) {
- forKeys(data, function (key, i) {
- existing[key = key.key] = existing[key] ? {
- action: MOVE,
- index: i,
- from: existing[key].index,
- element: cached.nodes[existing[key].index] ||
- $document.createElement("div")
- } : {action: INSERTION, index: i}
- })
-
- var actions = []
- for (var prop in existing) {
- if (hasOwn.call(existing, prop)) {
- actions.push(existing[prop])
- }
- }
-
- var changes = actions.sort(sortChanges)
- var newCached = new Array(cached.length)
-
- newCached.nodes = cached.nodes.slice()
-
- forEach(changes, function (change) {
- var index = change.index
- if (change.action === DELETION) {
- clear(cached[index].nodes, cached[index])
- newCached.splice(index, 1)
- }
- if (change.action === INSERTION) {
- var dummy = $document.createElement("div")
- dummy.key = data[index].attrs.key
- insertNode(parentElement, dummy, index)
- newCached.splice(index, 0, {
- attrs: {key: data[index].attrs.key},
- nodes: [dummy]
- })
- newCached.nodes[index] = dummy
- }
-
- if (change.action === MOVE) {
- var changeElement = change.element
- var maybeChanged = parentElement.childNodes[index]
- if (maybeChanged !== changeElement && changeElement !== null) {
- parentElement.insertBefore(changeElement,
- maybeChanged || null)
- }
- newCached[index] = cached[change.from]
- newCached.nodes[index] = changeElement
- }
- })
-
- return newCached
- }
-
- function diffKeys(data, cached, existing, parentElement) {
- var keysDiffer = data.length !== cached.length
-
- if (!keysDiffer) {
- forKeys(data, function (attrs, i) {
- var cachedCell = cached[i]
- return keysDiffer = cachedCell &&
- cachedCell.attrs &&
- cachedCell.attrs.key !== attrs.key
- })
- }
-
- if (keysDiffer) {
- return handleKeysDiffer(data, existing, cached, parentElement)
- } else {
- return cached
- }
- }
-
- function diffArray(data, cached, nodes) {
- // diff the array itself
-
- // update the list of DOM nodes by collecting the nodes from each item
- forEach(data, function (_, i) {
- if (cached[i] != null) nodes.push.apply(nodes, cached[i].nodes)
- })
- // remove items from the end of the array if the new array is shorter
- // than the old one. if errors ever happen here, the issue is most
- // likely a bug in the construction of the `cached` data structure
- // somewhere earlier in the program
- forEach(cached.nodes, function (node, i) {
- if (node.parentNode != null && nodes.indexOf(node) < 0) {
- clear([node], [cached[i]])
- }
- })
-
- if (data.length < cached.length) cached.length = data.length
- cached.nodes = nodes
- }
-
- function buildArrayKeys(data) {
- var guid = 0
- forKeys(data, function () {
- forEach(data, function (attrs) {
- if ((attrs = attrs && attrs.attrs) && attrs.key == null) {
- attrs.key = "__mithril__" + guid++
- }
- })
- return 1
- })
- }
-
- function isDifferentEnough(data, cached, dataAttrKeys) {
- if (data.tag !== cached.tag) return true
-
- if (dataAttrKeys.sort().join() !==
- Object.keys(cached.attrs).sort().join()) {
- return true
- }
-
- if (data.attrs.id !== cached.attrs.id) {
- return true
- }
-
- if (data.attrs.key !== cached.attrs.key) {
- return true
- }
-
- if (m.redraw.strategy() === "all") {
- return !cached.configContext || cached.configContext.retain !== true
- }
-
- if (m.redraw.strategy() === "diff") {
- return cached.configContext && cached.configContext.retain === false
- }
-
- return false
- }
-
- function maybeRecreateObject(data, cached, dataAttrKeys) {
- // if an element is different enough from the one in cache, recreate it
- if (isDifferentEnough(data, cached, dataAttrKeys)) {
- if (cached.nodes.length) clear(cached.nodes)
-
- if (cached.configContext &&
- isFunction(cached.configContext.onunload)) {
- cached.configContext.onunload()
- }
-
- if (cached.controllers) {
- forEach(cached.controllers, function (controller) {
- if (controller.onunload) {
- controller.onunload({preventDefault: noop})
- }
- })
- }
- }
- }
-
- function getObjectNamespace(data, namespace) {
- if (data.attrs.xmlns) return data.attrs.xmlns
- if (data.tag === "svg") return "http://www.w3.org/2000/svg"
- if (data.tag === "math") return "http://www.w3.org/1998/Math/MathML"
- return namespace
- }
-
- var pendingRequests = 0
- m.startComputation = function () { pendingRequests++ }
- m.endComputation = function () {
- if (pendingRequests > 1) {
- pendingRequests--
- } else {
- pendingRequests = 0
- m.redraw()
- }
- }
-
- function unloadCachedControllers(cached, views, controllers) {
- if (controllers.length) {
- cached.views = views
- cached.controllers = controllers
- forEach(controllers, function (controller) {
- if (controller.onunload && controller.onunload.$old) {
- controller.onunload = controller.onunload.$old
- }
-
- if (pendingRequests && controller.onunload) {
- var onunload = controller.onunload
- controller.onunload = noop
- controller.onunload.$old = onunload
- }
- })
- }
- }
-
- function scheduleConfigsToBeCalled(configs, data, node, isNew, cached) {
- // schedule configs to be called. They are called after `build` finishes
- // running
- if (isFunction(data.attrs.config)) {
- var context = cached.configContext = cached.configContext || {}
-
- // bind
- configs.push(function () {
- return data.attrs.config.call(data, node, !isNew, context,
- cached)
- })
- }
- }
-
- function buildUpdatedNode(
- cached,
- data,
- editable,
- hasKeys,
- namespace,
- views,
- configs,
- controllers
- ) {
- var node = cached.nodes[0]
-
- if (hasKeys) {
- setAttributes(node, data.tag, data.attrs, cached.attrs, namespace)
- }
-
- cached.children = build(
- node,
- data.tag,
- undefined,
- undefined,
- data.children,
- cached.children,
- false,
- 0,
- data.attrs.contenteditable ? node : editable,
- namespace,
- configs
- )
-
- cached.nodes.intact = true
-
- if (controllers.length) {
- cached.views = views
- cached.controllers = controllers
- }
-
- return node
- }
-
- function handleNonexistentNodes(data, parentElement, index) {
- var nodes
- if (data.$trusted) {
- nodes = injectHTML(parentElement, index, data)
- } else {
- nodes = [$document.createTextNode(data)]
- if (!(parentElement.nodeName in voidElements)) {
- insertNode(parentElement, nodes[0], index)
- }
- }
-
- var cached
-
- if (typeof data === "string" ||
- typeof data === "number" ||
- typeof data === "boolean") {
- cached = new data.constructor(data)
- } else {
- cached = data
- }
-
- cached.nodes = nodes
- return cached
- }
-
- function reattachNodes(
- data,
- cached,
- parentElement,
- editable,
- index,
- parentTag
- ) {
- var nodes = cached.nodes
- if (!editable || editable !== $document.activeElement) {
- if (data.$trusted) {
- clear(nodes, cached)
- nodes = injectHTML(parentElement, index, data)
- } else if (parentTag === "textarea") {
- // <textarea> uses `value` instead of `nodeValue`.
- parentElement.value = data
- } else if (editable) {
- // contenteditable nodes use `innerHTML` instead of `nodeValue`.
- editable.innerHTML = data
- } else {
- // was a trusted string
- if (nodes[0].nodeType === 1 || nodes.length > 1 ||
- (nodes[0].nodeValue.trim &&
- !nodes[0].nodeValue.trim())) {
- clear(cached.nodes, cached)
- nodes = [$document.createTextNode(data)]
- }
-
- injectTextNode(parentElement, nodes[0], index, data)
- }
- }
- cached = new data.constructor(data)
- cached.nodes = nodes
- return cached
- }
-
- function handleTextNode(
- cached,
- data,
- index,
- parentElement,
- shouldReattach,
- editable,
- parentTag
- ) {
- if (!cached.nodes.length) {
- return handleNonexistentNodes(data, parentElement, index)
- } else if (cached.valueOf() !== data.valueOf() || shouldReattach) {
- return reattachNodes(data, cached, parentElement, editable, index,
- parentTag)
- } else {
- return (cached.nodes.intact = true, cached)
- }
- }
-
- function getSubArrayCount(item) {
- if (item.$trusted) {
- // fix offset of next element if item was a trusted string w/ more
- // than one html element
- // the first clause in the regexp matches elements
- // the second clause (after the pipe) matches text nodes
- var match = item.match(/<[^\/]|\>\s*[^<]/g)
- if (match != null) return match.length
- } else if (isArray(item)) {
- return item.length
- }
- return 1
- }
-
- function buildArray(
- data,
- cached,
- parentElement,
- index,
- parentTag,
- shouldReattach,
- editable,
- namespace,
- configs
- ) {
- data = flatten(data)
- var nodes = []
- var intact = cached.length === data.length
- var subArrayCount = 0
-
- // keys algorithm: sort elements without recreating them if keys are
- // present
- //
- // 1) create a map of all existing keys, and mark all for deletion
- // 2) add new keys to map and mark them for addition
- // 3) if key exists in new list, change action from deletion to a move
- // 4) for each key, handle its corresponding action as marked in
- // previous steps
-
- var existing = {}
- var shouldMaintainIdentities = false
-
- forKeys(cached, function (attrs, i) {
- shouldMaintainIdentities = true
- existing[cached[i].attrs.key] = {action: DELETION, index: i}
- })
-
- buildArrayKeys(data)
- if (shouldMaintainIdentities) {
- cached = diffKeys(data, cached, existing, parentElement)
- }
- // end key algorithm
-
- var cacheCount = 0
- // faster explicitly written
- for (var i = 0, len = data.length; i < len; i++) {
- // diff each item in the array
- var item = build(
- parentElement,
- parentTag,
- cached,
- index,
- data[i],
- cached[cacheCount],
- shouldReattach,
- index + subArrayCount || subArrayCount,
- editable,
- namespace,
- configs)
-
- if (item !== undefined) {
- intact = intact && item.nodes.intact
- subArrayCount += getSubArrayCount(item)
- cached[cacheCount++] = item
- }
- }
-
- if (!intact) diffArray(data, cached, nodes)
- return cached
- }
-
- function makeCache(data, cached, index, parentIndex, parentCache) {
- if (cached != null) {
- if (type.call(cached) === type.call(data)) return cached
-
- if (parentCache && parentCache.nodes) {
- var offset = index - parentIndex
- var end = offset + (isArray(data) ? data : cached.nodes).length
- clear(
- parentCache.nodes.slice(offset, end),
- parentCache.slice(offset, end))
- } else if (cached.nodes) {
- clear(cached.nodes, cached)
- }
- }
-
- cached = new data.constructor()
- // if constructor creates a virtual dom element, use a blank object as
- // the base cached node instead of copying the virtual el (#277)
- if (cached.tag) cached = {}
- cached.nodes = []
- return cached
- }
-
- function constructNode(data, namespace) {
- if (data.attrs.is) {
- if (namespace == null) {
- return $document.createElement(data.tag, data.attrs.is)
- } else {
- return $document.createElementNS(namespace, data.tag,
- data.attrs.is)
- }
- } else if (namespace == null) {
- return $document.createElement(data.tag)
- } else {
- return $document.createElementNS(namespace, data.tag)
- }
- }
-
- function constructAttrs(data, node, namespace, hasKeys) {
- if (hasKeys) {
- return setAttributes(node, data.tag, data.attrs, {}, namespace)
- } else {
- return data.attrs
- }
- }
-
- function constructChildren(
- data,
- node,
- cached,
- editable,
- namespace,
- configs
- ) {
- if (data.children != null && data.children.length > 0) {
- return build(
- node,
- data.tag,
- undefined,
- undefined,
- data.children,
- cached.children,
- true,
- 0,
- data.attrs.contenteditable ? node : editable,
- namespace,
- configs)
- } else {
- return data.children
- }
- }
-
- function reconstructCached(
- data,
- attrs,
- children,
- node,
- namespace,
- views,
- controllers
- ) {
- var cached = {
- tag: data.tag,
- attrs: attrs,
- children: children,
- nodes: [node]
- }
-
- unloadCachedControllers(cached, views, controllers)
-
- if (cached.children && !cached.children.nodes) {
- cached.children.nodes = []
- }
-
- // edge case: setting value on <select> doesn't work before children
- // exist, so set it again after children have been created
- if (data.tag === "select" && "value" in data.attrs) {
- setAttributes(node, data.tag, {value: data.attrs.value}, {},
- namespace)
- }
-
- return cached
- }
-
- function getController(views, view, cachedControllers, controller) {
- var controllerIndex
-
- if (m.redraw.strategy() === "diff" && views) {
- controllerIndex = views.indexOf(view)
- } else {
- controllerIndex = -1
- }
-
- if (controllerIndex > -1) {
- return cachedControllers[controllerIndex]
- } else if (isFunction(controller)) {
- return new controller()
- } else {
- return {}
- }
- }
-
- var unloaders = []
-
- function updateLists(views, controllers, view, controller) {
- if (controller.onunload != null &&
- unloaders.map(function (u) { return u.handler })
- .indexOf(controller.onunload) < 0) {
- unloaders.push({
- controller: controller,
- handler: controller.onunload
- })
- }
-
- views.push(view)
- controllers.push(controller)
- }
-
- var forcing = false
- function checkView(
- data,
- view,
- cached,
- cachedControllers,
- controllers,
- views
- ) {
- var controller = getController(
- cached.views,
- view,
- cachedControllers,
- data.controller)
-
- var key = data && data.attrs && data.attrs.key
-
- if (pendingRequests === 0 ||
- forcing ||
- cachedControllers &&
- cachedControllers.indexOf(controller) > -1) {
- data = data.view(controller)
- } else {
- data = {tag: "placeholder"}
- }
-
- if (data.subtree === "retain") return data
- data.attrs = data.attrs || {}
- data.attrs.key = key
- updateLists(views, controllers, view, controller)
- return data
- }
-
- function markViews(data, cached, views, controllers) {
- var cachedControllers = cached && cached.controllers
-
- while (data.view != null) {
- data = checkView(
- data,
- data.view.$original || data.view,
- cached,
- cachedControllers,
- controllers,
- views)
- }
-
- return data
- }
-
- function buildObject( // eslint-disable-line max-statements
- data,
- cached,
- editable,
- parentElement,
- index,
- shouldReattach,
- namespace,
- configs
- ) {
- var views = []
- var controllers = []
-
- data = markViews(data, cached, views, controllers)
-
- if (data.subtree === "retain") return cached
-
- if (!data.tag && controllers.length) {
- throw new Error("Component template must return a virtual " +
- "element, not an array, string, etc.")
- }
-
- data.attrs = data.attrs || {}
- cached.attrs = cached.attrs || {}
-
- var dataAttrKeys = Object.keys(data.attrs)
- var hasKeys = dataAttrKeys.length > ("key" in data.attrs ? 1 : 0)
-
- maybeRecreateObject(data, cached, dataAttrKeys)
-
- if (!isString(data.tag)) return
-
- var isNew = cached.nodes.length === 0
-
- namespace = getObjectNamespace(data, namespace)
-
- var node
- if (isNew) {
- node = constructNode(data, namespace)
- // set attributes first, then create children
- var attrs = constructAttrs(data, node, namespace, hasKeys)
-
- // add the node to its parent before attaching children to it
- insertNode(parentElement, node, index)
-
- var children = constructChildren(data, node, cached, editable,
- namespace, configs)
-
- cached = reconstructCached(
- data,
- attrs,
- children,
- node,
- namespace,
- views,
- controllers)
- } else {
- node = buildUpdatedNode(
- cached,
- data,
- editable,
- hasKeys,
- namespace,
- views,
- configs,
- controllers)
- }
-
- if (!isNew && shouldReattach === true && node != null) {
- insertNode(parentElement, node, index)
- }
-
- // The configs are called after `build` finishes running
- scheduleConfigsToBeCalled(configs, data, node, isNew, cached)
-
- return cached
- }
-
- function build(
- parentElement,
- parentTag,
- parentCache,
- parentIndex,
- data,
- cached,
- shouldReattach,
- index,
- editable,
- namespace,
- configs
- ) {
- /*
- * `build` is a recursive function that manages creation/diffing/removal
- * of DOM elements based on comparison between `data` and `cached` the
- * diff algorithm can be summarized as this:
- *
- * 1 - compare `data` and `cached`
- * 2 - if they are different, copy `data` to `cached` and update the DOM
- * based on what the difference is
- * 3 - recursively apply this algorithm for every array and for the
- * children of every virtual element
- *
- * The `cached` data structure is essentially the same as the previous
- * redraw's `data` data structure, with a few additions:
- * - `cached` always has a property called `nodes`, which is a list of
- * DOM elements that correspond to the data represented by the
- * respective virtual element
- * - in order to support attaching `nodes` as a property of `cached`,
- * `cached` is *always* a non-primitive object, i.e. if the data was
- * a string, then cached is a String instance. If data was `null` or
- * `undefined`, cached is `new String("")`
- * - `cached also has a `configContext` property, which is the state
- * storage object exposed by config(element, isInitialized, context)
- * - when `cached` is an Object, it represents a virtual element; when
- * it's an Array, it represents a list of elements; when it's a
- * String, Number or Boolean, it represents a text node
- *
- * `parentElement` is a DOM element used for W3C DOM API calls
- * `parentTag` is only used for handling a corner case for textarea
- * values
- * `parentCache` is used to remove nodes in some multi-node cases
- * `parentIndex` and `index` are used to figure out the offset of nodes.
- * They're artifacts from before arrays started being flattened and are
- * likely refactorable
- * `data` and `cached` are, respectively, the new and old nodes being
- * diffed
- * `shouldReattach` is a flag indicating whether a parent node was
- * recreated (if so, and if this node is reused, then this node must
- * reattach itself to the new parent)
- * `editable` is a flag that indicates whether an ancestor is
- * contenteditable
- * `namespace` indicates the closest HTML namespace as it cascades down
- * from an ancestor
- * `configs` is a list of config functions to run after the topmost
- * `build` call finishes running
- *
- * there's logic that relies on the assumption that null and undefined
- * data are equivalent to empty strings
- * - this prevents lifecycle surprises from procedural helpers that mix
- * implicit and explicit return statements (e.g.
- * function foo() {if (cond) return m("div")}
- * - it simplifies diffing code
- */
- data = dataToString(data)
- if (data.subtree === "retain") return cached
- cached = makeCache(data, cached, index, parentIndex, parentCache)
-
- if (isArray(data)) {
- return buildArray(
- data,
- cached,
- parentElement,
- index,
- parentTag,
- shouldReattach,
- editable,
- namespace,
- configs)
- } else if (data != null && isObject(data)) {
- return buildObject(
- data,
- cached,
- editable,
- parentElement,
- index,
- shouldReattach,
- namespace,
- configs)
- } else if (!isFunction(data)) {
- return handleTextNode(
- cached,
- data,
- index,
- parentElement,
- shouldReattach,
- editable,
- parentTag)
- } else {
- return cached
- }
- }
-
- function sortChanges(a, b) {
- return a.action - b.action || a.index - b.index
- }
-
- function copyStyleAttrs(node, dataAttr, cachedAttr) {
- for (var rule in dataAttr) {
- if (hasOwn.call(dataAttr, rule)) {
- if (cachedAttr == null || cachedAttr[rule] !== dataAttr[rule]) {
- node.style[rule] = dataAttr[rule]
- }
- }
- }
-
- for (rule in cachedAttr) {
- if (hasOwn.call(cachedAttr, rule)) {
- if (!hasOwn.call(dataAttr, rule)) node.style[rule] = ""
- }
- }
- }
-
- var shouldUseSetAttribute = {
- list: 1,
- style: 1,
- form: 1,
- type: 1,
- width: 1,
- height: 1
- }
-
- function setSingleAttr(
- node,
- attrName,
- dataAttr,
- cachedAttr,
- tag,
- namespace
- ) {
- if (attrName === "config" || attrName === "key") {
- // `config` isn't a real attribute, so ignore it
- return true
- } else if (isFunction(dataAttr) && attrName.slice(0, 2) === "on") {
- // hook event handlers to the auto-redrawing system
- node[attrName] = autoredraw(dataAttr, node)
- } else if (attrName === "style" && dataAttr != null &&
- isObject(dataAttr)) {
- // handle `style: {...}`
- copyStyleAttrs(node, dataAttr, cachedAttr)
- } else if (namespace != null) {
- // handle SVG
- if (attrName === "href") {
- node.setAttributeNS("http://www.w3.org/1999/xlink",
- "href", dataAttr)
- } else {
- node.setAttribute(
- attrName === "className" ? "class" : attrName,
- dataAttr)
- }
- } else if (attrName in node && !shouldUseSetAttribute[attrName]) {
- // handle cases that are properties (but ignore cases where we
- // should use setAttribute instead)
- //
- // - list and form are typically used as strings, but are DOM
- // element references in js
- //
- // - when using CSS selectors (e.g. `m("[style='']")`), style is
- // used as a string, but it's an object in js
- //
- // #348 don't set the value if not needed - otherwise, cursor
- // placement breaks in Chrome
- try {
- if (tag !== "input" || node[attrName] !== dataAttr) {
- node[attrName] = dataAttr
- }
- } catch (e) {
- node.setAttribute(attrName, dataAttr)
- }
- }
- else node.setAttribute(attrName, dataAttr)
- }
-
- function trySetAttr(
- node,
- attrName,
- dataAttr,
- cachedAttr,
- cachedAttrs,
- tag,
- namespace
- ) {
- if (!(attrName in cachedAttrs) || (cachedAttr !== dataAttr) || ($document.activeElement === node)) {
- cachedAttrs[attrName] = dataAttr
- try {
- return setSingleAttr(
- node,
- attrName,
- dataAttr,
- cachedAttr,
- tag,
- namespace)
- } catch (e) {
- // swallow IE's invalid argument errors to mimic HTML's
- // fallback-to-doing-nothing-on-invalid-attributes behavior
- if (e.message.indexOf("Invalid argument") < 0) throw e
- }
- } else if (attrName === "value" && tag === "input" &&
- node.value !== dataAttr) {
- // #348 dataAttr may not be a string, so use loose comparison
- node.value = dataAttr
- }
- }
-
- function setAttributes(node, tag, dataAttrs, cachedAttrs, namespace) {
- for (var attrName in dataAttrs) {
- if (hasOwn.call(dataAttrs, attrName)) {
- if (trySetAttr(
- node,
- attrName,
- dataAttrs[attrName],
- cachedAttrs[attrName],
- cachedAttrs,
- tag,
- namespace)) {
- continue
- }
- }
- }
- return cachedAttrs
- }
-
- function clear(nodes, cached) {
- for (var i = nodes.length - 1; i > -1; i--) {
- if (nodes[i] && nodes[i].parentNode) {
- try {
- nodes[i].parentNode.removeChild(nodes[i])
- } catch (e) {
- /* eslint-disable max-len */
- // ignore if this fails due to order of events (see
- // http://stackoverflow.com/questions/21926083/failed-to-execute-removechild-on-node)
- /* eslint-enable max-len */
- }
- cached = [].concat(cached)
- if (cached[i]) unload(cached[i])
- }
- }
- // release memory if nodes is an array. This check should fail if nodes
- // is a NodeList (see loop above)
- if (nodes.length) {
- nodes.length = 0
- }
- }
-
- function unload(cached) {
- if (cached.configContext && isFunction(cached.configContext.onunload)) {
- cached.configContext.onunload()
- cached.configContext.onunload = null
- }
- if (cached.controllers) {
- forEach(cached.controllers, function (controller) {
- if (isFunction(controller.onunload)) {
- controller.onunload({preventDefault: noop})
- }
- })
- }
- if (cached.children) {
- if (isArray(cached.children)) forEach(cached.children, unload)
- else if (cached.children.tag) unload(cached.children)
- }
- }
-
- function appendTextFragment(parentElement, data) {
- try {
- parentElement.appendChild(
- $document.createRange().createContextualFragment(data))
- } catch (e) {
- parentElement.insertAdjacentHTML("beforeend", data)
- replaceScriptNodes(parentElement)
- }
- }
-
- // Replace script tags inside given DOM element with executable ones.
- // Will also check children recursively and replace any found script
- // tags in same manner.
- function replaceScriptNodes(node) {
- if (node.tagName === "SCRIPT") {
- node.parentNode.replaceChild(buildExecutableNode(node), node)
- } else {
- var children = node.childNodes
- if (children && children.length) {
- for (var i = 0; i < children.length; i++) {
- replaceScriptNodes(children[i])
- }
- }
- }
-
- return node
- }
-
- // Replace script element with one whose contents are executable.
- function buildExecutableNode(node){
- var scriptEl = document.createElement("script")
- var attrs = node.attributes
-
- for (var i = 0; i < attrs.length; i++) {
- scriptEl.setAttribute(attrs[i].name, attrs[i].value)
- }
-
- scriptEl.text = node.innerHTML
- return scriptEl
- }
-
- function injectHTML(parentElement, index, data) {
- var nextSibling = parentElement.childNodes[index]
- if (nextSibling) {
- var isElement = nextSibling.nodeType !== 1
- var placeholder = $document.createElement("span")
- if (isElement) {
- parentElement.insertBefore(placeholder, nextSibling || null)
- placeholder.insertAdjacentHTML("beforebegin", data)
- parentElement.removeChild(placeholder)
- } else {
- nextSibling.insertAdjacentHTML("beforebegin", data)
- }
- } else {
- appendTextFragment(parentElement, data)
- }
-
- var nodes = []
-
- while (parentElement.childNodes[index] !== nextSibling) {
- nodes.push(parentElement.childNodes[index])
- index++
- }
-
- return nodes
- }
-
- function autoredraw(callback, object) {
- return function (e) {
- e = e || event
- m.redraw.strategy("diff")
- m.startComputation()
- try {
- return callback.call(object, e)
- } finally {
- endFirstComputation()
- }
- }
- }
-
- var html
- var documentNode = {
- appendChild: function (node) {
- if (html === undefined) html = $document.createElement("html")
- if ($document.documentElement &&
- $document.documentElement !== node) {
- $document.replaceChild(node, $document.documentElement)
- } else {
- $document.appendChild(node)
- }
-
- this.childNodes = $document.childNodes
- },
-
- insertBefore: function (node) {
- this.appendChild(node)
- },
-
- childNodes: []
- }
-
- var nodeCache = []
- var cellCache = {}
-
- m.render = function (root, cell, forceRecreation) {
- if (!root) {
- throw new Error("Ensure the DOM element being passed to " +
- "m.route/m.mount/m.render is not undefined.")
- }
- var configs = []
- var id = getCellCacheKey(root)
- var isDocumentRoot = root === $document
- var node
-
- if (isDocumentRoot || root === $document.documentElement) {
- node = documentNode
- } else {
- node = root
- }
-
- if (isDocumentRoot && cell.tag !== "html") {
- cell = {tag: "html", attrs: {}, children: cell}
- }
-
- if (cellCache[id] === undefined) clear(node.childNodes)
- if (forceRecreation === true) reset(root)
-
- cellCache[id] = build(
- node,
- null,
- undefined,
- undefined,
- cell,
- cellCache[id],
- false,
- 0,
- null,
- undefined,
- configs)
-
- forEach(configs, function (config) { config() })
- }
-
- function getCellCacheKey(element) {
- var index = nodeCache.indexOf(element)
- return index < 0 ? nodeCache.push(element) - 1 : index
- }
-
- m.trust = function (value) {
- value = new String(value) // eslint-disable-line no-new-wrappers
- value.$trusted = true
- return value
- }
-
- function gettersetter(store) {
- function prop() {
- if (arguments.length) store = arguments[0]
- return store
- }
-
- prop.toJSON = function () {
- return store
- }
-
- return prop
- }
-
- m.prop = function (store) {
- if ((store != null && (isObject(store) || isFunction(store)) || ((typeof Promise !== "undefined") && (store instanceof Promise))) &&
- isFunction(store.then)) {
- return propify(store)
- }
-
- return gettersetter(store)
- }
-
- var roots = []
- var components = []
- var controllers = []
- var lastRedrawId = null
- var lastRedrawCallTime = 0
- var computePreRedrawHook = null
- var computePostRedrawHook = null
- var topComponent
- var FRAME_BUDGET = 16 // 60 frames per second = 1 call per 16 ms
-
- function parameterize(component, args) {
- function controller() {
- /* eslint-disable no-invalid-this */
- return (component.controller || noop).apply(this, args) || this
- /* eslint-enable no-invalid-this */
- }
-
- if (component.controller) {
- controller.prototype = component.controller.prototype
- }
-
- function view(ctrl) {
- var currentArgs = [ctrl].concat(args)
- for (var i = 1; i < arguments.length; i++) {
- currentArgs.push(arguments[i])
- }
-
- return component.view.apply(component, currentArgs)
- }
-
- view.$original = component.view
- var output = {controller: controller, view: view}
- if (args[0] && args[0].key != null) output.attrs = {key: args[0].key}
- return output
- }
-
- m.component = function (component) {
- var args = new Array(arguments.length - 1)
-
- for (var i = 1; i < arguments.length; i++) {
- args[i - 1] = arguments[i]
- }
-
- return parameterize(component, args)
- }
-
- function checkPrevented(component, root, index, isPrevented) {
- if (!isPrevented) {
- m.redraw.strategy("all")
- m.startComputation()
- roots[index] = root
- var currentComponent
-
- if (component) {
- currentComponent = topComponent = component
- } else {
- currentComponent = topComponent = component = {controller: noop}
- }
-
- var controller = new (component.controller || noop)()
-
- // controllers may call m.mount recursively (via m.route redirects,
- // for example)
- // this conditional ensures only the last recursive m.mount call is
- // applied
- if (currentComponent === topComponent) {
- controllers[index] = controller
- components[index] = component
- }
- endFirstComputation()
- if (component === null) {
- removeRootElement(root, index)
- }
- return controllers[index]
- } else if (component == null) {
- removeRootElement(root, index)
- }
- }
-
- m.mount = m.module = function (root, component) {
- if (!root) {
- throw new Error("Please ensure the DOM element exists before " +
- "rendering a template into it.")
- }
-
- var index = roots.indexOf(root)
- if (index < 0) index = roots.length
-
- var isPrevented = false
- var event = {
- preventDefault: function () {
- isPrevented = true
- computePreRedrawHook = computePostRedrawHook = null
- }
- }
-
- forEach(unloaders, function (unloader) {
- unloader.handler.call(unloader.controller, event)
- unloader.controller.onunload = null
- })
-
- if (isPrevented) {
- forEach(unloaders, function (unloader) {
- unloader.controller.onunload = unloader.handler
- })
- } else {
- unloaders = []
- }
-
- if (controllers[index] && isFunction(controllers[index].onunload)) {
- controllers[index].onunload(event)
- }
-
- return checkPrevented(component, root, index, isPrevented)
- }
-
- function removeRootElement(root, index) {
- roots.splice(index, 1)
- controllers.splice(index, 1)
- components.splice(index, 1)
- reset(root)
- nodeCache.splice(getCellCacheKey(root), 1)
- }
-
- var redrawing = false
- m.redraw = function (force) {
- if (redrawing) return
- redrawing = true
- if (force) forcing = true
-
- try {
- // lastRedrawId is a positive number if a second redraw is requested
- // before the next animation frame
- // lastRedrawId is null if it's the first redraw and not an event
- // handler
- if (lastRedrawId && !force) {
- // when setTimeout: only reschedule redraw if time between now
- // and previous redraw is bigger than a frame, otherwise keep
- // currently scheduled timeout
- // when rAF: always reschedule redraw
- if ($requestAnimationFrame === global.requestAnimationFrame ||
- new Date() - lastRedrawCallTime > FRAME_BUDGET) {
- if (lastRedrawId > 0) $cancelAnimationFrame(lastRedrawId)
- lastRedrawId = $requestAnimationFrame(redraw, FRAME_BUDGET)
- }
- } else {
- redraw()
- lastRedrawId = $requestAnimationFrame(function () {
- lastRedrawId = null
- }, FRAME_BUDGET)
- }
- } finally {
- redrawing = forcing = false
- }
- }
-
- m.redraw.strategy = m.prop()
- function redraw() {
- if (computePreRedrawHook) {
- computePreRedrawHook()
- computePreRedrawHook = null
- }
- forEach(roots, function (root, i) {
- var component = components[i]
- if (controllers[i]) {
- var args = [controllers[i]]
- m.render(root,
- component.view ? component.view(controllers[i], args) : "")
- }
- })
- // after rendering within a routed context, we need to scroll back to
- // the top, and fetch the document title for history.pushState
- if (computePostRedrawHook) {
- computePostRedrawHook()
- computePostRedrawHook = null
- }
- lastRedrawId = null
- lastRedrawCallTime = new Date()
- m.redraw.strategy("diff")
- }
-
- function endFirstComputation() {
- if (m.redraw.strategy() === "none") {
- pendingRequests--
- m.redraw.strategy("diff")
- } else {
- m.endComputation()
- }
- }
-
- m.withAttr = function (prop, withAttrCallback, callbackThis) {
- return function (e) {
- e = e || window.event
- /* eslint-disable no-invalid-this */
- var currentTarget = e.currentTarget || this
- var _this = callbackThis || this
- /* eslint-enable no-invalid-this */
- var target = prop in currentTarget ?
- currentTarget[prop] :
- currentTarget.getAttribute(prop)
- withAttrCallback.call(_this, target)
- }
- }
-
- // routing
- var modes = {pathname: "", hash: "#", search: "?"}
- var redirect = noop
- var isDefaultRoute = false
- var routeParams, currentRoute
-
- m.route = function (root, arg1, arg2, vdom) { // eslint-disable-line
- // m.route()
- if (arguments.length === 0) return currentRoute
- // m.route(el, defaultRoute, routes)
- if (arguments.length === 3 && isString(arg1)) {
- redirect = function (source) {
- var path = currentRoute = normalizeRoute(source)
- if (!routeByValue(root, arg2, path)) {
- if (isDefaultRoute) {
- throw new Error("Ensure the default route matches " +
- "one of the routes defined in m.route")
- }
-
- isDefaultRoute = true
- m.route(arg1, true)
- isDefaultRoute = false
- }
- }
-
- var listener = m.route.mode === "hash" ?
- "onhashchange" :
- "onpopstate"
-
- global[listener] = function () {
- var path = $location[m.route.mode]
- if (m.route.mode === "pathname") path += $location.search
- if (currentRoute !== normalizeRoute(path)) redirect(path)
- }
-
- computePreRedrawHook = setScroll
- global[listener]()
-
- return
- }
-
- // config: m.route
- if (root.addEventListener || root.attachEvent) {
- var base = m.route.mode !== "pathname" ? $location.pathname : ""
- root.href = base + modes[m.route.mode] + vdom.attrs.href
- if (root.addEventListener) {
- root.removeEventListener("click", routeUnobtrusive)
- root.addEventListener("click", routeUnobtrusive)
- } else {
- root.detachEvent("onclick", routeUnobtrusive)
- root.attachEvent("onclick", routeUnobtrusive)
- }
-
- return
- }
- // m.route(route, params, shouldReplaceHistoryEntry)
- if (isString(root)) {
- var oldRoute = currentRoute
- currentRoute = root
-
- var args = arg1 || {}
- var queryIndex = currentRoute.indexOf("?")
- var params
-
- if (queryIndex > -1) {
- params = parseQueryString(currentRoute.slice(queryIndex + 1))
- } else {
- params = {}
- }
-
- for (var i in args) {
- if (hasOwn.call(args, i)) {
- params[i] = args[i]
- }
- }
-
- var querystring = buildQueryString(params)
- var currentPath
-
- if (queryIndex > -1) {
- currentPath = currentRoute.slice(0, queryIndex)
- } else {
- currentPath = currentRoute
- }
-
- if (querystring) {
- currentRoute = currentPath +
- (currentPath.indexOf("?") === -1 ? "?" : "&") +
- querystring
- }
-
- var replaceHistory =
- (arguments.length === 3 ? arg2 : arg1) === true ||
- oldRoute === root
-
- if (global.history.pushState) {
- var method = replaceHistory ? "replaceState" : "pushState"
- computePreRedrawHook = setScroll
- computePostRedrawHook = function () {
- try {
- global.history[method](null, $document.title,
- modes[m.route.mode] + currentRoute)
- } catch (err) {
- // In the event of a pushState or replaceState failure,
- // fallback to a standard redirect. This is specifically
- // to address a Safari security error when attempting to
- // call pushState more than 100 times.
- $location[m.route.mode] = currentRoute
- }
- }
- redirect(modes[m.route.mode] + currentRoute)
- } else {
- $location[m.route.mode] = currentRoute
- redirect(modes[m.route.mode] + currentRoute)
- }
- }
- }
-
- m.route.param = function (key) {
- if (!routeParams) {
- throw new Error("You must call m.route(element, defaultRoute, " +
- "routes) before calling m.route.param()")
- }
-
- if (!key) {
- return routeParams
- }
-
- return routeParams[key]
- }
-
- m.route.mode = "search"
-
- function normalizeRoute(route) {
- return route.slice(modes[m.route.mode].length)
- }
-
- function routeByValue(root, router, path) {
- routeParams = {}
-
- var queryStart = path.indexOf("?")
- if (queryStart !== -1) {
- routeParams = parseQueryString(
- path.substr(queryStart + 1, path.length))
- path = path.substr(0, queryStart)
- }
-
- // Get all routes and check if there's
- // an exact match for the current path
- var keys = Object.keys(router)
- var index = keys.indexOf(path)
-
- if (index !== -1){
- m.mount(root, router[keys [index]])
- return true
- }
-
- for (var route in router) {
- if (hasOwn.call(router, route)) {
- if (route === path) {
- m.mount(root, router[route])
- return true
- }
-
- var matcher = new RegExp("^" + route
- .replace(/:[^\/]+?\.{3}/g, "(.*?)")
- .replace(/:[^\/]+/g, "([^\\/]+)") + "\/?$")
-
- if (matcher.test(path)) {
- /* eslint-disable no-loop-func */
- path.replace(matcher, function () {
- var keys = route.match(/:[^\/]+/g) || []
- var values = [].slice.call(arguments, 1, -2)
- forEach(keys, function (key, i) {
- routeParams[key.replace(/:|\./g, "")] =
- decodeURIComponent(values[i])
- })
- m.mount(root, router[route])
- })
- /* eslint-enable no-loop-func */
- return true
- }
- }
- }
- }
-
- function routeUnobtrusive(e) {
- e = e || event
- if (e.ctrlKey || e.metaKey || e.shiftKey || e.which === 2) return
-
- if (e.preventDefault) {
- e.preventDefault()
- } else {
- e.returnValue = false
- }
-
- var currentTarget = e.currentTarget || e.srcElement
- var args
-
- if (m.route.mode === "pathname" && currentTarget.search) {
- args = parseQueryString(currentTarget.search.slice(1))
- } else {
- args = {}
- }
-
- while (currentTarget && !/a/i.test(currentTarget.nodeName)) {
- currentTarget = currentTarget.parentNode
- }
-
- // clear pendingRequests because we want an immediate route change
- pendingRequests = 0
- m.route(currentTarget[m.route.mode]
- .slice(modes[m.route.mode].length), args)
- }
-
- function setScroll() {
- if (m.route.mode !== "hash" && $location.hash) {
- $location.hash = $location.hash
- } else {
- global.scrollTo(0, 0)
- }
- }
-
- function buildQueryString(object, prefix) {
- var duplicates = {}
- var str = []
-
- for (var prop in object) {
- if (hasOwn.call(object, prop)) {
- var key = prefix ? prefix + "[" + prop + "]" : prop
- var value = object[prop]
-
- if (value === null) {
- str.push(encodeURIComponent(key))
- } else if (isObject(value)) {
- str.push(buildQueryString(value, key))
- } else if (isArray(value)) {
- var keys = []
- duplicates[key] = duplicates[key] || {}
- /* eslint-disable no-loop-func */
- forEach(value, function (item) {
- /* eslint-enable no-loop-func */
- if (!duplicates[key][item]) {
- duplicates[key][item] = true
- keys.push(encodeURIComponent(key) + "=" +
- encodeURIComponent(item))
- }
- })
- str.push(keys.join("&"))
- } else if (value !== undefined) {
- str.push(encodeURIComponent(key) + "=" +
- encodeURIComponent(value))
- }
- }
- }
-
- return str.join("&")
- }
-
- function parseQueryString(str) {
- if (str === "" || str == null) return {}
- if (str.charAt(0) === "?") str = str.slice(1)
-
- var pairs = str.split("&")
- var params = {}
-
- forEach(pairs, function (string) {
- var pair = string.split("=")
- var key = decodeURIComponent(pair[0])
- var value = pair.length === 2 ? decodeURIComponent(pair[1]) : null
- if (params[key] != null) {
- if (!isArray(params[key])) params[key] = [params[key]]
- params[key].push(value)
- }
- else params[key] = value
- })
-
- return params
- }
-
- m.route.buildQueryString = buildQueryString
- m.route.parseQueryString = parseQueryString
-
- function reset(root) {
- var cacheKey = getCellCacheKey(root)
- clear(root.childNodes, cellCache[cacheKey])
- cellCache[cacheKey] = undefined
- }
-
- m.deferred = function () {
- var deferred = new Deferred()
- deferred.promise = propify(deferred.promise)
- return deferred
- }
-
- function propify(promise, initialValue) {
- var prop = m.prop(initialValue)
- promise.then(prop)
- prop.then = function (resolve, reject) {
- return propify(promise.then(resolve, reject), initialValue)
- }
-
- prop.catch = prop.then.bind(null, null)
- return prop
- }
- // Promiz.mithril.js | Zolmeister | MIT
- // a modified version of Promiz.js, which does not conform to Promises/A+
- // for two reasons:
- //
- // 1) `then` callbacks are called synchronously (because setTimeout is too
- // slow, and the setImmediate polyfill is too big
- //
- // 2) throwing subclasses of Error cause the error to be bubbled up instead
- // of triggering rejection (because the spec does not account for the
- // important use case of default browser error handling, i.e. message w/
- // line number)
-
- var RESOLVING = 1
- var REJECTING = 2
- var RESOLVED = 3
- var REJECTED = 4
-
- function Deferred(onSuccess, onFailure) {
- var self = this
- var state = 0
- var promiseValue = 0
- var next = []
-
- self.promise = {}
-
- self.resolve = function (value) {
- if (!state) {
- promiseValue = value
- state = RESOLVING
-
- fire()
- }
-
- return self
- }
-
- self.reject = function (value) {
- if (!state) {
- promiseValue = value
- state = REJECTING
-
- fire()
- }
-
- return self
- }
-
- self.promise.then = function (onSuccess, onFailure) {
- var deferred = new Deferred(onSuccess, onFailure)
-
- if (state === RESOLVED) {
- deferred.resolve(promiseValue)
- } else if (state === REJECTED) {
- deferred.reject(promiseValue)
- } else {
- next.push(deferred)
- }
-
- return deferred.promise
- }
-
- function finish(type) {
- state = type || REJECTED
- next.map(function (deferred) {
- if (state === RESOLVED) {
- deferred.resolve(promiseValue)
- } else {
- deferred.reject(promiseValue)
- }
- })
- }
-
- function thennable(then, success, failure, notThennable) {
- if (((promiseValue != null && isObject(promiseValue)) ||
- isFunction(promiseValue)) && isFunction(then)) {
- try {
- // count protects against abuse calls from spec checker
- var count = 0
- then.call(promiseValue, function (value) {
- if (count++) return
- promiseValue = value
- success()
- }, function (value) {
- if (count++) return
- promiseValue = value
- failure()
- })
- } catch (e) {
- m.deferred.onerror(e)
- promiseValue = e
- failure()
- }
- } else {
- notThennable()
- }
- }
-
- function fire() {
- // check if it's a thenable
- var then
- try {
- then = promiseValue && promiseValue.then
- } catch (e) {
- m.deferred.onerror(e)
- promiseValue = e
- state = REJECTING
- return fire()
- }
-
- if (state === REJECTING) {
- m.deferred.onerror(promiseValue)
- }
-
- thennable(then, function () {
- state = RESOLVING
- fire()
- }, function () {
- state = REJECTING
- fire()
- }, function () {
- try {
- if (state === RESOLVING && isFunction(onSuccess)) {
- promiseValue = onSuccess(promiseValue)
- } else if (state === REJECTING && isFunction(onFailure)) {
- promiseValue = onFailure(promiseValue)
- state = RESOLVING
- }
- } catch (e) {
- m.deferred.onerror(e)
- promiseValue = e
- return finish()
- }
-
- if (promiseValue === self) {
- promiseValue = TypeError()
- finish()
- } else {
- thennable(then, function () {
- finish(RESOLVED)
- }, finish, function () {
- finish(state === RESOLVING && RESOLVED)
- })
- }
- })
- }
- }
-
- m.deferred.onerror = function (e) {
- if (type.call(e) === "[object Error]" &&
- !/ Error/.test(e.constructor.toString())) {
- pendingRequests = 0
- throw e
- }
- }
-
- m.sync = function (args) {
- var deferred = m.deferred()
- var outstanding = args.length
- var results = []
- var method = "resolve"
-
- function synchronizer(pos, resolved) {
- return function (value) {
- results[pos] = value
- if (!resolved) method = "reject"
- if (--outstanding === 0) {
- deferred.promise(results)
- deferred[method](results)
- }
- return value
- }
- }
-
- if (args.length > 0) {
- forEach(args, function (arg, i) {
- arg.then(synchronizer(i, true), synchronizer(i, false))
- })
- } else {
- deferred.resolve([])
- }
-
- return deferred.promise
- }
-
- function identity(value) { return value }
-
- function handleJsonp(options) {
- var callbackKey = options.callbackName || "mithril_callback_" +
- new Date().getTime() + "_" +
- (Math.round(Math.random() * 1e16)).toString(36)
-
- var script = $document.createElement("script")
-
- global[callbackKey] = function (resp) {
- script.parentNode.removeChild(script)
- options.onload({
- type: "load",
- target: {
- responseText: resp
- }
- })
- global[callbackKey] = undefined
- }
-
- script.onerror = function () {
- script.parentNode.removeChild(script)
-
- options.onerror({
- type: "error",
- target: {
- status: 500,
- responseText: JSON.stringify({
- error: "Error making jsonp request"
- })
- }
- })
- global[callbackKey] = undefined
-
- return false
- }
-
- script.onload = function () {
- return false
- }
-
- script.src = options.url +
- (options.url.indexOf("?") > 0 ? "&" : "?") +
- (options.callbackKey ? options.callbackKey : "callback") +
- "=" + callbackKey +
- "&" + buildQueryString(options.data || {})
-
- $document.body.appendChild(script)
- }
-
- function createXhr(options) {
- var xhr = new global.XMLHttpRequest()
- xhr.open(options.method, options.url, true, options.user,
- options.password)
-
- xhr.onreadystatechange = function () {
- if (xhr.readyState === 4) {
- if (xhr.status >= 200 && xhr.status < 300) {
- options.onload({type: "load", target: xhr})
- } else {
- options.onerror({type: "error", target: xhr})
- }
- }
- }
-
- if (options.serialize === JSON.stringify &&
- options.data &&
- options.method !== "GET") {
- xhr.setRequestHeader("Content-Type",
- "application/json; charset=utf-8")
- }
-
- if (options.deserialize === JSON.parse) {
- xhr.setRequestHeader("Accept", "application/json, text/*")
- }
-
- if (isFunction(options.config)) {
- var maybeXhr = options.config(xhr, options)
- if (maybeXhr != null) xhr = maybeXhr
- }
-
- var data = options.method === "GET" || !options.data ? "" : options.data
-
- if (data && !isString(data) && data.constructor !== global.FormData) {
- throw new Error("Request data should be either be a string or " +
- "FormData. Check the `serialize` option in `m.request`")
- }
-
- xhr.send(data)
- return xhr
- }
-
- function ajax(options) {
- if (options.dataType && options.dataType.toLowerCase() === "jsonp") {
- return handleJsonp(options)
- } else {
- return createXhr(options)
- }
- }
-
- function bindData(options, data, serialize) {
- if (options.method === "GET" && options.dataType !== "jsonp") {
- var prefix = options.url.indexOf("?") < 0 ? "?" : "&"
- var querystring = buildQueryString(data)
- options.url += (querystring ? prefix + querystring : "")
- } else {
- options.data = serialize(data)
- }
- }
-
- function parameterizeUrl(url, data) {
- if (data) {
- url = url.replace(/:[a-z]\w+/gi, function (token){
- var key = token.slice(1)
- var value = data[key] || token
- delete data[key]
- return value
- })
- }
- return url
- }
-
- m.request = function (options) {
- if (options.background !== true) m.startComputation()
- var deferred = new Deferred()
- var isJSONP = options.dataType &&
- options.dataType.toLowerCase() === "jsonp"
-
- var serialize, deserialize, extract
-
- if (isJSONP) {
- serialize = options.serialize =
- deserialize = options.deserialize = identity
-
- extract = function (jsonp) { return jsonp.responseText }
- } else {
- serialize = options.serialize = options.serialize || JSON.stringify
-
- deserialize = options.deserialize =
- options.deserialize || JSON.parse
- extract = options.extract || function (xhr) {
- if (xhr.responseText.length || deserialize !== JSON.parse) {
- return xhr.responseText
- } else {
- return null
- }
- }
- }
-
- options.method = (options.method || "GET").toUpperCase()
- options.url = parameterizeUrl(options.url, options.data)
- bindData(options, options.data, serialize)
- options.onload = options.onerror = function (ev) {
- try {
- ev = ev || event
- var response = deserialize(extract(ev.target, options))
- if (ev.type === "load") {
- if (options.unwrapSuccess) {
- response = options.unwrapSuccess(response, ev.target)
- }
-
- if (isArray(response) && options.type) {
- forEach(response, function (res, i) {
- response[i] = new options.type(res)
- })
- } else if (options.type) {
- response = new options.type(response)
- }
-
- deferred.resolve(response)
- } else {
- if (options.unwrapError) {
- response = options.unwrapError(response, ev.target)
- }
-
- deferred.reject(response)
- }
- } catch (e) {
- deferred.reject(e)
- m.deferred.onerror(e)
- } finally {
- if (options.background !== true) m.endComputation()
- }
- }
-
- ajax(options)
- deferred.promise = propify(deferred.promise, options.initialValue)
- return deferred.promise
- }
-
- return m
-}); // eslint-disable-line
diff --git a/lib/wallet/db.ts b/lib/wallet/db.ts index 5104f28fb..23cc9eb07 100644 --- a/lib/wallet/db.ts +++ b/lib/wallet/db.ts @@ -15,7 +15,6 @@ */ "use strict"; -import Dictionary = _.Dictionary; /** * Declarations and helpers for @@ -88,7 +87,7 @@ export function exportDb(db: IDBDatabase): Promise<any> { let dump = { name: db.name, version: db.version, - stores: {} as Dictionary<any>, + stores: {} as {[s: string]: any}, }; return new Promise((resolve, reject) => { @@ -99,7 +98,7 @@ export function exportDb(db: IDBDatabase): Promise<any> { }); for (let i = 0; i < db.objectStoreNames.length; i++) { let name = db.objectStoreNames[i]; - let storeDump = {} as Dictionary<any>; + let storeDump = {} as {[s: string]: any}; dump.stores[name] = storeDump; let store = tx.objectStore(name) .openCursor() diff --git a/lib/wallet/renderHtml.tsx b/lib/wallet/renderHtml.tsx index f3059f940..db0f00ec5 100644 --- a/lib/wallet/renderHtml.tsx +++ b/lib/wallet/renderHtml.tsx @@ -29,8 +29,8 @@ export function prettyAmount(amount: AmountJson) { } export function renderContract(contract: Contract): JSX.Element { - let merchantName = m("strong", contract.merchant.name); - let amount = m("strong", prettyAmount(contract.amount)); + let merchantName = <strong>{contract.merchant.name}</strong>; + let amount = <strong>{prettyAmount(contract.amount)}</strong>; return ( <div> |