/
interface.ts
127 lines (106 loc) 路 2.95 KB
/
interface.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import {
IConfigurationOptions,
IMidwayApplication,
IMidwayContext,
NextFunction as BaseNextFunction
} from '@midwayjs/core';
import {
Server,
ServerCredentials,
Metadata,
ClientWritableStream,
ClientDuplexStream,
ClientReadableStream,
ClientUnaryCall,
ChannelOptions,
ClientOptions,
ServerUnaryCall,
ServerReadableStream,
ServerWritableStream,
ServerDuplexStream,
} from '@grpc/grpc-js';
type GrpcHandleCall<RequestType, ResponseType> =
Partial<ServerUnaryCall<RequestType, ResponseType> &
ServerReadableStream<RequestType, ResponseType> &
ServerWritableStream<RequestType, ResponseType> &
ServerDuplexStream<RequestType, ResponseType>>;
export interface Context<RequestType = unknown, ResponseType = unknown> extends IMidwayContext<GrpcHandleCall<RequestType, ResponseType>> {
method: string;
}
export type IMidwayGRPCApplication = IMidwayApplication<Context, Server>;
export type Application = IMidwayGRPCApplication;
export type NextFunction = BaseNextFunction;
export interface IGRPCServiceOptions {
/**
* proto path
*/
protoPath?: string;
/**
* protobuf package name
*/
package?: string;
}
export interface IGRPCClientServiceOptions extends IGRPCServiceOptions {
/**
* application gRPC connection string
*/
url: string;
/**
* proto file loader options. Optional
*/
loaderOptions?: object;
/**
* Server credentials. Optional.
*/
credentials?: ServerCredentials;
/**
* Client options. Optional.
*/
clientOptions?: ClientOptions;
}
export interface IMidwayGRPFrameworkOptions extends IConfigurationOptions {
/**
* gRPC Server connection url, like 'localhost:6565'
*/
url?: string;
services?: IGRPCServiceOptions[];
/**
* proto file loader options. Optional
*/
loaderOptions?: object;
/**
* Server credentials. Optional.
*/
credentials?: ServerCredentials;
/**
* grpc server options
*/
serverOptions?: ChannelOptions;
}
export interface DefaultConfig extends IConfigurationOptions {
services: IGRPCClientServiceOptions[];
}
export interface IClientUnaryService<reqType, resType> {
sendMessage(reqData: reqType, handler?: (call: ClientUnaryCall) => void): Promise<resType>;
sendMessageWithCallback(content: reqType, callback): ClientUnaryCall;
}
export interface IClientReadableStreamService<reqType, resType> {
sendMessage(reqData: reqType): Promise<resType[]>;
getCall(): ClientReadableStream<resType>;
}
export interface IClientWritableStreamService<reqType, resType> {
sendMessage(reqData: reqType): IClientWritableStreamService<reqType, resType>;
end(): Promise<resType>;
getCall(): ClientWritableStream<reqType>;
}
export interface IClientDuplexStreamService<reqType, resType> {
sendMessage(reqData: reqType): Promise<resType>;
getCall(): ClientDuplexStream<reqType, resType>;
end(): void;
}
export interface IClientOptions {
metadata?: Metadata;
timeout?: number;
timeoutMessage?: number;
messageKey?: string;
}