@smash-sdk/core
Version:
Smash Sdk Core
66 lines (65 loc) • 2.02 kB
JavaScript
export class SDKError extends Error {
constructor(error) {
super();
if (typeof error === 'string') {
this.name = "SDKError";
this.message = error;
}
else if (error instanceof Error) {
this.name = error.name;
this.message = error.message;
this.stack = error.stack;
}
else if (error.name) {
this.message = error.error;
Object.assign(this, error);
this.stack = SDKError.stringifiedStack();
}
else {
this.name = 'Unknown SDK error';
this.message = 'Unknown SDK error';
}
}
static stack() {
if (Array.isArray(new Error().stack)) {
const prepareStackTrace = Error.prepareStackTrace;
Error.prepareStackTrace = (_, stack) => stack;
const stack = (new Error().stack).filter(s => !!s.getFileName());
while (stack[0].getFileName().indexOf("sdkError") >= 0) {
stack.shift();
}
while (stack[0].getFileName().indexOf("@smash-sdk") >= 0) {
stack.shift();
}
Error.prepareStackTrace = prepareStackTrace;
return stack;
}
else {
return new Error().stack;
}
}
static stringifiedStack() {
if (Array.isArray(SDKError.stack())) {
return SDKError.stack().join("\n");
}
else {
return new Error().stack;
}
}
}
export class UnknownError extends SDKError {
}
export class NetworkError extends SDKError {
}
export class TimeoutError extends SDKError {
}
export class ConnectionAbortedError extends SDKError {
}
export class InvalidSdkConfigurationError extends SDKError {
}
export class InvalidRegionOrHostError extends InvalidSdkConfigurationError {
}
export class InvalidRegionError extends InvalidRegionOrHostError {
}
export class InvalidHostError extends InvalidRegionOrHostError {
}