// TODO: Once TS 3.0 is released (and gets a bit more widespread), remove one
// of these slashes and enable this triple-slash directive.
////
/* tslint:disable */
declare global {
// Shut up the type checker before the next TS version
interface Iterable {}
}
type Collectionish = Iterable | ArrayLike
export interface FormatOptions {
[key: string]: any;
}
export interface PrettifyOptions {
depth: number;
}
export interface FormatPrettify {
(value: any, options: PrettifyOptions): string;
}
export class AssertionError extends Error {
name: "AssertionError";
expected: any;
actual: any;
constructor(message?: string, expected?: any, actual?: any);
}
export function format(message: string, args: FormatOptions, prettify?: FormatPrettify): string;
export function escape(message: string): string;
/**
* Perform a prototype-agnostic deep object match.
*/
export function matchLoose(a: T, b: T): boolean;
/**
* Perform a prototype-aware deep object match.
*/
export function matchStrict(a: T, b: T): boolean;
export interface InspectOptions {
showHidden?: boolean;
depth?: number;
colors?: boolean;
customInspect?: boolean;
}
export interface InspectStyles {
special: string;
number: string;
boolean: string;
undefined: string;
null: string;
string: string;
symbol: string;
date: string;
regexp: string;
}
// Note: this delegates to either `util-inspect` or Node's native
// `util.inspect`, based on the environment.
export const inspect: {
(object: any, options?: InspectOptions): string;
/** @deprecated in favor of the options object version */
(object: any, showHidden?: boolean, depth?: boolean, colors?: boolean): string;
colors: {[key: string]: [number, number]};
styles: InspectStyles;
};
// And now, for all the assertions.
export function assert(condition: boolean, message?: string, actual?: any, expected?: any): void;
export function fail(message: string, actual?: any, expected?: any): void;
export function failFormat(message: string, args: FormatOptions, prettify?: FormatPrettify): void;
export interface SetLike { has(value: T): boolean; }
export interface MapLike extends SetLike { get(value: T): U; }
// Type tests
export function ok(value: any): void;
export function notOk(value: any): void;
// `undefined` is omitted because it's impossible for it to check. If you really
// mean to use it, just use `assert.equal(value, undefined)`.
type AssertType =
| "array" | "array-like" | "bigint" | "boolean" | "function" | "iterable"
| "number" | "object" | "reference" | "string" | "symbol"
| (new (...args: any[]) => any)
export function is(Type: AssertType, value: any): void;
export function not(Type: AssertType, value: any): void;
export function possibly(Type: AssertType, value: any): void;
export function notPossibly(Type: AssertType, value: any): void;
// Numeric tests
export function atLeast(n: number, limit: number): void;
export function atMost(n: number, limit: number): void;
export function above(n: number, limit: number): void;
export function below(n: number, limit: number): void;
export function between(n: number, lower: number, upper: number): void;
export function notBetween(n: number, lower: number, upper: number): void;
export function closeTo(actual: number, expected: number, epsilon?: number): void;
export function notCloseTo(actual: number, expected: number, epsilon?: number): void;
// Exception testing
export function throws(Type: AssertType, func: () => any): void;
export function throwsMatching(
matcher: ((error: Error) => boolean) | string | RegExp | object,
func: () => any
): void;
// Key existence in object/set/map
export function hasOwn(object: T, key: keyof T): void;
export function lacksOwn(object: T, key: keyof T): void;
export function hasIn(object: T, key: keyof T): void;
export function lacksIn(object: T, key: keyof T): void;
export function hasKey(object: SetLike, key: T): void;
export function lacksKey(object: SetLike, key: T): void;
// Value/property structural equality
export function equal(actual: T, expected: T): void;
export function notEqual(actual: T, expected: T): void;
export function equalsAny(actual: T, expected: Collectionish): void;
export function equalsNone(actual: T, expected: Collectionish): void;
export function hasOwn(object: T, key: keyof T, value: T[typeof key]): void;
export function lacksOwn(object: T, key: keyof T, value: T[typeof key]): void;
export function hasIn(object: T, key: keyof T, value: T[typeof key]): void;
export function lacksIn(object: T, key: keyof T, value: T[typeof key]): void;
export function hasKey(object: MapLike, key: T, value: U): void;
export function lacksKey(object: MapLike, key: T, value: U): void;
// Structural existence in collection
export function includes(coll: Collectionish, value: T): void;
export function excludes(coll: Collectionish, value: T): void;
export function includesAll(coll: Collectionish, values: Collectionish): void;
export function excludesAll(coll: Collectionish, values: Collectionish): void;
export function includesAny(coll: Collectionish, values: Collectionish): void;
export function excludesAny(coll: Collectionish, values: Collectionish): void;
// Multiple keys' structural existence in object
export function hasAllOwn(object: T, keys: Collectionish): void;
export function lacksAllOwn(object: T, keys: Collectionish): void;
export function hasAnyOwn(object: T, keys: Collectionish): void;
export function lacksAnyOwn(object: T, keys: Collectionish): void;
export function hasAllIn(object: T, keys: Collectionish): void;
export function lacksAllIn(object: T, keys: Collectionish): void;
export function hasAnyIn(object: T, keys: Collectionish): void;
export function lacksAnyIn(object: T, keys: Collectionish): void;
export function hasAllKeys(object: SetLike, keys: Collectionish): void;
export function lacksAllKeys(object: SetLike, keys: Collectionish): void;
export function hasAnyKey(object: SetLike, keys: Collectionish): void;
export function lacksAnyKey(object: SetLike, keys: Collectionish): void;
// Multiple values' structural existence in object
export function hasAllOwn(object: T, keys: Partial): void;
export function lacksAllOwn(object: T, keys: Partial): void;
export function hasAnyOwn(object: T, keys: Partial): void;
export function lacksAnyOwn(object: T, keys: Partial): void;
export function hasAllIn(object: T, keys: Partial): void;
export function lacksAllIn(object: T, keys: Partial): void;
export function hasAnyIn(object: T, keys: Partial): void;
export function lacksAnyIn(object: T, keys: Partial): void;
export function hasAllKeys(object: MapLike, keys: {[P in K]: V}): void;
export function lacksAllKeys(object: MapLike, keys: {[P in K]: V}): void;
export function hasAnyKey(object: MapLike, keys: {[P in K]: V}): void;
export function lacksAnyKey(object: MapLike, keys: {[P in K]: V}): void;
// Value/property exact equality
export function exactlyEqual(actual: T, expected: T): void;
export function exactlyNotEqual(actual: T, expected: T): void;
export function exactlyEqualsAny(actual: T, expected: Collectionish): void;
export function exactlyEqualsNone(actual: T, expected: Collectionish): void;
export function exactlyHasOwn(object: T, key: keyof T, value: T[typeof key]): void;
export function exactlyLacksOwn(object: T, key: keyof T, value: T[typeof key]): void;
export function exactlyHasIn(object: T, key: keyof T, value: T[typeof key]): void;
export function exactlyLacksIn(object: T, key: keyof T, value: T[typeof key]): void;
export function exactlyHasKey(object: MapLike, key: T, value: U): void;
export function exactlyLacksKey(object: MapLike, key: T, value: U): void;
// Exact existence in collection
export function exactlyIncludes(coll: Collectionish, value: T): void;
export function exactlyExcludes(coll: Collectionish, value: T): void;
export function exactlyIncludesAll(coll: Collectionish, values: Collectionish): void;
export function exactlyExcludesAll(coll: Collectionish, values: Collectionish): void;
export function exactlyIncludesAny(coll: Collectionish, values: Collectionish): void;
export function exactlyExcludesAny(coll: Collectionish, values: Collectionish): void;
// Multiple keys' exact existence in object
export function exactlyHasAllIn(object: T, keys: Collectionish): void;
export function exactlyLacksAllIn(object: T, keys: Collectionish): void;
export function exactlyHasAnyIn(object: T, keys: Collectionish): void;
export function exactlyLacksAnyIn(object: T, keys: Collectionish): void;
export function exactlyHasAllOwn(object: T, keys: Collectionish): void;
export function exactlyLacksAllOwn(object: T, keys: Collectionish): void;
export function exactlyHasAnyOwn(object: T, keys: Collectionish): void;
export function exactlyLacksAnyOwn(object: T, keys: Collectionish): void;
export function exactlyHasAllKeys(object: SetLike, keys: Collectionish): void;
export function exactlyLacksAllKeys(object: SetLike, keys: Collectionish): void;
export function exactlyHasAnyKey(object: SetLike, keys: Collectionish): void;
export function exactlyLacksAnyKey(object: SetLike, keys: Collectionish): void;
// Multiple values' exact existence in object
export function exactlyHasAllIn(object: T, keys: Partial): void;
export function exactlyLacksAllIn(object: T, keys: Partial): void;
export function exactlyHasAnyIn(object: T, keys: Partial): void;
export function exactlyLacksAnyIn(object: T, keys: Partial): void;
export function exactlyHasAllOwn(object: T, keys: Partial): void;
export function exactlyLacksAllOwn(object: T, keys: Partial): void;
export function exactlyHasAnyOwn(object: T, keys: Partial): void;
export function exactlyLacksAnyOwn(object: T, keys: Partial): void;
export function exactlyHasAllKeys(object: MapLike, keys: {[P in K]: V}): void;
export function exactlyLacksAllKeys(object: MapLike, keys: {[P in K]: V}): void;
export function exactlyHasAnyKey(object: MapLike, keys: {[P in K]: V}): void;
export function exactlyLacksAnyKey(object: MapLike, keys: {[P in K]: V}): void;
// Value/property deep equality
export function deeplyEqual(actual: T, expected: T): void;
export function deeplyNotEqual(actual: T, expected: T): void;
export function deeplyEqualsAny(actual: T, expected: Collectionish): void;
export function deeplyEqualsNone(actual: T, expected: Collectionish): void;
export function deeplyHasOwn(object: T, key: keyof T, value: T[typeof key]): void;
export function deeplyLacksOwn(object: T, key: keyof T, value: T[typeof key]): void;
export function deeplyHasIn(object: T, key: keyof T, value: T[typeof key]): void;
export function deeplyLacksIn(object: T, key: keyof T, value: T[typeof key]): void;
export function deeplyHasKey(object: MapLike, key: T, value: U): void;
export function deeplyLacksKey(object: MapLike, key: T, value: U): void;
// Deep existence in collection
export function deeplyIncludes(coll: Collectionish, value: T): void;
export function deeplyExcludes(coll: Collectionish, value: T): void;
export function deeplyIncludesAll(coll: Collectionish, values: Collectionish): void;
export function deeplyExcludesAll(coll: Collectionish, values: Collectionish): void;
export function deeplyIncludesAny(coll: Collectionish, values: Collectionish): void;
export function deeplyExcludesAny(coll: Collectionish, values: Collectionish): void;
// Multiple keys' deep existence in object
export function deeplyHasAllIn(object: T, keys: Collectionish): void;
export function deeplyLacksAllIn(object: T, keys: Collectionish): void;
export function deeplyHasAnyIn(object: T, keys: Collectionish): void;
export function deeplyLacksAnyIn(object: T, keys: Collectionish): void;
export function deeplyHasAllOwn(object: T, keys: Collectionish): void;
export function deeplyLacksAllOwn(object: T, keys: Collectionish): void;
export function deeplyHasAnyOwn(object: T, keys: Collectionish): void;
export function deeplyLacksAnyOwn(object: T, keys: Collectionish): void;
export function deeplyHasAllKeys(object: SetLike, keys: Collectionish): void;
export function deeplyLacksAllKeys(object: SetLike, keys: Collectionish): void;
export function deeplyHasAnyKey(object: SetLike, keys: Collectionish): void;
export function deeplyLacksAnyKey(object: SetLike, keys: Collectionish): void;
// Multiple values' deep existence in object
export function deeplyHasAllIn(object: T, keys: Partial): void;
export function deeplyLacksAllIn(object: T, keys: Partial): void;
export function deeplyHasAnyIn(object: T, keys: Partial): void;
export function deeplyLacksAnyIn(object: T, keys: Partial): void;
export function deeplyHasAllOwn(object: T, keys: Partial): void;
export function deeplyLacksAllOwn(object: T, keys: Partial): void;
export function deeplyHasAnyOwn(object: T, keys: Partial): void;
export function deeplyLacksAnyOwn(object: T, keys: Partial