UNPKG

@sap-cloud-sdk/core

Version:
108 lines 4.49 kB
"use strict"; /* eslint-disable valid-jsdoc */ var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.tsToEdmV4 = exports.edmToTsV4 = exports.tsToEdm = exports.edmToTs = void 0; var moment_1 = __importDefault(require("moment")); var util_1 = require("@sap-cloud-sdk/util"); var payload_value_converter_1 = require("../odata-common/payload-value-converter"); /** * @hidden */ function edmToTs(value, edmType) { if (value === null || typeof value === 'undefined') { return value; } if (deserializers[edmType]) { return deserializers[edmType](value); } return value; } exports.edmToTs = edmToTs; exports.edmToTsV4 = edmToTs; /** * @hidden */ function tsToEdm(value, edmType) { if (value === null) { return 'null'; } if (serializers[edmType]) { return serializers[edmType](value); } return value; } exports.tsToEdm = tsToEdm; exports.tsToEdmV4 = tsToEdm; function edmDateToMoment(date) { var parsed = moment_1.default.utc(date, 'YYYY-MM-DD', true); if (!parsed.isValid()) { throw new Error("Provided date value ".concat(date, " does not follow the Edm.Date pattern: YYYY-MM-DD")); } return parsed; } function edmDateTimeOffsetToMoment(dateTime) { var prefix = 'YYYY-MM-DDTHH:mm'; // In moment the Z is either Offset from UTC as +-HH:mm, +-HHmm, or Z var validFormats = ["".concat(prefix, "Z"), "".concat(prefix, ":ssZ"), "".concat(prefix, ":ss.SSSZ")]; var parsed = (0, moment_1.default)(dateTime, validFormats, true); if (!parsed.isValid()) { throw new Error("Provided date-time value ".concat(dateTime, " does not follow the Edm.DateTimeOffset pattern: YYYY-MM-DDTHH:mm(:ss(.SSS))Z")); } return parsed; } function edmDurationToMoment(value) { var durationPattern = /([+-]{1,1})?P(\d{1,2}D)?(T(\d{1,2}H)?(\d{1,2}M)?(\d{1,2}S)?(\d{2,2}\.\d+S)?)?/; var captured = durationPattern.exec(value); if (!captured || captured[0] !== value) { throw new Error("Provided duration value ".concat(value, " does not follow the Edm.Duration pattern: +/- P0DT0H0M0S")); } return moment_1.default.duration(value); } function edmTimeOfDayToTime(value) { var timeComponents = /(\d{2,2}):(\d{2,2}):(\d{2,2}(\.\d{1,12}){0,1})?/.exec(value); if (!timeComponents) { throw new Error("Provided time value ".concat(value, " does not follow the Edm.TimeOfDay pattern: HH:MM:SS(.S)")); } return { hours: parseInt(timeComponents[1]), minutes: parseInt(timeComponents[2]), seconds: parseFloat(timeComponents[3]) }; } function momentToEdmDate(value) { return value.format('YYYY-MM-DD'); } function momentToEdmDateTimeOffsetToMoment(value) { return value.utc().format('YYYY-MM-DDTHH:mm:ss.SSS') + 'Z'; } function durationToEdmDuration(value) { return value.toISOString(); } function timeToEdmTimeOfDay(value) { return [value.hours, value.minutes, value.seconds] .map(function (timeComponent) { return padTimeComponent(timeComponent); }) .join(':'); } function padTimeComponent(timeComponent) { var _a = timeComponent.toString().split('.'), wholeNumber = _a[0], fractionalNumber = _a[1]; return fractionalNumber ? [wholeNumber.padStart(2, '0'), fractionalNumber].join('.') : wholeNumber.padStart(2, '0'); } var deserializers = __assign(__assign({}, payload_value_converter_1.deserializersCommon), { 'Edm.Date': edmDateToMoment, 'Edm.DateTimeOffset': edmDateTimeOffsetToMoment, 'Edm.Duration': edmDurationToMoment, 'Edm.TimeOfDay': edmTimeOfDayToTime, 'Edm.Enum': util_1.identity }); var serializers = __assign(__assign({}, payload_value_converter_1.serializersCommon), { 'Edm.Date': momentToEdmDate, 'Edm.DateTimeOffset': momentToEdmDateTimeOffsetToMoment, 'Edm.Duration': durationToEdmDuration, 'Edm.TimeOfDay': timeToEdmTimeOfDay, 'Edm.Enum': util_1.identity }); //# sourceMappingURL=payload-value-converter.js.map