UNPKG

soccer-go

Version:

Soccer CLI for stats and results.

84 lines (83 loc) 3.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleCommandError = exports.formatErrorForPrinting = exports.ApplicationError = exports.ErrorCode = exports.isErrorNodeSystemError = void 0; /** * Asserts if a alleged `error` is a Node.js system error. */ const isErrorNodeSystemError = (error) => { return ('code' in error && 'errno' in error && 'code' in error && 'syscall' in error); }; exports.isErrorNodeSystemError = isErrorNodeSystemError; var ErrorCode; (function (ErrorCode) { ErrorCode[ErrorCode["GENERIC"] = 1000] = "GENERIC"; ErrorCode[ErrorCode["API_KEY_MISSING"] = 1001] = "API_KEY_MISSING"; ErrorCode[ErrorCode["API_KEY_INVALID"] = 1002] = "API_KEY_INVALID"; ErrorCode[ErrorCode["API_RESPONSE_400"] = 1003] = "API_RESPONSE_400"; ErrorCode[ErrorCode["API_RESPONSE_429"] = 1004] = "API_RESPONSE_429"; ErrorCode[ErrorCode["API_RESPONSE_500"] = 1005] = "API_RESPONSE_500"; ErrorCode[ErrorCode["LEAGUE_NOT_FOUND_BY_NAME"] = 1006] = "LEAGUE_NOT_FOUND_BY_NAME"; ErrorCode[ErrorCode["LEAGUE_NOT_FOUND_BY_CODE"] = 1007] = "LEAGUE_NOT_FOUND_BY_CODE"; ErrorCode[ErrorCode["TEAM_NOT_FOUND"] = 1008] = "TEAM_NOT_FOUND"; ErrorCode[ErrorCode["NETWORK_UNREACHABLE"] = 1009] = "NETWORK_UNREACHABLE"; })(ErrorCode || (exports.ErrorCode = ErrorCode = {})); class ApplicationError extends Error { code; extraData; constructor(code, extraData) { super(); this.code = code; this.extraData = extraData; } } exports.ApplicationError = ApplicationError; const formatErrorForPrinting = (code, extraData) => { switch (code) { case ErrorCode.GENERIC: return `Something unexpected happened:\n ${extraData}\n`; case ErrorCode.API_KEY_MISSING: return ('SOCCER_GO_API_KEY environment variable not set.\n\n' + ' $ export SOCCER_GO_API_KEY=<football_data_api_key>\n\n' + 'You can get your own API key over at\n' + 'https://www.football-data.org/client/register\n'); case ErrorCode.API_KEY_INVALID: return ('The API key set is invalid.\n' + 'Please check that the SOCCER_GO_API_KEY environment variable matches ' + 'the key you received upon registration\n\n' + ' $ echo $SOCCER_GO_API_KEY\n'); case ErrorCode.API_RESPONSE_400: return `Something went wrong with your request, reason:\n\n ${extraData}\n`; case ErrorCode.API_RESPONSE_429: return ('You seem to have made too many requests.\n' + 'Please wait a minute before making new requests.\n'); case ErrorCode.API_RESPONSE_500: return 'Cannot retrieve data at this time, please try again later.\n'; case ErrorCode.LEAGUE_NOT_FOUND_BY_NAME: return `Could not find league "${extraData}".\n`; case ErrorCode.LEAGUE_NOT_FOUND_BY_CODE: return `Could not find league with code "${extraData}".\n`; case ErrorCode.TEAM_NOT_FOUND: return `Could not find team "${extraData}".\n`; case ErrorCode.NETWORK_UNREACHABLE: return 'Could not contact the server.\nPlease check your internet connection.\n'; } }; exports.formatErrorForPrinting = formatErrorForPrinting; const handleCommandError = (error) => { if (error instanceof ApplicationError) { console.error((0, exports.formatErrorForPrinting)(error.code, error.extraData)); process.exit(error.code); } if (error instanceof Error) { console.error((0, exports.formatErrorForPrinting)(ErrorCode.GENERIC, error.message)); process.exit(ErrorCode.GENERIC); } if (typeof error === 'string') { console.error((0, exports.formatErrorForPrinting)(ErrorCode.GENERIC, error)); process.exit(ErrorCode.GENERIC); } }; exports.handleCommandError = handleCommandError;