@ritbit/v4-client-js 2.0.0 → 2.1.1
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/__native__/__ios__/v4-native-client.js +462 -462
- package/__native__/__ios__/v4-native-client.js.map +1 -1
- package/__tests__/lib/helpers.test.ts +2 -0
- package/__tests__/modules/client/AccountEndpoints.test.ts +16 -16
- package/__tests__/modules/client/FaucetEndpoint.test.ts +2 -2
- package/__tests__/modules/client/Transfers.test.ts +2 -2
- package/__tests__/modules/client/UtilityEndpoints.test.ts +2 -2
- package/__tests__/modules/client/ValidatorGetEndpoints.test.ts +5 -5
- package/__tests__/modules/client/ValidatorPostEndpoints.test.ts +2 -2
- package/__tests__/modules/client/constants.ts +3 -3
- package/build/cjs/__tests__/clients/composite-client.test.js +130 -0
- package/build/cjs/__tests__/helpers/baseClients.js +29 -0
- package/build/cjs/__tests__/helpers/constants.js +110 -0
- package/build/cjs/__tests__/lib/helpers.test.js +46 -0
- package/build/cjs/__tests__/lib/util.test.js +67 -0
- package/build/cjs/__tests__/lib/validation.test.js +254 -0
- package/build/cjs/__tests__/modules/client/AccountEndpoints.test.js +171 -0
- package/build/cjs/__tests__/modules/client/FaucetEndpoint.test.js +15 -0
- package/build/cjs/__tests__/modules/client/MarketsEndpoints.test.js +69 -0
- package/build/cjs/__tests__/modules/client/Transfers.test.js +44 -0
- package/build/cjs/__tests__/modules/client/UtilityEndpoints.test.js +28 -0
- package/build/cjs/__tests__/modules/client/ValidatorGetEndpoints.test.js +46 -0
- package/build/cjs/__tests__/modules/client/ValidatorPostEndpoints.test.js +53 -0
- package/build/cjs/__tests__/modules/client/constants.js +7 -0
- package/build/cjs/__tests__/modules/onboarding.test.js +50 -0
- package/build/cjs/examples/account_endpoints.js +129 -0
- package/build/cjs/examples/batch_cancel_orders_example.js +93 -0
- package/build/cjs/examples/composite_example.js +50 -0
- package/build/cjs/examples/constants.js +35 -0
- package/build/cjs/examples/faucet_endpoint.js +23 -0
- package/build/cjs/examples/gov_add_new_market.js +77 -0
- package/build/cjs/examples/human_readable_orders.json +86 -0
- package/build/cjs/examples/human_readable_short_term_orders.json +42 -0
- package/build/cjs/examples/json-encoding.js +32 -0
- package/build/cjs/examples/long_term_order_cancel_example.js +63 -0
- package/build/cjs/examples/markets_endpoints.js +134 -0
- package/build/cjs/examples/native_examples.js +112 -0
- package/build/cjs/examples/noble_example.js +88 -0
- package/build/cjs/examples/optimal_node.js +70 -0
- package/build/cjs/examples/permissioned_keys_example.js +104 -0
- package/build/cjs/examples/raw_orders.json +130 -0
- package/build/cjs/examples/short_term_order_cancel_example.js +54 -0
- package/build/cjs/examples/short_term_order_composite_example.js +68 -0
- package/build/cjs/examples/test.js +50 -0
- package/build/cjs/examples/transfer_example_deposit.js +29 -0
- package/build/cjs/examples/transfer_example_send.js +42 -0
- package/build/cjs/examples/transfer_example_subaccount_transfer.js +29 -0
- package/build/cjs/examples/transfer_example_withdraw.js +30 -0
- package/build/cjs/examples/transfer_example_withdraw_other.js +42 -0
- package/build/cjs/examples/utility_endpoints.js +42 -0
- package/build/cjs/examples/validator_get_example.js +158 -0
- package/build/cjs/examples/validator_post_example.js +76 -0
- package/build/cjs/examples/wallet_address.js +22 -0
- package/build/cjs/examples/websocket_example.js +36 -0
- package/build/cjs/examples/websocket_orderbook_example.js +196 -0
- package/build/cjs/{clients → src/clients}/composite-client.js +1 -1
- package/build/cjs/{clients → src/clients}/constants.js +1 -1
- package/build/cjs/{clients → src/clients}/faucet-client.js +1 -1
- package/build/cjs/{clients → src/clients}/helpers/chain-helpers.js +1 -1
- package/build/cjs/src/clients/helpers/request-helpers.js +65 -0
- package/build/cjs/{clients → src/clients}/indexer-client.js +1 -1
- package/build/cjs/{clients → src/clients}/lib/axios/axiosRequest.js +1 -1
- package/build/cjs/{clients → src/clients}/lib/axios/errors.js +1 -1
- package/build/cjs/{clients → src/clients}/lib/axios/index.js +1 -1
- package/build/cjs/{clients → src/clients}/lib/axios/types.js +1 -1
- package/build/cjs/{clients → src/clients}/lib/cctpProto.js +1 -1
- package/build/cjs/{clients → src/clients}/lib/errors.js +1 -1
- package/build/cjs/{clients → src/clients}/lib/registry.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/account.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/composer.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/get.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/local-wallet.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/markets.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/post.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/proto-includes.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/rest.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/signer.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/tendermintClient.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/utility.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/vault.js +1 -1
- package/build/cjs/src/clients/native.js +1330 -0
- package/build/cjs/{clients → src/clients}/noble-client.js +1 -1
- package/build/cjs/{clients → src/clients}/socket-client.js +1 -1
- package/build/cjs/{clients → src/clients}/subaccount.js +1 -1
- package/build/cjs/{clients → src/clients}/types.js +1 -1
- package/build/cjs/{clients → src/clients}/validator-client.js +1 -1
- package/build/cjs/{index.js → src/index.js} +1 -1
- package/build/cjs/{lib → src/lib}/constants.js +1 -1
- package/build/cjs/{lib → src/lib}/errors.js +1 -1
- package/build/cjs/{lib → src/lib}/helpers.js +1 -1
- package/build/cjs/{lib → src/lib}/onboarding.js +1 -1
- package/build/cjs/{lib → src/lib}/trading-key-utils.js +1 -1
- package/build/cjs/{lib → src/lib}/utils.js +1 -1
- package/build/cjs/{lib → src/lib}/validation.js +1 -1
- package/build/cjs/src/network_optimizer.js +96 -0
- package/build/cjs/{types.js → src/types.js} +1 -1
- package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/build/esm/__tests__/lib/helpers.test.js +2 -1
- package/build/esm/__tests__/modules/client/AccountEndpoints.test.js +17 -17
- package/build/esm/__tests__/modules/client/FaucetEndpoint.test.js +3 -3
- package/build/esm/__tests__/modules/client/Transfers.test.js +3 -3
- package/build/esm/__tests__/modules/client/UtilityEndpoints.test.js +3 -3
- package/build/esm/__tests__/modules/client/ValidatorGetEndpoints.test.js +6 -6
- package/build/esm/__tests__/modules/client/ValidatorPostEndpoints.test.js +3 -3
- package/build/esm/__tests__/modules/client/constants.d.ts +3 -3
- package/build/esm/__tests__/modules/client/constants.d.ts.map +1 -1
- package/build/esm/__tests__/modules/client/constants.js +4 -4
- package/build/esm/examples/account_endpoints.js +3 -3
- package/build/esm/examples/batch_cancel_orders_example.js +3 -3
- package/build/esm/examples/composite_example.js +3 -3
- package/build/esm/examples/constants.d.ts +7 -7
- package/build/esm/examples/constants.d.ts.map +1 -1
- package/build/esm/examples/constants.js +9 -9
- package/build/esm/examples/faucet_endpoint.js +3 -3
- package/build/esm/examples/gov_add_new_market.js +3 -3
- package/build/esm/examples/long_term_order_cancel_example.js +3 -3
- package/build/esm/examples/native_examples.js +5 -5
- package/build/esm/examples/noble_example.js +4 -4
- package/build/esm/examples/permissioned_keys_example.js +4 -4
- package/build/esm/examples/short_term_order_cancel_example.js +3 -3
- package/build/esm/examples/short_term_order_composite_example.js +3 -3
- package/build/esm/examples/test.js +3 -3
- package/build/esm/examples/transfer_example_deposit.js +3 -3
- package/build/esm/examples/transfer_example_send.js +3 -3
- package/build/esm/examples/transfer_example_subaccount_transfer.js +3 -3
- package/build/esm/examples/transfer_example_withdraw.js +3 -3
- package/build/esm/examples/transfer_example_withdraw_other.js +3 -3
- package/build/esm/examples/validator_get_example.js +12 -12
- package/build/esm/examples/validator_post_example.js +3 -3
- package/build/esm/examples/wallet_address.js +4 -4
- package/build/esm/examples/websocket_example.js +3 -3
- package/build/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/examples/account_endpoints.ts +2 -2
- package/examples/batch_cancel_orders_example.ts +2 -2
- package/examples/composite_example.ts +2 -2
- package/examples/constants.ts +8 -8
- package/examples/faucet_endpoint.ts +2 -2
- package/examples/gov_add_new_market.json +6 -6
- package/examples/gov_add_new_market.ts +2 -2
- package/examples/long_term_order_cancel_example.ts +2 -2
- package/examples/native_examples.ts +4 -4
- package/examples/noble_example.ts +3 -3
- package/examples/permissioned_keys_example.ts +3 -3
- package/examples/short_term_order_cancel_example.ts +2 -2
- package/examples/short_term_order_composite_example.ts +2 -2
- package/examples/test.ts +2 -2
- package/examples/transfer_example_deposit.ts +2 -2
- package/examples/transfer_example_send.ts +2 -2
- package/examples/transfer_example_subaccount_transfer.ts +2 -2
- package/examples/transfer_example_withdraw.ts +2 -2
- package/examples/transfer_example_withdraw_other.ts +2 -2
- package/examples/validator_get_example.ts +11 -11
- package/examples/validator_post_example.ts +2 -2
- package/examples/wallet_address.ts +3 -3
- package/examples/websocket_example.ts +2 -2
- package/package.json +11 -11
- package/tsconfig.base.json +2 -1
- package/tsconfig.cjs.json +3 -13
- package/build/cjs/clients/helpers/request-helpers.js +0 -65
- package/build/cjs/network_optimizer.js +0 -96
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.generateQueryPath = generateQueryPath;
|
|
7
|
-
exports.parseToPrimitives = parseToPrimitives;
|
|
8
|
-
const long_1 = __importDefault(require("long"));
|
|
9
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
10
|
-
function generateQueryPath(url, params) {
|
|
11
|
-
const definedEntries = Object.entries(params).filter(([_key, value]) => value !== undefined);
|
|
12
|
-
if (!definedEntries.length) {
|
|
13
|
-
return url;
|
|
14
|
-
}
|
|
15
|
-
const paramsString = definedEntries
|
|
16
|
-
.map(([key, value]) => `${key}=${value}`)
|
|
17
|
-
.join('&');
|
|
18
|
-
return `${url}?${paramsString}`;
|
|
19
|
-
}
|
|
20
|
-
function parseToPrimitives(x) {
|
|
21
|
-
if (typeof x === 'number' || typeof x === 'string' || typeof x === 'boolean' || x === null) {
|
|
22
|
-
return x;
|
|
23
|
-
}
|
|
24
|
-
if (Array.isArray(x)) {
|
|
25
|
-
return x.map((item) => parseToPrimitives(item));
|
|
26
|
-
}
|
|
27
|
-
if (long_1.default.isLong(x)) {
|
|
28
|
-
return x.toString();
|
|
29
|
-
}
|
|
30
|
-
if (x instanceof Uint8Array) {
|
|
31
|
-
return bytesToBigInt(x).toString();
|
|
32
|
-
}
|
|
33
|
-
if (x instanceof Date) {
|
|
34
|
-
return x.toString();
|
|
35
|
-
}
|
|
36
|
-
if (typeof x === 'object') {
|
|
37
|
-
const parsedObj = {};
|
|
38
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
39
|
-
for (const key in x) {
|
|
40
|
-
if (Object.prototype.hasOwnProperty.call(x, key)) {
|
|
41
|
-
parsedObj[key] = parseToPrimitives(x[key]);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return parsedObj;
|
|
45
|
-
}
|
|
46
|
-
if (typeof x === 'bigint') {
|
|
47
|
-
return x.toString();
|
|
48
|
-
}
|
|
49
|
-
throw new Error(`Unsupported data type: ${typeof x}`);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Converts a byte array (representing an arbitrary-size signed integer) into a bigint.
|
|
53
|
-
* @param u Array of bytes represented as a Uint8Array.
|
|
54
|
-
*/
|
|
55
|
-
function bytesToBigInt(u) {
|
|
56
|
-
if (u.length <= 1) {
|
|
57
|
-
return BigInt(0);
|
|
58
|
-
}
|
|
59
|
-
// eslint-disable-next-line no-bitwise
|
|
60
|
-
const negated = (u[0] & 1) === 1;
|
|
61
|
-
const hex = Buffer.from(u.slice(1)).toString('hex');
|
|
62
|
-
const abs = BigInt(`0x${hex}`);
|
|
63
|
-
return negated ? -abs : abs;
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NsaWVudHMvaGVscGVycy9yZXF1ZXN0LWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSw4Q0FhQztBQUVELDhDQXFDQztBQXZERCxnREFBd0I7QUFFeEIsdURBQXVEO0FBQ3ZELFNBQWdCLGlCQUFpQixDQUFDLEdBQVcsRUFBRSxNQUFVO0lBQ3ZELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUNsRCxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBb0IsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FDMUQsQ0FBQztJQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsY0FBYztTQUNoQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQW9CLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1NBQzNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNiLE9BQU8sR0FBRyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbEMsQ0FBQztBQUVELFNBQWdCLGlCQUFpQixDQUFJLENBQUk7SUFDdkMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDM0YsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckIsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBTSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFJLGNBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuQixPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQU8sQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxDQUFDLFlBQVksVUFBVSxFQUFFLENBQUM7UUFDNUIsT0FBTyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFPLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1FBQ3RCLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBTyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLE1BQU0sU0FBUyxHQUEyQixFQUFFLENBQUM7UUFDN0MsZ0RBQWdEO1FBQ2hELEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxpQkFBaUIsQ0FBRSxDQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN0RCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sU0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBTyxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsYUFBYSxDQUFDLENBQWE7SUFDbEMsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFDRCxzQ0FBc0M7SUFDdEMsTUFBTSxPQUFPLEdBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLE1BQU0sR0FBRyxHQUFXLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxNQUFNLEdBQUcsR0FBVyxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzlCLENBQUMifQ==
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NetworkOptimizer = exports.isTruthy = void 0;
|
|
4
|
-
const indexer_client_1 = require("./clients/indexer-client");
|
|
5
|
-
const validator_client_1 = require("./clients/validator-client");
|
|
6
|
-
const helpers_1 = require("./lib/helpers");
|
|
7
|
-
const types_1 = require("./types");
|
|
8
|
-
class PingResponse {
|
|
9
|
-
constructor(height) {
|
|
10
|
-
this.height = height;
|
|
11
|
-
this.responseTime = new Date();
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
const isTruthy = (n) => Boolean(n);
|
|
15
|
-
exports.isTruthy = isTruthy;
|
|
16
|
-
class NetworkOptimizer {
|
|
17
|
-
async validatorClients(endpointUrls, chainId) {
|
|
18
|
-
return (await Promise.all(endpointUrls.map((endpointUrl) => validator_client_1.ValidatorClient.connect(new types_1.ValidatorConfig(endpointUrl, chainId, {
|
|
19
|
-
CHAINTOKEN_DENOM: 'placeholder',
|
|
20
|
-
CHAINTOKEN_DECIMALS: 18,
|
|
21
|
-
USDC_DENOM: 'uusdc',
|
|
22
|
-
USDC_DECIMALS: 6,
|
|
23
|
-
})).catch((_) => undefined)))).filter(exports.isTruthy);
|
|
24
|
-
}
|
|
25
|
-
indexerClients(endpointUrls) {
|
|
26
|
-
return endpointUrls
|
|
27
|
-
.map((endpointUrl) => new indexer_client_1.IndexerClient(
|
|
28
|
-
// socket is not used for finding optimal indexer, but required as a parameter to the config
|
|
29
|
-
new types_1.IndexerConfig(endpointUrl, endpointUrl.replace('https://', 'wss://').replace('http://', 'ws://'))))
|
|
30
|
-
.filter(exports.isTruthy);
|
|
31
|
-
}
|
|
32
|
-
async findOptimalNode(endpointUrls, chainId) {
|
|
33
|
-
if (endpointUrls.length === 0) {
|
|
34
|
-
const errorResponse = {
|
|
35
|
-
error: {
|
|
36
|
-
message: 'No nodes provided',
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
return (0, helpers_1.encodeJson)(errorResponse);
|
|
40
|
-
}
|
|
41
|
-
const clients = await this.validatorClients(endpointUrls, chainId);
|
|
42
|
-
const responses = (await Promise.all(clients
|
|
43
|
-
.map(async (client) => {
|
|
44
|
-
const block = await client.get.latestBlock();
|
|
45
|
-
const response = new PingResponse(block.header.height);
|
|
46
|
-
return {
|
|
47
|
-
endpoint: client.config.restEndpoint,
|
|
48
|
-
height: response.height,
|
|
49
|
-
time: response.responseTime.getTime(),
|
|
50
|
-
};
|
|
51
|
-
})
|
|
52
|
-
.map((promise) => promise.catch((_) => undefined)))).filter(exports.isTruthy);
|
|
53
|
-
if (responses.length === 0) {
|
|
54
|
-
throw new Error('Could not connect to endpoints');
|
|
55
|
-
}
|
|
56
|
-
const maxHeight = Math.max(...responses.map(({ height }) => height));
|
|
57
|
-
return (responses
|
|
58
|
-
// Only consider nodes at `maxHeight` or `maxHeight - 1`
|
|
59
|
-
.filter(({ height }) => height === maxHeight || height === maxHeight - 1)
|
|
60
|
-
// Return the endpoint with the fastest response time
|
|
61
|
-
.sort((a, b) => a.time - b.time)[0].endpoint);
|
|
62
|
-
}
|
|
63
|
-
async findOptimalIndexer(endpointUrls) {
|
|
64
|
-
if (endpointUrls.length === 0) {
|
|
65
|
-
const errorResponse = {
|
|
66
|
-
error: {
|
|
67
|
-
message: 'No URL provided',
|
|
68
|
-
},
|
|
69
|
-
};
|
|
70
|
-
return (0, helpers_1.encodeJson)(errorResponse);
|
|
71
|
-
}
|
|
72
|
-
const clients = this.indexerClients(endpointUrls);
|
|
73
|
-
const responses = (await Promise.all(clients
|
|
74
|
-
.map(async (client) => {
|
|
75
|
-
const block = await client.utility.getHeight();
|
|
76
|
-
const response = new PingResponse(+block.height);
|
|
77
|
-
return {
|
|
78
|
-
endpoint: client.config.restEndpoint,
|
|
79
|
-
height: response.height,
|
|
80
|
-
time: response.responseTime.getTime(),
|
|
81
|
-
};
|
|
82
|
-
})
|
|
83
|
-
.map((promise) => promise.catch((_) => undefined)))).filter(exports.isTruthy);
|
|
84
|
-
if (responses.length === 0) {
|
|
85
|
-
throw new Error('Could not connect to endpoints');
|
|
86
|
-
}
|
|
87
|
-
const maxHeight = Math.max(...responses.map(({ height }) => height));
|
|
88
|
-
return (responses
|
|
89
|
-
// Only consider nodes at `maxHeight` or `maxHeight - 1`
|
|
90
|
-
.filter(({ height }) => height === maxHeight || height === maxHeight - 1)
|
|
91
|
-
// Return the endpoint with the fastest response time
|
|
92
|
-
.sort((a, b) => a.time - b.time)[0].endpoint);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
exports.NetworkOptimizer = NetworkOptimizer;
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya19vcHRpbWl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29ya19vcHRpbWl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQXlEO0FBQ3pELGlFQUE2RDtBQUM3RCwyQ0FBMkM7QUFDM0MsbUNBQXlEO0FBRXpELE1BQU0sWUFBWTtJQUtoQixZQUFZLE1BQWM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUVNLE1BQU0sUUFBUSxHQUFHLENBQUksQ0FBb0MsRUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQTNFLFFBQUEsUUFBUSxZQUFtRTtBQUV4RixNQUFhLGdCQUFnQjtJQUNuQixLQUFLLENBQUMsZ0JBQWdCLENBQzVCLFlBQXNCLEVBQ3RCLE9BQWU7UUFFZixPQUFPLENBQ0wsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUMvQixrQ0FBZSxDQUFDLE9BQU8sQ0FDckIsSUFBSSx1QkFBZSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUU7WUFDeEMsZ0JBQWdCLEVBQUUsYUFBYTtZQUMvQixtQkFBbUIsRUFBRSxFQUFFO1lBQ3ZCLFVBQVUsRUFBRSxPQUFPO1lBQ25CLGFBQWEsRUFBRSxDQUFDO1NBQ2pCLENBQUMsQ0FDSCxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQzFCLENBQ0YsQ0FDRixDQUFDLE1BQU0sQ0FBQyxnQkFBUSxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxZQUFzQjtRQUMzQyxPQUFPLFlBQVk7YUFDaEIsR0FBRyxDQUNGLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FD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
|