@unstoppabledomains/resolution
Version:
Domain Resolution for blockchain domains
116 lines (115 loc) • 6.6 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResolutionError = exports.ResolutionErrorCode = void 0;
var ResolutionErrorCode;
(function (ResolutionErrorCode) {
ResolutionErrorCode["UnregisteredDomain"] = "UnregisteredDomain";
ResolutionErrorCode["UnspecifiedResolver"] = "UnspecifiedResolver";
ResolutionErrorCode["UnsupportedDomain"] = "UnsupportedDomain";
ResolutionErrorCode["UnsupportedService"] = "UnsupportedService";
ResolutionErrorCode["UnsupportedMethod"] = "UnsupportedMethod";
ResolutionErrorCode["UnspecifiedCurrency"] = "UnspecifiedCurrency";
ResolutionErrorCode["UnsupportedCurrency"] = "UnsupportedCurrency";
ResolutionErrorCode["IncorrectResolverInterface"] = "IncorrectResolverInterface";
ResolutionErrorCode["RecordNotFound"] = "RecordNotFound";
ResolutionErrorCode["MetadataEndpointError"] = "MetadataEndpointError";
ResolutionErrorCode["ServiceProviderError"] = "ServiceProviderError";
ResolutionErrorCode["InvalidTwitterVerification"] = "InvalidTwitterVerification";
ResolutionErrorCode["InconsistentDomainArray"] = "InconsistentDomainArray";
ResolutionErrorCode["InvalidDomainAddress"] = "InvalidDomainAddress";
ResolutionErrorCode["InvalidUnsResolutionConfiguration"] = "InvalidResolutionConfiguration";
})(ResolutionErrorCode = exports.ResolutionErrorCode || (exports.ResolutionErrorCode = {}));
/**
* @internal
* Internal Mapping object from ResolutionErrorCode to a ResolutionErrorHandler
*/
var HandlersByCode = (_a = {},
_a[ResolutionErrorCode.UnregisteredDomain] = function (params) {
return "Domain ".concat(params.domain, " is not registered");
},
_a[ResolutionErrorCode.UnspecifiedResolver] = function (params) {
return "".concat(params.location ? "".concat(params.location, ": ") : '', "Domain ").concat(params.domain, " is not configured");
},
_a[ResolutionErrorCode.UnsupportedDomain] = function (params) {
return "Domain ".concat(params.domain, " is not supported");
},
_a[ResolutionErrorCode.UnsupportedMethod] = function (params) {
var _a;
// We normally expect a domain name, but in can be absent in the tests.
var zilHelp = ((_a = params.domain) === null || _a === void 0 ? void 0 : _a.endsWith('.zil'))
? " (if this method was called via the Resolution class with both UNS and ZNS providers configured not in the API mode, this error also means that the domain doesn't exist in UNS)"
: '';
return "Method ".concat(params.methodName, " is not supported for ").concat(params.domain).concat(zilHelp);
},
_a[ResolutionErrorCode.InvalidTwitterVerification] = function (params) {
return "".concat(params.location ? "".concat(params.location, ": ") : '', "Domain ").concat(params.domain, " has invalid Twitter signature verification");
},
_a[ResolutionErrorCode.UnsupportedCurrency] = function (params) { return "".concat(params.currencyTicker, " is not supported"); },
_a[ResolutionErrorCode.IncorrectResolverInterface] = function (params) { return "Domain resolver is configured incorrectly for ".concat(params.method); },
_a[ResolutionErrorCode.RecordNotFound] = function (params) {
return "".concat(params.location ? "".concat(params.location, ": ") : '', "No ").concat(params.recordName, " record found for ").concat(params.domain);
},
_a[ResolutionErrorCode.ServiceProviderError] = function (params) { return "< ".concat(params.providerMessage, " >"); },
_a[ResolutionErrorCode.MetadataEndpointError] = function (params) {
return "Failed to query tokenUri ".concat(params.tokenUri, ". Error: ").concat(params.errorMessage);
},
_a[ResolutionErrorCode.UnsupportedService] = function (params) {
return "Naming service ".concat(params.namingService, " is not supported");
},
_a[ResolutionErrorCode.InvalidDomainAddress] = function (params) {
return "Domain address ".concat(params.domain, " is invalid");
},
_a[ResolutionErrorCode.InvalidUnsResolutionConfiguration] = function (params) { return "Resolution "; },
_a);
/**
* Resolution Error class is designed to control every error being thrown by Resolution
* @param code - Error Code
* - UnsupportedDomain - domain is not supported by current Resolution instance
* - UnregisteredDomain - domain is not owned by any address
* - UnspecifiedResolver - domain has no resolver specified
* - UnspecifiedCurrency - domain resolver doesn't have any address of specified currency
* - UnsupportedCurrency - currency is not supported
* - IncorrectResolverInterface - ResolverInterface is incorrected
* - RecordNotFound - No record was found
* @param domain - Domain name that was being used
* @param method
*/
var ResolutionError = /** @class */ (function (_super) {
__extends(ResolutionError, _super);
function ResolutionError(code, options) {
if (options === void 0) { options = {}; }
var _this = this;
var resolutionErrorHandler = HandlersByCode[code];
var domain = options.domain, method = options.method, currencyTicker = options.currencyTicker, methodName = options.methodName, recordName = options.recordName;
var message = resolutionErrorHandler(options);
_this = _super.call(this, message) || this;
_this.code = code;
_this.domain = domain;
_this.method = method;
_this.currencyTicker = currencyTicker;
_this.name = 'ResolutionError';
_this.methodName = methodName;
_this.recordName = recordName;
Object.setPrototypeOf(_this, ResolutionError.prototype);
return _this;
}
return ResolutionError;
}(Error));
exports.ResolutionError = ResolutionError;
exports.default = ResolutionError;