xud
Version:
Exchange Union Daemon
94 lines • 4.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const grpc_1 = require("grpc");
const errors_1 = require("../lndclient/errors");
const errors_2 = require("../orderbook/errors");
const errors_3 = require("../p2p/errors");
const errors_4 = require("../service/errors");
const errors_5 = require("../swaps/errors");
const errors_6 = require("../connextclient/errors");
/**
* Convert an internal xud error type into a gRPC error.
* @param err an error object that should have code and message properties
* @return a gRPC error with a gRPC status code
*/
const getGrpcError = (err) => {
var _a, _b;
// if we recognize this error, use a proper gRPC ServiceError with a descriptive and appropriate code
let code;
switch (err.code) {
case errors_4.errorCodes.INVALID_ARGUMENT:
case errors_3.errorCodes.ATTEMPTED_CONNECTION_TO_SELF:
case errors_3.errorCodes.UNEXPECTED_NODE_PUB_KEY:
case errors_3.errorCodes.NODE_TOR_ADDRESS:
case errors_2.errorCodes.MIN_QUANTITY_VIOLATED:
case errors_2.errorCodes.QUANTITY_DOES_NOT_MATCH:
case errors_5.errorCodes.REMOTE_IDENTIFIER_MISSING:
case errors_2.errorCodes.DUPLICATE_PAIR_CURRENCIES:
code = grpc_1.status.INVALID_ARGUMENT;
break;
case errors_2.errorCodes.PAIR_DOES_NOT_EXIST:
case errors_3.errorCodes.NODE_UNKNOWN:
case errors_3.errorCodes.UNKNOWN_ALIAS:
case errors_2.errorCodes.LOCAL_ID_DOES_NOT_EXIST:
case errors_2.errorCodes.ORDER_NOT_FOUND:
code = grpc_1.status.NOT_FOUND;
break;
case errors_2.errorCodes.DUPLICATE_ORDER:
case errors_3.errorCodes.NODE_ALREADY_CONNECTED:
case errors_3.errorCodes.NODE_ALREADY_BANNED:
case errors_3.errorCodes.ALREADY_CONNECTING:
case errors_2.errorCodes.CURRENCY_ALREADY_EXISTS:
case errors_2.errorCodes.PAIR_ALREADY_EXISTS:
code = grpc_1.status.ALREADY_EXISTS;
break;
case errors_6.errorCodes.INSUFFICIENT_BALANCE:
case errors_6.errorCodes.INSUFFICIENT_COLLATERAL:
case errors_3.errorCodes.NOT_CONNECTED:
case errors_3.errorCodes.NODE_NOT_BANNED:
case errors_3.errorCodes.NODE_IS_BANNED:
case errors_1.errorCodes.DISABLED:
case errors_2.errorCodes.CURRENCY_DOES_NOT_EXIST:
case errors_2.errorCodes.CURRENCY_CANNOT_BE_REMOVED:
case errors_2.errorCodes.MARKET_ORDERS_NOT_ALLOWED:
case errors_4.errorCodes.NOMATCHING_MODE_IS_REQUIRED:
case errors_5.errorCodes.INSUFFICIENT_OUTBOUND_CAPACITY:
case errors_5.errorCodes.INSUFFICIENT_INBOUND_CAPACITY:
case errors_2.errorCodes.QUANTITY_ON_HOLD:
case errors_5.errorCodes.SWAP_CLIENT_NOT_FOUND:
case errors_5.errorCodes.SWAP_CLIENT_MISCONFIGURED:
case errors_4.errorCodes.NO_CHANNELS_TO_CLOSE:
code = grpc_1.status.FAILED_PRECONDITION;
break;
case errors_1.errorCodes.UNAVAILABLE:
case errors_3.errorCodes.COULD_NOT_CONNECT:
code = grpc_1.status.UNAVAILABLE;
break;
case errors_4.errorCodes.PENDING_CALL_CONFLICT:
code = grpc_1.status.RESOURCE_EXHAUSTED;
break;
case errors_4.errorCodes.NODE_ALREADY_EXISTS:
case errors_4.errorCodes.NODE_DOES_NOT_EXIST:
case errors_4.errorCodes.NO_ENCRYPT_MODE_ENABLED:
code = grpc_1.status.UNIMPLEMENTED;
break;
case errors_3.errorCodes.POOL_CLOSED:
code = grpc_1.status.ABORTED;
break;
case errors_3.errorCodes.RESPONSE_TIMEOUT:
code = grpc_1.status.DEADLINE_EXCEEDED;
break;
case errors_5.errorCodes.SWAP_CLIENT_WALLET_NOT_CREATED:
code = grpc_1.status.INTERNAL;
break;
}
// return a grpc error with the code if we've assigned one, otherwise pass along the caught error as UNKNOWN
const grpcError = {
code: code !== null && code !== void 0 ? code : grpc_1.status.UNKNOWN,
message: (_a = err.message) !== null && _a !== void 0 ? _a : (typeof err === 'string' ? err : ''),
name: (_b = err.name) !== null && _b !== void 0 ? _b : 'UnknownError',
};
return grpcError;
};
exports.default = getGrpcError;
//# sourceMappingURL=getGrpcError.js.map