@whisklabs/grpc
Version:
gRPC generator and http library for typescript
17 lines (16 loc) • 916 B
TypeScript
export type FieldMap = ['map', string, FieldType];
export type FieldRepeated = ['repeated', FieldType];
export type FieldWrapper = ['wrapper', string];
export type FieldType<T = any> = string | Field<T> | FieldMap | FieldRepeated | FieldWrapper;
export type FieldItem<T> = [number, string, FieldType<T>, 0 | 1, string?];
export type Field<T = unknown> = () => FieldItem<T>[];
export type FieldGet<T extends Field<any>> = T extends Field<infer X> ? X : never;
export type FieldEmpty = Record<string, void>;
export type Service<T extends Field<any>, K extends Field<any>> = {
name: string;
encode: T;
decode: K;
};
export type ServiceRequest<T extends Service<any, any>> = T extends Service<infer X, any> ? FieldGet<X> : never;
export type ServiceResponse<T extends Service<any, any>> = T extends Service<any, infer X> ? FieldGet<X> : never;
export type Values<T extends Record<string, any>> = T[keyof T];