@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.
- package/dist/utils/jupiterUtils.d.ts +1 -3
- package/dist/utils/jupiterUtils.d.ts.map +1 -1
- package/dist/utils/jupiterUtils.js +8 -5
- package/dist/utils/solanaUtils.d.ts.map +1 -1
- package/dist/utils/solanaUtils.js +1 -11
- package/package.json +1 -1
- package/src/utils/jupiterUtils.ts +38 -28
- package/src/utils/solanaUtils.ts +2 -11
@@ -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
|
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
|
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
|
-
|
22
|
+
batch.map((x) => x.toString()).join(",") +
|
22
23
|
"&showExtraInfo=true")).json();
|
23
24
|
const result = res.data;
|
24
|
-
if (!result ||
|
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
|
-
|
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":"AACA,OAAO,EAIL,UAAU,EACV,SAAS,EAKT,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,MAAM,EACN,kBAAkB,EAClB,GAAG,EACH,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAgB9E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,SAAS,EACrB,KAAK,CAAC,EAAE,UAAU,GACjB,CAAC,UAAU,EAAE,GAAG,CAAC,CAWnB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,sBAAsB,GACzB,kBAAkB,CAMpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,kBAAkB,CAOpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,kBAAkB,CAOpB;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,kBAAkB,CAUpB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,SAAS,EACtB,QAAQ,EAAE,MAAM,GACf,kBAAkB,CASpB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,SAAS,EACvB,SAAS,EAAE,SAAS,GACnB,kBAAkB,CAKpB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,kBAAkB,CAKpB;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,EACjB,QAAQ,GAAE,OAAe,EACzB,UAAU,GAAE,OAAe,GAC1B,WAAW,CAEb;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,SAAS,EAAE,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,oBAAoB,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAmBpC;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,kBAAkB,EACtB,gBAAgB,CAAC,EAAE,MAAM,EACzB,gBAAgB,CAAC,EAAE,MAAM,sBAsB1B;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,kBAAkB,EAC/B,gBAAgB,CAAC,EAAE,MAAM,EACzB,gBAAgB,CAAC,EAAE,MAAM,sBA2D1B;AAuBD,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,WAAW,GAAE,MAAW,GACvB,OAAO,CAAC,GAAG,CAAC,CAMd;AAED,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,kBAAkB,EACtB,eAAe,EAAE,kBAAkB,EACnC,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAwC7B;
|
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
|
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
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
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
|
}
|
package/src/utils/solanaUtils.ts
CHANGED
@@ -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
|
}
|