import * as check from "../../../sync/check/array-like"; import {AssertError} from "../../../sync/error/AssertError"; export function assertArrayLike (name : string, mixed : any) : ({ [index : number] : any, length : number, indexOf : (item : any) => number })|never { const error = check.checkArrayLike(mixed); if (error === undefined) { return mixed; } else { throw new AssertError(name, error, mixed); } } export function assertMinLength (name : string, mixed : any, min : number) : ({ [index : number] : any, length : number, indexOf : (item : any) => number })|never { const error = check.checkMinLength(mixed, min); if (error === undefined) { return mixed; } else { throw new AssertError(name, error, mixed, min); } } export function assertMinLengthHandler (min : number) : (name : string, mixed : any) => ({ [index : number] : any, length : number, indexOf : (item : any) => number })|never { return (name : string, mixed : any) : ({ [index : number] : any, length : number, indexOf : (item : any) => number })|never => { return assertMinLength(name, mixed, min); }; } export function assertMaxLength (name : string, mixed : any, max : number) : ({ [index : number] : any, length : number, indexOf : (item : any) => number })|never { const error = check.checkMaxLength(mixed, max); if (error === undefined) { return mixed; } else { throw new AssertError(name, error, mixed, max); } } export function assertMaxLengthHandler (max : number) : (name : string, mixed : any) => ({ [index : number] : any, length : number, indexOf : (item : any) => number })|never { return (name : string, mixed : any) : ({ [index : number] : any, length : number, indexOf : (item : any) => number })|never => { return assertMaxLength(name, mixed, max); }; } export function assertLength (name : string, mixed : any, args : { min? : number, max? : number }) : ({ [index : number] : any, length : number, indexOf : (item : any) => number })|never { const error = check.checkLength(mixed, args); if (error === undefined) { return mixed; } else { throw new AssertError(name, error, mixed, args); } } export function assertLengthHandler (args : { min? : number, max? : number }) : (name : string, mixed : any) => ({ [index : number] : any, length : number, indexOf : (item : any) => number })|never { return (name : string, mixed : any) : ({ [index : number] : any, length : number, indexOf : (item : any) => number })|never => { return assertLength(name, mixed, args); }; } export function assertNonEmpty (name : string, mixed : any) : ({ [index : number] : any, length : number, indexOf : (item : any) => number })|never { const error = check.checkNonEmpty(mixed); if (error === undefined) { return mixed; } else { throw new AssertError(name, error, mixed); } } export function assertContains (name : string, mixed : any, x : any) : ({ [index : number] : any, length : number, indexOf : (item : any) => number })|never { const error = check.checkContains(mixed, x); if (error === undefined) { return mixed; } else { throw new AssertError(name, error, mixed, x); } } export function assertContainsHandler (x : any) : (name : string, mixed : any) => ({ [index : number] : any, length : number, indexOf : (item : any) => number })|never { return (name : string, mixed : any) : ({ [index : number] : any, length : number, indexOf : (item : any) => number })|never => { return assertContains(name, mixed, x); }; } export function assertNoDuplicate (name : string, mixed : any) : ({ [index : number] : any, length : number, indexOf : (item : any) => number })|never { const error = check.checkNoDuplicate(mixed); if (error === undefined) { return mixed; } else { throw new AssertError(name, error, mixed); } }