@oxog/kindof
Version:
Zero-dependency advanced type detection library with TypeScript support, plugin system, and 100% test coverage
170 lines (159 loc) • 9.01 kB
TypeScript
declare function isUndefined(value: unknown): value is undefined;
declare function isNull(value: unknown): value is null;
declare function isBoolean(value: unknown): value is boolean;
declare function isNumber(value: unknown): value is number;
declare function isString(value: unknown): value is string;
declare function isSymbol(value: unknown): value is symbol;
declare function isBigInt(value: unknown): value is bigint;
declare function isPrimitive(value: unknown): value is undefined | null | boolean | number | string | symbol | bigint;
declare function isNullish(value: unknown): value is undefined | null;
declare function isFalsy(value: unknown): value is false | 0 | 0n | '' | null | undefined;
declare function isTruthy<T>(value: T): value is Exclude<T, false | 0 | 0n | '' | null | undefined>;
declare function isInteger(value: unknown): value is number;
declare function isSafeInteger(value: unknown): value is number;
declare function isFinite(value: unknown): value is number;
declare function isNaN(value: unknown): value is number;
declare function isInfinity(value: unknown): value is number;
declare function isEmptyString(value: unknown): value is '';
declare function isNumericString(value: unknown): value is string;
declare function isJsonString(value: unknown): value is string;
declare function isObject(value: unknown): value is object;
declare function isArray<T = unknown>(value: unknown): value is T[];
declare function isFunction(value: unknown): value is (...args: any[]) => any;
declare function isDate(value: unknown): value is Date;
declare function isRegExp(value: unknown): value is RegExp;
declare function isError(value: unknown): value is Error;
declare function isPromise<T = unknown>(value: unknown): value is Promise<T>;
declare function isArguments(value: unknown): value is IArguments;
declare function isBuffer(value: unknown): value is Buffer;
declare function isPlainObject(value: unknown): value is Record<string, unknown>;
declare function isEmpty(value: unknown): boolean;
declare function isEmptyArray(value: unknown): value is [];
declare function isEmptyObject(value: unknown): value is Record<string, never>;
declare function hasLength(value: unknown): value is {
length: number;
};
declare function hasSize(value: unknown): value is {
size: number;
};
declare function isArrayLike<T = unknown>(value: unknown): value is ArrayLike<T>;
declare function isIterable<T = unknown>(value: unknown): value is Iterable<T>;
declare function isAsyncIterable<T = unknown>(value: unknown): value is AsyncIterable<T>;
declare function isConstructor(value: unknown): value is new (...args: any[]) => any;
declare function isThenable<T = unknown>(value: unknown): value is PromiseLike<T>;
declare function isObservable(value: unknown): value is {
subscribe: (...args: any[]) => any;
};
declare function isGenerator(value: unknown): value is Generator;
declare function isAsyncGenerator(value: unknown): value is AsyncGenerator;
declare function isGeneratorFunction(value: unknown): value is GeneratorFunction;
declare function isAsyncFunction(value: unknown): value is (...args: any[]) => Promise<unknown>;
declare function isAsyncGeneratorFunction(value: unknown): value is (...args: any[]) => AsyncGenerator;
declare function isProxy(value: unknown): value is object;
declare function isTypeError(value: unknown): value is TypeError;
declare function isRangeError(value: unknown): value is RangeError;
declare function isSyntaxError(value: unknown): value is SyntaxError;
declare function isReferenceError(value: unknown): value is ReferenceError;
declare function isEvalError(value: unknown): value is EvalError;
declare function isURIError(value: unknown): value is URIError;
declare function isStream(value: unknown): value is NodeJS.ReadableStream | NodeJS.WritableStream;
declare function isEventEmitter(value: unknown): value is NodeJS.EventEmitter;
declare function isElement(value: unknown): value is Element;
declare function isNode(value: unknown): value is Node;
declare function isWindow(value: unknown): value is Window;
declare function isDocument(value: unknown): value is Document;
declare function isGlobal(value: unknown): value is typeof globalThis;
declare function isMap<K = any, V = any>(value: unknown): value is Map<K, V>;
declare function isSet<T = any>(value: unknown): value is Set<T>;
declare function isWeakMap<K extends object = object, V = any>(value: unknown): value is WeakMap<K, V>;
declare function isWeakSet<T extends object = object>(value: unknown): value is WeakSet<T>;
declare function isDataView(value: unknown): value is DataView;
declare function isArrayBuffer(value: unknown): value is ArrayBuffer;
declare function isSharedArrayBuffer(value: unknown): value is SharedArrayBuffer;
declare function isTypedArray(value: unknown): value is TypedArray;
declare function isInt8Array(value: unknown): value is Int8Array;
declare function isUint8Array(value: unknown): value is Uint8Array;
declare function isUint8ClampedArray(value: unknown): value is Uint8ClampedArray;
declare function isInt16Array(value: unknown): value is Int16Array;
declare function isUint16Array(value: unknown): value is Uint16Array;
declare function isInt32Array(value: unknown): value is Int32Array;
declare function isUint32Array(value: unknown): value is Uint32Array;
declare function isFloat32Array(value: unknown): value is Float32Array;
declare function isFloat64Array(value: unknown): value is Float64Array;
declare function isBigInt64Array(value: unknown): value is BigInt64Array;
declare function isBigUint64Array(value: unknown): value is BigUint64Array;
type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array;
interface TypeMap {
'undefined': undefined;
'null': null;
'boolean': boolean;
'number': number;
'string': string;
'symbol': symbol;
'bigint': bigint;
'object': object;
'array': any[];
'function': Function;
'date': Date;
'regexp': RegExp;
'error': Error;
'promise': Promise<any>;
'map': Map<any, any>;
'set': Set<any>;
'weakmap': WeakMap<any, any>;
'weakset': WeakSet<any>;
'int8array': Int8Array;
'uint8array': Uint8Array;
'uint8clampedarray': Uint8ClampedArray;
'int16array': Int16Array;
'uint16array': Uint16Array;
'int32array': Int32Array;
'uint32array': Uint32Array;
'float32array': Float32Array;
'float64array': Float64Array;
'bigint64array': BigInt64Array;
'biguint64array': BigUint64Array;
'generatorfunction': GeneratorFunction$1;
'asyncfunction': AsyncFunction;
'asyncgeneratorfunction': AsyncGeneratorFunction;
'proxy': any;
'dataview': DataView;
'arraybuffer': ArrayBuffer;
'sharedarraybuffer': SharedArrayBuffer;
'arguments': IArguments;
'buffer': Buffer;
'stream': NodeJS.ReadableStream | NodeJS.WritableStream;
'eventemitter': NodeJS.EventEmitter;
'element': Element;
'node': Node;
'window': Window;
'document': Document;
'global': typeof globalThis;
}
type TypeName = keyof TypeMap;
// Function type helpers
interface GeneratorFunction$1 {
new(...args: any[]): Generator;
(...args: any[]): Generator;
}
interface AsyncFunction {
new(...args: any[]): Promise<any>;
(...args: any[]): Promise<any>;
}
interface AsyncGeneratorFunction {
new(...args: any[]): AsyncGenerator;
(...args: any[]): AsyncGenerator;
}
// Node.js type helpers (will be undefined in browser)
declare global {
namespace NodeJS {
interface ReadableStream {}
interface WritableStream {}
interface EventEmitter {}
}
interface Buffer {}
}
declare function isType<T extends TypeName>(value: unknown, type: T): value is TypeMap[T];
declare function assertType<T extends TypeName>(value: unknown, type: T): asserts value is TypeMap[T];
declare function ensureType<T extends TypeName>(value: unknown, type: T, defaultValue: TypeMap[T]): TypeMap[T];
export { assertType, ensureType, hasLength, hasSize, isArguments, isArray, isArrayBuffer, isArrayLike, isAsyncFunction, isAsyncGenerator, isAsyncGeneratorFunction, isAsyncIterable, isBigInt, isBigInt64Array, isBigUint64Array, isBoolean, isBuffer, isConstructor, isDataView, isDate, isDocument, isElement, isEmpty, isEmptyArray, isEmptyObject, isEmptyString, isError, isEvalError, isEventEmitter, isFalsy, isFinite, isFloat32Array, isFloat64Array, isFunction, isGenerator, isGeneratorFunction, isGlobal, isInfinity, isInt16Array, isInt32Array, isInt8Array, isInteger, isIterable, isJsonString, isMap, isNaN, isNode, isNull, isNullish, isNumber, isNumericString, isObject, isObservable, isPlainObject, isPrimitive, isPromise, isProxy, isRangeError, isReferenceError, isRegExp, isSafeInteger, isSet, isSharedArrayBuffer, isStream, isString, isSymbol, isSyntaxError, isThenable, isTruthy, isType, isTypeError, isTypedArray, isURIError, isUint16Array, isUint32Array, isUint8Array, isUint8ClampedArray, isUndefined, isWeakMap, isWeakSet, isWindow };