@oxog/kindof
Version:
Zero-dependency advanced type detection library with TypeScript support, plugin system, and 100% test coverage
1 lines • 48.3 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../src/core/constants.ts","../../src/core/native-types.ts","../../src/core/modern-types.ts","../../src/core/kind-of.ts","../../src/converters/to-primitive.ts","../../src/converters/to-complex.ts","../../src/converters/index.ts"],"sourcesContent":["export const PRIMITIVE_TYPES = [\n 'undefined',\n 'null',\n 'boolean',\n 'number',\n 'string',\n 'symbol',\n 'bigint',\n] as const;\n\nexport const OBJECT_TYPES = [\n 'object',\n 'array',\n 'function',\n 'date',\n 'regexp',\n 'error',\n] as const;\n\nexport const COLLECTION_TYPES = [\n 'map',\n 'set',\n 'weakmap',\n 'weakset',\n] as const;\n\nexport const TYPED_ARRAY_TYPES = [\n 'int8array',\n 'uint8array',\n 'uint8clampedarray',\n 'int16array',\n 'uint16array',\n 'int32array',\n 'uint32array',\n 'float32array',\n 'float64array',\n 'bigint64array',\n 'biguint64array',\n] as const;\n\nexport const MODERN_TYPES = [\n 'promise',\n 'generatorfunction',\n 'asyncfunction',\n 'asyncgeneratorfunction',\n 'proxy',\n 'dataview',\n 'arraybuffer',\n 'sharedarraybuffer',\n] as const;\n\nexport const NODE_TYPES = [\n 'buffer',\n 'stream',\n 'eventemitter',\n] as const;\n\nexport const DOM_TYPES = [\n 'element',\n 'node',\n 'window',\n 'document',\n] as const;\n\nexport const SPECIAL_TYPES = [\n 'arguments',\n 'global',\n] as const;\n\nexport const ALL_TYPES = [\n ...PRIMITIVE_TYPES,\n ...OBJECT_TYPES,\n ...COLLECTION_TYPES,\n ...TYPED_ARRAY_TYPES,\n ...MODERN_TYPES,\n ...NODE_TYPES,\n ...DOM_TYPES,\n ...SPECIAL_TYPES,\n] as const;\n\nexport type PrimitiveType = typeof PRIMITIVE_TYPES[number];\nexport type ObjectType = typeof OBJECT_TYPES[number];\nexport type CollectionType = typeof COLLECTION_TYPES[number];\nexport type TypedArrayType = typeof TYPED_ARRAY_TYPES[number];\nexport type ModernType = typeof MODERN_TYPES[number];\nexport type NodeType = typeof NODE_TYPES[number];\nexport type DOMType = typeof DOM_TYPES[number];\nexport type SpecialType = typeof SPECIAL_TYPES[number];\nexport type TypeName = typeof ALL_TYPES[number];\n\nexport const TYPE_TAG_MAP: Record<string, TypeName> = {\n '[object Arguments]': 'arguments',\n '[object Array]': 'array',\n '[object ArrayBuffer]': 'arraybuffer',\n '[object AsyncFunction]': 'asyncfunction',\n '[object AsyncGeneratorFunction]': 'asyncgeneratorfunction',\n '[object BigInt]': 'bigint',\n '[object BigInt64Array]': 'bigint64array',\n '[object BigUint64Array]': 'biguint64array',\n '[object Boolean]': 'boolean',\n '[object DataView]': 'dataview',\n '[object Date]': 'date',\n '[object Error]': 'error',\n '[object Float32Array]': 'float32array',\n '[object Float64Array]': 'float64array',\n '[object Function]': 'function',\n '[object GeneratorFunction]': 'generatorfunction',\n '[object Int8Array]': 'int8array',\n '[object Int16Array]': 'int16array',\n '[object Int32Array]': 'int32array',\n '[object Map]': 'map',\n '[object Number]': 'number',\n '[object Object]': 'object',\n '[object Promise]': 'promise',\n '[object Proxy]': 'proxy',\n '[object RegExp]': 'regexp',\n '[object Set]': 'set',\n '[object SharedArrayBuffer]': 'sharedarraybuffer',\n '[object String]': 'string',\n '[object Symbol]': 'symbol',\n '[object Uint8Array]': 'uint8array',\n '[object Uint8ClampedArray]': 'uint8clampedarray',\n '[object Uint16Array]': 'uint16array',\n '[object Uint32Array]': 'uint32array',\n '[object WeakMap]': 'weakmap',\n '[object WeakSet]': 'weakset',\n '[object Window]': 'window',\n '[object HTMLDocument]': 'document',\n '[object Document]': 'document',\n '[object Null]': 'null',\n '[object Undefined]': 'undefined',\n};","import type { TypeName } from './constants';\nimport { TYPE_TAG_MAP } from './constants';\n\nconst toString = Object.prototype.toString;\nconst toStringTag = Symbol.toStringTag;\n\nexport function getNativeType(value: unknown): TypeName | null {\n if (value === undefined) return 'undefined';\n if (value === null) return 'null';\n\n const primitiveType = typeof value;\n \n switch (primitiveType) {\n case 'boolean': return 'boolean';\n case 'number': return 'number';\n case 'string': return 'string';\n case 'symbol': return 'symbol';\n case 'bigint': return 'bigint';\n case 'function': return getFunctionType(value as (...args: any[]) => any);\n case 'object': return getObjectType(value as object);\n default: return null;\n }\n}\n\nfunction getFunctionType(fn: (...args: any[]) => any): TypeName {\n const fnString = fn.toString();\n \n if (/^class\\s/.test(fnString)) {\n return 'function';\n }\n \n if (/^async\\s*function\\s*\\*/.test(fnString) || /^async\\s*\\*/.test(fnString)) {\n return 'asyncgeneratorfunction';\n }\n \n if (/^async\\s/.test(fnString)) {\n return 'asyncfunction';\n }\n \n if (/^function\\s*\\*/.test(fnString) || /^\\*/.test(fnString)) {\n return 'generatorfunction';\n }\n \n const ctorName = fn.constructor?.name;\n if (ctorName === 'AsyncFunction') return 'asyncfunction';\n if (ctorName === 'GeneratorFunction') return 'generatorfunction';\n if (ctorName === 'AsyncGeneratorFunction') return 'asyncgeneratorfunction';\n \n return 'function';\n}\n\nfunction getObjectType(obj: object): TypeName {\n const tag = toString.call(obj);\n const mappedType = TYPE_TAG_MAP[tag];\n \n if (mappedType) {\n return mappedType;\n }\n \n // Check for special types first, before processing [object Object]\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer && Buffer.isBuffer(obj)) {\n return 'buffer';\n }\n \n if (typeof obj === 'object' && 'callee' in obj && typeof obj.callee === 'function') {\n return 'arguments';\n }\n \n if (isStream(obj)) {\n return 'stream';\n }\n \n if (isEventEmitter(obj)) {\n return 'eventemitter';\n }\n \n if (tag === '[object Object]') {\n const customTag = (obj as any)[toStringTag];\n if (typeof customTag === 'string') {\n return customTag.toLowerCase() as TypeName;\n }\n \n const ctor = obj.constructor;\n if (ctor && ctor !== Object) {\n const ctorName = ctor.name;\n if (ctorName && ctorName !== 'Object') {\n return ctorName.toLowerCase() as TypeName;\n }\n }\n // Don't return 'object' here - continue to check for other types\n }\n \n if (isDOMElement(obj)) {\n return 'element';\n }\n \n if (isDOMNode(obj)) {\n return 'node';\n }\n \n if (isGlobal(obj)) {\n return 'global';\n }\n \n return 'object';\n}\n\nfunction isStream(obj: any): boolean {\n return obj !== null &&\n typeof obj === 'object' &&\n typeof obj.pipe === 'function';\n}\n\nfunction isEventEmitter(obj: any): boolean {\n return obj !== null &&\n typeof obj === 'object' &&\n typeof obj.on === 'function' &&\n typeof obj.emit === 'function' &&\n typeof obj.removeListener === 'function';\n}\n\nfunction isDOMElement(obj: any): boolean {\n if (typeof HTMLElement === 'undefined') return false;\n return obj instanceof HTMLElement;\n}\n\nfunction isDOMNode(obj: any): boolean {\n if (typeof Node === 'undefined') return false;\n return obj instanceof Node;\n}\n\nfunction isGlobal(obj: any): boolean {\n if (typeof globalThis !== 'undefined' && obj === globalThis) return true;\n if (typeof global !== 'undefined' && obj === global) return true;\n if (typeof window !== 'undefined' && obj === window) return true;\n if (typeof self !== 'undefined' && obj === self) return true;\n return false;\n}","import type { TypeName } from './constants';\n\nconst WeakMapPrototype = WeakMap.prototype;\nconst WeakSetPrototype = WeakSet.prototype;\nconst MapPrototype = Map.prototype;\nconst SetPrototype = Set.prototype;\nconst ArrayBufferPrototype = ArrayBuffer.prototype;\nconst DataViewPrototype = DataView.prototype;\nconst SharedArrayBufferPrototype = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer.prototype : null;\n\nexport function checkModernType(value: unknown): TypeName | null {\n if (value === null || value === undefined) {\n return null;\n }\n\n try {\n if (value instanceof Promise || isThenable(value)) {\n return 'promise';\n }\n\n if (value instanceof Map || (value as any).__proto__ === MapPrototype) {\n return 'map';\n }\n\n if (value instanceof Set || (value as any).__proto__ === SetPrototype) {\n return 'set';\n }\n\n if (value instanceof WeakMap || (value as any).__proto__ === WeakMapPrototype) {\n return 'weakmap';\n }\n\n if (value instanceof WeakSet || (value as any).__proto__ === WeakSetPrototype) {\n return 'weakset';\n }\n\n if (value instanceof ArrayBuffer || (value as any).__proto__ === ArrayBufferPrototype) {\n return 'arraybuffer';\n }\n\n if (SharedArrayBufferPrototype && (value instanceof SharedArrayBuffer || (value as any).__proto__ === SharedArrayBufferPrototype)) {\n return 'sharedarraybuffer';\n }\n\n if (value instanceof DataView || (value as any).__proto__ === DataViewPrototype) {\n return 'dataview';\n }\n\n if (isProxy(value)) {\n return 'proxy';\n }\n } catch {\n // Cross-realm objects might throw\n }\n\n return null;\n}\n\nfunction isThenable(value: any): boolean {\n return value !== null &&\n (typeof value === 'object' || typeof value === 'function') &&\n typeof value.then === 'function';\n}\n\nfunction isProxy(value: any): boolean {\n try {\n // Proxies are detected by checking if they trigger proxy traps\n // when used with certain operations\n if (typeof value !== 'object' && typeof value !== 'function') {\n return false;\n }\n\n // Try to create a proxy with the value as handler\n // If it's already a proxy, this might throw or behave differently\n new Proxy({}, value as ProxyHandler<any>);\n \n // Additional check: see if common proxy behaviors are present\n // This is a heuristic and might not catch all proxies\n const descriptor = Object.getOwnPropertyDescriptor(value, Symbol.toStringTag);\n if (descriptor && !descriptor.configurable && descriptor.value === 'Proxy') {\n return true;\n }\n\n return false;\n } catch {\n // Some proxy operations might throw\n return false;\n }\n}\n\nexport function getTypedArrayType(value: any): TypeName | null {\n if (!ArrayBuffer.isView(value)) {\n return null;\n }\n\n const proto = Object.getPrototypeOf(value);\n const ctorName = proto?.constructor?.name;\n\n switch (ctorName) {\n case 'Int8Array': return 'int8array';\n case 'Uint8Array': return 'uint8array';\n case 'Uint8ClampedArray': return 'uint8clampedarray';\n case 'Int16Array': return 'int16array';\n case 'Uint16Array': return 'uint16array';\n case 'Int32Array': return 'int32array';\n case 'Uint32Array': return 'uint32array';\n case 'Float32Array': return 'float32array';\n case 'Float64Array': return 'float64array';\n case 'BigInt64Array': return 'bigint64array';\n case 'BigUint64Array': return 'biguint64array';\n default: return null;\n }\n}","import type { TypeName } from './constants';\nexport type { TypeName } from './constants';\nimport { getNativeType } from './native-types';\nimport { checkModernType, getTypedArrayType } from './modern-types';\n\n\nexport interface DetailedType {\n type: string;\n constructor: string | null;\n prototype: string | null;\n isPrimitive: boolean;\n isBuiltIn: boolean;\n isNullish: boolean;\n isIterable: boolean;\n isAsync: boolean;\n customType: string | null;\n metadata?: Record<string, any> | undefined;\n}\n\nlet typeCache: WeakMap<object, string> | null = null;\nlet cacheEnabled = true;\n\nexport function kindOfCore(value: unknown): string {\n if (value === undefined) return 'undefined';\n if (value === null) return 'null';\n\n const primitiveType = getPrimitiveType(value);\n if (primitiveType) return primitiveType;\n\n if (typeof value === 'object' && cacheEnabled && typeCache) {\n const cached = typeCache.get(value);\n if (cached) return cached;\n }\n\n let type = getNativeType(value);\n \n if (!type || type === 'object') {\n const modernType = checkModernType(value);\n if (modernType) {\n type = modernType;\n } else {\n const arrayType = getTypedArrayType(value);\n if (arrayType) {\n type = arrayType;\n } else {\n type = getCustomType(value) || type || ('object' as TypeName);\n }\n }\n }\n\n if (typeof value === 'object' && cacheEnabled && type) {\n if (!typeCache) typeCache = new WeakMap();\n typeCache.set(value, type);\n }\n\n return type || 'object';\n}\n\nexport function fastKindOf(value: unknown): string {\n if (value === undefined) return 'undefined';\n if (value === null) return 'null';\n\n const primitiveType = typeof value;\n if (primitiveType !== 'object' && primitiveType !== 'function') {\n return primitiveType;\n }\n\n if (Array.isArray(value)) return 'array';\n if (value instanceof Date) return 'date';\n if (value instanceof RegExp) return 'regexp';\n if (value instanceof Error) return 'error';\n\n return 'object';\n}\n\nexport function kindOfMany(values: unknown[]): string[] {\n const results: string[] = new Array(values.length);\n for (let i = 0; i < values.length; i++) {\n results[i] = kindOfCore(values[i]);\n }\n return results;\n}\n\nexport function getDetailedType(value: unknown): DetailedType {\n const type = kindOfCore(value);\n const isPrimitive = value === null || (typeof value !== 'object' && typeof value !== 'function');\n \n let constructor: string | null = null;\n let prototype: string | null = null;\n let isIterable = false;\n let isAsync = false;\n let customType: string | null = null;\n const metadata: Record<string, any> = {};\n\n if (!isPrimitive && value !== null) {\n const obj = value as any;\n \n if (obj.constructor) {\n constructor = obj.constructor.name || null;\n }\n \n const proto = Object.getPrototypeOf(obj);\n if (proto && proto.constructor) {\n prototype = proto.constructor.name || null;\n }\n \n isIterable = typeof obj[Symbol.iterator] === 'function';\n isAsync = typeof obj[Symbol.asyncIterator] === 'function' || \n type === 'promise' || \n type === 'asyncfunction' || \n type === 'asyncgeneratorfunction';\n \n if (obj[Symbol.toStringTag]) {\n customType = String(obj[Symbol.toStringTag]);\n }\n \n if (type === 'array') {\n metadata['length'] = (obj).length;\n } else if (type === 'map' || type === 'set') {\n metadata['size'] = (obj).size;\n } else if (type === 'arraybuffer' || type === 'sharedarraybuffer') {\n metadata['byteLength'] = (obj).byteLength;\n } else if (type.includes('array') && (obj).buffer) {\n metadata['byteLength'] = (obj).byteLength;\n metadata['length'] = (obj).length;\n }\n }\n\n return {\n type,\n constructor,\n prototype,\n isPrimitive,\n isBuiltIn: isBuiltInType(type),\n isNullish: value === null || value === undefined,\n isIterable,\n isAsync,\n customType,\n metadata: Object.keys(metadata).length > 0 ? metadata : undefined,\n };\n}\n\nfunction getPrimitiveType(value: unknown): string | null {\n const type = typeof value;\n switch (type) {\n case 'boolean':\n case 'number':\n case 'string':\n case 'symbol':\n case 'bigint':\n return type;\n default:\n return null;\n }\n}\n\nfunction getCustomType(value: any): TypeName | null {\n try {\n const toStringTag = value[Symbol.toStringTag];\n if (typeof toStringTag === 'string') {\n return toStringTag.toLowerCase() as TypeName;\n }\n\n if (value.constructor && value.constructor !== Object) {\n const ctorName = value.constructor.name;\n if (ctorName && ctorName !== 'Object') {\n return ctorName.toLowerCase() as TypeName;\n }\n }\n } catch {\n // Ignore errors from accessing properties\n }\n\n return null;\n}\n\nfunction isBuiltInType(type: string): boolean {\n const builtInTypes = new Set([\n 'undefined', 'null', 'boolean', 'number', 'string', 'symbol', 'bigint',\n 'object', 'array', 'function', 'date', 'regexp', 'error',\n 'map', 'set', 'weakmap', 'weakset',\n 'int8array', 'uint8array', 'uint8clampedarray', 'int16array', 'uint16array',\n 'int32array', 'uint32array', 'float32array', 'float64array',\n 'bigint64array', 'biguint64array',\n 'promise', 'generatorfunction', 'asyncfunction', 'asyncgeneratorfunction',\n 'proxy', 'dataview', 'arraybuffer', 'sharedarraybuffer',\n 'arguments'\n ]);\n \n return builtInTypes.has(type);\n}\n\nexport function enableCache(): void {\n cacheEnabled = true;\n if (!typeCache) typeCache = new WeakMap();\n}\n\nexport function disableCache(): void {\n cacheEnabled = false;\n typeCache = null;\n}\n\nexport function clearCache(): void {\n if (typeCache) {\n typeCache = new WeakMap();\n }\n}","import { kindOfCore } from '../core/kind-of';\n\nexport function toString(value: unknown): string {\n const type = kindOfCore(value);\n \n switch (type) {\n case 'string':\n return value as string;\n case 'number':\n case 'boolean':\n case 'bigint':\n return String(value);\n case 'symbol':\n return (value as symbol).toString();\n case 'undefined':\n return 'undefined';\n case 'null':\n return 'null';\n case 'date':\n return (value as Date).toISOString();\n case 'regexp':\n return (value as RegExp).toString();\n case 'function':\n return (value as (...args: any[]) => any).toString();\n case 'array':\n return JSON.stringify(value);\n case 'object':\n try {\n return JSON.stringify(value);\n } catch {\n return Object.prototype.toString.call(value);\n }\n default:\n return String(value);\n }\n}\n\nexport function toNumber(value: unknown): number | null {\n const type = kindOfCore(value);\n \n switch (type) {\n case 'number':\n return value as number;\n case 'string': {\n const num = Number(value);\n return isNaN(num) ? null : num;\n }\n case 'boolean':\n return value ? 1 : 0;\n case 'null':\n return 0;\n case 'bigint': {\n const bigIntValue = Number(value);\n return bigIntValue > Number.MAX_SAFE_INTEGER || bigIntValue < Number.MIN_SAFE_INTEGER \n ? null \n : bigIntValue;\n }\n case 'date':\n return (value as Date).getTime();\n default:\n return null;\n }\n}\n\nexport function toBoolean(value: unknown): boolean {\n const type = kindOfCore(value);\n \n switch (type) {\n case 'boolean':\n return value as boolean;\n case 'string': {\n const str = (value as string).toLowerCase();\n return str !== '' && str !== 'false' && str !== '0' && str !== 'no' && str !== 'null' && str !== 'undefined';\n }\n case 'number':\n return value !== 0 && !isNaN(value as number);\n case 'null':\n case 'undefined':\n return false;\n case 'array':\n return (value as any[]).length > 0;\n case 'object':\n return Object.keys(value as object).length > 0;\n default:\n return !!value;\n }\n}\n\nexport function toBigInt(value: unknown): bigint | null {\n const type = kindOfCore(value);\n \n switch (type) {\n case 'bigint':\n return value as bigint;\n case 'number':\n if (Number.isInteger(value as number)) {\n return BigInt(value as number);\n }\n return null;\n case 'string':\n try {\n return BigInt(value as string);\n } catch {\n return null;\n }\n case 'boolean':\n return BigInt(value ? 1 : 0);\n default:\n return null;\n }\n}\n\nexport function toSymbol(value: unknown): symbol {\n const type = kindOfCore(value);\n \n switch (type) {\n case 'symbol':\n return value as symbol;\n case 'string':\n return Symbol(value as string);\n case 'number':\n return Symbol(String(value));\n default:\n return Symbol(toString(value));\n }\n}","import { kindOfCore } from '../core/kind-of';\n\nexport function toArray(value: unknown): unknown[] | null {\n const type = kindOfCore(value);\n \n switch (type) {\n case 'array':\n return value as unknown[];\n case 'string':\n return Array.from(value as string);\n case 'set':\n return Array.from(value as Set<unknown>);\n case 'map':\n return Array.from(value as Map<unknown, unknown>);\n case 'arguments':\n return Array.from(value as ArrayLike<unknown>);\n case 'null':\n case 'undefined':\n return [];\n default:\n if (value !== null && typeof value === 'object' && 'length' in value) {\n return Array.from(value as ArrayLike<unknown>);\n }\n return [value];\n }\n}\n\nexport function toObject(value: unknown): Record<string, unknown> | null {\n const type = kindOfCore(value);\n \n switch (type) {\n case 'object':\n return value as Record<string, unknown>;\n case 'array': {\n const arr = value as unknown[];\n const obj: Record<string, unknown> = {};\n arr.forEach((item, index) => {\n obj[index] = item;\n });\n return obj;\n }\n case 'map': {\n const map = value as Map<unknown, unknown>;\n const obj: Record<string, unknown> = {};\n for (const [key, val] of map) {\n obj[String(key)] = val;\n }\n return obj;\n }\n case 'set': {\n const set = value as Set<unknown>;\n const obj: Record<string, unknown> = {};\n let index = 0;\n for (const item of set) {\n obj[index++] = item;\n }\n return obj;\n }\n case 'string': {\n const str = value as string;\n const obj: Record<string, unknown> = {};\n for (let i = 0; i < str.length; i++) {\n obj[i] = str[i];\n }\n return obj;\n }\n case 'null':\n case 'undefined':\n return {};\n default:\n return { value };\n }\n}\n\nexport function toMap(value: unknown): Map<unknown, unknown> | null {\n const type = kindOfCore(value);\n \n switch (type) {\n case 'map':\n return value as Map<unknown, unknown>;\n case 'object': {\n const obj = value as Record<string, unknown>;\n const map = new Map<unknown, unknown>();\n for (const [key, val] of Object.entries(obj)) {\n map.set(key, val);\n }\n return map;\n }\n case 'array': {\n const arr = value as unknown[];\n const map = new Map<unknown, unknown>();\n arr.forEach((item, index) => {\n map.set(index, item);\n });\n return map;\n }\n case 'set': {\n const set = value as Set<unknown>;\n const map = new Map<unknown, unknown>();\n let index = 0;\n for (const item of set) {\n map.set(index++, item);\n }\n return map;\n }\n default:\n return null;\n }\n}\n\nexport function toSet(value: unknown): Set<unknown> | null {\n const type = kindOfCore(value);\n \n switch (type) {\n case 'set':\n return value as Set<unknown>;\n case 'array':\n return new Set(value as unknown[]);\n case 'string':\n return new Set(Array.from(value as string));\n case 'map':\n return new Set((value as Map<unknown, unknown>).values());\n case 'object':\n return new Set(Object.values(value as Record<string, unknown>));\n default:\n return value !== null && value !== undefined ? new Set([value]) : new Set();\n }\n}\n\nexport function toDate(value: unknown): Date | null {\n const type = kindOfCore(value);\n \n switch (type) {\n case 'date':\n return value as Date;\n case 'string': {\n const date = new Date(value as string);\n return isNaN(date.getTime()) ? null : date;\n }\n case 'number': {\n const date = new Date(value as number);\n return isNaN(date.getTime()) ? null : date;\n }\n default:\n return null;\n }\n}\n\nexport function toRegExp(value: unknown): RegExp | null {\n const type = kindOfCore(value);\n \n switch (type) {\n case 'regexp':\n return value as RegExp;\n case 'string':\n try {\n return new RegExp(value as string);\n } catch {\n return null;\n }\n default:\n return null;\n }\n}\n\nexport function toError(value: unknown): Error | null {\n const type = kindOfCore(value);\n \n switch (type) {\n case 'error':\n return value as Error;\n case 'string':\n return new Error(value as string);\n case 'object':\n if (value && typeof value === 'object' && 'message' in value) {\n return new Error(String((value as any).message));\n }\n return new Error(String(value));\n default:\n return new Error(String(value));\n }\n}\n\nexport function toFunction(value: unknown): ((...args: any[]) => any) | null {\n const type = kindOfCore(value);\n \n switch (type) {\n case 'function':\n case 'asyncfunction':\n case 'generatorfunction':\n case 'asyncgeneratorfunction':\n return value as (...args: any[]) => any;\n case 'string':\n try {\n // eslint-disable-next-line no-new-func, @typescript-eslint/no-implied-eval\n return new Function('return ' + String(value)) as (...args: any[]) => any;\n } catch {\n return null;\n }\n default:\n return null;\n }\n}\n\nexport function toPromise(value: unknown): Promise<unknown> | null {\n const type = kindOfCore(value);\n \n switch (type) {\n case 'promise':\n return value as Promise<unknown>;\n case 'function':\n try {\n const result = (value as (...args: any[]) => any)();\n return Promise.resolve(result);\n } catch (error) {\n return Promise.reject(error);\n }\n default:\n return Promise.resolve(value);\n }\n}\n\nexport function toBuffer(value: unknown): Buffer | null {\n if (typeof Buffer === 'undefined') {\n return null;\n }\n \n const type = kindOfCore(value);\n \n switch (type) {\n case 'buffer':\n return value as Buffer;\n case 'string':\n return Buffer.from(value as string);\n case 'array':\n return Buffer.from(value as number[]);\n case 'uint8array':\n return Buffer.from(value as Uint8Array);\n case 'arraybuffer':\n return Buffer.from(value as ArrayBuffer);\n default:\n return null;\n }\n}\n\nexport function toTypedArray<T extends ArrayBufferView>(\n value: unknown,\n TypedArrayConstructor: new (buffer: ArrayBuffer) => T\n): T | null {\n const type = kindOfCore(value);\n \n switch (type) {\n case 'arraybuffer':\n return new TypedArrayConstructor(value as ArrayBuffer);\n case 'array': {\n const arr = value as number[];\n const buffer = new ArrayBuffer(arr.length * 4);\n const view = new TypedArrayConstructor(buffer);\n for (let i = 0; i < arr.length; i++) {\n (view as any)[i] = arr[i];\n }\n return view;\n }\n default:\n if (type.includes('array') && value instanceof ArrayBuffer) {\n return new TypedArrayConstructor(value);\n }\n return null;\n }\n}","export { toString, toNumber, toBoolean, toBigInt, toSymbol } from './to-primitive';\nexport * from './to-complex';\n\nimport { kindOfCore } from '../core/kind-of';\nimport type { TypeMap, TypeName } from '../types';\nimport { toString, toNumber, toBoolean, toBigInt, toSymbol } from './to-primitive';\n\nexport function coerceType<T extends TypeName>(value: unknown, targetType: T): TypeMap[T] | null {\n const currentType = kindOfCore(value);\n \n if (currentType === targetType) {\n return value as TypeMap[T];\n }\n\n switch (targetType) {\n case 'string':\n return toString(value) as TypeMap[T];\n case 'number':\n return toNumber(value) as TypeMap[T];\n case 'boolean':\n return toBoolean(value) as TypeMap[T];\n case 'bigint':\n return toBigInt(value) as TypeMap[T];\n case 'symbol':\n return toSymbol(value) as TypeMap[T];\n case 'undefined':\n return undefined as TypeMap[T];\n case 'null':\n return null as TypeMap[T];\n case 'array':\n if (currentType === 'object' && value !== null) {\n const arr = Array.from(value as any);\n return arr.length > 0 ? arr as TypeMap[T] : null;\n }\n return null;\n case 'object':\n if (currentType === 'array') {\n const obj: any = {};\n (value as any[]).forEach((item, index) => {\n obj[index] = item;\n });\n return obj as TypeMap[T];\n }\n return null;\n case 'date':\n if (currentType === 'string') {\n const date = new Date(value as string);\n return isNaN(date.getTime()) ? null : date as TypeMap[T];\n }\n return null;\n default:\n return null;\n }\n}"],"names":["toString","toNumber","toBoolean","toBigInt","toSymbol"],"mappings":"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"}