From 4fb28c2c4aef8c4a3b6558cc11b6961b37fb13fd Mon Sep 17 00:00:00 2001 From: reppners Date: Wed, 25 Feb 2015 22:45:40 +0100 Subject: [PATCH] + initial commit --- js-data-angular/js-data-angular.d.ts | 19 ++ js-data/js-data.d.ts | 394 +++++++++++++++++++++++++++ 2 files changed, 413 insertions(+) create mode 100644 js-data-angular/js-data-angular.d.ts create mode 100644 js-data/js-data.d.ts diff --git a/js-data-angular/js-data-angular.d.ts b/js-data-angular/js-data-angular.d.ts new file mode 100644 index 000000000..a7c035722 --- /dev/null +++ b/js-data-angular/js-data-angular.d.ts @@ -0,0 +1,19 @@ +// Type definitions for JSDataAngular v2.1.0 +// Project: https://github.com/js-data/js-data-angular +// Definitions by: Stefan Steinhart +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// +/// + +declare module JSData { + + class ngDS extends DS { + + // sync methods + bindAll(scope:ng.IScope, expr:string, resourceName:string, params:DSFilterParams, cb?:(err:DSError, items:Array)=>void):Function; + + bindOne(scope:ng.IScope, expr:string, resourceName:string, id:string, cb?:(err:DSError, item:T)=>void):Function; + bindOne(scope:ng.IScope, expr:string, resourceName:string, id:number, cb?:(err:DSError, item:T)=>void):Function; + } +} \ No newline at end of file diff --git a/js-data/js-data.d.ts b/js-data/js-data.d.ts new file mode 100644 index 000000000..ce06edd89 --- /dev/null +++ b/js-data/js-data.d.ts @@ -0,0 +1,394 @@ +// Type definitions for JSData v1.3.0 +// Project: https://github.com/js-data/js-data +// Definitions by: Stefan Steinhart +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/////////////////////////////////////////////////////////////////////////////// +// Promises in js-data are ES6 polyfill promises +/////////////////////////////////////////////////////////////////////////////// + +/// + +declare class JSDataPromise extends Promise { + + // enhanced with finally + finally(finallyCb?: () => U): Promise; +} + +/////////////////////////////////////////////////////////////////////////////// +// js-data module (js-data.js) +/////////////////////////////////////////////////////////////////////////////// + +// Support AMD require +declare module 'js-data' { + export = JSData; +} + +declare module JSData { + + class DS { + + constructor(config?:DSConfiguration); + + defaults:DSConfiguration; + + //TODO check if still exists + adapters:any; // Object consists of key-values pairs where the key is the name of the adapter and the value is + // the adapter itself. + //TODO check if still exists + errors:DSErrors; + + changeHistory(resourceName:string, id?:string):Array; + changeHistory(resourceName:string, id?:number):Array; + + changes(resourceName:string, id:string):Object; + changes(resourceName:string, id:number):Object; + + compute(resourceName:string, id:number):T; + compute(resourceName:string, id:string):T; + compute(resourceName:string, instance:Object):T; + + create(resourceName:string, attrs:any, options?:DSConfiguration):JSDataPromise; + + createInstance(resourceName:string, attrs?:T, options?:DSAdapterOperationConfiguration):T; + + defineResource(resourceName:string):DSResourceDefinition; + defineResource(definition:DSResourceDefinitionConfiguration):DSResourceDefinition; + + destroy(resourceName:string, id:string, options?:DSAdapterOperationConfiguration):JSDataPromise; + destroy(resourceName:string, id:number, options?:DSAdapterOperationConfiguration):JSDataPromise; + + destroyAll(resourceName:string, params?:DSFilterParams, options?:DSAdapterOperationConfiguration):JSDataPromise; + + digest():void; + + eject(resourceName:string, id:string, options?:DSConfiguration):T; + eject(resourceName:string, id:number, options?:DSConfiguration):T; + + ejectAll(resourceName:string, params:DSFilterParams, options?:DSConfiguration):Array; + + filter(resourceName:string, params:DSFilterParams, options?:DSConfiguration):Array; + + find(resourceName:string, id:string, options?:DSAdapterOperationConfiguration):JSDataPromise; + find(resourceName:string, id:number, options?:DSAdapterOperationConfiguration):JSDataPromise; + + findAll(resourceName:string, params:DSFilterParams, options?:DSAdapterOperationConfiguration):JSDataPromise>; + + get(resourceName:string, id:string, options?:DSConfiguration):T; + get(resourceName:string, id:number, options?:DSConfiguration):T; + + getAll(resourceName:string, ids?:Array):Array; + getAll(resourceName:string, ids?:Array):Array; + + hasChanges(resourceName:string, id:string):boolean; + hasChanges(resourceName:string, id:number):boolean; + + inject(resourceName:string, attrs:T, options?:DSConfiguration):T; + inject(resourceName:string, items:Array, options?:DSConfiguration):Array; + + is(resourceName:string, object:Object): boolean; + + lastModified(resourceName:string, id?:string):number; // timestamp + lastModified(resourceName:string, id?:number):number; // timestamp + + lastSaved(resourceName:string, id?:string):number; // timestamp + lastSaved(resourceName:string, id?:number):number; // timestamp + + link(resourceName:string, id:string, relations?:Array):T; + link(resourceName:string, id:number, relations?:Array):T; + + linkAll(resourceName:string, params:DSFilterParams, relations?:Array):T; + + linkInverse(resourceName:string, id:string, relations?:Array):T; + linkInverse(resourceName:string, id:number, relations?:Array):T; + + loadRelations(resourceName:string, id:string, relations:string, options?:DSAdapterOperationConfiguration):JSDataPromise; + loadRelations(resourceName:string, id:number, relations:string, options?:DSAdapterOperationConfiguration):JSDataPromise; + loadRelations(resourceName:string, instance:Object, relations:string, options?:DSAdapterOperationConfiguration):JSDataPromise; + loadRelations(resourceName:string, id:string, relations:Array, options?:DSAdapterOperationConfiguration):JSDataPromise; + loadRelations(resourceName:string, id:number, relations:Array, options?:DSAdapterOperationConfiguration):JSDataPromise; + loadRelations(resourceName:string, instance:Object, relations:Array, options?:DSAdapterOperationConfiguration):JSDataPromise; + + previous(resourceName:string, id:string):T; + previous(resourceName:string, id:number):T; + + reap(resourceName:string, options?:DSConfiguration):JSDataPromise; + + refresh(resourceName:string, id:string, options?:DSAdapterOperationConfiguration):JSDataPromise; + refresh(resourceName:string, id:number, options?:DSAdapterOperationConfiguration):JSDataPromise; + + registerAdapter(adapterId: string, adapter:IDSAdapter, options?:{default: boolean}):void; + + save(resourceName:string, id:string, options?:DSSaveConfiguration):JSDataPromise; + save(resourceName:string, id:number, options?:DSSaveConfiguration):JSDataPromise; + + unlinkInverse(resourceName:string, id:string, relations?:Array):T; + unlinkInverse(resourceName:string, id:number, relations?:Array):T; + + update(resourceName:string, id:string, attrs:any, options?:DSSaveConfiguration):JSDataPromise; + update(resourceName:string, id:number, attrs:any, options?:DSSaveConfiguration):JSDataPromise; + + updateAll(resourceName:string, attrs:any, params:DSFilterParams, options?:DSAdapterOperationConfiguration):JSDataPromise>; + } + + interface DSConfiguration extends IDSResourceLifecycleEventHandlers { + actions?: Object; + allowSimpleWhere?: boolean; + basePath?: string; + bypassCache?: boolean; + cacheResponse?: boolean; + defaultAdapter?: string; + defaultFilter?: (collection:Array, resourceName:string, params:DSFilterParams, options:DSConfiguration)=>Array; + eagerEject?: boolean; + endpoint?: string; + error?: (message?: any, ...optionalParams: any[])=> void; + fallbackAdapters?: Array; + findAllFallbackAdapters?: Array; + findAllStrategy?: string; + findBelongsTo?: boolean; + findFallbackAdapters?: Array; + findHasOne?: boolean; + findHasMany?: boolean; + findInverseLinks?: boolean; + findStrategy?: string + idAttribute?: string; + ignoredChanges?:Array; + keepChangeHistory?: boolean; + loadFromServer?: boolean; + log?: any; + // log: (message?: any, ...optionalParams: any[])=> void; + // log: boolean; + maxAge?: number; + notify?: boolean; + reapAction?: string; + reapInterval?: number; + resetHistoryOnInject?: boolean; + strategy?: string; + upsert?: boolean; + useClass?: boolean; + useFilter: boolean; + } + + interface DSAdapterOperationConfiguration extends DSConfiguration { + adapter?: string + } + + interface DSSaveConfiguration extends DSAdapterOperationConfiguration { + changesOnly?: boolean; + } + + interface DSResourceDefinitionConfiguration extends DSConfiguration { + name: string; + computed?: any; + methods?: any; + relations?: { + hasMany?: Object; + hasOne?: Object; + belongsTo?: Object; + }; + } + + interface DSResourceDefinition extends DSResourceDefinitionConfiguration { + + changeHistory(id?:string):Array; + changeHistory(id?:number):Array; + + changes(id:string):Object; + changes(id:number):Object; + + compute(id:number):T; + compute(id:string):T; + compute(instance:Object):T; + + create(attrs:any, options?:DSConfiguration):JSDataPromise; + + createInstance(attrs?:T, options?:DSAdapterOperationConfiguration):T; + + defineResource(resourceName:string):DSResourceDefinition; + defineResource(definition:DSResourceDefinitionConfiguration):DSResourceDefinition; + + destroy(id:string, options?:DSAdapterOperationConfiguration):JSDataPromise; + destroy(id:number, options?:DSAdapterOperationConfiguration):JSDataPromise; + + destroyAll(params?:DSFilterParams, options?:DSAdapterOperationConfiguration):JSDataPromise; + + digest():void; + + eject(id:string, options?:DSConfiguration):T; + eject(id:number, options?:DSConfiguration):T; + + ejectAll(params:DSFilterParams, options?:DSConfiguration):Array; + + filter(params:DSFilterParams, options?:DSConfiguration):Array; + + find(id:string, options?:DSAdapterOperationConfiguration):JSDataPromise; + find(id:number, options?:DSAdapterOperationConfiguration):JSDataPromise; + + findAll(params:DSFilterParams, options?:DSAdapterOperationConfiguration):JSDataPromise>; + + get(id:string, options?:DSConfiguration):T; + get(id:number, options?:DSConfiguration):T; + + getAll(ids?:Array):Array; + getAll(ids?:Array):Array; + + hasChanges(id:string):boolean; + hasChanges(id:number):boolean; + + inject(attrs:T, options?:DSConfiguration):T; + inject(items:Array, options?:DSConfiguration):Array; + + is(object:Object): boolean; + + lastModified(id?:string):number; // timestamp + lastModified(id?:number):number; // timestamp + + lastSaved(id?:string):number; // timestamp + lastSaved(id?:number):number; // timestamp + + link(id:string, relations?:Array):T; + link(id:number, relations?:Array):T; + + linkAll(params:DSFilterParams, relations?:Array):T; + + linkInverse(id:string, relations?:Array):T; + linkInverse(id:number, relations?:Array):T; + + loadRelations(id:string, relations:string, options?:DSAdapterOperationConfiguration):JSDataPromise; + loadRelations(id:number, relations:string, options?:DSAdapterOperationConfiguration):JSDataPromise; + loadRelations(instance:Object, relations:string, options?:DSAdapterOperationConfiguration):JSDataPromise; + loadRelations(id:string, relations:Array, options?:DSAdapterOperationConfiguration):JSDataPromise; + loadRelations(id:number, relations:Array, options?:DSAdapterOperationConfiguration):JSDataPromise; + loadRelations(instance:Object, relations:Array, options?:DSAdapterOperationConfiguration):JSDataPromise; + + previous(id:string):T; + previous(id:number):T; + + reap(options?:DSConfiguration):JSDataPromise; + + refresh(id:string, options?:DSAdapterOperationConfiguration):JSDataPromise; + refresh(id:number, options?:DSAdapterOperationConfiguration):JSDataPromise; + + save(id:string, options?:DSSaveConfiguration):JSDataPromise; + save(id:number, options?:DSSaveConfiguration):JSDataPromise; + + unlinkInverse(id:string, relations?:Array):T; + unlinkInverse(id:number, relations?:Array):T; + + update(id:string, attrs:any, options?:DSSaveConfiguration):JSDataPromise; + update(id:number, attrs:any, options?:DSSaveConfiguration):JSDataPromise; + + updateAll(attrs:any, params:DSFilterParams, options?:DSAdapterOperationConfiguration):JSDataPromise>; + } + + interface DSFilterParams { + where?: Object; + + limit?: number; + + skip?: number; + offset?: number; + + orderBy?: any; + // wait for union types to be supported + //orderBy?: Array>; + //orderBy?: Array; + //orderBy?: string; + + sort?: any; + // wait for union types to be supported + //sort?: string; + //sort?: Array; + //sort?: Array>; + } + + interface IDSResourceLifecycleValidateEventHandlers { + beforeValidate?: (resourceName:string, data:any, cb:(err:any, data?:any)=>void)=>void; + validate?: (resourceName:string, data:any, cb:(err:any, data?:any)=>void)=>void; + afterValidate?: (resourceName:string, data:any, cb:(err:any, data?:any)=>void)=>void; + } + + interface IDSResourceLifecycleCreateEventHandlers { + beforeCreate?: (resourceName:string, data:any, cb:(err:any, data?:any)=>void)=>void; + afterCreate?: (resourceName:string, data:any, cb:(err:any, data?:any)=>void)=>void; + } + + interface IDSResourceLifecycleCreateInstanceEventHandlers { + beforeCreateInstance?: (resourceName:string, data:any)=>void; + afterCreateInstance?: (resourceName:string, data:any)=>void; + } + + interface IDSResourceLifecycleUpdateEventHandlers { + beforeUpdate?: (resourceName:string, data:any, cb:(err:any, data?:any)=>void)=>void; + afterUpdate?: (resourceName:string, data:any, cb:(err:any, data?:any)=>void)=>void; + } + + interface IDSResourceLifecycleDestroyEventHandlers { + beforeDestroy?: (resourceName:string, data:any, cb:(err:any, data?:any)=>void)=>void; + afterDestroy?: (resourceName:string, data:any, cb:(err:any, data?:any)=>void)=>void; + } + + interface IDSResourceLifecycleInjectEventHandlers { + beforeInject?: (resourceName:string, data:any)=>void; + afterInject?: (resourceName:string, data:any)=>void; + } + + interface IDSResourceLifecycleEjectEventHandlers { + beforeEject?: (resourceName:string, data:any)=>void; + afterEject?: (resourceName:string, data:any)=>void; + } + + interface IDSResourceLifecycleReapEventHandlers { + beforeReap?: (resourceName:string, data:any)=>void; + afterReap?: (resourceName:string, data:any)=>void; + } + + interface IDSResourceLifecycleEventHandlers extends IDSResourceLifecycleCreateEventHandlers, + IDSResourceLifecycleCreateInstanceEventHandlers, + IDSResourceLifecycleValidateEventHandlers, + IDSResourceLifecycleUpdateEventHandlers, + IDSResourceLifecycleDestroyEventHandlers, + IDSResourceLifecycleInjectEventHandlers, + IDSResourceLifecycleEjectEventHandlers, + IDSResourceLifecycleReapEventHandlers { + + } + + //TODO check if those are still valid + // errors + interface DSErrors { + + // types + IllegalArgumentError:DSError + NonexistentResourceError:DSError + RuntimeError:DSError + } + + //TODO check if those are still valid + interface DSError { + new (message?:string):DSError; + message: string; + type: string; + } + + // DSAdapter interface + interface IDSAdapter { + create(config:DSResourceDefinition, attrs:any, options?:DSConfiguration):JSDataPromise; + + destroy(config:DSResourceDefinition, id:string, options?:DSConfiguration):JSDataPromise; + destroy(config:DSResourceDefinition, id:number, options?:DSConfiguration):JSDataPromise; + + destroyAll(config:DSResourceDefinition, params:DSFilterParams, options?:DSConfiguration):JSDataPromise; + + find(config:DSResourceDefinition, id:string, options?:DSConfiguration):JSDataPromise; + find(config:DSResourceDefinition, id:number, options?:DSConfiguration):JSDataPromise; + + findAll(config:DSResourceDefinition, params?:DSFilterParams, options?:DSConfiguration):JSDataPromise; + + update(config:DSResourceDefinition, id:string, attrs:any, options?:DSConfiguration):JSDataPromise; + update(config:DSResourceDefinition, id:number, attrs:any, options?:DSConfiguration):JSDataPromise; + + updateAll(config:DSResourceDefinition, attrs:any, params?:DSFilterParams, options?:DSConfiguration):JSDataPromise; + } +} +