@did-btcr2/bitcoin 0.3.4 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/cjs/client/http.js +9 -0
  2. package/dist/cjs/client/http.js.map +1 -0
  3. package/dist/cjs/client/rest/address.js +20 -28
  4. package/dist/cjs/client/rest/address.js.map +1 -1
  5. package/dist/cjs/client/rest/block.js +23 -22
  6. package/dist/cjs/client/rest/block.js.map +1 -1
  7. package/dist/cjs/client/rest/index.js +31 -84
  8. package/dist/cjs/client/rest/index.js.map +1 -1
  9. package/dist/cjs/client/rest/protocol.js +129 -0
  10. package/dist/cjs/client/rest/protocol.js.map +1 -0
  11. package/dist/cjs/client/rest/transaction.js +19 -21
  12. package/dist/cjs/client/rest/transaction.js.map +1 -1
  13. package/dist/cjs/client/rpc/index.js +79 -337
  14. package/dist/cjs/client/rpc/index.js.map +1 -1
  15. package/dist/cjs/client/rpc/interface.js +1 -6
  16. package/dist/cjs/client/rpc/interface.js.map +1 -1
  17. package/dist/cjs/client/rpc/json-rpc.js +40 -63
  18. package/dist/cjs/client/rpc/json-rpc.js.map +1 -1
  19. package/dist/cjs/client/rpc/protocol.js +134 -0
  20. package/dist/cjs/client/rpc/protocol.js.map +1 -0
  21. package/dist/cjs/connection.js +104 -0
  22. package/dist/cjs/connection.js.map +1 -0
  23. package/dist/cjs/constants.js +16 -5
  24. package/dist/cjs/constants.js.map +1 -1
  25. package/dist/cjs/errors.js.map +1 -1
  26. package/dist/cjs/index.js +21 -13
  27. package/dist/cjs/index.js.map +1 -1
  28. package/dist/cjs/types.js +5 -55
  29. package/dist/cjs/types.js.map +1 -1
  30. package/dist/esm/client/http.js +9 -0
  31. package/dist/esm/client/http.js.map +1 -0
  32. package/dist/esm/client/rest/address.js +20 -28
  33. package/dist/esm/client/rest/address.js.map +1 -1
  34. package/dist/esm/client/rest/block.js +23 -22
  35. package/dist/esm/client/rest/block.js.map +1 -1
  36. package/dist/esm/client/rest/index.js +31 -84
  37. package/dist/esm/client/rest/index.js.map +1 -1
  38. package/dist/esm/client/rest/protocol.js +129 -0
  39. package/dist/esm/client/rest/protocol.js.map +1 -0
  40. package/dist/esm/client/rest/transaction.js +19 -21
  41. package/dist/esm/client/rest/transaction.js.map +1 -1
  42. package/dist/esm/client/rpc/index.js +79 -337
  43. package/dist/esm/client/rpc/index.js.map +1 -1
  44. package/dist/esm/client/rpc/interface.js +1 -6
  45. package/dist/esm/client/rpc/interface.js.map +1 -1
  46. package/dist/esm/client/rpc/json-rpc.js +40 -63
  47. package/dist/esm/client/rpc/json-rpc.js.map +1 -1
  48. package/dist/esm/client/rpc/protocol.js +134 -0
  49. package/dist/esm/client/rpc/protocol.js.map +1 -0
  50. package/dist/esm/connection.js +104 -0
  51. package/dist/esm/connection.js.map +1 -0
  52. package/dist/esm/constants.js +16 -5
  53. package/dist/esm/constants.js.map +1 -1
  54. package/dist/esm/errors.js.map +1 -1
  55. package/dist/esm/index.js +21 -13
  56. package/dist/esm/index.js.map +1 -1
  57. package/dist/esm/types.js +5 -55
  58. package/dist/esm/types.js.map +1 -1
  59. package/dist/types/client/http.d.ts +22 -0
  60. package/dist/types/client/http.d.ts.map +1 -0
  61. package/dist/types/client/rest/address.d.ts +17 -19
  62. package/dist/types/client/rest/address.d.ts.map +1 -1
  63. package/dist/types/client/rest/block.d.ts +25 -16
  64. package/dist/types/client/rest/block.d.ts.map +1 -1
  65. package/dist/types/client/rest/index.d.ts +21 -51
  66. package/dist/types/client/rest/index.d.ts.map +1 -1
  67. package/dist/types/client/rest/protocol.d.ts +59 -0
  68. package/dist/types/client/rest/protocol.d.ts.map +1 -0
  69. package/dist/types/client/rest/transaction.d.ts +17 -17
  70. package/dist/types/client/rest/transaction.d.ts.map +1 -1
  71. package/dist/types/client/rpc/index.d.ts +112 -253
  72. package/dist/types/client/rpc/index.d.ts.map +1 -1
  73. package/dist/types/client/rpc/interface.d.ts +42 -6
  74. package/dist/types/client/rpc/interface.d.ts.map +1 -1
  75. package/dist/types/client/rpc/json-rpc.d.ts +21 -18
  76. package/dist/types/client/rpc/json-rpc.d.ts.map +1 -1
  77. package/dist/types/client/rpc/protocol.d.ts +83 -0
  78. package/dist/types/client/rpc/protocol.d.ts.map +1 -0
  79. package/dist/types/client/utils.d.ts +1 -0
  80. package/dist/types/connection.d.ts +82 -0
  81. package/dist/types/connection.d.ts.map +1 -0
  82. package/dist/types/constants.d.ts +17 -5
  83. package/dist/types/constants.d.ts.map +1 -1
  84. package/dist/types/errors.d.ts +5 -3
  85. package/dist/types/errors.d.ts.map +1 -1
  86. package/dist/types/index.d.ts +21 -13
  87. package/dist/types/index.d.ts.map +1 -1
  88. package/dist/types/network.d.ts +1 -0
  89. package/dist/types/types.d.ts +99 -696
  90. package/dist/types/types.d.ts.map +1 -1
  91. package/package.json +3 -3
  92. package/src/client/http.ts +28 -0
  93. package/src/client/rest/address.ts +24 -30
  94. package/src/client/rest/block.ts +29 -26
  95. package/src/client/rest/index.ts +38 -94
  96. package/src/client/rest/protocol.ts +153 -0
  97. package/src/client/rest/transaction.ts +23 -23
  98. package/src/client/rpc/index.ts +146 -379
  99. package/src/client/rpc/interface.ts +88 -53
  100. package/src/client/rpc/json-rpc.ts +53 -60
  101. package/src/client/rpc/protocol.ts +160 -0
  102. package/src/connection.ts +136 -0
  103. package/src/constants.ts +17 -5
  104. package/src/errors.ts +10 -3
  105. package/src/index.ts +81 -13
  106. package/src/types.ts +332 -972
  107. package/dist/cjs/bitcoin.js +0 -105
  108. package/dist/cjs/bitcoin.js.map +0 -1
  109. package/dist/esm/bitcoin.js +0 -105
  110. package/dist/esm/bitcoin.js.map +0 -1
  111. package/dist/types/bitcoin.d.ts +0 -60
  112. package/dist/types/bitcoin.d.ts.map +0 -1
  113. package/src/bitcoin.ts +0 -149
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@did-btcr2/bitcoin",
3
- "version": "0.3.4",
3
+ "version": "0.5.0",
4
4
  "type": "module",
5
5
  "description": "Bitcoin Core RPC and Rest Client Implementations in JS/TS. Used by @did-btcr2/method.",
6
6
  "main": "./dist/cjs/index.js",
@@ -61,8 +61,8 @@
61
61
  "@noble/secp256k1": "^2.3.0",
62
62
  "bitcoinjs-lib": "7.0.0-rc.0",
63
63
  "tiny-secp256k1": "^2.2.3",
64
- "@did-btcr2/common": "3.1.0",
65
- "@did-btcr2/keypair": "0.8.0"
64
+ "@did-btcr2/common": "7.0.0",
65
+ "@did-btcr2/keypair": "0.11.0"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@eslint/js": "^9.22.0",
@@ -0,0 +1,28 @@
1
+ /**
2
+ * HTTP request descriptor. Represents a request that can be executed
3
+ * by any HTTP client — the library never performs I/O itself at the
4
+ * protocol layer.
5
+ */
6
+ export interface HttpRequest {
7
+ url: string;
8
+ method: 'GET' | 'POST';
9
+ headers: Record<string, string>;
10
+ body?: string;
11
+ }
12
+
13
+ /**
14
+ * A function that executes an {@link HttpRequest} and returns a standard
15
+ * {@link Response}. Users can supply their own implementation to use
16
+ * any HTTP client (e.g. `undici`, `axios`, a caching proxy, etc.).
17
+ */
18
+ export type HttpExecutor = (request: HttpRequest) => Promise<Response>;
19
+
20
+ /**
21
+ * Default executor backed by the global `fetch` function.
22
+ */
23
+ export const defaultHttpExecutor: HttpExecutor = (req: HttpRequest): Promise<Response> =>
24
+ fetch(req.url, {
25
+ method : req.method,
26
+ headers : req.headers,
27
+ body : req.body,
28
+ });
@@ -1,15 +1,17 @@
1
- import { AddressInfo, AddressUtxo, RawTransactionRest, RestApiCallParams } from '../../types.js';
1
+ import { AddressInfo, AddressUtxo, RawTransactionRest } from '../../types.js';
2
+ import { HttpRequest } from '../http.js';
3
+ import { EsploraProtocol } from './protocol.js';
2
4
 
3
5
  /**
4
- * Implements a strongly-typed BitcoinRest to connect to remote bitcoin node via REST API for address-related operations.
5
- * @class BitcoinAddress
6
- * @type {BitcoinAddress}
6
+ * Address-related Esplora REST API operations.
7
7
  */
8
8
  export class BitcoinAddress {
9
- private api: (params: RestApiCallParams) => Promise<any>;
9
+ private readonly protocol: EsploraProtocol;
10
+ private readonly exec: (req: HttpRequest) => Promise<any>;
10
11
 
11
- constructor(api: (params: RestApiCallParams) => Promise<any>) {
12
- this.api = api;
12
+ constructor(protocol: EsploraProtocol, exec: (req: HttpRequest) => Promise<any>) {
13
+ this.protocol = protocol;
14
+ this.exec = exec;
13
15
  }
14
16
 
15
17
  /**
@@ -17,17 +19,16 @@ export class BitcoinAddress {
17
19
  * Returns up to 50 mempool transactions plus the first 25 confirmed transactions.
18
20
  * See {@link https://github.com/blockstream/esplora/blob/master/API.md#get-addressaddresstxs | Esplora GET /address/:address/txs } for details.
19
21
  * @param {string} addressOrScripthash The address or scripthash to check.
20
- * @returns {Promise<Array<RawTransactionRest>>} A promise resolving to an array of {@link RawTransactionRest} objects.
22
+ * @returns {Promise<Array<RawTransactionRest>>} Transaction history.
21
23
  */
22
24
  public async getTxs(addressOrScripthash: string): Promise<Array<RawTransactionRest>> {
23
- return await this.api({ path: `/address/${addressOrScripthash}/txs` });
25
+ return await this.exec(this.protocol.getAddressTxs(addressOrScripthash));
24
26
  }
25
27
 
26
28
  /**
27
- * Calls getAddressTxs and checks if any funds come back.
28
- * Toggle if those funds are confirmed.
29
+ * Checks if an address has any confirmed funded transactions.
29
30
  * @param {string} addressOrScripthash The address or scripthash to check.
30
- * @returns {Promise<boolean>} True if the address has any funds, false otherwise.
31
+ * @returns {Promise<boolean>} True if the address has confirmed funds.
31
32
  */
32
33
  public async isFundedAddress(addressOrScripthash: string): Promise<boolean> {
33
34
  const txs = await this.getConfirmedTxs(addressOrScripthash);
@@ -39,46 +40,39 @@ export class BitcoinAddress {
39
40
  * Get unconfirmed transaction history for the specified address/scripthash.
40
41
  * Returns up to 50 transactions (no paging).
41
42
  * @param {string} addressOrScripthash The address or scripthash to check.
42
- * @returns {Promise<Array<RawTransactionRest>>} A promise resolving to an array of {@link RawTransactionRest} objects.
43
+ * @returns {Promise<Array<RawTransactionRest>>} Unconfirmed transactions.
43
44
  */
44
45
  public async getTxsMempool(addressOrScripthash: string): Promise<Array<RawTransactionRest>> {
45
- return await this.api({ path: `/address/${addressOrScripthash}/txs/mempool` });
46
+ return await this.exec(this.protocol.getAddressTxsMempool(addressOrScripthash));
46
47
  }
47
48
 
48
49
  /**
49
50
  * Get information about an address/scripthash.
50
- * Available fields: address/scripthash, chain_stats and mempool_stats.
51
- * {chain,mempool}_stats each contain an object with tx_count, funded_txo_count, funded_txo_sum, spent_txo_count and spent_txo_sum.
52
- * Elements-based chains don't have the {funded,spent}_txo_sum fields.
53
51
  * @param {string} addressOrScripthash The address or scripthash to check.
54
- * @returns {Promise<AddressInfo>} A promise resolving to an {@link AddressInfo} object.
52
+ * @returns {Promise<AddressInfo>} Address information.
55
53
  */
56
54
  public async getInfo(addressOrScripthash: string): Promise<AddressInfo> {
57
- return await this.api({ path: `/address/${addressOrScripthash}` });
55
+ return await this.exec(this.protocol.getAddressInfo(addressOrScripthash));
58
56
  }
59
57
 
60
58
  /**
61
59
  * Get confirmed transaction history for the specified address/scripthash, sorted with newest first.
62
- * Returns 25 transactions per page. More can be requested by specifying the last txid seen by the previous query.
60
+ * Returns 25 transactions per page.
63
61
  * @param {string} addressOrScripthash The address or scripthash to check.
64
- * @param lastSeenTxId The last transaction id seen by the previous query (optional).
65
- * @returns {Promise<Array<RawTransactionRest>>} A promise resolving to an array of {@link RawTransactionRest} objects.
62
+ * @param {string} [lastSeenTxId] The last transaction id seen by the previous query for pagination.
63
+ * @returns {Promise<Array<RawTransactionRest>>} Confirmed transactions.
66
64
  */
67
65
  public async getConfirmedTxs(addressOrScripthash: string, lastSeenTxId?: string): Promise<Array<RawTransactionRest>> {
68
- return await this.api({
69
- path : lastSeenTxId
70
- ? `/address/${addressOrScripthash}/txs/chain/${lastSeenTxId}`
71
- : `/address/${addressOrScripthash}/txs/chain`
72
- });
66
+ return await this.exec(this.protocol.getAddressTxsChain(addressOrScripthash, lastSeenTxId));
73
67
  }
74
68
 
75
69
  /**
76
70
  * Get the list of unspent transaction outputs associated with the address/scripthash.
77
71
  * See {@link https://github.com/Blockstream/esplora/blob/master/API.md#get-addressaddressutxo | Esplora GET /address/:address/utxo } for details.
78
72
  * @param {string} addressOrScripthash The address or scripthash to check.
79
- * @returns {Promise<Array<RawTransactionRest>>} A promise resolving to an array of {@link RawTransactionRest} objects.
73
+ * @returns {Promise<Array<AddressUtxo>>} Unspent transaction outputs.
80
74
  */
81
75
  public async getUtxos(addressOrScripthash: string): Promise<Array<AddressUtxo>> {
82
- return await this.api({ path: `/address/${addressOrScripthash}/utxo` });
76
+ return await this.exec(this.protocol.getAddressUtxos(addressOrScripthash));
83
77
  }
84
- }
78
+ }
@@ -1,57 +1,60 @@
1
1
  import { BitcoinRestError } from '../../errors.js';
2
- import { RestApiCallParams, BlockResponse, BlockV3, GetBlockParams } from '../../types.js';
2
+ import { EsploraBlock } from '../../types.js';
3
+ import { HttpRequest } from '../http.js';
4
+ import { EsploraProtocol } from './protocol.js';
3
5
 
4
6
  /**
5
- * Implements a strongly-typed BitcoinRest to connect to remote bitcoin node via REST API for block-related operations.
6
- * @class BitcoinBlock
7
- * @type {BitcoinBlock}
7
+ * Block-related Esplora REST API operations.
8
+ *
9
+ * Note: The Esplora API always returns the same block format regardless
10
+ * of any "verbosity" setting (unlike Bitcoin Core RPC). Use the RPC
11
+ * client if you need verbosity-controlled block responses.
8
12
  */
9
13
  export class BitcoinBlock {
10
- private api: (params: RestApiCallParams) => Promise<any>;
14
+ private readonly protocol: EsploraProtocol;
15
+ private readonly exec: (req: HttpRequest) => Promise<any>;
11
16
 
12
- constructor(api: (params: RestApiCallParams) => Promise<any>) {
13
- this.api = api;
17
+ constructor(protocol: EsploraProtocol, exec: (req: HttpRequest) => Promise<any>) {
18
+ this.protocol = protocol;
19
+ this.exec = exec;
14
20
  }
15
21
 
16
22
  /**
17
- * Returns the blockheight of the most-work fully-validated chain. The genesis block has height 0.
18
- * @returns {Blockheight} The number of the blockheight with the most-work of the fully-validated chain.
23
+ * Returns the blockheight of the most-work fully-validated chain.
24
+ * @returns {Promise<number>} The current block height.
19
25
  */
20
26
  public async count(): Promise<number> {
21
- return await this.api({ path: '/blocks/tip/height' });
27
+ return await this.exec(this.protocol.getBlockTipHeight());
22
28
  }
23
29
 
24
30
  /**
25
- * Returns the block data associated with a `blockhash` of a valid block.
26
- * @param {GetBlockParams} params See {@link GetBlockParams} for details.
27
- * @param {?string} params.blockhash The blockhash of the block to query.
28
- * @param {?number} params.height The block height of the block to query.
29
- * @returns {BlockResponse} A promise resolving to a {@link BlockResponse} formatted depending on `verbosity` level.
30
- * @throws {BitcoinRpcError} If neither `blockhash` nor `height` is provided.
31
+ * Returns the Esplora block data for a given blockhash or height.
32
+ * @param {object} params The block hash or height.
33
+ * @param {string} [params.blockhash] The blockhash of the block to query.
34
+ * @param {number} [params.height] The block height of the block to query.
35
+ * @returns {Promise<EsploraBlock | undefined>} The block data.
36
+ * @throws {BitcoinRestError} If neither blockhash nor height is provided.
31
37
  */
32
- public async get({ blockhash, height }: GetBlockParams): Promise<BlockResponse | undefined> {
33
- // Check if blockhash or height is provided, if neither throw an error
34
- if(!blockhash && height === undefined) {
35
- throw new BitcoinRestError('INVALID_PARAMS_GET_BLOCK: blockhash or height required', { blockhash, height });
38
+ public async get({ blockhash, height }: { blockhash?: string; height?: number }): Promise<EsploraBlock | undefined> {
39
+ if (!blockhash && height === undefined) {
40
+ throw new BitcoinRestError('blockhash or height required', { blockhash, height });
36
41
  }
37
42
 
38
- // If height is provided, get the blockhash
39
43
  blockhash ??= await this.getHash(height!);
40
- if(!blockhash || typeof blockhash !== 'string') {
44
+ if (!blockhash || typeof blockhash !== 'string') {
41
45
  return undefined;
42
46
  }
43
47
 
44
- // Get the block data
45
- return await this.api({ path: `/block/${blockhash}` }) as BlockV3;
48
+ return await this.exec(this.protocol.getBlock(blockhash)) as EsploraBlock;
46
49
  }
47
50
 
48
51
  /**
49
52
  * Get the block hash for a given block height.
50
53
  * See {@link https://github.com/blockstream/esplora/blob/master/API.md#get-block-heightheight | Esplora GET /block-height/:height } for details.
51
54
  * @param {number} height The block height (required).
52
- * @returns {Promise<string>} The hash of the block currently at height..
55
+ * @returns {Promise<string>} The hash of the block at the given height.
53
56
  */
54
57
  public async getHash(height: number): Promise<string> {
55
- return await this.api({ path: `/block-height/${height}` });
58
+ return await this.exec(this.protocol.getBlockHeight(height));
56
59
  }
57
60
  }
@@ -1,129 +1,73 @@
1
- import { JSONUtils, MethodError, StringUtils } from '@did-btcr2/common';
2
- import { DEFAULT_BITCOIN_NETWORK_CONFIG } from '../../constants.js';
1
+ import { MethodError } from '@did-btcr2/common';
3
2
  import { BitcoinAddress } from './address.js';
4
3
  import { BitcoinBlock } from './block.js';
5
4
  import { BitcoinTransaction } from './transaction.js';
6
- import { RestClientConfig, RestApiCallParams, RestResponse } from '../../types.js';
7
-
5
+ import { EsploraProtocol } from './protocol.js';
6
+ import { RestConfig } from '../../types.js';
7
+ import { HttpExecutor, HttpRequest, defaultHttpExecutor } from '../http.js';
8
8
 
9
9
  /**
10
- * Implements a strongly-typed BitcoinRestClient to connect to remote bitcoin node via REST API.
11
- * @class BitcoinRestClient
12
- * @type {BitcoinRestClient}
10
+ * Esplora REST API client for Bitcoin.
11
+ *
12
+ * Wraps the sans-I/O {@link EsploraProtocol} with an {@link HttpExecutor}
13
+ * for convenience. Users who want full control over I/O can access the
14
+ * protocol layer directly via the {@link protocol} property.
13
15
  */
14
16
  export class BitcoinRestClient {
15
- /**
16
- * The encapsulated {@link RestClientConfig} object.
17
- * @private
18
- * @type {RestClientConfig}
19
- */
20
- private _config: RestClientConfig;
17
+ private _config: RestConfig;
21
18
 
22
19
  /**
23
- * The api calls related to bitcoin transactions.
24
- * @type {BitcoinTransaction}
20
+ * The sans-I/O protocol layer. Use this to build {@link HttpRequest}
21
+ * descriptors without performing any I/O.
25
22
  */
23
+ readonly protocol: EsploraProtocol;
24
+
25
+ private readonly executor: HttpExecutor;
26
+
27
+ /** Transaction-related API calls. */
26
28
  public transaction: BitcoinTransaction;
27
29
 
28
- /**
29
- * The api calls related to bitcoin blocks.
30
- * @type {BitcoinBlock}
31
- */
30
+ /** Block-related API calls. */
32
31
  public block: BitcoinBlock;
33
32
 
34
- /**
35
- * The api calls related to bitcoin addresses.
36
- * @type {BitcoinAddress}
37
- */
33
+ /** Address-related API calls. */
38
34
  public address: BitcoinAddress;
39
35
 
40
- /**
41
- * The API call method that can be used to make requests to the REST API.
42
- * @returns {Promise<any>} A promise resolving to the response data.
43
- */
44
- public api: (params: RestApiCallParams) => Promise<any> = this.call;
45
-
46
- constructor(config: RestClientConfig){
47
- this._config = new RestClientConfig(config);
48
- this.api = this.call.bind(this);
49
- this.transaction = new BitcoinTransaction(this.api);
50
- this.block = new BitcoinBlock(this.api);
51
- this.address = new BitcoinAddress(this.api);
52
- }
36
+ constructor(config: RestConfig, executor?: HttpExecutor) {
37
+ this._config = config;
38
+ this.protocol = new EsploraProtocol(config);
39
+ this.executor = executor ?? defaultHttpExecutor;
53
40
 
54
- /**
55
- * Get the configuration object.
56
- * @private
57
- */
58
- get config(): RestClientConfig {
59
- const config = this._config;
60
- return config;
41
+ const exec = this.executeRequest.bind(this);
42
+ this.transaction = new BitcoinTransaction(this.protocol, exec);
43
+ this.block = new BitcoinBlock(this.protocol, exec);
44
+ this.address = new BitcoinAddress(this.protocol, exec);
61
45
  }
62
46
 
63
- /**
64
- * Static method connects to a bitcoin node running a esplora REST API.
65
- *
66
- * @param {RestClientConfig} config The configuration object for the client (optional).
67
- * @returns {BitcoinRestClient} A new {@link BitcoinRestClient} instance.
68
- * @example
69
- * ```
70
- * const rest = BitcoinRestClient.connect();
71
- * ```
72
- */
73
- public static connect(config?: RestClientConfig): BitcoinRestClient {
74
- return new BitcoinRestClient(config ?? DEFAULT_BITCOIN_NETWORK_CONFIG.regtest.rest);
47
+ get config(): RestConfig {
48
+ return this._config;
75
49
  }
76
50
 
77
51
  /**
78
- * Make a REST API call to the configured Bitcoin node.
79
- * @private
80
- * @param {RestApiCallParams} params The parameters for the API call. See {@link RestApiCallParams} for details.
81
- * @param {string} [params.path] The path to the API endpoint (required).
82
- * @param {string} [params.url] The full URL to the API endpoint (optional).
83
- * @param {string} [params.method] The HTTP method to use (default is 'GET').
84
- * @param {any} [params.body] The body of the request (optional).
85
- * @param {any} [params.headers] Additional headers to include in the request (optional).
86
- * @returns {Promise<any>} A promise resolving to the response data.
52
+ * Execute an {@link HttpRequest} built by the protocol layer,
53
+ * parse the response, and throw on HTTP errors.
87
54
  */
88
- private async call({ path, url, method, body, headers }: RestApiCallParams): Promise<any> {
89
- // Construct the URL if not provided
90
- url ??= `${StringUtils.replaceEnd(this.config.host, '/')}${path}`;
91
-
92
- // Set the method to GET if not provided
93
- method ??= 'GET';
94
-
95
- // Construct the request options
96
- const requestInit = {
97
- method,
98
- headers : headers ?? {
99
- 'Content-Type' : 'application/json',
100
- ...this.config.headers,
101
- }
102
- } as any;
103
-
104
- // If the method is POST or PUT, add the body to the request
105
- if(body) {
106
- requestInit.body = JSONUtils.isObject(body) ? JSON.stringify(body) : body;
107
- requestInit.method = 'POST';
108
- }
109
-
110
- // Make the request
111
- const response = await fetch(url, requestInit) as RestResponse;
55
+ private async executeRequest(request: HttpRequest): Promise<any> {
56
+ const response = await this.executor(request);
112
57
 
113
- // Check if the response is a text/plain response
114
- const data = (response.headers.get('Content-Type') ?? 'json') === 'text/plain'
58
+ const contentType = response.headers.get('Content-Type') ?? '';
59
+ const data = contentType.includes('text/plain')
115
60
  ? await response.text()
116
61
  : await response.json();
117
62
 
118
- // Check if the response is ok (status in the range 200-299)
119
63
  if (!response.ok) {
120
64
  throw new MethodError(
121
- `Request to ${url} failed: ${response.status} - ${response.statusText}`,
65
+ `Request to ${request.url} failed: ${response.status} - ${response.statusText}`,
122
66
  'FAILED_HTTP_REQUEST',
123
- { data, response }
67
+ { data }
124
68
  );
125
69
  }
126
70
 
127
71
  return data;
128
72
  }
129
- }
73
+ }
@@ -0,0 +1,153 @@
1
+ import { StringUtils } from '@did-btcr2/common';
2
+ import { RestConfig } from '../../types.js';
3
+ import { HttpRequest } from '../http.js';
4
+
5
+ const HEX64_RE = /^[0-9a-f]{64}$/i;
6
+
7
+ /**
8
+ * Sans-I/O Esplora REST API protocol.
9
+ *
10
+ * Every method returns an {@link HttpRequest} descriptor — a plain object
11
+ * describing *what* to request — without performing any I/O. The caller
12
+ * is responsible for executing the request with an HTTP client of their
13
+ * choice and deserializing the response.
14
+ *
15
+ * This mirrors the pattern used by the Rust `esploda` crate where
16
+ * `Esplora` methods return `http::Request<()>` objects.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const protocol = new EsploraProtocol({ host: 'https://mempool.space/api' });
21
+ *
22
+ * // Build a request descriptor (no I/O)
23
+ * const req = protocol.getTx('abc123...');
24
+ *
25
+ * // Execute with any HTTP client
26
+ * const res = await fetch(req.url, req);
27
+ * const tx: RawTransactionRest = await res.json();
28
+ * ```
29
+ */
30
+ export class EsploraProtocol {
31
+ private readonly baseUrl: string;
32
+ private readonly defaultHeaders: Record<string, string>;
33
+
34
+ constructor(config: RestConfig) {
35
+ this.baseUrl = StringUtils.replaceEnd(config.host, '/');
36
+ this.defaultHeaders = {
37
+ 'Content-Type' : 'application/json',
38
+ ...config.headers,
39
+ };
40
+ }
41
+
42
+ // ── validation ─────────────────────────────────────────────────────
43
+
44
+ private static assertHex64(value: string, label: string): void {
45
+ if (!HEX64_RE.test(value)) {
46
+ throw new Error(`Invalid ${label}: expected 64-char hex string`);
47
+ }
48
+ }
49
+
50
+ private static assertAddress(value: string): void {
51
+ if (!value || /[/\\.?#]/.test(value)) {
52
+ throw new Error('Invalid address: contains illegal characters');
53
+ }
54
+ }
55
+
56
+ // ── helpers ──────────────────────────────────────────────────────────
57
+
58
+ private get(path: string): HttpRequest {
59
+ return {
60
+ url : `${this.baseUrl}${path}`,
61
+ method : 'GET',
62
+ headers : { ...this.defaultHeaders },
63
+ };
64
+ }
65
+
66
+ private post(path: string, body: string, headers?: Record<string, string>): HttpRequest {
67
+ return {
68
+ url : `${this.baseUrl}${path}`,
69
+ method : 'POST',
70
+ headers : headers ?? { ...this.defaultHeaders },
71
+ body,
72
+ };
73
+ }
74
+
75
+ // ── Transaction ──────────────────────────────────────────────────────
76
+
77
+ /** GET /tx/:txid */
78
+ getTx(txid: string): HttpRequest {
79
+ EsploraProtocol.assertHex64(txid, 'txid');
80
+ return this.get(`/tx/${txid}`);
81
+ }
82
+
83
+ /** GET /tx/:txid/hex */
84
+ getTxHex(txid: string): HttpRequest {
85
+ EsploraProtocol.assertHex64(txid, 'txid');
86
+ return this.get(`/tx/${txid}/hex`);
87
+ }
88
+
89
+ /** GET /tx/:txid/raw */
90
+ getTxRaw(txid: string): HttpRequest {
91
+ EsploraProtocol.assertHex64(txid, 'txid');
92
+ return this.get(`/tx/${txid}/raw`);
93
+ }
94
+
95
+ /** POST /tx */
96
+ postTx(hex: string): HttpRequest {
97
+ return this.post('/tx', hex, { 'Content-Type': 'text/plain' });
98
+ }
99
+
100
+ // ── Block ────────────────────────────────────────────────────────────
101
+
102
+ /** GET /blocks/tip/height */
103
+ getBlockTipHeight(): HttpRequest {
104
+ return this.get('/blocks/tip/height');
105
+ }
106
+
107
+ /** GET /block/:blockhash */
108
+ getBlock(blockhash: string): HttpRequest {
109
+ EsploraProtocol.assertHex64(blockhash, 'blockhash');
110
+ return this.get(`/block/${blockhash}`);
111
+ }
112
+
113
+ /** GET /block-height/:height */
114
+ getBlockHeight(height: number): HttpRequest {
115
+ return this.get(`/block-height/${height}`);
116
+ }
117
+
118
+ // ── Address ──────────────────────────────────────────────────────────
119
+
120
+ /** GET /address/:address/txs */
121
+ getAddressTxs(address: string): HttpRequest {
122
+ EsploraProtocol.assertAddress(address);
123
+ return this.get(`/address/${address}/txs`);
124
+ }
125
+
126
+ /** GET /address/:address/txs/mempool */
127
+ getAddressTxsMempool(address: string): HttpRequest {
128
+ EsploraProtocol.assertAddress(address);
129
+ return this.get(`/address/${address}/txs/mempool`);
130
+ }
131
+
132
+ /** GET /address/:address/txs/chain[/:last_seen_txid] */
133
+ getAddressTxsChain(address: string, lastSeenTxId?: string): HttpRequest {
134
+ EsploraProtocol.assertAddress(address);
135
+ if (lastSeenTxId) EsploraProtocol.assertHex64(lastSeenTxId, 'lastSeenTxId');
136
+ const path = lastSeenTxId
137
+ ? `/address/${address}/txs/chain/${lastSeenTxId}`
138
+ : `/address/${address}/txs/chain`;
139
+ return this.get(path);
140
+ }
141
+
142
+ /** GET /address/:address */
143
+ getAddressInfo(address: string): HttpRequest {
144
+ EsploraProtocol.assertAddress(address);
145
+ return this.get(`/address/${address}`);
146
+ }
147
+
148
+ /** GET /address/:address/utxo */
149
+ getAddressUtxos(address: string): HttpRequest {
150
+ EsploraProtocol.assertAddress(address);
151
+ return this.get(`/address/${address}/utxo`);
152
+ }
153
+ }