@sap-cloud-sdk/odata-common
Version:
SAP Cloud SDK for JavaScript common functions of OData client generator and OpenAPI clint generator.
25 lines (24 loc) • 3 kB
TypeScript
import type BigNumber from 'bignumber.js';
import type { DeserializedType, DeSerializer, DeSerializers } from './de-serializers';
import type { DefaultDeSerializers } from './default-de-serializers';
/**
* Infers the deserialized type for an EDM type, based on custom (de-)serializers.
* If the custom (de-)serializers specify a type for the given EDM type, this type is inferred.
* Otherwise the given DefaultType is used.
* @typeParam CustomDeSerializerT - Type of the custom (de-)serializers.
* @typeParam EdmT - The EDM type to infer the type for.
*/
export type CustomOrDefaultType<CustomDeSerializerT, EdmT, DefaultDeSerializersT extends DefaultDeSerializers> = EdmT extends keyof CustomDeSerializerT ? CustomDeSerializerT[EdmT] extends DeSerializer<infer CustomT> | undefined ? CustomT : DeserializedType<DefaultDeSerializersT, EdmT> : DeserializedType<DefaultDeSerializersT, EdmT>;
/**
* @internal
* Get a complete set of (de-)serializers, that consists of the given partial custom (de-)serializers and default (de-)serializers (aka. default (de-)serializers merged with custom (de-)serializers).
* The custom (de-)serializers are merged with the default (de-)serializers, while custom (de-)serializers take precedence.
* @param customDeSerializers - Custom (de-)serialization functions.
* @returns A full set of (de-)serialization functions, that combines custom and default (de-)serializers.
*/
export declare function mergeDefaultDeSerializersWith<BinaryT = string, BooleanT = boolean, ByteT = number, DecimalT = BigNumber, DoubleT = number, FloatT = number, Int16T = number, Int32T = number, Int64T = BigNumber, GuidT = string, SByteT = number, SingleT = number, StringT = string, AnyT = any>(customDeSerializers: Partial<DeSerializers<BinaryT, BooleanT, ByteT, DecimalT, DoubleT, FloatT, Int16T, Int32T, Int64T, GuidT, SByteT, SingleT, StringT, AnyT>>): CustomDeSerializers<typeof customDeSerializers>;
/**
* @internal
* Type of the full set of (de-)serialization functions, that include custom (de-)serializers (aka. default (de-)serializers type merged with custom (de-)serializers type).
*/
export type CustomDeSerializers<T> = DeSerializers<CustomOrDefaultType<T, 'Edm.Binary', DefaultDeSerializers>, CustomOrDefaultType<T, 'Edm.Boolean', DefaultDeSerializers>, CustomOrDefaultType<T, 'Edm.Byte', DefaultDeSerializers>, CustomOrDefaultType<T, 'Edm.Decimal', DefaultDeSerializers>, CustomOrDefaultType<T, 'Edm.Double', DefaultDeSerializers>, CustomOrDefaultType<T, 'Edm.Float', DefaultDeSerializers>, CustomOrDefaultType<T, 'Edm.Int16', DefaultDeSerializers>, CustomOrDefaultType<T, 'Edm.Int32', DefaultDeSerializers>, CustomOrDefaultType<T, 'Edm.Int64', DefaultDeSerializers>, CustomOrDefaultType<T, 'Edm.Guid', DefaultDeSerializers>, CustomOrDefaultType<T, 'Edm.SByte', DefaultDeSerializers>, CustomOrDefaultType<T, 'Edm.Single', DefaultDeSerializers>, CustomOrDefaultType<T, 'Edm.String', DefaultDeSerializers>, CustomOrDefaultType<T, 'Edm.Any', DefaultDeSerializers>>;