@tevm/memory-client
Version:
MemoryClient for tevm is an in memory devnet for JavaScript
160 lines (155 loc) • 4.92 kB
JavaScript
;
var viem = require('viem');
var common = require('@tevm/common');
var decorators = require('@tevm/decorators');
var node = require('@tevm/node');
var actions = require('@tevm/actions');
// src/createClient.js
var createTevmTransport = (options = {}) => {
const tevmMap = /* @__PURE__ */ new Map();
return ({ timeout = 2e4, retryCount = 3, chain }) => {
const dynamicChain = chain && "ethjsCommon" in chain ? (
/** @type {import('@tevm/common').Common} */
chain
) : chain !== void 0 ? (
// if user passed in chain instead of common create a common from it with cancun and default eips
common.createCommon({ ...chain, hardfork: "prague", loggingLevel: "warn" })
) : void 0;
const common$1 = options.common ?? dynamicChain;
const id = common$1?.id ?? -1;
const tevm = tevmMap.get(id) ?? node.createTevmNode({ ...options, ...common$1 !== void 0 ? { common: common$1 } : {} }).extend(decorators.requestEip1193()).extend(decorators.tevmSend());
tevmMap.set(id, tevm);
return (
/** @type {any} */
viem.createTransport(
{
request: (
/** @type any */
tevm.request
),
type: "tevm",
name: (
/** options?.name ?? */
"Tevm transport"
),
key: (
/* options?.key ?? */
"tevm"
),
timeout,
retryCount,
retryDelay: (
/* options?.retryDelay ?? */
150
)
},
{ tevm }
)
);
};
};
var tevmViemActions = () => {
const extension = (client) => {
const { call, contract, deploy, mine, loadState, dumpState, setAccount, getAccount, ready, deal } = client.transport.tevm.extend(decorators.tevmActions());
return {
tevmReady: ready,
tevmCall: call,
tevmContract: contract,
tevmDeploy: deploy,
tevmMine: mine,
tevmLoadState: loadState,
tevmDumpState: dumpState,
tevmSetAccount: setAccount,
tevmGetAccount: getAccount,
tevmDeal: deal
};
};
return extension;
};
// src/createMemoryClient.js
var createMemoryClient = (options) => {
const common$1 = (() => {
if (options?.common !== void 0) {
return options.common;
}
if (options?.fork?.transport) {
return void 0;
}
return common.tevmDefault;
})();
const memoryClient = viem.createClient({
...options,
cacheTime: 0,
transport: createTevmTransport({
...options,
...common$1 !== void 0 ? { common: common$1 } : {}
}),
type: "tevm",
...common$1 !== void 0 ? { chain: common$1 } : {}
}).extend(tevmViemActions()).extend(viem.publicActions).extend(viem.walletActions).extend(viem.testActions({ mode: "anvil" }));
return (
/** @type {any} */
memoryClient
);
};
var tevmCall = async (client, params) => {
return actions.callHandler(client.transport.tevm)(params);
};
var tevmContract = async (client, params) => {
return actions.contractHandler(client.transport.tevm)(
/** @type {any}*/
params
);
};
var tevmDeploy = async (client, params) => {
return actions.deployHandler(client.transport.tevm)(params);
};
var tevmDumpState = async (client) => {
return actions.dumpStateHandler(client.transport.tevm)();
};
var tevmGetAccount = async (client, params) => {
return actions.getAccountHandler(client.transport.tevm)(params);
};
var tevmLoadState = async (client, params) => {
return actions.loadStateHandler(client.transport.tevm)(params);
};
var tevmMine = async (client, params) => {
return actions.mineHandler(client.transport.tevm)(params);
};
// src/tevmReady.js
var tevmReady = async (client) => {
return client.transport.tevm.ready();
};
var tevmSetAccount = async (client, params) => {
return actions.setAccountHandler(client.transport.tevm)(params);
};
Object.defineProperty(exports, "createClient", {
enumerable: true,
get: function () { return viem.createClient; }
});
Object.defineProperty(exports, "publicActions", {
enumerable: true,
get: function () { return viem.publicActions; }
});
Object.defineProperty(exports, "testActions", {
enumerable: true,
get: function () { return viem.testActions; }
});
Object.defineProperty(exports, "walletActions", {
enumerable: true,
get: function () { return viem.walletActions; }
});
exports.createMemoryClient = createMemoryClient;
exports.createTevmTransport = createTevmTransport;
exports.tevmCall = tevmCall;
exports.tevmContract = tevmContract;
exports.tevmDeploy = tevmDeploy;
exports.tevmDumpState = tevmDumpState;
exports.tevmGetAccount = tevmGetAccount;
exports.tevmLoadState = tevmLoadState;
exports.tevmMine = tevmMine;
exports.tevmReady = tevmReady;
exports.tevmSetAccount = tevmSetAccount;
exports.tevmViemActions = tevmViemActions;
//# sourceMappingURL=index.cjs.map
//# sourceMappingURL=index.cjs.map