@aztec/bb.js 0.0.1-commit.5daedc8 → 0.0.1-commit.6a729f7

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.
Files changed (187) hide show
  1. package/build/amd64-linux/bb +0 -0
  2. package/build/amd64-linux/nodejs_module.node +0 -0
  3. package/build/amd64-macos/bb +0 -0
  4. package/build/amd64-macos/nodejs_module.node +0 -0
  5. package/build/arm64-linux/bb +0 -0
  6. package/build/arm64-linux/nodejs_module.node +0 -0
  7. package/build/arm64-macos/bb +0 -0
  8. package/build/arm64-macos/nodejs_module.node +0 -0
  9. package/dest/browser/barretenberg/backend.d.ts +49 -17
  10. package/dest/browser/barretenberg/backend.d.ts.map +1 -1
  11. package/dest/browser/barretenberg/backend.js +111 -11
  12. package/dest/browser/barretenberg/index.d.ts +2 -2
  13. package/dest/browser/barretenberg/index.d.ts.map +1 -1
  14. package/dest/browser/barretenberg/index.js +2 -2
  15. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.js +1 -1
  16. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
  17. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
  18. package/dest/browser/bb_backends/index.d.ts +3 -1
  19. package/dest/browser/bb_backends/index.d.ts.map +1 -1
  20. package/dest/browser/cbind/generate.d.ts +5 -2
  21. package/dest/browser/cbind/generate.d.ts.map +1 -1
  22. package/dest/browser/cbind/generate.js +47 -25
  23. package/dest/browser/cbind/generated/api_types.d.ts +766 -1687
  24. package/dest/browser/cbind/generated/api_types.d.ts.map +1 -1
  25. package/dest/browser/cbind/generated/api_types.js +1465 -1555
  26. package/dest/browser/cbind/generated/async.d.ts +3 -5
  27. package/dest/browser/cbind/generated/async.d.ts.map +1 -1
  28. package/dest/browser/cbind/generated/async.js +13 -33
  29. package/dest/browser/cbind/generated/sync.d.ts +3 -5
  30. package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
  31. package/dest/browser/cbind/generated/sync.js +13 -31
  32. package/dest/browser/cbind/naming.d.ts +16 -0
  33. package/dest/browser/cbind/naming.d.ts.map +1 -0
  34. package/dest/browser/cbind/naming.js +24 -0
  35. package/dest/browser/cbind/rust_codegen.d.ts +26 -0
  36. package/dest/browser/cbind/rust_codegen.d.ts.map +1 -0
  37. package/dest/browser/cbind/rust_codegen.js +461 -0
  38. package/dest/browser/cbind/schema_visitor.d.ts +47 -0
  39. package/dest/browser/cbind/schema_visitor.d.ts.map +1 -0
  40. package/dest/browser/cbind/schema_visitor.js +158 -0
  41. package/dest/browser/cbind/typescript_codegen.d.ts +30 -0
  42. package/dest/browser/cbind/typescript_codegen.d.ts.map +1 -0
  43. package/dest/browser/cbind/typescript_codegen.js +365 -0
  44. package/dest/browser/index.d.ts +2 -2
  45. package/dest/browser/index.d.ts.map +1 -1
  46. package/dest/browser/index.js +2 -2
  47. package/dest/node/barretenberg/backend.d.ts +49 -17
  48. package/dest/node/barretenberg/backend.d.ts.map +1 -1
  49. package/dest/node/barretenberg/backend.js +111 -11
  50. package/dest/node/barretenberg/backend.test.d.ts +2 -0
  51. package/dest/node/barretenberg/backend.test.d.ts.map +1 -0
  52. package/dest/node/barretenberg/backend.test.js +103 -0
  53. package/dest/node/barretenberg/index.d.ts +2 -2
  54. package/dest/node/barretenberg/index.d.ts.map +1 -1
  55. package/dest/node/barretenberg/index.js +2 -2
  56. package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  57. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +1 -1
  58. package/dest/node/bb_backends/index.d.ts +3 -1
  59. package/dest/node/bb_backends/index.d.ts.map +1 -1
  60. package/dest/node/bb_backends/node/index.d.ts +1 -1
  61. package/dest/node/bb_backends/node/index.d.ts.map +1 -1
  62. package/dest/node/bb_backends/node/index.js +5 -5
  63. package/dest/node/bb_backends/node/native_shm.d.ts +3 -2
  64. package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -1
  65. package/dest/node/bb_backends/node/native_shm.js +40 -21
  66. package/dest/node/bb_backends/node/native_shm_async.d.ts +2 -2
  67. package/dest/node/bb_backends/node/native_shm_async.d.ts.map +1 -1
  68. package/dest/node/bb_backends/node/native_shm_async.js +17 -21
  69. package/dest/node/bb_backends/node/native_socket.d.ts +1 -1
  70. package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -1
  71. package/dest/node/bb_backends/node/native_socket.js +7 -5
  72. package/dest/node/bb_backends/node/platform.d.ts +1 -1
  73. package/dest/node/bb_backends/node/platform.d.ts.map +1 -1
  74. package/dest/node/bb_backends/node/platform.js +7 -2
  75. package/dest/node/cbind/generate.d.ts +5 -2
  76. package/dest/node/cbind/generate.d.ts.map +1 -1
  77. package/dest/node/cbind/generate.js +47 -25
  78. package/dest/node/cbind/generated/api_types.d.ts +766 -1687
  79. package/dest/node/cbind/generated/api_types.d.ts.map +1 -1
  80. package/dest/node/cbind/generated/api_types.js +1465 -1555
  81. package/dest/node/cbind/generated/async.d.ts +3 -5
  82. package/dest/node/cbind/generated/async.d.ts.map +1 -1
  83. package/dest/node/cbind/generated/async.js +13 -33
  84. package/dest/node/cbind/generated/sync.d.ts +3 -5
  85. package/dest/node/cbind/generated/sync.d.ts.map +1 -1
  86. package/dest/node/cbind/generated/sync.js +13 -31
  87. package/dest/node/cbind/naming.d.ts +16 -0
  88. package/dest/node/cbind/naming.d.ts.map +1 -0
  89. package/dest/node/cbind/naming.js +24 -0
  90. package/dest/node/cbind/rust_codegen.d.ts +26 -0
  91. package/dest/node/cbind/rust_codegen.d.ts.map +1 -0
  92. package/dest/node/cbind/rust_codegen.js +461 -0
  93. package/dest/node/cbind/schema_visitor.d.ts +47 -0
  94. package/dest/node/cbind/schema_visitor.d.ts.map +1 -0
  95. package/dest/node/cbind/schema_visitor.js +158 -0
  96. package/dest/node/cbind/typescript_codegen.d.ts +30 -0
  97. package/dest/node/cbind/typescript_codegen.d.ts.map +1 -0
  98. package/dest/node/cbind/typescript_codegen.js +365 -0
  99. package/dest/node/index.d.ts +2 -2
  100. package/dest/node/index.d.ts.map +1 -1
  101. package/dest/node/index.js +2 -2
  102. package/dest/node-cjs/barretenberg/backend.d.ts +49 -17
  103. package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
  104. package/dest/node-cjs/barretenberg/backend.js +113 -11
  105. package/dest/node-cjs/barretenberg/backend.test.d.ts +2 -0
  106. package/dest/node-cjs/barretenberg/backend.test.d.ts.map +1 -0
  107. package/dest/node-cjs/barretenberg/backend.test.js +105 -0
  108. package/dest/node-cjs/barretenberg/index.d.ts +2 -2
  109. package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
  110. package/dest/node-cjs/barretenberg/index.js +4 -2
  111. package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  112. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +1 -1
  113. package/dest/node-cjs/bb_backends/index.d.ts +3 -1
  114. package/dest/node-cjs/bb_backends/index.d.ts.map +1 -1
  115. package/dest/node-cjs/bb_backends/node/index.d.ts +1 -1
  116. package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -1
  117. package/dest/node-cjs/bb_backends/node/index.js +5 -5
  118. package/dest/node-cjs/bb_backends/node/native_shm.d.ts +3 -2
  119. package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -1
  120. package/dest/node-cjs/bb_backends/node/native_shm.js +39 -20
  121. package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts +2 -2
  122. package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts.map +1 -1
  123. package/dest/node-cjs/bb_backends/node/native_shm_async.js +17 -21
  124. package/dest/node-cjs/bb_backends/node/native_socket.d.ts +1 -1
  125. package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -1
  126. package/dest/node-cjs/bb_backends/node/native_socket.js +7 -5
  127. package/dest/node-cjs/bb_backends/node/platform.d.ts +1 -1
  128. package/dest/node-cjs/bb_backends/node/platform.d.ts.map +1 -1
  129. package/dest/node-cjs/bb_backends/node/platform.js +7 -2
  130. package/dest/node-cjs/cbind/generate.d.ts +5 -2
  131. package/dest/node-cjs/cbind/generate.d.ts.map +1 -1
  132. package/dest/node-cjs/cbind/generate.js +47 -25
  133. package/dest/node-cjs/cbind/generated/api_types.d.ts +766 -1687
  134. package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -1
  135. package/dest/node-cjs/cbind/generated/api_types.js +1671 -1771
  136. package/dest/node-cjs/cbind/generated/async.d.ts +3 -5
  137. package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
  138. package/dest/node-cjs/cbind/generated/async.js +12 -32
  139. package/dest/node-cjs/cbind/generated/sync.d.ts +3 -5
  140. package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
  141. package/dest/node-cjs/cbind/generated/sync.js +12 -30
  142. package/dest/node-cjs/cbind/naming.d.ts +16 -0
  143. package/dest/node-cjs/cbind/naming.d.ts.map +1 -0
  144. package/dest/node-cjs/cbind/naming.js +28 -0
  145. package/dest/node-cjs/cbind/rust_codegen.d.ts +26 -0
  146. package/dest/node-cjs/cbind/rust_codegen.d.ts.map +1 -0
  147. package/dest/node-cjs/cbind/rust_codegen.js +465 -0
  148. package/dest/node-cjs/cbind/schema_visitor.d.ts +47 -0
  149. package/dest/node-cjs/cbind/schema_visitor.d.ts.map +1 -0
  150. package/dest/node-cjs/cbind/schema_visitor.js +162 -0
  151. package/dest/node-cjs/cbind/typescript_codegen.d.ts +30 -0
  152. package/dest/node-cjs/cbind/typescript_codegen.d.ts.map +1 -0
  153. package/dest/node-cjs/cbind/typescript_codegen.js +369 -0
  154. package/dest/node-cjs/index.d.ts +2 -2
  155. package/dest/node-cjs/index.d.ts.map +1 -1
  156. package/dest/node-cjs/index.js +4 -2
  157. package/package.json +1 -1
  158. package/src/barretenberg/backend.test.ts +122 -0
  159. package/src/barretenberg/backend.ts +151 -25
  160. package/src/barretenberg/index.ts +9 -1
  161. package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +1 -1
  162. package/src/bb_backends/index.ts +3 -0
  163. package/src/bb_backends/node/index.ts +9 -4
  164. package/src/bb_backends/node/native_shm.ts +38 -19
  165. package/src/bb_backends/node/native_shm_async.ts +15 -19
  166. package/src/bb_backends/node/native_socket.ts +7 -5
  167. package/src/bb_backends/node/platform.ts +6 -1
  168. package/src/cbind/generate.ts +51 -32
  169. package/src/cbind/generated/api_types.ts +3050 -0
  170. package/src/cbind/generated/async.ts +696 -0
  171. package/src/cbind/generated/curve_constants.ts +53 -0
  172. package/src/cbind/generated/sync.ts +644 -0
  173. package/src/cbind/naming.ts +27 -0
  174. package/src/cbind/rust_codegen.ts +504 -0
  175. package/src/cbind/schema_visitor.ts +219 -0
  176. package/src/cbind/typescript_codegen.ts +419 -0
  177. package/src/index.ts +4 -0
  178. package/dest/browser/cbind/schema_compiler.d.ts +0 -68
  179. package/dest/browser/cbind/schema_compiler.d.ts.map +0 -1
  180. package/dest/browser/cbind/schema_compiler.js +0 -600
  181. package/dest/node/cbind/schema_compiler.d.ts +0 -68
  182. package/dest/node/cbind/schema_compiler.d.ts.map +0 -1
  183. package/dest/node/cbind/schema_compiler.js +0 -600
  184. package/dest/node-cjs/cbind/schema_compiler.d.ts +0 -68
  185. package/dest/node-cjs/cbind/schema_compiler.d.ts.map +0 -1
  186. package/dest/node-cjs/cbind/schema_compiler.js +0 -607
  187. package/src/cbind/schema_compiler.ts +0 -745
@@ -1,5 +1,8 @@
1
1
  /**
2
- * Generate TypeScript bindings from msgpack schema
2
+ * Multi-language code generation from BB msgpack schema
3
+ *
4
+ * Architecture:
5
+ * Raw Schema → SchemaVisitor → CompiledSchema IR → Language Codegens → Files
3
6
  */
4
7
 
5
8
  import { writeFileSync, mkdirSync } from 'fs';
@@ -8,36 +11,42 @@ import { exec } from 'child_process';
8
11
  import { promisify } from 'util';
9
12
  import { fileURLToPath } from 'url';
10
13
  import { unpack } from 'msgpackr';
11
- import {
12
- createSharedTypesCompiler,
13
- createSyncApiCompiler,
14
- createAsyncApiCompiler,
15
- type SchemaCompiler,
16
- } from './schema_compiler.js';
14
+ import { SchemaVisitor, type CompiledSchema } from './schema_visitor.js';
15
+ import { TypeScriptCodegen } from './typescript_codegen.js';
16
+ import { RustCodegen } from './rust_codegen.js';
17
17
 
18
18
  const execAsync = promisify(exec);
19
19
 
20
- interface GeneratorConfig {
20
+ // Language generators - all use the same CompiledSchema IR
21
+ interface LanguageGenerator {
21
22
  name: string;
22
- outputFile: string;
23
- createCompiler: () => SchemaCompiler;
23
+ enabled: boolean;
24
+ generate: (compiled: CompiledSchema) => Array<{ path: string; content: string }>;
24
25
  }
25
26
 
26
- const GENERATORS: GeneratorConfig[] = [
27
+ const LANGUAGE_GENERATORS: LanguageGenerator[] = [
27
28
  {
28
- name: 'Shared types',
29
- outputFile: 'generated/api_types.ts',
30
- createCompiler: createSharedTypesCompiler,
29
+ name: 'TypeScript',
30
+ enabled: true,
31
+ generate: (compiled) => {
32
+ const tsGen = new TypeScriptCodegen();
33
+ return [
34
+ { path: 'generated/api_types.ts', content: tsGen.generateTypes(compiled) },
35
+ { path: 'generated/sync.ts', content: tsGen.generateSyncApi(compiled) },
36
+ { path: 'generated/async.ts', content: tsGen.generateAsyncApi(compiled) },
37
+ ];
38
+ },
31
39
  },
32
40
  {
33
- name: 'Sync API',
34
- outputFile: 'generated/sync.ts',
35
- createCompiler: createSyncApiCompiler,
36
- },
37
- {
38
- name: 'Async API',
39
- outputFile: 'generated/async.ts',
40
- createCompiler: createAsyncApiCompiler,
41
+ name: 'Rust',
42
+ enabled: true,
43
+ generate: (compiled) => {
44
+ const rustGen = new RustCodegen();
45
+ return [
46
+ { path: '../../../rust/barretenberg-rs/src/generated_types.rs', content: rustGen.generateTypes(compiled) },
47
+ { path: '../../../rust/barretenberg-rs/src/api.rs', content: rustGen.generateApi(compiled) },
48
+ ];
49
+ },
41
50
  },
42
51
  ];
43
52
 
@@ -56,29 +65,39 @@ async function generate() {
56
65
  throw new Error('Invalid schema: missing commands or responses');
57
66
  }
58
67
 
59
- console.log('Generating TypeScript bindings...\n');
68
+ // Compile schema once using visitor pattern
69
+ console.log('Compiling schema...');
70
+ const visitor = new SchemaVisitor();
71
+ const compiled = visitor.visit(schema.commands, schema.responses);
72
+
73
+ console.log(`Found ${compiled.commands.length} commands, ${compiled.structs.size} structs\n`);
60
74
 
61
75
  // Ensure output directory exists
62
76
  const outputDir = join(__dirname, 'generated');
63
77
  mkdirSync(outputDir, { recursive: true });
64
78
 
65
- // Generate each output file
66
- for (const config of GENERATORS) {
67
- const compiler = config.createCompiler();
68
- compiler.processApiSchema(schema.commands, schema.responses);
79
+ // Generate all language bindings from compiled IR
80
+ for (const generator of LANGUAGE_GENERATORS) {
81
+ if (!generator.enabled) {
82
+ console.log(`⊘ ${generator.name}: disabled`);
83
+ continue;
84
+ }
69
85
 
70
- const outputPath = join(__dirname, config.outputFile);
71
- const content = compiler.compile();
72
- writeFileSync(outputPath, content);
86
+ const files = generator.generate(compiled);
73
87
 
74
- console.log(`✓ ${config.name}: ${outputPath}`);
88
+ for (const file of files) {
89
+ const outputPath = join(__dirname, file.path);
90
+ mkdirSync(dirname(outputPath), { recursive: true });
91
+ writeFileSync(outputPath, file.content);
92
+ console.log(`✓ ${generator.name}: ${outputPath}`);
93
+ }
75
94
  }
76
95
 
77
96
  // Generate curve constants
78
97
  console.log('\nGenerating curve constants...');
79
98
  await generateCurveConstants(bbBuildPath, outputDir);
80
99
 
81
- console.log('\nGeneration complete!');
100
+ console.log('\n✨ Generation complete! Clean, maintainable, multi-language architecture.');
82
101
  }
83
102
 
84
103
  async function generateCurveConstants(bbBuildPath: string, outputDir: string) {