UNPKG

@cruxpay/js-sdk

Version:

CruxPay Javascript SDK

92 lines (91 loc) 4.11 kB
import { sanitizeUrl } from "../../packages"; import { BaseError } from "../../packages/error"; import { getLogger } from "../../packages/logger"; import { CruxSpec } from "./crux-spec"; var log = getLogger(__filename); export var DomainRegistrationStatus; (function (DomainRegistrationStatus) { DomainRegistrationStatus["AVAILABLE"] = "AVAILABLE"; DomainRegistrationStatus["REGISTERED"] = "REGISTERED"; DomainRegistrationStatus["REVOKED"] = "REVOKED"; })(DomainRegistrationStatus || (DomainRegistrationStatus = {})); var CruxDomain = /** @class */ (function () { function CruxDomain(cruxDomainId, registrationStatus, domainConfig) { var _this = this; this.setRegistrationStatus = function (registrationStatus) { // validate and set the registrationStatus if (!(registrationStatus in DomainRegistrationStatus)) { throw new BaseError(null, "Domain registration status validation failed!"); } _this.registrationStatus = registrationStatus; }; this.setConfig = function (domainConfig) { if (!domainConfig.assetList) { throw new BaseError(null, "assetList required in domainConfig"); } if (!domainConfig.assetMapping) { throw new BaseError(null, "assetMapping required in domainConfig"); } // validate and set the config try { CruxSpec.validations.validateAssetList(domainConfig.assetList); CruxSpec.validations.validateAssetMapping(domainConfig.assetMapping, domainConfig.assetList); if (domainConfig.nameserviceConfiguration) { if (domainConfig.nameserviceConfiguration.bnsNodes) { for (var i = 0; i < domainConfig.nameserviceConfiguration.bnsNodes.length; i++) { domainConfig.nameserviceConfiguration.bnsNodes[i] = sanitizeUrl(domainConfig.nameserviceConfiguration.bnsNodes[i]); } } if (domainConfig.nameserviceConfiguration.gaiaHub) { domainConfig.nameserviceConfiguration.gaiaHub = sanitizeUrl(domainConfig.nameserviceConfiguration.gaiaHub); } if (domainConfig.nameserviceConfiguration.subdomainRegistrar) { domainConfig.nameserviceConfiguration.subdomainRegistrar = sanitizeUrl(domainConfig.nameserviceConfiguration.subdomainRegistrar); } CruxSpec.validations.validateNameServiceConfig(domainConfig.nameserviceConfiguration); } if (domainConfig.supportedAssetGroups) { CruxSpec.validations.validateAssetGroups(domainConfig.supportedAssetGroups); } } catch (e) { throw new BaseError(e, "Domain config validation failed!"); } // managing fallbacks if (!domainConfig.supportedAssetGroups) { domainConfig.supportedAssetGroups = []; } _this.domainConfig = domainConfig; }; this.domainId = cruxDomainId; this.setRegistrationStatus(registrationStatus); this.setConfig(domainConfig); log.debug("CruxDomain initialised"); } Object.defineProperty(CruxDomain.prototype, "id", { get: function () { return this.domainId; }, enumerable: true, configurable: true }); Object.defineProperty(CruxDomain.prototype, "status", { get: function () { return this.registrationStatus; }, enumerable: true, configurable: true }); Object.defineProperty(CruxDomain.prototype, "config", { get: function () { return this.domainConfig; }, set: function (domainConfig) { this.setConfig(domainConfig); }, enumerable: true, configurable: true }); return CruxDomain; }()); export { CruxDomain };