dequanto 0.1.15 → 0.1.22
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/lib/cjs/abi/coders/array.js +1 -1
- package/lib/cjs/abi/coders/array.js.map +1 -1
- package/lib/cjs/chains/arbitrum/Arbiscan.d.ts +1 -1
- package/lib/cjs/chains/boba/Bobascan.d.ts +1 -1
- package/lib/cjs/chains/xdai/XDaiscan.d.ts +1 -1
- package/lib/cjs/config/Config.js.map +1 -1
- package/lib/cjs/contracts/ContractBase.d.ts +1 -0
- package/lib/cjs/contracts/ContractBase.js.map +1 -1
- package/lib/cjs/contracts/ContractClassFactory.d.ts +2 -1
- package/lib/cjs/contracts/ContractClassFactory.js +5 -1
- package/lib/cjs/contracts/ContractClassFactory.js.map +1 -1
- package/lib/cjs/contracts/deploy/ContractDeployer.d.ts +1 -1
- package/lib/cjs/contracts/deploy/Deployments.d.ts +1 -1
- package/lib/cjs/contracts/deploy/proxy/ProxyDeployment.d.ts +1 -1
- package/lib/cjs/contracts/deploy/storage/DeploymentsStorage.d.ts +1 -1
- package/lib/cjs/contracts/deploy/storage/DeploymentsStorage.js +3 -3
- package/lib/cjs/contracts/deploy/storage/DeploymentsStorage.js.map +1 -1
- package/lib/cjs/explorer/BlockChainExplorerFactory.d.ts +1 -1
- package/lib/cjs/explorer/BlockChainExplorerProvider.d.ts +1 -1
- package/lib/cjs/explorer/Bscscan.d.ts +1 -1
- package/lib/cjs/explorer/ContractVerifier.d.ts +1 -1
- package/lib/cjs/explorer/ContractVerifier.js.map +1 -1
- package/lib/cjs/explorer/Etherscan.d.ts +1 -1
- package/lib/cjs/explorer/Polyscan.d.ts +1 -1
- package/lib/cjs/gen/Generator.d.ts +2 -0
- package/lib/cjs/gen/Generator.js +2 -0
- package/lib/cjs/gen/Generator.js.map +1 -1
- package/lib/cjs/gen/GeneratorFromAbi.d.ts +33 -7
- package/lib/cjs/gen/GeneratorFromAbi.js +222 -111
- package/lib/cjs/gen/GeneratorFromAbi.js.map +1 -1
- package/lib/cjs/gen/GeneratorStorageReader.d.ts +1 -0
- package/lib/cjs/gen/GeneratorStorageReader.js +25 -9
- package/lib/cjs/gen/GeneratorStorageReader.js.map +1 -1
- package/lib/cjs/hardhat/HardhatProvider.d.ts +24 -2
- package/lib/cjs/hardhat/HardhatProvider.js +155 -92
- package/lib/cjs/hardhat/HardhatProvider.js.map +1 -1
- package/lib/cjs/json/JsonArrayMultiStore.js +4 -2
- package/lib/cjs/json/JsonArrayMultiStore.js.map +1 -1
- package/lib/cjs/json/JsonArrayStore.d.ts +2 -2
- package/lib/cjs/models/TEth.d.ts +2 -2
- package/lib/cjs/solidity/SlotsStorage.js.map +1 -1
- package/lib/cjs/utils/$abiParser.js +8 -1
- package/lib/cjs/utils/$abiParser.js.map +1 -1
- package/lib/cjs/utils/$bigint.d.ts +4 -0
- package/lib/cjs/utils/$bigint.js +40 -0
- package/lib/cjs/utils/$bigint.js.map +1 -1
- package/lib/cjs/utils/$config.js +4 -0
- package/lib/cjs/utils/$config.js.map +1 -1
- package/lib/cjs/utils/$contract.js +6 -0
- package/lib/cjs/utils/$contract.js.map +1 -1
- package/lib/cjs/utils/$path.d.ts +6 -0
- package/lib/cjs/utils/$path.js +19 -0
- package/lib/cjs/utils/$path.js.map +1 -1
- package/lib/cjs/utils/$sig.d.ts +3 -0
- package/lib/cjs/utils/$sig.js +2 -2
- package/lib/cjs/utils/$sig.js.map +1 -1
- package/lib/cjs/utils/types.d.ts +3 -0
- package/lib/esm/abi/coders/array.js.map +1 -1
- package/lib/esm/abi/coders/array.mjs +1 -1
- package/lib/esm/chains/arbitrum/Arbiscan.d.ts +1 -1
- package/lib/esm/chains/boba/Bobascan.d.ts +1 -1
- package/lib/esm/chains/xdai/XDaiscan.d.ts +1 -1
- package/lib/esm/config/Config.js.map +1 -1
- package/lib/esm/contracts/ContractBase.d.ts +1 -0
- package/lib/esm/contracts/ContractBase.js.map +1 -1
- package/lib/esm/contracts/ContractClassFactory.d.ts +2 -1
- package/lib/esm/contracts/ContractClassFactory.js.map +1 -1
- package/lib/esm/contracts/ContractClassFactory.mjs +5 -1
- package/lib/esm/contracts/deploy/ContractDeployer.d.ts +1 -1
- package/lib/esm/contracts/deploy/Deployments.d.ts +1 -1
- package/lib/esm/contracts/deploy/proxy/ProxyDeployment.d.ts +1 -1
- package/lib/esm/contracts/deploy/storage/DeploymentsStorage.d.ts +1 -1
- package/lib/esm/contracts/deploy/storage/DeploymentsStorage.js.map +1 -1
- package/lib/esm/contracts/deploy/storage/DeploymentsStorage.mjs +3 -3
- package/lib/esm/explorer/BlockChainExplorerFactory.d.ts +1 -1
- package/lib/esm/explorer/BlockChainExplorerProvider.d.ts +1 -1
- package/lib/esm/explorer/Bscscan.d.ts +1 -1
- package/lib/esm/explorer/ContractVerifier.d.ts +1 -1
- package/lib/esm/explorer/ContractVerifier.js.map +1 -1
- package/lib/esm/explorer/Etherscan.d.ts +1 -1
- package/lib/esm/explorer/Polyscan.d.ts +1 -1
- package/lib/esm/gen/Generator.d.ts +2 -0
- package/lib/esm/gen/Generator.js.map +1 -1
- package/lib/esm/gen/Generator.mjs +2 -0
- package/lib/esm/gen/GeneratorFromAbi.d.ts +33 -7
- package/lib/esm/gen/GeneratorFromAbi.js.map +1 -1
- package/lib/esm/gen/GeneratorFromAbi.mjs +222 -111
- package/lib/esm/gen/GeneratorStorageReader.d.ts +1 -0
- package/lib/esm/gen/GeneratorStorageReader.js.map +1 -1
- package/lib/esm/gen/GeneratorStorageReader.mjs +25 -9
- package/lib/esm/hardhat/HardhatProvider.d.ts +24 -2
- package/lib/esm/hardhat/HardhatProvider.js.map +1 -1
- package/lib/esm/hardhat/HardhatProvider.mjs +155 -92
- package/lib/esm/json/JsonArrayMultiStore.js.map +1 -1
- package/lib/esm/json/JsonArrayMultiStore.mjs +4 -2
- package/lib/esm/json/JsonArrayStore.d.ts +2 -2
- package/lib/esm/models/TEth.d.ts +2 -2
- package/lib/esm/solidity/SlotsStorage.js.map +1 -1
- package/lib/esm/utils/$abiParser.js.map +1 -1
- package/lib/esm/utils/$abiParser.mjs +8 -1
- package/lib/esm/utils/$bigint.d.ts +4 -0
- package/lib/esm/utils/$bigint.js.map +1 -1
- package/lib/esm/utils/$bigint.mjs +40 -0
- package/lib/esm/utils/$config.js.map +1 -1
- package/lib/esm/utils/$config.mjs +4 -0
- package/lib/esm/utils/$contract.js.map +1 -1
- package/lib/esm/utils/$contract.mjs +6 -0
- package/lib/esm/utils/$path.d.ts +6 -0
- package/lib/esm/utils/$path.js.map +1 -1
- package/lib/esm/utils/$path.mjs +19 -0
- package/lib/esm/utils/$sig.d.ts +3 -0
- package/lib/esm/utils/$sig.js.map +1 -1
- package/lib/esm/utils/$sig.mjs +1 -1
- package/lib/esm/utils/types.d.ts +3 -0
- package/package.json +1 -1
- package/src/abi/coders/array.ts +1 -1
- package/src/config/Config.ts +2 -1
- package/src/contracts/ContractBase.ts +2 -0
- package/src/contracts/ContractClassFactory.ts +8 -2
- package/src/contracts/deploy/ContractDeployer.ts +1 -1
- package/src/contracts/deploy/Deployments.ts +1 -1
- package/src/contracts/deploy/proxy/ProxyDeployment.ts +1 -1
- package/src/contracts/deploy/storage/DeploymentsStorage.ts +5 -5
- package/src/contracts/wrappers/FnSignedWrapper.ts +1 -1
- package/src/explorer/BlockChainExplorerFactory.ts +1 -1
- package/src/explorer/BlockChainExplorerProvider.ts +1 -1
- package/src/explorer/ContractVerifier.ts +2 -1
- package/src/gen/ContractStorageReaderTemplate.d.ts.template +14 -0
- package/src/gen/ContractStorageReaderTemplate.js +17 -0
- package/src/gen/ContractTemplate.d.ts.template +111 -0
- package/src/gen/ContractTemplate.js +77 -0
- package/src/gen/Generator.ts +6 -0
- package/src/gen/GeneratorFromAbi.ts +233 -122
- package/src/gen/GeneratorStorageReader.ts +29 -11
- package/src/hardhat/HardhatProvider.ts +228 -106
- package/src/json/JsonArrayMultiStore.ts +4 -2
- package/src/json/JsonArrayStore.ts +1 -1
- package/src/models/TEth.ts +2 -2
- package/src/solidity/SlotsStorage.ts +2 -1
- package/src/types/TAbi.ts +2 -2
- package/src/utils/$abiParser.ts +8 -1
- package/src/utils/$bigint.ts +41 -0
- package/src/utils/$config.ts +4 -0
- package/src/utils/$contract.ts +6 -1
- package/src/utils/$path.ts +18 -0
- package/src/utils/$sig.ts +1 -1
- package/src/utils/types.ts +3 -0
|
@@ -21,6 +21,7 @@ class GeneratorFromAbi {
|
|
|
21
21
|
return Gen;
|
|
22
22
|
}
|
|
23
23
|
async generate(abiJson, opts) {
|
|
24
|
+
let targetType = opts.target ?? 'ts';
|
|
24
25
|
let methodsArr = (0, alot_1.default)(abiJson)
|
|
25
26
|
.filter(x => x.type === 'function' || x.type === 'constructor')
|
|
26
27
|
.groupBy(x => x.name)
|
|
@@ -36,18 +37,9 @@ class GeneratorFromAbi {
|
|
|
36
37
|
return null;
|
|
37
38
|
})
|
|
38
39
|
.filter(Boolean)
|
|
40
|
+
.map(x => x[opts?.target ?? 'ts'])
|
|
39
41
|
.map(Str_1.Str.formatMethod)
|
|
40
42
|
.toArray();
|
|
41
|
-
// let methodInterfacesArr = alot(abiJson)
|
|
42
|
-
// .filter(x => x.type === 'function')
|
|
43
|
-
// .groupBy(x => x.name)
|
|
44
|
-
// .map(group => {
|
|
45
|
-
// let item = group.values[0];
|
|
46
|
-
// return Gen.serializeMethodInterfacesTs(item.name, group.values);
|
|
47
|
-
// })
|
|
48
|
-
// .filter(Boolean)
|
|
49
|
-
// .toArray();
|
|
50
|
-
//let methodInterfacesAll = Gen.serializeMethodInterfacesAllTs(methodInterfacesArr);
|
|
51
43
|
let methodTypes = (0, alot_1.default)(abiJson)
|
|
52
44
|
.filter(x => x.type === 'function')
|
|
53
45
|
.groupBy(x => x.name)
|
|
@@ -61,6 +53,7 @@ class GeneratorFromAbi {
|
|
|
61
53
|
.filter(x => x.type === 'event')
|
|
62
54
|
.map(x => Gen.serializeEvent(x))
|
|
63
55
|
.filter(Boolean)
|
|
56
|
+
.map(x => x[opts?.target ?? 'ts'])
|
|
64
57
|
.map(Str_1.Str.formatMethod);
|
|
65
58
|
let eventTypes = (0, alot_1.default)(abiJson)
|
|
66
59
|
.filter(x => x.type === 'event')
|
|
@@ -76,11 +69,13 @@ class GeneratorFromAbi {
|
|
|
76
69
|
.filter(x => x.type === 'event')
|
|
77
70
|
.map(x => Gen.serializeEventExtractor(x))
|
|
78
71
|
.filter(Boolean)
|
|
72
|
+
.map(x => x[opts?.target ?? 'ts'])
|
|
79
73
|
.map(Str_1.Str.formatMethod);
|
|
80
74
|
let eventsFetchersArr = abiJson
|
|
81
75
|
.filter(x => x.type === 'event')
|
|
82
76
|
.map(x => Gen.serializeEventFetcher(x))
|
|
83
77
|
.filter(Boolean)
|
|
78
|
+
.map(x => x[opts?.target ?? 'ts'])
|
|
84
79
|
.map(Str_1.Str.formatMethod);
|
|
85
80
|
// let eventInterfaces = abiJson
|
|
86
81
|
// .filter(x => x.type === 'event')
|
|
@@ -92,7 +87,7 @@ class GeneratorFromAbi {
|
|
|
92
87
|
let eventsExtractors = eventsExtractorsArr.join('\n\n');
|
|
93
88
|
let eventsFetchers = eventsFetchersArr.join('\n\n');
|
|
94
89
|
let name = opts.name;
|
|
95
|
-
let templatePath = _path_1.$path.resolve(`/src/gen/ContractTemplate
|
|
90
|
+
let templatePath = _path_1.$path.resolve(`/src/gen/ContractTemplate.${targetType}`);
|
|
96
91
|
let template = await atma_io_1.File.readAsync(templatePath, { skipHooks: true });
|
|
97
92
|
let EtherscanStr;
|
|
98
93
|
let EthWeb3ClientStr;
|
|
@@ -100,13 +95,14 @@ class GeneratorFromAbi {
|
|
|
100
95
|
let sourceUri;
|
|
101
96
|
let Web3ClientOptions = '';
|
|
102
97
|
let EvmScanOptions = '';
|
|
98
|
+
let importPfx = targetType === 'js' ? 'dequanto' : '@dequanto';
|
|
103
99
|
switch (opts.network) {
|
|
104
100
|
case 'bsc':
|
|
105
101
|
EtherscanStr = 'Bscscan';
|
|
106
102
|
EthWeb3ClientStr = 'BscWeb3Client';
|
|
107
103
|
imports = [
|
|
108
|
-
`import { Bscscan } from '
|
|
109
|
-
`import { BscWeb3Client } from '
|
|
104
|
+
`import { Bscscan } from '${importPfx}/explorer/Bscscan'`,
|
|
105
|
+
`import { BscWeb3Client } from '${importPfx}/clients/BscWeb3Client'`,
|
|
110
106
|
];
|
|
111
107
|
sourceUri = `https://bscscan.com/address/${opts.address}#code`;
|
|
112
108
|
break;
|
|
@@ -114,8 +110,8 @@ class GeneratorFromAbi {
|
|
|
114
110
|
EtherscanStr = 'Polyscan';
|
|
115
111
|
EthWeb3ClientStr = 'PolyWeb3Client';
|
|
116
112
|
imports = [
|
|
117
|
-
`import { Polyscan } from '
|
|
118
|
-
`import { PolyWeb3Client } from '
|
|
113
|
+
`import { Polyscan } from '${importPfx}/explorer/Polyscan'`,
|
|
114
|
+
`import { PolyWeb3Client } from '${importPfx}/clients/PolyWeb3Client'`,
|
|
119
115
|
];
|
|
120
116
|
sourceUri = `https://polygonscan.com/address/${opts.address}#code`;
|
|
121
117
|
break;
|
|
@@ -123,8 +119,8 @@ class GeneratorFromAbi {
|
|
|
123
119
|
EtherscanStr = 'XDaiscan';
|
|
124
120
|
EthWeb3ClientStr = 'XDaiWeb3Client';
|
|
125
121
|
imports = [
|
|
126
|
-
`import { XDaiscan } from '
|
|
127
|
-
`import { XDaiWeb3Client } from '
|
|
122
|
+
`import { XDaiscan } from '${importPfx}/chains/xdai/XDaiscan'`,
|
|
123
|
+
`import { XDaiWeb3Client } from '${importPfx}/chains/xdai/XDaiWeb3Client'`,
|
|
128
124
|
];
|
|
129
125
|
sourceUri = `https://blockscout.com/xdai/mainnet/address/${opts.address}/contracts`;
|
|
130
126
|
break;
|
|
@@ -132,8 +128,8 @@ class GeneratorFromAbi {
|
|
|
132
128
|
EtherscanStr = 'Etherscan';
|
|
133
129
|
EthWeb3ClientStr = 'EthWeb3Client';
|
|
134
130
|
imports = [
|
|
135
|
-
`import { Etherscan } from '
|
|
136
|
-
`import { EthWeb3Client } from '
|
|
131
|
+
`import { Etherscan } from '${importPfx}/explorer/Etherscan'`,
|
|
132
|
+
`import { EthWeb3Client } from '${importPfx}/clients/EthWeb3Client'`,
|
|
137
133
|
];
|
|
138
134
|
sourceUri = `https://etherscan.io/address/${opts.address}#code`;
|
|
139
135
|
break;
|
|
@@ -141,8 +137,8 @@ class GeneratorFromAbi {
|
|
|
141
137
|
EtherscanStr = 'Etherscan';
|
|
142
138
|
EthWeb3ClientStr = 'HardhatWeb3Client';
|
|
143
139
|
imports = [
|
|
144
|
-
`import { Etherscan } from '
|
|
145
|
-
`import { HardhatWeb3Client } from '
|
|
140
|
+
`import { Etherscan } from '${importPfx}/explorer/Etherscan'`,
|
|
141
|
+
`import { HardhatWeb3Client } from '${importPfx}/hardhat/HardhatWeb3Client'`,
|
|
146
142
|
];
|
|
147
143
|
sourceUri = ``;
|
|
148
144
|
break;
|
|
@@ -152,8 +148,8 @@ class GeneratorFromAbi {
|
|
|
152
148
|
EtherscanStr = 'Evmscan';
|
|
153
149
|
EthWeb3ClientStr = 'EvmWeb3Client';
|
|
154
150
|
imports = [
|
|
155
|
-
`import { Evmscan } from '
|
|
156
|
-
`import { EvmWeb3Client } from '
|
|
151
|
+
`import { Evmscan } from '${importPfx}/explorer/Evmscan'`,
|
|
152
|
+
`import { EvmWeb3Client } from '${importPfx}/clients/EvmWeb3Client'`,
|
|
157
153
|
];
|
|
158
154
|
Web3ClientOptions = `{ platform: '${opts.network}' }`;
|
|
159
155
|
EvmScanOptions = `{ platform: '${opts.network}' }`;
|
|
@@ -171,7 +167,7 @@ class GeneratorFromAbi {
|
|
|
171
167
|
let outputFilename = /[^\\/]+$/.exec(name)[0];
|
|
172
168
|
let outputPath = /\.(ts|js)$/.test(opts.output)
|
|
173
169
|
? opts.output
|
|
174
|
-
: atma_utils_1.class_Uri.combine(opts.output, outputDirectory, `${outputFilename}.
|
|
170
|
+
: atma_utils_1.class_Uri.combine(opts.output, outputDirectory, `${outputFilename}.${opts.outputFileExt ?? targetType}`);
|
|
175
171
|
let meta = {
|
|
176
172
|
artifact: opts.artifact
|
|
177
173
|
? this.getRelativePath(opts.artifact)
|
|
@@ -187,13 +183,13 @@ class GeneratorFromAbi {
|
|
|
187
183
|
let storageReaderClass = '';
|
|
188
184
|
try {
|
|
189
185
|
let storageReaderGenerator = new GeneratorStorageReader_1.GeneratorStorageReader();
|
|
190
|
-
let reader = await storageReaderGenerator.generate({ ...opts });
|
|
186
|
+
let reader = await storageReaderGenerator.generate({ ...opts, target: targetType });
|
|
191
187
|
if (reader.sourcePath != null && opts.address == null) {
|
|
192
188
|
sourceUri = this.getRelativePath(reader.sourcePath);
|
|
193
189
|
}
|
|
194
190
|
if (reader.className) {
|
|
195
191
|
storageReaderClass = reader.code;
|
|
196
|
-
storageReaderProperty = `declare storage: ${reader.className}
|
|
192
|
+
storageReaderProperty = targetType === 'ts' ? `declare storage: ${reader.className}` : '';
|
|
197
193
|
storageReaderInitializer = `this.storage = new ${reader.className}(this.address, this.client, this.explorer);`;
|
|
198
194
|
_logger_1.$logger.log(`green<StorageReader> was generated`);
|
|
199
195
|
}
|
|
@@ -226,13 +222,13 @@ class GeneratorFromAbi {
|
|
|
226
222
|
.replace(`/* STORAGE_READER_INITIALIZER */`, storageReaderInitializer)
|
|
227
223
|
.replace(`/* STORAGE_READER_PROPERTY */`, storageReaderProperty)
|
|
228
224
|
.replace(`/* STORAGE_READER_CLASS */`, () => storageReaderClass)
|
|
229
|
-
.replace(`/* TX_CALLER_METHODS */`, () => Gen.serializeTxCallerMethods(className, abiJson))
|
|
230
|
-
.replace(`/* TX_DATA_METHODS */`, () => Gen.serializeTxDataMethods(className, abiJson))
|
|
225
|
+
.replace(`/* TX_CALLER_METHODS */`, () => Gen.serializeTxCallerMethods(className, abiJson)[targetType])
|
|
226
|
+
.replace(`/* TX_DATA_METHODS */`, () => Gen.serializeTxDataMethods(className, abiJson)[targetType])
|
|
231
227
|
.replace(`/* $EVENT_TYPES$ */`, () => Str_1.Str.indent(eventTypes.map(x => x.code).join('\n'), ' '))
|
|
232
228
|
.replace(`/* $METHOD_TYPES$ */`, () => Str_1.Str.indent(methodTypes.map(x => x.code).join('\n'), ' '));
|
|
233
229
|
await atma_io_1.File.writeAsync(outputPath, code, { skipHooks: true });
|
|
234
230
|
if (opts.saveAbi) {
|
|
235
|
-
let path = atma_utils_1.class_Uri.combine(opts.output, outputDirectory, `${outputFilename}.json`);
|
|
231
|
+
let path = atma_utils_1.class_Uri.combine(opts.output, outputDirectory, `${outputFilename}Abi.json`);
|
|
236
232
|
await atma_io_1.File.writeAsync(path, abiJson);
|
|
237
233
|
}
|
|
238
234
|
_logger_1.$logger.log(`bold<green<${className}>> ABI wrapper class created: bold<${outputPath}>`);
|
|
@@ -302,8 +298,8 @@ var Gen;
|
|
|
302
298
|
// abi.length > 1 if has method overloads
|
|
303
299
|
function serializeMethodInterfacesTs(name, abis) {
|
|
304
300
|
let args = abis.map(abi => {
|
|
305
|
-
let {
|
|
306
|
-
return `[ ${
|
|
301
|
+
let { fnInputArgumentsTargets } = serializeArgumentsTs(abi);
|
|
302
|
+
return `[ ${fnInputArgumentsTargets.ts} ]`;
|
|
307
303
|
}).join(' | ');
|
|
308
304
|
let iface = `IMethod${name[0].toUpperCase()}${name.substring(1)}`;
|
|
309
305
|
let code = [
|
|
@@ -321,8 +317,8 @@ var Gen;
|
|
|
321
317
|
Gen.serializeMethodInterfacesTs = serializeMethodInterfacesTs;
|
|
322
318
|
function serializeMethodTypeTs(name, abis) {
|
|
323
319
|
let args = abis.map(abi => {
|
|
324
|
-
let {
|
|
325
|
-
return `[ ${
|
|
320
|
+
let { fnInputArgumentsTargets } = serializeArgumentsTs(abi);
|
|
321
|
+
return `[ ${fnInputArgumentsTargets.ts} ]`;
|
|
326
322
|
}).join(' | ');
|
|
327
323
|
let iface = `IMethod${name[0].toUpperCase()}${name.substring(1)}`;
|
|
328
324
|
let code = [
|
|
@@ -369,9 +365,9 @@ var Gen;
|
|
|
369
365
|
}
|
|
370
366
|
Gen.serializeEventsInterfacesAllTs = serializeEventsInterfacesAllTs;
|
|
371
367
|
function serializeEventType(event) {
|
|
372
|
-
let {
|
|
373
|
-
let outputParams = `{ ${
|
|
374
|
-
let outputArgs = `[ ${
|
|
368
|
+
let { fnInputArgumentsTargets, callInputArguments, fnResult } = serializeArgumentsTs(event);
|
|
369
|
+
let outputParams = `{ ${fnInputArgumentsTargets.ts} }`;
|
|
370
|
+
let outputArgs = `[ ${fnInputArgumentsTargets.ts.replace('\n', '')} ]`;
|
|
375
371
|
let code = [
|
|
376
372
|
`${event.name}: {`,
|
|
377
373
|
` outputParams: ${outputParams},`,
|
|
@@ -384,36 +380,67 @@ var Gen;
|
|
|
384
380
|
}
|
|
385
381
|
Gen.serializeEventType = serializeEventType;
|
|
386
382
|
function serializeEvent(abi) {
|
|
387
|
-
let {
|
|
388
|
-
return
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
383
|
+
let { fnInputArgumentsTargets, callInputArguments, fnResult } = serializeArgumentsTs(abi);
|
|
384
|
+
return {
|
|
385
|
+
ts: `
|
|
386
|
+
on${abi.name} (fn?: (event: TClientEventsStreamData<TEventArguments<'${abi.name}'>>) => void): ClientEventsStream<TClientEventsStreamData<TEventArguments<'${abi.name}'>>> {
|
|
387
|
+
return this.$onLog('${abi.name}', fn);
|
|
388
|
+
}
|
|
389
|
+
`,
|
|
390
|
+
js: `
|
|
391
|
+
on${abi.name} (fn) {
|
|
392
|
+
return this.$onLog('${abi.name}', fn);
|
|
393
|
+
}
|
|
394
|
+
`
|
|
395
|
+
};
|
|
393
396
|
}
|
|
394
397
|
Gen.serializeEvent = serializeEvent;
|
|
395
398
|
function serializeEventExtractor(abi) {
|
|
396
|
-
return
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
399
|
+
return {
|
|
400
|
+
ts: `
|
|
401
|
+
extractLogs${abi.name} (tx: TEth.TxReceipt): ITxLogItem<TEventParams<'${abi.name}'>>[] {
|
|
402
|
+
let abi = this.$getAbiItem('event', '${abi.name}');
|
|
403
|
+
return this.$extractLogs(tx, abi) as any as ITxLogItem<TEventParams<'${abi.name}'>>[];
|
|
404
|
+
}
|
|
405
|
+
`,
|
|
406
|
+
js: `
|
|
407
|
+
extractLogs${abi.name} (tx) {
|
|
408
|
+
let abi = this.$getAbiItem('event', '${abi.name}');
|
|
409
|
+
return this.$extractLogs(tx, abi);
|
|
410
|
+
}
|
|
411
|
+
`
|
|
412
|
+
};
|
|
402
413
|
}
|
|
403
414
|
Gen.serializeEventExtractor = serializeEventExtractor;
|
|
404
415
|
function serializeEventFetcher(abi) {
|
|
405
416
|
let inputs = abi.inputs;
|
|
406
417
|
let indexed = (0, alot_1.default)(inputs).takeWhile(x => x.indexed).toArray();
|
|
407
418
|
let indexedParams = indexed.map(param => `${param.name}?: ${_abiType_1.$abiType.getTsType(param.type, param)}`);
|
|
408
|
-
return
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
419
|
+
return {
|
|
420
|
+
ts: `
|
|
421
|
+
async getPastLogs${abi.name} (options?: {
|
|
422
|
+
fromBlock?: number | Date
|
|
423
|
+
toBlock?: number | Date
|
|
424
|
+
params?: { ${indexedParams} }
|
|
425
|
+
}): Promise<ITxLogItem<TEventParams<'${abi.name}'>>[]> {
|
|
426
|
+
return await this.$getPastLogsParsed('${abi.name}', options) as any;
|
|
427
|
+
}
|
|
428
|
+
`,
|
|
429
|
+
types: `
|
|
430
|
+
async getPastLogs${abi.name} (options?: {
|
|
431
|
+
fromBlock?: number | Date
|
|
432
|
+
toBlock?: number | Date
|
|
433
|
+
params?: { ${indexedParams} }
|
|
434
|
+
}): Promise<ITxLogItem<TEventParams<'${abi.name}'>>[]> {
|
|
435
|
+
return await this.$getPastLogsParsed('${abi.name}', options) as any;
|
|
436
|
+
}
|
|
437
|
+
`,
|
|
438
|
+
js: `
|
|
439
|
+
async getPastLogs${abi.name} (options) {
|
|
440
|
+
return await this.$getPastLogsParsed('${abi.name}', options);
|
|
441
|
+
}
|
|
442
|
+
`
|
|
443
|
+
};
|
|
417
444
|
}
|
|
418
445
|
Gen.serializeEventFetcher = serializeEventFetcher;
|
|
419
446
|
// export function serializeEventInterface (abi: TAbiItem) {
|
|
@@ -442,76 +469,134 @@ var Gen;
|
|
|
442
469
|
}
|
|
443
470
|
Gen.serializeMethodAbi = serializeMethodAbi;
|
|
444
471
|
function serializeReadMethodTs(abi) {
|
|
445
|
-
let {
|
|
472
|
+
let { fnInputArgumentsTargets, callInputArguments, fnResult } = serializeArgumentsTs(abi);
|
|
446
473
|
if (callInputArguments) {
|
|
447
474
|
callInputArguments = `, ${callInputArguments}`;
|
|
448
475
|
}
|
|
449
|
-
return
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
476
|
+
return {
|
|
477
|
+
ts: `
|
|
478
|
+
// ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
|
|
479
|
+
async ${abi.name} (${fnInputArgumentsTargets.ts}): ${fnResult} {
|
|
480
|
+
return this.$read(this.$getAbiItem('function', '${abi.name}')${callInputArguments});
|
|
481
|
+
}
|
|
482
|
+
`,
|
|
483
|
+
types: `
|
|
484
|
+
// ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
|
|
485
|
+
async ${abi.name} (${fnInputArgumentsTargets.ts}): ${fnResult}
|
|
486
|
+
`,
|
|
487
|
+
js: `
|
|
488
|
+
// ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
|
|
489
|
+
async ${abi.name} (${fnInputArgumentsTargets.js}) {
|
|
490
|
+
return this.$read(this.$getAbiItem('function', '${abi.name}')${callInputArguments});
|
|
491
|
+
}
|
|
492
|
+
`
|
|
493
|
+
};
|
|
455
494
|
}
|
|
456
495
|
function serializeReadMethodTsOverloads(abis) {
|
|
457
496
|
let overrides = abis.map(abi => {
|
|
458
|
-
let {
|
|
497
|
+
let { fnInputArgumentsTargets, fnResult } = serializeArgumentsTs(abi);
|
|
459
498
|
return `
|
|
460
499
|
// ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
|
|
461
|
-
async ${abi.name} (${
|
|
500
|
+
async ${abi.name} (${fnInputArgumentsTargets.ts}): ${fnResult}
|
|
462
501
|
`;
|
|
463
502
|
}).join('\n');
|
|
464
503
|
let abi = abis[0];
|
|
465
504
|
let { fnResult } = serializeArgumentsTs(abi);
|
|
466
505
|
let sigs = abis.map(abi => serializeMethodAbi(abi)).map(x => `'${x}'`).join(', ');
|
|
467
|
-
return
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
506
|
+
return {
|
|
507
|
+
ts: `
|
|
508
|
+
${overrides}
|
|
509
|
+
async ${abi.name} (...args): ${fnResult} {
|
|
510
|
+
let abi = this.$getAbiItemOverload([ ${sigs} ], args);
|
|
511
|
+
return this.$read(abi, ...args);
|
|
512
|
+
}
|
|
513
|
+
`,
|
|
514
|
+
types: `
|
|
515
|
+
${overrides}
|
|
516
|
+
async ${abi.name} (...args): ${fnResult}
|
|
517
|
+
`,
|
|
518
|
+
js: `
|
|
519
|
+
async ${abi.name} (...args) {
|
|
520
|
+
let abi = this.$getAbiItemOverload([ ${sigs} ], args);
|
|
521
|
+
return this.$read(abi, ...args);
|
|
522
|
+
}
|
|
523
|
+
`
|
|
524
|
+
};
|
|
474
525
|
}
|
|
475
526
|
function serializeWriteMethodTs(abi) {
|
|
476
|
-
let {
|
|
527
|
+
let { fnInputArgumentsTargets, callInputArguments } = serializeArgumentsTs(abi);
|
|
477
528
|
if (callInputArguments) {
|
|
478
529
|
callInputArguments = `, ${callInputArguments}`;
|
|
479
530
|
}
|
|
480
|
-
return
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
531
|
+
return {
|
|
532
|
+
ts: `
|
|
533
|
+
// ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
|
|
534
|
+
async ${abi.name} (sender: TSender, ${fnInputArgumentsTargets.ts}): Promise<TxWriter> {
|
|
535
|
+
return this.$write(this.$getAbiItem('function', '${abi.name}'), sender${callInputArguments});
|
|
536
|
+
}
|
|
537
|
+
`,
|
|
538
|
+
types: `
|
|
539
|
+
// ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
|
|
540
|
+
async ${abi.name} (sender: TSender, ${fnInputArgumentsTargets.ts}): Promise<TxWriter>
|
|
541
|
+
`,
|
|
542
|
+
js: `
|
|
543
|
+
// ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
|
|
544
|
+
async ${abi.name} (sender, ${fnInputArgumentsTargets.js}) {
|
|
545
|
+
return this.$write(this.$getAbiItem('function', '${abi.name}'), sender${callInputArguments});
|
|
546
|
+
}
|
|
547
|
+
`
|
|
548
|
+
};
|
|
486
549
|
}
|
|
487
550
|
function serializeConstructorMethodTs(abi) {
|
|
488
|
-
let {
|
|
551
|
+
let { fnInputArgumentsTargets, callInputArguments } = serializeArgumentsTs(abi);
|
|
489
552
|
if (callInputArguments) {
|
|
490
553
|
callInputArguments = `, ${callInputArguments}`;
|
|
491
554
|
}
|
|
492
|
-
return
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
555
|
+
return {
|
|
556
|
+
ts: `
|
|
557
|
+
async $constructor (deployer: TSender, ${fnInputArgumentsTargets.ts}): Promise<TxWriter> {
|
|
558
|
+
throw new Error('Not implemented. Typing purpose. Use the ContractDeployer class to deploy the contract');
|
|
559
|
+
}
|
|
560
|
+
`,
|
|
561
|
+
types: `
|
|
562
|
+
async $constructor (deployer: TSender, ${fnInputArgumentsTargets.ts}): Promise<TxWriter>
|
|
563
|
+
`,
|
|
564
|
+
js: `
|
|
565
|
+
async $constructor (deployer, ${fnInputArgumentsTargets.js}) {
|
|
566
|
+
throw new Error('Not implemented. Typing purpose. Use the ContractDeployer class to deploy the contract');
|
|
567
|
+
}
|
|
568
|
+
`
|
|
569
|
+
};
|
|
497
570
|
}
|
|
498
571
|
function serializeWriteMethodTsOverloads(abis) {
|
|
499
572
|
let overrides = abis.map(abi => {
|
|
500
|
-
let {
|
|
573
|
+
let { fnInputArgumentsTargets, fnResult } = serializeArgumentsTs(abi);
|
|
501
574
|
return `
|
|
502
575
|
// ${_abiUtils_1.$abiUtils.getMethodSignature(abi)}
|
|
503
|
-
async ${abi.name} (sender: TSender, ${
|
|
576
|
+
async ${abi.name} (sender: TSender, ${fnInputArgumentsTargets.ts}): Promise<TxWriter>
|
|
504
577
|
`;
|
|
505
578
|
}).join('\n');
|
|
506
579
|
let abi = abis[0];
|
|
507
580
|
let sigs = abis.map(abi => serializeMethodAbi(abi)).map(x => `'${x}'`).join(', ');
|
|
508
|
-
return
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
581
|
+
return {
|
|
582
|
+
ts: `
|
|
583
|
+
${overrides}
|
|
584
|
+
async ${abi.name} (sender: TSender, ...args): Promise<TxWriter> {
|
|
585
|
+
let abi = this.$getAbiItemOverload([ ${sigs} ], args);
|
|
586
|
+
return this.$write(abi, sender, ...args);
|
|
587
|
+
}
|
|
588
|
+
`,
|
|
589
|
+
types: `
|
|
590
|
+
${overrides}
|
|
591
|
+
async ${abi.name} (sender: TSender, ...args): Promise<TxWriter>
|
|
592
|
+
`,
|
|
593
|
+
js: `
|
|
594
|
+
async ${abi.name} (sender, ...args) {
|
|
595
|
+
let abi = this.$getAbiItemOverload([ ${sigs} ], args);
|
|
596
|
+
return this.$write(abi, sender, ...args);
|
|
597
|
+
}
|
|
598
|
+
`
|
|
599
|
+
};
|
|
515
600
|
}
|
|
516
601
|
function serializeArgumentsTs(abi) {
|
|
517
602
|
let inputs = abi.inputs.map((input, i) => {
|
|
@@ -524,22 +609,38 @@ var Gen;
|
|
|
524
609
|
}
|
|
525
610
|
return result;
|
|
526
611
|
});
|
|
527
|
-
let
|
|
612
|
+
let fnInputArgumentsArr = inputs
|
|
528
613
|
?.map((input) => {
|
|
529
614
|
let tsType = _abiType_1.$abiType.getTsType(input.type, input);
|
|
530
615
|
if (tsType == null) {
|
|
531
616
|
throw new Error(`Unknown abi type in arguments: ${input.type}`);
|
|
532
617
|
}
|
|
533
|
-
return
|
|
618
|
+
return { name: input.name, type: tsType };
|
|
619
|
+
}) ?? [];
|
|
620
|
+
let fnInputArgumentsTs = fnInputArgumentsArr
|
|
621
|
+
.map((input) => {
|
|
622
|
+
return `${input.name}: ${input.type}`;
|
|
534
623
|
})
|
|
535
|
-
|
|
624
|
+
.join(', ');
|
|
625
|
+
let fnInputArgumentsJs = fnInputArgumentsArr
|
|
626
|
+
.map((input) => {
|
|
627
|
+
return `${input.name}`;
|
|
628
|
+
})
|
|
629
|
+
.join(', ');
|
|
536
630
|
let callInputArguments = inputs
|
|
537
631
|
?.map(input => {
|
|
538
632
|
return `${input.name}`;
|
|
539
633
|
})
|
|
540
634
|
?.join(', ') ?? '';
|
|
541
635
|
let fnResult = serializeMethodTsReturns(abi.outputs);
|
|
542
|
-
return {
|
|
636
|
+
return {
|
|
637
|
+
fnInputArgumentsTargets: {
|
|
638
|
+
ts: fnInputArgumentsTs,
|
|
639
|
+
js: fnInputArgumentsJs,
|
|
640
|
+
},
|
|
641
|
+
callInputArguments,
|
|
642
|
+
fnResult
|
|
643
|
+
};
|
|
543
644
|
}
|
|
544
645
|
function isObjectParams(params) {
|
|
545
646
|
return params?.every(x => Boolean(x.name));
|
|
@@ -617,34 +718,44 @@ var Gen;
|
|
|
617
718
|
function serializeTxCallerMethods(className, abiJson) {
|
|
618
719
|
let methods = abiJson.filter(x => x.type === 'function');
|
|
619
720
|
let writeMethods = methods.filter(abi => _abiUtils_1.$abiUtils.isReadMethod(abi) === false);
|
|
620
|
-
let lines =
|
|
621
|
-
|
|
622
|
-
lines.push(serializeMethodTs(method));
|
|
721
|
+
let lines = writeMethods.map(method => {
|
|
722
|
+
return serializeMethodTs(method);
|
|
623
723
|
});
|
|
624
|
-
return
|
|
724
|
+
return {
|
|
725
|
+
ts: lines.map(x => x.ts).join('\n'),
|
|
726
|
+
js: lines.map(x => x.js).join('\n'),
|
|
727
|
+
};
|
|
625
728
|
function serializeMethodTs(abi) {
|
|
626
|
-
let {
|
|
729
|
+
let { fnInputArgumentsTargets, callInputArguments, fnResult } = serializeArgumentsTs(abi);
|
|
627
730
|
if (callInputArguments) {
|
|
628
731
|
callInputArguments = `, ${callInputArguments}`;
|
|
629
732
|
}
|
|
630
|
-
return
|
|
733
|
+
return {
|
|
734
|
+
ts: ` ${abi.name} (sender: TSender, ${fnInputArgumentsTargets.ts}): Promise<{ error?: Error & { data?: { type: string, params } }, result? }>`,
|
|
735
|
+
js: ` ${abi.name} (sender, ${fnInputArgumentsTargets.js})`,
|
|
736
|
+
};
|
|
631
737
|
}
|
|
632
738
|
}
|
|
633
739
|
Gen.serializeTxCallerMethods = serializeTxCallerMethods;
|
|
634
740
|
function serializeTxDataMethods(className, abiJson) {
|
|
635
741
|
let methods = abiJson.filter(x => x.type === 'function');
|
|
636
742
|
let writeMethods = methods.filter(abi => _abiUtils_1.$abiUtils.isReadMethod(abi) === false);
|
|
637
|
-
let lines =
|
|
638
|
-
|
|
639
|
-
lines.push(serializeInterfaceMethodTs(method));
|
|
743
|
+
let lines = writeMethods.map(method => {
|
|
744
|
+
return serializeInterfaceMethodTs(method);
|
|
640
745
|
});
|
|
641
|
-
return
|
|
746
|
+
return {
|
|
747
|
+
ts: lines.map(x => x.ts).join('\n'),
|
|
748
|
+
js: lines.map(x => x.js).join('\n'),
|
|
749
|
+
};
|
|
642
750
|
function serializeInterfaceMethodTs(abi) {
|
|
643
|
-
let {
|
|
751
|
+
let { fnInputArgumentsTargets, callInputArguments, fnResult } = serializeArgumentsTs(abi);
|
|
644
752
|
if (callInputArguments) {
|
|
645
753
|
callInputArguments = `, ${callInputArguments}`;
|
|
646
754
|
}
|
|
647
|
-
return
|
|
755
|
+
return {
|
|
756
|
+
ts: ` ${abi.name} (sender: TSender, ${fnInputArgumentsTargets.ts}): Promise<TEth.TxLike>`,
|
|
757
|
+
js: ` ${abi.name} (sender, ${fnInputArgumentsTargets.js})`,
|
|
758
|
+
};
|
|
648
759
|
}
|
|
649
760
|
}
|
|
650
761
|
Gen.serializeTxDataMethods = serializeTxDataMethods;
|