diff --git a/lib/index.d.ts b/lib/index.d.ts new file mode 100644 index 0000000..2466562 --- /dev/null +++ b/lib/index.d.ts @@ -0,0 +1,74 @@ +// Code shows a string is valid, +// but docs require string array or object. +type TLDList = string | string[] | { [topLevelDomain: string]: any }; + +type BaseOptions = { + tldWhitelist?: TLDList; + tldBlacklist?: TLDList; + minDomainAtoms?: number; + allowUnicode?: boolean; +}; + +type OptionsWithBool = BaseOptions & { + errorLevel?: false; +}; + +type OptionsWithNumThreshold = BaseOptions & { + errorLevel?: true | number; +}; + +interface Validator { + /** + * Check that an email address conforms to RFCs 5321, 5322, 6530 and others. + * + * The callback function will always be called + * with the result of the operation. + * + * ``` + * import * as IsEmail from "isemail"; + * + * const log = result => console.log(`Result: ${result}`); + * IsEmail.validate("test@e.com"); + * // => true + * ``` + */ + validate(email: string): boolean; + + /** + * Check that an email address conforms to RFCs 5321, 5322, 6530 and others. + * + * The callback function will always be called + * with the result of the operation. + * + * ``` + * import * as IsEmail from "isemail"; + * + * IsEmail.validate("test@iana.org", { errorLevel: false }); + * // => true + * ``` + */ + validate(email: string, options: OptionsWithBool): boolean; + + /** + * Check that an email address conforms to RFCs 5321, 5322, 6530 and others. + * + * The callback function will always be called + * with the result of the operation. + * + * ``` + * import * as IsEmail from "isemail"; + * + * IsEmail.validate("test@iana.org", { errorLevel: true }); + * // => 0 + * IsEmail.validate("test @e.com", { errorLevel: 50 }); + * // => 0 + * IsEmail.validate('test @e.com', { errorLevel: true }) + * // => 49 + * ``` + */ + validate(email: string, options: OptionsWithNumThreshold): number; +} + +declare const IsEmail: Validator; + +export = IsEmail; diff --git a/package.json b/package.json index 1d876c6..5109a30 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "version": "3.1.0", "repository": "git://github.com/hapijs/isemail", "main": "lib/index.js", + "types": "lib/index.d.ts", "keywords": [ "isemail", "validation",