emailjs/smtp/error.ts

59 lines
1.1 KiB
TypeScript

/**
* @constant
* @enum {number}
*/
export const SMTPErrorStates = {
COULDNOTCONNECT: 1,
BADRESPONSE: 2,
AUTHFAILED: 3,
TIMEDOUT: 4,
ERROR: 5,
NOCONNECTION: 6,
AUTHNOTSUPPORTED: 7,
CONNECTIONCLOSED: 8,
CONNECTIONENDED: 9,
CONNECTIONAUTH: 10,
} as const;
export class SMTPError extends Error {
public code: number | null = null;
public smtp: unknown = null;
public previous: Error | null = null;
/**
* @protected
* @param {string} message
*/
protected constructor(message: string) {
super(message);
}
/**
*
* @param {string} message
* @param {number} code smtp error state
* @param {Error | null} [error] previous error
* @param {unknown} [smtp] arbitrary data
* @returns {SMTPError}
*/
public static create(
message: string,
code: number,
error?: Error | null,
smtp?: unknown
) {
const { message: errorMsg } = error ?? { message: undefined };
const msg = errorMsg ? `${message} (${errorMsg})` : message;
const err = new SMTPError(msg);
err.code = code;
err.smtp = smtp;
if (error) {
err.previous = error;
}
return err;
}
}