diff --git a/packages/grpc-js-core/src/call.ts b/packages/grpc-js-core/src/call.ts index 5abc0479..87a8d9ae 100644 --- a/packages/grpc-js-core/src/call.ts +++ b/packages/grpc-js-core/src/call.ts @@ -7,16 +7,17 @@ import {Status} from './constants'; import {Metadata} from './metadata'; import {ObjectReadable, ObjectWritable} from './object-stream'; -export interface ServiceError extends Error { +/** + * A type extending the built-in Error object with additional fields. + */ +export type ServiceError = { code?: number; metadata?: Metadata; -} - -export class ServiceErrorImpl extends Error implements ServiceError { - code?: number; - metadata?: Metadata; -} +} & Error; +/** + * A base type for all user-facing values returned by client-side method calls. + */ export type Call = { cancel(): void; getPeer(): string; @@ -24,16 +25,28 @@ export type Call = { & EmitterAugmentation1<'status', StatusObject> & EventEmitter; +/** + * A type representing the return value of a unary method call. + */ export type ClientUnaryCall = Call; +/** + * A type representing the return value of a server stream method call. + */ export type ClientReadableStream = { deserialize: (chunk: Buffer) => ResponseType; } & Call & ObjectReadable; +/** + * A type representing the return value of a client stream method call. + */ export type ClientWritableStream = { serialize: (value: RequestType) => Buffer; } & Call & ObjectWritable; +/** + * A type representing the return value of a bidirectional stream method call. + */ export type ClientDuplexStream = ClientWritableStream & ClientReadableStream; @@ -78,7 +91,7 @@ function setUpReadableStream( call.on('status', (status: StatusObject) => { stream.emit('status', status); if (status.code !== Status.OK) { - const error = new ServiceErrorImpl(status.details); + const error: ServiceError = new Error(status.details); error.code = status.code; error.metadata = status.metadata; stream.emit('error', error); diff --git a/packages/grpc-js-core/src/client.ts b/packages/grpc-js-core/src/client.ts index 862d212c..ecfacccd 100644 --- a/packages/grpc-js-core/src/client.ts +++ b/packages/grpc-js-core/src/client.ts @@ -1,7 +1,7 @@ import {once} from 'lodash'; import {URL} from 'url'; -import {ClientDuplexStream, ClientDuplexStreamImpl, ClientReadableStream, ClientReadableStreamImpl, ClientUnaryCall, ClientUnaryCallImpl, ClientWritableStream, ClientWritableStreamImpl, ServiceError, ServiceErrorImpl} from './call'; +import {ClientDuplexStream, ClientDuplexStreamImpl, ClientReadableStream, ClientReadableStreamImpl, ClientUnaryCall, ClientUnaryCallImpl, ClientWritableStream, ClientWritableStreamImpl, ServiceError} from './call'; import {CallOptions, CallStream, StatusObject, WriteObject} from './call-stream'; import {Channel, ChannelOptions, Http2Channel} from './channel'; import {ChannelCredentials} from './channel-credentials'; @@ -83,7 +83,7 @@ export class Client { if (status.code === Status.OK) { callback(null, responseMessage as ResponseType); } else { - const error = new ServiceErrorImpl(status.details); + const error: ServiceError = new Error(status.details); error.code = status.code; error.metadata = status.metadata; callback(error);