@haven-fi/solauto-sdk 1.0.777 → 1.0.779

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.
@@ -1,7 +1,5 @@
1
1
  import { PublicKey, TransactionInstruction } from "@solana/web3.js";
2
2
  import { Instruction } from "@jup-ag/api";
3
3
  export declare function jupIxToSolanaIx(instruction: Instruction): TransactionInstruction;
4
- export declare function getJupPriceData(mints: PublicKey[]): Promise<{
5
- [key: string]: any;
6
- }>;
4
+ export declare function getJupPriceData(mints: PublicKey[]): Promise<any>;
7
5
  //# sourceMappingURL=jupiterUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jupiterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jupiterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,wBAAgB,eAAe,CAC7B,WAAW,EAAE,WAAW,GACvB,sBAAsB,CAUxB;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE;;GA4BvD"}
1
+ {"version":3,"file":"jupiterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jupiterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,wBAAgB,eAAe,CAC7B,WAAW,EAAE,WAAW,GACvB,sBAAsB,CAUxB;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,gBAsCvD"}
@@ -16,18 +16,21 @@ function jupIxToSolanaIx(instruction) {
16
16
  });
17
17
  }
18
18
  async function getJupPriceData(mints) {
19
- const data = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => {
19
+ const batches = (0, generalUtils_1.getBatches)(mints, 5); // batches is now PublicKey[][]
20
+ const results = await Promise.all(batches.map((batch) => (0, generalUtils_1.retryWithExponentialBackoff)(async () => {
20
21
  const res = await (await fetch("https://api.jup.ag/price/v2?ids=" +
21
- mints.map((x) => x.toString()).join(",") +
22
+ batch.map((x) => x.toString()).join(",") +
22
23
  "&showExtraInfo=true")).json();
23
24
  const result = res.data;
24
- if (!result || result === null || typeof result !== "object") {
25
+ if (!result || typeof result !== "object") {
25
26
  throw new Error("Failed to get token prices using Jupiter");
26
27
  }
27
28
  const trueData = Object.entries(result).reduce((acc, [key, val]) => !val?.extraInfo?.quotedPrice?.sellAt
28
29
  ? { ...acc, [key]: { ...val, price: "0" } }
29
30
  : { ...acc, [key]: val }, {});
30
31
  return trueData;
31
- }, 3);
32
- return data;
32
+ }, 3)));
33
+ // Merge all batch results into one object
34
+ const mergedResults = Object.assign({}, ...results);
35
+ return mergedResults;
33
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"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"}
@@ -234,20 +234,10 @@ async function spamSendTransactionUntilConfirmed(connection, transaction, blockh
234
234
  }
235
235
  catch (e) { }
236
236
  };
237
- let i = 0;
238
- while (i < 5) {
239
- await sendTx();
240
- i++;
241
- if (!transactionSignature) {
242
- await new Promise((resolve) => setTimeout(resolve, 1000));
243
- }
244
- else {
245
- break;
246
- }
247
- }
248
237
  const sendIntervalId = setInterval(async () => {
249
238
  await sendTx();
250
239
  }, spamInterval);
240
+ await new Promise((resolve) => setTimeout(resolve, spamInterval * 4));
251
241
  if (!transactionSignature) {
252
242
  throw new Error("No transaction signature found");
253
243
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.777",
3
+ "version": "1.0.779",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "description": "Typescript SDK for the Solauto program on the Solana blockchain",
@@ -1,6 +1,6 @@
1
1
  import { PublicKey, TransactionInstruction } from "@solana/web3.js";
2
2
  import { Instruction } from "@jup-ag/api";
3
- import { retryWithExponentialBackoff } from "./generalUtils";
3
+ import { getBatches, retryWithExponentialBackoff } from "./generalUtils";
4
4
 
5
5
  export function jupIxToSolanaIx(
6
6
  instruction: Instruction
@@ -17,31 +17,41 @@ export function jupIxToSolanaIx(
17
17
  }
18
18
 
19
19
  export async function getJupPriceData(mints: PublicKey[]) {
20
- const data = await retryWithExponentialBackoff(async () => {
21
- const res = await (
22
- await fetch(
23
- "https://api.jup.ag/price/v2?ids=" +
24
- mints.map((x) => x.toString()).join(",") +
25
- "&showExtraInfo=true"
26
- )
27
- ).json();
28
- const result = res.data;
29
- if (!result || result === null || typeof result !== "object") {
30
- throw new Error("Failed to get token prices using Jupiter");
31
- }
32
-
33
- const trueData: { [key: string]: any } = Object.entries(
34
- result as { [key: string]: any }
35
- ).reduce(
36
- (acc, [key, val]) =>
37
- !val?.extraInfo?.quotedPrice?.sellAt
38
- ? { ...acc, [key]: { ...val, price: "0" } }
39
- : { ...acc, [key]: val },
40
- {}
41
- );
42
-
43
- return trueData;
44
- }, 3);
45
-
46
- return data;
20
+ const batches = getBatches(mints, 5); // batches is now PublicKey[][]
21
+
22
+ const results = await Promise.all(
23
+ batches.map((batch) =>
24
+ retryWithExponentialBackoff(async () => {
25
+ const res = await (
26
+ await fetch(
27
+ "https://api.jup.ag/price/v2?ids=" +
28
+ batch.map((x) => x.toString()).join(",") +
29
+ "&showExtraInfo=true"
30
+ )
31
+ ).json();
32
+
33
+ const result = res.data;
34
+ if (!result || typeof result !== "object") {
35
+ throw new Error("Failed to get token prices using Jupiter");
36
+ }
37
+
38
+ const trueData: { [key: string]: any } = Object.entries(
39
+ result as { [key: string]: any }
40
+ ).reduce(
41
+ (acc, [key, val]) =>
42
+ !val?.extraInfo?.quotedPrice?.sellAt
43
+ ? { ...acc, [key]: { ...val, price: "0" } }
44
+ : { ...acc, [key]: val },
45
+ {}
46
+ );
47
+
48
+ return trueData;
49
+ }, 3)
50
+ )
51
+ );
52
+
53
+ // Merge all batch results into one object
54
+ const mergedResults = Object.assign({}, ...results);
55
+
56
+ return mergedResults;
47
57
  }
@@ -403,21 +403,12 @@ async function spamSendTransactionUntilConfirmed(
403
403
  } catch (e) {}
404
404
  };
405
405
 
406
- let i = 0;
407
- while (i < 5) {
408
- await sendTx();
409
- i++;
410
- if (!transactionSignature) {
411
- await new Promise((resolve) => setTimeout(resolve, 1000));
412
- } else {
413
- break;
414
- }
415
- }
416
-
417
406
  const sendIntervalId = setInterval(async () => {
418
407
  await sendTx();
419
408
  }, spamInterval);
420
409
 
410
+ await new Promise((resolve) => setTimeout(resolve, spamInterval * 4));
411
+
421
412
  if (!transactionSignature) {
422
413
  throw new Error("No transaction signature found");
423
414
  }