65 lines
1.5 KiB
TypeScript
65 lines
1.5 KiB
TypeScript
|
// 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.
|
||
|
*
|
||
|
* ```
|
||
|
* import * as IsEmail from "isemail";
|
||
|
*
|
||
|
* IsEmail.validate("test@e.com");
|
||
|
* // => true
|
||
|
* ```
|
||
|
*/
|
||
|
validate(email: string): boolean;
|
||
|
|
||
|
/**
|
||
|
* Check that an email address conforms to RFCs 5321, 5322, 6530 and others.
|
||
|
*
|
||
|
* ```
|
||
|
* 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.
|
||
|
*
|
||
|
* ```
|
||
|
* 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;
|