UNPKG

@dgac/nmb2b-client

Version:

EUROCONTROL Network Manager B2B SOAP client

16 lines (15 loc) 1.03 kB
import { OptionalKeysOf, Primitive } from "type-fest"; //#region src/utils/types.d.ts type SoapDeserializer<TInput> = TInput extends Primitive | Date ? TInput : TInput extends Array<infer T> ? Array<Exclude<SoapDeserializer<T>, null | undefined>> | null | undefined : EmptyObjectToNullish<{ [TKey in keyof TInput]: SoapDeserializer<TInput[TKey]> }>; type EmptyObjectToNullish<T extends object> = Exclude<keyof T, NullishKeysOf<T>> extends never ? T | null | undefined : T; type NullishKeysOf<T extends object> = UndefinedKeysOf<T> | NullKeysOf<T> | OptionalKeysOf<T>; type UndefinedKeysOf<T extends object> = keyof { [TKey in keyof T as undefined extends T[TKey] ? TKey : never]: T[TKey] }; type NullKeysOf<T extends object> = keyof { [TKey in keyof T as null extends T[TKey] ? TKey : never]: T[TKey] }; /** * Type helper to recursively make potentially empty objects nullable. * * {@see https://github.com/DGAC/nmb2b-client-js/issues/149} */ //#endregion export { SoapDeserializer }; //# sourceMappingURL=types.d.mts.map