forked from mirrored/github-readme-stats
* refactor: move errors related code into separate file * jsdoc --------- Co-authored-by: Alexandr <qwerty541zxc@gmail.com>
70 lines
1.9 KiB
JavaScript
70 lines
1.9 KiB
JavaScript
/**
|
|
* @type {string} A general message to ask user to try again later.
|
|
*/
|
|
const TRY_AGAIN_LATER = "Please try again later";
|
|
|
|
/**
|
|
* @type {Object<string, string>} A map of error types to secondary error messages.
|
|
*/
|
|
const SECONDARY_ERROR_MESSAGES = {
|
|
MAX_RETRY:
|
|
"You can deploy own instance or wait until public will be no longer limited",
|
|
NO_TOKENS:
|
|
"Please add an env variable called PAT_1 with your GitHub API token in vercel",
|
|
USER_NOT_FOUND: "Make sure the provided username is not an organization",
|
|
GRAPHQL_ERROR: TRY_AGAIN_LATER,
|
|
GITHUB_REST_API_ERROR: TRY_AGAIN_LATER,
|
|
WAKATIME_USER_NOT_FOUND: "Make sure you have a public WakaTime profile",
|
|
};
|
|
|
|
/**
|
|
* Custom error class to handle custom GRS errors.
|
|
*/
|
|
class CustomError extends Error {
|
|
/**
|
|
* Custom error constructor.
|
|
*
|
|
* @param {string} message Error message.
|
|
* @param {string} type Error type.
|
|
*/
|
|
constructor(message, type) {
|
|
super(message);
|
|
this.type = type;
|
|
this.secondaryMessage = SECONDARY_ERROR_MESSAGES[type] || type;
|
|
}
|
|
|
|
static MAX_RETRY = "MAX_RETRY";
|
|
static NO_TOKENS = "NO_TOKENS";
|
|
static USER_NOT_FOUND = "USER_NOT_FOUND";
|
|
static GRAPHQL_ERROR = "GRAPHQL_ERROR";
|
|
static GITHUB_REST_API_ERROR = "GITHUB_REST_API_ERROR";
|
|
static WAKATIME_ERROR = "WAKATIME_ERROR";
|
|
}
|
|
|
|
/**
|
|
* Missing query parameter class.
|
|
*/
|
|
class MissingParamError extends Error {
|
|
/**
|
|
* Missing query parameter error constructor.
|
|
*
|
|
* @param {string[]} missedParams An array of missing parameters names.
|
|
* @param {string=} secondaryMessage Optional secondary message to display.
|
|
*/
|
|
constructor(missedParams, secondaryMessage) {
|
|
const msg = `Missing params ${missedParams
|
|
.map((p) => `"${p}"`)
|
|
.join(", ")} make sure you pass the parameters in URL`;
|
|
super(msg);
|
|
this.missedParams = missedParams;
|
|
this.secondaryMessage = secondaryMessage;
|
|
}
|
|
}
|
|
|
|
export {
|
|
CustomError,
|
|
MissingParamError,
|
|
SECONDARY_ERROR_MESSAGES,
|
|
TRY_AGAIN_LATER,
|
|
};
|