@@ -79,47 +79,50 @@ export function getRequestParamFromMethod(method: MethodDeclaration) {
79
79
80
80
// we need to get the properties of the object
81
81
82
+ const params = method
83
+ . getParameters ( )
84
+ . map ( ( param ) => {
85
+ const paramNodes = extractPropertiesFromObjectParam ( param ) ;
86
+ return paramNodes . map ( ( refParam ) => ( {
87
+ name : refParam . name ,
88
+ typeName : refParam . type . getText ( ) ,
89
+ optional : refParam . optional ,
90
+ } ) ) ;
91
+ } )
92
+ . flat ( ) ;
93
+
94
+ const areAllOptional = params . every ( ( param ) => param . optional ) ;
95
+
82
96
return ts . factory . createParameterDeclaration (
83
97
undefined ,
84
98
undefined ,
85
99
ts . factory . createObjectBindingPattern (
86
- method
87
- . getParameters ( )
88
- . map ( ( param ) => {
89
- const paramNodes = extractPropertiesFromObjectParam ( param ) ;
90
- return paramNodes . map ( ( refParam ) =>
91
- ts . factory . createBindingElement (
92
- undefined ,
93
- undefined ,
94
- ts . factory . createIdentifier ( refParam . name ) ,
95
- undefined
96
- )
97
- ) ;
98
- } )
99
- . flat ( )
100
+ params . map ( ( refParam ) =>
101
+ ts . factory . createBindingElement (
102
+ undefined ,
103
+ undefined ,
104
+ ts . factory . createIdentifier ( refParam . name ) ,
105
+ undefined
106
+ )
107
+ )
100
108
) ,
101
109
undefined ,
102
110
ts . factory . createTypeLiteralNode (
103
- method
104
- . getParameters ( )
105
- . map ( ( param ) => {
106
- const paramNodes = extractPropertiesFromObjectParam ( param ) ;
107
- return paramNodes . map ( ( refParam ) => {
108
- return ts . factory . createPropertySignature (
109
- undefined ,
110
- ts . factory . createIdentifier ( refParam . name ) ,
111
- refParam . optional
112
- ? ts . factory . createToken ( ts . SyntaxKind . QuestionToken )
113
- : undefined ,
114
- // param.hasQuestionToken() ?? param.getInitializer()?.compilerNode
115
- // ? ts.factory.createToken(ts.SyntaxKind.QuestionToken)
116
- // : param.getQuestionTokenNode()?.compilerNode,
117
- ts . factory . createTypeReferenceNode ( refParam . type . getText ( ) )
118
- ) ;
119
- } ) ;
120
- } )
121
- . flat ( )
122
- )
111
+ params . map ( ( refParam ) => {
112
+ return ts . factory . createPropertySignature (
113
+ undefined ,
114
+ ts . factory . createIdentifier ( refParam . name ) ,
115
+ refParam . optional
116
+ ? ts . factory . createToken ( ts . SyntaxKind . QuestionToken )
117
+ : undefined ,
118
+ // param.hasQuestionToken() ?? param.getInitializer()?.compilerNode
119
+ // ? ts.factory.createToken(ts.SyntaxKind.QuestionToken)
120
+ // : param.getQuestionTokenNode()?.compilerNode,
121
+ ts . factory . createTypeReferenceNode ( refParam . typeName )
122
+ ) ;
123
+ } )
124
+ ) ,
125
+ areAllOptional ? ts . factory . createObjectLiteralExpression ( ) : undefined
123
126
) ;
124
127
}
125
128
0 commit comments