UNPKG

@stacks/auth

Version:

Authentication for Stacks apps.

61 lines 2.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getNameInfo = exports.lookupProfile = void 0; const network_1 = require("@stacks/network"); const profile_1 = require("@stacks/profile"); function lookupProfile(options) { if (!options.username) { return Promise.reject(new Error('No username provided')); } const network = (0, network_1.networkFrom)(options.network ?? 'mainnet'); const client = Object.assign({}, (0, network_1.clientFromNetwork)(network), options.client); let lookupPromise; if (options.zoneFileLookupURL) { const url = `${options.zoneFileLookupURL.replace(/\/$/, '')}/${options.username}`; lookupPromise = client.fetch(url).then(response => response.json()); } else { lookupPromise = getNameInfo({ name: options.username }); } return lookupPromise.then((responseJSON) => { if (responseJSON.hasOwnProperty('zonefile') && responseJSON.hasOwnProperty('address')) { return (0, profile_1.resolveZoneFileToProfile)({ zoneFile: responseJSON.zonefile, publicKeyOrAddress: responseJSON.address, client, }); } else { throw new Error('Invalid zonefile lookup response: did not contain `address`' + ' or `zonefile` field'); } }); } exports.lookupProfile = lookupProfile; function getNameInfo(opts) { const network = (0, network_1.networkFrom)(opts.network ?? 'mainnet'); const client = Object.assign({}, (0, network_1.clientFromNetwork)(network), opts.client); const nameLookupURL = `${client.baseUrl}/v1/names/${opts.name}`; return client .fetch(nameLookupURL) .then((resp) => { if (resp.status === 404) { throw new Error('Name not found'); } else if (resp.status !== 200) { throw new Error(`Bad response status: ${resp.status}`); } else { return resp.json(); } }) .then((nameInfo) => { if (nameInfo.address) { return Object.assign({}, nameInfo, { address: nameInfo.address }); } else { return nameInfo; } }); } exports.getNameInfo = getNameInfo; //# sourceMappingURL=profile.js.map