UNPKG

send-crypto

Version:

A minimal JavaScript library / wallet for sending crypto assets

83 lines 7.4 kB
import axios from "axios"; import https from "https"; import { fixUTXO, fixValue, sortUTXOs } from "../../lib/utxo"; import { DEFAULT_TIMEOUT } from "./timeout"; const fetchUTXOs = (insightURL) => async (address, confirmations) => { const url = `${insightURL.replace(/\/$/, "")}/addr/${address}/utxo`; const response = await axios.get(url, { // TODO: Remove when certificate is fixed. httpsAgent: new https.Agent({ rejectUnauthorized: false, }), timeout: DEFAULT_TIMEOUT, }); const data = typeof response.data === "string" ? JSON.parse(response.data) : response.data; return data .map((utxo) => ({ txHash: utxo.txid, amount: utxo.satoshis || fixValue(utxo.amount, 8), // script_hex: utxo.scriptPubKey, vOut: utxo.vout, confirmations: utxo.confirmations, })) .filter((utxo) => confirmations === 0 || utxo.confirmations >= confirmations) .sort(sortUTXOs); }; const fetchTXs = (insightURL) => async (address, confirmations) => { const url = `${insightURL.replace(/\/$/, "")}/txs/?address=${address}`; const response = await axios.get(url, { // TODO: Remove when certificate is fixed. httpsAgent: new https.Agent({ rejectUnauthorized: false, }), timeout: DEFAULT_TIMEOUT, }); const data = typeof response.data === "string" ? JSON.parse(response.data) : response.data; const received = []; for (const tx of data.txs) { for (let i = 0; i < tx.vout.length; i++) { const vout = tx.vout[i]; if (vout.scriptPubKey.addresses.indexOf(address) >= 0) { received.push({ txHash: tx.txid, amount: fixValue(parseFloat(vout.value), 8), vOut: i, confirmations: tx.confirmations, }); } } } return received .filter((utxo) => confirmations === 0 || utxo.confirmations >= confirmations) .sort(sortUTXOs); }; const fetchUTXO = (insightURL) => async (txHash, vOut) => { const url = `${insightURL.replace(/\/$/, "")}/tx/${txHash}`; const tx = (await axios.get(url, { timeout: DEFAULT_TIMEOUT })) .data; return fixUTXO({ txHash, amount: parseFloat(tx.vout[vOut].value), vOut, confirmations: tx.confirmations, }, 8); }; export const broadcastTransaction = (insightURL) => async (txHex) => { const url = `${insightURL.replace(/\/$/, "")}/tx/send`; const response = await axios.post(url, { rawtx: txHex }, { timeout: DEFAULT_TIMEOUT }); if (response.data.error) { throw new Error(response.data.error); } return response.data.txid; }; export const Insight = { fetchUTXO, fetchUTXOs, fetchTXs, broadcastTransaction, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zaWdodC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vYXBpcy9pbnNpZ2h0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU1QyxNQUFNLFVBQVUsR0FBRyxDQUFDLFVBQWtCLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFDNUMsT0FBZSxFQUNmLGFBQXFCLEVBQ0csRUFBRTtJQUMxQixNQUFNLEdBQUcsR0FBRyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxTQUFTLE9BQU8sT0FBTyxDQUFDO0lBQ3BFLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBa0IsR0FBRyxFQUFFO1FBQ25ELDBDQUEwQztRQUMxQyxVQUFVLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3hCLGtCQUFrQixFQUFFLEtBQUs7U0FDNUIsQ0FBQztRQUNGLE9BQU8sRUFBRSxlQUFlO0tBQzNCLENBQUMsQ0FBQztJQUVILE1BQU0sSUFBSSxHQUNOLE9BQU8sUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRO1FBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDM0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFFeEIsT0FBTyxJQUFJO1NBQ04sR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMs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