@@ -34,8 +34,8 @@ export const generateTemplate = async (
3434
3535 return {
3636 [ className ] : {
37- dts : await prettier . format ( dts , { parser : 'typescript' } ) ,
38- js : await prettier . format ( js , { parser : 'typescript' } ) ,
37+ dts : await prettier . format ( dts , { parser : 'typescript' , printWidth : 120 } ) ,
38+ js : await prettier . format ( js , { parser : 'typescript' , printWidth : 120 } ) ,
3939 } ,
4040 } ;
4141} ;
@@ -77,7 +77,7 @@ declare namespace ${className} {
7777export const generateMethodModeClass = ( className : string , metas : Metas ) => {
7878 return {
7979 dts : `
80- declare class ${ className } extends BaseOpenapiClient {
80+ declare class ${ className } <T extends object = object> extends BaseOpenapiClient<T> {
8181 ${ methods
8282 . map ( ( method ) => {
8383 if ( ! metas [ method ] . length ) return '' ;
@@ -90,12 +90,13 @@ declare class ${className} extends BaseOpenapiClient {
9090 . map ( ( meta ) => meta . uri ) ;
9191
9292 let opts : string ;
93+ const optType = `${ className } _${ method } _paths[K]['request'] & BaseOpenapiClient.UserInputOpts<T>` ;
9394 if ( optionalUris . length === uris . length ) {
94- opts = `[opts?: ${ className } _ ${ method } _paths[K]['request'] ]` ;
95+ opts = `[opts?: ${ optType } ]` ;
9596 } else if ( optionalUris . length === 0 ) {
96- opts = `[opts: ${ className } _ ${ method } _paths[K]['request'] ]` ;
97+ opts = `[opts: ${ optType } ]` ;
9798 } else {
98- opts = `K extends '${ optionalUris . join ( ' | ' ) } ' ? [opts?: ${ className } _ ${ method } _paths[K]['request']] : [opts: ${ className } _ ${ method } _paths[K]['request'] ]` ;
99+ opts = `K extends '${ optionalUris . join ( ' | ' ) } ' ? [opts?: ${ optType } ] : [opts: ${ optType } ]` ;
99100 }
100101
101102 return `${ method } <K extends keyof ${ className } _${ method } _paths>(
@@ -130,7 +131,7 @@ var ${className} = class extends BaseOpenapiClient {
130131export const generateUriModelClass = ( className : string , metas : Metas ) => {
131132 return {
132133 dts : `
133- declare class ${ className } extends BaseOpenapiClient {
134+ declare class ${ className } <T extends object = object> extends BaseOpenapiClient<T> {
134135 ${ methods
135136 . flatMap ( ( method ) => {
136137 return metas [ method ] . map ( ( meta ) => {
@@ -139,7 +140,7 @@ declare class ${className} extends BaseOpenapiClient {
139140
140141 return `
141142 ${ generateComments ( meta ) }
142- ${ camelCase ( meta . key ) } (opts${ optional ? '?' : '' } : ${ className } _${ method } _paths['${ meta . uri } ']['request']): Promise<${ className } _${ method } _paths['${ meta . uri } ']['response']>` ;
143+ ${ camelCase ( meta . key ) } (opts${ optional ? '?' : '' } : ${ className } _${ method } _paths['${ meta . uri } ']['request'] & BaseOpenapiClient.UserInputOpts<T> ): Promise<${ className } _${ method } _paths['${ meta . uri } ']['response']>` ;
143144 } ) ;
144145 } )
145146 . join ( '\n' ) }
@@ -178,7 +179,7 @@ export const generateUriModelClassWithNamespace = (className: string, metas: Met
178179
179180 return {
180181 dts : `
181- declare class ${ className } extends BaseOpenapiClient {
182+ declare class ${ className } <T extends object = object> extends BaseOpenapiClient<T> {
182183 ${ namespaces
183184 . map ( ( ns ) => {
184185 return `readonly ${ snakeCase ( ns ) } : {
@@ -192,7 +193,7 @@ declare class ${className} extends BaseOpenapiClient {
192193
193194 return `
194195 ${ generateComments ( meta ) }
195- ${ camelCase ( meta . key ) } (opts${ optional ? '?' : '' } : ${ className } _${ method } _paths['${ meta . uri } ']['request']): Promise<${ className } _${ method } _paths['${ meta . uri } ']['response']>` ;
196+ ${ camelCase ( meta . key ) } (opts${ optional ? '?' : '' } : ${ className } _${ method } _paths['${ meta . uri } ']['request'] & BaseOpenapiClient.UserInputOpts<T> ): Promise<${ className } _${ method } _paths['${ meta . uri } ']['response']>` ;
196197 } ) ;
197198 } )
198199 . join ( '\n' ) }
@@ -277,7 +278,7 @@ interface ${className}_${method}_paths {
277278 ${ meta . query . types . length ? `query${ meta . query . optional ? '?' : '' } : ${ className } .${ upperFirst ( camelCase ( meta . key + '_query' ) ) } ;` : 'query?: object;' }
278279 ${ meta . params . types . length ? `params${ meta . params . optional ? '?' : '' } : ${ className } .${ upperFirst ( camelCase ( meta . key + '_params' ) ) } ;` : '' }
279280 ${ meta . body . types . length ? `body${ meta . body . optional ? '?' : '' } : ${ className } .${ upperFirst ( camelCase ( meta . key + '_body' ) ) } ;` : '' }
280- } & BaseOpenapiClient.UserInputOpts ;
281+ };
281282 response: ${ meta . response . types . length ? `${ className } .${ upperFirst ( camelCase ( meta . key + '_response' ) ) } ` : 'unknown' }
282283 }>` ;
283284 } )
0 commit comments