v2.2.0 - new major version for mempool-js (#2)
* - Refactoring code. - Refactoring folder structure. - Adding apiEndpoint and websocketEndpoint to Mempool config. - Adding brownserify feature. - Adding MIT LICENSE * - Changing package.json information. - Reorganizing README.md information. - Default export for CommonJs and ES6 Modules. - Changing default variable to mempoolJS. - Organizing the API and WS providers. - Splitting websocket connection types: client and server. * Change version to 2.2.0. Reorder keywords in alphabetical order.
This commit is contained in:
39
src/app/addresses.ts
Normal file
39
src/app/addresses.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import { AxiosInstance } from 'axios';
|
||||
import { Address, AddressTxsUtxo, Tx, AddressInstance } from '../interfaces';
|
||||
|
||||
export const useAddresses = (api: AxiosInstance): AddressInstance => {
|
||||
const getAddress = async (address: string) => {
|
||||
const { data } = await api.get<Address>(`/address/${address}`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getAddressTxs = async (address: string) => {
|
||||
const { data } = await api.get<Tx[]>(`/address/${address}/txs`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getAddressTxsChain = async (address: string) => {
|
||||
const { data } = await api.get<Tx[]>(`/address/${address}/txs/chain`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getAddressTxsMempool = async (address: string) => {
|
||||
const { data } = await api.get<Tx[]>(`/address/${address}/txs/mempool`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getAddressTxsUtxo = async (address: string) => {
|
||||
const { data } = await api.get<AddressTxsUtxo[]>(
|
||||
`/address/${address}/utxo`
|
||||
);
|
||||
return data;
|
||||
};
|
||||
|
||||
return {
|
||||
getAddress,
|
||||
getAddressTxs,
|
||||
getAddressTxsChain,
|
||||
getAddressTxsMempool,
|
||||
getAddressTxsUtxo,
|
||||
};
|
||||
};
|
||||
74
src/app/blocks.ts
Normal file
74
src/app/blocks.ts
Normal file
@@ -0,0 +1,74 @@
|
||||
import { AxiosInstance } from 'axios';
|
||||
import { Block, BlockStatus, BlockInstance, Tx } from '../interfaces';
|
||||
|
||||
export const useBlocks = (api: AxiosInstance): BlockInstance => {
|
||||
const getBlock = async (hash: string) => {
|
||||
const { data } = await api.get<Block>(`/block/${hash}`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getBlockStatus = async (hash: string) => {
|
||||
const { data } = await api.get<BlockStatus>(`/block/${hash}/status`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getBlockTxs = async (params: {
|
||||
hash: string;
|
||||
start_index?: number;
|
||||
}) => {
|
||||
const { data } = await api.get<Tx>(
|
||||
`/block/${params.hash}/txs/${params.start_index}`
|
||||
);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getBlockTxids = async (hash: string) => {
|
||||
const { data } = await api.get<string[]>(`/block/${hash}/txids`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getBlockTxid = async (params: { hash: string; index: number }) => {
|
||||
const { data } = await api.get<string>(
|
||||
`/block/${params.hash}/txid/${params.index}`
|
||||
);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getBlockRaw = async (hash: string) => {
|
||||
const { data } = await api.get<string>(`/block/${hash}/raw`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getBlockHeight = async (height: number) => {
|
||||
const { data } = await api.get<string>(`/block-height/${height}`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getBlocks = async (params: { start_height?: number }) => {
|
||||
const { data } = await api.get<Block>(`/blocks/${params.start_height}`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getBlocksTipHeight = async () => {
|
||||
const { data } = await api.get<number>(`/blocks/tip/height`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getBlocksTipHash = async () => {
|
||||
const { data } = await api.get<string>(`/blocks/tip/hash`);
|
||||
return data;
|
||||
};
|
||||
|
||||
return {
|
||||
getBlock,
|
||||
getBlocks,
|
||||
getBlockStatus,
|
||||
getBlockTxs,
|
||||
getBlockTxid,
|
||||
getBlockTxids,
|
||||
getBlockRaw,
|
||||
getBlockHeight,
|
||||
getBlocksTipHash,
|
||||
getBlocksTipHeight,
|
||||
};
|
||||
};
|
||||
21
src/app/fees.ts
Normal file
21
src/app/fees.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { AxiosInstance } from 'axios';
|
||||
import { FeesRecommended, FeesMempoolBlocks, FeeInstance } from '../interfaces';
|
||||
|
||||
export const useFees = (api: AxiosInstance): FeeInstance => {
|
||||
const getFeesRecommended = async () => {
|
||||
const { data } = await api.get<FeesRecommended>(`/v1/fees/recommended`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getFeesMempoolBlocks = async () => {
|
||||
const { data } = await api.get<FeesMempoolBlocks[]>(
|
||||
`/v1/fees/mempool-blocks`
|
||||
);
|
||||
return data;
|
||||
};
|
||||
|
||||
return {
|
||||
getFeesRecommended,
|
||||
getFeesMempoolBlocks,
|
||||
};
|
||||
};
|
||||
25
src/app/mempool.ts
Normal file
25
src/app/mempool.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { AxiosInstance } from 'axios';
|
||||
import { Mempool, MempoolRecent, MempoolInstance } from '../interfaces';
|
||||
|
||||
export const useMempool = (api: AxiosInstance): MempoolInstance => {
|
||||
const getMempool = async () => {
|
||||
const { data } = await api.get<Mempool[]>(`/mempool`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getMempoolTxids = async () => {
|
||||
const { data } = await api.get<string[]>(`/mempool/txids`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getMempoolRecent = async () => {
|
||||
const { data } = await api.get<MempoolRecent[]>(`/mempool/recent`);
|
||||
return data;
|
||||
};
|
||||
|
||||
return {
|
||||
getMempool,
|
||||
getMempoolTxids,
|
||||
getMempoolRecent,
|
||||
};
|
||||
};
|
||||
71
src/app/transactions.ts
Normal file
71
src/app/transactions.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
import { AxiosInstance } from 'axios';
|
||||
import {
|
||||
Tx,
|
||||
TxStatus,
|
||||
TxMerkleProof,
|
||||
TxOutspend,
|
||||
TxInstance,
|
||||
} from '../interfaces';
|
||||
|
||||
export const useTransactions = (api: AxiosInstance): TxInstance => {
|
||||
const getTx = async (txid: string) => {
|
||||
const { data } = await api.get<Tx>(`/tx/${txid}`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getTxStatus = async (txid: string) => {
|
||||
const { data } = await api.get<TxStatus>(`/tx/${txid}/status`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getTxHex = async (txid: string) => {
|
||||
const { data } = await api.get<string>(`/tx/${txid}/hex`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getTxRaw = async (txid: string) => {
|
||||
const { data } = await api.get<string>(`/tx/${txid}/raw`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getTxMerkleBlockProof = async (txid: string) => {
|
||||
const { data } = await api.get<string>(`/tx/${txid}/merkleblock-proof`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getTxMerkleProof = async (txid: string) => {
|
||||
const { data } = await api.get<Array<TxMerkleProof>>(
|
||||
`/tx/${txid}/merkle-proof`
|
||||
);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getTxOutspend = async (params: { txid: string; vout: number }) => {
|
||||
const { data } = await api.get<TxOutspend>(
|
||||
`/tx/${params.txid}/outspend/${params.vout}`
|
||||
);
|
||||
return data;
|
||||
};
|
||||
|
||||
const getTxOutspends = async (txid: string) => {
|
||||
const { data } = await api.get<Array<TxOutspend>>(`/tx/${txid}/outspends`);
|
||||
return data;
|
||||
};
|
||||
|
||||
const postTx = async (txid: string) => {
|
||||
const { data } = await api.post<string>(`/tx`, { txid: txid });
|
||||
return data;
|
||||
};
|
||||
|
||||
return {
|
||||
getTx,
|
||||
getTxStatus,
|
||||
getTxHex,
|
||||
getTxRaw,
|
||||
getTxMerkleBlockProof,
|
||||
getTxMerkleProof,
|
||||
getTxOutspend,
|
||||
getTxOutspends,
|
||||
postTx,
|
||||
};
|
||||
};
|
||||
14
src/app/websocket.ts
Normal file
14
src/app/websocket.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { WsInterface, WsInstance } from '../interfaces';
|
||||
import wsClient from '../services/wsClient';
|
||||
import wsServer from '../services/wsServer';
|
||||
|
||||
const defaultWs = 'wss://mempool.space/api/v1/ws';
|
||||
|
||||
export const useWebsocket = (websocketEndpoint?: string): WsInstance => {
|
||||
return {
|
||||
initClient: ({ options }: WsInterface) =>
|
||||
wsClient(options, defaultWs, websocketEndpoint),
|
||||
initServer: ({ options }: WsInterface) =>
|
||||
wsServer(options, defaultWs, websocketEndpoint),
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user