@subsquid/evm-typegen 0.0.1 → 1.0.1
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/main.js +13 -9
- package/lib/main.js.map +1 -1
- package/package.json +6 -6
- package/src/main.ts +13 -9
package/lib/main.js
CHANGED
|
@@ -8,7 +8,7 @@ const commander_1 = require("commander");
|
|
|
8
8
|
const process_1 = __importDefault(require("process"));
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
10
10
|
const fs_1 = __importDefault(require("fs"));
|
|
11
|
-
const
|
|
11
|
+
const util_internal_code_printer_1 = require("@subsquid/util-internal-code-printer");
|
|
12
12
|
const abi_1 = require("@ethersproject/abi");
|
|
13
13
|
function run() {
|
|
14
14
|
commander_1.program.description(`
|
|
@@ -40,24 +40,31 @@ function generateTsFromAbi(inputPathRaw, outputPathRaw) {
|
|
|
40
40
|
throw new Error("invalid output file extension");
|
|
41
41
|
}
|
|
42
42
|
const rawABI = JSON.parse(fs_1.default.readFileSync(inputPathRaw, { encoding: "utf-8" }));
|
|
43
|
-
const output = new
|
|
43
|
+
const output = new util_internal_code_printer_1.Output();
|
|
44
44
|
output.line("import * as ethers from \"ethers\";");
|
|
45
45
|
output.line();
|
|
46
46
|
output.line("export const abi = new ethers.utils.Interface(getJsonAbi());");
|
|
47
47
|
output.line();
|
|
48
48
|
// validate the abi
|
|
49
49
|
const abi = new abi_1.Interface(rawABI);
|
|
50
|
+
const typeNames = {};
|
|
50
51
|
const abiEvents = Object.values(abi.events).map((event) => {
|
|
51
52
|
let signature = `${event.name}(`;
|
|
52
53
|
let eventTypeName = `${event.name}`;
|
|
54
|
+
if (typeNames[event.name]) {
|
|
55
|
+
eventTypeName += typeNames[event.name].toString();
|
|
56
|
+
typeNames[event.name]++;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
eventTypeName += "0";
|
|
60
|
+
typeNames[event.name] = 1;
|
|
61
|
+
}
|
|
53
62
|
if (event.inputs.length > 0) {
|
|
54
63
|
signature += event.inputs[0].type;
|
|
55
|
-
eventTypeName += capitalize(event.inputs[0].type);
|
|
56
64
|
}
|
|
57
65
|
for (let i = 1; i < event.inputs.length; ++i) {
|
|
58
66
|
const input = event.inputs[i];
|
|
59
67
|
signature += `,${input.type}`;
|
|
60
|
-
eventTypeName += capitalize(input.type);
|
|
61
68
|
}
|
|
62
69
|
signature += ")";
|
|
63
70
|
return {
|
|
@@ -134,16 +141,13 @@ function getType(param, flexible) {
|
|
|
134
141
|
}
|
|
135
142
|
return 'ethers.BigNumber';
|
|
136
143
|
}
|
|
137
|
-
if (param.
|
|
144
|
+
if (param.baseType === "array") {
|
|
138
145
|
return "Array<" + getType(param.arrayChildren) + ">";
|
|
139
146
|
}
|
|
140
|
-
if (param.
|
|
147
|
+
if (param.baseType === "tuple") {
|
|
141
148
|
let struct = param.components.map((p, i) => `${p.name || "p_" + i}: ${getType(p, flexible)}`);
|
|
142
149
|
return "{ " + struct.join(", ") + " }";
|
|
143
150
|
}
|
|
144
151
|
throw new Error("unknown type");
|
|
145
152
|
}
|
|
146
|
-
function capitalize(input) {
|
|
147
|
-
return input.charAt(0).toUpperCase() + input.slice(1);
|
|
148
|
-
}
|
|
149
153
|
//# sourceMappingURL=main.js.map
|
package/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,sDAA8B;AAC9B,gDAAwB;AACxB,4CAAoB;AACpB,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@subsquid/evm-typegen",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "CLI for generating typescript types and decode implementations for evm logs",
|
|
5
5
|
"license": "GPL-3.0-or-later",
|
|
6
6
|
"repository": "git@github.com:subsquid/squid.git",
|
|
@@ -16,13 +16,13 @@
|
|
|
16
16
|
"squid-evm-typegen": "bin/run.js"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"commander": "^9.
|
|
20
|
-
"@ethersproject/abi": "^5.
|
|
21
|
-
"@subsquid/util": "^0.0.
|
|
19
|
+
"commander": "^9.3.0",
|
|
20
|
+
"@ethersproject/abi": "^5.6.4",
|
|
21
|
+
"@subsquid/util-internal-code-printer": "^0.0.1"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@types/node": "^16.11.
|
|
25
|
-
"typescript": "~4.
|
|
24
|
+
"@types/node": "^16.11.41",
|
|
25
|
+
"typescript": "~4.7.4"
|
|
26
26
|
},
|
|
27
27
|
"scripts": {
|
|
28
28
|
"build": "rm -rf lib && tsc"
|
package/src/main.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { program } from "commander";
|
|
|
2
2
|
import process from "process";
|
|
3
3
|
import path from "path";
|
|
4
4
|
import fs from "fs";
|
|
5
|
-
import { Output } from "@subsquid/util";
|
|
5
|
+
import { Output } from "@subsquid/util-internal-code-printer";
|
|
6
6
|
import { EventFragment, Interface, ParamType } from "@ethersproject/abi";
|
|
7
7
|
|
|
8
8
|
export function run(): void {
|
|
@@ -51,19 +51,27 @@ function generateTsFromAbi(inputPathRaw: string, outputPathRaw: string): void {
|
|
|
51
51
|
// validate the abi
|
|
52
52
|
const abi = new Interface(rawABI);
|
|
53
53
|
|
|
54
|
+
const typeNames: { [key: string]: number } = {};
|
|
55
|
+
|
|
54
56
|
const abiEvents: Array<AbiEvent> = Object.values(abi.events).map((event: EventFragment): AbiEvent => {
|
|
55
57
|
let signature = `${event.name}(`;
|
|
56
58
|
let eventTypeName = `${event.name}`;
|
|
57
59
|
|
|
60
|
+
if(typeNames[event.name]) {
|
|
61
|
+
eventTypeName += typeNames[event.name].toString();
|
|
62
|
+
typeNames[event.name]++;
|
|
63
|
+
} else {
|
|
64
|
+
eventTypeName += "0";
|
|
65
|
+
typeNames[event.name] = 1;
|
|
66
|
+
}
|
|
67
|
+
|
|
58
68
|
if(event.inputs.length > 0) {
|
|
59
69
|
signature += event.inputs[0].type;
|
|
60
|
-
eventTypeName += capitalize(event.inputs[0].type);
|
|
61
70
|
}
|
|
62
71
|
|
|
63
72
|
for (let i=1; i<event.inputs.length; ++i) {
|
|
64
73
|
const input = event.inputs[i];
|
|
65
74
|
signature += `,${input.type}`;
|
|
66
|
-
eventTypeName += capitalize(input.type);
|
|
67
75
|
}
|
|
68
76
|
|
|
69
77
|
signature += ")";
|
|
@@ -148,11 +156,11 @@ function getType(param: ParamType, flexible?: boolean): string {
|
|
|
148
156
|
return 'ethers.BigNumber';
|
|
149
157
|
}
|
|
150
158
|
|
|
151
|
-
if (param.
|
|
159
|
+
if (param.baseType === "array") {
|
|
152
160
|
return "Array<" + getType(param.arrayChildren) + ">";
|
|
153
161
|
}
|
|
154
162
|
|
|
155
|
-
if (param.
|
|
163
|
+
if (param.baseType === "tuple") {
|
|
156
164
|
let struct = param.components.map((p, i) => `${p.name || "p_" + i}: ${getType(p, flexible)}`);
|
|
157
165
|
return "{ " + struct.join(", ") + " }";
|
|
158
166
|
}
|
|
@@ -165,7 +173,3 @@ interface AbiEvent {
|
|
|
165
173
|
eventTypeName: string;
|
|
166
174
|
inputs: ParamType[];
|
|
167
175
|
}
|
|
168
|
-
|
|
169
|
-
function capitalize(input: string): string {
|
|
170
|
-
return input.charAt(0).toUpperCase() + input.slice(1);
|
|
171
|
-
}
|