diff --git a/Definitions/backbone-0.9.d.ts b/Definitions/backbone-0.9.d.ts index 119b5584b3..d57be877ad 100644 --- a/Definitions/backbone-0.9.d.ts +++ b/Definitions/backbone-0.9.d.ts @@ -1,160 +1,196 @@ // Type definitions for Backbone 0.9 -// Project: http://backbonejs.org/ -// Definitions: https://github.com/borisyankov/DefinitelyTyped - +// https://github.com/borisyankov/DefinitelyTyped declare module Backbone { - export class Events { - on(events: string, callback: (event) => any, context?: any): any; - off(events?: string, callback?: (event) => any, context?: any): any; - trigger(events: string, ...args: any[]): any; + export interface AddOptions extends Silenceable { + at: number; + } + + export interface CreateOptions extends Silenceable { + wait: bool; + } + + export interface Destroyable { + success(model: any, resonse: any); + error(model: any, resonse: any); } - export class Model extends Events { + export interface HistoryOptions extends Silenceable { + pushState: bool; + root: string; + } + + export interface NavigateOptions { + trigger: bool; + } + + export interface RouterOptions { + routes: any; + } + + export interface Silenceable { + silent: bool; + } + + export class Events { + on(eventName: string, callback: (event) => void, context?: any) : any; + bind(eventName: string, callback: (event) => void, context?: any) : any; + off(eventName?: string, callback?: (event) => void, context?: any): any; + unbind(eventName?: string, callback?: (event) => void, context?: any): any; + trigger(eventName: string, ...args: any[]): any; + } + + export class ModelBase extends Events { + fetch(options? : Destroyable); + url: string; // or url(): string; + parse(response); + toJSON(): string; + } + + export class Model extends ModelBase { static extend(properties: any, classProperties?: any): any; // do not use, prefer TypeScript's extend functionality + attributes: any; + changed: any[]; + cid: string; + defaults : any; // or defaults(); + id: any; + idAttribute: string; + urlRoot : string; // or urlRoot() + constructor (attributes?: any, options?: any); + initialize(attributes?: any); get(attributeName: string): any; - set(attributeName: string, value: any): void; - set(obj: any): void; + set(attributeName: string, value: any); + set(obj: any); - escape(attribute); - has(attribute); - unset(attribute, options? ); - clear(options? ); - - id: any; - idAttribute: any; - cid; - attributes; - changed; - - bind(ev: string, f: Function, ctx?: any): void; /// ???? - - defaults; // or defaults(); - toJSON(): string; - fetch(options? ); - save(attributes? , options? ): void; - destroy(options? ): void; - validate(attributes); - isValid(); - url(); - urlRoot; // or urlRoot() - parse(response); - clone(); - isNew(); change(); - hasChanged(attribute? ); - changedAttributes(attributes? ); - previous(attribute); - previousAttributes(); + changedAttributes(attributes? : any) : any[]; + clear(options? : Silenceable ); + clone() : Model; + destroy(options? : Destroyable ); + escape(attribute : string); + has(attribute : string) : bool; + hasChanged(attribute? : string ) : bool; + isNew() : bool; + isValid() : string; + previous(attribute : string) : any; + previousAttributes(): any[]; + save(attributes? : any, options? : Destroyable ); + unset(attribute: string, options? : Silenceable ); + validate(attributes : any) : any; } - export class Collection { + export class Collection extends ModelBase { static extend(properties: any, classProperties?: any): any; // do not use, prefer TypeScript's extend functionality - model; - - constructor (models? , options? ); - - models; - toJSON(): any; - - ///// start UNDERSCORE 28: - bind(ev: string, f: Function, ctx?: any): void; + model: Model; + models : any; collection: Model; - create(attrs, opts? ): Collection; - each(f: (elem: any) => void ): void; - last(): any; - last(n: number): any[]; - filter(f: (elem: any) => any): Collection; - without(...values: any[]): Collection; - - // Underscore bindings - - each(object: any, iterator: (value, key, list? ) => void , context?: any): any[]; - forEach(object: any, iterator: (value, key, list? ) => void , context?: any): any[]; - map(object: any, iterator: (value, key, list? ) => void , context?: any): any[]; - reduce(list: any[], iterator: any, memo: (memo: any, element: any, index: number, list: any[]) => any, context?: any): any[]; - reduceRight(list: any[], iterator: (memo: any, element: any, index: number, list: any[]) => any, memo: any, context?: any): any[]; - find(list: any[], iterator: any, context?: any): any; // ??? - detect(list: any[], iterator: any, context?: any): any; // ??? - filter(list: any[], iterator: any, context?: any): any[]; - select(list: any[], iterator: any, context?: any): any[]; - reject(list: any[], iterator: any, context?: any): any[]; - every(list: any[], iterator: any, context?: any): bool; - all(list: any[], iterator: any, context?: any): bool; - any(list: any[], iterator?: any, context?: any): bool; - some(list: any[], iterator?: any, context?: any): bool; - contains(list: any, value: any): bool; - contains(list: any[], value: any): bool; - include(list: any, value: any): bool; - include(list: any[], value: any): bool; - invoke(list: any[], methodName: string, arguments: any[]): any; - invoke(object: any, methodName: string, ...arguments: any[]): any; - max(list: any[], iterator?: any, context?: any): any; - min(list: any[], iterator?: any, context?: any): any; - sortBy(list: any[], iterator?: any, context?: any): any; - sortedIndex(list: any[], valueL: any, iterator?: any): number; - toArray(list: any): any[]; - size(list: any): number; - first(array: any[], n?: number): any; - initial(array: any[], n?: number): any[]; - rest(array: any[], n?: number): any[]; - last(array: any[], n?: number): any; - without(array: any[], ...values: any[]): any[]; - indexOf(array: any[], value: any, isSorted?: bool): number; - shuffle(list: any[]): any[]; - lastIndexOf(array: any[], value: any, fromIndex?: number): number; - isEmpty(object: any): bool; - groupBy(list: any[], iterator: any): any; - - add(models, options? ); - remove(models, options? ); - get(id); - getByCid(cid); - at(index: number); - push(model, options? ); - pop(options? ); - unshift(model, options? ); - shift(options? ); length: number; - //comparator; - sort(options? ); - pluck(attribute); - where(attributes); - url; // or url() - parse(response); - fetch(options?: any): void; - reset(models, options? ); - create(attributes, options? ); + + constructor (models? :any , options? ); + + add(model: Model, options? : AddOptions); + add(models: Model[], options? : AddOptions); + at(index: number) : Model; + comparator(attribute: string): number; + comparator(compare: Model, to:Model): number; + get(id : any) : Model; + getByCid(cid) : Model; + create(attributes: any, options? : CreateOptions ): Collection; + pluck(attribute:string) : any[]; + push(model: Model, options? : AddOptions); + pop(options? : Silenceable); + remove(model: Model, options? : Silenceable); + remove(models: Model[], options? : Silenceable); + reset(models : Model[], options? ); + shift(options? : Silenceable); + sort(options? : Silenceable); + unshift(model: Model, options?: AddOptions); + where(properies: any): Model[]; + + all(iterator: (element: Model, index:number) => bool, context?: any): bool; + any(iterator:(element: Model, index:number) => bool, context?: any): bool; + collect(iterator: (element: Model, index:number, context? : any ) => any[] , context?: any): any[]; + compact(): Model[]; + contains(value: any): bool; + countBy(iterator: (element:Model, index:number) => any) : any[]; + countBy(attribute: string) : any[]; + detect(iterator: (item: any) => bool, context?: any): any; // ??? + difference(...model: Model[]) : Model[]; + drop(): Model; + drop(n: number): Model[]; + each(iterator: (element: Model, index:number, list? ) => void , context?: any); + every(iterator: (element: Model, index:number) => bool, context?: any): bool; + filter(iterator: (elemebt:Model, index:number) => bool, context?: any): Model[]; + find(iterator: (element:Model, index:number) => bool, context?: any): Model; + first(): Model; + first(n: number): Model[]; + flatten(shallow?: bool): Model[]; + foldl(iterator: (memo: any, element: Model, index:number) => any, initialMemo: any, context?: any): any; + forEach(iterator: (element: Model, index:number, list? ) => void , context?: any); + groupBy(iterator: (element:Model, index:number) => any) : any[]; + groupBy(attribute: string) : any[]; + include(value: any): bool; + indexOf(element: Model, isSorted?: bool): number; + initial(): Model; + initial(n: number): Model[]; + inject(iterator: (memo: any, element: Model, index:number) => any, initialMemo: any, context?: any): any; + intersection(...model: Model[]) : Model[]; + isEmpty(object: any): bool; + invoke(methodName: string, arguments?: any[]); + last(): Model; + last(n: number): Model[]; + lastIndexOf(element: Model, fromIndex?: number): number; + map(iterator: (element: Model, index:number, context? : any ) => any[] , context?: any): any[]; + max(iterator?: (element:Model, index:number) => any, context?: any): Model; + min(iterator?: (element:Model, index:number) => any, context?: any): Model; + object(...values: any[]): any[]; + reduce(iterator: (memo: any, element: Model, index:number) => any, initialMemo: any, context?: any): any; + select(iterator: any, context?: any): any[]; + size(): number; + shuffle(): any[]; + some(iterator:(element: Model, index:number) => bool, context?: any): bool; + sortBy(iterator: (element:Model, index:number) => number, context?: any): Model[]; + sortBy(attribute:string, context?: any): Model[]; + sortedIndex(element: Model, iterator?: (element:Model, index:number) => number): number; + range(stop: number, step?:number); + range(start: number, stop: number, step?:number); + reduceRight(iterator: (memo: any, element: Model, index: number) => any, initialMemo: any, context?: any): any[]; + reject(iterator: (element:Model, index:number) => bool, context?: any): Model[]; + rest(): Model; + rest(n: number): Model[]; + tail(): Model; + tail(n: number): Model[]; + toArray(): any[]; + union(...model: Model[]) : Model[]; + uniq(isSorted? : bool, iterator?: (element:Model, index:number) => bool) : Model[]; + without(...values: any[]): Model[]; + zip(...model: Model[]): Model[]; } export class Router { static extend(properties: any, classProperties?: any): any; // do not use, prefer TypeScript's extend functionality - routes; - constructor (options? ); - route(route, name, callback? ); - navigate(fragment, options? ); + routes : any; + + constructor (options? : RouterOptions); + initialize (options? : RouterOptions); + route(route: string, name: string, callback?: (...parameter:any[]) => void ); + navigate(fragment : string, options? : NavigateOptions); } export var history: History; - export class History { - start(options? ); + start(options? : HistoryOptions ); navigate(fragment: string, options: any); - } - - export class Sync { - sync(method, model, options? ); - emulateHTTP: bool; - emulateJSONBackbone: bool; + pushSate(); } export class View { @@ -166,7 +202,7 @@ declare module Backbone { $(selector: string): any; model: Model; make(tagName: string, attrs? , opts? ): View; - setElement(element: HTMLElement, delegate?: bool): void; + setElement(element: HTMLElement, delegate?: bool); tagName: string; events: any; @@ -176,15 +212,19 @@ declare module Backbone { attributes; $(selector); render(); - remove(): void;; + remove(); make(tagName, attributes? , content? ); //delegateEvents: any; delegateEvents(events?: any): any; undelegateEvents(); } - export class Utility { - noConflict(): any; - setDomLibrary(jQueryNew); - } + // SYNC + function sync(method, model, options? : Destroyable); + var emulateHTTP: bool; + var emulateJSONBackbone: bool; + + // Utility + function noConflict(): Backbone; + function setDomLibrary(jQueryNew); } \ No newline at end of file diff --git a/Definitions/knockback-0.16.d.ts b/Definitions/knockback-0.16.d.ts new file mode 100644 index 0000000000..2d52a9b8f0 --- /dev/null +++ b/Definitions/knockback-0.16.d.ts @@ -0,0 +1,171 @@ +/// +/// +declare module Knockback { + export interface EventWatcherOptions { + emitter : (newEmitter) => void; + update : (newValue) => void; + event_selector : string; + key? : string; + } + + export interface FactoryOptions { + factories: any; + } + + export interface StoreOptions { + creator: any; + path: string; + store: Store; + factory: Factory; + } + + export class Destroyable { + destroy(); + } + + export class ViewModel extends Destroyable { + constructor (model? : Backbone.Model , options? : ViewModelOptions, viewModel? : ViewModel ); + shareOptions() : ViewModelOptions; + extend(source: any); + model(): Backbone.Model; + } + + export class EventWatcher extends Destroyable { + useOptionsOrCreate(options, emitter : KnockoutObservableAny, obj : Backbone.Model, callback_options : any); + emitter(): Backbone.Model; + emitter(newEmitter : Backbone.Model); + registerCallbacks(obj: any, callback_info: any); + releaseCallbacks(obj: any); + } + + export class Factory { + constructor (parent_factory : any); + useOptionsOrCreate(options: FactoryOptions, obj: any, owner_path: string); + hasPath(path: string): bool; + addPathMapping(path: string, create_info); + addPathMappings(factories: any, owner_path: string); + hasPathMappings(factories: any, owner_path: string) : bool; + creatorForPath(obj: any, path: string); + } + + export class Store extends Destroyable { + constructor (model:Backbone.Model, options: StoreOptions); + useOptionsOrCreate(options: StoreOptions, obj: any, observable: KnockoutObservableAny); + clear(); + register(obj: Backbone.Model, observable: KnockoutObservableAny, options: StoreOptions); + findOrCreate(obj: Backbone.Model, options: StoreOptions); + } + + export class DefaultObservable extends Destroyable { + constructor (targetObservable: KnockoutObservableAny, defaultValue: any); + setToDefault(); + } + + export class FormattedObservable extends Destroyable { + constructor (format: string, args: any[]); + constructor (format: KnockoutObservableAny, args: any[]); + } + + export interface LocalizedObservable { + constructor (value: any, options: any, vm: any); + destroy(); + resetToCurrent(); + observedValue(value: any); + } + + export class TriggeredObservable extends Destroyable { + constructor (emitter: Backbone.ModelBase, event: string); + emitter() : Backbone.ModelBase; + emitter(newEmitter: Backbone.ModelBase); + } + + export class Statistics { + constructor (); + clear(); + addModelEvent(event: string); + modelEventsStatsString(); + register(key: string, obj: any); + unregister(key: string, obj: any); + registeredCount(type: any) : number; + registeredStatsString(success_message: string) : string; + } + + export interface OptionsBase { + path?: string; // the path to the value (used to create related observables from the factory). + store?: Store; // a store used to cache and share view models. + factory?: Factory; // a factory used to create view models. + options?: any; // a set of options merge into these options using _.defaults. Useful for extending options when deriving classes rather than merging them by hand. + } + + export interface ViewModelOptions extends OptionsBase { + internals?: string[]; // an array of atttributes that should be scoped with an underscore, eg. name -> _name + requires?: string[]; // an array of atttributes that will have kb.Observables created even if they do not exist on the Backbone.Model. Useful for binding Views that require specific observables to exist + keys?: string[]; // restricts the keys used on a model. Useful for reducing the number of kb.Observables created from a limited set of Backbone.Model attributes + if(objOrArray: any); // an array is supplied, excludes keys to exclude on the view model; for example, if you want to provide a custom implementation. If an Object, it provides options to the kb.Observable constructor. + path?: string; // the path to the value (used to create related observables from the factory). + factories?: any; // a map of dot-deliminated paths; for example {'models.name': kb.ViewModel} to either constructors or create functions. Signature: {'some.path': function(object, options)} + } + + export interface CollectionOptions extends OptionsBase { + models_only?: bool; // flag for skipping the creation of view models. The collection observable will be populated with (possibly sorted) models. + view_model?: any; // (Constructor) — the view model constructor used for models in the collection. Signature: constructor(model, options) + create?: any; // a function used to create a view model for models in the collection. Signature: create(model, options) + factories?: any; // a map of dot-deliminated paths; for example 'models.owner': kb.ViewModel to either constructors or create functions. Signature: 'some.path': function(object, options) + comparator?: any; //a function that is used to sort an object. Signature: function(model_a, model_b) returns negative value for ascending, 0 for equal, and positive for descending + sort_attribute?: string; // the name of an attribute. Default: resort on all changes to a model. + filters?: any; // filters can be individual ids (observable or simple) or arrays of ids, functions, or arrays of functions. + } + + export interface CollectionObservable extends KnockoutObservableArray { + collection() : Backbone.Collection; + destroy(); + shareOptions() : CollectionOptions; + filters(filter: any); + comparator(comparatorFunction: any); + sortAttribute(attr: string); + viewModelByModel(model: Backbone.Model) : ViewModel; + hasViewModels(): bool; + } + + export interface Utils { + wrappedObservable(obj: any) : any; + wrappedObservable(obj: any, value: any); + wrappedObject(obj: any) : any; + wrappedObject(obj: any, value: any); + wrappedModel(obj: any) : any; + wrappedModel(obj: any, value: any); + wrappedStore(obj: any) : any; + wrappedStore(obj: any, value: any); + wrappedFactory(obj: any) : any; + wrappedFactory(obj: any, value: any); + wrappedEventWatcher(obj: any) : any; + wrappedEventWatcher(obj: any, value: any); + wrappedDestroy(obj: any); + valueType(observable: KnockoutObservableAny) : any; + pathJoin(path1: string, path2: string): string; + optionsPathJoin(options: any, path: string): any; + inferCreator(value: any, factory: Factory, path: string, owner: any, key: string); + createFromDefaultCreator(obj: any, options?: any); + hasModelSignature(obj: any): bool; + hasCollectionSignature(obj: any): bool; + } + + export interface Static extends Utils { + collectionObservable(model?: Backbone.Collection, options?: CollectionOptions): CollectionObservable; + observable(model?: Backbone.Model, options?: any) : KnockoutObservableAny; + viewModel(model?: Backbone.Model, options?: any) : KnockoutObservableAny; + defaultObservable(targetObservable: KnockoutObservableAny, defaultValue: any) : KnockoutObservableAny; + formattedObservable(format: string, args: any[]) : KnockoutObservableAny; + formattedObservable(format: KnockoutObservableAny, args: any[]): KnockoutObservableAny; + localizedObservable(data: any, options: any): KnockoutObservableAny; + release(object: any, pre_release?: () => void ); + releaseKeys(object: any); + releaseOnNodeRemove(viewmodel: ViewModel, node: Element); + renderTemplate(template: string, viewModel: ViewModel, options: any); + renderAutoReleasedTemplate(template: string, viewModel: ViewModel, options: any); + applyBindings(viewModel: ViewModel, node?: Element); + } + +}; + +declare var kb: Knockback.Static; \ No newline at end of file