@pasosdejesus/contract-test 0.2.3 → 0.3.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.
@@ -0,0 +1,7 @@
1
+ export interface CleanResult {
2
+ app: string;
3
+ removed: string[];
4
+ }
5
+ export declare function cleanProject(root?: string): CleanResult;
6
+ export declare function runContractClean(args?: string[]): void;
7
+ //# sourceMappingURL=clean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../src/clean.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAsB,GAAG,WAAW,CAWtE;AAWD,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,IAAI,CAY7E"}
package/dist/clean.js ADDED
@@ -0,0 +1,55 @@
1
+ /**
2
+ * contract:clean — remove generated contract outputs without Hardhat.
3
+ *
4
+ * Deletes `artifacts/`, `cache/`, `typechain-types/` and `dist/` from the
5
+ * contracts app. Deployments and sources are never touched.
6
+ *
7
+ * https://gitlab.com/pasosdeJesus/m/-/work_items/58
8
+ */
9
+ import * as fs from 'fs';
10
+ import * as path from 'path';
11
+ import { findContractsApp } from './compile.js';
12
+ import { info, success, problem } from '@pasosdejesus/m/dist/util/colors.js';
13
+ const TARGETS = ['artifacts', 'cache', 'typechain-types', 'dist'];
14
+ export function cleanProject(root = process.cwd()) {
15
+ const app = findContractsApp(path.resolve(root));
16
+ if (!app)
17
+ throw new Error('no contracts app found (apps/contracts, apps/hardhat or hardhat/)');
18
+ const removed = [];
19
+ for (const target of TARGETS) {
20
+ const dir = path.join(app, target);
21
+ if (!fs.existsSync(dir))
22
+ continue;
23
+ fs.rmSync(dir, { recursive: true, force: true });
24
+ removed.push(target);
25
+ }
26
+ return { app: path.relative(path.resolve(root), app) || '.', removed };
27
+ }
28
+ function parseArgs(args) {
29
+ const options = {};
30
+ for (let index = 0; index < args.length; index++) {
31
+ if (args[index] === '--root')
32
+ options.root = args[++index];
33
+ else if (args[index] === '--json')
34
+ options.json = true;
35
+ }
36
+ return options;
37
+ }
38
+ export function runContractClean(args = process.argv.slice(3)) {
39
+ const options = parseArgs(args);
40
+ try {
41
+ const result = cleanProject(options.root);
42
+ if (options.json)
43
+ console.log(JSON.stringify(result, null, 2));
44
+ else if (result.removed.length === 0)
45
+ info(`[OK] ${result.app}: nada que limpiar`);
46
+ else
47
+ success(`[OK] ${result.app}: eliminado ${result.removed.join(', ')}`);
48
+ process.exit(0);
49
+ }
50
+ catch (error) {
51
+ problem(error instanceof Error ? error.message : String(error));
52
+ process.exit(1);
53
+ }
54
+ }
55
+ //# sourceMappingURL=clean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../src/clean.ts"],"names":[],"mappings":"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"}
package/dist/compile.d.ts CHANGED
@@ -5,6 +5,8 @@ export interface ProjectCompileConfig extends CompileSettings {
5
5
  export interface CompilerChoice {
6
6
  kind: 'native' | 'solc-js';
7
7
  version: string;
8
+ /** Version with the commit hash, as explorers require it. */
9
+ fullVersion?: string;
8
10
  label: string;
9
11
  compile(input: string): string;
10
12
  }
@@ -12,6 +14,7 @@ export interface CompileResult {
12
14
  app: string;
13
15
  compiler: string;
14
16
  version: string;
17
+ compilerVersion?: string;
15
18
  contracts: number;
16
19
  artifacts: string[];
17
20
  warnings: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAGtE,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe5D;AAUD,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAkCtE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,OAAO,IAAI,MAAM,CAAA;CAAE,GAAG,MAAM,CAEjE;AAiBD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,cAAc,CAuEjB;AAuBD,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAmDnG;AAMD,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,GAAG,aAAa,CAiEhB;AAoBD,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,IAAI,CAiB/E"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAGtE,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe5D;AAUD,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAkCtE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,OAAO,IAAI,MAAM,CAAA;CAAE,GAAG,MAAM,CAEjE;AAsBD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,cAAc,CAoFjB;AAuBD,qFAAqF;AACrF,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAmDnG;AAMD,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,GAAG,aAAa,CAkEhB;AAoBD,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,IAAI,CAiB/E"}
package/dist/compile.js CHANGED
@@ -85,11 +85,15 @@ export function solcJsVersion(solc) {
85
85
  return solc.version().split('+')[0].split('.Emscripten')[0];
86
86
  }
87
87
  function nativeSolcVersion(binary) {
88
+ const full = nativeSolcFullVersion(binary);
89
+ return full ? full.split('+')[0].split('.Emscripten')[0].trim() : null;
90
+ }
91
+ function nativeSolcFullVersion(binary) {
88
92
  const run = spawnSync(binary, ['--version'], { encoding: 'utf-8' });
89
93
  if (run.status !== 0 || !run.stdout)
90
94
  return null;
91
95
  const line = run.stdout.split('\n').find((entry) => entry.includes('Version:'));
92
- return line ? line.replace(/.*Version:\s*/, '').split('+')[0].split('.Emscripten')[0].trim() : null;
96
+ return line ? line.replace(/.*Version:\s*/, '').trim() : null;
93
97
  }
94
98
  function loadSolcJs(pathOrModule) {
95
99
  if (pathOrModule.includes('/') || pathOrModule.endsWith('.js')) {
@@ -119,6 +123,7 @@ export function selectCompiler(options) {
119
123
  return {
120
124
  kind: 'native',
121
125
  version,
126
+ fullVersion: nativeSolcFullVersion(binary) ?? undefined,
122
127
  label: `${binary} (native)`,
123
128
  compile: (input) => {
124
129
  const run = spawnSync(binary, ['--standard-json', '--base-path', options.appDir ?? process.cwd()], {
@@ -138,7 +143,13 @@ export function selectCompiler(options) {
138
143
  if (pin && version !== pin) {
139
144
  throw new Error(`solc-js at ${options.solcJs} is ${version}, but the project pins ${pin}`);
140
145
  }
141
- return { kind: 'solc-js', version, label: `${options.solcJs} (solc-js)`, compile: (input) => module.compile(input) };
146
+ return {
147
+ kind: 'solc-js',
148
+ version,
149
+ fullVersion: module.version(),
150
+ label: `${options.solcJs} (solc-js)`,
151
+ compile: (input) => module.compile(input),
152
+ };
142
153
  }
143
154
  // The project's own `solc` wins (it declares the pin); contract-test ships
144
155
  // one too so the template compiles out of the box.
@@ -161,7 +172,13 @@ export function selectCompiler(options) {
161
172
  for (const { label, module } of modules) {
162
173
  const version = solcJsVersion(module);
163
174
  if (!pin || version === pin) {
164
- return { kind: 'solc-js', version, label: `${label} ${version}`, compile: (input) => module.compile(input) };
175
+ return {
176
+ kind: 'solc-js',
177
+ version,
178
+ fullVersion: module.version(),
179
+ label: `${label} ${version}`,
180
+ compile: (input) => module.compile(input),
181
+ };
165
182
  }
166
183
  }
167
184
  if (modules.length > 0) {
@@ -298,6 +315,7 @@ export function compileProject(options) {
298
315
  app: app === root ? '.' : path.relative(root, app),
299
316
  compiler: compiler.label,
300
317
  version: compiler.version,
318
+ compilerVersion: compiler.fullVersion,
301
319
  contracts: Object.values((output.contracts ?? {}))
302
320
  .reduce((total, names) => total + Object.keys(names).length, 0),
303
321
  artifacts,
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export interface DeployOptions {
2
+ root?: string;
3
+ contract?: string;
4
+ network?: string;
5
+ rpc?: string;
6
+ privateKey?: string;
7
+ args?: unknown[];
8
+ deploymentsDir?: string;
9
+ json?: boolean;
10
+ }
11
+ export interface DeployResult {
12
+ contract: string;
13
+ address: string;
14
+ chainId: number;
15
+ network: string;
16
+ transactionHash: string;
17
+ file: string;
18
+ }
19
+ interface Artifact {
20
+ contractName: string;
21
+ abi: unknown[];
22
+ bytecode: string;
23
+ }
24
+ export declare function findArtifact(appDir: string, contract: string): Artifact;
25
+ export declare function readProjectNetwork(appDir: string, network: string): {
26
+ url?: string;
27
+ chainId?: number;
28
+ };
29
+ export declare function deployProject(options: DeployOptions): Promise<DeployResult>;
30
+ export declare function runContractDeploy(args?: string[]): Promise<void>;
31
+ export {};
32
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,QAAQ;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,OAAO,EAAE,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAUD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAMvE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAoBtG;AAiBD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA4EjF;AAkBD,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAe7F"}
package/dist/deploy.js ADDED
@@ -0,0 +1,193 @@
1
+ /**
2
+ * contract:deploy — deploy an artifact with viem (no Hardhat).
3
+ *
4
+ * Reads the artifact written by `contract:compile`, the RPC URL from
5
+ * `contracts.config.json`/`hardhat.config.ts` (or `--rpc`), and the signer from
6
+ * `--private-key`/`PRIVATE_KEY`. Writes a deployment JSON compatible with
7
+ * `@pasosdejesus/m/blockchain/deployments`.
8
+ *
9
+ * Real-value deployments must be authorized by the operator; the agent only
10
+ * runs this on local nodes or testnets.
11
+ *
12
+ * https://gitlab.com/pasosdeJesus/m/-/work_items/58
13
+ */
14
+ import * as fs from 'fs';
15
+ import * as path from 'path';
16
+ import { findContractsApp } from './compile.js';
17
+ import { listArtifacts } from './typechain.js';
18
+ import { info, success, problem, warn } from '@pasosdejesus/m/dist/util/colors.js';
19
+ function readJson(file) {
20
+ try {
21
+ return JSON.parse(fs.readFileSync(file, 'utf-8'));
22
+ }
23
+ catch {
24
+ return null;
25
+ }
26
+ }
27
+ export function findArtifact(appDir, contract) {
28
+ for (const file of listArtifacts(appDir)) {
29
+ const data = readJson(file);
30
+ if (data?.contractName === contract)
31
+ return data;
32
+ }
33
+ throw new Error(`artifact for ${contract} not found; run contract:compile first`);
34
+ }
35
+ export function readProjectNetwork(appDir, network) {
36
+ const config = readJson(path.join(appDir, 'contracts.config.json'));
37
+ const entry = config?.networks?.[network];
38
+ if (entry && typeof entry === 'object') {
39
+ return {
40
+ url: typeof entry.url === 'string' ? entry.url : undefined,
41
+ chainId: typeof entry.chainId === 'number' ? entry.chainId : undefined,
42
+ };
43
+ }
44
+ for (const name of ['hardhat.config.ts', 'hardhat.config.js']) {
45
+ const file = path.join(appDir, name);
46
+ if (!fs.existsSync(file))
47
+ continue;
48
+ const text = fs.readFileSync(file, 'utf-8');
49
+ const block = text.match(new RegExp(`['"]?${network}['"]?\\s*:\\s*\\{([\\s\\S]*?)\\n\\s*\\}`, 'm'));
50
+ if (!block)
51
+ continue;
52
+ const url = block[1].match(/url\s*:\s*['"]([^'"]+)['"]/)?.[1];
53
+ const chainId = block[1].match(/chainId\s*:\s*(\d+)/)?.[1];
54
+ return { url, ...(chainId ? { chainId: Number(chainId) } : {}) };
55
+ }
56
+ return {};
57
+ }
58
+ function resolveRpc(appDir, options) {
59
+ if (options.rpc)
60
+ return options.rpc;
61
+ const configured = options.network ? readProjectNetwork(appDir, options.network).url : undefined;
62
+ return configured ?? process.env.RPC_URL ?? process.env.NEXT_PUBLIC_RPC_URL ?? '';
63
+ }
64
+ function resolveKey(options) {
65
+ if (options.privateKey)
66
+ return options.privateKey;
67
+ if (process.env.PRIVATE_KEY) {
68
+ warn('[WARN] usando PRIVATE_KEY del entorno; para producción usa `eng:opwallet:*`.');
69
+ return process.env.PRIVATE_KEY;
70
+ }
71
+ throw new Error('missing signer: pass --private-key 0x… or set PRIVATE_KEY');
72
+ }
73
+ export async function deployProject(options) {
74
+ const root = path.resolve(options.root ?? process.cwd());
75
+ const app = findContractsApp(root);
76
+ if (!app)
77
+ throw new Error('no contracts app found (apps/contracts, apps/hardhat or hardhat/)');
78
+ if (!options.contract)
79
+ throw new Error('missing contract name (--contract <Name>)');
80
+ if (!options.network)
81
+ throw new Error('missing network name (--network <name>)');
82
+ const artifact = findArtifact(app, options.contract);
83
+ if (!artifact.bytecode || artifact.bytecode === '0x')
84
+ throw new Error(`${options.contract} has no bytecode`);
85
+ const rpc = resolveRpc(app, options);
86
+ if (!rpc)
87
+ throw new Error(`no RPC URL for ${options.network}; pass --rpc or define it in contracts.config.json`);
88
+ const { createPublicClient, createWalletClient, http } = await import('viem');
89
+ const { privateKeyToAccount } = await import('viem/accounts');
90
+ const transport = http(rpc);
91
+ const publicClient = createPublicClient({ transport });
92
+ const chainId = options.network ? readProjectNetwork(app, options.network).chainId : undefined;
93
+ const resolvedChainId = chainId ?? await publicClient.getChainId();
94
+ const chain = {
95
+ id: resolvedChainId,
96
+ name: options.network,
97
+ nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
98
+ rpcUrls: { default: { http: [rpc] } },
99
+ };
100
+ // Local nodes expose unlocked accounts (eth_sendTransaction); remote networks
101
+ // need a locally signed transaction (eth_sendRawTransaction).
102
+ const local = /^(https?:\/\/)?(127\.0\.0\.1|localhost|\[::1\])(:|\/|$)/.test(rpc);
103
+ let account;
104
+ let address;
105
+ if (local) {
106
+ const accounts = await publicClient.request({ method: 'eth_accounts' });
107
+ if (accounts.length === 0)
108
+ throw new Error('the local node exposes no unlocked accounts');
109
+ account = accounts[0];
110
+ address = account;
111
+ }
112
+ else {
113
+ const signer = privateKeyToAccount(resolveKey(options));
114
+ account = signer;
115
+ address = signer.address;
116
+ }
117
+ const walletClient = createWalletClient({ account, chain, transport });
118
+ info(`[INFO] ${options.contract} → ${options.network} (chain ${resolvedChainId}) desde ${address}`);
119
+ const hash = await walletClient.deployContract({
120
+ abi: artifact.abi,
121
+ bytecode: artifact.bytecode,
122
+ args: options.args ?? [],
123
+ account,
124
+ chain,
125
+ });
126
+ const receipt = await publicClient.waitForTransactionReceipt({ hash });
127
+ if (!receipt.contractAddress)
128
+ throw new Error(`deployment ${hash} produced no contract address`);
129
+ const deploymentsDir = options.deploymentsDir
130
+ ? path.resolve(root, options.deploymentsDir)
131
+ : path.join(app, 'deployments');
132
+ const file = path.join(deploymentsDir, options.contract, `${options.network}.json`);
133
+ fs.mkdirSync(path.dirname(file), { recursive: true });
134
+ const deployment = {
135
+ contract: options.contract,
136
+ address: receipt.contractAddress,
137
+ chainId: resolvedChainId,
138
+ network: options.network,
139
+ transactionHash: hash,
140
+ deployedAt: new Date().toISOString(),
141
+ };
142
+ fs.writeFileSync(file, `${JSON.stringify(deployment, null, 2)}\n`);
143
+ return {
144
+ contract: options.contract,
145
+ address: receipt.contractAddress,
146
+ chainId: resolvedChainId,
147
+ network: options.network,
148
+ transactionHash: hash,
149
+ file,
150
+ };
151
+ }
152
+ function parseArgs(args) {
153
+ const options = {};
154
+ for (let index = 0; index < args.length; index++) {
155
+ const arg = args[index];
156
+ if (arg === '--root')
157
+ options.root = args[++index];
158
+ else if (arg === '--contract')
159
+ options.contract = args[++index];
160
+ else if (arg === '--network')
161
+ options.network = args[++index];
162
+ else if (arg === '--rpc')
163
+ options.rpc = args[++index];
164
+ else if (arg === '--private-key')
165
+ options.privateKey = args[++index];
166
+ else if (arg === '--deployments-dir')
167
+ options.deploymentsDir = args[++index];
168
+ else if (arg === '--args')
169
+ options.args = JSON.parse(args[++index] ?? '[]');
170
+ else if (arg === '--json')
171
+ options.json = true;
172
+ }
173
+ return options;
174
+ }
175
+ export async function runContractDeploy(args = process.argv.slice(3)) {
176
+ const options = parseArgs(args);
177
+ try {
178
+ const result = await deployProject(options);
179
+ if (options.json)
180
+ console.log(JSON.stringify(result, null, 2));
181
+ else {
182
+ success(`[OK] ${result.contract} en ${result.address} (${result.network})`);
183
+ info(` tx ${result.transactionHash}`);
184
+ info(` ${path.relative(process.cwd(), result.file)}`);
185
+ }
186
+ process.exit(0);
187
+ }
188
+ catch (error) {
189
+ problem(error instanceof Error ? error.message : String(error));
190
+ process.exit(1);
191
+ }
192
+ }
193
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"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"}
package/dist/hre.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export interface ContractHreOptions {
2
+ root?: string;
3
+ chainId?: number;
4
+ }
5
+ export declare function createContractHre(options?: ContractHreOptions): Promise<any>;
6
+ //# sourceMappingURL=hre.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hre.d.ts","sourceRoot":"","sources":["../src/hre.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC,CAgCtF"}
package/dist/hre.js ADDED
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Public `hre` shim for legacy scripts, without Hardhat.
3
+ *
4
+ * `createContractHre()` returns the same `ethers`, `viem` and `network` surface
5
+ * used by `contract:test`, backed by @pasosdejesus/edr, plus the `artifacts`
6
+ * object (`readArtifact`) and a `run` placeholder that points to the new
7
+ * commands. It is intentionally local: remote deployments use
8
+ * `contract:deploy` (viem) instead of impersonating Hardhat.
9
+ *
10
+ * https://gitlab.com/pasosdeJesus/m/-/work_items/58
11
+ */
12
+ import * as path from 'path';
13
+ import { EdrProvider } from '@pasosdejesus/edr';
14
+ import { createHre } from './hre-mock.js';
15
+ import { loadArtifacts } from './runner.js';
16
+ export async function createContractHre(options = {}) {
17
+ const root = path.resolve(options.root ?? process.cwd());
18
+ const chainId = options.chainId ?? 31337;
19
+ const provider = new EdrProvider({ chainId });
20
+ await provider.init();
21
+ const artifacts = loadArtifacts(root);
22
+ const base = createHre(provider, artifacts, chainId);
23
+ const artifactApi = {
24
+ readArtifact(name) {
25
+ const artifact = artifacts.get(name);
26
+ if (!artifact)
27
+ throw new Error(`artifact not found: ${name}`);
28
+ return artifact;
29
+ },
30
+ readArtifactSync(name) {
31
+ return artifactApi.readArtifact(name);
32
+ },
33
+ getAllArtifacts() {
34
+ return [...artifacts.values()];
35
+ },
36
+ };
37
+ return {
38
+ ...base,
39
+ artifacts: artifactApi,
40
+ async run(task) {
41
+ throw new Error(`hre.run('${task}') is not supported by the shim; use ` +
42
+ '`bin/m contract:deploy` or `bin/m contract:verify` instead');
43
+ },
44
+ };
45
+ }
46
+ //# sourceMappingURL=hre.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hre.js","sourceRoot":"","sources":["../src/hre.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,aAAa,EAAyB,MAAM,aAAa,CAAA;AAOlE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAA8B,EAAE;IACtE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAA;IACxC,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7C,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IACrB,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IAEpD,MAAM,WAAW,GAAG;QAClB,YAAY,CAAC,IAAY;YACvB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACpC,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAA;YAC7D,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,gBAAgB,CAAC,IAAY;YAC3B,OAAO,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QACvC,CAAC;QACD,eAAe;YACb,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;QAChC,CAAC;KACF,CAAA;IAED,OAAO;QACL,GAAG,IAAI;QACP,SAAS,EAAE,WAAW;QACtB,KAAK,CAAC,GAAG,CAAC,IAAY;YACpB,MAAM,IAAI,KAAK,CACb,YAAY,IAAI,uCAAuC;gBACrD,4DAA4D,CAC/D,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
package/dist/index.js CHANGED
@@ -27,5 +27,40 @@ registerCommands({
27
27
  },
28
28
  description: 'Compile Solidity with native solc or solc-js (no Hardhat), writing Hardhat artifacts',
29
29
  },
30
+ 'contract:typechain': {
31
+ handler: async () => {
32
+ const { runContractTypechain } = await import('./typechain.js');
33
+ runContractTypechain();
34
+ },
35
+ description: 'Generate TypeScript bindings from Hardhat artifacts (no Hardhat)',
36
+ },
37
+ 'contract:node': {
38
+ handler: async () => {
39
+ const { runContractNode } = await import('./node.js');
40
+ await runContractNode();
41
+ },
42
+ description: 'Run a local JSON-RPC node backed by @pasosdejesus/edr',
43
+ },
44
+ 'contract:clean': {
45
+ handler: async () => {
46
+ const { runContractClean } = await import('./clean.js');
47
+ runContractClean();
48
+ },
49
+ description: 'Remove artifacts, cache, typechain-types and dist from the contracts app',
50
+ },
51
+ 'contract:deploy': {
52
+ handler: async () => {
53
+ const { runContractDeploy } = await import('./deploy.js');
54
+ await runContractDeploy();
55
+ },
56
+ description: 'Deploy an artifact with viem and write a deployments/<Contract>/<network>.json',
57
+ },
58
+ 'contract:verify': {
59
+ handler: async () => {
60
+ const { runContractVerify } = await import('./verify.js');
61
+ await runContractVerify();
62
+ },
63
+ description: 'Verify a deployment on Blockscout/Basescan (use --dry-run to inspect the request)',
64
+ },
30
65
  });
31
66
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,gBAAgB,CAAC;IACf,eAAe,EAAE;QACf,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YACvD,MAAM,eAAe,EAAE,CAAA;QACzB,CAAC;QACD,WAAW,EAAE,8EAA8E;KAC5F;IACD,sBAAsB,EAAE;QACtB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;YAC5D,cAAc,EAAE,CAAA;QAClB,CAAC;QACD,WAAW,EAAE,mFAAmF;KACjG;IACD,kBAAkB,EAAE;QAClB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YAC3D,kBAAkB,EAAE,CAAA;QACtB,CAAC;QACD,WAAW,EAAE,sFAAsF;KACpG;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,gBAAgB,CAAC;IACf,eAAe,EAAE;QACf,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YACvD,MAAM,eAAe,EAAE,CAAA;QACzB,CAAC;QACD,WAAW,EAAE,8EAA8E;KAC5F;IACD,sBAAsB,EAAE;QACtB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;YAC5D,cAAc,EAAE,CAAA;QAClB,CAAC;QACD,WAAW,EAAE,mFAAmF;KACjG;IACD,kBAAkB,EAAE;QAClB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;YAC3D,kBAAkB,EAAE,CAAA;QACtB,CAAC;QACD,WAAW,EAAE,sFAAsF;KACpG;IACD,oBAAoB,EAAE;QACpB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;YAC/D,oBAAoB,EAAE,CAAA;QACxB,CAAC;QACD,WAAW,EAAE,kEAAkE;KAChF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;YACrD,MAAM,eAAe,EAAE,CAAA;QACzB,CAAC;QACD,WAAW,EAAE,uDAAuD;KACrE;IACD,gBAAgB,EAAE;QAChB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAA;YACvD,gBAAgB,EAAE,CAAA;QACpB,CAAC;QACD,WAAW,EAAE,0EAA0E;KACxF;IACD,iBAAiB,EAAE;QACjB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YACzD,MAAM,iBAAiB,EAAE,CAAA;QAC3B,CAAC;QACD,WAAW,EAAE,gFAAgF;KAC9F;IACD,iBAAiB,EAAE;QACjB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YACzD,MAAM,iBAAiB,EAAE,CAAA;QAC3B,CAAC;QACD,WAAW,EAAE,mFAAmF;KACjG;CACF,CAAC,CAAA"}
package/dist/node.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ import { EdrProvider } from '@pasosdejesus/edr';
2
+ export interface NodeOptions {
3
+ host?: string;
4
+ port?: number;
5
+ chainId?: number;
6
+ json?: boolean;
7
+ }
8
+ export interface RunningNode {
9
+ url: string;
10
+ provider: EdrProvider;
11
+ close(): Promise<void>;
12
+ }
13
+ export declare function startNode(options?: NodeOptions): Promise<RunningNode>;
14
+ export declare function runContractNode(args?: string[]): Promise<void>;
15
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAA2B,MAAM,mBAAmB,CAAA;AAGxE,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,WAAW,CAAA;IACrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAuBD,wBAAsB,SAAS,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAiD/E;AAcD,wBAAsB,eAAe,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB3F"}
package/dist/node.js ADDED
@@ -0,0 +1,111 @@
1
+ /**
2
+ * contract:node — local JSON-RPC node backed by @pasosdejesus/edr.
3
+ *
4
+ * Replaces `hardhat node` on OpenBSD/adJ. Exposes the methods EdrProvider
5
+ * implements (eth_*, evm_*, net_version, web3_clientVersion) over HTTP.
6
+ *
7
+ * https://gitlab.com/pasosdeJesus/m/-/work_items/58
8
+ */
9
+ import * as http from 'http';
10
+ import { EdrProvider } from '@pasosdejesus/edr';
11
+ import { info, success, problem } from '@pasosdejesus/m/dist/util/colors.js';
12
+ async function dispatch(provider, request) {
13
+ const id = request.id ?? null;
14
+ if (!request.method) {
15
+ return { jsonrpc: '2.0', id, error: { code: -32600, message: 'Invalid Request' } };
16
+ }
17
+ try {
18
+ const result = await provider.send(request.method, request.params ?? []);
19
+ return { jsonrpc: '2.0', id, result };
20
+ }
21
+ catch (error) {
22
+ const message = error instanceof Error ? error.message : String(error);
23
+ return { jsonrpc: '2.0', id, error: { code: -32000, message } };
24
+ }
25
+ }
26
+ export async function startNode(options = {}) {
27
+ const host = options.host ?? '127.0.0.1';
28
+ const port = options.port ?? 8545;
29
+ const providerOptions = options.chainId ? { chainId: options.chainId } : {};
30
+ const provider = new EdrProvider(providerOptions);
31
+ await provider.init();
32
+ const server = http.createServer((req, res) => {
33
+ if (req.method !== 'POST') {
34
+ res.writeHead(405, { 'content-type': 'application/json' });
35
+ res.end(JSON.stringify({ jsonrpc: '2.0', id: null, error: { code: -32600, message: 'Use POST' } }));
36
+ return;
37
+ }
38
+ const chunks = [];
39
+ req.on('data', (chunk) => chunks.push(chunk));
40
+ req.on('end', () => {
41
+ void (async () => {
42
+ try {
43
+ const body = JSON.parse(Buffer.concat(chunks).toString('utf-8'));
44
+ const response = Array.isArray(body)
45
+ ? await Promise.all(body.map((entry) => dispatch(provider, entry)))
46
+ : await dispatch(provider, body);
47
+ res.writeHead(200, { 'content-type': 'application/json' });
48
+ res.end(JSON.stringify(response));
49
+ }
50
+ catch (error) {
51
+ const message = error instanceof Error ? error.message : String(error);
52
+ res.writeHead(400, { 'content-type': 'application/json' });
53
+ res.end(JSON.stringify({ jsonrpc: '2.0', id: null, error: { code: -32700, message } }));
54
+ }
55
+ })();
56
+ });
57
+ });
58
+ await new Promise((resolve, reject) => {
59
+ server.once('error', reject);
60
+ server.listen(port, host, resolve);
61
+ });
62
+ const address = server.address();
63
+ const actualPort = typeof address === 'object' && address ? address.port : port;
64
+ const url = `http://${host}:${actualPort}`;
65
+ return {
66
+ url,
67
+ provider,
68
+ async close() {
69
+ await new Promise((resolve, reject) => server.close((error) => (error ? reject(error) : resolve())));
70
+ await provider.shutdown();
71
+ },
72
+ };
73
+ }
74
+ function parseArgs(args) {
75
+ const options = {};
76
+ for (let index = 0; index < args.length; index++) {
77
+ const arg = args[index];
78
+ if (arg === '--host')
79
+ options.host = args[++index];
80
+ else if (arg === '--port')
81
+ options.port = Number(args[++index]);
82
+ else if (arg === '--chain-id')
83
+ options.chainId = Number(args[++index]);
84
+ else if (arg === '--json')
85
+ options.json = true;
86
+ }
87
+ return options;
88
+ }
89
+ export async function runContractNode(args = process.argv.slice(3)) {
90
+ const options = parseArgs(args);
91
+ try {
92
+ const node = await startNode(options);
93
+ if (options.json)
94
+ console.log(JSON.stringify({ url: node.url }));
95
+ else {
96
+ success(`[OK] JSON-RPC node en ${node.url}`);
97
+ info(' Ctrl+C para detener');
98
+ }
99
+ const stop = async () => {
100
+ await node.close();
101
+ process.exit(0);
102
+ };
103
+ process.once('SIGINT', () => void stop());
104
+ process.once('SIGTERM', () => void stop());
105
+ }
106
+ catch (error) {
107
+ problem(error instanceof Error ? error.message : String(error));
108
+ process.exit(1);
109
+ }
110
+ }
111
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface TypechainOptions {
2
+ root?: string;
3
+ target?: string;
4
+ outDir?: string;
5
+ compile?: boolean;
6
+ json?: boolean;
7
+ }
8
+ export interface TypechainResult {
9
+ app: string;
10
+ outDir: string;
11
+ artifacts: number;
12
+ command: string;
13
+ }
14
+ /** Hardhat artifacts only: skips `.dbg.json`, build-info and unrelated JSON. */
15
+ export declare function listArtifacts(appDir: string): string[];
16
+ export declare function runTypechain(options?: TypechainOptions): TypechainResult;
17
+ export declare function runContractTypechain(args?: string[]): void;
18
+ //# sourceMappingURL=typechain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typechain.d.ts","sourceRoot":"","sources":["../src/typechain.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAQD,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBtD;AAWD,wBAAgB,YAAY,CAAC,OAAO,GAAE,gBAAqB,GAAG,eAAe,CA4B5E;AAeD,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,IAAI,CAWjF"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * contract:typechain — generate TypeScript bindings from Hardhat-shaped artifacts.
3
+ *
4
+ * Uses the project's own `typechain` binary (declared in the template) and the
5
+ * artifacts written by `contract:compile`. It never downloads a compiler.
6
+ *
7
+ * https://gitlab.com/pasosdeJesus/m/-/work_items/58
8
+ */
9
+ import * as fs from 'fs';
10
+ import * as path from 'path';
11
+ import { spawnSync } from 'child_process';
12
+ import { compileProject, findContractsApp } from './compile.js';
13
+ import { info, success, problem, warn } from '@pasosdejesus/m/dist/util/colors.js';
14
+ /** Hardhat artifacts only: skips `.dbg.json`, build-info and unrelated JSON. */
15
+ export function listArtifacts(appDir) {
16
+ const root = path.join(appDir, 'artifacts');
17
+ const files = [];
18
+ const walk = (dir) => {
19
+ if (!fs.existsSync(dir))
20
+ return;
21
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
22
+ const abs = path.join(dir, entry.name);
23
+ if (entry.isDirectory()) {
24
+ walk(abs);
25
+ continue;
26
+ }
27
+ if (!entry.name.endsWith('.json') || entry.name.endsWith('.dbg.json'))
28
+ continue;
29
+ try {
30
+ const data = JSON.parse(fs.readFileSync(abs, 'utf-8'));
31
+ if (data.contractName && Array.isArray(data.abi) && typeof data.bytecode === 'string')
32
+ files.push(abs);
33
+ }
34
+ catch {
35
+ // Not an artifact; ignore.
36
+ }
37
+ }
38
+ };
39
+ walk(root);
40
+ return files.sort();
41
+ }
42
+ function typechainBinary(appDir) {
43
+ for (const base of [appDir, process.cwd()]) {
44
+ const bin = path.join(base, 'node_modules', '.bin', process.platform === 'win32' ? 'typechain.cmd' : 'typechain');
45
+ if (fs.existsSync(bin))
46
+ return { command: bin, prefix: [] };
47
+ }
48
+ warn('typechain is not installed in the contracts app; using npx (it may download an unpinned version).');
49
+ return { command: 'npx', prefix: ['typechain'] };
50
+ }
51
+ export function runTypechain(options = {}) {
52
+ const root = path.resolve(options.root ?? process.cwd());
53
+ const app = findContractsApp(root);
54
+ if (!app)
55
+ throw new Error('no contracts app found (apps/contracts, apps/hardhat or hardhat/)');
56
+ if (options.compile !== false) {
57
+ const result = compileProject({ root: app });
58
+ info(` using: ${result.compiler} ${result.version}`);
59
+ }
60
+ const artifacts = listArtifacts(app);
61
+ if (artifacts.length === 0) {
62
+ throw new Error(`no Hardhat artifacts under ${path.join(app, 'artifacts')}; run contract:compile first`);
63
+ }
64
+ const target = options.target ?? 'ethers-v6';
65
+ const outDir = options.outDir ?? 'typechain-types';
66
+ const bin = typechainBinary(app);
67
+ const args = [...bin.prefix, '--target', target, '--out-dir', outDir, ...artifacts];
68
+ const run = spawnSync(bin.command, args, { cwd: app, stdio: 'inherit' });
69
+ if (run.status !== 0)
70
+ throw new Error(`typechain failed with exit code ${run.status}`);
71
+ return {
72
+ app: path.relative(root, app) || '.',
73
+ outDir: path.join(app, outDir),
74
+ artifacts: artifacts.length,
75
+ command: `${bin.command} --target ${target} --out-dir ${outDir}`,
76
+ };
77
+ }
78
+ function parseArgs(args) {
79
+ const options = {};
80
+ for (let index = 0; index < args.length; index++) {
81
+ const arg = args[index];
82
+ if (arg === '--root')
83
+ options.root = args[++index];
84
+ else if (arg === '--target')
85
+ options.target = args[++index];
86
+ else if (arg === '--out-dir')
87
+ options.outDir = args[++index];
88
+ else if (arg === '--no-compile')
89
+ options.compile = false;
90
+ else if (arg === '--json')
91
+ options.json = true;
92
+ }
93
+ return options;
94
+ }
95
+ export function runContractTypechain(args = process.argv.slice(3)) {
96
+ const options = parseArgs(args);
97
+ try {
98
+ const result = runTypechain(options);
99
+ if (options.json)
100
+ console.log(JSON.stringify(result, null, 2));
101
+ else
102
+ success(`[OK] ${result.artifacts} artefacto(s) → ${path.relative(process.cwd(), result.outDir)}`);
103
+ process.exit(0);
104
+ }
105
+ catch (error) {
106
+ problem(error instanceof Error ? error.message : String(error));
107
+ process.exit(1);
108
+ }
109
+ }
110
+ //# sourceMappingURL=typechain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typechain.js","sourceRoot":"","sources":["../src/typechain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export interface VerifyOptions {
2
+ root?: string;
3
+ contract?: string;
4
+ network?: string;
5
+ address?: string;
6
+ deploymentsDir?: string;
7
+ apiUrl?: string;
8
+ apiKey?: string;
9
+ compilerVersion?: string;
10
+ constructorArgs?: unknown[];
11
+ dryRun?: boolean;
12
+ json?: boolean;
13
+ }
14
+ export interface VerifyRequest {
15
+ url: string;
16
+ form: Record<string, string>;
17
+ }
18
+ /** Explorer API URL from `contracts.config.json` or `etherscan.customChains`. */
19
+ export declare function readExplorerUrl(appDir: string, network: string): string | undefined;
20
+ export declare function buildVerifyRequest(options?: VerifyOptions): VerifyRequest;
21
+ export declare function verifyProject(options?: VerifyOptions): Promise<{
22
+ ok: boolean;
23
+ message: string;
24
+ request: VerifyRequest;
25
+ }>;
26
+ export declare function runContractVerify(args?: string[]): Promise<void>;
27
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,OAAO,EAAE,CAAA;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC7B;AAUD,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAYnF;AAuBD,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,aAAkB,GAAG,aAAa,CAuC7E;AAkBD,wBAAsB,aAAa,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC,CAelI;AAqBD,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAc7F"}
package/dist/verify.js ADDED
@@ -0,0 +1,192 @@
1
+ /**
2
+ * contract:verify — verify a deployed artifact on Blockscout/Basescan (no Hardhat).
3
+ *
4
+ * Builds a `solidity-standard-json-input` request from the sources compiled by
5
+ * `contract:compile`, the deployment JSON and the artifact, then posts it to the
6
+ * explorer API. `--dry-run` prints the request without touching the network.
7
+ *
8
+ * Real verifications need the operator's API key and a testnet/mainnet
9
+ * deployment already authorized; the agent never authorizes them.
10
+ *
11
+ * https://gitlab.com/pasosdeJesus/m/-/work_items/58
12
+ */
13
+ import * as fs from 'fs';
14
+ import * as path from 'path';
15
+ import { createRequire } from 'module';
16
+ import { findContractsApp, collectSources, compileProject, readProjectConfig } from './compile.js';
17
+ import { standardInput } from './solc-parity.js';
18
+ import { findArtifact } from './deploy.js';
19
+ import { readDeployment } from '@pasosdejesus/m/blockchain/deployments';
20
+ import { info, success, problem } from '@pasosdejesus/m/dist/util/colors.js';
21
+ function readJson(file) {
22
+ try {
23
+ return JSON.parse(fs.readFileSync(file, 'utf-8'));
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
29
+ /** Explorer API URL from `contracts.config.json` or `etherscan.customChains`. */
30
+ export function readExplorerUrl(appDir, network) {
31
+ const config = readJson(path.join(appDir, 'contracts.config.json'));
32
+ const configured = config?.explorer?.[network]?.apiUrl ?? config?.etherscan?.customChains;
33
+ if (typeof configured === 'string')
34
+ return configured;
35
+ for (const name of ['hardhat.config.ts', 'hardhat.config.js']) {
36
+ const file = path.join(appDir, name);
37
+ if (!fs.existsSync(file))
38
+ continue;
39
+ const text = fs.readFileSync(file, 'utf-8');
40
+ const blocks = text.matchAll(/network:\s*['"]([^'"]+)['"][\s\S]*?apiURL:\s*['"]([^'"]+)['"]/g);
41
+ for (const match of blocks)
42
+ if (match[1] === network)
43
+ return match[2];
44
+ }
45
+ return undefined;
46
+ }
47
+ function readAddress(root, appDir, options) {
48
+ if (options.address)
49
+ return options.address;
50
+ const dir = options.deploymentsDir
51
+ ? path.resolve(root, options.deploymentsDir)
52
+ : path.join(appDir, 'deployments');
53
+ const deployment = readDeployment(options.network, dir, { contract: options.contract });
54
+ if (!deployment)
55
+ throw new Error(`no deployment for ${options.contract} on ${options.network}`);
56
+ return deployment.address;
57
+ }
58
+ const require = createRequire(import.meta.url);
59
+ function encodeConstructorArgs(abi, args) {
60
+ if (!args || args.length === 0)
61
+ return '';
62
+ const constructor = abi.find((entry) => entry?.type === 'constructor');
63
+ if (!constructor?.inputs?.length)
64
+ return '';
65
+ // Keeps viem optional for compile/test-only users.
66
+ const { encodeAbiParameters } = require('viem');
67
+ return encodeAbiParameters(constructor.inputs, args).slice(2);
68
+ }
69
+ export function buildVerifyRequest(options = {}) {
70
+ const root = path.resolve(options.root ?? process.cwd());
71
+ const app = findContractsApp(root);
72
+ if (!app)
73
+ throw new Error('no contracts app found (apps/contracts, apps/hardhat or hardhat/)');
74
+ if (!options.contract)
75
+ throw new Error('missing contract name (--contract <Name>)');
76
+ if (!options.network)
77
+ throw new Error('missing network name (--network <name>)');
78
+ const artifact = findArtifact(app, options.contract);
79
+ const address = readAddress(root, app, options);
80
+ const apiUrl = options.apiUrl ?? readExplorerUrl(app, options.network);
81
+ if (!apiUrl)
82
+ throw new Error(`no explorer API URL for ${options.network}; pass --api-url`);
83
+ const apiKey = options.apiKey ?? process.env.BLOCKSCOUT_API_KEY ?? process.env.ETHERSCAN_API_KEY ?? '';
84
+ const settings = readProjectConfig(app);
85
+ let compilerVersion = options.compilerVersion;
86
+ if (!compilerVersion) {
87
+ const compiled = compileProject({ root: app });
88
+ compilerVersion = compiled.compilerVersion;
89
+ }
90
+ if (!compilerVersion) {
91
+ throw new Error('missing full compiler version (vX.Y.Z+commit.<hash>); pass --compiler-version');
92
+ }
93
+ const { sources } = collectSources(app);
94
+ const sourceCode = standardInput(sources, settings);
95
+ const sourceName = artifact.sourceName ?? Object.keys(sources)[0];
96
+ return {
97
+ url: apiUrl,
98
+ form: {
99
+ module: 'contract',
100
+ action: 'verifysourcecode',
101
+ apikey: apiKey,
102
+ contractaddress: address,
103
+ sourceCode,
104
+ codeformat: 'solidity-standard-json-input',
105
+ contractname: `${sourceName}:${artifact.contractName}`,
106
+ compilerversion: compilerVersion,
107
+ constructorArguements: encodeConstructorArgs(artifact.abi, options.constructorArgs),
108
+ },
109
+ };
110
+ }
111
+ async function pollStatus(url, apiKey, guid) {
112
+ for (let attempt = 0; attempt < 20; attempt++) {
113
+ await new Promise((resolve) => setTimeout(resolve, 3000));
114
+ const body = new URLSearchParams({ module: 'contract', action: 'checkverifystatus', apikey: apiKey, guid });
115
+ const response = await fetch(url, {
116
+ method: 'POST',
117
+ headers: { 'content-type': 'application/x-www-form-urlencoded' },
118
+ body,
119
+ });
120
+ const data = await response.json();
121
+ if (data.result && /pass|success/i.test(data.result))
122
+ return data.result;
123
+ if (data.result && /fail/i.test(data.result))
124
+ throw new Error(`verification failed: ${data.result}`);
125
+ }
126
+ throw new Error('verification still pending after 60s; check the explorer');
127
+ }
128
+ export async function verifyProject(options = {}) {
129
+ const request = buildVerifyRequest(options);
130
+ if (options.dryRun)
131
+ return { ok: true, message: 'dry-run: request built', request };
132
+ const response = await fetch(request.url, {
133
+ method: 'POST',
134
+ headers: { 'content-type': 'application/x-www-form-urlencoded' },
135
+ body: new URLSearchParams(request.form),
136
+ });
137
+ const data = await response.json();
138
+ if (data.status !== '1' || !data.result) {
139
+ throw new Error(`explorer rejected the request: ${data.message ?? data.result ?? 'unknown error'}`);
140
+ }
141
+ const message = await pollStatus(request.url, request.form.apikey, data.result);
142
+ return { ok: true, message, request };
143
+ }
144
+ function parseArgs(args) {
145
+ const options = {};
146
+ for (let index = 0; index < args.length; index++) {
147
+ const arg = args[index];
148
+ if (arg === '--root')
149
+ options.root = args[++index];
150
+ else if (arg === '--contract')
151
+ options.contract = args[++index];
152
+ else if (arg === '--network')
153
+ options.network = args[++index];
154
+ else if (arg === '--address')
155
+ options.address = args[++index];
156
+ else if (arg === '--deployments-dir')
157
+ options.deploymentsDir = args[++index];
158
+ else if (arg === '--api-url')
159
+ options.apiUrl = args[++index];
160
+ else if (arg === '--api-key')
161
+ options.apiKey = args[++index];
162
+ else if (arg === '--compiler-version')
163
+ options.compilerVersion = args[++index];
164
+ else if (arg === '--args')
165
+ options.constructorArgs = JSON.parse(args[++index] ?? '[]');
166
+ else if (arg === '--dry-run')
167
+ options.dryRun = true;
168
+ else if (arg === '--json')
169
+ options.json = true;
170
+ }
171
+ return options;
172
+ }
173
+ export async function runContractVerify(args = process.argv.slice(3)) {
174
+ const options = parseArgs(args);
175
+ try {
176
+ const result = await verifyProject(options);
177
+ if (options.json)
178
+ console.log(JSON.stringify(result, null, 2));
179
+ else if (options.dryRun) {
180
+ info(`[OK] dry-run para ${result.request.form.contractname} en ${result.request.url}`);
181
+ info(` compilerversion ${result.request.form.compilerversion}`);
182
+ }
183
+ else
184
+ success(`[OK] ${result.message}`);
185
+ process.exit(0);
186
+ }
187
+ catch (error) {
188
+ problem(error instanceof Error ? error.message : String(error));
189
+ process.exit(1);
190
+ }
191
+ }
192
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pasosdejesus/contract-test",
3
- "version": "0.2.3",
3
+ "version": "0.3.1",
4
4
  "description": "Hardhat test runner for OpenBSD — Mocha + @ethereumjs/vm EDR fallback",
5
5
  "mEngine": true,
6
6
  "author": "",
@@ -15,6 +15,10 @@
15
15
  ".": {
16
16
  "import": "./dist/index.js",
17
17
  "types": "./dist/index.d.ts"
18
+ },
19
+ "./hre": {
20
+ "import": "./dist/hre.js",
21
+ "types": "./dist/hre.d.ts"
18
22
  }
19
23
  },
20
24
  "files": [
@@ -22,13 +26,13 @@
22
26
  "m-engine.json"
23
27
  ],
24
28
  "dependencies": {
25
- "@pasosdejesus/edr": "0.2.0",
29
+ "@pasosdejesus/edr": "^0.2.1",
26
30
  "glob": "^13.0.6",
27
31
  "mocha": "^11.7.6",
28
32
  "solc": "0.8.26"
29
33
  },
30
34
  "peerDependencies": {
31
- "@pasosdejesus/m": "^0.37.1",
35
+ "@pasosdejesus/m": "^0.37.4",
32
36
  "ethers": "^6",
33
37
  "viem": "^2"
34
38
  },