diff --git a/mailcheck/mailcheck-tests.ts b/mailcheck/mailcheck-tests.ts new file mode 100644 index 000000000..85a7b2fad --- /dev/null +++ b/mailcheck/mailcheck-tests.ts @@ -0,0 +1,54 @@ +/// +/// + +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): void { + // a string distance algorithm of your choosing +}; + +$('#email').on('blur', function() { + $(this).mailcheck({ + domains: domains, // optional + secondLevelDomains: secondLevelDomains, // optional + topLevelDomains: topLevelDomains, // optional + distanceFunction: superStringDistance, // optional + suggested: function(element, suggestion) { + // callback code + }, + empty: function(element) { + // callback code + } + }); +}); + +Mailcheck.run({ + domains: domains, // optional + secondLevelDomains: secondLevelDomains, // optional + topLevelDomains: topLevelDomains, // optional + distanceFunction: superStringDistance, // optional + suggested: function(suggestion) { + // callback code + }, + empty: function() { + // callback code + } +}); + +MC.run({ + domains: domains, // optional + secondLevelDomains: secondLevelDomains, // optional + topLevelDomains: topLevelDomains, // optional + distanceFunction: superStringDistance, // optional + suggested: function(suggested) { + // 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..b2811148a --- /dev/null +++ b/mailcheck/mailcheck.d.ts @@ -0,0 +1,75 @@ +// 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 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; + empty?: () => void; + } + + export interface IJQueryOptions extends IOptions { + suggested?: IJQuerySuggested; + empty?: (element: JQuery) => void; + } + + 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.IJQueryOptions): void; +} + +declare module 'mailcheck' { + export = Mailcheck; +} \ No newline at end of file