1 | "use strict";
|
2 |
|
3 | var __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 | };
|
14 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
15 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
16 | };
|
17 | Object.defineProperty(exports, "__esModule", { value: true });
|
18 | exports.tsToEdmV4 = exports.edmToTsV4 = exports.tsToEdm = exports.edmToTs = void 0;
|
19 | var moment_1 = __importDefault(require("moment"));
|
20 | var util_1 = require("@sap-cloud-sdk/util");
|
21 | var payload_value_converter_1 = require("../odata-common/payload-value-converter");
|
22 |
|
23 |
|
24 |
|
25 | function 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 | }
|
34 | exports.edmToTs = edmToTs;
|
35 | exports.edmToTsV4 = edmToTs;
|
36 |
|
37 |
|
38 |
|
39 | function 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 | }
|
48 | exports.tsToEdm = tsToEdm;
|
49 | exports.tsToEdmV4 = tsToEdm;
|
50 | function 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 | }
|
57 | function edmDateTimeOffsetToMoment(dateTime) {
|
58 | var prefix = 'YYYY-MM-DDTHH:mm';
|
59 |
|
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 | }
|
67 | function 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 | }
|
75 | function 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 | }
|
86 | function momentToEdmDate(value) {
|
87 | return value.format('YYYY-MM-DD');
|
88 | }
|
89 | function momentToEdmDateTimeOffsetToMoment(value) {
|
90 | return value.utc().format('YYYY-MM-DDTHH:mm:ss.SSS') + 'Z';
|
91 | }
|
92 | function durationToEdmDuration(value) {
|
93 | return value.toISOString();
|
94 | }
|
95 | function timeToEdmTimeOfDay(value) {
|
96 | return [value.hours, value.minutes, value.seconds]
|
97 | .map(function (timeComponent) { return padTimeComponent(timeComponent); })
|
98 | .join(':');
|
99 | }
|
100 | function 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 | }
|
106 | 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 });
|
107 | 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 });
|
108 |
|
\ | No newline at end of file |