taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit db0fc776982a61181baf286c8344a3b11d3531ec
parent 153765d76e6af95669add8717a2a3126fb6432b0
Author: Florian Dold <florian.dold@gmail.com>
Date:   Mon, 10 Oct 2016 00:37:08 +0200

refactor / remove lodash dependency

Diffstat:
MREADME | 2--
Dlib/decl/lodash.d.ts | 16525-------------------------------------------------------------------------------
Dlib/decl/mithril.d.ts | 926-------------------------------------------------------------------------------
Mlib/module-trampoline.js | 10----------
Dlib/vendor/lodash.core.min.js | 30------------------------------
Dlib/vendor/mithril.js | 2233-------------------------------------------------------------------------------
Mlib/wallet/db.ts | 5++---
Mlib/wallet/renderHtml.tsx | 4++--
Mpages/confirm-contract.html | 2--
Mpogen/pogen.ts | 3+++
Mpopup/popup.html | 12++++++------
Mpopup/popup.tsx | 406++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------
12 files changed, 259 insertions(+), 19899 deletions(-)

diff --git a/README b/README @@ -16,9 +16,7 @@ Dependencies This project has the following third-party runtime dependencies: * URI.js: URL parsing and construction -* mithril.js: view-layer based on virtual DOMs * jed: gettext parsing for JavaScript -* lodash: standard helper library for JavaScript * system.js: Module loader for browsers that don't support ES6 modules diff --git a/lib/decl/lodash.d.ts b/lib/decl/lodash.d.ts @@ -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 &amp;, &lt;, &gt;, &quot;, &#39;, and &#96; - * 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 @@ -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 @@ -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 @@ -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={ -"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"},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 @@ -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 @@ -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 @@ -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> diff --git a/pages/confirm-contract.html b/pages/confirm-contract.html @@ -10,9 +10,7 @@ <link rel="icon" href="../img/icon.png"> <script src="../lib/vendor/URI.js"></script> - <script src="../lib/vendor/mithril.js"></script> <script src="../lib/vendor/preact.js"></script> - <script src="../lib/vendor/lodash.core.min.js"></script> <script src="../lib/vendor/system-csp-production.src.js"></script> <!-- <script src="../lib/vendor/jed.js"></script> --> <script src="../lib/i18n.js"></script> diff --git a/pogen/pogen.ts b/pogen/pogen.ts @@ -181,6 +181,9 @@ export function processFile(sourceFile: ts.SourceFile) { function processNode(node: ts.Node) { + console.log(ts.SyntaxKind[node.kind]); + ts.forEachChild(node, processNode); + return; switch (node.kind) { case ts.SyntaxKind.CallExpression: { diff --git a/popup/popup.html b/popup/popup.html @@ -7,18 +7,18 @@ <link rel="stylesheet" type="text/css" href="../style/lang.css"> <link rel="stylesheet" type="text/css" href="popup.css"> - <script src="../lib/vendor/mithril.js"></script> - <script src="../lib/vendor/lodash.core.min.js"></script> - <script src="../lib/vendor/system-csp-production.src.js"></script> + <script src="../lib/vendor/preact.js"></script> + <script src="../lib/vendor/jed.js"></script> - <script src="../lib/i18n.js"></script> + <script src="../lib/i18n.js"></script> <script src="../i18n/strings.js"></script> + + <script src="../lib/vendor/system-csp-production.src.js"></script> <script src="../lib/module-trampoline.js"></script> </head> <body> - <div id="nav"></div> - <div id="content"></div> +<div id="content"></div> </body> </html> diff --git a/popup/popup.tsx b/popup/popup.tsx @@ -23,9 +23,6 @@ */ -/// <reference path="../lib/decl/mithril.d.ts" /> -/// <reference path="../lib/decl/lodash.d.ts" /> - "use strict"; import {substituteFulfillmentUrl} from "../lib/wallet/helpers"; @@ -33,10 +30,8 @@ import BrowserClickedEvent = chrome.browserAction.BrowserClickedEvent; import {HistoryRecord, HistoryLevel} from "../lib/wallet/wallet"; import {AmountJson} from "../lib/wallet/types"; -declare var m: any; declare var i18n: any; - function onUpdateNotification(f: () => void) { let port = chrome.runtime.connect({name: "notifications"}); port.onMessage.addListener((msg, port) => { @@ -45,116 +40,198 @@ function onUpdateNotification(f: () => void) { } +class Router extends preact.Component<any,any> { + static setRoute(s: string): void { + window.location.hash = s; + preact.rerender(); + } + + static getRoute(): string { + // Omit the '#' at the beginning + return window.location.hash.substring(1); + } + + static onRoute(f: any): () => void { + this.routeHandlers.push(f); + return () => { + let i = this.routeHandlers.indexOf(f); + this.routeHandlers = this.routeHandlers.splice(i, 1); + } + } + + static routeHandlers: any[] = []; + + componentWillMount() { + console.log("router mounted"); + window.onhashchange = () => { + this.forceUpdate(); + for (let f of Router.routeHandlers) { + f(); + } + } + } + + componentWillUnmount() { + console.log("router unmounted"); + } + + + render(props: any, state: any): JSX.Element { + let route = window.location.hash.substring(1); + console.log("rendering route", route); + let defaultChild: JSX.Element|null = null; + for (let child of props.children) { + if (child.attributes["default"]) { + defaultChild = child; + } + if (child.attributes["route"] == route) { + return <div>{child}</div>; + } + } + if (defaultChild == null) { + throw Error("unknown route"); + } + console.log("rendering default route"); + Router.setRoute(defaultChild.attributes["route"]); + return <div>{defaultChild}</div>; + } +} + export function main() { console.log("popup main"); - m.route.mode = "hash"; - m.route(document.getElementById("content"), "/balance", { - "/balance": WalletBalance, - "/history": WalletHistory, - "/debug": WalletDebug, - }); - m.mount(document.getElementById("nav"), WalletNavBar); -} -console.log("this is popup"); + let el = ( + <div> + <WalletNavBar /> + <Router> + <WalletBalance route="/balance" default/> + <WalletHistory route="/history"/> + <WalletDebug route="/debug"/> + </Router> + </div> + ); + + preact.render(el, document.getElementById("content")!); +} +interface TabProps extends preact.ComponentProps { + target: string; +} -function makeTab(target: string, name: string) { +function Tab(props: TabProps) { let cssClass = ""; - if (target == m.route()) { + if (props.target == Router.getRoute()) { cssClass = "active"; } - return m("a", {config: m.route, href: target, "class": cssClass}, name); + let onClick = (e: Event) => { + Router.setRoute(props.target); + e.preventDefault(); + }; + return ( + <a onClick={onClick} href={props.target} className={cssClass}> + {props.children} + </a> + ); } -namespace WalletNavBar { - export function view() { - return m("div#header.nav", [ - makeTab("/balance", i18n`Balance`), - makeTab("/history", i18n`History`), - makeTab("/debug", i18n`Debug`), - ]); + +class WalletNavBar extends preact.Component<any,any> { + cancelSubscription: any; + + componentWillMount() { + this.cancelSubscription = Router.onRoute(() => { + this.setState({}); + }); } - export function controller() { - // empty + componentWillUnmount() { + if (this.cancelSubscription) { + this.cancelSubscription(); + } + } + + render() { + console.log("rendering nav bar"); + return ( + <div class="nav" id="header"> + <Tab target="/balance"> + Balance + </Tab> + <Tab target="/history"> + History + </Tab> + <Tab target="/debug"> + Debug + </Tab> + </div>); } } -function openInExtension(element: HTMLAnchorElement, isInitialized: boolean) { - element.addEventListener("click", (e: Event) => { +function ExtensionLink(props: any) { + let onClick = (e: Event) => { chrome.tabs.create({ - "url": element.href + "url": chrome.extension.getURL(props.target) }); e.preventDefault(); - }); + }; + return ( + <a onClick={onClick}> + {props.children} + </a>) } +class WalletBalance extends preact.Component<any, any> { + myWallet: any; + gotError = false; -namespace WalletBalance { - export function controller() { - return new Controller(); - } - - class Controller { - myWallet: any; - gotError = false; + componentWillMount() { + this.updateBalance(); - constructor() { - this.updateBalance(); - - onUpdateNotification(() => this.updateBalance()); - } + onUpdateNotification(() => this.updateBalance()); + } - updateBalance() { - m.startComputation(); - chrome.runtime.sendMessage({type: "balances"}, (resp) => { - if (resp.error) { - this.gotError = true; - console.error("could not retrieve balances", resp); - m.endComputation(); - return; - } - this.gotError = false; - console.log("got wallet", resp); - this.myWallet = resp.balances; - m.endComputation(); - }); - } + updateBalance() { + chrome.runtime.sendMessage({type: "balances"}, (resp) => { + if (resp.error) { + this.gotError = true; + console.error("could not retrieve balances", resp); + this.forceUpdate(); + return; + } + this.gotError = false; + console.log("got wallet", resp); + this.myWallet = resp.balances; + this.forceUpdate(); + }); } - export function view(ctrl: Controller) { - let wallet = ctrl.myWallet; - if (ctrl.gotError) { + render(): JSX.Element { + let wallet = this.myWallet; + if (this.gotError) { return i18n`Error: could not retrieve balance information.`; } if (!wallet) { - throw Error("Could not retrieve wallet"); + return <div></div> } - let listing = _.map(wallet, (x: any) => m("p", formatAmount(x))); + console.log(wallet); + let listing = Object.keys(wallet).map((key) => { + return <p>{formatAmount(wallet[key])}</p> + }); if (listing.length > 0) { - return listing; + return <div>{listing}</div>; } - let helpLink = m("a", - { - config: openInExtension, - href: chrome.extension.getURL( - "pages/help/empty-wallet.html") - }, - i18n`help`); + let helpLink = ( + <ExtensionLink target="pages/help/empty-wallet.html"> + help + </ExtensionLink> + ); return i18n.parts`You have no balance to show. Need some ${helpLink} getting started?`; } } -function formatTimestamp(t: number) { - let x = new Date(t); - return x.toLocaleString(); -} - - function formatAmount(amount: AmountJson) { let v = amount.value + amount.fraction / 1e6; return `${v.toFixed(2)} ${amount.currency}`; @@ -166,17 +243,11 @@ function abbrev(s: string, n: number = 5) { if (s.length > n) { sAbbrev = s.slice(0, n) + ".."; } - return m("span.abbrev", {title: s}, sAbbrev); -} - - -function retryPayment(url: string, contractHash: string) { - return function() { - chrome.tabs.create({ - "url": substituteFulfillmentUrl(url, - {H_contract: contractHash}) - }); - } + return ( + <span className="abbrev" title={s}> + {sAbbrev} + </span> + ); } @@ -186,78 +257,85 @@ function formatHistoryItem(historyItem: HistoryRecord) { console.log("hist item", historyItem); switch (historyItem.type) { case "create-reserve": - return m("p", - i18n.parts`Bank requested reserve (${abbrev(d.reservePub)}) for ${formatAmount( - d.requestedAmount)}.`); + return ( + <p> + {i18n.parts`Bank requested reserve (${abbrev(d.reservePub)}) for ${formatAmount( + d.requestedAmount)}.`} + </p> + ); case "confirm-reserve": - return m("p", - i18n.parts`Started to withdraw from reserve (${abbrev(d.reservePub)}) of ${formatAmount( - d.requestedAmount)}.`); + return ( + <p> + {i18n.parts`Started to withdraw from reserve (${abbrev(d.reservePub)}) of ${formatAmount( + d.requestedAmount)}.`} + </p> + ); case "offer-contract": { let link = chrome.extension.getURL("view-contract.html"); - let linkElem = m("a", {href: link}, abbrev(d.contractHash)); - let merchantElem = m("em", abbrev(d.merchantName, 15)); - return m("p", - i18n.parts`Merchant ${merchantElem} offered contract ${linkElem}.`); + let linkElem = <a href={link}>{abbrev(d.contractHash)}</a>; + let merchantElem = <em>{abbrev(d.merchantName, 15)}</em>; + return ( + <p> + {i18n.parts`Merchant ${merchantElem} offered contract ${linkElem}.`} + </p> + ); } case "depleted-reserve": - return m("p", - i18n.parts`Withdraw from reserve (${abbrev(d.reservePub)}) of ${formatAmount( - d.requestedAmount)} completed.`); + return (<p> + {i18n.parts`Withdraw from reserve (${abbrev(d.reservePub)}) of ${formatAmount( + d.requestedAmount)} completed.`} + </p>); case "pay": { let url = substituteFulfillmentUrl(d.fulfillmentUrl, {H_contract: d.contractHash}); - let merchantElem = m("em", abbrev(d.merchantName, 15)); - let fulfillmentLinkElem = m(`a`, - {href: url, onclick: openTab(url)}, - "view product"); - return m("p", - i18n.parts`Confirmed payment of ${formatAmount(d.amount)} to merchant ${merchantElem}. (${fulfillmentLinkElem})`); + let merchantElem = <em>{abbrev(d.merchantName, 15)}</em>; + let fulfillmentLinkElem = <a href={url} onClick={openTab(url)}>view product</a>; + return ( + <p> + {i18n.parts`Confirmed payment of ${formatAmount(d.amount)} to merchant ${merchantElem}. (${fulfillmentLinkElem})`} + </p>); } default: - return m("p", i18n`Unknown event (${historyItem.type})`); + return (<p>i18n`Unknown event (${historyItem.type})`</p>); } } -namespace WalletHistory { - export function controller() { - return new Controller(); - } - - class Controller { - myHistory: any[]; - gotError = false; +class WalletHistory extends preact.Component<any, any> { + myHistory: any[]; + gotError = false; - constructor() { - this.update(); - onUpdateNotification(() => this.update()); - } + componentWillMount() { + this.update(); + onUpdateNotification(() => this.update()); + } - update() { - m.startComputation(); - chrome.runtime.sendMessage({type: "get-history"}, (resp) => { - if (resp.error) { - this.gotError = true; - console.error("could not retrieve history", resp); - m.endComputation(); - return; - } - this.gotError = false; - console.log("got history", resp.history); - this.myHistory = resp.history; - m.endComputation(); - }); - } + update() { + chrome.runtime.sendMessage({type: "get-history"}, (resp) => { + console.log("got history response"); + if (resp.error) { + this.gotError = true; + console.error("could not retrieve history", resp); + this.forceUpdate(); + return; + } + this.gotError = false; + console.log("got history", resp.history); + this.myHistory = resp.history; + this.forceUpdate(); + }); } - export function view(ctrl: Controller) { - let history: HistoryRecord[] = ctrl.myHistory; - if (ctrl.gotError) { + render(): JSX.Element { + console.log("rendering history"); + let history: HistoryRecord[] = this.myHistory; + if (this.gotError) { return i18n`Error: could not retrieve event history`; } + if (!history) { - throw Error("Could not retrieve history"); + // We're not ready yet + return <span />; } let subjectMemo: {[s: string]: boolean} = {}; @@ -271,19 +349,24 @@ namespace WalletHistory { } subjectMemo[record.subjectId as string] = true; - let item = m("div.historyItem", {}, [ - m("div.historyDate", {}, (new Date(record.timestamp)).toString()), - formatHistoryItem(record) - ]); + let item = ( + <div className="historyItem"> + <div className="historyDate"> + {(new Date(record.timestamp)).toString()} + </div> + {formatHistoryItem(record)} + </div> + ); listing.push(item); } if (listing.length > 0) { - return m("div.container", listing); + return <div className="container">{listing}</div>; } - return i18n`Your wallet has no events recorded.`; + return <p>{i18n`Your wallet has no events recorded.`}</p> } + } @@ -305,21 +388,24 @@ function confirmReset() { } -var WalletDebug = { - view() { - return [ - m("button", - {onclick: openExtensionPage("popup/popup.html")}, - "wallet tab"), - m("button", - {onclick: openExtensionPage("pages/show-db.html")}, - "show db"), - m("br"), - m("button", {onclick: confirmReset}, "reset"), - m("button", {onclick: reload}, "reload chrome extension"), - ] - } -}; +function WalletDebug(props: any) { + return (<div> + <p>Debug tools:</p> + <button onClick={openExtensionPage("popup/popup.html")}> + wallet tab + </button> + <button onClick={openExtensionPage("pages/show-db.html")}> + show db + </button> + <br /> + <button onClick={confirmReset}> + reset + </button> + <button onClick={reload}> + reload chrome extension + </button> + </div>); +} function openExtensionPage(page: string) {