@@ -7,34 +7,50 @@ export type ServiceMiddleware = (this: Microfleet, request: ServiceRequest) => P
77export type ServiceActionAuthGetName = ( request : ServiceRequest ) => string
88export type ServiceActionHandler = ServiceAction [ 'handler' ]
99
10- export interface ServiceAction < R = unknown > {
11- handler ( this : Microfleet , request : ServiceRequest , ...params : any [ ] ) : Promise < R >
10+
11+ export interface RequestGenericInterface {
12+ Params ?: unknown ;
13+ Headers ?: unknown ;
14+ Querystring ?: unknown ;
15+ Locals ?: unknown ;
16+ TransportOptions ?: unknown ;
17+ }
18+
19+ export interface ReplyGenericInterface {
20+ Reply ?: unknown ;
21+ }
22+ export interface ServiceAction <
23+ DefaultRequest extends RequestGenericInterface = RequestGenericInterface ,
24+ DefaultReply extends ReplyGenericInterface = ReplyGenericInterface ,
25+ > {
26+ handler ( this : Microfleet , request : ServiceRequest , ...params : any [ ] ) : Promise < DefaultReply [ "Reply" ] >
1227 actionName : string
1328 transports : ServiceRequest [ 'transport' ] [ ]
14- transportOptions ?: TransportOptions
29+ transportOptions ?: DefaultRequest [ " TransportOptions" ]
1530 validateResponse : boolean
1631 schema ?: string | null | boolean
1732 responseSchema ?: string ;
1833 readonly ?: boolean
1934}
2035
21- // eslint-disable-next-line @typescript-eslint/no-empty-interface
22- export interface TransportOptions { }
23-
24- export interface ServiceRequest < R = unknown > {
36+ export interface ServiceRequest <
37+ DefaultRequest extends RequestGenericInterface = RequestGenericInterface ,
38+ DefaultReply extends ReplyGenericInterface = ReplyGenericInterface ,
39+ ErrorArg extends Error & { name : string , code ?: string } = any
40+ > {
2541 route : string
26- action : ServiceAction < R >
27- params : any
28- headers : any
29- query : any
42+ action : ServiceAction < DefaultRequest , DefaultReply >
43+ params : DefaultRequest [ "Params" ]
44+ headers : DefaultRequest [ "Headers" ]
45+ query : DefaultRequest [ "Querystring" ]
3046 method : keyof typeof RequestDataKey
3147 transport : typeof ActionTransport [ keyof typeof ActionTransport ]
3248 transportRequest : any | ClientRequest
33- locals : any
49+ locals : DefaultRequest [ "Locals" ]
3450 parentSpan : null
3551 span : null
3652 log : Logger
37- response ?: unknown
38- error ?: any
53+ response ?: DefaultReply [ "Reply" ]
54+ error ?: ErrorArg
3955 reformatError : boolean
4056}
0 commit comments