// FIXME: Update this file to be type safe and remove this and next line // @ts-strict-ignore import { Jsonify } from "type-fest"; /** * * @param elementDeserializer * @returns */ export function array( elementDeserializer: (element: Jsonify) => T, ): (array: Jsonify) => T[] { return (array) => { if (array == null) { return null; } return array.map((element) => elementDeserializer(element)); }; } /** * * @param valueDeserializer */ export function record( valueDeserializer: (value: Jsonify) => T, ): (record: Jsonify>) => Record { return (jsonValue: Jsonify | null>) => { if (jsonValue == null) { return null; } const output: Record = {} as any; Object.entries(jsonValue).forEach(([key, value]) => { output[key as TKey] = valueDeserializer(value); }); return output; }; }