UNPKG

4.43 kBJavaScriptView Raw
1"use strict";
2/* eslint-disable valid-jsdoc */
3var __assign = (this && this.__assign) || function () {
4 __assign = Object.assign || function(t) {
5 for (var s, i = 1, n = arguments.length; i < n; i++) {
6 s = arguments[i];
7 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
8 t[p] = s[p];
9 }
10 return t;
11 };
12 return __assign.apply(this, arguments);
13};
14var __importDefault = (this && this.__importDefault) || function (mod) {
15 return (mod && mod.__esModule) ? mod : { "default": mod };
16};
17Object.defineProperty(exports, "__esModule", { value: true });
18exports.tsToEdmV4 = exports.edmToTsV4 = exports.tsToEdm = exports.edmToTs = void 0;
19var moment_1 = __importDefault(require("moment"));
20var util_1 = require("@sap-cloud-sdk/util");
21var payload_value_converter_1 = require("../odata-common/payload-value-converter");
22/**
23 * @hidden
24 */
25function edmToTs(value, edmType) {
26 if (value === null || typeof value === 'undefined') {
27 return value;
28 }
29 if (deserializers[edmType]) {
30 return deserializers[edmType](value);
31 }
32 return value;
33}
34exports.edmToTs = edmToTs;
35exports.edmToTsV4 = edmToTs;
36/**
37 * @hidden
38 */
39function tsToEdm(value, edmType) {
40 if (value === null) {
41 return 'null';
42 }
43 if (serializers[edmType]) {
44 return serializers[edmType](value);
45 }
46 return value;
47}
48exports.tsToEdm = tsToEdm;
49exports.tsToEdmV4 = tsToEdm;
50function edmDateToMoment(date) {
51 var parsed = moment_1.default.utc(date, 'YYYY-MM-DD', true);
52 if (!parsed.isValid()) {
53 throw new Error("Provided date value " + date + " does not follow the Edm.Date pattern: YYYY-MM-DD");
54 }
55 return parsed;
56}
57function edmDateTimeOffsetToMoment(dateTime) {
58 var prefix = 'YYYY-MM-DDTHH:mm';
59 // In moment the Z is either Offset from UTC as +-HH:mm, +-HHmm, or Z
60 var validFormats = [prefix + "Z", prefix + ":ssZ", prefix + ":ss.SSSZ"];
61 var parsed = moment_1.default(dateTime, validFormats, true);
62 if (!parsed.isValid()) {
63 throw new Error("Provided date-time value " + dateTime + " does not follow the Edm.DateTimeOffset pattern: YYYY-MM-DDTHH:mm(:ss(.SSS))Z");
64 }
65 return parsed;
66}
67function edmDurationToMoment(value) {
68 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)?)?/;
69 var captured = durationPattern.exec(value);
70 if (!captured || captured[0] !== value) {
71 throw new Error("Provided duration value " + value + " does not follow the Edm.Duration pattern: +/- P0DT0H0M0S");
72 }
73 return moment_1.default.duration(value);
74}
75function edmTimeOfDayToTime(value) {
76 var timeComponents = /(\d{2,2}):(\d{2,2}):(\d{2,2}(\.\d{1,12}){0,1})?/.exec(value);
77 if (!timeComponents) {
78 throw new Error("Provided time value " + value + " does not follow the Edm.TimeOfDay pattern: HH:MM:SS(.S)");
79 }
80 return {
81 hours: parseInt(timeComponents[1]),
82 minutes: parseInt(timeComponents[2]),
83 seconds: parseFloat(timeComponents[3])
84 };
85}
86function momentToEdmDate(value) {
87 return value.format('YYYY-MM-DD');
88}
89function momentToEdmDateTimeOffsetToMoment(value) {
90 return value.utc().format('YYYY-MM-DDTHH:mm:ss.SSS') + 'Z';
91}
92function durationToEdmDuration(value) {
93 return value.toISOString();
94}
95function timeToEdmTimeOfDay(value) {
96 return [value.hours, value.minutes, value.seconds]
97 .map(function (timeComponent) { return padTimeComponent(timeComponent); })
98 .join(':');
99}
100function padTimeComponent(timeComponent) {
101 var _a = timeComponent.toString().split('.'), wholeNumber = _a[0], fractionalNumber = _a[1];
102 return fractionalNumber
103 ? [wholeNumber.padStart(2, '0'), fractionalNumber].join('.')
104 : wholeNumber.padStart(2, '0');
105}
106var 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 });
107var 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 });
108//# sourceMappingURL=payload-value-converter.js.map
\No newline at end of file