diff --git a/types/mali/index.d.ts b/types/mali/index.d.ts index 8e536d5330..e4c0f34dd7 100644 --- a/types/mali/index.d.ts +++ b/types/mali/index.d.ts @@ -8,70 +8,83 @@ import { EventEmitter } from 'events'; import { Stream } from 'stream'; +import * as grpc from 'grpc'; + +type GrpcRequest = + | grpc.ServerUnaryCall + | grpc.ServerReadableStream + | grpc.ServerWriteableStream + | grpc.ServerDuplexStream; + +type GrpcResponse = + | grpc.ClientUnaryCall + | grpc.ClientReadableStream + | grpc.ClientWritableStream + | grpc.ClientDuplexStream; declare class Mali extends EventEmitter { - constructor(path: any, name?: string | ReadonlyArray, options?: any); - name: string; - env: string; - ports: ReadonlyArray; - silent: boolean; + constructor(path: any, name?: string | ReadonlyArray, options?: any); + name: string; + env: string; + ports: ReadonlyArray; + silent: boolean; - addService(path: any, name: string | ReadonlyArray, options?: any): void; - use(service?: any, name?: any, fns?: any): void; - start(port: number | string, creds?: any, options?: any): any; // gnarly type inferring for these functions so Im just gonna let them handle it. - toJSON(): any; - close(): Promise; - inspect(): any; + addService(path: any, name: string | ReadonlyArray, options?: any): void; + use(service?: any, name?: any, fns?: any): void; + start(port: number | string, creds?: any, options?: any): grpc.Server; + toJSON(): any; + close(): Promise; + inspect(): any; } declare namespace Mali { - interface Context { - name: string; - fullName: string; - service: string; - package: string; - app: any; // ? app - call: any; - request: Request; - response: Response; - req: any; // ? - res: any; // ? - type: string; - metadata: string; - get(field: string): any; - set(field: any, val?: any): void; // do I need `?:` if its of type `any`? - sendMetadata(md: any): void; - getStatus(field: string): any; - setStatus(field: any, val?: any): void; // ^ - } + interface Context { + name: string; + fullName: string; + service: string; + package: string; + app: Mali; + call: any; + request: Request; + response: Response; + req: GrpcRequest; + res: GrpcResponse; + type: string; + metadata: any; + get(field: string): any; + set(field: any, val?: any): void; + sendMetadata(md: any): void; + getStatus(field: string): any; + setStatus(field: any, val?: any): void; + } - class Request { - constructor(call: any, type: string); - call: any; - type: string; - metadata: any; - req: any; // ? + class Request { + constructor(call: any, type: string); + call: any; + type: string; + metadata: any; + req: GrpcRequest; - getMetadata(): any; - get(field: string): any; - } + getMetadata(): grpc.Metadata; + get(field: string): any; + } - class Response { - constructor(call: any, type: string); - call: any; - type: string; - metadata: any; - status: any; - res: any; // ? - set(field: any, val?: any): void; // is `val?:` necessary when its of type `any`? - get(field: string): any; - getMetadata(): any; - sendMetadata(md?: any): void; - getStatus(field: string): any; - setStatus(field: any, val?: any): void; // ^ same as above - } + class Response { + constructor(call: any, type: string); + call: any; + type: string; + metadata: any; + status: any; + res: GrpcResponse; + set(field: any, val?: any): void; + get(field: string): any; + getMetadata(): grpc.Metadata; + sendMetadata(md?: any): void; + getStatus(field: string): any; + setStatus(field: any, val?: any): void; + } - function exec(ctx: Context, handler: any, cb?: any): void; + function exec(ctx: Context, handler: any, cb?: any): void; } export = Mali; diff --git a/types/mali/package.json b/types/mali/package.json new file mode 100644 index 0000000000..5f75e2f944 --- /dev/null +++ b/types/mali/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "grpc": "^1.0.0" + } +}