UNPKG

arweave-account

Version:

Account protocol library on Arweave by Metaweave.xyz

117 lines (116 loc) 4.96 kB
var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const config_1 = __importDefault(require("./config")); const constants_1 = require("./constants"); class Data { static getURLfromURI(URI) { let ressource; const gc = config_1.default.gateway; // Look for simple txids to be compatible with arweave account protocol v0.2 if (/^[a-zA-Z0-9\-_]{43}$/.test(URI)) return `${gc.protocol}://${gc.host}:${gc.port}/${URI}`; // ar://<txid> else if (ressource = URI.match(/^ar:\/\/([a-zA-Z0-9\-_]{43})$/)) return `${gc.protocol}://${gc.host}:${gc.port}/${ressource[1]}`; // http URLs else if (/^https?:\/\/.+$/.test(URI)) return URI; // corrupted data (default avatar) else return `${gc.protocol}://${gc.host}:${gc.port}/${config_1.default.defaultAvatarURI}`; } static getUniqueHandle(addr, handleName) { if (handleName && typeof handleName === 'string') return `@${handleName}#${addr.slice(0, 3)}${addr.slice(addr.length - 3)}`; else return `${addr.slice(0, 5)}...${addr.slice(addr.length - 5)}`; } static isEncodedAccount(obj) { return obj.handle !== undefined && obj.handle.length > 0; } static getAvatarURI(avatar) { return avatar && avatar !== constants_1.NO_AVATAR_FLAG ? avatar : config_1.default.defaultAvatarURI; } static setAvatarURI(avatar) { return avatar && avatar !== config_1.default.defaultAvatarURI ? avatar : constants_1.NO_AVATAR_FLAG; } static getBannerURI(banner) { return banner && banner !== constants_1.NO_BANNER_FLAG ? banner : config_1.default.defaultBannerURI; } static setBannerURI(banner) { return banner && banner !== config_1.default.defaultBannerURI ? banner : constants_1.NO_BANNER_FLAG; } static isProfile(obj) { return obj.handleName !== undefined && obj.handleName.length > 0 && obj.links !== undefined; } static getDefaultAccount(addr) { return { txid: null, addr, handle: this.getUniqueHandle(addr), profile: { handleName: "", avatar: config_1.default.defaultAvatarURI, avatarURL: this.getURLfromURI(config_1.default.defaultAvatarURI), banner: config_1.default.defaultBannerURI, bannerURL: this.getURLfromURI(config_1.default.defaultBannerURI), name: "", bio: "", email: "", links: {}, wallets: {} } }; } static encodeForStorage(profile) { let data = { handle: profile.handleName }; if (profile.avatar) data = Object.assign(Object.assign({}, data), { avatar: this.setAvatarURI(profile.avatar) }); if (profile.banner) data = Object.assign(Object.assign({}, data), { banner: this.setBannerURI(profile.banner) }); if (profile.name) data = Object.assign(Object.assign({}, data), { name: profile.name }); if (profile.bio) data = Object.assign(Object.assign({}, data), { bio: profile.bio }); if (profile.email) data = Object.assign(Object.assign({}, data), { email: profile.email }); if (profile.links) data = Object.assign(Object.assign({}, data), { links: profile.links }); if (profile.wallets) data = Object.assign(Object.assign({}, data), { wallets: profile.wallets }); return data; } /* * return default account object if no account or corrupted data */ static decode(txid, addr, data) { /* default account data */ return this.isEncodedAccount(data) ? { txid, addr, handle: this.getUniqueHandle(addr, data.handle), profile: { handleName: data.handle ? data.handle : "", avatar: this.getAvatarURI(data.avatar), avatarURL: this.getURLfromURI(this.getAvatarURI(data.avatar)), banner: this.getBannerURI(data.banner), bannerURL: this.getURLfromURI(this.getBannerURI(data.banner)), name: data.name ? data.name : "", bio: data.bio ? data.bio : "", email: data.email ? data.email : "", links: data.links ? data.links : {}, wallets: data.wallets ? data.wallets : {} } } : this.getDefaultAccount(addr); } } exports.default = Data; ;