You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
255 lines
5.5 KiB
255 lines
5.5 KiB
/// <reference types="node" /> |
|
|
|
import * as Hoek from '@hapi/hoek'; |
|
|
|
|
|
export namespace domain { |
|
|
|
/** |
|
* Analyzes a string to verify it is a valid domain name. |
|
* |
|
* @param domain - the domain name to validate. |
|
* @param options - optional settings. |
|
* |
|
* @return - undefined when valid, otherwise an object with single error key with a string message value. |
|
*/ |
|
function analyze(domain: string, options?: Options): Analysis | null; |
|
|
|
/** |
|
* Analyzes a string to verify it is a valid domain name. |
|
* |
|
* @param domain - the domain name to validate. |
|
* @param options - optional settings. |
|
* |
|
* @return - true when valid, otherwise false. |
|
*/ |
|
function isValid(domain: string, options?: Options): boolean; |
|
|
|
interface Options { |
|
|
|
/** |
|
* Determines whether Unicode characters are allowed. |
|
* |
|
* @default true |
|
*/ |
|
readonly allowUnicode?: boolean; |
|
|
|
/** |
|
* The minimum number of domain segments (e.g. `x.y.z` has 3 segments) required. |
|
* |
|
* @default 2 |
|
*/ |
|
readonly minDomainSegments?: number; |
|
|
|
/** |
|
* Top-level-domain options |
|
* |
|
* @default true |
|
*/ |
|
readonly tlds?: Tlds.Allow | Tlds.Deny | boolean; |
|
} |
|
|
|
namespace Tlds { |
|
|
|
interface Allow { |
|
|
|
readonly allow: Set<string> | true; |
|
} |
|
|
|
interface Deny { |
|
|
|
readonly deny: Set<string>; |
|
} |
|
} |
|
} |
|
|
|
|
|
export namespace email { |
|
|
|
/** |
|
* Analyzes a string to verify it is a valid email address. |
|
* |
|
* @param email - the email address to validate. |
|
* @param options - optional settings. |
|
* |
|
* @return - undefined when valid, otherwise an object with single error key with a string message value. |
|
*/ |
|
function analyze(email: string, options?: Options): Analysis | null; |
|
|
|
/** |
|
* Analyzes a string to verify it is a valid email address. |
|
* |
|
* @param email - the email address to validate. |
|
* @param options - optional settings. |
|
* |
|
* @return - true when valid, otherwise false. |
|
*/ |
|
function isValid(email: string, options?: Options): boolean; |
|
|
|
interface Options extends domain.Options { |
|
|
|
/** |
|
* Determines whether to ignore the standards maximum email length limit. |
|
* |
|
* @default false |
|
*/ |
|
readonly ignoreLength?: boolean; |
|
} |
|
} |
|
|
|
|
|
export interface Analysis { |
|
|
|
/** |
|
* The reason validation failed. |
|
*/ |
|
error: string; |
|
|
|
/** |
|
* The error code. |
|
*/ |
|
code: string; |
|
} |
|
|
|
|
|
export const errors: Record<string, string>; |
|
|
|
|
|
export namespace ip { |
|
|
|
/** |
|
* Generates a regular expression used to validate IP addresses. |
|
* |
|
* @param options - optional settings. |
|
* |
|
* @returns an object with the regular expression and meta data. |
|
*/ |
|
function regex(options?: Options): Expression; |
|
|
|
interface Options { |
|
|
|
/** |
|
* The required CIDR mode. |
|
* |
|
* @default 'optional' |
|
*/ |
|
readonly cidr?: Cidr; |
|
|
|
/** |
|
* The allowed versions. |
|
* |
|
* @default ['ipv4', 'ipv6', 'ipvfuture'] |
|
*/ |
|
readonly version?: Version | Version[]; |
|
} |
|
|
|
type Cidr = 'optional' | 'required' | 'forbidden'; |
|
type Version = 'ipv4' | 'ipv6' | 'ipvfuture'; |
|
|
|
interface Expression { |
|
|
|
/** |
|
* The CIDR mode. |
|
*/ |
|
cidr: Cidr; |
|
|
|
/** |
|
* The raw regular expression string. |
|
*/ |
|
raw: string; |
|
|
|
/** |
|
* The regular expression. |
|
*/ |
|
regex: RegExp; |
|
|
|
/** |
|
* The array of versions allowed. |
|
*/ |
|
versions: Version[]; |
|
} |
|
} |
|
|
|
|
|
export namespace uri { |
|
|
|
/** |
|
* Faster version of decodeURIComponent() that does not throw. |
|
* |
|
* @param string - the URL string to decode. |
|
* |
|
* @returns the decoded string or null if invalid. |
|
*/ |
|
function decode(string: string): string | null; |
|
|
|
/** |
|
* Generates a regular expression used to validate URI addresses. |
|
* |
|
* @param options - optional settings. |
|
* |
|
* @returns an object with the regular expression and meta data. |
|
*/ |
|
function regex(options?: Options): Expression; |
|
|
|
type Options = Hoek.ts.XOR<Options.Options, Options.Relative>; |
|
|
|
namespace Options { |
|
|
|
interface Query { |
|
|
|
/** |
|
* Allow the use of [] in query parameters. |
|
* |
|
* @default false |
|
*/ |
|
readonly allowQuerySquareBrackets?: boolean; |
|
} |
|
|
|
interface Relative extends Query { |
|
|
|
/** |
|
* Requires the URI to be relative. |
|
* |
|
* @default false |
|
*/ |
|
readonly relativeOnly?: boolean; |
|
} |
|
|
|
interface Options extends Query { |
|
|
|
/** |
|
* Allow relative URIs. |
|
* |
|
* @default false |
|
*/ |
|
readonly allowRelative?: boolean; |
|
|
|
/** |
|
* Capture domain segment ($1). |
|
* |
|
* @default false |
|
*/ |
|
readonly domain?: boolean; |
|
|
|
/** |
|
* The allowed URI schemes. |
|
*/ |
|
readonly scheme?: Scheme | Scheme[]; |
|
} |
|
|
|
type Scheme = string | RegExp; |
|
} |
|
|
|
interface Expression { |
|
|
|
/** |
|
* The raw regular expression string. |
|
*/ |
|
raw: string; |
|
|
|
/** |
|
* The regular expression. |
|
*/ |
|
regex: RegExp; |
|
} |
|
}
|
|
|