@100mslive/hms-video-store
Version:
@100mslive Core SDK which abstracts the complexities of webRTC while providing a reactive store for data management with a unidirectional data flow
51 lines (44 loc) • 1.42 kB
text/typescript
import { HMSAction } from './HMSAction';
import { IAnalyticsPropertiesProvider } from '../analytics/IAnalyticsPropertiesProvider';
import { HMSSignalMethod } from '../signal/jsonrpc/models';
export class HMSException extends Error implements IAnalyticsPropertiesProvider {
action: string;
nativeError?: Error;
constructor(
public readonly code: number,
public name: string,
action: HMSAction | HMSSignalMethod,
public message: string,
public description: string,
public isTerminal: boolean = false,
) {
super(message);
// Ref: https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
Object.setPrototypeOf(this, HMSException.prototype);
this.action = action.toString();
}
toAnalyticsProperties() {
return {
error_name: this.name,
error_code: this.code,
error_message: this.message,
error_description: this.description,
action: this.action,
is_terminal: this.isTerminal,
};
}
addNativeError(error: Error) {
this.nativeError = error;
}
toString() {
return `{
code: ${this.code};
name: ${this.name};
action: ${this.action};
message: ${this.message};
description: ${this.description};
isTerminal: ${this.isTerminal};
nativeError: ${this.nativeError?.message};
}`;
}
}