@hirosystems/clarinet-sdk
Version:
A SDK to interact with Clarity Smart Contracts in node.js
30 lines • 1.22 kB
JavaScript
import { SDKOptions } from "@hirosystems/clarinet-sdk-wasm";
export { tx, } from "../../common/src/sdkProxyHelpers.js";
import { vfs } from "./vfs.js";
import { getSessionProxy } from "./sdkProxy.js";
const wasmModule = import("@hirosystems/clarinet-sdk-wasm");
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#use_within_json
// @ts-ignore
BigInt.prototype.toJSON = function () {
return this.toString();
};
export async function getSDK(options) {
const module = await wasmModule;
let sdkOptions = new SDKOptions(!!options?.trackCosts, !!options?.trackCoverage, !!options?.trackPerformance);
const simnet = new Proxy(new module.SDK(vfs, sdkOptions), getSessionProxy());
return simnet;
}
// load wasm only once and memoize it
function memoizedInit() {
let simnet = null;
return async (manifestPath = "./Clarinet.toml", noCache = false, options) => {
if (noCache || !simnet) {
simnet = await getSDK(options);
}
// start a new simnet session
await simnet.initSession(process.cwd(), manifestPath);
return simnet;
};
}
export const initSimnet = memoizedInit();
//# sourceMappingURL=index.js.map