@deserialize/swap-sdk 0.0.4 → 0.0.5
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/errors.d.ts +4 -0
- package/dist/errors.js +17 -0
- package/dist/errors.js.map +1 -0
- package/dist/swapSDK.d.ts +9 -1
- package/dist/swapSDK.js +16 -0
- package/dist/swapSDK.js.map +1 -1
- package/package.json +1 -1
- package/src/errors.ts +13 -0
- package/src/swapSDK.ts +21 -0
package/dist/errors.d.ts
ADDED
package/dist/errors.js
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.TooManyAccountsLockError = exports.handleSimulationError = void 0;
|
4
|
+
const handleSimulationError = (e) => {
|
5
|
+
if (e.toString().includes("TooManyAccountLocks")) {
|
6
|
+
throw new TooManyAccountsLockError("Too many account locks: consider using the option reduceToTwoHops in the options when getting the routes");
|
7
|
+
}
|
8
|
+
};
|
9
|
+
exports.handleSimulationError = handleSimulationError;
|
10
|
+
class TooManyAccountsLockError extends Error {
|
11
|
+
constructor(message) {
|
12
|
+
super(message);
|
13
|
+
this.name = "TooManyAccountsLockError";
|
14
|
+
}
|
15
|
+
}
|
16
|
+
exports.TooManyAccountsLockError = TooManyAccountsLockError;
|
17
|
+
//# sourceMappingURL=errors.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAO,MAAM,qBAAqB,GAAG,CAAC,CAAc,EAAE,EAAE;IACtD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,wBAAwB,CAChC,0GAA0G,CAC3G,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AANW,QAAA,qBAAqB,yBAMhC;AACF,MAAa,wBAAyB,SAAQ,KAAK;IACjD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AALD,4DAKC"}
|
package/dist/swapSDK.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import web3, { Keypair, PublicKey, TransactionInstruction, VersionedTransaction } from "@solana/web3.js";
|
1
|
+
import web3, { Connection, Keypair, PublicKey, TransactionInstruction, VersionedTransaction } from "@solana/web3.js";
|
2
2
|
/**
|
3
3
|
* Parameters to request a swap.
|
4
4
|
*/
|
@@ -164,6 +164,14 @@ export declare class SwapSDK {
|
|
164
164
|
* @returns A promise that resolves to the token's price (number).
|
165
165
|
*/
|
166
166
|
tokenPrice(tokenAddress: PublicKey): Promise<number>;
|
167
|
+
/**
|
168
|
+
* Simulates a transaction.
|
169
|
+
* @param connection The connection to use.
|
170
|
+
* @param transaction The transaction to simulate.
|
171
|
+
* @returns The simulation result.
|
172
|
+
* @throws If the simulation fails. with the simulation error
|
173
|
+
*/
|
174
|
+
simulateTransaction(connection: Connection, transaction: VersionedTransaction): Promise<web3.SimulatedTransactionResponse>;
|
167
175
|
/**
|
168
176
|
* Converts an API instruction (in plain JSON format) to a TransactionInstruction.
|
169
177
|
*
|
package/dist/swapSDK.js
CHANGED
@@ -40,6 +40,7 @@ exports.BASE_URL = exports.SwapSDK = void 0;
|
|
40
40
|
// SwapSDK.ts
|
41
41
|
const web3_js_1 = __importStar(require("@solana/web3.js"));
|
42
42
|
const bs58_1 = __importDefault(require("bs58"));
|
43
|
+
const errors_1 = require("./errors");
|
43
44
|
/**
|
44
45
|
* SwapSDK simplifies calling the swap endpoint as well as token-related endpoints.
|
45
46
|
*
|
@@ -209,6 +210,21 @@ class SwapSDK {
|
|
209
210
|
const data = await response.json();
|
210
211
|
return Number(data.price);
|
211
212
|
}
|
213
|
+
/**
|
214
|
+
* Simulates a transaction.
|
215
|
+
* @param connection The connection to use.
|
216
|
+
* @param transaction The transaction to simulate.
|
217
|
+
* @returns The simulation result.
|
218
|
+
* @throws If the simulation fails. with the simulation error
|
219
|
+
*/
|
220
|
+
async simulateTransaction(connection, transaction) {
|
221
|
+
const config = { commitment: "confirmed" };
|
222
|
+
const { value } = await connection.simulateTransaction(transaction, config);
|
223
|
+
if (value.err) {
|
224
|
+
(0, errors_1.handleSimulationError)(value.err);
|
225
|
+
}
|
226
|
+
return value;
|
227
|
+
}
|
212
228
|
/**
|
213
229
|
* Converts an API instruction (in plain JSON format) to a TransactionInstruction.
|
214
230
|
*
|
package/dist/swapSDK.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"swapSDK.js","sourceRoot":"","sources":["../src/swapSDK.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,aAAa;AACb,
|
1
|
+
{"version":3,"file":"swapSDK.js","sourceRoot":"","sources":["../src/swapSDK.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/errors.ts
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
export const handleSimulationError = (e: string | {}) => {
|
2
|
+
if (e.toString().includes("TooManyAccountLocks")) {
|
3
|
+
throw new TooManyAccountsLockError(
|
4
|
+
"Too many account locks: consider using the option reduceToTwoHops in the options when getting the routes"
|
5
|
+
);
|
6
|
+
}
|
7
|
+
};
|
8
|
+
export class TooManyAccountsLockError extends Error {
|
9
|
+
constructor(message: string) {
|
10
|
+
super(message);
|
11
|
+
this.name = "TooManyAccountsLockError";
|
12
|
+
}
|
13
|
+
}
|
package/src/swapSDK.ts
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
// SwapSDK.ts
|
2
2
|
import web3, {
|
3
|
+
Connection,
|
3
4
|
Keypair,
|
4
5
|
PublicKey,
|
6
|
+
SimulateTransactionConfig,
|
5
7
|
Transaction,
|
6
8
|
TransactionInstruction,
|
7
9
|
VersionedMessage,
|
8
10
|
VersionedTransaction,
|
9
11
|
} from "@solana/web3.js";
|
10
12
|
import base58 from "bs58";
|
13
|
+
import { handleSimulationError } from "./errors";
|
11
14
|
|
12
15
|
/**
|
13
16
|
* Parameters to request a swap.
|
@@ -303,6 +306,24 @@ export class SwapSDK {
|
|
303
306
|
const data = await response.json();
|
304
307
|
return Number(data.price);
|
305
308
|
}
|
309
|
+
/**
|
310
|
+
* Simulates a transaction.
|
311
|
+
* @param connection The connection to use.
|
312
|
+
* @param transaction The transaction to simulate.
|
313
|
+
* @returns The simulation result.
|
314
|
+
* @throws If the simulation fails. with the simulation error
|
315
|
+
*/
|
316
|
+
async simulateTransaction(
|
317
|
+
connection: Connection,
|
318
|
+
transaction: VersionedTransaction
|
319
|
+
) {
|
320
|
+
const config: SimulateTransactionConfig = { commitment: "confirmed" };
|
321
|
+
const { value } = await connection.simulateTransaction(transaction, config);
|
322
|
+
if (value.err) {
|
323
|
+
handleSimulationError(value.err);
|
324
|
+
}
|
325
|
+
return value;
|
326
|
+
}
|
306
327
|
|
307
328
|
/**
|
308
329
|
* Converts an API instruction (in plain JSON format) to a TransactionInstruction.
|