@@ -7,54 +7,44 @@ const validateParameter = (
7
7
) : boolean => {
8
8
const expected = expectedType . toLowerCase ( ) ;
9
9
10
- if ( expected === 'boolean' ) {
11
- return typeof parameter === 'boolean' ;
10
+ switch ( expected ) {
11
+ case 'boolean' :
12
+ return typeof parameter === 'boolean' ;
13
+ case 'number' :
14
+ return typeof parameter === 'number' ;
15
+ case 'string' :
16
+ return typeof parameter === 'string' ;
17
+ default :
18
+ return false ;
12
19
}
13
- if ( expected === 'number' ) {
14
- return typeof parameter === 'number' ;
15
- }
16
- if ( expected === 'string' ) {
17
- return typeof parameter === 'string' ;
18
- }
19
-
20
- return false ;
21
20
} ;
22
21
23
22
interface ValidationResult {
24
23
isValid : boolean ;
25
24
errors : {
26
- mandatory ? : Record < string , string > ;
27
- types ? : Record < string , string > ;
28
- message ? : string ;
25
+ mandatory : Record < string , string > ;
26
+ types : Record < string , string > ;
27
+ message : string ;
29
28
} ;
30
29
}
31
30
32
31
export default function componentParameters (
33
32
requestParameters : Record < string , string | number | boolean > ,
34
33
expectedParameters : Record < string , OcParameter > = { }
35
34
) : ValidationResult {
36
- const result : ValidationResult = { isValid : true , errors : { } } ;
37
- const mandatoryParameters : string [ ] = [ ] ;
38
-
39
- for ( const [ expectedParameterName , expectedParameter ] of Object . entries (
40
- expectedParameters
41
- ) ) {
42
- if ( expectedParameter . mandatory ) {
43
- mandatoryParameters . push ( expectedParameterName ) ;
44
- }
45
- }
35
+ const result : ValidationResult = {
36
+ isValid : true ,
37
+ errors : { mandatory : { } , types : { } , message : '' }
38
+ } ;
39
+ requestParameters = requestParameters || { } ;
40
+ expectedParameters = expectedParameters || { } ;
41
+ const mandatoryParameters : string [ ] = Object . entries ( expectedParameters )
42
+ . filter ( ( [ _ , expectedParameter ] ) => expectedParameter . mandatory )
43
+ . map ( ( [ expectedParameterName ] ) => expectedParameterName ) ;
46
44
47
45
for ( const mandatoryParameterName of mandatoryParameters ) {
48
- if (
49
- typeof requestParameters === 'object' &&
50
- // biome-ignore lint/suspicious/noPrototypeBuiltins: hasOwnProperty is fine
51
- ! requestParameters . hasOwnProperty ( mandatoryParameterName )
52
- ) {
53
- if ( ! result . errors . mandatory ) {
54
- result . errors . mandatory = { } ;
55
- result . isValid = false ;
56
- }
57
-
46
+ if ( ! ( mandatoryParameterName in requestParameters ) ) {
47
+ result . isValid = false ;
58
48
result . errors . mandatory [ mandatoryParameterName ] =
59
49
strings . errors . registry . MANDATORY_PARAMETER_MISSING_CODE ;
60
50
}
@@ -63,21 +53,27 @@ export default function componentParameters(
63
53
for ( const [ requestParameterName , requestParameter ] of Object . entries (
64
54
requestParameters
65
55
) ) {
66
- if (
67
- typeof expectedParameters === 'object' &&
68
- // biome-ignore lint/suspicious/noPrototypeBuiltins: hasOwnProperty is fine
69
- expectedParameters . hasOwnProperty ( requestParameterName )
70
- ) {
56
+ if ( expectedParameters [ requestParameterName ] ) {
71
57
const expectedType = expectedParameters [ requestParameterName ] . type ;
72
58
73
59
if ( ! validateParameter ( requestParameter , expectedType ) ) {
74
- if ( ! result . errors . types ) {
75
- result . errors . types = { } ;
76
- result . isValid = false ;
77
- }
78
-
60
+ result . isValid = false ;
79
61
result . errors . types [ requestParameterName ] =
80
62
strings . errors . registry . PARAMETER_WRONG_FORMAT_CODE ;
63
+ continue ; // Skip enum validation if type validation fails
64
+ }
65
+
66
+ const expectedValues = expectedParameters [ requestParameterName ] . enum ;
67
+ if (
68
+ expectedValues &&
69
+ ! ( expectedValues as any ) . includes ( requestParameter )
70
+ ) {
71
+ result . isValid = false ;
72
+ result . errors . types [ requestParameterName ] =
73
+ strings . errors . registry . PARAMETER_WRONG_VALUE (
74
+ requestParameterName ,
75
+ expectedValues as string [ ]
76
+ ) ;
81
77
}
82
78
}
83
79
}
0 commit comments