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.
|
|
/// <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; } }
|