@aztec/builder 0.0.1-commit.fce3e4f → 0.0.1-commit.ffe5b04ea

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.
@@ -5,5 +5,5 @@ export type GenerateCodeOptions = {
5
5
  /**
6
6
  * Generates Noir interface or Typescript interface for a folder or single file from a Noir compilation artifact.
7
7
  */
8
- export declare function generateCode(outputPath: string, fileOrDirPath: string, opts?: GenerateCodeOptions): Promise<string[]>;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWdlbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0LWludGVyZmFjZS1nZW4vY29kZWdlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSw0QkFBNEI7QUFDNUIsTUFBTSxNQUFNLG1CQUFtQixHQUFHO0lBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFBO0NBQUUsQ0FBQztBQUV0RDs7R0FFRztBQUNILHdCQUFzQixZQUFZLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLElBQUksR0FBRSxtQkFBd0IscUJBa0IzRyJ9
8
+ export declare function generateCode(outputPath: string, fileOrDirPath: string, opts?: GenerateCodeOptions): Promise<(string | undefined)[]>;
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWdlbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0LWludGVyZmFjZS1nZW4vY29kZWdlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSw0QkFBNEI7QUFDNUIsTUFBTSxNQUFNLG1CQUFtQixHQUFHO0lBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFBO0NBQUUsQ0FBQztBQUV0RDs7R0FFRztBQUNILHdCQUFzQixZQUFZLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLElBQUksR0FBRSxtQkFBd0IsbUNBa0IzRyJ9
@@ -1 +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
+ {"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,mCAkB3G"}
@@ -38,6 +38,10 @@ let cache = {};
38
38
  }
39
39
  const file = await readFile(noirAbiPath, 'utf8');
40
40
  const contract = JSON.parse(file);
41
+ if (!Array.isArray(contract.functions)) {
42
+ console.log(`${fileName} is not a contract artifact. Skipping.`);
43
+ return;
44
+ }
41
45
  const aztecAbi = loadContractArtifact(contract);
42
46
  await mkdir(outputPath, {
43
47
  recursive: true
@@ -0,0 +1,2 @@
1
+ export { generateTypescriptContractInterface } from './typescript.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdC1pbnRlcmZhY2UtZ2VuL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract-interface-gen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mCAAmC,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1 @@
1
+ export { generateTypescriptContractInterface } from './typescript.js';
@@ -6,4 +6,4 @@ import { type ContractArtifact } from '@aztec/stdlib/abi';
6
6
  * @returns The corresponding ts code.
7
7
  */
8
8
  export declare function generateTypescriptContractInterface(input: ContractArtifact, artifactImportPath?: string): Promise<string>;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0LWludGVyZmFjZS1nZW4vdHlwZXNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsS0FBSyxnQkFBZ0IsRUFXdEIsTUFBTSxtQkFBbUIsQ0FBQztBQXVRM0I7Ozs7O0dBS0c7QUFDSCx3QkFBc0IsbUNBQW1DLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxtQkFrRDdHIn0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0LWludGVyZmFjZS1nZW4vdHlwZXNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsS0FBSyxnQkFBZ0IsRUFhdEIsTUFBTSxtQkFBbUIsQ0FBQztBQStRM0I7Ozs7O0dBS0c7QUFDSCx3QkFBc0IsbUNBQW1DLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxtQkFrRDdHIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/contract-interface-gen/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EAWtB,MAAM,mBAAmB,CAAC;AAuQ3B;;;;;GAKG;AACH,wBAAsB,mCAAmC,CAAC,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,MAAM,mBAkD7G"}
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/contract-interface-gen/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EAatB,MAAM,mBAAmB,CAAC;AA+Q3B;;;;;GAKG;AACH,wBAAsB,mCAAmC,CAAC,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,MAAM,mBAkD7G"}
@@ -1,4 +1,4 @@
1
- import { EventSelector, decodeFunctionSignature, getAllFunctionAbis, getDefaultInitializer, isAztecAddressStruct, isBoundedVecStruct, isEthAddressStruct, isFunctionSelectorStruct, isWrappedFieldStruct } from '@aztec/stdlib/abi';
1
+ import { EventSelector, decodeFunctionSignature, getAllFunctionAbis, getDefaultInitializer, isAztecAddressStruct, isBoundedVecStruct, isEthAddressStruct, isFunctionSelectorStruct, isOptionStruct, isPublicKeysStruct, isWrappedFieldStruct } from '@aztec/stdlib/abi';
2
2
  /**
3
3
  * Returns the corresponding typescript type for a given Noir type.
4
4
  * @param type - The input Noir type.
@@ -28,11 +28,19 @@ import { EventSelector, decodeFunctionSignature, getAllFunctionAbis, getDefaultI
28
28
  if (isWrappedFieldStruct(type)) {
29
29
  return 'WrappedFieldLike';
30
30
  }
31
+ if (isPublicKeysStruct(type)) {
32
+ // PublicKeys are special cased due to them being part of the preimage of contract addresses.
33
+ // The proper type is expected by the TS code that deals with the ContractInstanceRegistry protocol contract.
34
+ return 'PublicKeys';
35
+ }
31
36
  if (isBoundedVecStruct(type)) {
32
37
  // To make BoundedVec easier to work with, we expect a simple array on the input and then we encode it
33
38
  // as a BoundedVec in the ArgumentsEncoder.
34
39
  return `${abiTypeToTypescript(type.fields[0].type)}`;
35
40
  }
41
+ if (isOptionStruct(type)) {
42
+ return `OptionLike<${abiTypeToTypescript(type.fields[1].type)}>`;
43
+ }
36
44
  return `{ ${type.fields.map((f)=>`${f.name}: ${abiTypeToTypescript(f.type)}`).join(', ')} }`;
37
45
  default:
38
46
  throw new Error(`Unknown type ${type.kind}`);
@@ -245,7 +253,7 @@ async function generateEvents(events) {
245
253
 
246
254
  /* eslint-disable */
247
255
  import { AztecAddress, CompleteAddress } from '@aztec/aztec.js/addresses';
248
- import { type AbiType, type AztecAddressLike, type ContractArtifact, EventSelector, decodeFromAbi, type EthAddressLike, type FieldLike, type FunctionSelectorLike, loadContractArtifact, loadContractArtifactForPublic, type NoirCompiledContract, type U128Like, type WrappedFieldLike } from '@aztec/aztec.js/abi';
256
+ import { type AbiType, type AztecAddressLike, type ContractArtifact, EventSelector, decodeFromAbi, type EthAddressLike, type FieldLike, type FunctionSelectorLike, loadContractArtifact, loadContractArtifactForPublic, type NoirCompiledContract, type OptionLike, type U128Like, type WrappedFieldLike } from '@aztec/aztec.js/abi';
249
257
  import { Contract, ContractBase, ContractFunctionInteraction, type ContractMethod, type ContractStorageLayout, DeployMethod } from '@aztec/aztec.js/contracts';
250
258
  import { EthAddress } from '@aztec/aztec.js/addresses';
251
259
  import { Fr, Point } from '@aztec/aztec.js/fields';
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@aztec/builder",
3
- "version": "0.0.1-commit.fce3e4f",
3
+ "version": "0.0.1-commit.ffe5b04ea",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
7
- "./cli": "./dest/bin/cli.js"
7
+ "./cli": "./dest/bin/cli.js",
8
+ "./codegen": "./dest/contract-interface-gen/index.js"
8
9
  },
9
10
  "typedocOptions": {
10
11
  "entryPoints": [
@@ -13,13 +14,10 @@
13
14
  "name": "Aztec builder",
14
15
  "tsconfig": "./tsconfig.json"
15
16
  },
16
- "bin": {
17
- "aztec-builder": "dest/bin/cli.js"
18
- },
19
17
  "scripts": {
20
- "build": "yarn clean && tsgo -b",
21
- "build:dev": "tsgo -b --watch",
22
- "generate": "tsgo -b",
18
+ "build": "yarn clean && ../scripts/tsc.sh",
19
+ "build:dev": "../scripts/tsc.sh --watch",
20
+ "generate": "../scripts/tsc.sh",
23
21
  "clean": "rm -rf ./dest .tsbuildinfo",
24
22
  "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
25
23
  },
@@ -69,15 +67,15 @@
69
67
  ]
70
68
  },
71
69
  "dependencies": {
72
- "@aztec/foundation": "0.0.1-commit.fce3e4f",
73
- "@aztec/stdlib": "0.0.1-commit.fce3e4f",
70
+ "@aztec/foundation": "0.0.1-commit.ffe5b04ea",
71
+ "@aztec/stdlib": "0.0.1-commit.ffe5b04ea",
74
72
  "commander": "^12.1.0"
75
73
  },
76
74
  "devDependencies": {
77
75
  "@jest/globals": "^30.0.0",
78
76
  "@types/jest": "^30.0.0",
79
77
  "@types/node": "^22.15.17",
80
- "@typescript/native-preview": "7.0.0-dev.20251126.1",
78
+ "@typescript/native-preview": "7.0.0-dev.20260113.1",
81
79
  "jest": "^30.0.0",
82
80
  "ts-node": "^10.9.1",
83
81
  "typescript": "^5.3.3"
@@ -50,6 +50,12 @@ async function generateFromNoirAbi(outputPath: string, noirAbiPath: string, opts
50
50
 
51
51
  const file = await readFile(noirAbiPath, 'utf8');
52
52
  const contract = JSON.parse(file);
53
+
54
+ if (!Array.isArray(contract.functions)) {
55
+ console.log(`${fileName} is not a contract artifact. Skipping.`);
56
+ return;
57
+ }
58
+
53
59
  const aztecAbi = loadContractArtifact(contract);
54
60
 
55
61
  await mkdir(outputPath, { recursive: true });
@@ -0,0 +1 @@
1
+ export { generateTypescriptContractInterface } from './typescript.js';
@@ -11,6 +11,8 @@ import {
11
11
  isBoundedVecStruct,
12
12
  isEthAddressStruct,
13
13
  isFunctionSelectorStruct,
14
+ isOptionStruct,
15
+ isPublicKeysStruct,
14
16
  isWrappedFieldStruct,
15
17
  } from '@aztec/stdlib/abi';
16
18
 
@@ -44,11 +46,19 @@ function abiTypeToTypescript(type: ABIParameter['type']): string {
44
46
  if (isWrappedFieldStruct(type)) {
45
47
  return 'WrappedFieldLike';
46
48
  }
49
+ if (isPublicKeysStruct(type)) {
50
+ // PublicKeys are special cased due to them being part of the preimage of contract addresses.
51
+ // The proper type is expected by the TS code that deals with the ContractInstanceRegistry protocol contract.
52
+ return 'PublicKeys';
53
+ }
47
54
  if (isBoundedVecStruct(type)) {
48
55
  // To make BoundedVec easier to work with, we expect a simple array on the input and then we encode it
49
56
  // as a BoundedVec in the ArgumentsEncoder.
50
57
  return `${abiTypeToTypescript(type.fields[0].type)}`;
51
58
  }
59
+ if (isOptionStruct(type)) {
60
+ return `OptionLike<${abiTypeToTypescript(type.fields[1].type)}>`;
61
+ }
52
62
  return `{ ${type.fields.map(f => `${f.name}: ${abiTypeToTypescript(f.type)}`).join(', ')} }`;
53
63
  default:
54
64
  throw new Error(`Unknown type ${type.kind}`);
@@ -299,7 +309,7 @@ export async function generateTypescriptContractInterface(input: ContractArtifac
299
309
 
300
310
  /* eslint-disable */
301
311
  import { AztecAddress, CompleteAddress } from '@aztec/aztec.js/addresses';
302
- import { type AbiType, type AztecAddressLike, type ContractArtifact, EventSelector, decodeFromAbi, type EthAddressLike, type FieldLike, type FunctionSelectorLike, loadContractArtifact, loadContractArtifactForPublic, type NoirCompiledContract, type U128Like, type WrappedFieldLike } from '@aztec/aztec.js/abi';
312
+ import { type AbiType, type AztecAddressLike, type ContractArtifact, EventSelector, decodeFromAbi, type EthAddressLike, type FieldLike, type FunctionSelectorLike, loadContractArtifact, loadContractArtifactForPublic, type NoirCompiledContract, type OptionLike, type U128Like, type WrappedFieldLike } from '@aztec/aztec.js/abi';
303
313
  import { Contract, ContractBase, ContractFunctionInteraction, type ContractMethod, type ContractStorageLayout, DeployMethod } from '@aztec/aztec.js/contracts';
304
314
  import { EthAddress } from '@aztec/aztec.js/addresses';
305
315
  import { Fr, Point } from '@aztec/aztec.js/fields';