UNPKG

@smash-sdk/core

Version:

Smash Sdk Core

66 lines (65 loc) 2.02 kB
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 { }