From e4eed4a208ce764dd36920cf5a4f668379504f81 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 21 Aug 2015 13:07:36 -0700 Subject: [PATCH] Encapsulated interfaces, made typings more precise according to documentation, removed 'ParseDefaultOptions' in 'parse'. --- parse/parse.d.ts | 294 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 204 insertions(+), 90 deletions(-) diff --git a/parse/parse.d.ts b/parse/parse.d.ts index cb4fa8b2b..1f3e6993c 100644 --- a/parse/parse.d.ts +++ b/parse/parse.d.ts @@ -15,53 +15,37 @@ declare module Parse { var serverURL: string; var VERSION: string; - interface ParseDefaultOptions { - wait?: boolean; - silent?: boolean; + interface SuccessOption { success?: Function; + } + + interface ErrorOption { error?: Function; + } + + interface BackboneStyleOptions extends SuccessOption, ErrorOption { + } + + interface WaitOption { + /** + * Set to true to wait for the server to confirm success + * before triggering an event. + */ + wait?: boolean; + } + + interface UseMasterKeyOption { + /** + * In Cloud Code and Node only, causes the Master Key to be used for this request. + */ useMasterKey?: boolean; } - interface CollectionOptions { - model?: Object; - query?: Query; - comparator?: string; - } - - interface CollectionAddOptions { - at?: number; - } - - interface RouterOptions { - routes: any; - } - - interface NavigateOptions { - trigger?: boolean; - } - - interface ViewOptions { - model?: any; - collection?: any; - el?: any; - id?: string; - className?: string; - tagName?: string; - attributes?: any[]; - } - - interface PushData { - channels?: string[]; - push_time?: Date; - expiration_time?: Date; - expiration_interval?: number; - where?: Query; - data?: any; - alert?: string; - badge?: string; - sound?: string; - title?: string; + interface SilentOption { + /** + * Set to true to avoid firing the event. + */ + silent?: boolean; } /** @@ -199,7 +183,7 @@ declare module Parse { constructor(name: string, data: any, type?: string); name(): string; url(): string; - save(options?: ParseDefaultOptions): Promise; + save(options?: BackboneStyleOptions): Promise; } @@ -233,7 +217,7 @@ declare module Parse { constructor(arg1?: any, arg2?: any); - current(options?: ParseDefaultOptions): GeoPoint; + current(options?: BackboneStyleOptions): GeoPoint; radiansTo(point: GeoPoint): number; kilometersTo(point: GeoPoint): number; milesTo(point: GeoPoint): number; @@ -332,10 +316,10 @@ declare module Parse { constructor(attributes?: string[], options?: any); static extend(className: string, protoProps?: any, classProps?: any): any; - static fetchAll(list: Object[], options: ParseDefaultOptions): Promise; - static fetchAllIfNeeded(list: Object[], options: ParseDefaultOptions): Promise; - static destroyAll(list: Object[], options?: ParseDefaultOptions): Promise; - static saveAll(list: Object[], options?: ParseDefaultOptions): Promise; + static fetchAll(list: Object[], options: BackboneStyleOptions): Promise; + static fetchAllIfNeeded(list: Object[], options: BackboneStyleOptions): Promise; + static destroyAll(list: Object[], options?: Object.DestroyAllOptions): Promise; + static saveAll(list: Object[], options?: Object.SaveAllOptions): Promise; initialize(): void; add(attr: string, item: any): Object; @@ -344,12 +328,12 @@ declare module Parse { changedAttributes(diff: any): boolean; clear(options: any): any; clone(): Object; - destroy(options?: ParseDefaultOptions): Promise; + destroy(options?: Object.DestroyOptions): Promise; dirty(attr: String): boolean; dirtyKeys(): string[]; escape(attr: string): string; existed(): boolean; - fetch(options?: ParseDefaultOptions): Promise; + fetch(options?: Object.FetchOptions): Promise; get(attr: string): any; getACL(): ACL; has(attr: string): boolean; @@ -361,12 +345,27 @@ declare module Parse { previousAttributes(): any; relation(attr: string): Relation; remove(attr: string, item: any): any; - save(options?: ParseDefaultOptions, arg2?: any, arg3?: any): Promise; - set(key: string, value: any, options?: ParseDefaultOptions): boolean; - setACL(acl: ACL, options?: ParseDefaultOptions): boolean; + save(options?: Object.SaveOptions, arg2?: any, arg3?: any): Promise; + set(key: string, value: any, options?: Object.SetOptions): boolean; + setACL(acl: ACL, options?: BackboneStyleOptions): boolean; unset(attr: string, options?: any): any; - validate(attrs: any, options?: ParseDefaultOptions): boolean; + validate(attrs: any, options?: BackboneStyleOptions): boolean; + } + namespace Object { + interface DestroyOptions extends BackboneStyleOptions, WaitOption, UseMasterKeyOption { } + + interface DestroyAllOptions extends BackboneStyleOptions, UseMasterKeyOption { } + + interface FetchOptions extends BackboneStyleOptions, UseMasterKeyOption { } + + interface SaveOptions extends BackboneStyleOptions, SilentOption, UseMasterKeyOption, WaitOption { } + + interface SaveAllOptions extends BackboneStyleOptions, UseMasterKeyOption { } + + interface SetOptions extends ErrorOption, SilentOption { + promise?: any; + } } /** @@ -420,24 +419,49 @@ declare module Parse { query: Query; comparator: (object: Object) => any; - constructor(models?: Object[], options?: CollectionOptions); + constructor(models?: Object[], options?: Collection.Options); static extend(instanceProps: any, classProps: any): any; initialize(): void; - add(models: any[], options?: CollectionAddOptions): Collection; + add(models: any[], options?: Collection.AddOptions): Collection; at(index: number): Object; chain(): _Chain>; - fetch(options?: ParseDefaultOptions): Promise; - create(model: Object, options?: ParseDefaultOptions): Object; + fetch(options?: Collection.FetchOptions): Promise; + create(model: Object, options?: Collection.CreateOptions): Object; get(id: string): Object; getByCid(cid: any): any; pluck(attr: string): any[]; - remove(model: any, options?: ParseDefaultOptions): Collection; - remove(models: any[], options?: ParseDefaultOptions): Collection; - reset(models: any[], options?: ParseDefaultOptions): Collection; - sort(options?: ParseDefaultOptions): Collection; + remove(model: any, options?: Collection.RemoveOptions): Collection; + remove(models: any[], options?: Collection.RemoveOptions): Collection; + reset(models: any[], options?: Collection.ResetOptions): Collection; + sort(options?: Collection.SortOptions): Collection; toJSON(): any; + } + namespace Collection { + interface Options { + model?: Object; + query?: Query; + comparator?: string; + } + + interface AddOptions extends SilentOption { + /** + * The index at which to add the models. + */ + at?: number; + } + + interface CreateOptions extends BackboneStyleOptions, WaitOption, SilentOption, UseMasterKeyOption { + } + + interface FetchOptions extends BackboneStyleOptions, SilentOption, UseMasterKeyOption { } + + interface RemoveOptions extends SilentOption { } + + interface ResetOptions extends SilentOption { } + + interface SortOptions extends SilentOption { } } /** @@ -549,23 +573,23 @@ declare module Parse { addDescending(key: string[]): Query; ascending(key: string): Query; ascending(key: string[]): Query; - collection(items?: Object[], options?: ParseDefaultOptions): Collection; + collection(items?: Object[], options?: Collection.Options): Collection; containedIn(key: string, values: any[]): Query; contains(key: string, substring: string): Query; containsAll(key: string, values: any[]): Query; - count(options?: ParseDefaultOptions): Promise; + count(options?: Query.CountOptions): Promise; descending(key: string): Query; descending(key: string[]): Query; doesNotExist(key: string): Query; doesNotMatchKeyInQuery(key: string, queryKey: string, query: Query): Query; doesNotMatchQuery(key: string, query: Query): Query; - each(callback: Function, options?: ParseDefaultOptions): Promise; + each(callback: Function, options?: BackboneStyleOptions): Promise; endsWith(key: string, suffix: string): Query; equalTo(key: string, value: any): Query; exists(key: string): Query; - find(options?: ParseDefaultOptions): Promise; - first(options?: ParseDefaultOptions): Promise; - get(objectId: string, options?: ParseDefaultOptions): Promise; + find(options?: Query.FindOptions): Promise; + first(options?: Query.FirstOptions): Promise; + get(objectId: string, options?: Query.GetOptions): Promise; greaterThan(key: string, value: any): Query; greaterThanOrEqualTo(key: string, value: any): Query; include(key: string): Query; @@ -588,6 +612,13 @@ declare module Parse { withinRadians(key: string, point: GeoPoint, maxDistance: number): Query; } + namespace Query { + interface CountOptions extends BackboneStyleOptions, UseMasterKeyOption { } + interface FindOptions extends BackboneStyleOptions, UseMasterKeyOption { } + interface FirstOptions extends BackboneStyleOptions, UseMasterKeyOption { } + interface GetOptions extends BackboneStyleOptions, UseMasterKeyOption { } + } + /** * Represents a Role on the Parse server. Roles represent groupings of * Users for the purposes of granting permissions (e.g. specifying an ACL @@ -608,7 +639,7 @@ declare module Parse { getRoles(): Relation; getUsers(): Relation; getName(): string; - setName(name: string, options?: ParseDefaultOptions): any; + setName(name: string, options?: BackboneStyleOptions): any; } /** @@ -624,17 +655,31 @@ declare module Parse { */ class Router extends Events { - routes: any[]; + routes: Router.RouteMap; - constructor(options?: RouterOptions); + constructor(options?: Router.Options); static extend(instanceProps: any, classProps: any): any; initialize(): void; - navigate(fragment: string, options?: NavigateOptions): Router; + navigate(fragment: string, options?: Router.NavigateOptions): Router; navigate(fragment: string, trigger?: boolean): Router; route(route: string, name: string, callback: Function): Router; } + namespace Router { + interface Options { + routes: RouteMap; + } + + interface RouteMap { + [url: string]: string; + } + + interface NavigateOptions { + trigger?: boolean; + } + } + /** * @class * @@ -647,27 +692,27 @@ declare module Parse { class User extends Object { static current(): User; - static signUp(username: string, password: string, attrs: any, options?: ParseDefaultOptions): Promise; - static logIn(username: string, password: string, options?: ParseDefaultOptions): Promise; + static signUp(username: string, password: string, attrs: any, options?: BackboneStyleOptions): Promise; + static logIn(username: string, password: string, options?: BackboneStyleOptions): Promise; static logOut(): Promise; static allowCustomUserClass(isAllowed: boolean): void; - static become(sessionToken: string, options?: ParseDefaultOptions): Promise; - static requestPasswordReset(email: string, options?: ParseDefaultOptions): Promise; + static become(sessionToken: string, options?: BackboneStyleOptions): Promise; + static requestPasswordReset(email: string, options?: BackboneStyleOptions): Promise; - signUp(attrs: any, options?: ParseDefaultOptions): Promise; - logIn(options?: ParseDefaultOptions): Promise; - fetch(options?: ParseDefaultOptions): Promise; + signUp(attrs: any, options?: BackboneStyleOptions): Promise; + logIn(options?: BackboneStyleOptions): Promise; + fetch(options?: BackboneStyleOptions): Promise; save(arg1: any, arg2: any, arg3: any): Promise; authenticated(): boolean; isCurrent(): boolean; getEmail(): string; - setEmail(email: string, options: ParseDefaultOptions): boolean; + setEmail(email: string, options: BackboneStyleOptions): boolean; getUsername(): string; - setUsername(username: string, options?: ParseDefaultOptions): boolean; + setUsername(username: string, options?: BackboneStyleOptions): boolean; - setPassword(password: string, options?: ParseDefaultOptions): boolean; + setPassword(password: string, options?: BackboneStyleOptions): boolean; getSessionToken(): string; } @@ -695,7 +740,7 @@ declare module Parse { $el: JQuery; attributes: any; - constructor(options?: ViewOptions); + constructor(options?: View.Options); static extend(properties: any, classProperties?: any): any; @@ -704,12 +749,28 @@ declare module Parse { setElement(element: JQuery, delegate?: boolean): View; render(): View; remove(): View; - make(tagName: any, attributes?: any, content?: any): any; + make(tagName: any, attributes?: View.Attribute[], content?: any): any; delegateEvents(events?: any): any; undelegateEvents(): any; } + namespace View { + interface Options { + model?: any; + collection?: any; + el?: any; + id?: string; + className?: string; + tagName?: string; + attributes?: Attribute[]; + } + + interface Attribute { + [attributeName: string]: string | number | boolean; + } + } + module Analytics { function track(name: string, dimensions: any):Promise; @@ -724,9 +785,9 @@ declare module Parse { function init(options?: any): void; function isLinked(user: User): boolean; - function link(user: User, permissions: any, options?: ParseDefaultOptions): void; - function logIn(permissions: any, options?: ParseDefaultOptions): void; - function unlink(user: User, options?: ParseDefaultOptions): void; + function link(user: User, permissions: any, options?: BackboneStyleOptions): void; + function logIn(permissions: any, options?: BackboneStyleOptions): void; + function unlink(user: User, options?: BackboneStyleOptions): void; } /** @@ -796,10 +857,46 @@ declare module Parse { function beforeDelete(arg1: any, func?: (request: BeforeDeleteRequest, response: BeforeDeleteResponse) => void): void; function beforeSave(arg1: any, func?: (request: BeforeSaveRequest, response: BeforeSaveResponse) => void): void; function define(name: string, func?: (request: FunctionRequest, response: FunctionResponse) => void): void; - function httpRequest(options: ParseDefaultOptions): Promise; + function httpRequest(options: HTTPOptions): Promise; function job(name: string, func?: (request: JobRequest, status: JobStatus) => void): HttpResponse; - function run(name: string, data?: any, options?: ParseDefaultOptions): Promise; + function run(name: string, data?: any, options?: BackboneStyleOptions): Promise; function useMasterKey(): void; + + /** + * To use this Cloud Module in Cloud Code, you must require 'buffer' in your JavaScript file. + * + * import Buffer = require("buffer").Buffer; + */ + let HTTPOptions: { + new (): HTTPOptions; + }; + interface HTTPOptions extends FunctionResponse { + /** + * The body of the request. + * If it is a JSON object, then the Content-Type set in the headers must be application/x-www-form-urlencoded or application/json. + * You can also set this to a Buffer object to send raw bytes. + * If you use a Buffer, you should also set the Content-Type header explicitly to describe what these bytes represent. + */ + body?: string | Buffer | Object; + /** + * Defaults to 'false'. + */ + followRedirects?: boolean; + /** + * The headers for the request. + */ + headers?: { + [headerName: string]: string | number | boolean; + }; + /** + *The method of the request (i.e GET, POST, etc). + */ + method?: string; + /** + * The url to send the request to. + */ + url: string; + } } @@ -919,8 +1016,25 @@ declare module Parse { * @namespace */ module Push { + function send(data: PushData, options?: SendOptions): Promise; - function send(data: PushData, options?: ParseDefaultOptions):Promise; + interface PushData { + channels?: string[]; + push_time?: Date; + expiration_time?: Date; + expiration_interval?: number; + where?: Query; + data?: any; + alert?: string; + badge?: string; + sound?: string; + title?: string; + } + + interface SendOptions { + success?: () => void; + error?: (error: Error) => void; + } } /**