@cruxpay/js-sdk
Version:
CruxPay Javascript SDK
92 lines (91 loc) • 4.11 kB
JavaScript
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 };