@@ -9,35 +9,50 @@ export const dateParamErrorChecking = ({
9
9
finish_range_begin ?: string
10
10
finish_range_end ?: string
11
11
} ) => {
12
- // Error checking for start_range_begin and start_range_end
12
+ const currentDate = new Date ( )
13
+ const ninetyDaysAgo = new Date ( currentDate )
14
+ ninetyDaysAgo . setDate ( ninetyDaysAgo . getDate ( ) - 90 )
15
+
13
16
if ( start_range_begin && start_range_end ) {
17
+ if ( ! isValidDate ( start_range_begin ) || ! isValidDate ( start_range_end ) ) {
18
+ throw new Error ( "Invalid date format provided for start_range_begin or start_range_end." )
19
+ }
14
20
const startBeginDate = new Date ( start_range_begin )
15
21
const startEndDate = new Date ( start_range_end )
16
- const ninetyDaysAgo = new Date ( )
17
- ninetyDaysAgo . setDate ( ninetyDaysAgo . getDate ( ) - 90 )
18
-
19
22
if ( startBeginDate >= startEndDate ) {
20
23
throw new Error ( "start_range_end must be greater than start_range_begin." )
21
24
}
25
+ }
26
+
27
+ if ( start_range_begin && ! start_range_end ) {
28
+ const startBeginDate = new Date ( start_range_begin )
22
29
if ( startBeginDate < ninetyDaysAgo ) {
23
30
throw new Error ( "start_range_begin must be within the last 90 days if start_range_end is omitted." )
24
31
}
25
32
}
26
33
27
- // Error checking for finish_range_begin and finish_range_end
28
34
if ( finish_range_begin && finish_range_end ) {
35
+ if ( ! isValidDate ( finish_range_begin ) || ! isValidDate ( finish_range_end ) ) {
36
+ throw new Error ( "Invalid date format provided for finish_range_begin or finish_range_end." )
37
+ }
29
38
const finishBeginDate = new Date ( finish_range_begin )
30
39
const finishEndDate = new Date ( finish_range_end )
31
- const ninetyDaysAgo = new Date ( )
32
- ninetyDaysAgo . setDate ( ninetyDaysAgo . getDate ( ) - 90 )
33
-
34
40
if ( finishBeginDate >= finishEndDate ) {
35
41
throw new Error ( "finish_range_end must be greater than finish_range_begin." )
36
42
}
43
+ }
44
+
45
+ if ( finish_range_begin && ! finish_range_end ) {
46
+ const finishBeginDate = new Date ( finish_range_begin )
37
47
if ( finishBeginDate < ninetyDaysAgo ) {
38
48
throw new Error ( "finish_range_begin must be within the last 90 days if finish_range_end is omitted." )
39
49
}
40
50
}
41
51
42
52
return "PASS"
43
53
}
54
+
55
+ const isValidDate = ( dateString : string ) => {
56
+ const regex = / ^ \d { 4 } - \d { 2 } - \d { 2 } T \d { 2 } : \d { 2 } : \d { 2 } Z $ / // ISO 8601 format without milliseconds and UTC timezone
57
+ return regex . test ( dateString ) && ! isNaN ( Date . parse ( dateString ) )
58
+ }
0 commit comments