@ledgerhq/coin-solana 0.37.0-nightly.20251125074637 → 0.38.0-nightly.20251126023856

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 (111) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +52 -8
  3. package/lib/bridge/bridge.d.ts +2 -4
  4. package/lib/bridge/bridge.d.ts.map +1 -1
  5. package/lib/bridge/bridge.js +15 -15
  6. package/lib/bridge/bridge.js.map +1 -1
  7. package/lib/bridge/js.d.ts.map +1 -1
  8. package/lib/bridge/js.js +8 -8
  9. package/lib/bridge/js.js.map +1 -1
  10. package/lib/config.d.ts +0 -1
  11. package/lib/config.d.ts.map +1 -1
  12. package/lib/config.js.map +1 -1
  13. package/lib/network/chain/index.d.ts.map +1 -1
  14. package/lib/network/chain/index.js +29 -38
  15. package/lib/network/chain/index.js.map +1 -1
  16. package/lib/network/chain/web3.d.ts.map +1 -1
  17. package/lib/network/chain/web3.js +9 -5
  18. package/lib/network/chain/web3.js.map +1 -1
  19. package/lib/network/index.d.ts +0 -2
  20. package/lib/network/index.d.ts.map +1 -1
  21. package/lib/network/index.js +1 -5
  22. package/lib/network/index.js.map +1 -1
  23. package/lib/network/nft/index.js +3 -3
  24. package/lib/network/nft/index.js.map +1 -1
  25. package/lib/preload.d.ts +1 -1
  26. package/lib/preload.d.ts.map +1 -1
  27. package/lib/preload.js +1 -2
  28. package/lib/preload.js.map +1 -1
  29. package/lib/signOperation.d.ts +1 -1
  30. package/lib/signOperation.d.ts.map +1 -1
  31. package/lib/signOperation.js +1 -1
  32. package/lib/signOperation.js.map +1 -1
  33. package/lib/synchronization.d.ts.map +1 -1
  34. package/lib/synchronization.js +9 -5
  35. package/lib/synchronization.js.map +1 -1
  36. package/lib-es/bridge/bridge.d.ts +2 -4
  37. package/lib-es/bridge/bridge.d.ts.map +1 -1
  38. package/lib-es/bridge/bridge.js +15 -15
  39. package/lib-es/bridge/bridge.js.map +1 -1
  40. package/lib-es/bridge/js.d.ts.map +1 -1
  41. package/lib-es/bridge/js.js +9 -9
  42. package/lib-es/bridge/js.js.map +1 -1
  43. package/lib-es/config.d.ts +0 -1
  44. package/lib-es/config.d.ts.map +1 -1
  45. package/lib-es/config.js.map +1 -1
  46. package/lib-es/network/chain/index.d.ts.map +1 -1
  47. package/lib-es/network/chain/index.js +29 -38
  48. package/lib-es/network/chain/index.js.map +1 -1
  49. package/lib-es/network/chain/web3.d.ts.map +1 -1
  50. package/lib-es/network/chain/web3.js +9 -5
  51. package/lib-es/network/chain/web3.js.map +1 -1
  52. package/lib-es/network/index.d.ts +0 -2
  53. package/lib-es/network/index.d.ts.map +1 -1
  54. package/lib-es/network/index.js +0 -2
  55. package/lib-es/network/index.js.map +1 -1
  56. package/lib-es/network/nft/index.js +1 -1
  57. package/lib-es/network/nft/index.js.map +1 -1
  58. package/lib-es/preload.d.ts +1 -1
  59. package/lib-es/preload.d.ts.map +1 -1
  60. package/lib-es/preload.js +1 -2
  61. package/lib-es/preload.js.map +1 -1
  62. package/lib-es/signOperation.d.ts +1 -1
  63. package/lib-es/signOperation.d.ts.map +1 -1
  64. package/lib-es/signOperation.js +1 -1
  65. package/lib-es/signOperation.js.map +1 -1
  66. package/lib-es/synchronization.d.ts.map +1 -1
  67. package/lib-es/synchronization.js +9 -5
  68. package/lib-es/synchronization.js.map +1 -1
  69. package/package.json +6 -8
  70. package/src/__tests__/getTransactions.test.ts +81 -0
  71. package/src/__tests__/unit/hw-signMessage.unit.test.ts +0 -1
  72. package/src/bridge/bridge.ts +24 -33
  73. package/src/bridge/js.ts +9 -25
  74. package/src/config.ts +0 -1
  75. package/src/network/chain/index.ts +29 -38
  76. package/src/network/chain/web3.integration.test.ts +21 -1
  77. package/src/network/chain/web3.ts +11 -5
  78. package/src/network/index.ts +0 -2
  79. package/src/network/nft/index.ts +1 -1
  80. package/src/preload.test.ts +3 -3
  81. package/src/preload.ts +1 -3
  82. package/src/signOperation.test.ts +2 -2
  83. package/src/signOperation.ts +2 -2
  84. package/src/synchronization.ts +9 -5
  85. package/lib/network/cached.d.ts +0 -3
  86. package/lib/network/cached.d.ts.map +0 -1
  87. package/lib/network/cached.js +0 -56
  88. package/lib/network/cached.js.map +0 -1
  89. package/lib/network/queued.d.ts +0 -3
  90. package/lib/network/queued.d.ts.map +0 -1
  91. package/lib/network/queued.js +0 -27
  92. package/lib/network/queued.js.map +0 -1
  93. package/lib/network/traced.d.ts +0 -3
  94. package/lib/network/traced.d.ts.map +0 -1
  95. package/lib/network/traced.js +0 -80
  96. package/lib/network/traced.js.map +0 -1
  97. package/lib-es/network/cached.d.ts +0 -3
  98. package/lib-es/network/cached.d.ts.map +0 -1
  99. package/lib-es/network/cached.js +0 -49
  100. package/lib-es/network/cached.js.map +0 -1
  101. package/lib-es/network/queued.d.ts +0 -3
  102. package/lib-es/network/queued.d.ts.map +0 -1
  103. package/lib-es/network/queued.js +0 -23
  104. package/lib-es/network/queued.js.map +0 -1
  105. package/lib-es/network/traced.d.ts +0 -3
  106. package/lib-es/network/traced.d.ts.map +0 -1
  107. package/lib-es/network/traced.js +0 -76
  108. package/lib-es/network/traced.js.map +0 -1
  109. package/src/network/cached.ts +0 -111
  110. package/src/network/queued.ts +0 -25
  111. package/src/network/traced.ts +0 -89
@@ -2,7 +2,7 @@ import { create } from "superstruct";
2
2
  import { getChainAPI } from ".";
3
3
  import { PARSED_PROGRAMS } from "./program/constants";
4
4
  import { PublicKeyFromString } from "./validators/pubkey";
5
- import { getMaybeTokenAccount } from "./web3";
5
+ import { getMaybeTokenAccount, getTransactions } from "./web3";
6
6
 
7
7
  const api = getChainAPI({
8
8
  endpoint: "https://solana.coin.ledger.com",
@@ -74,3 +74,23 @@ describe("findTokenAccAddress", () => {
74
74
  expect(ata).toEqual(address);
75
75
  });
76
76
  });
77
+
78
+ describe("getTransactions", () => {
79
+ it.each([
80
+ {
81
+ address: "Cv9b7PuxVdKXTKTBXvZSQfSqbMNmPHP8brv77ZL2D95m",
82
+ untilTxSignature: undefined,
83
+ },
84
+ {
85
+ address: "Hj69wRzkrFuf1Nby4yzPEFHdsmQdMoVYjvDKZSLjZFEp",
86
+ untilTxSignature: undefined,
87
+ },
88
+ ])(
89
+ "returns the expected transactions without any fail transactions",
90
+ async ({ address, untilTxSignature }) => {
91
+ const txs = await getTransactions(address, untilTxSignature, api);
92
+ const hasError = txs.some(tx => tx.info.err);
93
+ expect(hasError).toBe(false);
94
+ },
95
+ );
96
+ });
@@ -122,12 +122,18 @@ async function* getTransactionsBatched(
122
122
  const transactions = await api.getParsedTransactions(
123
123
  signaturesInfoBatch.map(tx => tx.signature),
124
124
  );
125
- const txsDetails = transactions.reduce((acc, tx, index) => {
125
+ const sortedTransactions = transactions.sort((a, b) => (b?.slot ?? 0) - (a?.slot ?? 0));
126
+ const txsDetails = sortedTransactions.reduce((acc, tx) => {
126
127
  if (tx && !tx.meta?.err && tx.blockTime) {
127
- acc.push({
128
- info: signaturesInfoBatch[index],
129
- parsed: tx,
130
- });
128
+ const info = signaturesInfoBatch.find(s =>
129
+ tx.transaction.signatures.includes(s.signature),
130
+ )!;
131
+ if (info) {
132
+ acc.push({
133
+ info,
134
+ parsed: tx,
135
+ });
136
+ }
131
137
  }
132
138
  return acc;
133
139
  }, [] as TransactionDescriptor[]);
@@ -1,4 +1,2 @@
1
1
  export * from "./chain/index";
2
- export { cached } from "./cached";
3
- export { queued } from "./queued";
4
2
  export { logged } from "./logged";
@@ -1,5 +1,5 @@
1
1
  import { getEnv } from "@ledgerhq/live-env";
2
- import network from "@ledgerhq/live-network/network";
2
+ import network from "@ledgerhq/live-network";
3
3
  import { NFTCollectionMetadataResponse, NFTMetadataResponse } from "@ledgerhq/types-live";
4
4
  import { CollectionMetadataInput, NftMetadataInput } from "@ledgerhq/coin-framework/nft/types";
5
5
  import { CryptoCurrency } from "@ledgerhq/types-cryptoassets";
@@ -39,7 +39,7 @@ describe("preloadWithAPI", () => {
39
39
  id: "solana",
40
40
  } as unknown as CryptoCurrency;
41
41
 
42
- const result = await preloadWithAPI(currency, () => Promise.resolve({} as unknown as ChainAPI));
42
+ const result = await preloadWithAPI(currency, {} as unknown as ChainAPI);
43
43
  expect(result).toEqual({
44
44
  validators: expect.arrayContaining([
45
45
  ...validators,
@@ -71,7 +71,7 @@ describe("preloadWithAPI", () => {
71
71
  const currency = {
72
72
  id: "solana_devnet",
73
73
  } as unknown as CryptoCurrency;
74
- const result = await preloadWithAPI(currency, () => Promise.resolve(api));
74
+ const result = await preloadWithAPI(currency, api);
75
75
  expect(result).toEqual({
76
76
  validators: expect.arrayContaining([
77
77
  {
@@ -110,7 +110,7 @@ describe("preloadWithAPI", () => {
110
110
  id: "solana_testnet",
111
111
  } as unknown as CryptoCurrency;
112
112
 
113
- const result = await preloadWithAPI(currency, () => Promise.resolve({} as unknown as ChainAPI));
113
+ const result = await preloadWithAPI(currency, {} as unknown as ChainAPI);
114
114
  expect(result).toEqual({
115
115
  validators: expect.arrayContaining(validators),
116
116
  validatorsWithMeta: [],
package/src/preload.ts CHANGED
@@ -10,10 +10,8 @@ export const PRELOAD_MAX_AGE = 15 * 60 * 1000; // 15min
10
10
 
11
11
  export async function preloadWithAPI(
12
12
  currency: CryptoCurrency,
13
- getAPI: () => Promise<ChainAPI>,
13
+ api: ChainAPI,
14
14
  ): Promise<SolanaPreloadDataV1> {
15
- const api = await getAPI();
16
-
17
15
  const cluster = clusterByCurrencyId(currency.id);
18
16
 
19
17
  const validators: ValidatorsAppValidator[] =
@@ -42,7 +42,7 @@ describe("Testing signOperation", () => {
42
42
 
43
43
  const observable = buildSignOperation(
44
44
  signContext(),
45
- api,
45
+ api(),
46
46
  )({
47
47
  account: account(),
48
48
  deviceId: "any random value",
@@ -118,7 +118,7 @@ function blockhashWithExpiryBlockHeight() {
118
118
  }
119
119
 
120
120
  function api() {
121
- return Promise.resolve({} as ChainAPI);
121
+ return {} as ChainAPI;
122
122
  }
123
123
 
124
124
  function account(): Account {
@@ -98,7 +98,7 @@ function getResolution(
98
98
  export const buildSignOperation =
99
99
  (
100
100
  signerContext: SignerContext<SolanaSigner>,
101
- api: () => Promise<ChainAPI>,
101
+ api: ChainAPI,
102
102
  ): AccountBridge<Transaction>["signOperation"] =>
103
103
  ({ account, deviceId, deviceModelId, transaction, certificateSignatureKind }) =>
104
104
  new Observable(subscriber => {
@@ -106,7 +106,7 @@ export const buildSignOperation =
106
106
  const [tx, recentBlockhash, signOnChainTransaction] = await buildTransactionWithAPI(
107
107
  account.freshAddress,
108
108
  transaction,
109
- await api(),
109
+ api,
110
110
  );
111
111
 
112
112
  subscriber.next({
@@ -132,12 +132,16 @@ export async function getTokenAccountsTransactions(
132
132
  const txs = json.result.length
133
133
  ? await api.getParsedTransactions(json.result.map(({ signature }) => signature))
134
134
  : [];
135
- const descriptors = txs.reduce((acc, tx, index) => {
135
+ const sortedTxs = txs.sort((a, b) => (b?.slot ?? 0) - (a?.slot ?? 0));
136
+ const descriptors = sortedTxs.reduce((acc, tx) => {
136
137
  if (tx && !tx.meta?.err && tx.blockTime) {
137
- acc.push({
138
- info: json.result[index],
139
- parsed: tx,
140
- });
138
+ const info = json.result.find(s => tx.transaction.signatures.includes(s.signature))!;
139
+ if (info) {
140
+ acc.push({
141
+ info,
142
+ parsed: tx,
143
+ });
144
+ }
141
145
  }
142
146
  return acc;
143
147
  }, [] as TransactionDescriptor[]);
@@ -1,3 +0,0 @@
1
- import { ChainAPI } from "./chain";
2
- export declare function cached(api: ChainAPI): ChainAPI;
3
- //# sourceMappingURL=cached.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cached.d.ts","sourceRoot":"","sources":["../../src/network/cached.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAuBnC,wBAAgB,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAoF9C"}
@@ -1,56 +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.cached = void 0;
7
- const cache_1 = require("@ledgerhq/live-network/cache");
8
- const web3_js_1 = require("@solana/web3.js");
9
- const object_hash_1 = __importDefault(require("object-hash"));
10
- const cacheKeyAddress = (address) => address;
11
- const cacheKeyEmpty = () => "";
12
- const cacheKeyAssocTokenAccAddress = (owner, mint) => `${owner}:${mint}`;
13
- const cacheKeyMinimumBalanceForRentExemption = (dataLengt) => dataLengt.toString();
14
- const cacheKeyTransactions = (signatures) => (0, object_hash_1.default)([...signatures].sort());
15
- const cacheKeyAddresses = (addresses) => (0, object_hash_1.default)([...addresses].sort());
16
- const cacheKeyInstructions = (ixs, payer) => {
17
- return (0, object_hash_1.default)(new web3_js_1.TransactionMessage({
18
- instructions: ixs,
19
- payerKey: payer,
20
- recentBlockhash: payer.toString(),
21
- })
22
- .compileToLegacyMessage()
23
- .serialize());
24
- };
25
- const cacheKeyByArgs = (...args) => (0, object_hash_1.default)(args);
26
- function cached(api) {
27
- return {
28
- findAssocTokenAccAddress: (0, cache_1.makeLRUCache)(api.findAssocTokenAccAddress, cacheKeyAssocTokenAccAddress, (0, cache_1.minutes)(1000)),
29
- getAccountInfo: (0, cache_1.makeLRUCache)(api.getAccountInfo, cacheKeyAddress, (0, cache_1.seconds)(30)),
30
- getMultipleAccounts: (0, cache_1.makeLRUCache)(api.getMultipleAccounts, cacheKeyAddresses, (0, cache_1.seconds)(30)),
31
- getAssocTokenAccMinNativeBalance: (0, cache_1.makeLRUCache)(api.getAssocTokenAccMinNativeBalance, cacheKeyEmpty, (0, cache_1.minutes)(5)),
32
- getBalance: (0, cache_1.makeLRUCache)(api.getBalance, cacheKeyAddress, (0, cache_1.seconds)(30)),
33
- getBalanceAndContext: (0, cache_1.makeLRUCache)(api.getBalanceAndContext, cacheKeyAddress, (0, cache_1.seconds)(30)),
34
- getParsedTransactions: (0, cache_1.makeLRUCache)(api.getParsedTransactions, cacheKeyTransactions, (0, cache_1.seconds)(30)),
35
- getParsedTokenAccountsByOwner: (0, cache_1.makeLRUCache)(api.getParsedTokenAccountsByOwner, cacheKeyAddress, (0, cache_1.minutes)(1)),
36
- getParsedToken2022AccountsByOwner: (0, cache_1.makeLRUCache)(api.getParsedToken2022AccountsByOwner, cacheKeyAddress, (0, cache_1.minutes)(1)),
37
- // cached by default in api
38
- getStakeAccountsByStakeAuth: api.getStakeAccountsByStakeAuth,
39
- getStakeAccountsByWithdrawAuth: api.getStakeAccountsByWithdrawAuth,
40
- getInflationReward: (0, cache_1.makeLRUCache)(api.getInflationReward, cacheKeyByArgs, (0, cache_1.minutes)(5)),
41
- getVoteAccounts: (0, cache_1.makeLRUCache)(api.getVoteAccounts, cacheKeyEmpty, (0, cache_1.minutes)(1)),
42
- getLatestBlockhash: (0, cache_1.makeLRUCache)(api.getLatestBlockhash, cacheKeyEmpty, (0, cache_1.seconds)(15)),
43
- getFeeForMessage: (0, cache_1.makeLRUCache)(api.getFeeForMessage, msg => msg.serialize().toString(), (0, cache_1.minutes)(1)),
44
- getSignaturesForAddress: (0, cache_1.makeLRUCache)(api.getSignaturesForAddress, cacheKeyByArgs, (0, cache_1.seconds)(30)),
45
- getMinimumBalanceForRentExemption: (0, cache_1.makeLRUCache)(api.getMinimumBalanceForRentExemption, cacheKeyMinimumBalanceForRentExemption, (0, cache_1.minutes)(5)),
46
- // do not cache
47
- sendRawTransaction: api.sendRawTransaction,
48
- getEpochInfo: (0, cache_1.makeLRUCache)(api.getEpochInfo, cacheKeyEmpty, (0, cache_1.minutes)(1)),
49
- getRecentPrioritizationFees: (0, cache_1.makeLRUCache)(api.getRecentPrioritizationFees, cacheKeyByArgs, (0, cache_1.seconds)(30)),
50
- getSimulationComputeUnits: (0, cache_1.makeLRUCache)(api.getSimulationComputeUnits, cacheKeyInstructions, (0, cache_1.seconds)(30)),
51
- config: api.config,
52
- connection: api.connection,
53
- };
54
- }
55
- exports.cached = cached;
56
- //# sourceMappingURL=cached.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cached.js","sourceRoot":"","sources":["../../src/network/cached.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { ChainAPI } from "./chain";
2
- export declare function queued(api: ChainAPI, delayBetweenRuns?: number): ChainAPI;
3
- //# sourceMappingURL=queued.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queued.d.ts","sourceRoot":"","sources":["../../src/network/queued.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,wBAAgB,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,SAAM,GAAG,QAAQ,CAqBtE"}
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.queued = void 0;
4
- const utils_1 = require("../utils");
5
- function queued(api, delayBetweenRuns = 100) {
6
- const q = (0, utils_1.asyncQueue)({
7
- delayBetweenRuns,
8
- });
9
- const proxy = new Proxy(api, {
10
- get(target, propKey, receiver) {
11
- const targetValue = Reflect.get(target, propKey, receiver);
12
- if (typeof targetValue === "function") {
13
- return function (...args) {
14
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
15
- // @ts-ignore: TS-2683
16
- return q.submit(() => targetValue.apply(this, args));
17
- };
18
- }
19
- else {
20
- return targetValue;
21
- }
22
- },
23
- });
24
- return proxy;
25
- }
26
- exports.queued = queued;
27
- //# sourceMappingURL=queued.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queued.js","sourceRoot":"","sources":["../../src/network/queued.ts"],"names":[],"mappings":";;;AAAA,oCAAsC;AAGtC,SAAgB,MAAM,CAAC,GAAa,EAAE,gBAAgB,GAAG,GAAG;IAC1D,MAAM,CAAC,GAAG,IAAA,kBAAU,EAAC;QACnB,gBAAgB;KACjB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAa,IAAI,KAAK,CAAC,GAAG,EAAE;QACrC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ;YAC3B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC3D,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;gBACtC,OAAO,UAAU,GAAG,IAAe;oBACjC,6DAA6D;oBAC7D,sBAAsB;oBACtB,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;gBACvD,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,WAAW,CAAC;YACrB,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AArBD,wBAqBC"}
@@ -1,3 +0,0 @@
1
- import { ChainAPI } from "./chain";
2
- export declare function traced(api: ChainAPI): ChainAPI;
3
- //# sourceMappingURL=traced.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traced.d.ts","sourceRoot":"","sources":["../../src/network/traced.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,wBAAgB,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CA0E9C"}
@@ -1,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.traced = void 0;
4
- const logs_1 = require("@ledgerhq/logs");
5
- const live_env_1 = require("@ledgerhq/live-env");
6
- function traced(api) {
7
- const state = {
8
- reqId: 0,
9
- reqStartTime: new Map(),
10
- };
11
- const startReqTrace = () => {
12
- state.reqId += 1;
13
- state.reqStartTime.set(state.reqId, Date.now());
14
- return state.reqId;
15
- };
16
- const stopReqTrace = (reqId) => {
17
- const reqStartTime = state.reqStartTime.get(reqId);
18
- if (reqStartTime === undefined) {
19
- (0, logs_1.log)("warn", `request start time not found for request id <${reqId}>`);
20
- return {
21
- duration: 0,
22
- };
23
- }
24
- state.reqStartTime.delete(reqId);
25
- return {
26
- duration: Date.now() - reqStartTime,
27
- };
28
- };
29
- const proxy = new Proxy(api, {
30
- get(target, propKey, receiver) {
31
- if (typeof propKey === "symbol") {
32
- throw new Error("symbols not supported");
33
- }
34
- const targetValue = Reflect.get(target, propKey, receiver);
35
- if (typeof targetValue === "function") {
36
- return function (...args) {
37
- const reqId = startReqTrace();
38
- (0, logs_1.log)("network", formatMsg({ reqId, msg: `calling <${propKey}>` }), {
39
- args,
40
- });
41
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
42
- // @ts-ignore: TS-2683
43
- const result = targetValue.apply(this, args);
44
- if (result instanceof Promise) {
45
- return result
46
- .then(answer => {
47
- const { duration } = stopReqTrace(reqId);
48
- (0, logs_1.log)("network-success", formatMsg({ reqId, msg: "success", duration }), (0, live_env_1.getEnv)("DEBUG_HTTP_RESPONSE") ? { answer } : undefined);
49
- return answer;
50
- })
51
- .catch(error => {
52
- const { duration } = stopReqTrace(reqId);
53
- (0, logs_1.log)("network-error", formatMsg({ reqId, msg: "error", duration }), { error });
54
- throw error;
55
- });
56
- }
57
- else {
58
- const { duration } = stopReqTrace(reqId);
59
- (0, logs_1.log)("info", formatMsg({ reqId, msg: "sync result", duration }), (0, live_env_1.getEnv)("DEBUG_HTTP_RESPONSE") ? { result } : undefined);
60
- return result;
61
- }
62
- };
63
- }
64
- else {
65
- return targetValue;
66
- }
67
- },
68
- });
69
- return proxy;
70
- }
71
- exports.traced = traced;
72
- function formatMsg({ reqId, msg, duration }) {
73
- const parts = [
74
- `solana req id: ${reqId}`,
75
- msg ?? "",
76
- duration === undefined ? "" : `took ${duration.toFixed(0)}ms`,
77
- ];
78
- return parts.join(", ");
79
- }
80
- //# sourceMappingURL=traced.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traced.js","sourceRoot":"","sources":["../../src/network/traced.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { ChainAPI } from "./chain";
2
- export declare function cached(api: ChainAPI): ChainAPI;
3
- //# sourceMappingURL=cached.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cached.d.ts","sourceRoot":"","sources":["../../src/network/cached.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAuBnC,wBAAgB,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAoF9C"}
@@ -1,49 +0,0 @@
1
- import { makeLRUCache, minutes, seconds } from "@ledgerhq/live-network/cache";
2
- import { TransactionMessage } from "@solana/web3.js";
3
- import hash from "object-hash";
4
- const cacheKeyAddress = (address) => address;
5
- const cacheKeyEmpty = () => "";
6
- const cacheKeyAssocTokenAccAddress = (owner, mint) => `${owner}:${mint}`;
7
- const cacheKeyMinimumBalanceForRentExemption = (dataLengt) => dataLengt.toString();
8
- const cacheKeyTransactions = (signatures) => hash([...signatures].sort());
9
- const cacheKeyAddresses = (addresses) => hash([...addresses].sort());
10
- const cacheKeyInstructions = (ixs, payer) => {
11
- return hash(new TransactionMessage({
12
- instructions: ixs,
13
- payerKey: payer,
14
- recentBlockhash: payer.toString(),
15
- })
16
- .compileToLegacyMessage()
17
- .serialize());
18
- };
19
- const cacheKeyByArgs = (...args) => hash(args);
20
- export function cached(api) {
21
- return {
22
- findAssocTokenAccAddress: makeLRUCache(api.findAssocTokenAccAddress, cacheKeyAssocTokenAccAddress, minutes(1000)),
23
- getAccountInfo: makeLRUCache(api.getAccountInfo, cacheKeyAddress, seconds(30)),
24
- getMultipleAccounts: makeLRUCache(api.getMultipleAccounts, cacheKeyAddresses, seconds(30)),
25
- getAssocTokenAccMinNativeBalance: makeLRUCache(api.getAssocTokenAccMinNativeBalance, cacheKeyEmpty, minutes(5)),
26
- getBalance: makeLRUCache(api.getBalance, cacheKeyAddress, seconds(30)),
27
- getBalanceAndContext: makeLRUCache(api.getBalanceAndContext, cacheKeyAddress, seconds(30)),
28
- getParsedTransactions: makeLRUCache(api.getParsedTransactions, cacheKeyTransactions, seconds(30)),
29
- getParsedTokenAccountsByOwner: makeLRUCache(api.getParsedTokenAccountsByOwner, cacheKeyAddress, minutes(1)),
30
- getParsedToken2022AccountsByOwner: makeLRUCache(api.getParsedToken2022AccountsByOwner, cacheKeyAddress, minutes(1)),
31
- // cached by default in api
32
- getStakeAccountsByStakeAuth: api.getStakeAccountsByStakeAuth,
33
- getStakeAccountsByWithdrawAuth: api.getStakeAccountsByWithdrawAuth,
34
- getInflationReward: makeLRUCache(api.getInflationReward, cacheKeyByArgs, minutes(5)),
35
- getVoteAccounts: makeLRUCache(api.getVoteAccounts, cacheKeyEmpty, minutes(1)),
36
- getLatestBlockhash: makeLRUCache(api.getLatestBlockhash, cacheKeyEmpty, seconds(15)),
37
- getFeeForMessage: makeLRUCache(api.getFeeForMessage, msg => msg.serialize().toString(), minutes(1)),
38
- getSignaturesForAddress: makeLRUCache(api.getSignaturesForAddress, cacheKeyByArgs, seconds(30)),
39
- getMinimumBalanceForRentExemption: makeLRUCache(api.getMinimumBalanceForRentExemption, cacheKeyMinimumBalanceForRentExemption, minutes(5)),
40
- // do not cache
41
- sendRawTransaction: api.sendRawTransaction,
42
- getEpochInfo: makeLRUCache(api.getEpochInfo, cacheKeyEmpty, minutes(1)),
43
- getRecentPrioritizationFees: makeLRUCache(api.getRecentPrioritizationFees, cacheKeyByArgs, seconds(30)),
44
- getSimulationComputeUnits: makeLRUCache(api.getSimulationComputeUnits, cacheKeyInstructions, seconds(30)),
45
- config: api.config,
46
- connection: api.connection,
47
- };
48
- }
49
- //# sourceMappingURL=cached.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cached.js","sourceRoot":"","sources":["../../src/network/cached.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { ChainAPI } from "./chain";
2
- export declare function queued(api: ChainAPI, delayBetweenRuns?: number): ChainAPI;
3
- //# sourceMappingURL=queued.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queued.d.ts","sourceRoot":"","sources":["../../src/network/queued.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,wBAAgB,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,SAAM,GAAG,QAAQ,CAqBtE"}
@@ -1,23 +0,0 @@
1
- import { asyncQueue } from "../utils";
2
- export function queued(api, delayBetweenRuns = 100) {
3
- const q = asyncQueue({
4
- delayBetweenRuns,
5
- });
6
- const proxy = new Proxy(api, {
7
- get(target, propKey, receiver) {
8
- const targetValue = Reflect.get(target, propKey, receiver);
9
- if (typeof targetValue === "function") {
10
- return function (...args) {
11
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
12
- // @ts-ignore: TS-2683
13
- return q.submit(() => targetValue.apply(this, args));
14
- };
15
- }
16
- else {
17
- return targetValue;
18
- }
19
- },
20
- });
21
- return proxy;
22
- }
23
- //# sourceMappingURL=queued.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queued.js","sourceRoot":"","sources":["../../src/network/queued.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,MAAM,UAAU,MAAM,CAAC,GAAa,EAAE,gBAAgB,GAAG,GAAG;IAC1D,MAAM,CAAC,GAAG,UAAU,CAAC;QACnB,gBAAgB;KACjB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAa,IAAI,KAAK,CAAC,GAAG,EAAE;QACrC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ;YAC3B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC3D,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;gBACtC,OAAO,UAAU,GAAG,IAAe;oBACjC,6DAA6D;oBAC7D,sBAAsB;oBACtB,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;gBACvD,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,WAAW,CAAC;YACrB,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,3 +0,0 @@
1
- import { ChainAPI } from "./chain";
2
- export declare function traced(api: ChainAPI): ChainAPI;
3
- //# sourceMappingURL=traced.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traced.d.ts","sourceRoot":"","sources":["../../src/network/traced.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,wBAAgB,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,CA0E9C"}
@@ -1,76 +0,0 @@
1
- import { log } from "@ledgerhq/logs";
2
- import { getEnv } from "@ledgerhq/live-env";
3
- export function traced(api) {
4
- const state = {
5
- reqId: 0,
6
- reqStartTime: new Map(),
7
- };
8
- const startReqTrace = () => {
9
- state.reqId += 1;
10
- state.reqStartTime.set(state.reqId, Date.now());
11
- return state.reqId;
12
- };
13
- const stopReqTrace = (reqId) => {
14
- const reqStartTime = state.reqStartTime.get(reqId);
15
- if (reqStartTime === undefined) {
16
- log("warn", `request start time not found for request id <${reqId}>`);
17
- return {
18
- duration: 0,
19
- };
20
- }
21
- state.reqStartTime.delete(reqId);
22
- return {
23
- duration: Date.now() - reqStartTime,
24
- };
25
- };
26
- const proxy = new Proxy(api, {
27
- get(target, propKey, receiver) {
28
- if (typeof propKey === "symbol") {
29
- throw new Error("symbols not supported");
30
- }
31
- const targetValue = Reflect.get(target, propKey, receiver);
32
- if (typeof targetValue === "function") {
33
- return function (...args) {
34
- const reqId = startReqTrace();
35
- log("network", formatMsg({ reqId, msg: `calling <${propKey}>` }), {
36
- args,
37
- });
38
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
39
- // @ts-ignore: TS-2683
40
- const result = targetValue.apply(this, args);
41
- if (result instanceof Promise) {
42
- return result
43
- .then(answer => {
44
- const { duration } = stopReqTrace(reqId);
45
- log("network-success", formatMsg({ reqId, msg: "success", duration }), getEnv("DEBUG_HTTP_RESPONSE") ? { answer } : undefined);
46
- return answer;
47
- })
48
- .catch(error => {
49
- const { duration } = stopReqTrace(reqId);
50
- log("network-error", formatMsg({ reqId, msg: "error", duration }), { error });
51
- throw error;
52
- });
53
- }
54
- else {
55
- const { duration } = stopReqTrace(reqId);
56
- log("info", formatMsg({ reqId, msg: "sync result", duration }), getEnv("DEBUG_HTTP_RESPONSE") ? { result } : undefined);
57
- return result;
58
- }
59
- };
60
- }
61
- else {
62
- return targetValue;
63
- }
64
- },
65
- });
66
- return proxy;
67
- }
68
- function formatMsg({ reqId, msg, duration }) {
69
- const parts = [
70
- `solana req id: ${reqId}`,
71
- msg ?? "",
72
- duration === undefined ? "" : `took ${duration.toFixed(0)}ms`,
73
- ];
74
- return parts.join(", ");
75
- }
76
- //# sourceMappingURL=traced.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traced.js","sourceRoot":"","sources":["../../src/network/traced.ts"],"names":[],"mappings":"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"}