UNPKG

@cruxpay/js-sdk

Version:

CruxPay Javascript SDK

240 lines (239 loc) 10.3 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; import { ErrorHelper, PackageErrorCode } from "./error"; export var DEFAULT_CRUX_NAMESPACE = "crux"; export var DEFAULT_BLOCKSTACK_NAMESPACE = "id"; export var CRUX_DOMAIN_SUFFIX = "_crux"; export var validateSubdomain = function (subDomain) { var subdomainRegex = "^[a-z]([a-z]|[0-9]|-|_)*([a-z]|[0-9])$"; var subdomainMinLength = 4; var subdomainMaxLength = 20; // tslint:disable-next-line: tsr-detect-non-literal-regexp if (!subDomain.match(new RegExp(subdomainRegex))) { throw ErrorHelper.getPackageError(null, PackageErrorCode.SubdomainRegexMatchFailure); } if (subDomain.length < subdomainMinLength || subDomain.length > subdomainMaxLength) { throw ErrorHelper.getPackageError(null, PackageErrorCode.SubdomainLengthCheckFailure); } }; var CruxId = /** @class */ (function () { function CruxId(inputComponents) { var _this = this; this.toString = function () { var cruxSubdomainPart = _this.components.subdomain + "@"; var otherPart = _this.components.domain + "." + _this.components.namespace; return cruxSubdomainPart + otherPart; }; // validateSubdomain(inputComponents.subdomain); this.components = { domain: inputComponents.domain.toLowerCase(), namespace: DEFAULT_CRUX_NAMESPACE, subdomain: inputComponents.subdomain.toLowerCase(), }; } CruxId.fromString = function (stringRepresentation) { var _a; stringRepresentation = stringRepresentation.toLowerCase(); var arrayCruxId = stringRepresentation.split(/[.@]/); var cruxSubdomain = ""; var cruxDomain = ""; var cruxNamespace = ""; if (arrayCruxId.length === 3) { _a = __read(arrayCruxId, 3), cruxSubdomain = _a[0], cruxDomain = _a[1], cruxNamespace = _a[2]; // foo@exodus.crux } else { throw ErrorHelper.getPackageError(null, PackageErrorCode.CruxIdInvalidStructure); } if (cruxNamespace !== DEFAULT_CRUX_NAMESPACE) { throw ErrorHelper.getPackageError(null, PackageErrorCode.CruxIdNamespaceValidation, cruxNamespace); } return new CruxId({ domain: cruxDomain, subdomain: cruxSubdomain }); }; return CruxId; }()); export { CruxId }; var BlockstackId = /** @class */ (function () { function BlockstackId(inputComponents) { var _this = this; this.toString = function () { var bsSubdomainPart = _this.components.subdomain.length > 0 ? _this.components.subdomain + "." : ""; return bsSubdomainPart + _this.components.domain + "." + _this.components.namespace; }; this.components = __assign(__assign({}, inputComponents), { namespace: DEFAULT_BLOCKSTACK_NAMESPACE }); } BlockstackId.fromString = function (stringRepresentation) { var _a, _b; var arrayBsId = stringRepresentation.split("."); var bsSubdomain = ""; var bsDomain = ""; var bsNamespace = ""; if (arrayBsId.length === 3) { _a = __read(arrayBsId, 3), bsSubdomain = _a[0], bsDomain = _a[1], bsNamespace = _a[2]; } else if (arrayBsId.length === 2) { _b = __read(arrayBsId, 2), bsDomain = _b[0], bsNamespace = _b[1]; } else { throw ErrorHelper.getPackageError(null, PackageErrorCode.BlockstackIdInvalidStructure); } if (bsNamespace !== DEFAULT_BLOCKSTACK_NAMESPACE) { throw ErrorHelper.getPackageError(null, PackageErrorCode.BlockstackIdNamespaceValidation, bsNamespace); } return new BlockstackId({ domain: bsDomain, subdomain: bsSubdomain }); }; return BlockstackId; }()); export { BlockstackId }; var CruxDomainId = /** @class */ (function () { function CruxDomainId(domain) { var _this = this; this.toString = function () { return _this.components.domain + "." + _this.components.namespace; }; this.components = { domain: domain, namespace: DEFAULT_CRUX_NAMESPACE, }; } CruxDomainId.fromString = function (stringRepresentation) { var _a; var arrayCruxId = stringRepresentation.split(/[.@]/); var cruxDomain = ""; var cruxNamespace = ""; if (arrayCruxId.length === 2) { _a = __read(arrayCruxId, 2), cruxDomain = _a[0], cruxNamespace = _a[1]; // exodus.crux } else { throw ErrorHelper.getPackageError(null, PackageErrorCode.CruxDomainInvalidStructure); } if (cruxNamespace !== DEFAULT_CRUX_NAMESPACE) { throw ErrorHelper.getPackageError(null, PackageErrorCode.CruxDomainNamespaceValidation, cruxNamespace); } return new CruxDomainId(cruxDomain); }; return CruxDomainId; }()); export { CruxDomainId }; var BlockstackDomainId = /** @class */ (function () { function BlockstackDomainId(domain) { var _this = this; this.toString = function () { return _this.components.domain + "." + _this.components.namespace; }; this.components = { domain: domain, namespace: DEFAULT_BLOCKSTACK_NAMESPACE, }; } BlockstackDomainId.fromString = function (stringRepresentation) { var _a; var arrayBsId = stringRepresentation.split("."); var bsDomain = ""; var bsNamespace = ""; if (arrayBsId.length === 2) { _a = __read(arrayBsId, 2), bsDomain = _a[0], bsNamespace = _a[1]; } else { throw ErrorHelper.getPackageError(null, PackageErrorCode.BlockstackDomainInvalidStructure); } if (bsNamespace !== DEFAULT_BLOCKSTACK_NAMESPACE) { throw ErrorHelper.getPackageError(null, PackageErrorCode.BlockstackDomainNamespaceValidation, bsNamespace); } return new BlockstackDomainId(bsDomain); }; return BlockstackDomainId; }()); export { BlockstackDomainId }; var IdTranslator = /** @class */ (function () { function IdTranslator() { } IdTranslator.cruxDomainToBlockstackDomain = function (cruxDomain) { if (cruxDomain.components.namespace !== DEFAULT_CRUX_NAMESPACE) { throw ErrorHelper.getPackageError(null, PackageErrorCode.CruxDomainNamespaceValidation, cruxDomain.components.namespace); } return new BlockstackDomainId(IdTranslator.cruxDomainStringToBlockstackDomainString(cruxDomain.components.domain)); }; IdTranslator.blockstackDomainToCruxDomain = function (blockstackDomain) { if (blockstackDomain.components.namespace !== DEFAULT_BLOCKSTACK_NAMESPACE) { throw ErrorHelper.getPackageError(null, PackageErrorCode.CruxDomainNamespaceValidation, blockstackDomain.components.namespace); } return new CruxDomainId(IdTranslator.blockstackDomainStringToCruxDomainString(blockstackDomain.components.domain)); }; IdTranslator.cruxIdToBlockstackId = function (cruxId) { if (cruxId.components.namespace !== DEFAULT_CRUX_NAMESPACE) { throw ErrorHelper.getPackageError(null, PackageErrorCode.CruxIdNamespaceValidation, cruxId.components.namespace); } return new BlockstackId({ domain: IdTranslator.cruxDomainStringToBlockstackDomainString(cruxId.components.domain), subdomain: cruxId.components.subdomain, }); }; IdTranslator.blockstackIdToCruxId = function (blockstackId) { if (!blockstackId.components.subdomain) { throw ErrorHelper.getPackageError(null, PackageErrorCode.BlockstackIdInvalidSubdomainForTranslation); } if (blockstackId.components.namespace !== DEFAULT_BLOCKSTACK_NAMESPACE) { throw ErrorHelper.getPackageError(null, PackageErrorCode.BlockstackIdNamespaceValidation, blockstackId.components.namespace); } if (!blockstackId.components.domain.endsWith(CRUX_DOMAIN_SUFFIX)) { throw ErrorHelper.getPackageError(null, PackageErrorCode.InvalidBlockstackDomainForTranslation); } return new CruxId({ domain: IdTranslator.blockstackDomainStringToCruxDomainString(blockstackId.components.domain), subdomain: blockstackId.components.subdomain, }); }; IdTranslator.blockstackDomainStringToCruxDomainString = function (domainString) { var match = domainString.match(new RegExp("^(.+)_crux$")); if (!match) { throw ErrorHelper.getPackageError(null, PackageErrorCode.InvalidBlockstackDomainForTranslation); } return match[1]; }; IdTranslator.cruxDomainStringToBlockstackDomainString = function (cruxDomainString) { return cruxDomainString + "_crux"; }; IdTranslator.cruxToBlockstack = function (crux) { if (crux instanceof CruxDomainId) { return IdTranslator.cruxDomainToBlockstackDomain(crux); } else { return IdTranslator.cruxIdToBlockstackId(crux); } }; IdTranslator.blockstackToCrux = function (crux) { if (crux instanceof BlockstackDomainId) { return IdTranslator.blockstackDomainToCruxDomain(crux); } else { return IdTranslator.blockstackIdToCruxId(crux); } }; return IdTranslator; }()); export { IdTranslator };