valgen 5.17.1 → 5.17.3
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/CHANGELOG.md +13 -1
- package/cjs/rules/type-rules/is-date.js +18 -2
- package/esm/rules/type-rules/is-date.js +18 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
## Changelog
|
|
2
2
|
|
|
3
|
-
### [v5.17.
|
|
3
|
+
### [v5.17.3](https://github.com/panates/valgen/compare/v5.17.2...v5.17.3) -
|
|
4
|
+
|
|
5
|
+
#### 🚀 New Features
|
|
6
|
+
|
|
7
|
+
- feat: isDate can parse date string without signs @Eray Hanoğlu
|
|
8
|
+
|
|
9
|
+
### [v5.17.2](https://github.com/panates/valgen/compare/v5.17.1...v5.17.2) - 29 July 2025
|
|
10
|
+
|
|
11
|
+
#### 🛠 Refactoring and Updates
|
|
12
|
+
|
|
13
|
+
- refactor: Minor date rule optimization @Eray Hanoğlu
|
|
14
|
+
|
|
15
|
+
### [v5.17.1](https://github.com/panates/valgen/compare/v5.17.0...v5.17.1) - 24 July 2025
|
|
4
16
|
|
|
5
17
|
#### 🪲 Fixes
|
|
6
18
|
|
|
@@ -65,6 +65,7 @@ function isDateString(options) {
|
|
|
65
65
|
}
|
|
66
66
|
// noinspection RegExpUnnecessaryNonCapturingGroup
|
|
67
67
|
const DATE_PATTERN = /^(\d{4})(?:-(0[0-9]|1[0-2]))?(?:-([0-2][0-9]|3[0-1]))?(?:[T ](?:([0-1][0-9]|2[0-4]):([0-5][0-9])(?::([0-5][0-9]))?(?:\.(\d{0,3}))?)?((?:[+-](0[0-9]|1[0-2])(?::(\d{2}))?)|Z)?)?$/;
|
|
68
|
+
const DATE_PATTERN2 = /^(\d{4,14})(?:\.(\d{1,3}))?$/;
|
|
68
69
|
function coerceDateString(input, precision) {
|
|
69
70
|
let dateParts;
|
|
70
71
|
let outPrecision = 0;
|
|
@@ -77,16 +78,31 @@ function coerceDateString(input, precision) {
|
|
|
77
78
|
String(d.getHours()).padStart(2, '0'),
|
|
78
79
|
String(d.getMinutes()).padStart(2, '0'),
|
|
79
80
|
String(d.getSeconds()).padStart(2, '0'),
|
|
80
|
-
String(d.getMilliseconds()).padStart(3, '0'),
|
|
81
81
|
];
|
|
82
|
+
if (d.getMilliseconds() > 0)
|
|
83
|
+
dateParts.push(String(d.getMilliseconds()).padStart(3, '0'));
|
|
82
84
|
}
|
|
83
85
|
else if (typeof input === 'string') {
|
|
84
86
|
const d = datefns.parseISO(input);
|
|
85
|
-
|
|
87
|
+
let m = DATE_PATTERN.exec(input);
|
|
86
88
|
if (m && datefns.isValid(d)) {
|
|
87
89
|
m.shift();
|
|
88
90
|
dateParts = m;
|
|
89
91
|
}
|
|
92
|
+
else {
|
|
93
|
+
m = DATE_PATTERN2.exec(input);
|
|
94
|
+
if (m) {
|
|
95
|
+
dateParts = [
|
|
96
|
+
m[1].substring(0, 4),
|
|
97
|
+
m[1].substring(4, 6),
|
|
98
|
+
m[1].substring(6, 8),
|
|
99
|
+
m[1].substring(8, 10),
|
|
100
|
+
m[1].substring(10, 12),
|
|
101
|
+
m[1].substring(12, 14),
|
|
102
|
+
m[2],
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
90
106
|
}
|
|
91
107
|
if (!dateParts)
|
|
92
108
|
return;
|
|
@@ -60,6 +60,7 @@ export function isDateString(options) {
|
|
|
60
60
|
}
|
|
61
61
|
// noinspection RegExpUnnecessaryNonCapturingGroup
|
|
62
62
|
const DATE_PATTERN = /^(\d{4})(?:-(0[0-9]|1[0-2]))?(?:-([0-2][0-9]|3[0-1]))?(?:[T ](?:([0-1][0-9]|2[0-4]):([0-5][0-9])(?::([0-5][0-9]))?(?:\.(\d{0,3}))?)?((?:[+-](0[0-9]|1[0-2])(?::(\d{2}))?)|Z)?)?$/;
|
|
63
|
+
const DATE_PATTERN2 = /^(\d{4,14})(?:\.(\d{1,3}))?$/;
|
|
63
64
|
function coerceDateString(input, precision) {
|
|
64
65
|
let dateParts;
|
|
65
66
|
let outPrecision = 0;
|
|
@@ -72,16 +73,31 @@ function coerceDateString(input, precision) {
|
|
|
72
73
|
String(d.getHours()).padStart(2, '0'),
|
|
73
74
|
String(d.getMinutes()).padStart(2, '0'),
|
|
74
75
|
String(d.getSeconds()).padStart(2, '0'),
|
|
75
|
-
String(d.getMilliseconds()).padStart(3, '0'),
|
|
76
76
|
];
|
|
77
|
+
if (d.getMilliseconds() > 0)
|
|
78
|
+
dateParts.push(String(d.getMilliseconds()).padStart(3, '0'));
|
|
77
79
|
}
|
|
78
80
|
else if (typeof input === 'string') {
|
|
79
81
|
const d = datefns.parseISO(input);
|
|
80
|
-
|
|
82
|
+
let m = DATE_PATTERN.exec(input);
|
|
81
83
|
if (m && datefns.isValid(d)) {
|
|
82
84
|
m.shift();
|
|
83
85
|
dateParts = m;
|
|
84
86
|
}
|
|
87
|
+
else {
|
|
88
|
+
m = DATE_PATTERN2.exec(input);
|
|
89
|
+
if (m) {
|
|
90
|
+
dateParts = [
|
|
91
|
+
m[1].substring(0, 4),
|
|
92
|
+
m[1].substring(4, 6),
|
|
93
|
+
m[1].substring(6, 8),
|
|
94
|
+
m[1].substring(8, 10),
|
|
95
|
+
m[1].substring(10, 12),
|
|
96
|
+
m[1].substring(12, 14),
|
|
97
|
+
m[2],
|
|
98
|
+
];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
85
101
|
}
|
|
86
102
|
if (!dateParts)
|
|
87
103
|
return;
|