diff --git a/mailcheck/mailcheck-tests.ts b/mailcheck/mailcheck-tests.ts new file mode 100644 index 000000000..4a5caa12a --- /dev/null +++ b/mailcheck/mailcheck-tests.ts @@ -0,0 +1,55 @@ +/// +/// + +import MC = require('mailcheck'); + +var domains = ['gmail.com', 'aol.com']; +var secondLevelDomains = ['hotmail'] +var topLevelDomains = ["com", "net", "org"]; + +var superStringDistance = function(string1: string, string2: string): number { + // a string distance algorithm of your choosing + return 0; +}; + +$('#email').on('blur', function() { + $(this).mailcheck({ + domains: domains, // optional + secondLevelDomains: secondLevelDomains, // optional + topLevelDomains: topLevelDomains, // optional + distanceFunction: superStringDistance, // optional + suggested: function(element: JQuery, suggestion: MailcheckModule.ISuggestion) { + // callback code + }, + empty: function(element: JQuery) { + // callback code + } + }); +}); + +Mailcheck.run({ + domains: domains, // optional + secondLevelDomains: secondLevelDomains, // optional + topLevelDomains: topLevelDomains, // optional + distanceFunction: superStringDistance, // optional + suggested: function(suggestion: MailcheckModule.ISuggestion) { + // callback code + }, + empty: function() { + // callback code + } +}); + +MC.run({ + domains: domains, // optional + secondLevelDomains: secondLevelDomains, // optional + topLevelDomains: topLevelDomains, // optional + distanceFunction: superStringDistance, // optional + suggested: function(suggested: MailcheckModule.ISuggestion) { + // callback code + suggested.address === '' && suggested.full === '' && suggested.domain === ''; + }, + empty: function() { + // callback code + } +}); \ No newline at end of file diff --git a/mailcheck/mailcheck.d.ts b/mailcheck/mailcheck.d.ts new file mode 100644 index 000000000..c6f28d0db --- /dev/null +++ b/mailcheck/mailcheck.d.ts @@ -0,0 +1,78 @@ +// Type definitions for Mailcheck 1.1+ +// Project: https://github.com/mailcheck/mailcheck +// Definitions by: Paulo Cesar +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare var Mailcheck: MailcheckModule.Static; + +declare module MailcheckModule { + + export interface IDistanceFunction { + (s1: string, s2: string): number; + } + + export interface ISuggestFunction { + (email: string, domains?: string[], topLevelDomains?: string[], distanceFunction?: IDistanceFunction):void; + } + + export interface IJQuerySuggested { + (element: JQuery, suggested: ISuggestion): void; + } + + export interface IJQueryEmpty { + (element: JQuery): void; + } + + export interface IEmpty { + (): void; + } + + export interface ISuggested { + (suggested: ISuggestion): void; + } + + export interface ISplitEmail { + topLevelDomain?: string; + domain?: string; + address?: string; + } + + export interface ISuggestion { + address: string; + domain: string; + full: string; + } + + export interface IOptions { + domains?: string[]; + topLevelDomains?: string[]; + distanceFunction?: IDistanceFunction; + suggested?: ISuggested | IJQuerySuggested; + empty?: IEmpty | IJQueryEmpty; + } + + export interface Static { + defaultDomains: string[]; + defaultSecondLevelDomains: string[]; + defaultTopLevelDomains: string[]; + domainThreshold: number; + topLevelThreshold: number; + run(opts: IOptions):void; + suggest: ISuggestFunction; + encodeEmail(email: string): string; + splitEmail(email: string): ISplitEmail; + sift3Distance(s1: string, s2: string): number; + findClosestDomain(domain: string, domains: string[], distanceFunction?: IDistanceFunction, threshold?: number): boolean|string; + } + +} + +interface JQuery { + mailcheck(opts: MailcheckModule.IOptions): void; +} + +declare module 'mailcheck' { + export = Mailcheck; +} \ No newline at end of file