@bigmi/core 0.4.2 → 0.4.4
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.
- package/CHANGELOG.md +9 -0
- package/README.md +354 -23
- package/dist/cjs/errors/request.d.ts +2 -1
- package/dist/cjs/errors/request.js +2 -2
- package/dist/cjs/errors/request.js.map +1 -1
- package/dist/cjs/errors/rpc.d.ts +2 -1
- package/dist/cjs/errors/rpc.js +1 -0
- package/dist/cjs/errors/rpc.js.map +1 -1
- package/dist/cjs/transports/ankr/getBalance.js +2 -1
- package/dist/cjs/transports/ankr/getBalance.js.map +1 -1
- package/dist/cjs/transports/blockchair/getBalance.js +7 -2
- package/dist/cjs/transports/blockchair/getBalance.js.map +1 -1
- package/dist/cjs/transports/blockchair/getTransactionFee.js +7 -2
- package/dist/cjs/transports/blockchair/getTransactionFee.js.map +1 -1
- package/dist/cjs/transports/blockchair/getUTXOs.js +4 -1
- package/dist/cjs/transports/blockchair/getUTXOs.js.map +1 -1
- package/dist/cjs/transports/blockcypher/getBalance.js +5 -1
- package/dist/cjs/transports/blockcypher/getBalance.js.map +1 -1
- package/dist/cjs/transports/blockcypher/getTransactionFee.js +2 -1
- package/dist/cjs/transports/blockcypher/getTransactionFee.js.map +1 -1
- package/dist/cjs/transports/blockcypher/getUTXOs.js +2 -1
- package/dist/cjs/transports/blockcypher/getUTXOs.js.map +1 -1
- package/dist/cjs/transports/blockcypher/utils.d.ts +2 -0
- package/dist/cjs/transports/blockcypher/utils.js +11 -0
- package/dist/cjs/transports/blockcypher/utils.js.map +1 -0
- package/dist/cjs/transports/getHttpRpcClient.js +5 -1
- package/dist/cjs/transports/getHttpRpcClient.js.map +1 -1
- package/dist/cjs/types/actions.d.ts +4 -4
- package/dist/cjs/utils/buildRequest.js +1 -1
- package/dist/cjs/utils/buildRequest.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/errors/request.d.ts +2 -1
- package/dist/esm/errors/request.js +2 -2
- package/dist/esm/errors/request.js.map +1 -1
- package/dist/esm/errors/rpc.d.ts +5 -1
- package/dist/esm/errors/rpc.js +4 -0
- package/dist/esm/errors/rpc.js.map +1 -1
- package/dist/esm/transports/ankr/getBalance.js +2 -1
- package/dist/esm/transports/ankr/getBalance.js.map +1 -1
- package/dist/esm/transports/blockchair/getBalance.js +7 -2
- package/dist/esm/transports/blockchair/getBalance.js.map +1 -1
- package/dist/esm/transports/blockchair/getTransactionFee.js +7 -2
- package/dist/esm/transports/blockchair/getTransactionFee.js.map +1 -1
- package/dist/esm/transports/blockchair/getUTXOs.js +4 -1
- package/dist/esm/transports/blockchair/getUTXOs.js.map +1 -1
- package/dist/esm/transports/blockcypher/getBalance.js +5 -1
- package/dist/esm/transports/blockcypher/getBalance.js.map +1 -1
- package/dist/esm/transports/blockcypher/getTransactionFee.js +2 -1
- package/dist/esm/transports/blockcypher/getTransactionFee.js.map +1 -1
- package/dist/esm/transports/blockcypher/getUTXOs.js +2 -1
- package/dist/esm/transports/blockcypher/getUTXOs.js.map +1 -1
- package/dist/esm/transports/blockcypher/utils.d.ts +2 -0
- package/dist/esm/transports/blockcypher/utils.js +8 -0
- package/dist/esm/transports/blockcypher/utils.js.map +1 -0
- package/dist/esm/transports/getHttpRpcClient.js +5 -1
- package/dist/esm/transports/getHttpRpcClient.js.map +1 -1
- package/dist/esm/types/actions.d.ts +4 -4
- package/dist/esm/utils/buildRequest.js +1 -1
- package/dist/esm/utils/buildRequest.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/errors/request.d.ts +2 -1
- package/dist/types/errors/request.d.ts.map +1 -1
- package/dist/types/errors/rpc.d.ts +5 -1
- package/dist/types/errors/rpc.d.ts.map +1 -1
- package/dist/types/transports/ankr/getBalance.d.ts.map +1 -1
- package/dist/types/transports/blockchair/getBalance.d.ts.map +1 -1
- package/dist/types/transports/blockchair/getTransactionFee.d.ts.map +1 -1
- package/dist/types/transports/blockchair/getUTXOs.d.ts.map +1 -1
- package/dist/types/transports/blockcypher/getBalance.d.ts.map +1 -1
- package/dist/types/transports/blockcypher/getTransactionFee.d.ts.map +1 -1
- package/dist/types/transports/blockcypher/getUTXOs.d.ts.map +1 -1
- package/dist/types/transports/blockcypher/utils.d.ts +3 -0
- package/dist/types/transports/blockcypher/utils.d.ts.map +1 -0
- package/dist/types/transports/getHttpRpcClient.d.ts.map +1 -1
- package/dist/types/types/actions.d.ts +4 -4
- package/dist/types/types/actions.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +2 -2
- package/package.json.tmp +4 -4
- package/src/errors/request.ts +3 -1
- package/src/errors/rpc.ts +4 -0
- package/src/transports/ankr/ankr.spec.ts +10 -10
- package/src/transports/ankr/getBalance.ts +2 -1
- package/src/transports/blockchair/blockchair.spec.ts +97 -72
- package/src/transports/blockchair/getBalance.ts +10 -2
- package/src/transports/blockchair/getTransactionFee.ts +10 -2
- package/src/transports/blockchair/getUTXOs.ts +5 -1
- package/src/transports/blockcypher/blockcyper.spec.ts +1 -1
- package/src/transports/blockcypher/getBalance.ts +5 -1
- package/src/transports/blockcypher/getTransactionFee.ts +2 -1
- package/src/transports/blockcypher/getUTXOs.ts +2 -1
- package/src/transports/blockcypher/utils.ts +8 -0
- package/src/transports/fallback.spec.ts +10 -10
- package/src/transports/getHttpRpcClient.ts +5 -1
- package/src/transports/mempool/mempool.spec.ts +11 -11
- package/src/types/actions.ts +4 -5
- package/src/utils/buildRequest.ts +1 -1
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getBalance.d.ts","sourceRoot":"","sources":["../../../../src/transports/ankr/getBalance.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getBalance.d.ts","sourceRoot":"","sources":["../../../../src/transports/ankr/getBalance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAGnD,eAAO,MAAM,UAAU,EAAE,gBAAgB,CAAC,YAAY,CAqBrD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getBalance.d.ts","sourceRoot":"","sources":["../../../../src/transports/blockchair/getBalance.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getBalance.d.ts","sourceRoot":"","sources":["../../../../src/transports/blockchair/getBalance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAMnD,eAAO,MAAM,UAAU,EAAE,gBAAgB,CAAC,YAAY,CA+BrD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTransactionFee.d.ts","sourceRoot":"","sources":["../../../../src/transports/blockchair/getTransactionFee.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getTransactionFee.d.ts","sourceRoot":"","sources":["../../../../src/transports/blockchair/getTransactionFee.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAGnD,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,mBAAmB,CAkCnE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUTXOs.d.ts","sourceRoot":"","sources":["../../../../src/transports/blockchair/getUTXOs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getUTXOs.d.ts","sourceRoot":"","sources":["../../../../src/transports/blockchair/getUTXOs.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAoBnD,eAAO,MAAM,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAkGjD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getBalance.d.ts","sourceRoot":"","sources":["../../../../src/transports/blockcypher/getBalance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"getBalance.d.ts","sourceRoot":"","sources":["../../../../src/transports/blockcypher/getBalance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAInD,eAAO,MAAM,UAAU,EAAE,gBAAgB,CAAC,YAAY,CAuBrD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTransactionFee.d.ts","sourceRoot":"","sources":["../../../../src/transports/blockcypher/getTransactionFee.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"getTransactionFee.d.ts","sourceRoot":"","sources":["../../../../src/transports/blockcypher/getTransactionFee.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAInD,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,mBAAmB,CAuBnE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUTXOs.d.ts","sourceRoot":"","sources":["../../../../src/transports/blockcypher/getUTXOs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"getUTXOs.d.ts","sourceRoot":"","sources":["../../../../src/transports/blockcypher/getUTXOs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAmBnD,eAAO,MAAM,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CA6EjD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/transports/blockcypher/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAK3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getHttpRpcClient.d.ts","sourceRoot":"","sources":["../../../src/transports/getHttpRpcClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAIrD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,KAAK,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,qBAAqB,CAC/B,IAAI,SAAS,UAAU,GAAG,UAAU,EAAE,GAAG,UAAU,IACjD,IAAI,SAAS,UAAU,EAAE,GAAG,WAAW,EAAE,GAAG,WAAW,CAAA;AAE3D,MAAM,MAAM,oBAAoB,GAAG;IACjC,gDAAgD;IAChD,YAAY,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;IACpD,wCAAwC;IACxC,SAAS,CAAC,EACN,CAAC,CACC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,KACd,YAAY,CACf,IAAI,GAAG,SAAS,GAAG,CAAC,WAAW,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CAChE,CAAC,GACF,SAAS,CAAA;IACb,yCAAyC;IACzC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,CAAA;IACvE,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,qBAAqB,CAC/B,IAAI,SAAS,UAAU,GAAG,UAAU,EAAE,GAAG,UAAU,IACjD;IACF,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,gDAAgD;IAChD,YAAY,CAAC,EAAE,oBAAoB,CAAC,cAAc,CAAC,GAAG,SAAS,CAAA;IAC/D,yCAAyC;IACzC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,CAAA;IACpE,yCAAyC;IACzC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,CAAA;IACvE,2CAA2C;IAC3C,OAAO,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;CACtD,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,IAAI,SAAS,UAAU,GAAG,UAAU,EAAE,EAC5C,MAAM,EAAE,qBAAqB,CAAC,IAAI,CAAC,GAClC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAA;CACxC,CAAA;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,oBAAyB,GACjC,aAAa,
|
|
1
|
+
{"version":3,"file":"getHttpRpcClient.d.ts","sourceRoot":"","sources":["../../../src/transports/getHttpRpcClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAIrD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,KAAK,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,qBAAqB,CAC/B,IAAI,SAAS,UAAU,GAAG,UAAU,EAAE,GAAG,UAAU,IACjD,IAAI,SAAS,UAAU,EAAE,GAAG,WAAW,EAAE,GAAG,WAAW,CAAA;AAE3D,MAAM,MAAM,oBAAoB,GAAG;IACjC,gDAAgD;IAChD,YAAY,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;IACpD,wCAAwC;IACxC,SAAS,CAAC,EACN,CAAC,CACC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,KACd,YAAY,CACf,IAAI,GAAG,SAAS,GAAG,CAAC,WAAW,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CAChE,CAAC,GACF,SAAS,CAAA;IACb,yCAAyC;IACzC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,CAAA;IACvE,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,qBAAqB,CAC/B,IAAI,SAAS,UAAU,GAAG,UAAU,EAAE,GAAG,UAAU,IACjD;IACF,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,gDAAgD;IAChD,YAAY,CAAC,EAAE,oBAAoB,CAAC,cAAc,CAAC,GAAG,SAAS,CAAA;IAC/D,yCAAyC;IACzC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,CAAA;IACpE,yCAAyC;IACzC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,CAAA;IACvE,2CAA2C;IAC3C,OAAO,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;CACtD,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,IAAI,SAAS,UAAU,GAAG,UAAU,EAAE,EAC5C,MAAM,EAAE,qBAAqB,CAAC,IAAI,CAAC,GAClC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAA;CACxC,CAAA;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAyFf"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { SendUTXOTransactionParameters, SendUTXOTransactionReturnType } from '../actions/sendUTXOTransaction';
|
|
2
|
-
import type { WaitForTransactionReceiptParameters } from '../actions/waitForTransaction';
|
|
3
|
-
import type { SignPsbtParameters, SignPsbtReturnType } from '../transports/types';
|
|
4
|
-
import type { UTXOTransaction } from './transaction';
|
|
1
|
+
import type { SendUTXOTransactionParameters, SendUTXOTransactionReturnType } from '../actions/sendUTXOTransaction.js';
|
|
2
|
+
import type { WaitForTransactionReceiptParameters } from '../actions/waitForTransaction.js';
|
|
3
|
+
import type { SignPsbtParameters, SignPsbtReturnType } from '../transports/types.js';
|
|
4
|
+
import type { UTXOTransaction } from './transaction.js';
|
|
5
5
|
export type WaitForTransactionReceiptReturnType = UTXOTransaction;
|
|
6
6
|
export type WithRetryParameters = {
|
|
7
7
|
delay?: ((config: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/types/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,6BAA6B,EAC9B,MAAM,
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/types/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,6BAA6B,EAC9B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,kCAAkC,CAAA;AAC3F,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,MAAM,MAAM,mCAAmC,GAAG,eAAe,CAAA;AAEjE,MAAM,MAAM,mBAAmB,GAAG;IAEhC,KAAK,CAAC,EACF,CAAC,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,MAAM,CAAC,GACrD,MAAM,GACN,SAAS,CAAA;IAEb,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B;;OAEG;IACH,mBAAmB,EAAE,CACnB,IAAI,EAAE,6BAA6B,KAChC,OAAO,CAAC,6BAA6B,CAAC,CAAA;IAE3C,QAAQ,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAEnE,yBAAyB,EAAE,CACzB,IAAI,EAAE,mCAAmC,KACtC,OAAO,CAAC,mCAAmC,CAAC,CAAA;CAClD,CAAA"}
|
package/dist/types/version.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigmi/core",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
4
4
|
"description": "TypeScript library for Bitcoin apps.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/esm/index.js",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"bitcoinjs-lib": "^7.0.0-rc.0",
|
|
33
33
|
"bs58": "^6.0.0",
|
|
34
34
|
"eventemitter3": "^5.0.1",
|
|
35
|
-
"zustand": "^5.0.
|
|
35
|
+
"zustand": "^5.0.7"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"bs58": "^6.0.0"
|
package/package.json.tmp
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigmi/core",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.4",
|
|
4
4
|
"description": "TypeScript library for Bitcoin apps.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.ts",
|
|
@@ -50,13 +50,13 @@
|
|
|
50
50
|
"bitcoinjs-lib": "^7.0.0-rc.0",
|
|
51
51
|
"bs58": "^6.0.0",
|
|
52
52
|
"eventemitter3": "^5.0.1",
|
|
53
|
-
"zustand": "^5.0.
|
|
53
|
+
"zustand": "^5.0.7"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@vitest/coverage-v8": "^3.2.4",
|
|
57
|
-
"cpy-cli": "^
|
|
57
|
+
"cpy-cli": "^6.0.0",
|
|
58
58
|
"madge": "^8.0.0",
|
|
59
|
-
"typescript": "^5.
|
|
59
|
+
"typescript": "^5.9.2",
|
|
60
60
|
"vitest": "^3.2.4"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
package/src/errors/request.ts
CHANGED
|
@@ -121,12 +121,14 @@ export class TimeoutError extends BaseError {
|
|
|
121
121
|
constructor({
|
|
122
122
|
body,
|
|
123
123
|
url,
|
|
124
|
+
timeout,
|
|
124
125
|
}: {
|
|
125
126
|
body: { [x: string]: unknown } | { [y: string]: unknown }[]
|
|
126
127
|
url: string
|
|
128
|
+
timeout: number
|
|
127
129
|
}) {
|
|
128
130
|
super('The request took too long to respond.', {
|
|
129
|
-
details:
|
|
131
|
+
details: `The request timed out after ${timeout}ms.`,
|
|
130
132
|
metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],
|
|
131
133
|
name: 'TimeoutError',
|
|
132
134
|
})
|
package/src/errors/rpc.ts
CHANGED
|
@@ -39,6 +39,10 @@ export enum RpcErrorCode {
|
|
|
39
39
|
* The client does not have permission to access the requested resource.
|
|
40
40
|
*/
|
|
41
41
|
ACCESS_DENIED = -32002,
|
|
42
|
+
/**
|
|
43
|
+
* Unknown generic errors
|
|
44
|
+
*/
|
|
45
|
+
MISC_ERROR = -1,
|
|
42
46
|
}
|
|
43
47
|
|
|
44
48
|
export class UserRejectedRequestError extends BaseError {
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
2
|
-
import { getBalance } from '../../actions/getBalance'
|
|
3
|
-
import { getTransactionFee } from '../../actions/getTransactionFee'
|
|
4
|
-
import { getTransactions } from '../../actions/getTransactions'
|
|
5
|
-
import { bitcoin } from '../../chains/bitcoin'
|
|
6
|
-
import { createClient, rpcSchema } from '../../factories/createClient'
|
|
7
|
-
import { createMockResponse } from '../../test/utils'
|
|
2
|
+
import { getBalance } from '../../actions/getBalance.js'
|
|
3
|
+
import { getTransactionFee } from '../../actions/getTransactionFee.js'
|
|
4
|
+
import { getTransactions } from '../../actions/getTransactions.js'
|
|
5
|
+
import { bitcoin } from '../../chains/bitcoin.js'
|
|
6
|
+
import { createClient, rpcSchema } from '../../factories/createClient.js'
|
|
7
|
+
import { createMockResponse } from '../../test/utils.js'
|
|
8
8
|
import {
|
|
9
9
|
INVALID_TX_ID,
|
|
10
10
|
TX_FEE,
|
|
11
11
|
VALID_TX_ID,
|
|
12
|
-
} from '../__mocks__/getTransactionFee'
|
|
13
|
-
import type { UTXOSchema } from '../types'
|
|
12
|
+
} from '../__mocks__/getTransactionFee.js'
|
|
13
|
+
import type { UTXOSchema } from '../types.js'
|
|
14
14
|
import getBalanceResponse from './__mocks__/getBalance/valid.json'
|
|
15
15
|
import getInValidTransactionFeeResponse from './__mocks__/getTransactionFee/invalid.json'
|
|
16
16
|
import getValidTransactionFeeResponse from './__mocks__/getTransactionFee/valid.json'
|
|
17
17
|
import getTransactionsValidResponse from './__mocks__/getTransactions/valid.json'
|
|
18
|
-
import { ankr } from './ankr'
|
|
18
|
+
import { ankr } from './ankr.js'
|
|
19
19
|
import type {
|
|
20
20
|
AnkrAddressWithTxnsResponse,
|
|
21
21
|
AnkrBalanceResponse,
|
|
22
22
|
AnkrTxnResponse,
|
|
23
|
-
} from './ankr.types'
|
|
23
|
+
} from './ankr.types.js'
|
|
24
24
|
|
|
25
25
|
const ANKR_KEY = import.meta.env.VITE_TEST_ANKR_KEY
|
|
26
26
|
const address = import.meta.env.VITE_TEST_ADDRESS
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RpcErrorCode } from '../../errors/rpc.js'
|
|
1
2
|
import type { RpcMethodHandler } from '../types.js'
|
|
2
3
|
import type { AnkrBalanceResponse } from './ankr.types.js'
|
|
3
4
|
|
|
@@ -16,7 +17,7 @@ export const getBalance: RpcMethodHandler<'getBalance'> = async (
|
|
|
16
17
|
})) as unknown as AnkrBalanceResponse
|
|
17
18
|
if (response.error) {
|
|
18
19
|
return {
|
|
19
|
-
error: { code:
|
|
20
|
+
error: { code: RpcErrorCode.MISC_ERROR, message: response.error },
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
return {
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
2
|
-
import { getBalance } from '../../actions/getBalance'
|
|
3
|
-
import { getTransactionFee } from '../../actions/getTransactionFee'
|
|
4
|
-
import { getUTXOs } from '../../actions/getUTXOs'
|
|
5
|
-
import { bitcoin } from '../../chains/bitcoin'
|
|
6
|
-
import { BaseError } from '../../errors/base'
|
|
7
|
-
import { InsufficientUTXOBalanceError } from '../../errors/utxo'
|
|
8
|
-
import { createClient, rpcSchema } from '../../factories/createClient'
|
|
9
|
-
import { createMockResponse } from '../../test/utils'
|
|
2
|
+
import { getBalance } from '../../actions/getBalance.js'
|
|
3
|
+
import { getTransactionFee } from '../../actions/getTransactionFee.js'
|
|
4
|
+
import { getUTXOs } from '../../actions/getUTXOs.js'
|
|
5
|
+
import { bitcoin } from '../../chains/bitcoin.js'
|
|
6
|
+
import { BaseError } from '../../errors/base.js'
|
|
7
|
+
import { InsufficientUTXOBalanceError } from '../../errors/utxo.js'
|
|
8
|
+
import { createClient, rpcSchema } from '../../factories/createClient.js'
|
|
9
|
+
import { createMockResponse } from '../../test/utils.js'
|
|
10
10
|
import {
|
|
11
11
|
INVALID_TX_ID,
|
|
12
12
|
TX_FEE,
|
|
13
13
|
VALID_TX_ID,
|
|
14
|
-
} from '../__mocks__/getTransactionFee'
|
|
15
|
-
import type { UTXOSchema } from '../types'
|
|
14
|
+
} from '../__mocks__/getTransactionFee.js'
|
|
15
|
+
import type { UTXOSchema } from '../types.js'
|
|
16
16
|
import getInvalidBalanceReponse from './__mocks__/getBalance/invalidAddress.json'
|
|
17
17
|
import getBalanceReponse from './__mocks__/getBalance/valid.json'
|
|
18
18
|
import getTransactionFeeInvalidResponse from './__mocks__/getTransactionFee/invalid.json'
|
|
@@ -25,7 +25,7 @@ import type {
|
|
|
25
25
|
BlockChairDashboardAddressResponse,
|
|
26
26
|
BlockchairAddressBalanceData,
|
|
27
27
|
BlockchairResponse,
|
|
28
|
-
} from './blockchair.types'
|
|
28
|
+
} from './blockchair.types.js'
|
|
29
29
|
|
|
30
30
|
const address = import.meta.env.VITE_TEST_ADDRESS
|
|
31
31
|
const apiKey = import.meta.env.VITE_TEST_BLOCKCHAIR_KEY
|
|
@@ -47,20 +47,24 @@ describe('Blockchair Transport', () => {
|
|
|
47
47
|
|
|
48
48
|
describe('getBalance', () => {
|
|
49
49
|
it('should fetch correct balance for valid address', async () => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
if (USE_MOCK) {
|
|
51
|
+
vi.spyOn(global, 'fetch').mockResolvedValue(
|
|
52
|
+
createMockResponse(getBalanceReponse as BlockchairAddressBalanceData)
|
|
53
|
+
)
|
|
54
|
+
}
|
|
53
55
|
|
|
54
56
|
const balance = await getBalance(publicClient, { address })
|
|
55
57
|
expect(balance).toBeTypeOf('bigint')
|
|
56
58
|
})
|
|
57
59
|
|
|
58
60
|
it('should throw error for non-existent address', async () => {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
61
|
+
if (USE_MOCK) {
|
|
62
|
+
vi.spyOn(global, 'fetch').mockResolvedValue(
|
|
63
|
+
createMockResponse(
|
|
64
|
+
getInvalidBalanceReponse as BlockchairAddressBalanceData
|
|
65
|
+
)
|
|
62
66
|
)
|
|
63
|
-
|
|
67
|
+
}
|
|
64
68
|
|
|
65
69
|
const nonExistentAddress =
|
|
66
70
|
'1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNaNUIBNSUENopnoidsacn'
|
|
@@ -72,11 +76,13 @@ describe('Blockchair Transport', () => {
|
|
|
72
76
|
|
|
73
77
|
describe('getUTXOs', () => {
|
|
74
78
|
it('should return utxos with correct structure', async () => {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
79
|
+
if (USE_MOCK) {
|
|
80
|
+
vi.spyOn(global, 'fetch').mockResolvedValue(
|
|
81
|
+
createMockResponse(
|
|
82
|
+
getUTXOsResponse as BlockchairResponse<BlockChairDashboardAddressResponse>
|
|
83
|
+
)
|
|
78
84
|
)
|
|
79
|
-
|
|
85
|
+
}
|
|
80
86
|
|
|
81
87
|
const utxos = await getUTXOs(publicClient, { address })
|
|
82
88
|
|
|
@@ -91,27 +97,29 @@ describe('Blockchair Transport', () => {
|
|
|
91
97
|
})
|
|
92
98
|
|
|
93
99
|
it('should throw error when minValue exceeds balance', async () => {
|
|
94
|
-
|
|
95
|
-
|
|
100
|
+
if (USE_MOCK) {
|
|
101
|
+
vi.spyOn(global, 'fetch').mockImplementation((request) => {
|
|
102
|
+
const url = new URL(request.toString())
|
|
96
103
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
104
|
+
if (url.pathname.includes('/addresses/balances')) {
|
|
105
|
+
return Promise.resolve(
|
|
106
|
+
createMockResponse(
|
|
107
|
+
getBalanceReponse as BlockchairAddressBalanceData
|
|
108
|
+
)
|
|
101
109
|
)
|
|
102
|
-
|
|
103
|
-
}
|
|
110
|
+
}
|
|
104
111
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
112
|
+
if (url.pathname.includes('/dashboards/addresses')) {
|
|
113
|
+
return Promise.resolve(
|
|
114
|
+
createMockResponse(
|
|
115
|
+
getUTXOsResponse as BlockchairResponse<BlockChairDashboardAddressResponse>
|
|
116
|
+
)
|
|
109
117
|
)
|
|
110
|
-
|
|
111
|
-
}
|
|
118
|
+
}
|
|
112
119
|
|
|
113
|
-
|
|
114
|
-
|
|
120
|
+
throw new BaseError(`Unexpected URL: ${url.pathname}`)
|
|
121
|
+
})
|
|
122
|
+
}
|
|
115
123
|
|
|
116
124
|
const hugeValue = 999999999999999999n
|
|
117
125
|
await expect(
|
|
@@ -123,14 +131,26 @@ describe('Blockchair Transport', () => {
|
|
|
123
131
|
})
|
|
124
132
|
|
|
125
133
|
it('should handle empty UTXO response', async () => {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
134
|
+
if (USE_MOCK) {
|
|
135
|
+
vi.spyOn(global, 'fetch').mockResolvedValue(
|
|
136
|
+
createMockResponse(
|
|
137
|
+
getUTXOsInvalidResponse as BlockchairResponse<null>
|
|
138
|
+
)
|
|
139
|
+
)
|
|
140
|
+
}
|
|
129
141
|
|
|
130
142
|
const emptyAddress = '12LRT14SgNFFQ3hMRThAyXNao24BBy5cyU'
|
|
131
|
-
const utxos = await getUTXOs(publicClient, { address: emptyAddress })
|
|
132
143
|
|
|
133
|
-
|
|
144
|
+
if (USE_MOCK) {
|
|
145
|
+
const utxos = await getUTXOs(publicClient, { address: emptyAddress })
|
|
146
|
+
expect(utxos.length).toBe(0)
|
|
147
|
+
} else {
|
|
148
|
+
await expect(
|
|
149
|
+
getUTXOs(publicClient, { address: emptyAddress })
|
|
150
|
+
).rejects.toMatchObject({
|
|
151
|
+
status: 404,
|
|
152
|
+
})
|
|
153
|
+
}
|
|
134
154
|
})
|
|
135
155
|
|
|
136
156
|
describe('pagination', () => {
|
|
@@ -155,37 +175,40 @@ describe('Blockchair Transport', () => {
|
|
|
155
175
|
})
|
|
156
176
|
|
|
157
177
|
it('should handle pagination correctly', async () => {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
178
|
+
if (USE_MOCK) {
|
|
179
|
+
vi.spyOn(global, 'fetch').mockImplementation((request) => {
|
|
180
|
+
const url = new URL(request.toString())
|
|
181
|
+
|
|
182
|
+
if (url.pathname.includes('/addresses/balances')) {
|
|
183
|
+
return Promise.resolve(
|
|
184
|
+
createMockResponse({
|
|
185
|
+
data: {
|
|
186
|
+
[addressWithManyUTXOs]: 1000000000000,
|
|
187
|
+
},
|
|
188
|
+
context: { code: 200 },
|
|
189
|
+
} as BlockchairResponse<BlockchairAddressBalanceData>)
|
|
190
|
+
)
|
|
191
|
+
}
|
|
171
192
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
const limit = 100
|
|
177
|
-
return Promise.resolve(
|
|
178
|
-
createMockResponse(
|
|
179
|
-
createPaginatedMockResponse(
|
|
180
|
-
offset,
|
|
181
|
-
limit
|
|
182
|
-
) as BlockchairResponse<BlockChairDashboardAddressResponse>
|
|
193
|
+
if (url.pathname.includes('/dashboards/addresses')) {
|
|
194
|
+
const offset = Number.parseInt(
|
|
195
|
+
url.searchParams.get('offset')?.split(',')[1] || '0',
|
|
196
|
+
10
|
|
183
197
|
)
|
|
184
|
-
|
|
185
|
-
|
|
198
|
+
const limit = 100
|
|
199
|
+
return Promise.resolve(
|
|
200
|
+
createMockResponse(
|
|
201
|
+
createPaginatedMockResponse(
|
|
202
|
+
offset,
|
|
203
|
+
limit
|
|
204
|
+
) as BlockchairResponse<BlockChairDashboardAddressResponse>
|
|
205
|
+
)
|
|
206
|
+
)
|
|
207
|
+
}
|
|
186
208
|
|
|
187
|
-
|
|
188
|
-
|
|
209
|
+
throw new BaseError(`Unexpected URL: ${url.pathname}`)
|
|
210
|
+
})
|
|
211
|
+
}
|
|
189
212
|
|
|
190
213
|
const utxos = await getUTXOs(publicClient, {
|
|
191
214
|
address: addressWithManyUTXOs,
|
|
@@ -194,7 +217,9 @@ describe('Blockchair Transport', () => {
|
|
|
194
217
|
|
|
195
218
|
expect(utxos.length).toBeGreaterThan(0)
|
|
196
219
|
expect(new Set(utxos.map((utxo) => utxo.txId)).size).toBe(utxos.length)
|
|
197
|
-
|
|
220
|
+
if (USE_MOCK) {
|
|
221
|
+
expect(global.fetch).toHaveBeenCalled()
|
|
222
|
+
}
|
|
198
223
|
|
|
199
224
|
const totalValue = utxos.reduce((sum, utxo) => sum + utxo.value, 0)
|
|
200
225
|
expect(totalValue).toBeGreaterThanOrEqual(minValue)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RpcErrorCode } from '../../errors/rpc.js'
|
|
1
2
|
import { urlWithParams } from '../../utils/url.js'
|
|
2
3
|
import type { RpcMethodHandler } from '../types.js'
|
|
3
4
|
import type {
|
|
@@ -18,10 +19,17 @@ export const getBalance: RpcMethodHandler<'getBalance'> = async (
|
|
|
18
19
|
url: apiUrl,
|
|
19
20
|
fetchOptions: { method: 'GET' },
|
|
20
21
|
})) as unknown as BlockchairResponse<BlockchairAddressBalanceData>
|
|
21
|
-
if (
|
|
22
|
+
if (
|
|
23
|
+
response.data[address] === undefined ||
|
|
24
|
+
response.context.error ||
|
|
25
|
+
response.context?.code !== 200
|
|
26
|
+
) {
|
|
22
27
|
return {
|
|
23
28
|
error: {
|
|
24
|
-
code:
|
|
29
|
+
code:
|
|
30
|
+
response.context.code === 429
|
|
31
|
+
? RpcErrorCode.ACCESS_DENIED
|
|
32
|
+
: RpcErrorCode.MISC_ERROR,
|
|
25
33
|
message: response.context?.error,
|
|
26
34
|
},
|
|
27
35
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RpcErrorCode } from '../../errors/rpc.js'
|
|
1
2
|
import { urlWithParams } from '../../utils/url.js'
|
|
2
3
|
import type { RpcMethodHandler } from '../types.js'
|
|
3
4
|
import type { BlockchairTransactionResponse } from './blockchair.types.js'
|
|
@@ -17,10 +18,17 @@ export const getTransactionFee: RpcMethodHandler<'getTransactionFee'> = async (
|
|
|
17
18
|
},
|
|
18
19
|
})) as unknown as BlockchairTransactionResponse
|
|
19
20
|
|
|
20
|
-
if (
|
|
21
|
+
if (
|
|
22
|
+
!response.data[txId] ||
|
|
23
|
+
response.context.error ||
|
|
24
|
+
response.context?.code !== 200
|
|
25
|
+
) {
|
|
21
26
|
return {
|
|
22
27
|
error: {
|
|
23
|
-
code:
|
|
28
|
+
code:
|
|
29
|
+
response.context.code === 429
|
|
30
|
+
? RpcErrorCode.ACCESS_DENIED
|
|
31
|
+
: RpcErrorCode.MISC_ERROR,
|
|
24
32
|
message: response.context?.error,
|
|
25
33
|
},
|
|
26
34
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RpcRequestError } from '../../errors/request.js'
|
|
2
|
+
import { RpcErrorCode } from '../../errors/rpc.js'
|
|
2
3
|
import { InsufficientUTXOBalanceError } from '../../errors/utxo.js'
|
|
3
4
|
import type { UTXO } from '../../types/transaction.js'
|
|
4
5
|
|
|
@@ -57,7 +58,10 @@ export const getUTXOs: RpcMethodHandler<'getUTXOs'> = async (
|
|
|
57
58
|
},
|
|
58
59
|
},
|
|
59
60
|
error: {
|
|
60
|
-
code:
|
|
61
|
+
code:
|
|
62
|
+
response.context.code === 429
|
|
63
|
+
? RpcErrorCode.ACCESS_DENIED
|
|
64
|
+
: RpcErrorCode.MISC_ERROR,
|
|
61
65
|
message: response.context.error || 'Error fetching utxos',
|
|
62
66
|
},
|
|
63
67
|
})
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
INVALID_TX_ID,
|
|
11
11
|
TX_FEE,
|
|
12
12
|
VALID_TX_ID,
|
|
13
|
-
} from '../__mocks__/getTransactionFee'
|
|
13
|
+
} from '../__mocks__/getTransactionFee.js'
|
|
14
14
|
import type { UTXOSchema } from '../types.js'
|
|
15
15
|
import getBalanceInValidResponse from './__mocks__/getBalance/invalid.json'
|
|
16
16
|
import getBalanceValidResponse from './__mocks__/getBalance/valid.json'
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { urlWithParams } from '../../utils/url.js'
|
|
2
2
|
import type { RpcMethodHandler } from '../types.js'
|
|
3
3
|
import type { BlockcypherBalanceResponse } from './blockcypher.types.js'
|
|
4
|
+
import { getRpcErrorCode } from './utils.js'
|
|
4
5
|
|
|
5
6
|
export const getBalance: RpcMethodHandler<'getBalance'> = async (
|
|
6
7
|
client,
|
|
@@ -16,7 +17,10 @@ export const getBalance: RpcMethodHandler<'getBalance'> = async (
|
|
|
16
17
|
})) as unknown as BlockcypherBalanceResponse
|
|
17
18
|
if (response.error) {
|
|
18
19
|
return {
|
|
19
|
-
error: {
|
|
20
|
+
error: {
|
|
21
|
+
code: getRpcErrorCode(response.error),
|
|
22
|
+
message: response.error,
|
|
23
|
+
},
|
|
20
24
|
}
|
|
21
25
|
}
|
|
22
26
|
return {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { urlWithParams } from '../../utils/url.js'
|
|
2
2
|
import type { RpcMethodHandler } from '../types.js'
|
|
3
3
|
import type { BlockcypherTransactionReponse } from './blockcypher.types.js'
|
|
4
|
+
import { getRpcErrorCode } from './utils.js'
|
|
4
5
|
|
|
5
6
|
export const getTransactionFee: RpcMethodHandler<'getTransactionFee'> = async (
|
|
6
7
|
client,
|
|
@@ -18,7 +19,7 @@ export const getTransactionFee: RpcMethodHandler<'getTransactionFee'> = async (
|
|
|
18
19
|
|
|
19
20
|
if (response.error) {
|
|
20
21
|
return {
|
|
21
|
-
error: { code:
|
|
22
|
+
error: { code: getRpcErrorCode(response.error), message: response.error },
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
|
|
@@ -7,6 +7,7 @@ import type {
|
|
|
7
7
|
BlockcypherUTXO,
|
|
8
8
|
BlockcypherUTXOsResponse,
|
|
9
9
|
} from './blockcypher.types.js'
|
|
10
|
+
import { getRpcErrorCode } from './utils.js'
|
|
10
11
|
|
|
11
12
|
const blockcypherUTXOTransformer = (utxo: BlockcypherUTXO): UTXO => ({
|
|
12
13
|
blockHeight: utxo.block_height,
|
|
@@ -53,7 +54,7 @@ export const getUTXOs: RpcMethodHandler<'getUTXOs'> = async (
|
|
|
53
54
|
},
|
|
54
55
|
},
|
|
55
56
|
error: {
|
|
56
|
-
code:
|
|
57
|
+
code: getRpcErrorCode(response.error),
|
|
57
58
|
message: response.error,
|
|
58
59
|
},
|
|
59
60
|
})
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
2
|
-
import { getUTXOs } from '../actions/getUTXOs'
|
|
3
|
-
import { bitcoin } from '../chains/bitcoin'
|
|
4
|
-
import { AllTransportsFailedError } from '../errors/transport'
|
|
5
|
-
import { InsufficientUTXOBalanceError } from '../errors/utxo'
|
|
6
|
-
import { createClient, rpcSchema } from '../factories/createClient'
|
|
7
|
-
import { createMockResponse } from '../test/utils'
|
|
2
|
+
import { getUTXOs } from '../actions/getUTXOs.js'
|
|
3
|
+
import { bitcoin } from '../chains/bitcoin.js'
|
|
4
|
+
import { AllTransportsFailedError } from '../errors/transport.js'
|
|
5
|
+
import { InsufficientUTXOBalanceError } from '../errors/utxo.js'
|
|
6
|
+
import { createClient, rpcSchema } from '../factories/createClient.js'
|
|
7
|
+
import { createMockResponse } from '../test/utils.js'
|
|
8
8
|
import blockchairLimitedResponse from './blockchair/__mocks__/getUTXOs/rateLimited.json'
|
|
9
9
|
import blockchairValidResponse from './blockchair/__mocks__/getUTXOs/valid.json'
|
|
10
|
-
import { blockchair } from './blockchair/blockchair'
|
|
10
|
+
import { blockchair } from './blockchair/blockchair.js'
|
|
11
11
|
import blockcypherLimitedResponse from './blockcypher/__mocks__/getUTXOs/rateLimited.json'
|
|
12
12
|
import blockcypherValidResponse from './blockcypher/__mocks__/getUTXOs/valid.json'
|
|
13
|
-
import { blockcypher } from './blockcypher/blockcypher'
|
|
14
|
-
import { fallback } from './fallback'
|
|
15
|
-
import type { UTXOSchema } from './types'
|
|
13
|
+
import { blockcypher } from './blockcypher/blockcypher.js'
|
|
14
|
+
import { fallback } from './fallback.js'
|
|
15
|
+
import type { UTXOSchema } from './types.js'
|
|
16
16
|
|
|
17
17
|
const address = import.meta.env.VITE_TEST_ADDRESS
|
|
18
18
|
const apiKey = import.meta.env.VITE_TEST_BLOCKCHAIR_KEY
|