@riaskov/iohtee-abi-wrapper 2.0.9 → 3.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/LICENSE +202 -0
- package/README.md +73 -101
- package/dist/abiWrapper.d.ts +8 -6
- package/dist/abiWrapper.js +68 -36
- package/dist/abiWrapper.js.map +1 -1
- package/dist/baseContract.d.ts +28 -3
- package/dist/baseContract.js +89 -28
- package/dist/baseContract.js.map +1 -1
- package/dist/bin/iohtee-abi-wrapper.js +39 -28
- package/dist/bin/iohtee-abi-wrapper.js.map +1 -1
- package/dist/context.d.ts +16 -3
- package/dist/contractTemplate.d.ts +6 -12
- package/dist/contractTemplate.js +101 -120
- package/dist/contractTemplate.js.map +1 -1
- package/dist/helpers.d.ts +8 -2
- package/dist/helpers.js +65 -25
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/package.json +71 -70
- package/templates/contract.ethers.eta +107 -0
- package/templates/contract.viem.eta +128 -0
- package/templates/_event_enum.mustache +0 -1
- package/templates/_event_types.mustache +0 -10
- package/templates/_event_utils.mustache +0 -3
- package/templates/_filter.mustache +0 -3
- package/templates/_function.mustache +0 -21
- package/templates/_getter.mustache +0 -10
- package/templates/_method_input.mustache +0 -4
- package/templates/_method_output.mustache +0 -10
- package/templates/_params.mustache +0 -1
- package/templates/contract.mustache +0 -92
package/dist/baseContract.js
CHANGED
|
@@ -15,24 +15,51 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.BaseContract = exports.
|
|
36
|
+
exports.BaseContract = exports.BaseContractEthers = exports.BaseContractViem = void 0;
|
|
37
|
+
exports.isCtorAccountParamPure = isCtorAccountParamPure;
|
|
38
|
+
exports.isCtorAccountParamViem = isCtorAccountParamViem;
|
|
39
|
+
exports.isCtorAccountParamEthers = isCtorAccountParamEthers;
|
|
27
40
|
const viem_1 = require("viem");
|
|
28
41
|
const accounts_1 = require("viem/accounts");
|
|
29
42
|
const chains = __importStar(require("viem/chains"));
|
|
43
|
+
const ethers_1 = require("ethers");
|
|
30
44
|
function isCtorAccountParamPure(params) {
|
|
31
45
|
return (params.httpRpcUrl !== undefined &&
|
|
32
46
|
params.mnemonic !== undefined);
|
|
33
47
|
}
|
|
34
|
-
|
|
35
|
-
|
|
48
|
+
function isCtorAccountParamViem(params) {
|
|
49
|
+
return (params.publicClientViem !== undefined &&
|
|
50
|
+
params.walletClientViem !== undefined);
|
|
51
|
+
}
|
|
52
|
+
function isCtorAccountParamEthers(params) {
|
|
53
|
+
return (params.providerEthers !== undefined &&
|
|
54
|
+
params.signerEthers !== undefined);
|
|
55
|
+
}
|
|
56
|
+
function findChainById(networkId) {
|
|
57
|
+
return Object.values(chains).find((value) => typeof value === 'object' &&
|
|
58
|
+
value !== null &&
|
|
59
|
+
'id' in value &&
|
|
60
|
+
value.id === networkId);
|
|
61
|
+
}
|
|
62
|
+
class BaseContractViem {
|
|
36
63
|
_publicClient;
|
|
37
64
|
_walletClient;
|
|
38
65
|
_address;
|
|
@@ -41,27 +68,15 @@ class BaseContract {
|
|
|
41
68
|
constructor(deployedContractAddress, params, abi) {
|
|
42
69
|
this._address = deployedContractAddress;
|
|
43
70
|
if (isCtorAccountParamPure(params)) {
|
|
44
|
-
|
|
45
|
-
chains: Object.values(chains),
|
|
46
|
-
id: params.networkId,
|
|
47
|
-
});
|
|
48
|
-
// @ts-ignore
|
|
71
|
+
const chain = findChainById(params.networkId);
|
|
49
72
|
this._publicClient = (0, viem_1.createPublicClient)({
|
|
50
|
-
batch: {
|
|
51
|
-
|
|
52
|
-
},
|
|
53
|
-
// @ts-ignore
|
|
54
|
-
chain: network,
|
|
55
|
-
transport: (0, viem_1.http)(params.httpRpcUrl, {
|
|
56
|
-
batch: true,
|
|
57
|
-
}),
|
|
73
|
+
batch: { multicall: true },
|
|
74
|
+
chain,
|
|
75
|
+
transport: (0, viem_1.http)(params.httpRpcUrl, { batch: true }),
|
|
58
76
|
});
|
|
59
77
|
this._walletClient = (0, viem_1.createWalletClient)({
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
transport: (0, viem_1.http)(params.httpRpcUrl, {
|
|
63
|
-
batch: true,
|
|
64
|
-
}),
|
|
78
|
+
chain,
|
|
79
|
+
transport: (0, viem_1.http)(params.httpRpcUrl, { batch: true }),
|
|
65
80
|
account: (0, accounts_1.mnemonicToAccount)(params.mnemonic, { path: params.hdPath }),
|
|
66
81
|
});
|
|
67
82
|
}
|
|
@@ -98,5 +113,51 @@ class BaseContract {
|
|
|
98
113
|
return this.abi().filter((e) => e.type === 'event');
|
|
99
114
|
}
|
|
100
115
|
}
|
|
116
|
+
exports.BaseContractViem = BaseContractViem;
|
|
117
|
+
class BaseContractEthers {
|
|
118
|
+
_provider;
|
|
119
|
+
_signer;
|
|
120
|
+
_address;
|
|
121
|
+
_contract;
|
|
122
|
+
_abi;
|
|
123
|
+
constructor(deployedContractAddress, params, abi) {
|
|
124
|
+
this._address = deployedContractAddress;
|
|
125
|
+
if (isCtorAccountParamPure(params)) {
|
|
126
|
+
this._provider = new ethers_1.JsonRpcProvider(params.httpRpcUrl, params.networkId);
|
|
127
|
+
const hdWallet = ethers_1.HDNodeWallet.fromPhrase(params.mnemonic, undefined, params.hdPath);
|
|
128
|
+
this._signer = new ethers_1.Wallet(hdWallet.privateKey, this._provider);
|
|
129
|
+
}
|
|
130
|
+
else if (isCtorAccountParamEthers(params)) {
|
|
131
|
+
this._provider = params.providerEthers;
|
|
132
|
+
this._signer = params.signerEthers;
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
throw new Error('Invalid ctor params for ethers backend');
|
|
136
|
+
}
|
|
137
|
+
this._abi = abi;
|
|
138
|
+
this._contract = new ethers_1.Contract(this._address, this._abi, this._signer);
|
|
139
|
+
}
|
|
140
|
+
provider() {
|
|
141
|
+
return this._provider;
|
|
142
|
+
}
|
|
143
|
+
signer() {
|
|
144
|
+
return this._signer;
|
|
145
|
+
}
|
|
146
|
+
contract() {
|
|
147
|
+
return this._contract;
|
|
148
|
+
}
|
|
149
|
+
address() {
|
|
150
|
+
return this._address;
|
|
151
|
+
}
|
|
152
|
+
abi() {
|
|
153
|
+
return this._abi;
|
|
154
|
+
}
|
|
155
|
+
events() {
|
|
156
|
+
return this._abi.filter((e) => e.type === 'event');
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
exports.BaseContractEthers = BaseContractEthers;
|
|
160
|
+
class BaseContract extends BaseContractViem {
|
|
161
|
+
}
|
|
101
162
|
exports.BaseContract = BaseContract;
|
|
102
163
|
//# sourceMappingURL=baseContract.js.map
|
package/dist/baseContract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseContract.js","sourceRoot":"","sources":["../src/baseContract.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"baseContract.js","sourceRoot":"","sources":["../src/baseContract.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,36 +5,47 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
const yargs_1 = __importDefault(require("yargs"));
|
|
8
|
-
const index_js_1 = require("../index.js");
|
|
9
8
|
const helpers_1 = require("yargs/helpers");
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
9
|
+
const index_js_1 = require("../index.js");
|
|
10
|
+
async function main() {
|
|
11
|
+
const args = (await (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
|
|
12
|
+
.scriptName('iohtee-abi-wrapper')
|
|
13
|
+
.usage('$0 [options] <input>')
|
|
14
|
+
.option('output', {
|
|
15
|
+
describe: 'Folder for generated files',
|
|
16
|
+
alias: 'o',
|
|
17
|
+
type: 'string',
|
|
18
|
+
demandOption: true,
|
|
19
|
+
})
|
|
20
|
+
.option('minify', {
|
|
21
|
+
describe: 'Also render minified JS-wrapper',
|
|
22
|
+
alias: 'm',
|
|
23
|
+
type: 'boolean',
|
|
24
|
+
default: false,
|
|
25
|
+
})
|
|
26
|
+
.option('docs', {
|
|
27
|
+
describe: 'Folder for generated docs',
|
|
28
|
+
alias: 'd',
|
|
29
|
+
type: 'string',
|
|
30
|
+
})
|
|
31
|
+
.option('backend', {
|
|
32
|
+
describe: 'Generated backend implementation',
|
|
33
|
+
alias: 'b',
|
|
34
|
+
choices: ['viem', 'ethers'],
|
|
35
|
+
default: 'viem',
|
|
36
|
+
})
|
|
37
|
+
.strictOptions()
|
|
38
|
+
.demandCommand(1)
|
|
39
|
+
.help()
|
|
40
|
+
.parse());
|
|
41
|
+
if (!args._.length) {
|
|
42
|
+
throw new Error('No ABI input path provided.');
|
|
43
|
+
}
|
|
44
|
+
const inputs = args._.map((value) => String(value));
|
|
45
|
+
const abiWrapper = new index_js_1.AbiWrapper(inputs, args.output, args.minify, args.docs, args.backend);
|
|
46
|
+
await abiWrapper.run();
|
|
26
47
|
}
|
|
27
|
-
|
|
28
|
-
const outputDir = args['output'];
|
|
29
|
-
const minify = args['minify'];
|
|
30
|
-
const docsDir = args['docs'];
|
|
31
|
-
let abiWrapper = new index_js_1.AbiWrapper(pattern, outputDir, minify, docsDir);
|
|
32
|
-
abiWrapper
|
|
33
|
-
.run()
|
|
34
|
-
.then(() => {
|
|
35
|
-
// Do Nothing
|
|
36
|
-
})
|
|
37
|
-
.catch((error) => {
|
|
48
|
+
main().catch((error) => {
|
|
38
49
|
console.error(error);
|
|
39
50
|
process.exit(1);
|
|
40
51
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iohtee-abi-wrapper.js","sourceRoot":"","sources":["../../src/bin/iohtee-abi-wrapper.ts"],"names":[],"mappings":";;;;;;AAEA,kDAAyB;AACzB,
|
|
1
|
+
{"version":3,"file":"iohtee-abi-wrapper.js","sourceRoot":"","sources":["../../src/bin/iohtee-abi-wrapper.ts"],"names":[],"mappings":";;;;;;AAEA,kDAAyB;AACzB,2CAAuC;AACvC,0CAAwC;AAWxC,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,CAAC,MAAM,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC7C,UAAU,CAAC,oBAAoB,CAAC;SAChC,KAAK,CAAC,sBAAsB,CAAC;SAC7B,MAAM,CAAC,QAAQ,EAAE;QAChB,QAAQ,EAAE,4BAA4B;QACtC,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;KACnB,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QAChB,QAAQ,EAAE,iCAAiC;QAC3C,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;KACf,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACd,QAAQ,EAAE,2BAA2B;QACrC,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;KACf,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,QAAQ,EAAE,kCAAkC;QAC5C,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAU;QACpC,OAAO,EAAE,MAAe;KACzB,CAAC;SACD,aAAa,EAAE;SACf,aAAa,CAAC,CAAC,CAAC;SAChB,IAAI,EAAE;SACN,KAAK,EAAE,CAAY,CAAA;IAEtB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG,IAAI,qBAAU,CAC/B,MAAM,EACN,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,CACb,CAAA;IAED,MAAM,UAAU,CAAC,GAAG,EAAE,CAAA;AACxB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
package/dist/context.d.ts
CHANGED
|
@@ -1,13 +1,26 @@
|
|
|
1
|
+
import { AbiParameter } from 'viem';
|
|
1
2
|
import { AbiEvent, AbiFunction } from 'viem';
|
|
3
|
+
export type WrapperBackend = 'viem' | 'ethers';
|
|
2
4
|
export interface MethodAbi extends AbiFunction {
|
|
3
5
|
singleReturnValue: boolean;
|
|
6
|
+
namePostfix?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface TemplateHelpers {
|
|
9
|
+
renderType: (solidityType: string, components?: readonly AbiParameter[]) => string;
|
|
10
|
+
renderMethodInput: (inputs: MethodAbi['inputs'], trailingComma?: boolean) => string;
|
|
11
|
+
renderMethodOutput: (method: MethodAbi) => string;
|
|
12
|
+
renderParams: (inputs: MethodAbi['inputs']) => string;
|
|
4
13
|
}
|
|
5
14
|
export default interface Context {
|
|
6
15
|
artifact: string;
|
|
7
16
|
abi: string;
|
|
8
17
|
contractName: string;
|
|
9
18
|
relativeArtifactPath: string;
|
|
10
|
-
getters:
|
|
11
|
-
functions:
|
|
12
|
-
events:
|
|
19
|
+
getters: MethodAbi[];
|
|
20
|
+
functions: MethodAbi[];
|
|
21
|
+
events: AbiEvent[];
|
|
22
|
+
backend: WrapperBackend;
|
|
23
|
+
isViem: boolean;
|
|
24
|
+
isEthers: boolean;
|
|
25
|
+
helpers: TemplateHelpers;
|
|
13
26
|
}
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import Context from './context.js';
|
|
1
|
+
import { WrapperBackend } from './context.js';
|
|
3
2
|
export default class ContractTemplate {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
get template(): Handlebars.TemplateDelegate<Context>;
|
|
10
|
-
registerPartials(): void;
|
|
11
|
-
registerHelpers(): void;
|
|
12
|
-
render(abiFilePath: string, minified?: boolean): void;
|
|
13
|
-
protected readTemplate(name: string): string;
|
|
3
|
+
private readonly eta;
|
|
4
|
+
private readonly outputDir;
|
|
5
|
+
private readonly backend;
|
|
6
|
+
constructor(templatesDir: string, outputDir: string, backend: WrapperBackend);
|
|
7
|
+
render(abiFilePath: string, minified?: boolean): Promise<void>;
|
|
14
8
|
}
|
package/dist/contractTemplate.js
CHANGED
|
@@ -1,36 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
4
|
};
|
|
28
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
6
|
const node_path_1 = __importDefault(require("node:path"));
|
|
30
|
-
const node_fs_1 =
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
31
8
|
const esbuild_1 = require("esbuild");
|
|
32
|
-
const
|
|
33
|
-
const
|
|
9
|
+
const eta_1 = require("eta");
|
|
10
|
+
const prettier_1 = require("prettier");
|
|
11
|
+
const helpers_js_1 = require("./helpers.js");
|
|
34
12
|
const ABI_TYPE_FUNCTION = 'function';
|
|
35
13
|
const ABI_TYPE_EVENT = 'event';
|
|
36
14
|
function isAbiFunction(abi) {
|
|
@@ -39,107 +17,110 @@ function isAbiFunction(abi) {
|
|
|
39
17
|
function isAbiEvent(abi) {
|
|
40
18
|
return abi.type === ABI_TYPE_EVENT;
|
|
41
19
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
20
|
+
function buildTemplateName(backend) {
|
|
21
|
+
return backend === 'ethers' ? 'contract.ethers.eta' : 'contract.viem.eta';
|
|
22
|
+
}
|
|
23
|
+
function normalizeMethods(abiMethods) {
|
|
24
|
+
const nameCount = {};
|
|
25
|
+
return abiMethods.map((abi) => {
|
|
26
|
+
const normalized = {
|
|
27
|
+
...abi,
|
|
28
|
+
singleReturnValue: abi.outputs.length === 1,
|
|
29
|
+
inputs: abi.inputs.map((input, index) => ({
|
|
30
|
+
...input,
|
|
31
|
+
name: input.name || `param${index}`,
|
|
32
|
+
})),
|
|
33
|
+
};
|
|
34
|
+
const originalName = normalized.name;
|
|
35
|
+
if (nameCount[originalName] !== undefined) {
|
|
36
|
+
nameCount[originalName] += 1;
|
|
37
|
+
normalized.namePostfix = nameCount[originalName];
|
|
57
38
|
}
|
|
58
39
|
else {
|
|
59
|
-
|
|
60
|
-
this._template = this.handlebars.compile(contents, {
|
|
61
|
-
noEscape: true,
|
|
62
|
-
});
|
|
63
|
-
return this._template;
|
|
40
|
+
nameCount[originalName] = 0;
|
|
64
41
|
}
|
|
42
|
+
return normalized;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function parseArtifactOrRawAbi(abiFilePath, fileContent) {
|
|
46
|
+
const parsed = JSON.parse(fileContent);
|
|
47
|
+
if (Array.isArray(parsed)) {
|
|
48
|
+
return { abi: parsed };
|
|
65
49
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
registerHelpers() {
|
|
75
|
-
this.handlebars.registerHelper('inputType', helpers.inputType);
|
|
76
|
-
this.handlebars.registerHelper('outputType', helpers.outputType);
|
|
77
|
-
}
|
|
78
|
-
render(abiFilePath, minified) {
|
|
79
|
-
let artifact = JSON.parse(node_fs_1.default.readFileSync(abiFilePath).toString());
|
|
80
|
-
const sourceAbi = JSON.stringify(artifact.abi);
|
|
81
|
-
let abi = artifact.abi;
|
|
82
|
-
if (abi) {
|
|
83
|
-
let methods = abi.filter(isAbiFunction).map((abi) => {
|
|
84
|
-
if (abi.outputs.length === 1) {
|
|
85
|
-
abi.singleReturnValue = true;
|
|
86
|
-
}
|
|
87
|
-
abi.inputs = abi.inputs.map((input, index) => {
|
|
88
|
-
input.name = input.name ? input.name : `param${index}`;
|
|
89
|
-
return input;
|
|
90
|
-
});
|
|
91
|
-
return abi;
|
|
92
|
-
});
|
|
93
|
-
const nameCount = {};
|
|
94
|
-
methods = methods.map((abi) => {
|
|
95
|
-
const originalName = abi.name;
|
|
96
|
-
if (nameCount[originalName] >= 0) {
|
|
97
|
-
nameCount[originalName]++;
|
|
98
|
-
abi['namePostfix'] = nameCount[originalName];
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
nameCount[originalName] = 0;
|
|
102
|
-
}
|
|
103
|
-
return abi;
|
|
104
|
-
});
|
|
105
|
-
let getters = methods.filter((abi) => abi.stateMutability === 'view' || abi.stateMutability === 'pure');
|
|
106
|
-
let functions = methods.filter((abi) => abi.stateMutability !== 'view' && abi.stateMutability !== 'pure');
|
|
107
|
-
let events = abi.filter(isAbiEvent);
|
|
108
|
-
let contractName = node_path_1.default.parse(abiFilePath).name;
|
|
109
|
-
const basename = node_path_1.default.basename(abiFilePath, node_path_1.default.extname(abiFilePath));
|
|
110
|
-
const filePath = `${this.outputDir}/${basename}Contract.ts`;
|
|
111
|
-
const relativeArtifactPath = node_path_1.default.relative(this.outputDir, abiFilePath);
|
|
112
|
-
let context = {
|
|
113
|
-
artifact: JSON.stringify(artifact, null, 2),
|
|
114
|
-
abi: JSON.stringify(sourceAbi),
|
|
115
|
-
contractName: contractName,
|
|
116
|
-
relativeArtifactPath: relativeArtifactPath,
|
|
117
|
-
getters: getters,
|
|
118
|
-
functions: functions,
|
|
119
|
-
events: events,
|
|
50
|
+
if (parsed && typeof parsed === 'object') {
|
|
51
|
+
const artifact = parsed;
|
|
52
|
+
if (Array.isArray(artifact.abi)) {
|
|
53
|
+
return {
|
|
54
|
+
...artifact,
|
|
55
|
+
abi: artifact.abi,
|
|
120
56
|
};
|
|
121
|
-
let code = this.template(context);
|
|
122
|
-
node_fs_1.default.writeFileSync(filePath, code);
|
|
123
|
-
if (minified) {
|
|
124
|
-
(0, esbuild_1.build)({
|
|
125
|
-
entryPoints: [filePath],
|
|
126
|
-
outfile: `${filePath}.min.js`,
|
|
127
|
-
bundle: false,
|
|
128
|
-
minify: true,
|
|
129
|
-
format: 'esm',
|
|
130
|
-
platform: 'node',
|
|
131
|
-
sourcemap: false,
|
|
132
|
-
target: ['es2020'],
|
|
133
|
-
}).then();
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
throw new Error(`No ABI found in ${abiFilePath}.`);
|
|
138
57
|
}
|
|
139
58
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
59
|
+
throw new Error(`No ABI found in ${abiFilePath}. Expected either a raw ABI array or an artifact object with "abi".`);
|
|
60
|
+
}
|
|
61
|
+
class ContractTemplate {
|
|
62
|
+
eta;
|
|
63
|
+
outputDir;
|
|
64
|
+
backend;
|
|
65
|
+
constructor(templatesDir, outputDir, backend) {
|
|
66
|
+
this.eta = new eta_1.Eta({
|
|
67
|
+
views: templatesDir,
|
|
68
|
+
autoEscape: false,
|
|
69
|
+
autoTrim: false,
|
|
70
|
+
});
|
|
71
|
+
this.outputDir = outputDir;
|
|
72
|
+
this.backend = backend;
|
|
73
|
+
}
|
|
74
|
+
async render(abiFilePath, minified) {
|
|
75
|
+
const artifact = parseArtifactOrRawAbi(abiFilePath, (0, node_fs_1.readFileSync)(abiFilePath, 'utf8'));
|
|
76
|
+
const abi = artifact.abi;
|
|
77
|
+
const sourceAbi = JSON.stringify(abi);
|
|
78
|
+
const methods = normalizeMethods(abi.filter(isAbiFunction));
|
|
79
|
+
const getters = methods.filter((method) => method.stateMutability === 'view' || method.stateMutability === 'pure');
|
|
80
|
+
const functions = methods.filter((method) => method.stateMutability !== 'view' && method.stateMutability !== 'pure');
|
|
81
|
+
const events = abi.filter(isAbiEvent);
|
|
82
|
+
const contractName = node_path_1.default.parse(abiFilePath).name;
|
|
83
|
+
const basename = node_path_1.default.basename(abiFilePath, node_path_1.default.extname(abiFilePath));
|
|
84
|
+
const filePath = node_path_1.default.resolve(this.outputDir, `${basename}Contract.ts`);
|
|
85
|
+
const relativeArtifactPath = node_path_1.default.relative(this.outputDir, abiFilePath);
|
|
86
|
+
const context = {
|
|
87
|
+
artifact: JSON.stringify(artifact, null, 2),
|
|
88
|
+
abi: sourceAbi,
|
|
89
|
+
contractName,
|
|
90
|
+
relativeArtifactPath,
|
|
91
|
+
getters,
|
|
92
|
+
functions,
|
|
93
|
+
events,
|
|
94
|
+
backend: this.backend,
|
|
95
|
+
isViem: this.backend === 'viem',
|
|
96
|
+
isEthers: this.backend === 'ethers',
|
|
97
|
+
helpers: (0, helpers_js_1.createTemplateHelpers)(),
|
|
98
|
+
};
|
|
99
|
+
const templateName = buildTemplateName(this.backend);
|
|
100
|
+
const code = await this.eta.renderAsync(templateName, context);
|
|
101
|
+
if (!code) {
|
|
102
|
+
throw new Error(`Unable to render template: ${templateName}`);
|
|
103
|
+
}
|
|
104
|
+
const formattedCode = await (0, prettier_1.format)(code, {
|
|
105
|
+
parser: 'typescript',
|
|
106
|
+
singleQuote: true,
|
|
107
|
+
semi: false,
|
|
108
|
+
trailingComma: 'all',
|
|
109
|
+
printWidth: 80,
|
|
110
|
+
});
|
|
111
|
+
(0, node_fs_1.writeFileSync)(filePath, formattedCode, 'utf8');
|
|
112
|
+
if (!minified)
|
|
113
|
+
return;
|
|
114
|
+
await (0, esbuild_1.build)({
|
|
115
|
+
entryPoints: [filePath],
|
|
116
|
+
outfile: `${filePath}.min.js`,
|
|
117
|
+
bundle: false,
|
|
118
|
+
minify: true,
|
|
119
|
+
format: 'esm',
|
|
120
|
+
platform: 'node',
|
|
121
|
+
sourcemap: false,
|
|
122
|
+
target: ['es2022'],
|
|
123
|
+
});
|
|
143
124
|
}
|
|
144
125
|
}
|
|
145
126
|
exports.default = ContractTemplate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contractTemplate.js","sourceRoot":"","sources":["../src/contractTemplate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"contractTemplate.js","sourceRoot":"","sources":["../src/contractTemplate.ts"],"names":[],"mappings":"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"}
|
package/dist/helpers.d.ts
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { AbiParameter } from 'viem';
|
|
2
|
+
import { MethodAbi, TemplateHelpers } from './context.js';
|
|
3
|
+
export declare function inputType(solidityType: string, components?: readonly AbiParameter[]): string;
|
|
4
|
+
export declare function outputType(solidityType: string, components?: readonly AbiParameter[]): string;
|
|
5
|
+
export declare function renderMethodInput(inputs: readonly AbiParameter[], trailingComma?: boolean): string;
|
|
6
|
+
export declare function renderParams(inputs: readonly AbiParameter[]): string;
|
|
7
|
+
export declare function renderMethodOutput(method: MethodAbi): string;
|
|
8
|
+
export declare function createTemplateHelpers(): TemplateHelpers;
|