@dataroadinc/setup-auth
Version:
CLI tool and programmatic API for automated OAuth setup across cloud platforms
52 lines (51 loc) • 1.85 kB
JavaScript
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 };