@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
JavaScript
;
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