• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ryanhefner / react-timecode / 489b3e1f-9aff-43c8-9ddf-f1804d19966f

pending completion
489b3e1f-9aff-43c8-9ddf-f1804d19966f

push

circleci

ryanhefner
1.3.0

44 of 44 branches covered (100.0%)

Branch coverage included in aggregate %.

53 of 53 relevant lines covered (100.0%)

24.34 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

100.0
/src/utils.js
1
const SECOND = 1000
2✔
2
const MINUTE = 60 * SECOND
2✔
3
const HOUR = 60 * MINUTE
2✔
4

5
/**
6
 * parseTime
7
 *
8
 * @param {Number} time
9
 * @returns {{ hours: Number, minutes: Number, seconds: Number, milliseconds: Number }}}
10
 */
11
export const parseTime = (time) => {
2✔
12
  let milliseconds = time
48✔
13

14
  const hours = milliseconds >= HOUR
48✔
15
    ? Math.floor(milliseconds / HOUR)
16
    : 0;
17

18
  if (hours) {
48✔
19
    milliseconds -= hours * HOUR;
14✔
20
  }
21

22
  const minutes = milliseconds >= MINUTE
48✔
23
    ? Math.floor(milliseconds / MINUTE)
24
    : 0;
25

26
  if (minutes) {
48✔
27
    milliseconds -= minutes * MINUTE;
5✔
28
  }
29

30
  const seconds = milliseconds >= SECOND
48✔
31
    ? Math.floor(milliseconds / SECOND)
32
    : 0;
33

34
  if (seconds) {
48✔
35
    milliseconds -= seconds * SECOND;
7✔
36
  }
37

38
  return { hours, minutes, seconds, milliseconds };
48✔
39
}
40

41
/**
42
 * pad
43
 *
44
 * @param {Number} number
45
 * @param {Number} length
46
 * @returns {String}
47
 */
48
export const pad = (number, length = 2) => {
2✔
49
  const numberLength = number.toString().length
98✔
50

51
  if (numberLength < length) {
98✔
52
    const diff = length - numberLength;
82✔
53
    let padding = ''
82✔
54

55
    while (padding.length < diff) {
82✔
56
      padding += '0'
97✔
57
    }
58

59
    return `${padding}${number}`
82✔
60
  }
61

62
  return `${number}`
16✔
63
}
64

65
/**
66
 * formatMilliseconds
67
 *
68
 * @param {Number} milliseconds
69
 * @param {Number} length
70
 * @returns {String}
71
 */
72
export const formatMilliseconds = (milliseconds, length = 3) => {
2✔
73
  return pad((milliseconds / 1000).toFixed(length) * 1000, length);
22✔
74
}
75

76
/**
77
 * formatTimecode
78
 *
79
 * @param {Object} options
80
 * @param {String} options.format
81
 * @param {Number} options.time
82
 * @returns {String}
83
 */
84
export const formatTimecode = ({ format, time }) => {
2✔
85
  const { hours, minutes, seconds, milliseconds } = parseTime(time)
39✔
86

87
  switch (format) {
39✔
88
    case 'HH:mm:ss.SSS':
89
      return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}.${formatMilliseconds(milliseconds)}`;
2✔
90

91
    case 'H:mm:ss.SSS':
92
      return `${hours}:${pad(minutes)}:${pad(seconds)}.${formatMilliseconds(milliseconds)}`;
2✔
93

94
    case 'H:?mm:ss.SSS':
95
      if (hours) {
4✔
96
        return `${hours}:${pad(minutes)}:${pad(seconds)}.${formatMilliseconds(milliseconds)}`;
2✔
97
      }
98

99
      return `${pad(minutes)}:${pad(seconds)}.${formatMilliseconds(milliseconds)}`;
2✔
100

101
    case 'H:?m:ss.SSS':
102
      if (hours) {
4✔
103
        return `${hours}:${pad(minutes)}:${pad(seconds)}.${formatMilliseconds(milliseconds)}`;
2✔
104
      }
105

106
      return `${minutes}:${pad(seconds)}.${formatMilliseconds(milliseconds)}`;
2✔
107

108
    case 'HH:mm:ss':
109
      return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;
2✔
110

111
    case 'H:mm:ss':
112
      return `${hours}:${pad(minutes)}:${pad(seconds)}`;
2✔
113

114
    case 'H:?mm:ss':
115
      if (hours) {
5✔
116
        return `${hours}:${pad(minutes)}:${pad(seconds)}`;
2✔
117
      }
118

119
      return `${pad(minutes)}:${pad(seconds)}`;
3✔
120

121
    case 'H:mm':
122
      return `${hours}:${pad(minutes)}`;
2✔
123

124
    case 's.SSS':
125
      return `${seconds}.${formatMilliseconds(milliseconds)}`;
2✔
126

127
    case 's.SS':
128
      return `${seconds}.${formatMilliseconds(milliseconds, 2)}`;
2✔
129

130
    case 'mm:ss':
131
      return `${pad(minutes + (hours * 60))}:${pad(seconds)}`;
2✔
132

133
    case 'H:?m:ss':
134
    default:
135
      if (hours) {
10✔
136
        return `${hours}:${pad(minutes)}:${pad(seconds)}`;
4✔
137
      }
138

139
      return `${minutes}:${pad(seconds)}`;
6✔
140
  }
141
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc