@alexdevco/common 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/utils/ms.util.d.ts +5 -0
- package/dist/utils/ms.util.js +63 -0
- package/package.json +1 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
type TUnit = 'Years' | 'Year' | 'Yrs' | 'Yr' | 'Y' | 'Weeks' | 'Week' | 'W' | 'Days' | 'Day' | 'D' | 'Hours' | 'Hour' | 'Hrs' | 'Hr' | 'H' | 'Minutes' | 'Minute' | 'Mins' | 'Min' | 'M' | 'Seconds' | 'Second' | 'Secs' | 'Sec' | 's' | 'Milliseconds' | 'Millisecond' | 'Msecs' | 'Msec' | 'Ms';
|
|
2
|
+
type TUnitAnyCase = TUnit | Uppercase<TUnit> | Lowercase<TUnit>;
|
|
3
|
+
export type TStringValue = `${number}` | `${number}${TUnitAnyCase}` | `${number} ${TUnitAnyCase}`;
|
|
4
|
+
export declare function ms(str: TStringValue): number;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ms = ms;
|
|
4
|
+
const sec = 1000;
|
|
5
|
+
const min = sec * 60;
|
|
6
|
+
const hour = min * 60;
|
|
7
|
+
const day = hour * 24;
|
|
8
|
+
const week = day * 7;
|
|
9
|
+
const year = day * 365.25;
|
|
10
|
+
function ms(str) {
|
|
11
|
+
if (typeof str !== 'string' || str.length === 0 || str.length > 100) {
|
|
12
|
+
throw new Error('Значение, переданное в функцию ms(), должно быть строкой длиной от 1 до 99 символов');
|
|
13
|
+
}
|
|
14
|
+
const match = /^(?<value>-?(?:\d+)?\.?\d+) *(?<type>milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);
|
|
15
|
+
const groups = match?.groups;
|
|
16
|
+
if (!groups) {
|
|
17
|
+
return NaN;
|
|
18
|
+
}
|
|
19
|
+
const num = parseFloat(groups.value);
|
|
20
|
+
const type = (groups.type || 'ms').toLowerCase();
|
|
21
|
+
switch (type) {
|
|
22
|
+
case 'years':
|
|
23
|
+
case 'year':
|
|
24
|
+
case 'yrs':
|
|
25
|
+
case 'yr':
|
|
26
|
+
case 'y':
|
|
27
|
+
return num * year;
|
|
28
|
+
case 'weeks':
|
|
29
|
+
case 'week':
|
|
30
|
+
case 'w':
|
|
31
|
+
return num * week;
|
|
32
|
+
case 'days':
|
|
33
|
+
case 'day':
|
|
34
|
+
case 'd':
|
|
35
|
+
return num * day;
|
|
36
|
+
case 'hours':
|
|
37
|
+
case 'hour':
|
|
38
|
+
case 'hrs':
|
|
39
|
+
case 'hr':
|
|
40
|
+
case 'h':
|
|
41
|
+
return num * hour;
|
|
42
|
+
case 'minutes':
|
|
43
|
+
case 'minute':
|
|
44
|
+
case 'mins':
|
|
45
|
+
case 'min':
|
|
46
|
+
case 'm':
|
|
47
|
+
return num * min;
|
|
48
|
+
case 'seconds':
|
|
49
|
+
case 'second':
|
|
50
|
+
case 'secs':
|
|
51
|
+
case 'sec':
|
|
52
|
+
case 's':
|
|
53
|
+
return num * sec;
|
|
54
|
+
case 'milliseconds':
|
|
55
|
+
case 'millisecond':
|
|
56
|
+
case 'msecs':
|
|
57
|
+
case 'msec':
|
|
58
|
+
case 'ms':
|
|
59
|
+
return num;
|
|
60
|
+
default:
|
|
61
|
+
throw new Error(`Ошибка: единица времени ${type} была распознана, но не существует соответствующего случая. Пожалуйста, проверьте введенные данные`);
|
|
62
|
+
}
|
|
63
|
+
}
|