src/common/date-util.js   A
last analyzed

Complexity

Total Complexity 10
Complexity/F 2

Size

Lines of Code 37
Function Count 5

Duplication

Duplicated Lines 0
Ratio 0 %

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 0
wmc 10
c 2
b 0
f 0
nc 4
mnd 3
bc 5
fnc 5
dl 0
loc 37
ccs 13
cts 13
cp 1
crap 0
rs 10
bpm 1
cpm 2
noi 0

1 Function

Rating   Name   Duplication   Size   Complexity  
B date-util.js ➔ ??? 0 12 5
1
/**
2
 * Date Util functions
3
 *
4
 * @since 1.0.0
5
 */
6
7 5
const moment = require('moment');
8
9
/**
10
 * Format all dates in the received model
11
 * @param {Array|Date|Object} model
12
 * @param {string} [formatString]
13
 * @returns {*}
14
 */
15 5
exports.formatDates = (model, formatString, utcOffset) => {
16 275
  if (model instanceof Array) {
17 64
    return model.map(item => exports.formatDates(item, formatString, utcOffset));
18 244
  } else if (model instanceof Date || model instanceof moment) {
19 67
    return exports.formatDate(model, formatString, utcOffset);
20 177
  } else if (model instanceof Object) {
21 33
    const result = {};
22 193
    Object.keys(model).forEach((key) => { result[key] = exports.formatDates(model[key], formatString, utcOffset); });
23 33
    return result;
24
  }
25 144
  return model;
26
};
27
28
/**
29
 * Localize date
30
 * @param {Date} date
31
 * @param {number} [utcOffset]
32
 * @returns {moment}
33
 */
34 67
exports.toLocalDate = (date, utcOffset) => moment(date).utcOffset(typeof utcOffset === 'undefined' ? 9 : utcOffset);
35
36
/**
37
 * Format date to string
38
 * @param {Date} date
39
 * @param {string} [formatString]
40
 * @param {number} [utcOffset]
41
 * @returns {string}
42
 */
43
exports.formatDate = (date, formatString, utcOffset) => exports.toLocalDate(date, utcOffset).format(formatString);
44