diff --git a/underscore/underscore.d.ts b/underscore/underscore.d.ts index 88dc84584..414c7653b 100644 --- a/underscore/underscore.d.ts +++ b/underscore/underscore.d.ts @@ -3,226 +3,226 @@ // Definitions by: Boris Yankov // Definitions: https://github.com/borisyankov/DefinitelyTyped +declare function _(value): any; -interface UnderscoreWrappedObject { - value(): any; - filter(arg?): any; -} +declare module _ { -interface TemplateSettings { - evaluate?: RegExp; - interpolate?: RegExp; - escape?: RegExp; -} + interface UnderscoreWrappedObject { + value(): any; + filter(arg?): any; + } -interface ListIterator { - (value: T, index: number, list?: List): TResult; -} + interface TemplateSettings { + evaluate?: RegExp; + interpolate?: RegExp; + escape?: RegExp; + } -interface ObjectIterator { - (element: T, key: string, list?: any): TResult; -} + interface ListIterator { + (value: T, index: number, list?: List): TResult; + } -interface Collection { } + interface ObjectIterator { + (element: T, key: string, list?: any): TResult; + } -// Common interface between Arrays and jQuery objects -interface List extends Collection { - [index: number]: T; - length: number; -} + interface Collection { } -interface Dictionary extends Collection { - [index: string]: T; + // Common interface between Arrays and jQuery objects + interface List extends Collection { + [index: number]: T; + length: number; + } + + interface Dictionary extends Collection { + [index: string]: T; + } + + /**** + Collections + *****/ + export function each(list: List, iterator: ListIterator, context?: any): void; + export function each(object: Dictionary, iterator: ObjectIterator, context?: any): void; + export function forEach(list: List, iterator: ListIterator, context?: any): void; + export function forEach(object: Dictionary, iterator: ObjectIterator, context?: any): void; + + export function map(list: List, iterator: ListIterator, context?: any): TResult[]; + export function map(object: Dictionary, iterator: ObjectIterator, context?: any): TResult[]; + export function collect(list: List, iterator: ListIterator, context?: any): TResult[]; + export function collect(object: Dictionary, iterator: ObjectIterator, context?: any): TResult[]; + + export function reduce(list: Collection, iterator: (prev: TResult, curr: T) => TResult, memo: TResult, context?: any): TResult; + export function inject(list: Collection, iterator: (prev: TResult, curr: T) => TResult, memo: TResult, context?: any): TResult; + + export function reduceRight(list: Collection, iterator: (prev: TResult, curr: T) => TResult, memo: TResult, context?: any): TResult; + export function foldr(list: Collection, iterator: (prev: TResult, curr: T) => TResult, memo: TResult, context?: any): TResult; + + export function find(list: Collection, iterator: (x: T) => boolean, context?: any): T; + export function detect(list: Collection, iterator: (x: T) => boolean, context?: any): T; + + export function filter(list: Collection, iterator: (x: T) => boolean, context?: any): T[]; + export function select(list: Collection, iterator: (x: T) => boolean, context?: any): T[]; + + export function where(list: Collection, properties: any): T[]; + + export function reject(list: Collection, iterator: (x: T) => boolean, context?: any): T[]; + + export function all(list: Collection, iterator: (x: T) => boolean, context?: any): boolean; + export function every(list: Collection, iterator: (x: T) => boolean, context?: any): boolean; + + export function any(list: Collection, iterator?: (x: T) => boolean, context?: any): boolean; + export function some(list: Collection, iterator?: (x: T) => boolean, context?: any): boolean; + + export function contains(list: Collection, value: T): boolean; + export function include(list: Collection, value: T): boolean; + + export function invoke(list: Collection, methodName: string, ...arguments: any[]): any; + + export function pluck(list: Collection, propertyName: string): any[]; + + export function max(list: Collection, iterator?: (x: T) => any, context?: any): T; + + export function min(list: Collection, iterator?: (x: T) => any, context?: any): T; + + export function sortBy(list: List, iterator?: (x: T) => any, context?: any): T[]; + export function sortBy(list: any, iterator?: (x: T) => any, context?: any): T[]; + export function sortBy(list: List, iterator: string, context?: any): T[]; + export function sortBy(list: any, iterator: string, context?: any): T[]; + + export function groupBy(list: List, iterator?: (x: T) => any, context?: any): Dictionary>; + export function groupBy(list: any, iterator?: (x: T) => any, context?: any): Dictionary>; + export function groupBy(list: List, iterator: string, context?: any): Dictionary>; + export function groupBy(list: any, iterator: string, context?: any): Dictionary>; + + export function countBy(list: List, iterator?: (x: T) => any, context?: any): Dictionary>; + export function countBy(list: any, iterator?: (x: T) => any, context?: any): Dictionary>; + export function countBy(list: List, iterator: string, context?: any): Dictionary>; + export function countBy(list: any, iterator: string, context?: any): Dictionary>; + + export function shuffle(list: Collection): T[]; + + export function toArray(list: Collection): T[]; + + export function size(list: Collection): number; + + /**** + Arrays + *****/ + export function first(array: List): T; + export function first(array: List, n: number): T[]; + export function head(array: List): T; + export function head(array: List, n: number): T[]; + export function take(array: List): T; + export function take(array: List, n: number): T[]; + + export function initial(array: List, n?: number): T[]; + + export function last(array: List): T; + export function last(array: List, n: number): T[]; + + export function rest(array: List, n?: number): T[]; + export function tail(array: List, n?: number): T[]; + export function drop(array: List, n?: number): T[]; + + export function compact(array: List): T[]; + + export function flatten(array: any[], shallow?: boolean): any[]; + + export function without(array: List, ...values: T[]): T[]; + + export function union(...arrays: List[]): T[]; + + export function intersection(...arrays: List[]): T[]; + + export function difference(array: List, ...others: List[]): T[]; + + export function uniq(array: List, isSorted?: boolean, iterator?: (x: T) => any): T[]; + export function unique(array: List, isSorted?: boolean, iterator?: (x: T) => any): T[]; + + export function zip(...arrays: any[]): any[]; + + export function object(list: any[], values?: any): any; + + export function indexOf(array: List, value: T, isSorted?: boolean): number; + export function indexOf(array: List, value: T, startFrom: number): number; + + export function lastIndexOf(array: List, value: T, fromIndex?: number): number; + + export function sortedIndex(list: List, value: T, iterator?: (x: T) => any, context?: any): number; + + export function range(stop: number): any[]; + export function range(start: number, stop: number, step?: number): any[]; + + /**** + Functions + *****/ + export function bind(func: (...as: any[]) => any, context: any, ...arguments: any[]): () => any; + export function bindAll(object: any, ...methodNames: string[]): any; + export function memoize(func: any, hashFunction?: any): any; + export function defer(func: () => any); + export function delay(func: any, wait: number, ...arguments: any[]): any; + export function delay(func: any, ...arguments: any[]): any; + export function throttle(func: any, wait: number): any; + export function debounce(func: any, wait: number, immediate?: boolean): any; + export function once(func: any): any; + export function after(count: number, func: any): any; + export function wrap(func: (...as: any[]) => any, wrapper: any): () => any; + export function compose(...functions: any[]): any; + + /**** + Objects + *****/ + export function keys(object: any): string[]; + export function values(object: Dictionary): T[]; + export function pairs(object: any): any[]; + export function invert(object: any): any; + export function functions(object: any): string[]; + export function methods(object: any): string[]; + export function extend(destination: any, ...sources: any[]): any; + export function pick(object: any, ...keys: string[]): any; + export function omit(object: any, ...keys: string[]): any; + export function defaults(object: any, ...defaults: any[]): any; + export function clone(object: any): any; + export function tap(object: any, interceptor: (...as: any[]) => any): any; + export function has(object: any, key: string): boolean; + export function isEqual(object: any, other: any): boolean; + export function isEmpty(object: any): boolean; + export function isElement(object: any): boolean; + export function isArray(object: any): boolean; + export function isObject(value: any): boolean; + export function isArguments(object: any): boolean; + export function isFunction(object: any): boolean; + export function isString(object: any): boolean; + export function isNumber(object: any): boolean; + export function isFinite(object: any): boolean; + export function isBoolean(object: any): boolean; + export function isDate(object: any): boolean; + export function isRegExp(object: any): boolean; + export function isNaN(object: any): boolean; + export function isNull(object: any): boolean; + export function isUndefined(value: any): boolean; + + /**** + Utility + *****/ + export function noConflict(): any; + export function identity(value: any): any; + export function times(n: number, iterator: (index: number) => void , context?: any): void; + export function random(min: number, max: number): number; + export function mixin(object: any): void; + export function uniqueId(prefix: string): string; + export function uniqueId(): number; + export function escape(str: string): string; + export function result(object: any, property: string): any; + export var templateSettings: TemplateSettings; + export function template(templateString: string, data?: any, settings?: any): (...data: any[]) => string; + + /**** + Chaining + *****/ + export function chain(object: any): UnderscoreWrappedObject; } declare module "underscore" { - function underscore(arg?: any): any; - - module underscore { - /**** - Collections - *****/ - export function each(list: List, iterator: ListIterator, context?: any): void; - export function each(object: Dictionary, iterator: ObjectIterator, context?: any): void; - export function forEach(list: List, iterator: ListIterator, context?: any): void; - export function forEach(object: Dictionary, iterator: ObjectIterator, context?: any): void; - - export function map(list: List, iterator: ListIterator, context?: any): TResult[]; - export function map(object: Dictionary, iterator: ObjectIterator, context?: any): TResult[]; - export function collect(list: List, iterator: ListIterator, context?: any): TResult[]; - export function collect(object: Dictionary, iterator: ObjectIterator, context?: any): TResult[]; - - export function reduce(list: Collection, iterator: (prev: TResult, curr: T) => TResult, memo: TResult, context?: any): TResult; - export function inject(list: Collection, iterator: (prev: TResult, curr: T) => TResult, memo: TResult, context?: any): TResult; - - export function reduceRight(list: Collection, iterator: (prev: TResult, curr: T) => TResult, memo: TResult, context?: any): TResult; - export function foldr(list: Collection, iterator: (prev: TResult, curr: T) => TResult, memo: TResult, context?: any): TResult; - - export function find(list: Collection, iterator: (x: T) => boolean, context?: any): T; - export function detect(list: Collection, iterator: (x: T) => boolean, context?: any): T; - - export function filter(list: Collection, iterator: (x: T) => boolean, context?: any): T[]; - export function select(list: Collection, iterator: (x: T) => boolean, context?: any): T[]; - - export function where(list: Collection, properties: any): T[]; - - export function reject(list: Collection, iterator: (x: T) => boolean, context?: any): T[]; - - export function all(list: Collection, iterator: (x: T) => boolean, context?: any): boolean; - export function every(list: Collection, iterator: (x: T) => boolean, context?: any): boolean; - - export function any(list: Collection, iterator?: (x: T) => boolean, context?: any): boolean; - export function some(list: Collection, iterator?: (x: T) => boolean, context?: any): boolean; - - export function contains(list: Collection, value: T): boolean; - export function include(list: Collection, value: T): boolean; - - export function invoke(list: Collection, methodName: string, ...arguments: any[]): any; - - export function pluck(list: Collection, propertyName: string): any[]; - - export function max(list: Collection, iterator?: (x: T) => any, context?: any): T; - - export function min(list: Collection, iterator?: (x: T) => any, context?: any): T; - - export function sortBy(list: List, iterator?: (x: T) => any, context?: any): T[]; - export function sortBy(list: any, iterator?: (x: T) => any, context?: any): T[]; - export function sortBy(list: List, iterator: string, context?: any): T[]; - export function sortBy(list: any, iterator: string, context?: any): T[]; - - export function groupBy(list: List, iterator?: (x: T) => any, context?: any): Dictionary>; - export function groupBy(list: any, iterator?: (x: T) => any, context?: any): Dictionary>; - export function groupBy(list: List, iterator: string, context?: any): Dictionary>; - export function groupBy(list: any, iterator: string, context?: any): Dictionary>; - - export function countBy(list: List, iterator?: (x: T) => any, context?: any): Dictionary>; - export function countBy(list: any, iterator?: (x: T) => any, context?: any): Dictionary>; - export function countBy(list: List, iterator: string, context?: any): Dictionary>; - export function countBy(list: any, iterator: string, context?: any): Dictionary>; - - export function shuffle(list: Collection): T[]; - - export function toArray(list: Collection): T[]; - - export function size(list: Collection): number; - - /**** - Arrays - *****/ - export function first(array: List): T; - export function first(array: List, n: number): T[]; - export function head(array: List): T; - export function head(array: List, n: number): T[]; - export function take(array: List): T; - export function take(array: List, n: number): T[]; - - export function initial(array: List, n?: number): T[]; - - export function last(array: List): T; - export function last(array: List, n: number): T[]; - - export function rest(array: List, n?: number): T[]; - export function tail(array: List, n?: number): T[]; - export function drop(array: List, n?: number): T[]; - - export function compact(array: List): T[]; - - export function flatten(array: any[], shallow?: boolean): any[]; - - export function without(array: List, ...values: T[]): T[]; - - export function union(...arrays: List[]): T[]; - - export function intersection(...arrays: List[]): T[]; - - export function difference(array: List, ...others: List[]): T[]; - - export function uniq(array: List, isSorted?: boolean, iterator?: (x: T) => any): T[]; - export function unique(array: List, isSorted?: boolean, iterator?: (x: T) => any): T[]; - - export function zip(...arrays: any[]): any[]; - - export function object(list: any[], values?: any): any; - - export function indexOf(array: List, value: T, isSorted?: boolean): number; - export function indexOf(array: List, value: T, startFrom: number): number; - - export function lastIndexOf(array: List, value: T, fromIndex?: number): number; - - export function sortedIndex(list: List, value: T, iterator?: (x: T) => any, context?: any): number; - - export function range(stop: number): any[]; - export function range(start: number, stop: number, step?: number): any[]; - - /**** - Functions - *****/ - export function bind(func: (...as: any[]) => any, context: any, ...arguments: any[]): () => any; - export function bindAll(object: any, ...methodNames: string[]): any; - export function memoize(func: any, hashFunction?: any): any; - export function defer(func: () => any); - export function delay(func: any, wait: number, ...arguments: any[]): any; - export function delay(func: any, ...arguments: any[]): any; - export function throttle(func: any, wait: number): any; - export function debounce(func: any, wait: number, immediate?: boolean): any; - export function once(func: any): any; - export function after(count: number, func: any): any; - export function wrap(func: (...as: any[]) => any, wrapper: any): () => any; - export function compose(...functions: any[]): any; - - /**** - Objects - *****/ - export function keys(object: any): string[]; - export function values(object: Dictionary): T[]; - export function pairs(object: any): any[]; - export function invert(object: any): any; - export function functions(object: any): string[]; - export function methods(object: any): string[]; - export function extend(destination: any, ...sources: any[]): any; - export function pick(object: any, ...keys: string[]): any; - export function omit(object: any, ...keys: string[]): any; - export function defaults(object: any, ...defaults: any[]): any; - export function clone(object: any): any; - export function tap(object: any, interceptor: (...as: any[]) => any): any; - export function has(object: any, key: string): boolean; - export function isEqual(object: any, other: any): boolean; - export function isEmpty(object: any): boolean; - export function isElement(object: any): boolean; - export function isArray(object: any): boolean; - export function isObject(value: any): boolean; - export function isArguments(object: any): boolean; - export function isFunction(object: any): boolean; - export function isString(object: any): boolean; - export function isNumber(object: any): boolean; - export function isFinite(object: any): boolean; - export function isBoolean(object: any): boolean; - export function isDate(object: any): boolean; - export function isRegExp(object: any): boolean; - export function isNaN(object: any): boolean; - export function isNull(object: any): boolean; - export function isUndefined(value: any): boolean; - - /**** - Utility - *****/ - export function noConflict(): any; - export function identity(value: any): any; - export function times(n: number, iterator: (index: number) => void , context?: any): void; - export function random(min: number, max: number): number; - export function mixin(object: any): void; - export function uniqueId(prefix: string): string; - export function uniqueId(): number; - export function escape(str: string): string; - export function result(object: any, property: string): any; - export var templateSettings: TemplateSettings; - export function template(templateString: string, data?: any, settings?: any): (...data: any[]) => string; - - /**** - Chaining - *****/ - export function chain(object: any): UnderscoreWrappedObject; - } - - export = underscore; + export = _; } \ No newline at end of file