@aztec/bb.js 0.0.1-commit.fce3e4f → 0.0.1-commit.fffb133c
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/build/amd64-linux/bb +0 -0
- package/build/amd64-linux/nodejs_module.node +0 -0
- package/build/amd64-macos/bb +0 -0
- package/build/amd64-macos/nodejs_module.node +0 -0
- package/build/arm64-linux/bb +0 -0
- package/build/arm64-linux/nodejs_module.node +0 -0
- package/build/arm64-macos/bb +0 -0
- package/build/arm64-macos/nodejs_module.node +0 -0
- package/dest/browser/barretenberg/backend.d.ts +49 -17
- package/dest/browser/barretenberg/backend.d.ts.map +1 -1
- package/dest/browser/barretenberg/backend.js +111 -11
- package/dest/browser/barretenberg/index.d.ts +2 -2
- package/dest/browser/barretenberg/index.d.ts.map +1 -1
- package/dest/browser/barretenberg/index.js +2 -2
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.js +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
- package/dest/browser/bb_backends/index.d.ts +3 -1
- package/dest/browser/bb_backends/index.d.ts.map +1 -1
- package/dest/browser/cbind/generate.d.ts +5 -2
- package/dest/browser/cbind/generate.d.ts.map +1 -1
- package/dest/browser/cbind/generate.js +47 -25
- package/dest/browser/cbind/generated/api_types.d.ts +766 -1687
- package/dest/browser/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/browser/cbind/generated/api_types.js +1465 -1555
- package/dest/browser/cbind/generated/async.d.ts +3 -5
- package/dest/browser/cbind/generated/async.d.ts.map +1 -1
- package/dest/browser/cbind/generated/async.js +13 -33
- package/dest/browser/cbind/generated/sync.d.ts +3 -5
- package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
- package/dest/browser/cbind/generated/sync.js +13 -31
- package/dest/browser/cbind/naming.d.ts +16 -0
- package/dest/browser/cbind/naming.d.ts.map +1 -0
- package/dest/browser/cbind/naming.js +24 -0
- package/dest/browser/cbind/rust_codegen.d.ts +26 -0
- package/dest/browser/cbind/rust_codegen.d.ts.map +1 -0
- package/dest/browser/cbind/rust_codegen.js +461 -0
- package/dest/browser/cbind/schema_visitor.d.ts +47 -0
- package/dest/browser/cbind/schema_visitor.d.ts.map +1 -0
- package/dest/browser/cbind/schema_visitor.js +158 -0
- package/dest/browser/cbind/typescript_codegen.d.ts +30 -0
- package/dest/browser/cbind/typescript_codegen.d.ts.map +1 -0
- package/dest/browser/cbind/typescript_codegen.js +365 -0
- package/dest/browser/index.d.ts +2 -2
- package/dest/browser/index.d.ts.map +1 -1
- package/dest/browser/index.js +2 -2
- package/dest/node/barretenberg/backend.d.ts +49 -17
- package/dest/node/barretenberg/backend.d.ts.map +1 -1
- package/dest/node/barretenberg/backend.js +111 -11
- package/dest/node/barretenberg/backend.test.d.ts +2 -0
- package/dest/node/barretenberg/backend.test.d.ts.map +1 -0
- package/dest/node/barretenberg/backend.test.js +103 -0
- package/dest/node/barretenberg/index.d.ts +2 -2
- package/dest/node/barretenberg/index.d.ts.map +1 -1
- package/dest/node/barretenberg/index.js +2 -2
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +1 -1
- package/dest/node/bb_backends/index.d.ts +3 -1
- package/dest/node/bb_backends/index.d.ts.map +1 -1
- package/dest/node/bb_backends/node/index.d.ts +1 -1
- package/dest/node/bb_backends/node/index.d.ts.map +1 -1
- package/dest/node/bb_backends/node/index.js +5 -5
- package/dest/node/bb_backends/node/native_shm.d.ts +3 -2
- package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -1
- package/dest/node/bb_backends/node/native_shm.js +40 -21
- package/dest/node/bb_backends/node/native_shm_async.d.ts +2 -2
- package/dest/node/bb_backends/node/native_shm_async.d.ts.map +1 -1
- package/dest/node/bb_backends/node/native_shm_async.js +17 -21
- package/dest/node/bb_backends/node/native_socket.d.ts +1 -1
- package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -1
- package/dest/node/bb_backends/node/native_socket.js +7 -5
- package/dest/node/bb_backends/node/platform.d.ts +1 -1
- package/dest/node/bb_backends/node/platform.d.ts.map +1 -1
- package/dest/node/bb_backends/node/platform.js +7 -2
- package/dest/node/cbind/generate.d.ts +5 -2
- package/dest/node/cbind/generate.d.ts.map +1 -1
- package/dest/node/cbind/generate.js +47 -25
- package/dest/node/cbind/generated/api_types.d.ts +766 -1687
- package/dest/node/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/node/cbind/generated/api_types.js +1465 -1555
- package/dest/node/cbind/generated/async.d.ts +3 -5
- package/dest/node/cbind/generated/async.d.ts.map +1 -1
- package/dest/node/cbind/generated/async.js +13 -33
- package/dest/node/cbind/generated/sync.d.ts +3 -5
- package/dest/node/cbind/generated/sync.d.ts.map +1 -1
- package/dest/node/cbind/generated/sync.js +13 -31
- package/dest/node/cbind/naming.d.ts +16 -0
- package/dest/node/cbind/naming.d.ts.map +1 -0
- package/dest/node/cbind/naming.js +24 -0
- package/dest/node/cbind/rust_codegen.d.ts +26 -0
- package/dest/node/cbind/rust_codegen.d.ts.map +1 -0
- package/dest/node/cbind/rust_codegen.js +461 -0
- package/dest/node/cbind/schema_visitor.d.ts +47 -0
- package/dest/node/cbind/schema_visitor.d.ts.map +1 -0
- package/dest/node/cbind/schema_visitor.js +158 -0
- package/dest/node/cbind/typescript_codegen.d.ts +30 -0
- package/dest/node/cbind/typescript_codegen.d.ts.map +1 -0
- package/dest/node/cbind/typescript_codegen.js +365 -0
- package/dest/node/index.d.ts +2 -2
- package/dest/node/index.d.ts.map +1 -1
- package/dest/node/index.js +2 -2
- package/dest/node-cjs/barretenberg/backend.d.ts +49 -17
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/backend.js +113 -11
- package/dest/node-cjs/barretenberg/backend.test.d.ts +2 -0
- package/dest/node-cjs/barretenberg/backend.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/backend.test.js +105 -0
- package/dest/node-cjs/barretenberg/index.d.ts +2 -2
- package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/index.js +4 -2
- package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +1 -1
- package/dest/node-cjs/bb_backends/index.d.ts +3 -1
- package/dest/node-cjs/bb_backends/index.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/index.d.ts +1 -1
- package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/index.js +5 -5
- package/dest/node-cjs/bb_backends/node/native_shm.d.ts +3 -2
- package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/native_shm.js +39 -20
- package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts +2 -2
- package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/native_shm_async.js +17 -21
- package/dest/node-cjs/bb_backends/node/native_socket.d.ts +1 -1
- package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/native_socket.js +7 -5
- package/dest/node-cjs/bb_backends/node/platform.d.ts +1 -1
- package/dest/node-cjs/bb_backends/node/platform.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/platform.js +7 -2
- package/dest/node-cjs/cbind/generate.d.ts +5 -2
- package/dest/node-cjs/cbind/generate.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generate.js +47 -25
- package/dest/node-cjs/cbind/generated/api_types.d.ts +766 -1687
- package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/api_types.js +1671 -1771
- package/dest/node-cjs/cbind/generated/async.d.ts +3 -5
- package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/async.js +12 -32
- package/dest/node-cjs/cbind/generated/sync.d.ts +3 -5
- package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/sync.js +12 -30
- package/dest/node-cjs/cbind/naming.d.ts +16 -0
- package/dest/node-cjs/cbind/naming.d.ts.map +1 -0
- package/dest/node-cjs/cbind/naming.js +28 -0
- package/dest/node-cjs/cbind/rust_codegen.d.ts +26 -0
- package/dest/node-cjs/cbind/rust_codegen.d.ts.map +1 -0
- package/dest/node-cjs/cbind/rust_codegen.js +465 -0
- package/dest/node-cjs/cbind/schema_visitor.d.ts +47 -0
- package/dest/node-cjs/cbind/schema_visitor.d.ts.map +1 -0
- package/dest/node-cjs/cbind/schema_visitor.js +162 -0
- package/dest/node-cjs/cbind/typescript_codegen.d.ts +30 -0
- package/dest/node-cjs/cbind/typescript_codegen.d.ts.map +1 -0
- package/dest/node-cjs/cbind/typescript_codegen.js +369 -0
- package/dest/node-cjs/index.d.ts +2 -2
- package/dest/node-cjs/index.d.ts.map +1 -1
- package/dest/node-cjs/index.js +4 -2
- package/package.json +1 -1
- package/src/barretenberg/backend.test.ts +122 -0
- package/src/barretenberg/backend.ts +151 -25
- package/src/barretenberg/index.ts +9 -1
- package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +1 -1
- package/src/bb_backends/index.ts +3 -0
- package/src/bb_backends/node/index.ts +9 -4
- package/src/bb_backends/node/native_shm.ts +38 -19
- package/src/bb_backends/node/native_shm_async.ts +15 -19
- package/src/bb_backends/node/native_socket.ts +7 -5
- package/src/bb_backends/node/platform.ts +6 -1
- package/src/cbind/generate.ts +51 -32
- package/src/cbind/naming.ts +27 -0
- package/src/cbind/rust_codegen.ts +504 -0
- package/src/cbind/schema_visitor.ts +219 -0
- package/src/cbind/typescript_codegen.ts +419 -0
- package/src/index.ts +4 -0
- package/dest/browser/cbind/schema_compiler.d.ts +0 -68
- package/dest/browser/cbind/schema_compiler.d.ts.map +0 -1
- package/dest/browser/cbind/schema_compiler.js +0 -600
- package/dest/node/cbind/schema_compiler.d.ts +0 -68
- package/dest/node/cbind/schema_compiler.d.ts.map +0 -1
- package/dest/node/cbind/schema_compiler.js +0 -600
- package/dest/node-cjs/cbind/schema_compiler.d.ts +0 -68
- package/dest/node-cjs/cbind/schema_compiler.d.ts.map +0 -1
- package/dest/node-cjs/cbind/schema_compiler.js +0 -607
- package/src/cbind/schema_compiler.ts +0 -745
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema Visitor - Minimal abstraction over raw msgpack schema
|
|
3
|
+
*
|
|
4
|
+
* Philosophy:
|
|
5
|
+
* - Keep raw schema structure
|
|
6
|
+
* - Resolve type references into a graph
|
|
7
|
+
* - No normalization - languages handle their own conventions
|
|
8
|
+
* - Output is "compiled schema" with resolved types
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* SchemaVisitor - Walks raw msgpack schema and resolves references
|
|
12
|
+
*/
|
|
13
|
+
export class SchemaVisitor {
|
|
14
|
+
structs = new Map();
|
|
15
|
+
responses = new Map();
|
|
16
|
+
visit(commandsSchema, responsesSchema) {
|
|
17
|
+
// Reset state
|
|
18
|
+
this.structs.clear();
|
|
19
|
+
this.responses.clear();
|
|
20
|
+
const commands = [];
|
|
21
|
+
// Schema format: ["named_union", [[name, schema], ...]]
|
|
22
|
+
const commandPairs = commandsSchema[1];
|
|
23
|
+
const responsePairs = responsesSchema[1];
|
|
24
|
+
// First, visit all response types (including ErrorResponse)
|
|
25
|
+
for (const [respName, respSchema] of responsePairs) {
|
|
26
|
+
if (typeof respSchema !== 'string') {
|
|
27
|
+
const respStruct = this.visitStruct(respName, respSchema);
|
|
28
|
+
this.responses.set(respName, respStruct);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Visit all commands and pair with responses
|
|
32
|
+
for (let i = 0; i < commandPairs.length; i++) {
|
|
33
|
+
const [cmdName, cmdSchema] = commandPairs[i];
|
|
34
|
+
// Find matching response (skip ErrorResponse which is always last)
|
|
35
|
+
const normalResponses = responsePairs.filter(([name]) => name !== 'ErrorResponse');
|
|
36
|
+
const [respName] = normalResponses[i];
|
|
37
|
+
// Discover command structure
|
|
38
|
+
const cmdStruct = this.visitStruct(cmdName, cmdSchema);
|
|
39
|
+
this.structs.set(cmdName, cmdStruct);
|
|
40
|
+
// Create command mapping
|
|
41
|
+
commands.push({
|
|
42
|
+
name: cmdName,
|
|
43
|
+
fields: cmdStruct.fields,
|
|
44
|
+
responseType: respName,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
structs: this.structs,
|
|
49
|
+
commands,
|
|
50
|
+
responses: this.responses,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
visitStruct(name, schema) {
|
|
54
|
+
const fields = [];
|
|
55
|
+
// Schema is an object with __typename and fields
|
|
56
|
+
for (const [key, value] of Object.entries(schema)) {
|
|
57
|
+
if (key === '__typename')
|
|
58
|
+
continue;
|
|
59
|
+
fields.push({
|
|
60
|
+
name: key,
|
|
61
|
+
type: this.visitType(value),
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return { name, fields };
|
|
65
|
+
}
|
|
66
|
+
visitType(schema) {
|
|
67
|
+
// Primitive string type
|
|
68
|
+
if (typeof schema === 'string') {
|
|
69
|
+
return this.resolvePrimitive(schema);
|
|
70
|
+
}
|
|
71
|
+
// Array type descriptor: ['vector', [elementType]]
|
|
72
|
+
if (Array.isArray(schema)) {
|
|
73
|
+
const [kind, args] = schema;
|
|
74
|
+
switch (kind) {
|
|
75
|
+
case 'vector': {
|
|
76
|
+
const [elemType] = args;
|
|
77
|
+
// Special case: vector<unsigned char> = bytes
|
|
78
|
+
if (elemType === 'unsigned char') {
|
|
79
|
+
return { kind: 'primitive', primitive: 'bytes' };
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
kind: 'vector',
|
|
83
|
+
element: this.visitType(elemType),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
case 'array': {
|
|
87
|
+
const [elemType, size] = args;
|
|
88
|
+
// Special case: array<unsigned char, N> = bytes
|
|
89
|
+
if (elemType === 'unsigned char') {
|
|
90
|
+
return { kind: 'primitive', primitive: 'bytes' };
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
kind: 'array',
|
|
94
|
+
element: this.visitType(elemType),
|
|
95
|
+
size,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
case 'optional': {
|
|
99
|
+
const [elemType] = args;
|
|
100
|
+
return {
|
|
101
|
+
kind: 'optional',
|
|
102
|
+
element: this.visitType(elemType),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
case 'shared_ptr': {
|
|
106
|
+
// Dereference shared_ptr - just use inner type
|
|
107
|
+
const [innerType] = args;
|
|
108
|
+
return this.visitType(innerType);
|
|
109
|
+
}
|
|
110
|
+
case 'alias': {
|
|
111
|
+
// Alias types (like uint256_t) are treated as bytes
|
|
112
|
+
return { kind: 'primitive', primitive: 'bytes' };
|
|
113
|
+
}
|
|
114
|
+
default:
|
|
115
|
+
throw new Error(`Unknown type kind: ${kind}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Inline struct definition
|
|
119
|
+
if (typeof schema === 'object' && schema.__typename) {
|
|
120
|
+
const structName = schema.__typename;
|
|
121
|
+
// Check if already visited
|
|
122
|
+
if (!this.structs.has(structName)) {
|
|
123
|
+
const struct = this.visitStruct(structName, schema);
|
|
124
|
+
this.structs.set(structName, struct);
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
kind: 'struct',
|
|
128
|
+
struct: this.structs.get(structName),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
throw new Error(`Cannot resolve type: ${JSON.stringify(schema)}`);
|
|
132
|
+
}
|
|
133
|
+
resolvePrimitive(name) {
|
|
134
|
+
const primitiveMap = {
|
|
135
|
+
'bool': 'bool',
|
|
136
|
+
'int': 'u32',
|
|
137
|
+
'unsigned int': 'u32',
|
|
138
|
+
'unsigned short': 'u16',
|
|
139
|
+
'unsigned long': 'u64',
|
|
140
|
+
'unsigned char': 'u8',
|
|
141
|
+
'double': 'f64',
|
|
142
|
+
'string': 'string',
|
|
143
|
+
'bin32': 'bytes',
|
|
144
|
+
'field2': 'field2', // Extension field (Fq2) - pair of field elements
|
|
145
|
+
};
|
|
146
|
+
const primitive = primitiveMap[name];
|
|
147
|
+
if (primitive) {
|
|
148
|
+
return { kind: 'primitive', primitive };
|
|
149
|
+
}
|
|
150
|
+
// Unknown primitive - treat as struct reference
|
|
151
|
+
// This will be resolved later if it's a real struct
|
|
152
|
+
return {
|
|
153
|
+
kind: 'struct',
|
|
154
|
+
struct: { name, fields: [] }, // Placeholder
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hX3Zpc2l0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2JpbmQvc2NoZW1hX3Zpc2l0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUF1Q0g7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQUNoQixPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDcEMsU0FBUyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBRTlDLEtBQUssQ0FBQyxjQUFtQixFQUFFLGVBQW9CLEVBQWtCO1FBQy9ELGNBQWM7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFdkIsTUFBTSxRQUFRLEdBQWMsRUFBRSxDQUFDO1FBRS9CLHdEQUF3RDtRQUN4RCxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUF5QixDQUFDO1FBQy9ELE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQXlCLENBQUM7UUFFakUsNERBQTREO1FBQzVELEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNuRCxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNuQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzNDLENBQUM7UUFDSCxDQUFDO1FBRUQsNkNBQTZDO1FBQzdDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDN0MsTUFBTSxDQUFD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
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Code Generator - String template based
|
|
3
|
+
*
|
|
4
|
+
* Philosophy:
|
|
5
|
+
* - String templates for file structure
|
|
6
|
+
* - Simple type mapping
|
|
7
|
+
* - Idiomatic TypeScript conventions
|
|
8
|
+
* - No complex abstraction
|
|
9
|
+
*/
|
|
10
|
+
import type { CompiledSchema } from './schema_visitor.js';
|
|
11
|
+
export declare class TypeScriptCodegen {
|
|
12
|
+
private mapType;
|
|
13
|
+
private mapMsgpackType;
|
|
14
|
+
private needsConversion;
|
|
15
|
+
private generateField;
|
|
16
|
+
private generateMsgpackField;
|
|
17
|
+
private generateInterface;
|
|
18
|
+
private generateMsgpackInterface;
|
|
19
|
+
private generateToFunction;
|
|
20
|
+
private generateFromFunction;
|
|
21
|
+
private generateToConverter;
|
|
22
|
+
private generateFromConverter;
|
|
23
|
+
generateTypes(schema: CompiledSchema): string;
|
|
24
|
+
private generateAsyncApiMethod;
|
|
25
|
+
private generateSyncApiMethod;
|
|
26
|
+
generateAsyncApi(schema: CompiledSchema): string;
|
|
27
|
+
generateSyncApi(schema: CompiledSchema): string;
|
|
28
|
+
private generateApiImports;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdF9jb2RlZ2VuLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2JpbmQvdHlwZXNjcmlwdF9jb2RlZ2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFnQyxNQUFNLHFCQUFxQixDQUFDO0FBUXhGLHFCQUFhLGlCQUFpQjtJQUU1QixPQUFPLENBQUMsT0FBTztJQWlDZixPQUFPLENBQUMsY0FBYztJQWlDdEIsT0FBTyxDQUFDLGVBQWU7SUFldkIsT0FBTyxDQUFDLGFBQWE7SUFPckIsT0FBTyxDQUFDLG9CQUFvQjtJQU01QixPQUFPLENBQUMsaUJBQWlCO0lBVXpCLE9BQU8sQ0FBQyx3QkFBd0I7SUFVaEMsT0FBTyxDQUFDLGtCQUFrQjtJQThCMUIsT0FBTyxDQUFDLG9CQUFvQjtJQWlDNUIsT0FBTyxDQUFDLG1CQUFtQjtJQXdCM0IsT0FBTyxDQUFDLHFCQUFxQjtJQXdCN0IsYUFBYSxDQUFDLE1BQU0sRUFBRSxjQUFjLEdBQUcsTUFBTSxDQWlENUM7SUFHRCxPQUFPLENBQUMsc0JBQXNCO0lBbUI5QixPQUFPLENBQUMscUJBQXFCO0lBbUI3QixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsY0FBYyxHQUFHLE1BQU0sQ0E2Qi9DO0lBR0QsZUFBZSxDQUFDLE1BQU0sRUFBRSxjQUFjLEdBQUcsTUFBTSxDQTZCOUM7SUFHRCxPQUFPLENBQUMsa0JBQWtCO0NBbUIzQiJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript_codegen.d.ts","sourceRoot":"","sources":["../../../src/cbind/typescript_codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAgC,MAAM,qBAAqB,CAAC;AAQxF,qBAAa,iBAAiB;IAE5B,OAAO,CAAC,OAAO;IAiCf,OAAO,CAAC,cAAc;IAiCtB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,kBAAkB;IA8B1B,OAAO,CAAC,oBAAoB;IAiC5B,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,qBAAqB;IAwB7B,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAiD5C;IAGD,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,qBAAqB;IAmB7B,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA6B/C;IAGD,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA6B9C;IAGD,OAAO,CAAC,kBAAkB;CAmB3B"}
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Code Generator - String template based
|
|
3
|
+
*
|
|
4
|
+
* Philosophy:
|
|
5
|
+
* - String templates for file structure
|
|
6
|
+
* - Simple type mapping
|
|
7
|
+
* - Idiomatic TypeScript conventions
|
|
8
|
+
* - No complex abstraction
|
|
9
|
+
*/
|
|
10
|
+
import { toPascalCase } from './naming.js';
|
|
11
|
+
function toCamelCase(name) {
|
|
12
|
+
const pascal = toPascalCase(name);
|
|
13
|
+
return pascal.charAt(0).toLowerCase() + pascal.slice(1);
|
|
14
|
+
}
|
|
15
|
+
export class TypeScriptCodegen {
|
|
16
|
+
// Type mapping: Schema type -> TypeScript type
|
|
17
|
+
mapType(type) {
|
|
18
|
+
switch (type.kind) {
|
|
19
|
+
case 'primitive':
|
|
20
|
+
switch (type.primitive) {
|
|
21
|
+
case 'bool': return 'boolean';
|
|
22
|
+
case 'u8': return 'number';
|
|
23
|
+
case 'u16': return 'number';
|
|
24
|
+
case 'u32': return 'number';
|
|
25
|
+
case 'u64': return 'number';
|
|
26
|
+
case 'f64': return 'number';
|
|
27
|
+
case 'string': return 'string';
|
|
28
|
+
case 'bytes': return 'Uint8Array';
|
|
29
|
+
case 'field2': return '[Uint8Array, Uint8Array]'; // Extension field (Fq2)
|
|
30
|
+
}
|
|
31
|
+
break;
|
|
32
|
+
case 'vector':
|
|
33
|
+
return `${this.mapType(type.element)}[]`;
|
|
34
|
+
case 'array':
|
|
35
|
+
return `${this.mapType(type.element)}[]`;
|
|
36
|
+
case 'optional':
|
|
37
|
+
return `${this.mapType(type.element)} | undefined`;
|
|
38
|
+
case 'struct':
|
|
39
|
+
return toPascalCase(type.struct.name);
|
|
40
|
+
}
|
|
41
|
+
return 'unknown';
|
|
42
|
+
}
|
|
43
|
+
// Type mapping for msgpack interfaces (uses Msgpack* prefix for structs)
|
|
44
|
+
mapMsgpackType(type) {
|
|
45
|
+
switch (type.kind) {
|
|
46
|
+
case 'primitive':
|
|
47
|
+
switch (type.primitive) {
|
|
48
|
+
case 'bool': return 'boolean';
|
|
49
|
+
case 'u8': return 'number';
|
|
50
|
+
case 'u16': return 'number';
|
|
51
|
+
case 'u32': return 'number';
|
|
52
|
+
case 'u64': return 'number';
|
|
53
|
+
case 'f64': return 'number';
|
|
54
|
+
case 'string': return 'string';
|
|
55
|
+
case 'bytes': return 'Uint8Array';
|
|
56
|
+
case 'field2': return '[Uint8Array, Uint8Array]';
|
|
57
|
+
}
|
|
58
|
+
break;
|
|
59
|
+
case 'vector':
|
|
60
|
+
return `${this.mapMsgpackType(type.element)}[]`;
|
|
61
|
+
case 'array':
|
|
62
|
+
return `${this.mapMsgpackType(type.element)}[]`;
|
|
63
|
+
case 'optional':
|
|
64
|
+
return `${this.mapMsgpackType(type.element)} | undefined`;
|
|
65
|
+
case 'struct':
|
|
66
|
+
return `Msgpack${toPascalCase(type.struct.name)}`;
|
|
67
|
+
}
|
|
68
|
+
return 'unknown';
|
|
69
|
+
}
|
|
70
|
+
// Check if type needs conversion (has nested structs)
|
|
71
|
+
needsConversion(type) {
|
|
72
|
+
switch (type.kind) {
|
|
73
|
+
case 'primitive':
|
|
74
|
+
return false;
|
|
75
|
+
case 'vector':
|
|
76
|
+
case 'array':
|
|
77
|
+
case 'optional':
|
|
78
|
+
return this.needsConversion(type.element);
|
|
79
|
+
case 'struct':
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
// Generate field
|
|
85
|
+
generateField(field) {
|
|
86
|
+
const tsName = toCamelCase(field.name);
|
|
87
|
+
const tsType = this.mapType(field.type);
|
|
88
|
+
return ` ${tsName}: ${tsType};`;
|
|
89
|
+
}
|
|
90
|
+
// Generate msgpack field (original names, uses Msgpack* types for structs)
|
|
91
|
+
generateMsgpackField(field) {
|
|
92
|
+
const tsType = this.mapMsgpackType(field.type);
|
|
93
|
+
return ` ${field.name}: ${tsType};`;
|
|
94
|
+
}
|
|
95
|
+
// Generate public interface
|
|
96
|
+
generateInterface(struct) {
|
|
97
|
+
const tsName = toPascalCase(struct.name);
|
|
98
|
+
const fields = struct.fields.map(f => this.generateField(f)).join('\n');
|
|
99
|
+
return `export interface ${tsName} {
|
|
100
|
+
${fields}
|
|
101
|
+
}`;
|
|
102
|
+
}
|
|
103
|
+
// Generate msgpack interface (internal)
|
|
104
|
+
generateMsgpackInterface(struct) {
|
|
105
|
+
const tsName = toPascalCase(struct.name);
|
|
106
|
+
const fields = struct.fields.map(f => this.generateMsgpackField(f)).join('\n');
|
|
107
|
+
return `interface Msgpack${tsName} {
|
|
108
|
+
${fields}
|
|
109
|
+
}`;
|
|
110
|
+
}
|
|
111
|
+
// Generate to* conversion function
|
|
112
|
+
generateToFunction(struct) {
|
|
113
|
+
const tsName = toPascalCase(struct.name);
|
|
114
|
+
if (struct.fields.length === 0) {
|
|
115
|
+
return `function to${tsName}(o: Msgpack${tsName}): ${tsName} {
|
|
116
|
+
return {};
|
|
117
|
+
}`;
|
|
118
|
+
}
|
|
119
|
+
const checks = struct.fields
|
|
120
|
+
.map(f => ` if (o.${f.name} === undefined) { throw new Error("Expected ${f.name} in ${tsName} deserialization"); }`)
|
|
121
|
+
.join('\n');
|
|
122
|
+
const conversions = struct.fields
|
|
123
|
+
.map(f => {
|
|
124
|
+
const tsFieldName = toCamelCase(f.name);
|
|
125
|
+
const converter = this.generateToConverter(f.type, `o.${f.name}`);
|
|
126
|
+
return ` ${tsFieldName}: ${converter},`;
|
|
127
|
+
})
|
|
128
|
+
.join('\n');
|
|
129
|
+
return `function to${tsName}(o: Msgpack${tsName}): ${tsName} {
|
|
130
|
+
${checks};
|
|
131
|
+
return {
|
|
132
|
+
${conversions}
|
|
133
|
+
};
|
|
134
|
+
}`;
|
|
135
|
+
}
|
|
136
|
+
// Generate from* conversion function
|
|
137
|
+
generateFromFunction(struct) {
|
|
138
|
+
const tsName = toPascalCase(struct.name);
|
|
139
|
+
if (struct.fields.length === 0) {
|
|
140
|
+
return `function from${tsName}(o: ${tsName}): Msgpack${tsName} {
|
|
141
|
+
return {};
|
|
142
|
+
}`;
|
|
143
|
+
}
|
|
144
|
+
const checks = struct.fields
|
|
145
|
+
.map(f => {
|
|
146
|
+
const tsFieldName = toCamelCase(f.name);
|
|
147
|
+
return ` if (o.${tsFieldName} === undefined) { throw new Error("Expected ${tsFieldName} in ${tsName} serialization"); }`;
|
|
148
|
+
})
|
|
149
|
+
.join('\n');
|
|
150
|
+
const conversions = struct.fields
|
|
151
|
+
.map(f => {
|
|
152
|
+
const tsFieldName = toCamelCase(f.name);
|
|
153
|
+
const converter = this.generateFromConverter(f.type, `o.${tsFieldName}`);
|
|
154
|
+
return ` ${f.name}: ${converter},`;
|
|
155
|
+
})
|
|
156
|
+
.join('\n');
|
|
157
|
+
return `function from${tsName}(o: ${tsName}): Msgpack${tsName} {
|
|
158
|
+
${checks};
|
|
159
|
+
return {
|
|
160
|
+
${conversions}
|
|
161
|
+
};
|
|
162
|
+
}`;
|
|
163
|
+
}
|
|
164
|
+
// Generate converter for to* function
|
|
165
|
+
generateToConverter(type, value) {
|
|
166
|
+
if (!this.needsConversion(type)) {
|
|
167
|
+
return value;
|
|
168
|
+
}
|
|
169
|
+
switch (type.kind) {
|
|
170
|
+
case 'vector':
|
|
171
|
+
case 'array':
|
|
172
|
+
if (this.needsConversion(type.element)) {
|
|
173
|
+
return `${value}.map((v: any) => ${this.generateToConverter(type.element, 'v')})`;
|
|
174
|
+
}
|
|
175
|
+
return value;
|
|
176
|
+
case 'optional':
|
|
177
|
+
if (this.needsConversion(type.element)) {
|
|
178
|
+
return `${value} !== undefined ? ${this.generateToConverter(type.element, value)} : undefined`;
|
|
179
|
+
}
|
|
180
|
+
return value;
|
|
181
|
+
case 'struct':
|
|
182
|
+
return `to${toPascalCase(type.struct.name)}(${value})`;
|
|
183
|
+
}
|
|
184
|
+
return value;
|
|
185
|
+
}
|
|
186
|
+
// Generate converter for from* function
|
|
187
|
+
generateFromConverter(type, value) {
|
|
188
|
+
if (!this.needsConversion(type)) {
|
|
189
|
+
return value;
|
|
190
|
+
}
|
|
191
|
+
switch (type.kind) {
|
|
192
|
+
case 'vector':
|
|
193
|
+
case 'array':
|
|
194
|
+
if (this.needsConversion(type.element)) {
|
|
195
|
+
return `${value}.map((v: any) => ${this.generateFromConverter(type.element, 'v')})`;
|
|
196
|
+
}
|
|
197
|
+
return value;
|
|
198
|
+
case 'optional':
|
|
199
|
+
if (this.needsConversion(type.element)) {
|
|
200
|
+
return `${value} !== undefined ? ${this.generateFromConverter(type.element, value)} : undefined`;
|
|
201
|
+
}
|
|
202
|
+
return value;
|
|
203
|
+
case 'struct':
|
|
204
|
+
return `from${toPascalCase(type.struct.name)}(${value})`;
|
|
205
|
+
}
|
|
206
|
+
return value;
|
|
207
|
+
}
|
|
208
|
+
// Generate types file (api_types.ts)
|
|
209
|
+
generateTypes(schema) {
|
|
210
|
+
const allStructs = [...schema.structs.values(), ...schema.responses.values()];
|
|
211
|
+
// Public interfaces
|
|
212
|
+
const publicInterfaces = allStructs
|
|
213
|
+
.map(s => this.generateInterface(s))
|
|
214
|
+
.join('\n\n');
|
|
215
|
+
// Msgpack interfaces
|
|
216
|
+
const msgpackInterfaces = allStructs
|
|
217
|
+
.map(s => this.generateMsgpackInterface(s))
|
|
218
|
+
.join('\n\n');
|
|
219
|
+
// Conversion functions
|
|
220
|
+
const toFunctions = allStructs
|
|
221
|
+
.map(s => 'export ' + this.generateToFunction(s))
|
|
222
|
+
.join('\n\n');
|
|
223
|
+
const fromFunctions = allStructs
|
|
224
|
+
.map(s => 'export ' + this.generateFromFunction(s))
|
|
225
|
+
.join('\n\n');
|
|
226
|
+
// BbApiBase interface
|
|
227
|
+
const apiMethods = schema.commands
|
|
228
|
+
.map(c => ` ${toCamelCase(c.name)}(command: ${toPascalCase(c.name)}): Promise<${toPascalCase(c.responseType)}>;`)
|
|
229
|
+
.join('\n');
|
|
230
|
+
return `// AUTOGENERATED FILE - DO NOT EDIT
|
|
231
|
+
|
|
232
|
+
// Type aliases for primitive types
|
|
233
|
+
export type Field2 = [Uint8Array, Uint8Array];
|
|
234
|
+
|
|
235
|
+
// Public interfaces (exported)
|
|
236
|
+
${publicInterfaces}
|
|
237
|
+
|
|
238
|
+
// Private Msgpack interfaces (not exported)
|
|
239
|
+
${msgpackInterfaces}
|
|
240
|
+
|
|
241
|
+
// Conversion functions (exported)
|
|
242
|
+
${toFunctions}
|
|
243
|
+
|
|
244
|
+
${fromFunctions}
|
|
245
|
+
|
|
246
|
+
// Base API interface
|
|
247
|
+
export interface BbApiBase {
|
|
248
|
+
${apiMethods}
|
|
249
|
+
destroy(): Promise<void>;
|
|
250
|
+
}
|
|
251
|
+
`;
|
|
252
|
+
}
|
|
253
|
+
// Generate API method
|
|
254
|
+
generateAsyncApiMethod(command) {
|
|
255
|
+
const methodName = toCamelCase(command.name);
|
|
256
|
+
const cmdType = toPascalCase(command.name);
|
|
257
|
+
const respType = toPascalCase(command.responseType);
|
|
258
|
+
return ` ${methodName}(command: ${cmdType}): Promise<${respType}> {
|
|
259
|
+
const msgpackCommand = from${cmdType}(command);
|
|
260
|
+
return msgpackCall(this.backend, [["${command.name}", msgpackCommand]]).then(([variantName, result]: [string, any]) => {
|
|
261
|
+
if (variantName === 'ErrorResponse') {
|
|
262
|
+
throw new BBApiException(result.message || 'Unknown error from barretenberg');
|
|
263
|
+
}
|
|
264
|
+
if (variantName !== '${command.responseType}') {
|
|
265
|
+
throw new BBApiException(\`Expected variant name '${command.responseType}' but got '\${variantName}'\`);
|
|
266
|
+
}
|
|
267
|
+
return to${respType}(result);
|
|
268
|
+
});
|
|
269
|
+
}`;
|
|
270
|
+
}
|
|
271
|
+
generateSyncApiMethod(command) {
|
|
272
|
+
const methodName = toCamelCase(command.name);
|
|
273
|
+
const cmdType = toPascalCase(command.name);
|
|
274
|
+
const respType = toPascalCase(command.responseType);
|
|
275
|
+
return ` ${methodName}(command: ${cmdType}): ${respType} {
|
|
276
|
+
const msgpackCommand = from${cmdType}(command);
|
|
277
|
+
const [variantName, result] = msgpackCall(this.backend, [["${command.name}", msgpackCommand]]);
|
|
278
|
+
if (variantName === 'ErrorResponse') {
|
|
279
|
+
throw new BBApiException(result.message || 'Unknown error from barretenberg');
|
|
280
|
+
}
|
|
281
|
+
if (variantName !== '${command.responseType}') {
|
|
282
|
+
throw new BBApiException(\`Expected variant name '${command.responseType}' but got '\${variantName}'\`);
|
|
283
|
+
}
|
|
284
|
+
return to${respType}(result);
|
|
285
|
+
}`;
|
|
286
|
+
}
|
|
287
|
+
// Generate async API file
|
|
288
|
+
generateAsyncApi(schema) {
|
|
289
|
+
const imports = this.generateApiImports(schema);
|
|
290
|
+
const methods = schema.commands
|
|
291
|
+
.map(c => this.generateAsyncApiMethod(c))
|
|
292
|
+
.join('\n\n');
|
|
293
|
+
return `// AUTOGENERATED FILE - DO NOT EDIT
|
|
294
|
+
|
|
295
|
+
import { IMsgpackBackendAsync } from '../../bb_backends/interface.js';
|
|
296
|
+
import { Decoder, Encoder } from 'msgpackr';
|
|
297
|
+
import { BBApiException } from '../../bbapi_exception.js';
|
|
298
|
+
${imports}
|
|
299
|
+
|
|
300
|
+
async function msgpackCall(backend: IMsgpackBackendAsync, input: any[]) {
|
|
301
|
+
const inputBuffer = new Encoder({ useRecords: false }).pack(input);
|
|
302
|
+
const encodedResult = await backend.call(inputBuffer);
|
|
303
|
+
return new Decoder({ useRecords: false }).unpack(encodedResult);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
export class AsyncApi implements BbApiBase {
|
|
307
|
+
constructor(protected backend: IMsgpackBackendAsync) {}
|
|
308
|
+
|
|
309
|
+
${methods}
|
|
310
|
+
|
|
311
|
+
destroy(): Promise<void> {
|
|
312
|
+
return this.backend.destroy ? this.backend.destroy() : Promise.resolve();
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
`;
|
|
316
|
+
}
|
|
317
|
+
// Generate sync API file
|
|
318
|
+
generateSyncApi(schema) {
|
|
319
|
+
const imports = this.generateApiImports(schema);
|
|
320
|
+
const methods = schema.commands
|
|
321
|
+
.map(c => this.generateSyncApiMethod(c))
|
|
322
|
+
.join('\n\n');
|
|
323
|
+
return `// AUTOGENERATED FILE - DO NOT EDIT
|
|
324
|
+
|
|
325
|
+
import { IMsgpackBackendSync } from '../../bb_backends/interface.js';
|
|
326
|
+
import { Decoder, Encoder } from 'msgpackr';
|
|
327
|
+
import { BBApiException } from '../../bbapi_exception.js';
|
|
328
|
+
${imports}
|
|
329
|
+
|
|
330
|
+
function msgpackCall(backend: IMsgpackBackendSync, input: any[]) {
|
|
331
|
+
const inputBuffer = new Encoder({ useRecords: false }).pack(input);
|
|
332
|
+
const encodedResult = backend.call(inputBuffer);
|
|
333
|
+
return new Decoder({ useRecords: false }).unpack(encodedResult);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
export class SyncApi {
|
|
337
|
+
constructor(protected backend: IMsgpackBackendSync) {}
|
|
338
|
+
|
|
339
|
+
${methods}
|
|
340
|
+
|
|
341
|
+
destroy(): void {
|
|
342
|
+
if (this.backend.destroy) this.backend.destroy();
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
`;
|
|
346
|
+
}
|
|
347
|
+
// Generate import statement for API files
|
|
348
|
+
generateApiImports(schema) {
|
|
349
|
+
const types = new Set();
|
|
350
|
+
// Add command types and their conversion functions
|
|
351
|
+
for (const cmd of schema.commands) {
|
|
352
|
+
const cmdType = toPascalCase(cmd.name);
|
|
353
|
+
const respType = toPascalCase(cmd.responseType);
|
|
354
|
+
types.add(cmdType);
|
|
355
|
+
types.add(respType);
|
|
356
|
+
types.add(`from${cmdType}`);
|
|
357
|
+
types.add(`to${respType}`);
|
|
358
|
+
}
|
|
359
|
+
// Add BbApiBase
|
|
360
|
+
types.add('BbApiBase');
|
|
361
|
+
const sortedTypes = Array.from(types).sort();
|
|
362
|
+
return `import { ${sortedTypes.join(', ')} } from './api_types.js';`;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdF9jb2RlZ2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NiaW5kL3R5cGVzY3JpcHRfY29kZWdlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUdILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0MsU0FBUyxXQUFXLENBQUMsSUFBWSxFQUFVO0lBQ3pDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFBLENBQ3pEO0FBRUQsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QiwrQ0FBK0M7SUFDdkMsT0FBTyxDQUFDLElBQVUsRUFBVTtRQUNsQyxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixLQUFLLFdBQVc7Z0JBQ2QsUUFBUSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3ZCLEtBQUssTUFBTSxFQUFFLE9BQU8sU0FBUyxDQUFDO29CQUM5QixLQUFLLElBQUksRUFBRSxPQUFPLFFBQVEsQ0FBQztvQkFDM0IsS0FBSyxLQUFLLEVBQUUsT0FBTyxRQUFRLENBQUM7b0JBQzVCLEtBQUssS0FBSyxFQUFFLE9BQU8sUUFBUSxDQUFDO29CQUM1QixLQUFLLEtBQUssRUFBRSxPQUFPLFFBQVEsQ0FBQztvQkFDNUIsS0FBSyxLQUFLLEVBQUUsT0FBTyxRQUFRLENBQUM7b0JBQzVCLEtBQUssUUFBUSxFQUFFLE9BQU8sUUFBUSxDQUFDO29CQUMvQixLQUFLLE9BQU8sRUFBRSxPQUFPLFlBQVksQ0FBQztvQkFDbEMsS0FBSyxRQUFRLEVBQUUsT0FBTywwQkFBMEIsQ0FBQyxDQUFFLHdCQUF3QjtnQkFDN0UsQ0FBQztnQkFDRCxNQUFNO1lB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
|
package/dest/node/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { Crs, GrumpkinCrs } from './crs/index.js';
|
|
2
|
-
export { type BackendOptions, BackendType, Barretenberg, BarretenbergSync, UltraHonkVerifierBackend, UltraHonkBackend, AztecClientBackend, } from './barretenberg/index.js';
|
|
2
|
+
export { type BackendOptions, BackendType, Barretenberg, BarretenbergSync, UltraHonkVerifierBackend, UltraHonkBackend, AztecClientBackend, fieldToString, fieldsToStrings, type UltraHonkBackendOptions, type VerifierTarget, } from './barretenberg/index.js';
|
|
3
3
|
export { randomBytes } from './random/index.js';
|
|
4
4
|
export { splitHonkProof, reconstructHonkProof, deflattenFields, type ProofData } from './proof/index.js';
|
|
5
5
|
export { BBApiException } from './bbapi_exception.js';
|
|
6
6
|
export type { Bn254G1Point, Bn254G2Point, GrumpkinPoint, Secp256k1Point, Secp256r1Point, Field2, } from './cbind/generated/api_types.js';
|
|
7
7
|
export { BN254_FQ_MODULUS, BN254_FR_MODULUS, BN254_G1_GENERATOR, BN254_G2_GENERATOR, GRUMPKIN_FR_MODULUS, GRUMPKIN_FQ_MODULUS, GRUMPKIN_G1_GENERATOR, SECP256K1_FR_MODULUS, SECP256K1_FQ_MODULUS, SECP256K1_G1_GENERATOR, SECP256R1_FR_MODULUS, SECP256R1_FQ_MODULUS, SECP256R1_G1_GENERATOR, } from './cbind/generated/curve_constants.js';
|
|
8
8
|
export { findNapiBinary } from './bb_backends/node/platform.js';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxLQUFLLGNBQWMsRUFDbkIsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsd0JBQXdCLEVBQ3hCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLGVBQWUsRUFDZixLQUFLLHVCQUF1QixFQUM1QixLQUFLLGNBQWMsR0FDcEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsS0FBSyxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHdEQsWUFBWSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osYUFBYSxFQUNiLGNBQWMsRUFDZCxjQUFjLEVBQ2QsTUFBTSxHQUNQLE1BQU0sZ0NBQWdDLENBQUM7QUFHeEMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHNCQUFzQixHQUN2QixNQUFNLHNDQUFzQyxDQUFDO0FBRTlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQyJ9
|
package/dest/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,KAAK,cAAc,EACnB,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,KAAK,cAAc,EACnB,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,KAAK,uBAAuB,EAC5B,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzG,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,cAAc,EACd,MAAM,GACP,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC"}
|
package/dest/node/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { Crs, GrumpkinCrs } from './crs/index.js';
|
|
2
|
-
export { BackendType, Barretenberg, BarretenbergSync, UltraHonkVerifierBackend, UltraHonkBackend, AztecClientBackend, } from './barretenberg/index.js';
|
|
2
|
+
export { BackendType, Barretenberg, BarretenbergSync, UltraHonkVerifierBackend, UltraHonkBackend, AztecClientBackend, fieldToString, fieldsToStrings, } from './barretenberg/index.js';
|
|
3
3
|
export { randomBytes } from './random/index.js';
|
|
4
4
|
export { splitHonkProof, reconstructHonkProof, deflattenFields } from './proof/index.js';
|
|
5
5
|
export { BBApiException } from './bbapi_exception.js';
|
|
6
6
|
// Export curve constants for use in foundation
|
|
7
7
|
export { BN254_FQ_MODULUS, BN254_FR_MODULUS, BN254_G1_GENERATOR, BN254_G2_GENERATOR, GRUMPKIN_FR_MODULUS, GRUMPKIN_FQ_MODULUS, GRUMPKIN_G1_GENERATOR, SECP256K1_FR_MODULUS, SECP256K1_FQ_MODULUS, SECP256K1_G1_GENERATOR, SECP256R1_FR_MODULUS, SECP256R1_FQ_MODULUS, SECP256R1_G1_GENERATOR, } from './cbind/generated/curve_constants.js';
|
|
8
8
|
export { findNapiBinary } from './bb_backends/node/platform.js';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBRUwsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsd0JBQXdCLEVBQ3hCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLGVBQWUsR0FHaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQWtCLE1BQU0sa0JBQWtCLENBQUM7QUFDekcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBWXRELCtDQUErQztBQUMvQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsc0JBQXNCLEdBQ3ZCLE1BQU0sc0NBQXNDLENBQUM7QUFFOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDIn0=
|