-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.d.ts
134 lines (95 loc) · 3.68 KB
/
index.d.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
128
129
130
131
132
133
134
import * as grpc from 'grpc';
import * as joi from 'joi';
import * as jspb from 'google-protobuf';
import * as Koa from 'koa';
import * as KoaRouter from 'koa-router';
import * as KoaBodyParser from 'koa-bodyparser';
import * as EventEmitter from 'events';
import {Context as KoaContext, Middleware as KoaMiddleware, Request as KoaRequest} from 'koa';
// gRPC redefine
export type IRpcServerUnaryCall<RequestType> = grpc.ServerUnaryCall<RequestType>
export type IRpcServerReadableStream<RequestType> = grpc.ServerReadableStream<RequestType>
export type IRpcServerWriteableStream<RequestType> = grpc.ServerWriteableStream<RequestType>
export type IRpcServerDuplexStream<RequestType, ResponseType> = grpc.ServerDuplexStream<RequestType, ResponseType>
export type IRpcServerCall<RequestType, ResponseType> = IRpcServerUnaryCall<RequestType>
| IRpcServerReadableStream<RequestType>
| IRpcServerWriteableStream<RequestType>
| IRpcServerDuplexStream<RequestType, ResponseType>;
export type IRpcServerCallback<ResponseType> = grpc.sendUnaryData<ResponseType>
// gRPC Context
export enum GrpcOpType {
SEND_INITIAL_METADATA = 0,
SEND_MESSAGE = 1,
SEND_CLOSE_FROM_CLIENT = 2,
SEND_STATUS_FROM_SERVER = 3,
RECV_INITIAL_METADATA = 4,
RECV_MESSAGE = 5,
RECV_STATUS_ON_CLIENT = 6,
RECV_CLOSE_ON_SERVER = 7,
}
export declare class RpcContext {
public call: IRpcServerCall<any, any>;
public callback: IRpcServerCallback<any>;
constructor();
/**
* Handle error with gRPC status.
* @see {@link https://github.com/grpc/grpc/blob/v1.3.7/src/node/src/server.js#L69-L101}
* @param {Error} err
*/
onError(err: Error): void;
validate(aggregatedParams: jspb.Message, schemaDefObj: joi.SchemaMap): Promise<void>;
}
// gRPC Application
export type RpcMiddleware = (ctx: RpcContext, next: MiddlewareNext) => Promise<any>;
export type MiddlewareNext = () => Promise<any>;
export type WrappedHandler = (call: IRpcServerCall<any, any>, callback?: IRpcServerCallback<any>) => Promise<any>;
export declare class RpcApplication extends EventEmitter {
constructor();
readonly server: grpc.Server;
bind(address: string, creds?: grpc.ServerCredentials): RpcApplication;
start(): void;
use(middleware: RpcMiddleware): this;
wrapGrpcHandler(reqHandler: RpcMiddleware): WrappedHandler;
}
// Gateway Utility
declare let joiValidate: <T>(value: Object, schema: Object, options: joi.ValidationOptions) => Promise<T>;
declare namespace joiType {
export const vDouble: any;
export const vFloat: any;
export const vNumber: any;
export const vInt32: any;
export const vSint32: any;
export const vSfixed32: any;
export const vInt64: any;
export const vSint64: any;
export const vSfixed64: any;
export const vUintNumber: any;
export const vUint32: any;
export const vFixed32: any;
export const vUint64: any;
export const vFixed64: any;
export const vBool: any;
export const vString: any;
}
export {joi, joiValidate, joiType};
// Gateway
export interface GatewayContext extends KoaContext {
params: any;
request: GatewayRequest;
}
export interface GatewayRequest extends KoaRequest {
body: any;
}
export interface GatewayApiParams {
[key: string]: any;
}
export declare abstract class GatewayApiBase {
method: string;
uri: string;
type: string;
schemaDefObj: joi.SchemaMap;
abstract handle(ctx: GatewayContext, next: MiddlewareNext, params: GatewayApiParams): Promise<any>;
abstract handleMock(ctx: GatewayContext, next: MiddlewareNext, params: GatewayApiParams): Promise<any>;
register(): Array<string | KoaMiddleware>;
}
export {Koa, KoaRouter, KoaBodyParser};