@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.
@@ -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 (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
- };
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.isCtorAccountParamPure = void 0;
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
- exports.isCtorAccountParamPure = isCtorAccountParamPure;
35
- class BaseContract {
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
- let network = (0, viem_1.extractChain)({
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
- multicall: true,
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
- // @ts-ignore
61
- chain: network,
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
@@ -1 +1 @@
1
- {"version":3,"file":"baseContract.js","sourceRoot":"","sources":["../src/baseContract.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAWa;AACb,4CAAiD;AACjD,oDAAqC;AAsBrC,SAAgB,sBAAsB,CACpC,MAAsB;IAEtB,OAAO,CACJ,MAA+B,CAAC,UAAU,KAAK,SAAS;QACxD,MAA+B,CAAC,QAAQ,KAAK,SAAS,CACxD,CAAA;AACH,CAAC;AAPD,wDAOC;AAID,MAAa,YAAY;IACN,aAAa,CAAc;IAC3B,aAAa,CAAc;IAC3B,QAAQ,CAAe;IACvB,SAAS,CAAuB;IAChC,IAAI,CAAK;IAE1B,YACE,uBAAsC,EACtC,MAAkB,EAClB,GAAS;QAET,IAAI,CAAC,QAAQ,GAAG,uBAAuB,CAAA;QAEvC,IAAI,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,IAAI,OAAO,GAAG,IAAA,mBAAY,EAAC;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAQ;gBACpC,EAAE,EAAE,MAAM,CAAC,SAAS;aACrB,CAAC,CAAA;YACF,aAAa;YACb,IAAI,CAAC,aAAa,GAAG,IAAA,yBAAkB,EAAC;gBACtC,KAAK,EAAE;oBACL,SAAS,EAAE,IAAI;iBAChB;gBACD,aAAa;gBACb,KAAK,EAAE,OAAc;gBACrB,SAAS,EAAE,IAAA,WAAI,EAAC,MAAM,CAAC,UAAU,EAAE;oBACjC,KAAK,EAAE,IAAI;iBACZ,CAAC;aACH,CAAC,CAAA;YACF,IAAI,CAAC,aAAa,GAAG,IAAA,yBAAkB,EAAC;gBACtC,aAAa;gBACb,KAAK,EAAE,OAAc;gBACrB,SAAS,EAAE,IAAA,WAAI,EAAC,MAAM,CAAC,UAAU,EAAE;oBACjC,KAAK,EAAE,IAAI;iBACZ,CAAC;gBACF,OAAO,EAAE,IAAA,4BAAiB,EAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;aACrE,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAA;YAC5C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAA;QAC9C,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,GAAI,CAAA;QAEhB,IAAI,CAAC,SAAS,GAAG,IAAA,kBAAW,EAAC;YAC3B,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI,CAAC,aAAsB;gBACnC,MAAM,EAAE,IAAI,CAAC,aAAsB;aACpC;SACF,CAAC,CAAA;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAe,CAAA;IACnE,CAAC;CACF;AA9ED,oCA8EC"}
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
- let args = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
11
- .option('output', {
12
- describe: 'Folder for generated files',
13
- alias: 'o',
14
- })
15
- .option('minify', {
16
- describe: 'Also render minified JS-wrapper',
17
- alias: 'm',
18
- })
19
- .option('docs', {
20
- describe: 'Folder for generated docs',
21
- alias: 'd',
22
- }).argv;
23
- if (args._.length === 0) {
24
- console.log('No arguments provided. Exiting...');
25
- process.exit(0);
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
- const pattern = args._[0];
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,0CAAwC;AACxC,2CAAuC;AAEvC,IAAI,IAAI,GAAQ,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACzC,MAAM,CAAC,QAAQ,EAAE;IAChB,QAAQ,EAAE,4BAA4B;IACtC,KAAK,EAAE,GAAG;CACX,CAAC;KACD,MAAM,CAAC,QAAQ,EAAE;IAChB,QAAQ,EAAE,iCAAiC;IAC3C,KAAK,EAAE,GAAG;CACX,CAAC;KACD,MAAM,CAAC,MAAM,EAAE;IACd,QAAQ,EAAE,2BAA2B;IACrC,KAAK,EAAE,GAAG;CACX,CAAC,CAAC,IAAI,CAAA;AAET,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACzB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;AAChC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;AAE5B,IAAI,UAAU,GAAG,IAAI,qBAAU,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AACpE,UAAU;KACP,GAAG,EAAE;KACL,IAAI,CAAC,GAAG,EAAE;IACT,aAAa;AACf,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;IACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
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: Array<AbiFunction>;
11
- functions: Array<AbiFunction>;
12
- events: Array<AbiEvent>;
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 Handlebars from 'handlebars';
2
- import Context from './context.js';
1
+ import { WrapperBackend } from './context.js';
3
2
  export default class ContractTemplate {
4
- handlebars: typeof Handlebars;
5
- templatesDir: string;
6
- outputDir: string;
7
- private _template?;
8
- constructor(templatesDir: string, outputDir: string);
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
  }
@@ -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 = __importDefault(require("node:fs"));
7
+ const node_fs_1 = require("node:fs");
31
8
  const esbuild_1 = require("esbuild");
32
- const handlebars_1 = __importDefault(require("handlebars"));
33
- const helpers = __importStar(require("./helpers.js"));
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
- class ContractTemplate {
43
- handlebars;
44
- templatesDir;
45
- outputDir;
46
- _template;
47
- constructor(templatesDir, outputDir) {
48
- this.handlebars = handlebars_1.default.create();
49
- this.templatesDir = templatesDir;
50
- this.outputDir = outputDir;
51
- this.registerPartials();
52
- this.registerHelpers();
53
- }
54
- get template() {
55
- if (this._template) {
56
- return this._template;
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
- let contents = this.readTemplate('contract.mustache');
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
- registerPartials() {
67
- node_fs_1.default.readdirSync(this.templatesDir).forEach((file) => {
68
- let match = file.match(/^_(\w+)\.(handlebars|mustache)/);
69
- if (match) {
70
- this.handlebars.registerPartial(match[1], this.readTemplate(file));
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
- readTemplate(name) {
141
- let file = node_path_1.default.resolve(this.templatesDir, name);
142
- return node_fs_1.default.readFileSync(file).toString();
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":"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"}
1
+ {"version":3,"file":"contractTemplate.js","sourceRoot":"","sources":["../src/contractTemplate.ts"],"names":[],"mappings":";;;;;AAAA,0DAA4B;AAC5B,qCAAqD;AAErD,qCAA+B;AAC/B,6BAAyB;AACzB,uCAAuD;AAEvD,6CAAoD;AAEpD,MAAM,iBAAiB,GAAG,UAAU,CAAA;AACpC,MAAM,cAAc,GAAG,OAAO,CAAA;AAE9B,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO,GAAG,CAAC,IAAI,KAAK,iBAAiB,CAAA;AACvC,CAAC;AAED,SAAS,UAAU,CAAC,GAAY;IAC9B,OAAO,GAAG,CAAC,IAAI,KAAK,cAAc,CAAA;AACpC,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAuB;IAChD,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,CAAA;AAC3E,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAyB;IACjD,MAAM,SAAS,GAA2B,EAAE,CAAA;IAE5C,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5B,MAAM,UAAU,GAAc;YAC5B,GAAG,GAAG;YACN,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAC3C,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBACxC,GAAG,KAAK;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,QAAQ,KAAK,EAAE;aACpC,CAAC,CAAmB;SACtB,CAAA;QAED,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAA;QACpC,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC;YAC1C,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YAC5B,UAAU,CAAC,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,CAAA;QAClD,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;QAC7B,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC,CAAC,CAAA;AACJ,CAAC;AAOD,SAAS,qBAAqB,CAC5B,WAAmB,EACnB,WAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAY,CAAA;IAEjD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,GAAG,EAAE,MAAa,EAAE,CAAA;IAC/B,CAAC;IAED,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAmD,CAAA;QACpE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO;gBACL,GAAG,QAAQ;gBACX,GAAG,EAAE,QAAQ,CAAC,GAAU;aACzB,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,mBAAmB,WAAW,qEAAqE,CACpG,CAAA;AACH,CAAC;AAED,MAAqB,gBAAgB;IAClB,GAAG,CAAK;IACR,SAAS,CAAQ;IACjB,OAAO,CAAgB;IAExC,YACE,YAAoB,EACpB,SAAiB,EACjB,OAAuB;QAEvB,IAAI,CAAC,GAAG,GAAG,IAAI,SAAG,CAAC;YACjB,KAAK,EAAE,YAAY;YACnB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,QAAkB;QAClD,MAAM,QAAQ,GAAG,qBAAqB,CACpC,WAAW,EACX,IAAA,sBAAY,EAAC,WAAW,EAAE,MAAM,CAAC,CAClC,CAAA;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAA;QAExB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QACrC,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;QAE3D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAC5B,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,eAAe,KAAK,MAAM,IAAI,MAAM,CAAC,eAAe,KAAK,MAAM,CACzE,CAAA;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAC9B,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,eAAe,KAAK,MAAM,IAAI,MAAM,CAAC,eAAe,KAAK,MAAM,CACzE,CAAA;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAErC,MAAM,YAAY,GAAG,mBAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAA;QACjD,MAAM,QAAQ,GAAG,mBAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,mBAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;QACtE,MAAM,QAAQ,GAAG,mBAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,aAAa,CAAC,CAAA;QACvE,MAAM,oBAAoB,GAAG,mBAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QAEvE,MAAM,OAAO,GAAY;YACvB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,GAAG,EAAE,SAAS;YACd,YAAY;YACZ,oBAAoB;YACpB,OAAO;YACP,SAAS;YACT,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,OAAO,KAAK,MAAM;YAC/B,QAAQ,EAAE,IAAI,CAAC,OAAO,KAAK,QAAQ;YACnC,OAAO,EAAE,IAAA,kCAAqB,GAAE;SACjC,CAAA;QAED,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAC9D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAA;QAC/D,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAA,iBAAkB,EAAC,IAAI,EAAE;YACnD,MAAM,EAAE,YAAY;YACpB,WAAW,EAAE,IAAI;YACjB,IAAI,EAAE,KAAK;YACX,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,EAAE;SACf,CAAC,CAAA;QAEF,IAAA,uBAAa,EAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,CAAA;QAE9C,IAAI,CAAC,QAAQ;YAAE,OAAM;QAErB,MAAM,IAAA,eAAK,EAAC;YACV,WAAW,EAAE,CAAC,QAAQ,CAAC;YACvB,OAAO,EAAE,GAAG,QAAQ,SAAS;YAC7B,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,CAAC,QAAQ,CAAC;SACnB,CAAC,CAAA;IACJ,CAAC;CACF;AAvFD,mCAuFC"}
package/dist/helpers.d.ts CHANGED
@@ -1,2 +1,8 @@
1
- export declare function inputType(solidityType: string, components?: Array<any>): string;
2
- export declare function outputType(solidityType: string): string;
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;