@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.
Files changed (160) hide show
  1. package/__native__/__ios__/v4-native-client.js +462 -462
  2. package/__native__/__ios__/v4-native-client.js.map +1 -1
  3. package/__tests__/lib/helpers.test.ts +2 -0
  4. package/__tests__/modules/client/AccountEndpoints.test.ts +16 -16
  5. package/__tests__/modules/client/FaucetEndpoint.test.ts +2 -2
  6. package/__tests__/modules/client/Transfers.test.ts +2 -2
  7. package/__tests__/modules/client/UtilityEndpoints.test.ts +2 -2
  8. package/__tests__/modules/client/ValidatorGetEndpoints.test.ts +5 -5
  9. package/__tests__/modules/client/ValidatorPostEndpoints.test.ts +2 -2
  10. package/__tests__/modules/client/constants.ts +3 -3
  11. package/build/cjs/__tests__/clients/composite-client.test.js +130 -0
  12. package/build/cjs/__tests__/helpers/baseClients.js +29 -0
  13. package/build/cjs/__tests__/helpers/constants.js +110 -0
  14. package/build/cjs/__tests__/lib/helpers.test.js +46 -0
  15. package/build/cjs/__tests__/lib/util.test.js +67 -0
  16. package/build/cjs/__tests__/lib/validation.test.js +254 -0
  17. package/build/cjs/__tests__/modules/client/AccountEndpoints.test.js +171 -0
  18. package/build/cjs/__tests__/modules/client/FaucetEndpoint.test.js +15 -0
  19. package/build/cjs/__tests__/modules/client/MarketsEndpoints.test.js +69 -0
  20. package/build/cjs/__tests__/modules/client/Transfers.test.js +44 -0
  21. package/build/cjs/__tests__/modules/client/UtilityEndpoints.test.js +28 -0
  22. package/build/cjs/__tests__/modules/client/ValidatorGetEndpoints.test.js +46 -0
  23. package/build/cjs/__tests__/modules/client/ValidatorPostEndpoints.test.js +53 -0
  24. package/build/cjs/__tests__/modules/client/constants.js +7 -0
  25. package/build/cjs/__tests__/modules/onboarding.test.js +50 -0
  26. package/build/cjs/examples/account_endpoints.js +129 -0
  27. package/build/cjs/examples/batch_cancel_orders_example.js +93 -0
  28. package/build/cjs/examples/composite_example.js +50 -0
  29. package/build/cjs/examples/constants.js +35 -0
  30. package/build/cjs/examples/faucet_endpoint.js +23 -0
  31. package/build/cjs/examples/gov_add_new_market.js +77 -0
  32. package/build/cjs/examples/human_readable_orders.json +86 -0
  33. package/build/cjs/examples/human_readable_short_term_orders.json +42 -0
  34. package/build/cjs/examples/json-encoding.js +32 -0
  35. package/build/cjs/examples/long_term_order_cancel_example.js +63 -0
  36. package/build/cjs/examples/markets_endpoints.js +134 -0
  37. package/build/cjs/examples/native_examples.js +112 -0
  38. package/build/cjs/examples/noble_example.js +88 -0
  39. package/build/cjs/examples/optimal_node.js +70 -0
  40. package/build/cjs/examples/permissioned_keys_example.js +104 -0
  41. package/build/cjs/examples/raw_orders.json +130 -0
  42. package/build/cjs/examples/short_term_order_cancel_example.js +54 -0
  43. package/build/cjs/examples/short_term_order_composite_example.js +68 -0
  44. package/build/cjs/examples/test.js +50 -0
  45. package/build/cjs/examples/transfer_example_deposit.js +29 -0
  46. package/build/cjs/examples/transfer_example_send.js +42 -0
  47. package/build/cjs/examples/transfer_example_subaccount_transfer.js +29 -0
  48. package/build/cjs/examples/transfer_example_withdraw.js +30 -0
  49. package/build/cjs/examples/transfer_example_withdraw_other.js +42 -0
  50. package/build/cjs/examples/utility_endpoints.js +42 -0
  51. package/build/cjs/examples/validator_get_example.js +158 -0
  52. package/build/cjs/examples/validator_post_example.js +76 -0
  53. package/build/cjs/examples/wallet_address.js +22 -0
  54. package/build/cjs/examples/websocket_example.js +36 -0
  55. package/build/cjs/examples/websocket_orderbook_example.js +196 -0
  56. package/build/cjs/{clients → src/clients}/composite-client.js +1 -1
  57. package/build/cjs/{clients → src/clients}/constants.js +1 -1
  58. package/build/cjs/{clients → src/clients}/faucet-client.js +1 -1
  59. package/build/cjs/{clients → src/clients}/helpers/chain-helpers.js +1 -1
  60. package/build/cjs/src/clients/helpers/request-helpers.js +65 -0
  61. package/build/cjs/{clients → src/clients}/indexer-client.js +1 -1
  62. package/build/cjs/{clients → src/clients}/lib/axios/axiosRequest.js +1 -1
  63. package/build/cjs/{clients → src/clients}/lib/axios/errors.js +1 -1
  64. package/build/cjs/{clients → src/clients}/lib/axios/index.js +1 -1
  65. package/build/cjs/{clients → src/clients}/lib/axios/types.js +1 -1
  66. package/build/cjs/{clients → src/clients}/lib/cctpProto.js +1 -1
  67. package/build/cjs/{clients → src/clients}/lib/errors.js +1 -1
  68. package/build/cjs/{clients → src/clients}/lib/registry.js +1 -1
  69. package/build/cjs/{clients → src/clients}/modules/account.js +1 -1
  70. package/build/cjs/{clients → src/clients}/modules/composer.js +1 -1
  71. package/build/cjs/{clients → src/clients}/modules/get.js +1 -1
  72. package/build/cjs/{clients → src/clients}/modules/local-wallet.js +1 -1
  73. package/build/cjs/{clients → src/clients}/modules/markets.js +1 -1
  74. package/build/cjs/{clients → src/clients}/modules/post.js +1 -1
  75. package/build/cjs/{clients → src/clients}/modules/proto-includes.js +1 -1
  76. package/build/cjs/{clients → src/clients}/modules/rest.js +1 -1
  77. package/build/cjs/{clients → src/clients}/modules/signer.js +1 -1
  78. package/build/cjs/{clients → src/clients}/modules/tendermintClient.js +1 -1
  79. package/build/cjs/{clients → src/clients}/modules/utility.js +1 -1
  80. package/build/cjs/{clients → src/clients}/modules/vault.js +1 -1
  81. package/build/cjs/src/clients/native.js +1330 -0
  82. package/build/cjs/{clients → src/clients}/noble-client.js +1 -1
  83. package/build/cjs/{clients → src/clients}/socket-client.js +1 -1
  84. package/build/cjs/{clients → src/clients}/subaccount.js +1 -1
  85. package/build/cjs/{clients → src/clients}/types.js +1 -1
  86. package/build/cjs/{clients → src/clients}/validator-client.js +1 -1
  87. package/build/cjs/{index.js → src/index.js} +1 -1
  88. package/build/cjs/{lib → src/lib}/constants.js +1 -1
  89. package/build/cjs/{lib → src/lib}/errors.js +1 -1
  90. package/build/cjs/{lib → src/lib}/helpers.js +1 -1
  91. package/build/cjs/{lib → src/lib}/onboarding.js +1 -1
  92. package/build/cjs/{lib → src/lib}/trading-key-utils.js +1 -1
  93. package/build/cjs/{lib → src/lib}/utils.js +1 -1
  94. package/build/cjs/{lib → src/lib}/validation.js +1 -1
  95. package/build/cjs/src/network_optimizer.js +96 -0
  96. package/build/cjs/{types.js → src/types.js} +1 -1
  97. package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  98. package/build/esm/__tests__/lib/helpers.test.js +2 -1
  99. package/build/esm/__tests__/modules/client/AccountEndpoints.test.js +17 -17
  100. package/build/esm/__tests__/modules/client/FaucetEndpoint.test.js +3 -3
  101. package/build/esm/__tests__/modules/client/Transfers.test.js +3 -3
  102. package/build/esm/__tests__/modules/client/UtilityEndpoints.test.js +3 -3
  103. package/build/esm/__tests__/modules/client/ValidatorGetEndpoints.test.js +6 -6
  104. package/build/esm/__tests__/modules/client/ValidatorPostEndpoints.test.js +3 -3
  105. package/build/esm/__tests__/modules/client/constants.d.ts +3 -3
  106. package/build/esm/__tests__/modules/client/constants.d.ts.map +1 -1
  107. package/build/esm/__tests__/modules/client/constants.js +4 -4
  108. package/build/esm/examples/account_endpoints.js +3 -3
  109. package/build/esm/examples/batch_cancel_orders_example.js +3 -3
  110. package/build/esm/examples/composite_example.js +3 -3
  111. package/build/esm/examples/constants.d.ts +7 -7
  112. package/build/esm/examples/constants.d.ts.map +1 -1
  113. package/build/esm/examples/constants.js +9 -9
  114. package/build/esm/examples/faucet_endpoint.js +3 -3
  115. package/build/esm/examples/gov_add_new_market.js +3 -3
  116. package/build/esm/examples/long_term_order_cancel_example.js +3 -3
  117. package/build/esm/examples/native_examples.js +5 -5
  118. package/build/esm/examples/noble_example.js +4 -4
  119. package/build/esm/examples/permissioned_keys_example.js +4 -4
  120. package/build/esm/examples/short_term_order_cancel_example.js +3 -3
  121. package/build/esm/examples/short_term_order_composite_example.js +3 -3
  122. package/build/esm/examples/test.js +3 -3
  123. package/build/esm/examples/transfer_example_deposit.js +3 -3
  124. package/build/esm/examples/transfer_example_send.js +3 -3
  125. package/build/esm/examples/transfer_example_subaccount_transfer.js +3 -3
  126. package/build/esm/examples/transfer_example_withdraw.js +3 -3
  127. package/build/esm/examples/transfer_example_withdraw_other.js +3 -3
  128. package/build/esm/examples/validator_get_example.js +12 -12
  129. package/build/esm/examples/validator_post_example.js +3 -3
  130. package/build/esm/examples/wallet_address.js +4 -4
  131. package/build/esm/examples/websocket_example.js +3 -3
  132. package/build/esm/tsconfig.esm.tsbuildinfo +1 -1
  133. package/examples/account_endpoints.ts +2 -2
  134. package/examples/batch_cancel_orders_example.ts +2 -2
  135. package/examples/composite_example.ts +2 -2
  136. package/examples/constants.ts +8 -8
  137. package/examples/faucet_endpoint.ts +2 -2
  138. package/examples/gov_add_new_market.json +6 -6
  139. package/examples/gov_add_new_market.ts +2 -2
  140. package/examples/long_term_order_cancel_example.ts +2 -2
  141. package/examples/native_examples.ts +4 -4
  142. package/examples/noble_example.ts +3 -3
  143. package/examples/permissioned_keys_example.ts +3 -3
  144. package/examples/short_term_order_cancel_example.ts +2 -2
  145. package/examples/short_term_order_composite_example.ts +2 -2
  146. package/examples/test.ts +2 -2
  147. package/examples/transfer_example_deposit.ts +2 -2
  148. package/examples/transfer_example_send.ts +2 -2
  149. package/examples/transfer_example_subaccount_transfer.ts +2 -2
  150. package/examples/transfer_example_withdraw.ts +2 -2
  151. package/examples/transfer_example_withdraw_other.ts +2 -2
  152. package/examples/validator_get_example.ts +11 -11
  153. package/examples/validator_post_example.ts +2 -2
  154. package/examples/wallet_address.ts +3 -3
  155. package/examples/websocket_example.ts +2 -2
  156. package/package.json +11 -11
  157. package/tsconfig.base.json +2 -1
  158. package/tsconfig.cjs.json +3 -13
  159. package/build/cjs/clients/helpers/request-helpers.js +0 -65
  160. 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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