@rocketh/read-execute 0.18.3 → 0.19.0
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/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -65
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +35 -75
package/dist/index.d.ts
CHANGED
|
@@ -14,11 +14,11 @@ export type ReadFunctionByName = <TAbi extends Abi, TFunctionName extends Contra
|
|
|
14
14
|
export type TxFunction = (tx: TransactionData, options?: {
|
|
15
15
|
message?: string;
|
|
16
16
|
}) => Promise<EIP1193DATA>;
|
|
17
|
-
export type ExecutionArgs<TAbi extends Abi, TFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>, TArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName>> = Omit<WriteContractParameters<TAbi, TFunctionName, TArgs>, 'address' | 'abi' | 'account' | '
|
|
17
|
+
export type ExecutionArgs<TAbi extends Abi, TFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>, TArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName>> = Omit<WriteContractParameters<TAbi, TFunctionName, TArgs>, 'address' | 'abi' | 'account' | 'chain'> & {
|
|
18
18
|
account: string;
|
|
19
19
|
message?: string;
|
|
20
20
|
};
|
|
21
|
-
export type ReadingArgs<TAbi extends Abi, TFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>, TArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName>> = Omit<ReadContractParameters<TAbi, TFunctionName, TArgs>, 'address' | 'abi' | 'account' | '
|
|
21
|
+
export type ReadingArgs<TAbi extends Abi, TFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>, TArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName>> = Omit<ReadContractParameters<TAbi, TFunctionName, TArgs>, 'address' | 'abi' | 'account' | 'blockOverrides' | 'factory' | 'factoryData' | 'stateOverride'> & {
|
|
22
22
|
account?: string;
|
|
23
23
|
};
|
|
24
24
|
export declare function execute(env: Environment): <TAbi extends Abi, TFunctionName extends ContractFunctionName<TAbi, 'nonpayable' | 'payable'>, TArgs extends ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName> = ContractFunctionArgs<TAbi, 'nonpayable' | 'payable', TFunctionName>>(deployment: MinimalDeployment<TAbi>, args: ExecutionArgs<TAbi, TFunctionName, TArgs>) => Promise<EIP1193TransactionReceipt>;
|
|
@@ -27,5 +27,5 @@ export declare function read(env: Environment): <TAbi extends Abi, TFunctionName
|
|
|
27
27
|
export declare function readByName(env: Environment): <TAbi extends Abi, TFunctionName extends ContractFunctionName<TAbi, 'pure' | 'view'>, TArgs extends ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName> = ContractFunctionArgs<TAbi, 'pure' | 'view', TFunctionName>>(name: string, args: ReadingArgs<TAbi, TFunctionName, TArgs>) => Promise<DecodeFunctionResultReturnType<TAbi, TFunctionName>>;
|
|
28
28
|
export declare function tx(env: Environment): (txData: TransactionData, options?: {
|
|
29
29
|
message?: string;
|
|
30
|
-
}) => Promise<
|
|
30
|
+
}) => Promise<EIP1193TransactionReceipt>;
|
|
31
31
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,SAAS,CAAC;AAC5B,OAAO,EAAC,WAAW,EAA0B,yBAAyB,EAAC,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,EAAC,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,SAAS,CAAC;AAC5B,OAAO,EAAC,WAAW,EAA0B,yBAAyB,EAAC,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,EAAC,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AACpG,OAAO,KAAK,EACX,oBAAoB,EACpB,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,EACvB,MAAM,MAAM,CAAC;AAEd,YAAY,EACX,oBAAoB,EACpB,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,GACvB,CAAC;AAIF,YAAY,EAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAC,CAAC;AAI9E,KAAK,eAAe,GAAG,IAAI,CAAC,yBAAyB,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAAC;AAE7F,MAAM,MAAM,eAAe,GAAG,CAC7B,IAAI,SAAS,GAAG,EAChB,aAAa,SAAS,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC,EAC1E,KAAK,SAAS,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE,aAAa,CAAC,GAAG,oBAAoB,CACvG,IAAI,EACJ,YAAY,GAAG,SAAS,EACxB,aAAa,CACb,EAED,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,EACnC,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,KAC3C,OAAO,CAAC,WAAW,CAAC,CAAC;AAE1B,MAAM,MAAM,qBAAqB,GAAG,CACnC,IAAI,SAAS,GAAG,EAChB,aAAa,SAAS,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC,EAC1E,KAAK,SAAS,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE,aAAa,CAAC,GAAG,oBAAoB,CACvG,IAAI,EACJ,YAAY,GAAG,SAAS,EACxB,aAAa,CACb,EAED,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,KAC3C,OAAO,CAAC,WAAW,CAAC,CAAC;AAE1B,MAAM,MAAM,YAAY,GAAG,CAC1B,IAAI,SAAS,GAAG,EAChB,aAAa,SAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,EACjE,KAAK,SAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,aAAa,CAAC,GAAG,oBAAoB,CAC9F,IAAI,EACJ,MAAM,GAAG,MAAM,EACf,aAAa,CACb,EAED,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,EACnC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,KACzC,OAAO,CAAC,8BAA8B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;AAElE,MAAM,MAAM,kBAAkB,GAAG,CAChC,IAAI,SAAS,GAAG,EAChB,aAAa,SAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,EACjE,KAAK,SAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,aAAa,CAAC,GAAG,oBAAoB,CAC9F,IAAI,EACJ,MAAM,GAAG,MAAM,EACf,aAAa,CACb,EAED,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,KACzC,OAAO,CAAC,8BAA8B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;AAElE,MAAM,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAErG,MAAM,MAAM,aAAa,CACxB,IAAI,SAAS,GAAG,EAChB,aAAa,SAAS,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC,EAC1E,KAAK,SAAS,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE,aAAa,CAAC,GAAG,oBAAoB,CACvG,IAAI,EACJ,YAAY,GAAG,SAAS,EACxB,aAAa,CACb,IACE,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG;IACxG,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,CACtB,IAAI,SAAS,GAAG,EAChB,aAAa,SAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,EACjE,KAAK,SAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,aAAa,CAAC,GAAG,oBAAoB,CAC9F,IAAI,EACJ,MAAM,GAAG,MAAM,EACf,aAAa,CACb,IACE,IAAI,CACP,sBAAsB,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,EAClD,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,GAAG,aAAa,GAAG,eAAe,CAC9F,GAAG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,OAAO,CACtB,GAAG,EAAE,WAAW,GACd,CACF,IAAI,SAAS,GAAG,EAChB,aAAa,SAAS,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC,EAC1E,KAAK,SAAS,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE,aAAa,CAAC,GAAG,oBAAoB,CACvG,IAAI,EACJ,YAAY,GAAG,SAAS,EACxB,aAAa,CACb,EAED,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,EACnC,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,KAC3C,OAAO,CAAC,yBAAyB,CAAC,CAmDtC;AAED,wBAAgB,aAAa,CAC5B,GAAG,EAAE,WAAW,GACd,CACF,IAAI,SAAS,GAAG,EAChB,aAAa,SAAS,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAAC,EAC1E,KAAK,SAAS,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE,aAAa,CAAC,GAAG,oBAAoB,CACvG,IAAI,EACJ,YAAY,GAAG,SAAS,EACxB,aAAa,CACb,EAED,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,KAC3C,OAAO,CAAC,yBAAyB,CAAC,CAoBtC;AAED,wBAAgB,IAAI,CACnB,GAAG,EAAE,WAAW,GACd,CACF,IAAI,SAAS,GAAG,EAChB,aAAa,SAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,EACjE,KAAK,SAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,aAAa,CAAC,GAAG,oBAAoB,CAC9F,IAAI,EACJ,MAAM,GAAG,MAAM,EACf,aAAa,CACb,EAED,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,EACnC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,KACzC,OAAO,CAAC,8BAA8B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAmDhE;AAED,wBAAgB,UAAU,CACzB,GAAG,EAAE,WAAW,GACd,CACF,IAAI,SAAS,GAAG,EAChB,aAAa,SAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,EACjE,KAAK,SAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,aAAa,CAAC,GAAG,oBAAoB,CAC9F,IAAI,EACJ,MAAM,GAAG,MAAM,EACf,aAAa,CACb,EAED,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,KACzC,OAAO,CAAC,8BAA8B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAoBhE;AAED,wBAAgB,EAAE,CACjB,GAAG,EAAE,WAAW,GACd,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAC,KAAK,OAAO,CAAC,yBAAyB,CAAC,CAgC/F"}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { resolveAccount, resolveAccountOrUndefined } from '@rocketh/core';
|
|
2
1
|
import { decodeFunctionResult, encodeFunctionData } from 'viem';
|
|
3
2
|
import { logs } from 'named-logs';
|
|
4
3
|
const logger = logs('@rocketh/read-execute');
|
|
5
4
|
export function execute(env) {
|
|
6
5
|
return async (deployment, args) => {
|
|
7
6
|
const { account, ...viemArgs } = args;
|
|
8
|
-
const address = resolveAccount(account
|
|
7
|
+
const address = env.resolveAccount(account);
|
|
9
8
|
const artifactToUse = deployment;
|
|
10
9
|
const abi = artifactToUse.abi;
|
|
11
10
|
const calldata = encodeFunctionData({
|
|
@@ -13,10 +12,6 @@ export function execute(env) {
|
|
|
13
12
|
functionName: viemArgs.functionName,
|
|
14
13
|
args: viemArgs.args,
|
|
15
14
|
});
|
|
16
|
-
const signer = env.addressSigners[address];
|
|
17
|
-
if (!signer) {
|
|
18
|
-
throw new Error(`cannot get signer for ${address}`);
|
|
19
|
-
}
|
|
20
15
|
const txParam = {
|
|
21
16
|
to: deployment.address,
|
|
22
17
|
type: '0x2',
|
|
@@ -24,44 +19,20 @@ export function execute(env) {
|
|
|
24
19
|
chainId: `0x${env.network.chain.id.toString(16)}`,
|
|
25
20
|
data: calldata,
|
|
26
21
|
gas: viemArgs.gas && `0x${viemArgs.gas.toString(16)}`,
|
|
27
|
-
// gasPrice: viemArgs.gasPrice && `0x${viemArgs.gasPrice.toString(16)}` as `0x${string}`,
|
|
28
22
|
maxFeePerGas: viemArgs.maxFeePerGas ? `0x${viemArgs.maxFeePerGas.toString(16)}` : undefined,
|
|
29
23
|
maxPriorityFeePerGas: viemArgs.maxPriorityFeePerGas
|
|
30
24
|
? `0x${viemArgs.maxPriorityFeePerGas.toString(16)}`
|
|
31
25
|
: undefined,
|
|
32
|
-
accessList: viemArgs.accessList, // TODO
|
|
33
|
-
|
|
26
|
+
accessList: viemArgs.accessList, // TODO type
|
|
27
|
+
nonce: viemArgs.nonce ? `0x${viemArgs.nonce.toString(16)}` : undefined,
|
|
34
28
|
};
|
|
35
29
|
if (viemArgs.value) {
|
|
36
30
|
txParam.value = `0x${viemArgs.value?.toString(16)}`;
|
|
37
31
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
params: [txParam], // TODO fix eip-1193 ?,,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
const rawTx = await signer.signer.request({
|
|
47
|
-
method: 'eth_signTransaction',
|
|
48
|
-
params: [txParam],
|
|
49
|
-
});
|
|
50
|
-
txHash = await env.network.provider.request({
|
|
51
|
-
method: 'eth_sendRawTransaction',
|
|
52
|
-
params: [rawTx],
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
if (env.tags['auto-mine']) {
|
|
56
|
-
await env.network.provider.request({ method: 'evm_mine', params: [] });
|
|
57
|
-
}
|
|
58
|
-
const pendingExecution = {
|
|
59
|
-
type: 'execution',
|
|
60
|
-
transaction: { hash: txHash, origin: address },
|
|
61
|
-
// description, // TODO
|
|
62
|
-
// TODO we should have the nonce, except for wallet like metamask where it is not sure you get the nonce you start with
|
|
63
|
-
};
|
|
64
|
-
const receipt = await env.savePendingExecution(pendingExecution, args.message);
|
|
32
|
+
const receipt = await env.broadcastExecution({
|
|
33
|
+
type: 'object',
|
|
34
|
+
data: txParam,
|
|
35
|
+
}, { message: args.message });
|
|
65
36
|
return receipt;
|
|
66
37
|
};
|
|
67
38
|
}
|
|
@@ -77,7 +48,7 @@ export function executeByName(env) {
|
|
|
77
48
|
export function read(env) {
|
|
78
49
|
return async (deployment, args) => {
|
|
79
50
|
const { account, ...viemArgs } = args;
|
|
80
|
-
const address = account ? resolveAccountOrUndefined(account
|
|
51
|
+
const address = account ? env.resolveAccountOrUndefined(account) : undefined;
|
|
81
52
|
const artifactToUse = deployment;
|
|
82
53
|
const abi = artifactToUse.abi;
|
|
83
54
|
const calldata = encodeFunctionData({
|
|
@@ -92,9 +63,13 @@ export function read(env) {
|
|
|
92
63
|
if (address) {
|
|
93
64
|
callObject.from = address;
|
|
94
65
|
}
|
|
66
|
+
if (viemArgs.authorizationList) {
|
|
67
|
+
callObject.authorizationList = viemArgs.authorizationList;
|
|
68
|
+
}
|
|
69
|
+
const blockNumberOrTag = viemArgs.blockNumber || viemArgs.blockTag || 'latest';
|
|
95
70
|
const result = (await env.network.provider.request({
|
|
96
71
|
method: 'eth_call',
|
|
97
|
-
params: [callObject,
|
|
72
|
+
params: [callObject, blockNumberOrTag], // TODO fix eip-1193 package
|
|
98
73
|
}));
|
|
99
74
|
const parsed = decodeFunctionResult({
|
|
100
75
|
abi,
|
|
@@ -117,8 +92,7 @@ export function readByName(env) {
|
|
|
117
92
|
export function tx(env) {
|
|
118
93
|
return async (txData, options) => {
|
|
119
94
|
const { account, ...viemArgs } = txData;
|
|
120
|
-
const address = resolveAccount(account
|
|
121
|
-
const signer = env.addressSigners[address];
|
|
95
|
+
const address = env.resolveAccount(account);
|
|
122
96
|
const txParam = {
|
|
123
97
|
type: '0x2',
|
|
124
98
|
to: txData.to || undefined,
|
|
@@ -136,31 +110,11 @@ export function tx(env) {
|
|
|
136
110
|
if (viemArgs.value) {
|
|
137
111
|
txParam.value = `0x${viemArgs.value?.toString(16)}`;
|
|
138
112
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
const rawTx = await signer.signer.request({
|
|
148
|
-
method: 'eth_signTransaction',
|
|
149
|
-
params: [txParam],
|
|
150
|
-
});
|
|
151
|
-
txHash = await env.network.provider.request({
|
|
152
|
-
method: 'eth_sendRawTransaction',
|
|
153
|
-
params: [rawTx],
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
const pendingExecution = {
|
|
157
|
-
type: 'execution',
|
|
158
|
-
transaction: { hash: txHash, origin: address },
|
|
159
|
-
// description, // TODO
|
|
160
|
-
// TODO we should have the nonce, except for wallet like metamask where it is not sure you get the nonce you start with
|
|
161
|
-
};
|
|
162
|
-
await env.savePendingExecution(pendingExecution, options?.message);
|
|
163
|
-
return txHash;
|
|
113
|
+
const receipt = await env.broadcastExecution({
|
|
114
|
+
type: 'object',
|
|
115
|
+
data: txParam,
|
|
116
|
+
}, options);
|
|
117
|
+
return receipt;
|
|
164
118
|
};
|
|
165
119
|
}
|
|
166
120
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rocketh/read-execute",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"description": "provide read abd execute functions for rocketh",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"rocketh",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"eip-1193": "^0.6.5",
|
|
44
44
|
"named-logs": "^0.4.1",
|
|
45
45
|
"viem": "^2.45.1",
|
|
46
|
-
"@rocketh/core": "0.
|
|
46
|
+
"@rocketh/core": "0.19.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"as-soon": "^0.1.5",
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {Abi} from 'abitype';
|
|
2
2
|
import {EIP1193DATA, EIP1193TransactionData, EIP1193TransactionReceipt} from 'eip-1193';
|
|
3
3
|
import type {Artifact, Environment, MinimalDeployment, PendingExecution} from '@rocketh/core/types';
|
|
4
|
-
import {resolveAccount, resolveAccountOrUndefined} from '@rocketh/core';
|
|
5
4
|
import type {
|
|
6
5
|
ContractFunctionArgs,
|
|
7
6
|
ContractFunctionName,
|
|
@@ -90,7 +89,7 @@ export type ExecutionArgs<
|
|
|
90
89
|
'nonpayable' | 'payable',
|
|
91
90
|
TFunctionName
|
|
92
91
|
>,
|
|
93
|
-
> = Omit<WriteContractParameters<TAbi, TFunctionName, TArgs>, 'address' | 'abi' | 'account' | '
|
|
92
|
+
> = Omit<WriteContractParameters<TAbi, TFunctionName, TArgs>, 'address' | 'abi' | 'account' | 'chain'> & {
|
|
94
93
|
account: string;
|
|
95
94
|
message?: string;
|
|
96
95
|
};
|
|
@@ -103,7 +102,10 @@ export type ReadingArgs<
|
|
|
103
102
|
'pure' | 'view',
|
|
104
103
|
TFunctionName
|
|
105
104
|
>,
|
|
106
|
-
> = Omit<
|
|
105
|
+
> = Omit<
|
|
106
|
+
ReadContractParameters<TAbi, TFunctionName, TArgs>,
|
|
107
|
+
'address' | 'abi' | 'account' | 'blockOverrides' | 'factory' | 'factoryData' | 'stateOverride'
|
|
108
|
+
> & {
|
|
107
109
|
account?: string;
|
|
108
110
|
};
|
|
109
111
|
|
|
@@ -134,7 +136,7 @@ export function execute(
|
|
|
134
136
|
args: ExecutionArgs<TAbi, TFunctionName, TArgs>,
|
|
135
137
|
) => {
|
|
136
138
|
const {account, ...viemArgs} = args;
|
|
137
|
-
const address = resolveAccount(account
|
|
139
|
+
const address = env.resolveAccount(account);
|
|
138
140
|
|
|
139
141
|
const artifactToUse = deployment as unknown as Artifact<TAbi>;
|
|
140
142
|
const abi = artifactToUse.abi;
|
|
@@ -144,12 +146,6 @@ export function execute(
|
|
|
144
146
|
args: viemArgs.args,
|
|
145
147
|
} as any);
|
|
146
148
|
|
|
147
|
-
const signer = env.addressSigners[address];
|
|
148
|
-
|
|
149
|
-
if (!signer) {
|
|
150
|
-
throw new Error(`cannot get signer for ${address}`);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
149
|
const txParam: EIP1193TransactionData = {
|
|
154
150
|
to: deployment.address,
|
|
155
151
|
type: '0x2',
|
|
@@ -157,47 +153,24 @@ export function execute(
|
|
|
157
153
|
chainId: `0x${env.network.chain.id.toString(16)}` as `0x${string}`,
|
|
158
154
|
data: calldata,
|
|
159
155
|
gas: viemArgs.gas && (`0x${viemArgs.gas.toString(16)}` as `0x${string}`),
|
|
160
|
-
// gasPrice: viemArgs.gasPrice && `0x${viemArgs.gasPrice.toString(16)}` as `0x${string}`,
|
|
161
156
|
maxFeePerGas: viemArgs.maxFeePerGas ? (`0x${viemArgs.maxFeePerGas.toString(16)}` as `0x${string}`) : undefined,
|
|
162
157
|
maxPriorityFeePerGas: viemArgs.maxPriorityFeePerGas
|
|
163
158
|
? (`0x${viemArgs.maxPriorityFeePerGas.toString(16)}` as `0x${string}`)
|
|
164
159
|
: undefined,
|
|
165
|
-
accessList: viemArgs.accessList as any, // TODO
|
|
166
|
-
|
|
160
|
+
accessList: viemArgs.accessList as any, // TODO type
|
|
161
|
+
nonce: viemArgs.nonce ? (`0x${viemArgs.nonce.toString(16)}` as `0x${string}`) : undefined,
|
|
167
162
|
};
|
|
168
163
|
if (viemArgs.value) {
|
|
169
164
|
txParam.value = `0x${viemArgs.value?.toString(16)}` as `0x${string}`;
|
|
170
165
|
}
|
|
171
166
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
const rawTx = await signer.signer.request({
|
|
180
|
-
method: 'eth_signTransaction',
|
|
181
|
-
params: [txParam],
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
txHash = await env.network.provider.request({
|
|
185
|
-
method: 'eth_sendRawTransaction',
|
|
186
|
-
params: [rawTx],
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
if (env.tags['auto-mine']) {
|
|
191
|
-
await (env.network.provider as any).request({method: 'evm_mine', params: []});
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
const pendingExecution: PendingExecution = {
|
|
195
|
-
type: 'execution',
|
|
196
|
-
transaction: {hash: txHash, origin: address},
|
|
197
|
-
// description, // TODO
|
|
198
|
-
// TODO we should have the nonce, except for wallet like metamask where it is not sure you get the nonce you start with
|
|
199
|
-
};
|
|
200
|
-
const receipt = await env.savePendingExecution(pendingExecution, args.message);
|
|
167
|
+
const receipt = await env.broadcastExecution(
|
|
168
|
+
{
|
|
169
|
+
type: 'object',
|
|
170
|
+
data: txParam,
|
|
171
|
+
},
|
|
172
|
+
{message: args.message},
|
|
173
|
+
);
|
|
201
174
|
return receipt;
|
|
202
175
|
};
|
|
203
176
|
}
|
|
@@ -264,7 +237,7 @@ export function read(
|
|
|
264
237
|
args: ReadingArgs<TAbi, TFunctionName, TArgs>,
|
|
265
238
|
) => {
|
|
266
239
|
const {account, ...viemArgs} = args;
|
|
267
|
-
const address = account ? resolveAccountOrUndefined(account
|
|
240
|
+
const address = account ? env.resolveAccountOrUndefined(account) : undefined;
|
|
268
241
|
|
|
269
242
|
const artifactToUse = deployment as unknown as Artifact<TAbi>;
|
|
270
243
|
const abi = artifactToUse.abi;
|
|
@@ -274,17 +247,22 @@ export function read(
|
|
|
274
247
|
args: viemArgs.args,
|
|
275
248
|
} as any);
|
|
276
249
|
|
|
277
|
-
const callObject: Record<string,
|
|
250
|
+
const callObject: Record<string, any> = {
|
|
278
251
|
to: deployment.address,
|
|
279
252
|
data: calldata,
|
|
280
253
|
};
|
|
281
254
|
if (address) {
|
|
282
255
|
callObject.from = address;
|
|
283
256
|
}
|
|
257
|
+
if (viemArgs.authorizationList) {
|
|
258
|
+
callObject.authorizationList = viemArgs.authorizationList;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
const blockNumberOrTag = viemArgs.blockNumber || viemArgs.blockTag || 'latest';
|
|
284
262
|
|
|
285
263
|
const result: `0x${string}` = (await env.network.provider.request({
|
|
286
264
|
method: 'eth_call',
|
|
287
|
-
params: [callObject,
|
|
265
|
+
params: [callObject, blockNumberOrTag] as any, // TODO fix eip-1193 package
|
|
288
266
|
})) as `0x${string}`;
|
|
289
267
|
|
|
290
268
|
const parsed = decodeFunctionResult<TAbi, TFunctionName>({
|
|
@@ -333,12 +311,12 @@ export function readByName(
|
|
|
333
311
|
};
|
|
334
312
|
}
|
|
335
313
|
|
|
336
|
-
export function tx(
|
|
314
|
+
export function tx(
|
|
315
|
+
env: Environment,
|
|
316
|
+
): (txData: TransactionData, options?: {message?: string}) => Promise<EIP1193TransactionReceipt> {
|
|
337
317
|
return async (txData: TransactionData, options?: {message?: string}) => {
|
|
338
318
|
const {account, ...viemArgs} = txData;
|
|
339
|
-
const address = resolveAccount(account
|
|
340
|
-
|
|
341
|
-
const signer = env.addressSigners[address];
|
|
319
|
+
const address = env.resolveAccount(account);
|
|
342
320
|
|
|
343
321
|
const txParam: EIP1193TransactionData = {
|
|
344
322
|
type: '0x2',
|
|
@@ -358,31 +336,13 @@ export function tx(env: Environment): (txData: TransactionData, options?: {messa
|
|
|
358
336
|
txParam.value = `0x${viemArgs.value?.toString(16)}` as `0x${string}`;
|
|
359
337
|
}
|
|
360
338
|
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
method: 'eth_signTransaction',
|
|
370
|
-
params: [txParam],
|
|
371
|
-
});
|
|
372
|
-
|
|
373
|
-
txHash = await env.network.provider.request({
|
|
374
|
-
method: 'eth_sendRawTransaction',
|
|
375
|
-
params: [rawTx],
|
|
376
|
-
});
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
const pendingExecution: PendingExecution = {
|
|
380
|
-
type: 'execution',
|
|
381
|
-
transaction: {hash: txHash, origin: address},
|
|
382
|
-
// description, // TODO
|
|
383
|
-
// TODO we should have the nonce, except for wallet like metamask where it is not sure you get the nonce you start with
|
|
384
|
-
};
|
|
385
|
-
await env.savePendingExecution(pendingExecution, options?.message);
|
|
386
|
-
return txHash;
|
|
339
|
+
const receipt = await env.broadcastExecution(
|
|
340
|
+
{
|
|
341
|
+
type: 'object',
|
|
342
|
+
data: txParam,
|
|
343
|
+
},
|
|
344
|
+
options,
|
|
345
|
+
);
|
|
346
|
+
return receipt;
|
|
387
347
|
};
|
|
388
348
|
}
|