Merge pull request #5367 from cyrilschumacher/master

Add definitions for maildev, node-schedule and update definition express.
This commit is contained in:
Masahiro Wakame
2015-08-17 23:10:06 +09:00
5 changed files with 448 additions and 0 deletions
+2
View File
@@ -40,6 +40,7 @@ declare module "express" {
delete(...handler: RequestHandler[]): IRoute;
patch(...handler: RequestHandler[]): IRoute;
options(...handler: RequestHandler[]): IRoute;
head(...handler: RequestHandler[]): IRoute;
}
interface IRouterMatcher<T> {
@@ -97,6 +98,7 @@ declare module "express" {
delete: IRouterMatcher<T>;
patch: IRouterMatcher<T>;
options: IRouterMatcher<T>;
head: IRouterMatcher<T>;
route(path: string): IRoute;
+13
View File
@@ -0,0 +1,13 @@
/// <reference path="maildev.d.ts"/>
import MailDev = require("maildev")
var options: MailDevOptions = {smtp: 1025};
var maildev = new MailDev(options);
var errorCallback = (error: Error): void => {};
maildev.listen(errorCallback);
var eventName = 'new';
var emailCallback = (email: Object): void => {};
maildev.on(eventName, emailCallback)
+155
View File
@@ -0,0 +1,155 @@
// Type definitions for maildev 0.11.0
// Project: https://github.com/djfarrelly/maildev
// Definitions by: Cyril Schumacher <https://github.com/cyrilschumacher/>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="../node/node.d.ts"/>
/**
* Interface for {@link MailDev} options.
*/
interface MailDevOptions {
/**
* SMTP host for outgoing emails
*
* @type {string}
*/
outgoingHost?: string;
/**
* SMTP password for outgoing emails
*
* @type {string}
*/
outgoingPass?: string;
/**
* SMTP port for outgoing emails.
*
* @type {number}
*/
outgoingPort?: number;
/**
* SMTP user for outgoing emails
*
* @type {string}
*/
outgoingUser?: string;
/**
* SMTP port to catch emails.
*
* @type {number}
*/
smtp?: number;
}
/**
* Interface for mail.
*/
interface Mail {
/**
* Identifier.
*/
id?: string;
/**
* Client.
*/
envelope?: Object;
}
declare module "maildev" {
import fs = require("fs");
/**
* Interface for {@link MailDev}.
*/
class MailDev {
/**
* Constructor.
*
* @public
* @param {MailDevOptions} options The options.
*/
constructor(options: MailDevOptions);
/**
* Deletes a given email by identifier.
*
* @public
* @param {string} id The email identifier.
* @param {Function} callback The error callback.
*/
deleteEmail(id: string, callback?: (error: Error) => void): void;
/**
* Deletes all email and their attachments.
*
* @public
* @param {Function} callback The error callback.
*/
deleteAllEmail(callback?: (error: Error) => void): void;
/**
* Stops the SMTP server.
*
* @public
* @param {Function} callback The error callback.
*/
end(callback?: (error: Error) => void): void;
/**
* Accepts e-mail identifier, returns email object.
*
* @public
* @param {string} id The e-mail identifier.
* @param {Function} callback The error callback.
*/
getEmail(id: string, callback?: (error: Error) => void): void;
/**
* Returns a readable stream of the raw e-mail.
*
* @public
* @param {string} id The e-mail identifier.
*/
getRawEmail(id: string, callback?: (error: Error, readStream: fs.ReadStream) => void): void;
/**
* Returns array of all e-mail.
* @public
*/
getAllEmail(done: (error: Error, emails: Array<Object>) => void): void;
/**
* Starts the SMTP server.
*
* @public
* @param {Function} callback The error callback.
*/
listen(callback?: (error: Error) => void): void;
/**
* Event called when a new e-mail is received. Callback receives single mail object.
*
* @public
* @param {string} eventName The event name.
* @param {Function} email The email.
*/
on(eventName: string, callback: (email: Object) => void): void;
/**
* Relay the e-mail.
*
* @param {string} idOrMailObject The identifier or mail object.
* @param {Function} done The callback.
*/
relayMail(idOrMailObject: string, done: (error: Error) => void): void;
}
var out: typeof MailDev;
export = out;
}
+79
View File
@@ -0,0 +1,79 @@
/// <reference path="node-schedule.d.ts"/>
import nodeSchedule = require("node-schedule");
/**
* Test for {@link Job} class.
*/
function testJob() {
var name: string = '';
var job: Function = null;
var callback: Function = null;
new nodeSchedule.Job(job, callback);
new nodeSchedule.Job(name, job, callback);
}
/**
* Test for {@link Range} class.
*/
function testRange() {
var range = new nodeSchedule.Range(0);
var twoParametersRange = new nodeSchedule.Range(0, 0);
var threeParametersRange = new nodeSchedule.Range(0, 0, 0);
var contained: boolean = range.contains(0);
}
/**
* Test for {@link RecurrenceRule} class.
*/
function testRecurrenceRule() {
var range = new nodeSchedule.Range(0, 0, 0);
var rule: nodeSchedule.RecurrenceRule = {
date: 0,
dayOfWeek: [0, range],
hour: 0,
minute: 0,
month: 0,
second: 0,
year: 0
}
}
/**
* Test for {@link Invocation} class.
*/
function testInvocation() {
var job = new nodeSchedule.Job();
var fireDate = new Date();
var rule: nodeSchedule.RecurrenceRule = {};
var invocation = new nodeSchedule.Invocation(job, fireDate, rule);
invocation.timerID = 0;
}
/**
* Test for {@link ScheduleJob} class.
*/
function testScheduleJob() {
var callback: Function = null;
nodeSchedule.scheduleJob('', callback);
var rule: nodeSchedule.RecurrenceRule = {};
nodeSchedule.scheduleJob(rule, callback);
var date: Date = new Date();
nodeSchedule.scheduleJob(date, callback);
var date: Date = new Date();
nodeSchedule.scheduleJob(date, callback);
}
/**
* Test for {@link cancelJob} function.
*/
function testCancelJob() {
var job = new nodeSchedule.Job();
nodeSchedule.cancelJob(job);
}
+199
View File
@@ -0,0 +1,199 @@
// Type definitions for node-schedule
// Project: https://github.com/tejasmanohar/node-schedule/
// Definitions by: Cyril Schumacher <https://github.com/cyrilschumacher>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare module "node-schedule" {
import nodeSchedule = require('node-schedule');
/**
* Recurrence rules.
*/
export interface RecurrenceRule {
/**
* Day of the month.
*
* @public
* @type {number}
*/
date?: number;
/**
* Day of the week.
*
* @public
* @type {number|Array<number|Range>}
*/
dayOfWeek?: number|Array<number|Range>;
/**
* Hour.
*
* @public
* @type {number}
*/
hour?: number;
/**
* Minute.
*
* @public
* @type {number}
*/
minute?: number;
/**
* Month.
*
* @public
* @type {number}
*/
month?: number;
/**
* Second.
*
* @public
* @type {number}
*/
second?: number;
/**
* Year.
*
* @public
* @type {number}
*/
year?: number;
}
/**
* Range.
*
* @class
*/
export class Range {
/**
* Constructor.
*
* @constructor
* @param {number} start The start.
* @param {end} end The end.
* @param {step} step The step.
*/
constructor(start?: number, end?: number, step?: number);
/**
* Return a {boolean} if the class contains the specified value.
*
* @param {number} value The value.
* @returns {boolean} {true} if the class contains the specified value, otherwise, {false}.
*/
contains(value: number): boolean;
}
/**
* Scheduler jobs.
*
* @class
*/
export class Job {
/**
* Constructor.
*
* @constructor
* @param {RecurrenceRule} rule The rule.
* @param {callback} callback The callback.
*/
constructor(name?: string, job?: Function, callback?: Function);
/**
* Constructor.
*
* @constructor
* @param {RecurrenceRule} rule The rule.
* @param
*/
constructor(job?: Function, callback?: Function);
/**
* Attach an event handler function.
*
* @public
* @param {string} eventName The event name.
* @param {Function} handler The function to execute when the event is triggered.
*/
on(eventName: string, handler: Function): void;
/**
*
* @public
*/
schedule(date: Date): void;
}
/**
* Invocation.
*
* @class
*/
export class Invocation {
/**
* Fire date.
*
* @public
* @type {Date}
*/
public fireDate: Date;
/**
* Job.
*
* @public
* @type {Job}
*/
public job: Job;
/**
* Recurrence rule.
*
* @public
* @type {RecurrenceRule}
*/
public recurrenceRule: RecurrenceRule;
/**
* Timer identifier.
*
* @public
* @type {number}
*/
public timerID: number;
/**
* Constructor.
*
* @constructor
* @param {Job} job The job.
* @param {Date} fireDate The fire date.
* @param {RecurrenceRule} recurrenceRule The recurrence rule.
*/
constructor(job: Job, fireDate: Date, recurrenceRule: RecurrenceRule);
}
/**
* Cancels the job.
*
* @param {Job} job The job.
* @returns {boolean} {true} if the job has been cancelled with success, otherwise, {false}.
*/
export function cancelJob(job: Job): boolean;
/**
* Create a schedule job.
*
* @param {RecurrenceRule} rule The rule.
* @param {Function} callback The callback.
*/
export function scheduleJob(rule: RecurrenceRule|Date|string, callback: Function): void;
}