@shedevro/assert
Version:
Assertion typescript library for better, comfortable and safe coding. See readme!
100 lines (99 loc) • 5.47 kB
TypeScript
declare namespace Types {
type One = string;
type OneNullable = One | null;
type Array = One[];
type ArrayNullable = Array | null;
}
declare namespace String {
type AssertsTemplate<R> = {
string(value: unknown, message?: string): asserts value is R;
};
type ValueIsTemplate<R> = {
string(value: unknown): value is R;
};
}
declare namespace EmptyString {
type AssertsTemplate<R> = {
emptyString(value: unknown, message?: string): asserts value is R;
};
type ValueIsTemplate<R> = {
emptyString(value: unknown): value is R;
};
}
declare namespace Contains {
type AssertsTemplate<R> = {
contains(value: unknown, subString: string, message?: string): asserts value is R;
};
type ValueIsTemplate<R> = {
contains(value: unknown, subString: string): value is R;
};
}
declare namespace StartsWith {
type AssertsTemplate<R> = {
startsWith(value: unknown, prefix: string, message?: string): asserts value is R;
};
type ValueIsTemplate<R> = {
startsWith(value: unknown, prefix: string): value is R;
};
}
declare namespace EndsWith {
type AssertsTemplate<R> = {
endsWith(value: unknown, suffix: string, message?: string): asserts value is R;
};
type ValueIsTemplate<R> = {
endsWith(value: unknown, suffix: string): value is R;
};
}
declare namespace OneOf {
namespace Asserts {
type One = {
oneOf<T extends string>(value: unknown, values: T[], message?: string): asserts value is T;
};
type OneNullable = {
oneOf<T extends string>(value: unknown, values: T[], message?: string): asserts value is T | null;
};
type Array = {
oneOf<T extends string>(value: unknown, values: T[], message?: string): asserts value is T[];
};
type ArrayNullable = {
oneOf<T extends string>(value: unknown, values: T[], message?: string): asserts value is T[] | null;
};
type Not = {
oneOf<T extends string>(value: unknown, values: T[], message?: string): void;
};
}
namespace ValueIs {
type One = {
oneOf<T extends (string | number)>(value: unknown, values: T[]): value is T;
};
type OneNullable = {
oneOf<T extends (string | number)>(value: unknown, values: T[]): value is T | null;
};
type Array = {
oneOf<T extends (string | number)>(value: unknown, values: T[]): value is T[];
};
type ArrayNullable = {
oneOf<T extends (string | number)>(value: unknown, values: T[]): value is T[] | null;
};
type Not = {
oneOf<T extends (string | number)>(value: unknown, values: T[]): value is boolean;
};
}
}
export declare namespace StringFunctions {
namespace Asserts {
type One = String.AssertsTemplate<Types.One> & EmptyString.AssertsTemplate<Types.One> & Contains.AssertsTemplate<Types.One> & StartsWith.AssertsTemplate<Types.One> & EndsWith.AssertsTemplate<Types.One> & OneOf.Asserts.One;
type OneNullable = String.AssertsTemplate<Types.OneNullable> & EmptyString.AssertsTemplate<Types.OneNullable> & Contains.AssertsTemplate<Types.OneNullable> & StartsWith.AssertsTemplate<Types.OneNullable> & EndsWith.AssertsTemplate<Types.OneNullable> & OneOf.Asserts.OneNullable;
type Array = String.AssertsTemplate<Types.Array> & EmptyString.AssertsTemplate<Types.Array> & Contains.AssertsTemplate<Types.Array> & StartsWith.AssertsTemplate<Types.Array> & EndsWith.AssertsTemplate<Types.Array> & OneOf.Asserts.Array;
type ArrayNullable = String.AssertsTemplate<Types.ArrayNullable> & EmptyString.AssertsTemplate<Types.ArrayNullable> & Contains.AssertsTemplate<Types.ArrayNullable> & StartsWith.AssertsTemplate<Types.ArrayNullable> & EndsWith.AssertsTemplate<Types.ArrayNullable> & OneOf.Asserts.ArrayNullable;
type Not = EmptyString.AssertsTemplate<Types.One> & Contains.AssertsTemplate<Types.One> & StartsWith.AssertsTemplate<Types.One> & EndsWith.AssertsTemplate<Types.One> & OneOf.Asserts.Not;
}
namespace ValueIs {
type One = String.ValueIsTemplate<Types.One> & EmptyString.ValueIsTemplate<Types.One> & Contains.ValueIsTemplate<Types.One> & StartsWith.ValueIsTemplate<Types.One> & EndsWith.ValueIsTemplate<Types.One> & OneOf.ValueIs.One;
type OneNullable = String.ValueIsTemplate<Types.OneNullable> & EmptyString.ValueIsTemplate<Types.OneNullable> & Contains.ValueIsTemplate<Types.OneNullable> & StartsWith.ValueIsTemplate<Types.OneNullable> & EndsWith.ValueIsTemplate<Types.OneNullable> & OneOf.ValueIs.OneNullable;
type Array = String.ValueIsTemplate<Types.Array> & EmptyString.ValueIsTemplate<Types.Array> & Contains.ValueIsTemplate<Types.Array> & StartsWith.ValueIsTemplate<Types.Array> & EndsWith.ValueIsTemplate<Types.Array> & OneOf.ValueIs.Array;
type ArrayNullable = String.ValueIsTemplate<Types.ArrayNullable> & EmptyString.ValueIsTemplate<Types.ArrayNullable> & Contains.ValueIsTemplate<Types.ArrayNullable> & StartsWith.ValueIsTemplate<Types.ArrayNullable> & EndsWith.ValueIsTemplate<Types.ArrayNullable> & OneOf.ValueIs.ArrayNullable;
type Not = EmptyString.ValueIsTemplate<Types.One> & Contains.ValueIsTemplate<Types.One> & StartsWith.ValueIsTemplate<Types.One> & EndsWith.ValueIsTemplate<Types.One> & OneOf.ValueIs.Not;
}
}
export {};