// 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): void; export function deeplyHasAllKeys(object: MapLike, keys: {[P in K]: V}): void; export function deeplyLacksAllKeys(object: MapLike, keys: {[P in K]: V}): void; export function deeplyHasAnyKey(object: MapLike, keys: {[P in K]: V}): void; export function deeplyLacksAnyKey(object: MapLike, keys: {[P in K]: V}): void;