@aztec/builder 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2 → 0.76.0
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/dest/bin/cli.d.ts +3 -0
- package/dest/bin/cli.d.ts.map +1 -0
- package/dest/bin/cli.js +3 -2
- package/dest/contract-interface-gen/codegen.d.ts +9 -0
- package/dest/contract-interface-gen/codegen.d.ts.map +1 -0
- package/dest/contract-interface-gen/codegen.js +15 -17
- package/dest/contract-interface-gen/typescript.d.ts +9 -0
- package/dest/contract-interface-gen/typescript.d.ts.map +1 -0
- package/dest/contract-interface-gen/typescript.js +51 -35
- package/dest/index.d.ts +3 -0
- package/dest/index.d.ts.map +1 -0
- package/dest/index.js +9 -4
- package/package.json +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":""}
|
package/dest/bin/cli.js
CHANGED
|
@@ -3,7 +3,7 @@ import { createConsoleLogger } from '@aztec/foundation/log';
|
|
|
3
3
|
import { Command } from 'commander';
|
|
4
4
|
import { injectCommands as injectBuilderCommands } from '../index.js';
|
|
5
5
|
const log = createConsoleLogger('aztec:builder');
|
|
6
|
-
const main = async ()=>{
|
|
6
|
+
const main = async () => {
|
|
7
7
|
const program = new Command('aztec-builder');
|
|
8
8
|
injectBuilderCommands(program);
|
|
9
9
|
await program.parseAsync(process.argv);
|
|
@@ -11,8 +11,9 @@ const main = async ()=>{
|
|
|
11
11
|
// it without success and I think it doesn't make sense to invest more time in this.
|
|
12
12
|
process.exit(0);
|
|
13
13
|
};
|
|
14
|
-
main().catch(
|
|
14
|
+
main().catch(err => {
|
|
15
15
|
log(`Error running command`);
|
|
16
16
|
log(err);
|
|
17
17
|
process.exit(1);
|
|
18
18
|
});
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jpbi9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsT0FBTyxFQUFFLGNBQWMsSUFBSSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0RSxNQUFNLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUVqRCxNQUFNLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtJQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUU3QyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLG9IQUFvSDtJQUNwSCxvRkFBb0Y7SUFDcEYsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFFRixJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDakIsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDN0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Generate code options */
|
|
2
|
+
export type GenerateCodeOptions = {
|
|
3
|
+
force?: boolean;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Generates Noir interface or Typescript interface for a folder or single file from a Noir compilation artifact.
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateCode(outputPath: string, fileOrDirPath: string, opts?: GenerateCodeOptions): Promise<string[]>;
|
|
9
|
+
//# sourceMappingURL=codegen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/contract-interface-gen/codegen.ts"],"names":[],"mappings":"AAYA,4BAA4B;AAC5B,MAAM,MAAM,mBAAmB,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtD;;GAEG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,GAAE,mBAAwB,qBAkB3G"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
/* eslint-disable no-console */
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import { loadContractArtifact } from '@aztec/types/abi';
|
|
2
3
|
import crypto from 'crypto';
|
|
3
4
|
import { access, mkdir, readFile, readdir, stat, writeFile } from 'fs/promises';
|
|
4
5
|
import path from 'path';
|
|
@@ -7,20 +8,19 @@ const cacheFilePath = './codegenCache.json';
|
|
|
7
8
|
let cache = {};
|
|
8
9
|
/**
|
|
9
10
|
* Generates Noir interface or Typescript interface for a folder or single file from a Noir compilation artifact.
|
|
10
|
-
*/
|
|
11
|
+
*/
|
|
12
|
+
export async function generateCode(outputPath, fileOrDirPath, opts = {}) {
|
|
11
13
|
await readCache();
|
|
12
14
|
const results = [];
|
|
13
15
|
const stats = await stat(fileOrDirPath);
|
|
14
16
|
if (stats.isDirectory()) {
|
|
15
|
-
const files = (await readdir(fileOrDirPath, {
|
|
16
|
-
|
|
17
|
-
encoding: 'utf-8'
|
|
18
|
-
})).filter((file)=>file.endsWith('.json') && !file.startsWith('debug_'));
|
|
19
|
-
for (const file of files){
|
|
17
|
+
const files = (await readdir(fileOrDirPath, { recursive: true, encoding: 'utf-8' })).filter(file => file.endsWith('.json') && !file.startsWith('debug_'));
|
|
18
|
+
for (const file of files) {
|
|
20
19
|
const fullPath = path.join(fileOrDirPath, file);
|
|
21
20
|
results.push(await generateFromNoirAbi(outputPath, fullPath, opts));
|
|
22
21
|
}
|
|
23
|
-
}
|
|
22
|
+
}
|
|
23
|
+
else if (stats.isFile()) {
|
|
24
24
|
results.push(await generateFromNoirAbi(outputPath, fileOrDirPath, opts));
|
|
25
25
|
}
|
|
26
26
|
await writeCache();
|
|
@@ -28,7 +28,8 @@ let cache = {};
|
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
30
|
* Generates Noir interface or Typescript interface for a single file Noir compilation artifact.
|
|
31
|
-
*/
|
|
31
|
+
*/
|
|
32
|
+
async function generateFromNoirAbi(outputPath, noirAbiPath, opts = {}) {
|
|
32
33
|
const fileName = path.basename(noirAbiPath);
|
|
33
34
|
const currentHash = await generateFileHash(noirAbiPath);
|
|
34
35
|
const cachedInstance = isCacheValid(fileName, currentHash);
|
|
@@ -39,9 +40,7 @@ let cache = {};
|
|
|
39
40
|
const file = await readFile(noirAbiPath, 'utf8');
|
|
40
41
|
const contract = JSON.parse(file);
|
|
41
42
|
const aztecAbi = loadContractArtifact(contract);
|
|
42
|
-
await mkdir(outputPath, {
|
|
43
|
-
recursive: true
|
|
44
|
-
});
|
|
43
|
+
await mkdir(outputPath, { recursive: true });
|
|
45
44
|
let relativeArtifactPath = path.relative(outputPath, noirAbiPath);
|
|
46
45
|
if (relativeArtifactPath === path.basename(noirAbiPath)) {
|
|
47
46
|
// Prepend ./ for local import if the folder is the same
|
|
@@ -73,16 +72,15 @@ function isCacheValid(contractName, currentHash) {
|
|
|
73
72
|
return cache[contractName]?.hash === currentHash && cache[contractName];
|
|
74
73
|
}
|
|
75
74
|
function updateCache(fileName, contractName, hash) {
|
|
76
|
-
cache[fileName] = {
|
|
77
|
-
contractName,
|
|
78
|
-
hash
|
|
79
|
-
};
|
|
75
|
+
cache[fileName] = { contractName, hash };
|
|
80
76
|
}
|
|
81
77
|
async function exists(filePath) {
|
|
82
78
|
try {
|
|
83
79
|
await access(filePath);
|
|
84
80
|
return true;
|
|
85
|
-
}
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
86
83
|
return false;
|
|
87
84
|
}
|
|
88
85
|
}
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWdlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC1pbnRlcmZhY2UtZ2VuL2NvZGVnZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEYsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRXhCLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRFLE1BQU0sYUFBYSxHQUFHLHFCQUFxQixDQUFDO0FBQzVDLElBQUksS0FBSyxHQUEyRCxFQUFFLENBQUM7QUFLdkU7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FBQyxVQUFrQixFQUFFLGFBQXFCLEVBQUUsT0FBNEIsRUFBRTtJQUMxRyxNQUFNLFNBQVMsRUFBRSxDQUFDO0lBQ2xCLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNuQixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUV4QyxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDekYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FDN0QsQ0FB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
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ContractArtifact } from '@aztec/foundation/abi';
|
|
2
|
+
/**
|
|
3
|
+
* Generates the typescript code to represent a contract.
|
|
4
|
+
* @param input - The compiled Noir artifact.
|
|
5
|
+
* @param artifactImportPath - Optional path to import the artifact (if not set, will be required in the constructor).
|
|
6
|
+
* @returns The corresponding ts code.
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateTypescriptContractInterface(input: ContractArtifact, artifactImportPath?: string): Promise<string>;
|
|
9
|
+
//# sourceMappingURL=typescript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/contract-interface-gen/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EAUtB,MAAM,uBAAuB,CAAC;AA4R/B;;;;;GAKG;AACH,wBAAsB,mCAAmC,CAAC,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,MAAM,mBA+E7G"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { EventSelector, decodeFunctionSignature, getDefaultInitializer, isAztecAddressStruct, isEthAddressStruct, isFunctionSelectorStruct, isU128Struct, isWrappedFieldStruct } from '@aztec/foundation/abi';
|
|
1
|
+
import { EventSelector, decodeFunctionSignature, getDefaultInitializer, isAztecAddressStruct, isEthAddressStruct, isFunctionSelectorStruct, isU128Struct, isWrappedFieldStruct, } from '@aztec/foundation/abi';
|
|
2
2
|
/**
|
|
3
3
|
* Returns the corresponding typescript type for a given Noir type.
|
|
4
4
|
* @param type - The input Noir type.
|
|
5
5
|
* @returns An equivalent typescript type.
|
|
6
|
-
*/
|
|
7
|
-
|
|
6
|
+
*/
|
|
7
|
+
function abiTypeToTypescript(type) {
|
|
8
|
+
switch (type.kind) {
|
|
8
9
|
case 'field':
|
|
9
10
|
return 'FieldLike';
|
|
10
11
|
case 'boolean':
|
|
@@ -31,7 +32,7 @@ import { EventSelector, decodeFunctionSignature, getDefaultInitializer, isAztecA
|
|
|
31
32
|
if (isWrappedFieldStruct(type)) {
|
|
32
33
|
return 'WrappedFieldLike';
|
|
33
34
|
}
|
|
34
|
-
return `{ ${type.fields.map(
|
|
35
|
+
return `{ ${type.fields.map(f => `${f.name}: ${abiTypeToTypescript(f.type)}`).join(', ')} }`;
|
|
35
36
|
default:
|
|
36
37
|
throw new Error(`Unknown type ${type}`);
|
|
37
38
|
}
|
|
@@ -40,24 +41,27 @@ import { EventSelector, decodeFunctionSignature, getDefaultInitializer, isAztecA
|
|
|
40
41
|
* Generates the typescript code to represent a Noir parameter.
|
|
41
42
|
* @param param - A Noir parameter with name and type.
|
|
42
43
|
* @returns The corresponding ts code.
|
|
43
|
-
*/
|
|
44
|
+
*/
|
|
45
|
+
function generateParameter(param) {
|
|
44
46
|
return `${param.name}: ${abiTypeToTypescript(param.type)}`;
|
|
45
47
|
}
|
|
46
48
|
/**
|
|
47
49
|
* Generates the typescript code to represent a Noir function as a type.
|
|
48
50
|
* @param param - A Noir function.
|
|
49
51
|
* @returns The corresponding ts code.
|
|
50
|
-
*/
|
|
52
|
+
*/
|
|
53
|
+
function generateMethod(entry) {
|
|
51
54
|
const args = entry.parameters.map(generateParameter).join(', ');
|
|
52
55
|
return `
|
|
53
|
-
/** ${entry.name}(${entry.parameters.map(
|
|
56
|
+
/** ${entry.name}(${entry.parameters.map(p => `${p.name}: ${p.type.kind}`).join(', ')}) */
|
|
54
57
|
${entry.name}: ((${args}) => ContractFunctionInteraction) & Pick<ContractMethod, 'selector'>;`;
|
|
55
58
|
}
|
|
56
59
|
/**
|
|
57
60
|
* Generates a deploy method for this contract.
|
|
58
61
|
* @param input - Build artifact of the contract.
|
|
59
62
|
* @returns A type-safe deploy method in ts.
|
|
60
|
-
*/
|
|
63
|
+
*/
|
|
64
|
+
function generateDeploy(input) {
|
|
61
65
|
const ctor = getDefaultInitializer(input);
|
|
62
66
|
const args = (ctor?.parameters ?? []).map(generateParameter).join(', ');
|
|
63
67
|
const contractName = `${input.name}Contract`;
|
|
@@ -100,7 +104,8 @@ import { EventSelector, decodeFunctionSignature, getDefaultInitializer, isAztecA
|
|
|
100
104
|
* @param name - Name of the contract to derive the ABI name from.
|
|
101
105
|
* @returns A constructor method.
|
|
102
106
|
* @remarks The constructor is private because we want to force the user to use the create method.
|
|
103
|
-
*/
|
|
107
|
+
*/
|
|
108
|
+
function generateConstructor(name) {
|
|
104
109
|
return `
|
|
105
110
|
private constructor(
|
|
106
111
|
instance: ContractInstanceWithAddress,
|
|
@@ -115,7 +120,8 @@ import { EventSelector, decodeFunctionSignature, getDefaultInitializer, isAztecA
|
|
|
115
120
|
* @param name - Name of the contract to derive the ABI name from.
|
|
116
121
|
* @returns An at method.
|
|
117
122
|
* @remarks We don't use constructor directly because of the async `wallet.getContractData` call.
|
|
118
|
-
*/
|
|
123
|
+
*/
|
|
124
|
+
function generateAt(name) {
|
|
119
125
|
return `
|
|
120
126
|
/**
|
|
121
127
|
* Creates a contract instance.
|
|
@@ -133,7 +139,8 @@ import { EventSelector, decodeFunctionSignature, getDefaultInitializer, isAztecA
|
|
|
133
139
|
/**
|
|
134
140
|
* Generates a static getter for the contract's artifact.
|
|
135
141
|
* @param name - Name of the contract used to derive name of the artifact import.
|
|
136
|
-
*/
|
|
142
|
+
*/
|
|
143
|
+
function generateArtifactGetter(name) {
|
|
137
144
|
const artifactName = `${name}ContractArtifact`;
|
|
138
145
|
return `
|
|
139
146
|
/**
|
|
@@ -149,25 +156,29 @@ import { EventSelector, decodeFunctionSignature, getDefaultInitializer, isAztecA
|
|
|
149
156
|
* @param name - Name of the contract.
|
|
150
157
|
* @param artifactImportPath - Path to load the ABI from.
|
|
151
158
|
* @returns Code.
|
|
152
|
-
*/
|
|
159
|
+
*/
|
|
160
|
+
function generateAbiStatement(name, artifactImportPath) {
|
|
153
161
|
const stmts = [
|
|
154
162
|
`import ${name}ContractArtifactJson from '${artifactImportPath}' assert { type: 'json' };`,
|
|
155
|
-
`export const ${name}ContractArtifact = loadContractArtifact(${name}ContractArtifactJson as NoirCompiledContract)
|
|
163
|
+
`export const ${name}ContractArtifact = loadContractArtifact(${name}ContractArtifactJson as NoirCompiledContract);`,
|
|
156
164
|
];
|
|
157
165
|
return stmts.join('\n');
|
|
158
166
|
}
|
|
159
167
|
/**
|
|
160
168
|
* Generates a getter for the contract's storage layout.
|
|
161
169
|
* @param input - The contract artifact.
|
|
162
|
-
*/
|
|
170
|
+
*/
|
|
171
|
+
function generateStorageLayoutGetter(input) {
|
|
163
172
|
const entries = Object.entries(input.storageLayout);
|
|
164
173
|
if (entries.length === 0) {
|
|
165
174
|
return '';
|
|
166
175
|
}
|
|
167
|
-
const storageFieldsUnionType = entries.map(([name])
|
|
168
|
-
const layout = entries
|
|
176
|
+
const storageFieldsUnionType = entries.map(([name]) => `'${name}'`).join(' | ');
|
|
177
|
+
const layout = entries
|
|
178
|
+
.map(([name, { slot }]) => `${name}: {
|
|
169
179
|
slot: new Fr(${slot.toBigInt()}n),
|
|
170
|
-
}`)
|
|
180
|
+
}`)
|
|
181
|
+
.join(',\n');
|
|
171
182
|
return `public static get storage(): ContractStorageLayout<${storageFieldsUnionType}> {
|
|
172
183
|
return {
|
|
173
184
|
${layout}
|
|
@@ -178,15 +189,18 @@ import { EventSelector, decodeFunctionSignature, getDefaultInitializer, isAztecA
|
|
|
178
189
|
/**
|
|
179
190
|
* Generates a getter for the contract notes
|
|
180
191
|
* @param input - The contract artifact.
|
|
181
|
-
*/
|
|
192
|
+
*/
|
|
193
|
+
function generateNotesGetter(input) {
|
|
182
194
|
const entries = Object.entries(input.notes);
|
|
183
195
|
if (entries.length === 0) {
|
|
184
196
|
return '';
|
|
185
197
|
}
|
|
186
|
-
const notesUnionType = entries.map(([name])
|
|
187
|
-
const noteMetadata = entries
|
|
198
|
+
const notesUnionType = entries.map(([name]) => `'${name}'`).join(' | ');
|
|
199
|
+
const noteMetadata = entries
|
|
200
|
+
.map(([name, { id }]) => `${name}: {
|
|
188
201
|
id: new NoteSelector(${id.value}),
|
|
189
|
-
}`)
|
|
202
|
+
}`)
|
|
203
|
+
.join(',\n');
|
|
190
204
|
return `public static get notes(): ContractNotes<${notesUnionType}> {
|
|
191
205
|
return {
|
|
192
206
|
${noteMetadata}
|
|
@@ -197,20 +211,17 @@ import { EventSelector, decodeFunctionSignature, getDefaultInitializer, isAztecA
|
|
|
197
211
|
// events is of type AbiType
|
|
198
212
|
async function generateEvents(events) {
|
|
199
213
|
if (events === undefined) {
|
|
200
|
-
return {
|
|
201
|
-
events: '',
|
|
202
|
-
eventDefs: ''
|
|
203
|
-
};
|
|
214
|
+
return { events: '', eventDefs: '' };
|
|
204
215
|
}
|
|
205
|
-
const eventsMetadata = await Promise.all(events.map(async (event)=>{
|
|
216
|
+
const eventsMetadata = await Promise.all(events.map(async (event) => {
|
|
206
217
|
const eventName = event.path.split('::').at(-1);
|
|
207
|
-
const eventDefProps = event.fields.map((field)
|
|
218
|
+
const eventDefProps = event.fields.map((field) => `${field.name}: ${abiTypeToTypescript(field.type)}`);
|
|
208
219
|
const eventDef = `
|
|
209
220
|
export type ${eventName} = {
|
|
210
221
|
${eventDefProps.join('\n')}
|
|
211
222
|
}
|
|
212
223
|
`;
|
|
213
|
-
const fieldNames = event.fields.map((field)
|
|
224
|
+
const fieldNames = event.fields.map((field) => `"${field.name}"`);
|
|
214
225
|
const eventType = `${eventName}: {abiType: AbiType, eventSelector: EventSelector, fieldNames: string[] }`;
|
|
215
226
|
// Reusing the decodeFunctionSignature
|
|
216
227
|
const eventSignature = decodeFunctionSignature(eventName, event.fields);
|
|
@@ -223,18 +234,18 @@ async function generateEvents(events) {
|
|
|
223
234
|
return {
|
|
224
235
|
eventDef,
|
|
225
236
|
eventType,
|
|
226
|
-
eventImpl
|
|
237
|
+
eventImpl,
|
|
227
238
|
};
|
|
228
239
|
}));
|
|
229
240
|
return {
|
|
230
|
-
eventDefs: eventsMetadata.map(({ eventDef })=>eventDef).join('\n'),
|
|
241
|
+
eventDefs: eventsMetadata.map(({ eventDef }) => eventDef).join('\n'),
|
|
231
242
|
events: `
|
|
232
|
-
public static get events(): { ${eventsMetadata.map(({ eventType })=>eventType).join(', ')} } {
|
|
243
|
+
public static get events(): { ${eventsMetadata.map(({ eventType }) => eventType).join(', ')} } {
|
|
233
244
|
return {
|
|
234
|
-
${eventsMetadata.map(({ eventImpl })=>eventImpl).join(',\n')}
|
|
245
|
+
${eventsMetadata.map(({ eventImpl }) => eventImpl).join(',\n')}
|
|
235
246
|
};
|
|
236
247
|
}
|
|
237
|
-
|
|
248
|
+
`,
|
|
238
249
|
};
|
|
239
250
|
}
|
|
240
251
|
/**
|
|
@@ -242,8 +253,12 @@ async function generateEvents(events) {
|
|
|
242
253
|
* @param input - The compiled Noir artifact.
|
|
243
254
|
* @param artifactImportPath - Optional path to import the artifact (if not set, will be required in the constructor).
|
|
244
255
|
* @returns The corresponding ts code.
|
|
245
|
-
*/
|
|
246
|
-
|
|
256
|
+
*/
|
|
257
|
+
export async function generateTypescriptContractInterface(input, artifactImportPath) {
|
|
258
|
+
const methods = input.functions
|
|
259
|
+
.filter(f => !f.isInternal)
|
|
260
|
+
.sort((a, b) => a.name.localeCompare(b.name))
|
|
261
|
+
.map(generateMethod);
|
|
247
262
|
const deploy = artifactImportPath && generateDeploy(input);
|
|
248
263
|
const ctor = artifactImportPath && generateConstructor(input.name);
|
|
249
264
|
const at = artifactImportPath && generateAt(input.name);
|
|
@@ -318,3 +333,4 @@ export class ${input.name}Contract extends ContractBase {
|
|
|
318
333
|
}
|
|
319
334
|
`;
|
|
320
335
|
}
|
|
336
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC1pbnRlcmZhY2UtZ2VuL3R5cGVzY3JpcHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLGFBQWEsRUFFYix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLFlBQVksRUFDWixvQkFBb0IsR0FDckIsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQjs7OztHQUlHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxJQUEwQjtJQUNyRCxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixLQUFLLE9BQU87WUFDVixPQUFPLFdBQVcsQ0FBQztRQUNyQixLQUFLLFNBQVM7WUFDWixPQUFPLFNBQVMsQ0FBQztRQUNuQixLQUFLLFNBQVM7WUFDWixPQUFPLG1CQUFtQixDQUFDO1FBQzdCLEtBQUssUUFBUTtZQUNYLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLEtBQUssT0FBTztZQUNWLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMvQyxLQUFLLFFBQVE7WUFDWCxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE9BQU8sZ0JBQWdCLENBQUM7WUFDMUIsQ0FBQztZQUNELElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxrQkFBa0IsQ0FBQztZQUM1QixDQUFDO1lBQ0QsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxPQUFPLHNCQUFzQixDQUFDO1lBQ2hDLENBQUM7WUFDRCxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPLFVBQVUsQ0FBQztZQUNwQixDQUFDO1lBQ0QsSUFBSSxvQkFBb0Is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
|
package/dest/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,WAY9C"}
|
package/dest/index.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { dirname } from 'path';
|
|
2
2
|
export function injectCommands(program) {
|
|
3
|
-
program
|
|
3
|
+
program
|
|
4
|
+
.command('codegen')
|
|
5
|
+
.argument('<noir-abi-path>', 'Path to the Noir ABI or project dir.')
|
|
6
|
+
.option('-o, --outdir <path>', 'Output folder for the generated code.')
|
|
7
|
+
.option('-f, --force', 'Force code generation even when the contract has not changed.')
|
|
8
|
+
.description('Validates and generates an Aztec Contract ABI from Noir ABI.')
|
|
9
|
+
.action(async (noirAbiPath, { outdir, force }) => {
|
|
4
10
|
const { generateCode } = await import('./contract-interface-gen/codegen.js');
|
|
5
|
-
await generateCode(outdir || dirname(noirAbiPath), noirAbiPath, {
|
|
6
|
-
force
|
|
7
|
-
});
|
|
11
|
+
await generateCode(outdir || dirname(noirAbiPath), noirAbiPath, { force });
|
|
8
12
|
});
|
|
9
13
|
return program;
|
|
10
14
|
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQWdCO0lBQzdDLE9BQU87U0FDSixPQUFPLENBQUMsU0FBUyxDQUFDO1NBQ2xCLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxzQ0FBc0MsQ0FBQztTQUNuRSxNQUFNLENBQUMscUJBQXFCLEVBQUUsdUNBQXVDLENBQUM7U0FDdEUsTUFBTSxDQUFDLGFBQWEsRUFBRSwrREFBK0QsQ0FBQztTQUN0RixXQUFXLENBQUMsOERBQThELENBQUM7U0FDM0UsTUFBTSxDQUFDLEtBQUssRUFBRSxXQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7UUFDdkQsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDN0UsTUFBTSxZQUFZLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/builder",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.76.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"clean": "rm -rf ./dest .tsbuildinfo",
|
|
24
24
|
"formatting": "run -T prettier --check ./src && run -T eslint ./src",
|
|
25
25
|
"formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src",
|
|
26
|
-
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
|
|
26
|
+
"test": "HARDWARE_CONCURRENCY=${HARDWARE_CONCURRENCY:-16} RAYON_NUM_THREADS=${RAYON_NUM_THREADS:-4} NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
|
|
27
27
|
},
|
|
28
28
|
"inherits": [
|
|
29
29
|
"../package.common.json"
|
|
@@ -67,8 +67,8 @@
|
|
|
67
67
|
]
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@aztec/foundation": "0.
|
|
71
|
-
"@aztec/types": "0.
|
|
70
|
+
"@aztec/foundation": "0.76.0",
|
|
71
|
+
"@aztec/types": "0.76.0",
|
|
72
72
|
"commander": "^12.1.0"
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|