UNPKG

typia

Version:

Superfast runtime validators with only one line

43 lines (41 loc) 1.46 kB
import { _notationAssign } from "./_notationAssign"; export const _notationAny = (rename: (str: string) => string) => { const main = (input: any): any => { if (typeof input === "object") if (input === null) return null; else if (Array.isArray(input)) return input.map(main); else if ( input instanceof Boolean || input instanceof BigInt || input instanceof Number || input instanceof String ) return input.valueOf(); else if (input instanceof Date) return new Date(input); else if ( input instanceof Uint8Array || input instanceof Uint8ClampedArray || input instanceof Uint16Array || input instanceof Uint32Array || input instanceof BigUint64Array || input instanceof Int8Array || input instanceof Int16Array || input instanceof Int32Array || input instanceof BigInt64Array || input instanceof Float32Array || input instanceof Float64Array || input instanceof DataView ) return input; else return object(input); return input; }; const object = (input: Record<string, any>) => { const output: Record<string, any> = {}; const sources: Record<string, string> = Object.create(null); for (const [key, value] of Object.entries(input)) _notationAssign(output, sources, key, main(value), rename); return output; }; return main; };