UNPKG

typescript-closure-tools

Version:

Command-line tools to convert closure-style JSDoc annotations to typescript, and to convert typescript sources to closure externs files

605 lines (539 loc) 17.7 kB
// Type definitions for Meteor 0.6.5 // Project: http://www.meteor.com/ // Definitions by: Dave Allen <https://github.com/fullflavedave> // Definitions: https://github.com/borisyankov/DefinitelyTyped interface IMeteor { /******** * Core * ********/ isClient: boolean; isServer: boolean; startup(func: Function): void; absoluteUrl(path: string, options: { secure?: boolean; replaceLocalhost?: boolean; rootUrl?: string; }): void; settings: Object; release: string; /************************* * Publish and Subscribe * *************************/ /** * Publish a record set. * * @param name Name of the attribute set. If null, the set has no name, and the record set is * automatically sent to all connected clients. * @param func Function called on the server each time a client subscribes. Inside the function, * this is the publish handler object, described below. If the client passed arguments * to subscribe, the function is called with the same arguments. */ publish(name: string, func: Function): any; //Todo: Figure out a way to define this.userId, this.added, this.changed, etc that can be called from within publish /** * Subscribe to a record set. Returns a handle that provides stop() and ready() methods. * * @param name Name of the subscription. Matches name of server's publish() call. * @param arg1,arg2,arg3 Optional arguments passed to publisher function on server. * @param callbacks Optional. May include onError and onReady callbacks. Can be Object or Function. If a function * is passed instead of an object, it is interpreted as an onReady callback. */ subscribe(name: string, arg1?: any, arg2?: any, ars3?: any, arg4?: any, callbacks?: Object): IMeteorHandle; /*********** * Methods * ***********/ methods(methods: Object): void; Error(error: number, reason?: string, details?: string): void; // DA: Really should be defined like this: call(name: string, ...args?: any[], asyncCallback?: Function): void; // But typescript does not allow Rest parameter (..args) to not be the last parameter defined call(name: string, param1?: Object, param2?: Object, param3?: Object, param4?: Object, asyncCallback?: Function): void; apply(name: string, options: any[], asyncCallback?: Function): void; defer(callback: Function): void; /********************* * ServerConnections * *********************/ status(): { connected: boolean; status: string; retryCount: number; retryTime: number; reason: string; }; reconnect(): void; disconnect(): void; /*************** * Collections * ***************/ Collection(name: string, options?: { connection?: Object; idGeneration?: string; transform?: Function; }): void; /************ * Accounts * ************/ user(): IMeteorUser; userId(): string; users: IMeteorUserCollection; loggingIn(): boolean; logout(callback?: Function): void; loginWithPassword(user: Object, password: string, callback?: Function): void; loginWithExternalService(options?: { requestPermissions?: string[]; requestOfflineToken?: boolean; forceApprovalPrompt?: boolean; }, callback?: Function): void; loginWithFacebook(options?: { requestPermissions?: string[]; requestOfflineToken?: boolean; forceApprovalPrompt?: boolean; }, callback?: Function): void; loginWithGithub(options?: { requestPermissions?: string[]; requestOfflineToken?: boolean; forceApprovalPrompt?: boolean; }, callback?: Function): void; loginWithGoogle(options?: { requestPermissions?: string[]; requestOfflineToken?: boolean; forceApprovalPrompt?: boolean; }, callback?: Function): void; loginWithMeetup(options?: { requestPermissions?: string[]; requestOfflineToken?: boolean; forceApprovalPrompt?: boolean; }, callback?: Function): void; loginWithTwitter(options?: { requestPermissions?: string[]; requestOfflineToken?: boolean; forceApprovalPrompt?: boolean; }, callback?: Function): void; loginWithWeibo(options?: { requestPermissions?: string[]; requestOfflineToken?: boolean; forceApprovalPrompt?: boolean; }, callback?: Function): void; /************* * Templates * *************/ render(htmlFunc: Function): DocumentFragment; renderList(observable: IMeteorCursor, docFunc: Function, elseFunc?: Function): DocumentFragment; /********** * Timers * **********/ setTimeout(func: Function, delay: number): void; setInterval(func: Function, delay: number): void; clearTimeout(id: number): void; clearInterval(id: number): void; /******************** Begin definitions for contributed packages from Atmosphere (or elsewhere) *******************/ /************************************************** * For Paginated-Subscription contributed package * **************************************************/ subscribeWithPagination(collection: string, limit: number): IMeteorHandle; Template(): void; /************************************************* * For Router or Iron-Router contributed package * *************************************************/ Router: IMeteorRouter; /********************************* * For Error contributed package * *********************************/ Errors: IMeteorErrors; /******************** End definitions for contributed packages from Atmosphere (or elsewhere) *********************/ } // End Meteor.someFunction definitions /*************** * Collections * ***************/ interface IMeteorCollection { find(selector?, options?: Object): IMeteorCursor; findOne(selector, options?: Object): any; insert(doc: Object, callback?: Function): string; update(selector, modifier, options?: Object, callback?: Function): void; remove(selector, callback?: Function): void; allow(options: Object): boolean; deny(options: Object): boolean; ObjectID(hexString?: string): Object; } interface IMeteorCursor { forEach(callback: Function): void; map(callback: Function): void; fetch(): any[]; count(): number; rewind(): void; observe(callbacks: Object): void; observeChanges(callbacks: Object): void; } /************* * Templates * *************/ /** * To use Meteor's Template.templateName.function, you must define an interface in a separate file with * extension ".d.ts". Within the interface, every template name must have a property by that name that * is of type IMeteorViewModel or IMeteorManager (choose either depending on your philosophical * preference -- both work the same) * e.g. file ".../client/views/view-model-types.d.ts": * * interface ITemplate { * postsList: IMeteorViewModel; * comment: IMeteorViewModel; * notifications: IMeteorViewModel; * [your template name]: IMeteorViewModel; * } * declare var Template: ITemplate; */ interface IMeteorViewModel { rendered(callback: Function): void; created(callback: Function): void; destroyed(callback: Function): void; events(eventMap: {[eventName: string]: Function;}): void; helpers(helpers: Object): void; preserve(selector: Object): void; } interface IMeteorManager { rendered(callback: Function): void; created(callback: Function): void; destroyed(callback: Function): void; events(eventMap: {[eventType: string]: Function;}): void; helpers(helpers: Object): any; preserve(selector: Object): void; } // DA: Currently not used, but I'd like to figure out a way to define the function signature // for teh callbacks in IMeteorViewModel, IMeteorManager, and many other interfaces interface IMeteorEvent { type?: MeteorEventType.Value; target?: Element; currentTarget?: Element; which?: number; stopPropogation(): void; stopImmediatePropogation(): void; preventDefault(): void; isPropogationStopped(): boolean; isImmediatePropogationStopped(): boolean; isDefaultPrevented(): boolean; } declare module MeteorEventType { export enum Value {'click', 'dblclick', 'focus', 'blur', 'change', 'mouseenter', 'mouseleave', 'mousedown', 'mouseup', 'keydown', 'keypress', 'keyup', 'tap'} } /*********** * Session * ***********/ interface IMeteorSession { set(key: string, value: Object): void; setDefault(key: string, value: Object): void; get(key: string): Object; equals(key: string, value: any): void; } interface IMeteorHandle { loaded(): number; limit(): number; ready(): boolean; loadNextPage(): void; } /************************** * Accounts and Passwords * **************************/ interface IMeteorUser { _id?: string; username?: string; emails?: { address: string; verified: boolean; }; profile?: any; services?: any; createdAt?: number; } interface IMeteorUserCollection { find(selector?, options?: Object): IMeteorCursor; findOne(selector, options?: Object): IMeteorUser; insert(doc: IMeteorUser, callback?: Function): IMeteorUser; update(selector, modifier, options?: Object, callback?: Function): void; remove(selector, callback?: Function): void; allow(options: Object): boolean; deny(options: Object): boolean; ObjectID(hexString?: string): Object; } interface IMeteorAccounts { config(options: { sendVerificationEmail?: boolean; forbidClientAccountCreation?: boolean; }): void; ui: { config(options: { requestPermissions?: Object; requestOfflineToken?: Object; passwordSignupFields?: string; }); }; validateNewUser(func: Function): void; onCreateUser(func: Function): void; createUser(options: { username?: string; email?: string; password?: string; profile?: string; }, callback?: Function): void; changePassword(oldPassword: string, newPassword: string, callback?: Function): void; forgotPassword(options: { email: string; }, callback?: Function): void; resetPassword(token: string, newPassword: string, callback?: Function): void; setPassword(userId: string, newPassword: string): void; verifyEmail(token: string, callback?: Function): void; sendResetPasswordEmail(userId: string, email?: string): void; sendEnrollmentEmail(userId: string, email?: string): void; sendVerificationEmail(userId: string, email?: string): void; emailTemplates: { from: string; siteName: string; resetPassword: IMeteorEmailValues; enrollAccount: IMeteorEmailValues; verifyEmail: IMeteorEmailValues; }; // DA: I didn't see the signature for this, but it appears in the examples loginServiceConfiguration: { remove(options: Object): void; insert(options: Object): void; }; } interface IMeteorEmailValues { subject?: Function; text?: Function; } interface IMeteorMatch { test(value: any, pattern: any): boolean; Any; String; Number; Boolean; undefined; null; Integer; ObjectIncluding; Object; Optional(pattern: string); OneOf(...args: string[]); Where(condition: boolean); } interface IExternalServiceParams { options?: { requestPermissions?: string[]; requestOfflineToken?: boolean; forceApprovalPrompt?: boolean; }; callback?: Function; } /******** * Deps * ********/ interface IMeteorDeps { autorun(runFunc: Function): IMeteorComputationObject; flush(): void; nonreactive(func: Function): void; active: boolean; currentComputation: IMeteorComputationObject; onInvalidate(callback: Function): void; afterFlush(callback: Function): void; /** * @constructor */ Computation(): void; /** * @constructor */ Dependency(): void; } interface IMeteorComputationObject { stop(): void; invalidate(): void; onInvalidate(callback: Function): void; stopped: boolean; invalidated: boolean; firstRun: boolean; } interface IMeteorDependencyObject { changed(): void; depend(fromComputation?: IMeteorComputationObject): boolean; hasDependents(): boolean; } /********* * EJSON * *********/ interface IMeteorEJSON { parse(str: string): void; stringify(val: any): string; fromJSONValue(val): any; toJSONValue(val): JSON; equals(any: any): boolean; clone(val: any): any; newBinary(size: number): void; isBinary(x: any): boolean; addType(name: string, factory: Function): void; } /**************** * HTTP package * ****************/ interface IMeteorHTTP { call(method: string, url: string, options: { content?: string; data?: Object; query?: string; params?: Object; auth?: string; headers?: Object; timeout?: number; followRedirects?: boolean; }, asyncCallback?: Function): IMeteorHTTPResult; get(url: string, options?: { content?: string; data?: Object; query?: string; params?: Object; auth?: string; headers?: Object; timeout?: number; followRedirects?: boolean; }, asyncCallback?: Function): IMeteorHTTPResult; post(url: string, options?: { content?: string; data?: Object; query?: string; params?: Object; auth?: string; headers?: Object; timeout?: number; followRedirects?: boolean; }, asyncCallback?: Function): IMeteorHTTPResult; put(url: string, options?: { content?: string; data?: Object; query?: string; params?: Object; auth?: string; headers?: Object; timeout?: number; followRedirects?: boolean; }, asyncCallback?: Function): IMeteorHTTPResult; del(url: string, options?: { content?: string; data?: Object; query?: string; params?: Object; auth?: string; headers?: Object; timeout?: number; followRedirects?: boolean; }, asyncCallback?: Function): IMeteorHTTPResult; } // DA: Currently not used // I would like to figure out a way to specify this as type for options for IMeteorHTTP methods. // Tests don't work if I simply specify this interface as the type. interface IMeteorHTTPCallOptions { content?: string; data?: Object; query?: string; params?: Object; auth?: string; headers?: Object; timeout?: number; followRedirects?: boolean; } interface IMeteorHTTPResult { statusCode: number; content: string; data?: JSON; headers: Object; } /********* * Email * *********/ interface IMeteorEmail { send(options: { from?: string; to: any; cc?: any; bcc?: any; replyTo?: any; subject?: string; text?: string; html?: string; headers?: Object; }): void; } /********** * Assets * **********/ interface IMeteorAssets { getText(assetPath: string, asyncCallback?: Function): string; getBinary(assetPath: string, asyncCallback?: Function): any; } /******* * DPP * *******/ interface IMeteorDPP { connect(url: string): void; } declare var Meteor: IMeteor; declare var Collection: IMeteorCollection; declare var Session: IMeteorSession; declare var Deps: IMeteorDeps; declare var Accounts: IMeteorAccounts; declare var Match: IMeteorMatch; declare function check(value: any, pattern: any): void; declare var Computation: IMeteorComputationObject; declare var Dependency: IMeteorDependencyObject; declare var EJSON: IMeteorEJSON; declare var HTTP: IMeteorHTTP; declare var Email: IMeteorEmail; declare var Assets: IMeteorAssets; declare var DPP: IMeteorDPP; declare function changed(collection: string, id: string, fields, Object): void; /******************** Begin definitions for contributed packages from Atmosphere (or elsewhere) *********************/ /*************************************************** * For Router and Iron-Router contributed packages * ***************************************************/ interface IMeteorRouter { // These are for Router page(): void; add(route: Object): void; to(path: string, ...args: any[]): void; filters(filtersMap: Object); filter(filterName: string, options?: Object); // These are for Iron-Router map(routeMap: Function): void; path(route: string, params?: Object): void; url(route: string): void; routes: Object; configure(options: IMeteorRouterConfig): void; } // For Iron-Router interface IMeteorRouterConfig { layout: string; notFoundTemplate: string; loadingTemplate: string; renderTemplates: Object; } interface IMeteorErrors { throw(message: string): void; clear(): void; } // For Router and Iron-Router contributed packages declare var Router: IMeteorRouter; /******************** End definitions for contributed packages from Atmosphere (or elsewhere) ***********************/ /** * Todo: * Define "this.function" functions. * Define the signatures of callback functions and other functions. ***/