UNPKG

@sap-cloud-sdk/odata-common

Version:

SAP Cloud SDK for JavaScript common functions of OData client generator and OpenAPI clint generator.

145 lines 5.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultDeSerializers = exports.defaultDeSerializersRaw = void 0; exports.wrapDefaultDeSerializers = wrapDefaultDeSerializers; const util_1 = require("@sap-cloud-sdk/util"); const payload_value_converter_1 = require("./payload-value-converter"); const uri_value_converter_1 = require("./uri-value-converter"); /** * @internal * Default (de-)serializers without `null` and `undefined` handling. */ exports.defaultDeSerializersRaw = { 'Edm.Binary': { deserialize: util_1.identity, serialize: util_1.identity, serializeToUri: (value, serialize) => `X'${serialize(value)}'` }, 'Edm.Boolean': { deserialize: util_1.identity, serialize: util_1.identity, serializeToUri: (value, serialize) => String(serialize(value)) }, 'Edm.Byte': { deserialize: Number, serialize: Number, serializeToUri: (value, serialize) => String(serialize(value)) }, 'Edm.Double': { deserialize: payload_value_converter_1.deserializeToNumber, serialize: payload_value_converter_1.serializeFromNumber, serializeToUri: (value, serialize) => { const serialized = serialize(value); return (0, uri_value_converter_1.isInfOrNan)(serialized) ? serialized : `${serialized}D`; } }, 'Edm.Float': { deserialize: payload_value_converter_1.deserializeToNumber, serialize: payload_value_converter_1.serializeFromNumber, serializeToUri: (value, serialize) => { const serialized = serialize(value); return (0, uri_value_converter_1.isInfOrNan)(serialized) ? serialized : `${serialized}F`; } }, 'Edm.Int16': { deserialize: Number, serialize: Number, serializeToUri: (value, serialize) => String(serialize(value)) }, 'Edm.Int32': { deserialize: Number, serialize: Number, serializeToUri: (value, serialize) => String(serialize(value)) }, 'Edm.Int64': { deserialize: payload_value_converter_1.deserializeToBigNumber, serialize: payload_value_converter_1.serializeFromBigNumber, serializeToUri: (value, serialize) => `${serialize(value)}L` }, 'Edm.SByte': { deserialize: Number, serialize: Number, serializeToUri: (value, serialize) => String(serialize(value)) }, 'Edm.Single': { deserialize: payload_value_converter_1.deserializeToNumber, serialize: payload_value_converter_1.serializeFromNumber, serializeToUri: (value, serialize) => { const serialized = serialize(value); return (0, uri_value_converter_1.isInfOrNan)(serialized) ? serialized : `${serialized}F`; } }, 'Edm.String': { deserialize: util_1.identity, serialize: util_1.identity, serializeToUri: (value, serialize) => (0, uri_value_converter_1.convertToUriForEdmString)(serialize(value)) }, 'Edm.Any': { deserialize: util_1.identity, serialize: util_1.identity, serializeToUri: (value, serialize) => String(serialize(value)) }, /* DeSerializers with v2 and v4 specific URI serializer defaults. */ 'Edm.Decimal': { deserialize: payload_value_converter_1.deserializeToBigNumber, serialize: payload_value_converter_1.serializeFromBigNumber }, 'Edm.Guid': { deserialize: payload_value_converter_1.validateGuid, serialize: util_1.identity } }; /** * Wraps the given default serialization function with a check for null values. * @param serialize - Serialization function to wrap. * @returns The wrapped serialization function. */ function wrapDefaultSerializer(serialize) { return function (value, precision) { if (value === null) { return 'null'; } if (serialize) { return serialize(value, precision); } return value; }; } /** * Wraps the given default deserialization function with a check for nullish values. * @param deserialize - Deserialization function to wrap. * @returns The wrapped deserialization function. */ function wrapDefaultDeserializer(deserialize) { return function (value) { if ((0, util_1.isNullish)(value)) { return value; } if (deserialize) { return deserialize(value); } return value; }; } /** * @internal * Wraps the given default (de-)serialization functions with a check for nullish values. * @param deSerializers - (De-)Serializers to wrap. * @returns The wrapped (de-)serializers. */ function wrapDefaultDeSerializers(deSerializers) { return Object.entries(deSerializers).reduce((entries, [edmType, { deserialize, serialize, serializeToUri }]) => ({ ...entries, [edmType]: { deserialize: wrapDefaultDeserializer(deserialize), serialize: wrapDefaultSerializer(serialize), serializeToUri } }), {}); } /** * @internal * Default (de-)serializers without `null` and `undefined` handling. */ exports.defaultDeSerializers = wrapDefaultDeSerializers(exports.defaultDeSerializersRaw); //# sourceMappingURL=default-de-serializers.js.map