typia
Version:
Superfast runtime validators with only one line
38 lines (37 loc) • 1.26 kB
text/typescript
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>) =>
Object.fromEntries(
Object.entries(input).map(([key, value]) => [rename(key), main(value)]),
);
return main;
};