UNPKG

@dataroadinc/setup-auth

Version:

CLI tool and programmatic API for automated OAuth setup across cloud platforms

52 lines (51 loc) 1.85 kB
class SetupAuthError extends Error { constructor(message, options) { super(message); if (options?.cause instanceof Error) { this.originalError = options.cause; } else if (options?.cause) { const errorMessage = `Non-Error exception: ${String(options.cause)}`; this.originalError = new Error(errorMessage); if (typeof options.cause === "object" && options.cause && "message" in options.cause) { this.originalError.message = `Wrapped error: ${options.cause.message}`; } this.originalError.name = "WrappedError"; } if (options?.code) { this.code = options.code; } } toString() { if (this.isReauthenticationError()) { return this.message; } let result = `${this.name}: ${this.message}`; if (this.originalError) { if (this.originalError instanceof SetupAuthError) { result += "\n" + this.originalError.toString(); } else { result += `\nOriginal Error: ${this.originalError.name}: ${this.originalError.message}`; } } return result; } isReauthenticationError() { if (this.originalError instanceof SetupAuthError) { return this.originalError.isReauthenticationError(); } if (this.originalError) { const error = this.originalError; if (error.response?.data?.error_subtype === "invalid_rapt" || (error.response?.data?.error === "invalid_grant" && error.response?.data?.error_description?.includes("reauth"))) { return true; } } return false; } } export { SetupAuthError };