UNPKG

micro-stacks

Version:

Tiny libraries for building Stacks apps.

117 lines (112 loc) 14.3 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var common = require('micro-stacks/common'); var clarity = require('micro-stacks/clarity'); var network = require('micro-stacks/network'); var crypto = require('micro-stacks/crypto'); var z=t=>typeof t=="number";function S(t){return t.map(n=>{switch(n){case"contract_call":case"smart_contract":case"token_transfer":case"coinbase":case"poison_microblock":return n;default:throw new Error(`Unexpected tx type: ${JSON.stringify(n)}`)}})}var w=t=>{let n;if(Array.isArray(t))n=S(t);else if(typeof t=="string")n=S([t]);else {if(t)throw new Error(`Unexpected tx type query value: ${JSON.stringify(t)}`);n=[];}return n},K=(t,n)=>n!=null&&n.length?`${n.map((e,o)=>`${o>0?encodeURIComponent(`${t}[]`):""}=${encodeURIComponent(e)}`).join("&")}`:"",s=(t,n)=>{try{let e=new URL(t);return Object.keys(n).forEach(o=>{let a=n[o];if(!!a){if(Array.isArray(a))return a.length===0?void 0:e.searchParams.set(`${o}[]`,K(o,a));if(typeof a=="boolean"||z(a))return e.searchParams.set(o,String(a));e.searchParams.set(o,a);}}),e.toString()}catch(e){return console.error("generateUrl"),console.error(e),t}};function f(t){return `${t}/v1`}function h(t){return `${t}/v2`}function p(t){return `${t}/extended/v1`}function F(t){return `${p(t)}/status`}function N(t){return `${p(t)}/search`}function _(t){return `${p(t)}/fee_rate`}function g(t){return `${p(t)}/burnchain`}function B(t){return `${p(t)}/block`}function k(t){return `${p(t)}/contract`}function R(t){return `${p(t)}/tokens`}function E(t){return `${h(t)}/contracts`}function M(t){return `${h(t)}/fees/transfers`}function P(t){return `${p(t)}/microblock`}function O(t){return `${p(t)}/faucets/stx`}function C(t){return `${p(t)}/faucets/btc`}function v(t){return `${p(t)}/stx_supply`}function H(t){return `${p(t)}/stx_supply/total/plain`}function U(t){return `${p(t)}/stx_supply/circulating/plain`}function I(t){return `${p(t)}/stx_supply/legacy_format`}function m(t){return `${p(t)}/address`}function l(t){return `${p(t)}/tx`}function J(t){return `${h(t)}/info`}function G(t){return `${h(t)}/pox`}function W(t){return `${p(t)}/info/network_block_times`}function j(t){return `${p(t)}/info/network_block_time`}function L(t){return `${l(t)}/mempool`}async function r(t){return await(await common.fetchPrivate(t)).json()}async function y(t,n={}){let e={"Content-Type":"application/json; charset=utf-8",Accept:"application/json"},o=n.body?JSON.stringify(n.body):void 0,a={...n,method:"POST",body:o,headers:e};return await(await common.fetchPrivate(t,a)).json()}async function A(t){return (await common.fetchPrivate(t,{method:"GET",headers:{Accept:"text/plain"}})).text()}function ct(t){if(!t)return 0;let{limit:n,offset:e,total:o}=t,a=e+n,c=o-a,i=c===0||Math.sign(c)===-1;if(!(Math.abs(c)===a||i))return a}async function ut({url:t,principal:n}){let e=`${m(t)}/${n}/balances`;return r(e)}async function ft({url:t,principal:n}){let e=`${m(t)}/${n}/stx`;return r(e)}async function mt({url:t,principal:n,limit:e,offset:o=0,height:a,unanchored:c}){let i=`${m(t)}/${n}/transactions`,u=s(i,{limit:e,offset:o,height:a,unanchored:c});return r(u)}async function dt({url:t,principal:n,tx_id:e,limit:o,offset:a=0,height:c,unanchored:i}){let u=`${m(t)}/${n}/${e}/transactions_with_transfers`,d=s(u,{limit:o,offset:a,height:c,unanchored:i});return r(d)}async function ht({url:t,principal:n,limit:e,offset:o=0,height:a,unanchored:c}){let i=`${m(t)}/${n}/transactions_with_transfers`,u=s(i,{limit:e,offset:o,height:a,unanchored:c});return r(u)}async function lt({url:t,principal:n}){let e=`${m(t)}/${n}/nonces`;return r(e)}async function xt({url:t,principal:n,limit:e,offset:o=0,unanchored:a}){let c=`${m(t)}/${n}/assets`,i=s(c,{limit:e,offset:o,unanchored:a});return r(i)}async function yt({url:t,principal:n}){let e=`${m(t)}/${n}/stx_inbound`;return r(e)}async function gt({url:t,principal:n}){let e=`${m(t)}/${n}/nft_events`;return r(e)}async function Bt({url:t,principal:n}){let e=`${m(t)}/${n}`;return r(e)}async function Tt({url:t,principal:n,limit:e,offset:o=0}){let a=`${L(t)}`;if(n==null?void 0:n.includes(".")){let i=s(a,{limit:e,offset:o}),u=await r(i),d=await Promise.all(u.results.filter(T=>JSON.stringify(T).includes(n)).map(async T=>X({url:t,txid:T.tx_id})));return {...u,results:d}}else {let i=s(a,{limit:e,offset:o,address:n});return r(i)}}async function X({url:t,txid:n}){return r(`${l(t)}/${n}`)}async function Lt({url:t,limit:n,offset:e}){let o=s(B(t),{limit:n,offset:e});return r(o)}async function Pt({url:t,hash:n}){let e=s(`${B(t)}/${n}`,{});return r(e)}async function bt({url:t,height:n}){let e=s(`${B(t)}/by_height/${n}`,{});return r(e)}async function kt({url:t,burn_block_hash:n}){let e=s(`${B(t)}/by_burn_block_hash/${n}`,{});return r(e)}async function Et({url:t,burn_block_height:n}){let e=s(`${B(t)}/by_burn_block_height/${n}`,{});return r(e)}async function wt({url:t,limit:n,offset:e}){let o=s(`${g(t)}/reward_slot_holders`,{limit:n,offset:e});return r(o)}async function Ft({url:t,limit:n,offset:e,address:o}){let a=s(`${g(t)}/reward_slot_holders/${o}`,{limit:n,offset:e});return r(a)}async function Nt({url:t,limit:n,offset:e}){let o=s(`${g(t)}/rewards`,{limit:n,offset:e});return r(o)}async function _t({url:t,limit:n,offset:e,address:o}){let a=s(`${g(t)}/rewards/${o}`,{limit:n,offset:e});return r(a)}async function Mt({url:t,address:n}){let e=s(`${g(t)}/rewards/${n}/total`,{});return r(e)}async function vt({url:t,tld:n}){let e=s(`${h(t)}/prices/namespaces/${n}`,{});return r(e)}async function Ht({url:t,name:n}){let e=s(`${h(t)}/prices/names/${n}`,{});return r(e)}async function Ut({url:t}){let n=s(`${f(t)}/namespaces`,{});return r(n)}async function It({url:t,tld:n}){let e=s(`${f(t)}/namespaces/${n}/names`,{});return r(e)}async function Jt({url:t,page:n}){let e=s(`${f(t)}/names?page=${n}`,{});return r(e)}async function Gt({url:t,name:n}){let e=s(`${f(t)}/names/${n}`,{});return r(e)}async function Wt({url:t,name:n}){let e=s(`${f(t)}/names/${n}/history`,{});return r(e)}async function jt({url:t,name:n}){let e=s(`${f(t)}/names/${n}/zonefile`,{});return r(e)}async function Vt({url:t,name:n,zoneFileHash:e}){let o=s(`${f(t)}/names/${n}/zonefile/${e}`,{});return r(o)}async function Zt({url:t,blockchain:n,address:e}){let o=s(`${f(t)}/addresses/${n}/${e}`,{});return r(o)}async function qt({url:t,page:n}){let e=s(`${f(t)}/subdomains/`,{page:n});return r(e)}async function Dt({url:t,txid:n}){let e=s(`${f(t)}/subdomains/${n}`,{});return r(e)}async function Xt({url:t}){let n=s(M(t),{});return r(n)}async function tn({url:t,contract_id:n,unanchored:e}){let o=s(`${k(t)}/${n}`,{unanchored:e});return r(o)}async function nn({url:t,contract_id:n,limit:e,offset:o,unanchored:a}){let c=s(`${k(t)}/${n}/events`,{limit:e,offset:o,unanchored:a});return r(c)}async function en({url:t,contract_address:n,contract_name:e,tip:o}){let a=s(`${E(t)}/interface/${n}/${e}`,{tip:o});return r(a)}async function sn({url:t,contract_name:n,contract_address:e,map_name:o,proof:a,tip:c,lookup_key:i}){let u=i,d=s(`${h(t)}/map_entry/${e}/${n}/${o}`,{proof:a,tip:c});return y(d,{body:u})}async function rn({url:t,contract_address:n,contract_name:e,proof:o,tip:a}){let c=s(`${E(t)}/source/${n}/${e}`,{proof:o,tip:a});return r(c)}async function cn({url:t,id:n}){let e=s(`${N(t)}/`+n,{});return r(e)}async function fn({url:t}){let n=s(`${R(t)}/ft/metadata`,{});return r(n)}async function mn({url:t}){let n=s(`${R(t)}/nft/metadata`,{});return r(n)}async function dn({url:t,contractId:n}){let e=s(`${R(t)}/${n}/nft/metadata`,{});return r(e)}async function hn({url:t,contractId:n}){let e=s(`${R(t)}/${n}/ft/metadata`,{});return r(e)}async function yn({limit:t,offset:n,type:e,url:o}){let a=s(l(o),{limit:t,offset:n,type:e?w(e):void 0});return r(a)}async function gn({limit:t,offset:n,sender_address:e,recipient_address:o,address:a,url:c}){let i=s(L(c),{limit:t,offset:n,sender_address:e,recipient_address:o,address:a});return r(i)}async function Bn({limit:t,offset:n,url:e}){let o=s(L(e),{limit:t,offset:n});return r(o)}async function Tn({txid:t,event_offset:n,event_limit:e,url:o}){let a=s(`${l(o)}/${t}`,{event_offset:n,event_limit:e});return r(a)}async function $n({txid:t,url:n}){let e=`${l(n)}/${t}/raw`;return r(e)}async function Rn({block_hash:t,url:n,limit:e,offset:o}){let a=`${l(n)}/block/${t}`;return r(s(a,{limit:e,offset:o}))}async function Ln({block_height:t,url:n,limit:e,offset:o}){let a=`${l(n)}/block_height/${t.toString(10)}`;return r(s(a,{limit:e,offset:o}))}async function kn({url:t}){let n=s(J(t),{});return r(n)}async function En({url:t}){let n=s(F(t),{});return r(n)}async function An({url:t}){let n=s(W(t),{});return r(n)}async function Sn({url:t,network:n}){let e=s(`${j(t)}/${n}`,{});return r(e)}async function wn({url:t}){let n=s(v(t),{});return r(n)}async function Fn({url:t}){let n=s(H(t),{});return A(n)}async function Nn({url:t}){let n=s(U(t),{});return A(n)}async function _n({url:t}){let n=s(I(t),{});return r(n)}async function Mn({url:t}){let n=s(G(t),{});return r(n)}async function vn({url:t,address:n,stacking:e=!1}){let o=s(O(t),{});return y(o,{body:{address:n,stacking:e}})}async function Hn({url:t,address:n}){let e=s(C(t),{});return y(e,{body:{address:n}})}async function Jn({url:t,transaction:n}){let e=s(_(t),{});return y(e,{body:{transaction:n}})}async function jn({url:t,limit:n,offset:e}){let o=s(P(t),{limit:n,offset:e});return r(o)}async function Vn({url:t,hash:n}){let e=s(`${P(t)}/${n}`,{});return r(e)}async function Zn({url:t}){let n=s(`${P(t)}/unanchored/txs`,{});return r(n)}function Z(t){if(t.okay)return clarity.hexToCV(t.result);throw new Error(t.cause)}function q(t){let{version:n}=clarity.createAddress(t);return n===crypto.StacksNetworkVersion.mainnetP2SH||n===crypto.StacksNetworkVersion.mainnetP2PKH}async function D(t){let{contractName:n,contractAddress:e,functionName:o,functionArgs:a,senderAddress:c=e,tip:i}=t,u=t.network;if(!t.network)try{u=q(e)?new network.StacksMainnet:new network.StacksTestnet;}catch(x){throw console.error(x),new Error("[micro-stacks] callReadOnlyFunction -> Incorrect Stacks addressed passed to contractAddress")}if(!u)throw Error("[micro-stacks] callReadOnlyFunction -> no network defined");let d=u.getReadOnlyFunctionCallApiUrl(e,n,o);i&&(d+=`?tip=${i}`);let T=JSON.stringify({sender:c,arguments:a.map(x=>typeof x=="string"?x:clarity.cvToHex(x))}),$=await common.fetchPrivate(d,{method:"POST",body:T,headers:{"Content-Type":"application/json"}});if(!$.ok){let x="";try{x=await $.text();}catch{}throw new Error(`Error calling read-only function. Response ${$.status}: ${$.statusText}. Attempted to fetch ${d} and failed with the message: "${x}"`)}return Z(await $.json())}async function oe(t,n){let e=await D(t);return clarity.cvToTrueValue(e,n)} exports.addressEndpoint = m; exports.blockEndpoint = B; exports.btcFaucetEndpoint = C; exports.burnchainEndpoint = g; exports.callReadOnlyFunction = D; exports.contractEndpoint = k; exports.contractsEndpoint = E; exports.extendedEndpoint = p; exports.feeRateEndpoint = _; exports.feesEndpoint = M; exports.feesSearch = Xt; exports.fetchAccountAssets = xt; exports.fetchAccountBalances = ut; exports.fetchAccountInfo = Bt; exports.fetchAccountMempoolTransactions = Tt; exports.fetchAccountNftEvents = gt; exports.fetchAccountNonces = lt; exports.fetchAccountStxBalance = ft; exports.fetchAccountStxInbound = yt; exports.fetchAccountTransactionWithTransfers = dt; exports.fetchAccountTransactions = mt; exports.fetchAccountTransactionsWithTransfers = ht; exports.fetchAllSubdomains = qt; exports.fetchBlock = Pt; exports.fetchBlockByBurnBlockHash = kt; exports.fetchBlockByBurnBlockHeight = Et; exports.fetchBlockByHeight = bt; exports.fetchBlocks = Lt; exports.fetchBurnchainRewardSlotHolders = wt; exports.fetchBurnchainRewardSlotHoldersByAddress = Ft; exports.fetchBurnchainRewards = Nt; exports.fetchBurnchainRewardsByAddress = _t; exports.fetchContractById = tn; exports.fetchContractDataMapEntry = sn; exports.fetchContractEventsById = nn; exports.fetchContractInterface = en; exports.fetchContractSource = rn; exports.fetchCoreApiInfo = kn; exports.fetchDroppedMempoolTransactionsList = Bn; exports.fetchFeeRate = Jn; exports.fetchFtMetadataForContractId = hn; exports.fetchFtMetadataList = fn; exports.fetchGetBtcTokens = Hn; exports.fetchGetStxTokens = vn; exports.fetchHistoricalZoneFile = Vt; exports.fetchJson = r; exports.fetchJsonPost = y; exports.fetchMempoolTransactionsList = gn; exports.fetchMicroblock = Vn; exports.fetchMicroblocks = jn; exports.fetchMicroblocksUnanchoredTransactions = Zn; exports.fetchName = Gt; exports.fetchNameHistory = Wt; exports.fetchNamePrice = Ht; exports.fetchNames = Jt; exports.fetchNamesByAddress = Zt; exports.fetchNamesFromNamespaces = It; exports.fetchNamespacePrice = vt; exports.fetchNamespaces = Ut; exports.fetchNetworkBlockTime = Sn; exports.fetchNetworkBlockTimes = An; exports.fetchNftMetadataForContractId = dn; exports.fetchNftMetadataList = mn; exports.fetchPox = Mn; exports.fetchRawTransaction = $n; exports.fetchReadOnlyFunction = oe; exports.fetchSearch = cn; exports.fetchStatus = En; exports.fetchStxSupply = wn; exports.fetchStxSupplyCirculatingPlain = Nn; exports.fetchStxSupplyLegacyFormat = _n; exports.fetchStxSupplyPlain = Fn; exports.fetchSubdomainAtTransaction = Dt; exports.fetchText = A; exports.fetchTotalBurnchainRewardsByAddress = Mt; exports.fetchTransaction = Tn; exports.fetchTransactionsByBlockHash = Rn; exports.fetchTransactionsByBlockHeight = Ln; exports.fetchTransactionsList = yn; exports.fetchZoneFile = jt; exports.generateQueryStringFromArray = K; exports.generateUrl = s; exports.getNextPageParam = ct; exports.infoEndpoint = J; exports.isMainnetAddress = q; exports.isNumber = z; exports.microblockEndpoint = P; exports.networkBlockTimeEndpoint = j; exports.networkBlockTimesEndpoint = W; exports.parseReadOnlyResponse = Z; exports.parseTxTypeStrings = S; exports.poxEndpoint = G; exports.searchEndpoint = N; exports.statusEndpoint = F; exports.stxFaucetEndpoint = O; exports.stxSupplyCirculatingPlainEndpoint = U; exports.stxSupplyEndpoint = v; exports.stxSupplyLegacyFormatEndpoint = I; exports.stxSupplyPlainEndpoint = H; exports.tokensEndpoint = R; exports.txEndpoint = l; exports.txMempoolEndpoint = L; exports.v1Endpoint = f; exports.v2Endpoint = h; exports.validateTxTypes = w;