Akos Kitta d8be8888ef another way to cancel the discovery.
Signed-off-by: Akos Kitta <a.kitta@arduino.cc>
2022-07-14 10:39:54 +02:00

27 lines
868 B
TypeScript

import { Metadata, StatusObject } from '@grpc/grpc-js';
export type ServiceError = StatusObject & Error;
export namespace ServiceError {
export function isCancel(arg: unknown): arg is ServiceError & { code: 1 } {
return is(arg) && arg.code === 1; // https://grpc.github.io/grpc/core/md_doc_statuscodes.html
}
export function is(arg: unknown): arg is ServiceError {
return arg instanceof Error && isStatusObjet(arg);
}
function isStatusObjet(arg: unknown): arg is StatusObject {
if (typeof arg === 'object') {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const any = arg as any;
return (
!!arg &&
'code' in arg &&
'details' in arg &&
typeof any.details === 'string' &&
'metadata' in arg &&
any.metadata instanceof Metadata
);
}
return false;
}
}