@@ -10,108 +10,144 @@ export const defaultPaginationKeywords = [
10
10
'start' ,
11
11
] as const ;
12
12
13
- // TODO: use valueToObject for the whole parser config
14
13
export const getParser = ( userConfig : UserConfig ) : Config [ 'parser' ] => {
15
- const parser : Config [ 'parser' ] = {
16
- ...userConfig . parser ,
17
- hooks : { } ,
18
- pagination : {
19
- keywords : defaultPaginationKeywords ,
20
- } ,
21
- transforms : {
22
- enums : {
23
- case : 'PascalCase' ,
24
- enabled : false ,
25
- mode : 'root' ,
26
- name : '{{name}}Enum' ,
14
+ const parser = valueToObject ( {
15
+ defaultValue : {
16
+ hooks : { } ,
17
+ pagination : {
18
+ keywords : defaultPaginationKeywords ,
27
19
} ,
28
- propertiesRequiredByDefault : false ,
29
- readWrite : {
30
- enabled : true ,
31
- requests : {
32
- case : 'preserve ' ,
33
- name : '{{name}}Writable ' ,
20
+ transforms : {
21
+ enums : {
22
+ case : 'PascalCase' ,
23
+ enabled : false ,
24
+ mode : 'root ' ,
25
+ name : '{{name}}Enum ' ,
34
26
} ,
35
- responses : {
36
- case : 'preserve' ,
37
- name : '{{name}}' ,
27
+ propertiesRequiredByDefault : false ,
28
+ readWrite : {
29
+ enabled : true ,
30
+ requests : {
31
+ case : 'preserve' ,
32
+ name : '{{name}}Writable' ,
33
+ } ,
34
+ responses : {
35
+ case : 'preserve' ,
36
+ name : '{{name}}' ,
37
+ } ,
38
38
} ,
39
39
} ,
40
+ validate_EXPERIMENTAL : false ,
40
41
} ,
41
- validate_EXPERIMENTAL : false ,
42
- } ;
43
-
44
- if ( userConfig . parser ) {
45
- if ( userConfig . parser . hooks ) {
46
- parser . hooks = userConfig . parser . hooks ;
47
- }
48
-
49
- if ( userConfig . parser . pagination ?. keywords ) {
50
- parser . pagination . keywords = userConfig . parser . pagination . keywords ;
51
- }
52
-
53
- if ( userConfig . parser . transforms ) {
54
- if ( userConfig . parser . transforms . enums !== undefined ) {
55
- parser . transforms . enums = valueToObject ( {
42
+ mappers : {
43
+ object : ( fields , defaultValue ) => ( {
44
+ ...fields ,
45
+ pagination : valueToObject ( {
56
46
defaultValue : {
57
- ...parser . transforms . enums ,
58
- enabled : Boolean ( userConfig . parser . transforms . enums ) ,
59
- } ,
60
- mappers : {
61
- boolean : ( enabled ) => ( { enabled } ) ,
62
- string : ( mode ) => ( { mode } ) ,
47
+ ...( defaultValue . pagination as Extract <
48
+ typeof defaultValue . pagination ,
49
+ Record < string , unknown >
50
+ > ) ,
63
51
} ,
64
- value : userConfig . parser . transforms . enums ,
65
- } ) as typeof parser . transforms . enums ;
66
- }
67
-
68
- if (
69
- userConfig . parser . transforms . propertiesRequiredByDefault !== undefined
70
- ) {
71
- parser . transforms . propertiesRequiredByDefault =
72
- userConfig . parser . transforms . propertiesRequiredByDefault ;
73
- }
74
-
75
- if ( userConfig . parser . transforms . readWrite !== undefined ) {
76
- parser . transforms . readWrite = valueToObject ( {
52
+ value : fields . pagination ,
53
+ } ) ,
54
+ transforms : valueToObject ( {
77
55
defaultValue : {
78
- ...parser . transforms . readWrite ,
79
- enabled : Boolean ( userConfig . parser . transforms . readWrite ) ,
56
+ ...( defaultValue . transforms as Extract <
57
+ typeof defaultValue . transforms ,
58
+ Record < string , unknown >
59
+ > ) ,
80
60
} ,
81
61
mappers : {
82
- boolean : ( enabled ) => ( { enabled } ) ,
83
- object : ( fields ) => ( {
62
+ object : ( fields , defaultValue ) => ( {
84
63
...fields ,
85
- requests : valueToObject ( {
86
- defaultValue : parser . transforms . readWrite . requests ,
64
+ enums : valueToObject ( {
65
+ defaultValue : {
66
+ ...( defaultValue . enums as Extract <
67
+ typeof defaultValue . enums ,
68
+ Record < string , unknown >
69
+ > ) ,
70
+ enabled :
71
+ fields . enums !== undefined
72
+ ? Boolean ( fields . enums )
73
+ : (
74
+ defaultValue . enums as Extract <
75
+ typeof defaultValue . enums ,
76
+ Record < string , unknown >
77
+ >
78
+ ) . enabled ,
79
+ } ,
87
80
mappers : {
88
- function : ( name ) => ( { name } ) ,
89
- string : ( name ) => ( { name } ) ,
81
+ boolean : ( enabled ) => ( { enabled } ) ,
82
+ string : ( mode ) => ( { mode } ) ,
90
83
} ,
91
- value : fields . requests ,
84
+ value : fields . enums ,
92
85
} ) ,
93
- responses : valueToObject ( {
94
- defaultValue : parser . transforms . readWrite . responses ,
86
+ propertiesRequiredByDefault :
87
+ fields . propertiesRequiredByDefault !== undefined
88
+ ? fields . propertiesRequiredByDefault
89
+ : defaultValue . propertiesRequiredByDefault ,
90
+ readWrite : valueToObject ( {
91
+ defaultValue : {
92
+ ...( defaultValue . readWrite as Extract <
93
+ typeof defaultValue . readWrite ,
94
+ Record < string , unknown >
95
+ > ) ,
96
+ enabled :
97
+ fields . readWrite !== undefined
98
+ ? Boolean ( fields . readWrite )
99
+ : (
100
+ defaultValue . readWrite as Extract <
101
+ typeof defaultValue . readWrite ,
102
+ Record < string , unknown >
103
+ >
104
+ ) . enabled ,
105
+ } ,
95
106
mappers : {
96
- function : ( name ) => ( { name } ) ,
97
- string : ( name ) => ( { name } ) ,
107
+ boolean : ( enabled ) => ( { enabled } ) ,
108
+ object : ( fields , defaultValue ) => ( {
109
+ ...fields ,
110
+ requests : valueToObject ( {
111
+ defaultValue : {
112
+ ...( defaultValue . requests as Extract <
113
+ typeof defaultValue . requests ,
114
+ Record < string , unknown >
115
+ > ) ,
116
+ } ,
117
+ mappers : {
118
+ function : ( name ) => ( { name } ) ,
119
+ string : ( name ) => ( { name } ) ,
120
+ } ,
121
+ value : fields . requests ,
122
+ } ) ,
123
+ responses : valueToObject ( {
124
+ defaultValue : {
125
+ ...( defaultValue . responses as Extract <
126
+ typeof defaultValue . responses ,
127
+ Record < string , unknown >
128
+ > ) ,
129
+ } ,
130
+ mappers : {
131
+ function : ( name ) => ( { name } ) ,
132
+ string : ( name ) => ( { name } ) ,
133
+ } ,
134
+ value : fields . responses ,
135
+ } ) ,
136
+ } ) ,
98
137
} ,
99
- value : fields . responses ,
138
+ value : fields . readWrite ,
100
139
} ) ,
101
140
} ) ,
102
141
} ,
103
- value : userConfig . parser . transforms . readWrite ,
104
- } ) as typeof parser . transforms . readWrite ;
105
- }
106
- }
107
-
108
- if ( userConfig . parser . validate_EXPERIMENTAL ) {
109
- parser . validate_EXPERIMENTAL =
110
- userConfig . parser . validate_EXPERIMENTAL === true
111
- ? 'warn'
112
- : userConfig . parser . validate_EXPERIMENTAL ;
113
- }
114
- }
115
-
116
- return parser ;
142
+ value : fields . transforms ,
143
+ } ) ,
144
+ validate_EXPERIMENTAL :
145
+ fields . validate_EXPERIMENTAL === true
146
+ ? 'warn'
147
+ : fields . validate_EXPERIMENTAL ,
148
+ } ) ,
149
+ } ,
150
+ value : userConfig . parser ,
151
+ } ) ;
152
+ return parser as Config [ 'parser' ] ;
117
153
} ;
0 commit comments