send-crypto
Version:
A minimal JavaScript library / wallet for sending crypto assets
90 lines • 7.82 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Insight = exports.broadcastTransaction = void 0;
const axios_1 = __importDefault(require("axios"));
const https_1 = __importDefault(require("https"));
const utxo_1 = require("../../lib/utxo");
const timeout_1 = require("./timeout");
const fetchUTXOs = (insightURL) => async (address, confirmations) => {
const url = `${insightURL.replace(/\/$/, "")}/addr/${address}/utxo`;
const response = await axios_1.default.get(url, {
// TODO: Remove when certificate is fixed.
httpsAgent: new https_1.default.Agent({
rejectUnauthorized: false,
}),
timeout: timeout_1.DEFAULT_TIMEOUT,
});
const data = typeof response.data === "string"
? JSON.parse(response.data)
: response.data;
return data
.map((utxo) => ({
txHash: utxo.txid,
amount: utxo.satoshis || (0, utxo_1.fixValue)(utxo.amount, 8),
// script_hex: utxo.scriptPubKey,
vOut: utxo.vout,
confirmations: utxo.confirmations,
}))
.filter((utxo) => confirmations === 0 || utxo.confirmations >= confirmations)
.sort(utxo_1.sortUTXOs);
};
const fetchTXs = (insightURL) => async (address, confirmations) => {
const url = `${insightURL.replace(/\/$/, "")}/txs/?address=${address}`;
const response = await axios_1.default.get(url, {
// TODO: Remove when certificate is fixed.
httpsAgent: new https_1.default.Agent({
rejectUnauthorized: false,
}),
timeout: timeout_1.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: (0, utxo_1.fixValue)(parseFloat(vout.value), 8),
vOut: i,
confirmations: tx.confirmations,
});
}
}
}
return received
.filter((utxo) => confirmations === 0 || utxo.confirmations >= confirmations)
.sort(utxo_1.sortUTXOs);
};
const fetchUTXO = (insightURL) => async (txHash, vOut) => {
const url = `${insightURL.replace(/\/$/, "")}/tx/${txHash}`;
const tx = (await axios_1.default.get(url, { timeout: timeout_1.DEFAULT_TIMEOUT }))
.data;
return (0, utxo_1.fixUTXO)({
txHash,
amount: parseFloat(tx.vout[vOut].value),
vOut,
confirmations: tx.confirmations,
}, 8);
};
const broadcastTransaction = (insightURL) => async (txHex) => {
const url = `${insightURL.replace(/\/$/, "")}/tx/send`;
const response = await axios_1.default.post(url, { rawtx: txHex }, { timeout: timeout_1.DEFAULT_TIMEOUT });
if (response.data.error) {
throw new Error(response.data.error);
}
return response.data.txid;
};
exports.broadcastTransaction = broadcastTransaction;
exports.Insight = {
fetchUTXO,
fetchUTXOs,
fetchTXs,
broadcastTransaction: exports.broadcastTransaction,
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zaWdodC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tb24vYXBpcy9pbnNpZ2h0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUEwQjtBQUMxQixrREFBMEI7QUFFMUIseUNBQW9FO0FBQ3BFLHVDQUE0QztBQUU1QyxNQUFNLFVBQVUsR0FBRyxDQUFDLFVBQWtCLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFDNUMsT0FBZSxFQUNmLGFBQXFCLEVBQ0csRUFBRTtJQUMxQixNQUFNLEdBQUcsR0FBRyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxTQUFTLE9BQU8sT0FBTyxDQUFDO0lBQ3BFLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBa0IsR0FBRyxFQUFFO1FBQ25ELDBDQUEwQztRQUMxQyxVQUFVLEVBQUUsSUFBSSxlQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3hCLGtCQUFrQixFQUFFLEtBQUs7U0FDNUIsQ0FBQztRQUNGLE9BQU8sRUFBRSx5QkFBZTtLQUMzQixDQUFDLENBQUM7SUFFSCxNQUFNLElBQUksR0FDTixPQUFPLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUTtRQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBRXhCLE9BQU8sSUFBSTtTQUNOLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNaLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFBLGVBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNqRCxpQ0FBaUM7UUFDakMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2YsYUFB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