@aztec/bb.js 0.0.1-commit.5daedc8 → 0.0.1-commit.6230a0c

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 (204) 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/crs/net_crs.d.ts +6 -1
  45. package/dest/browser/crs/net_crs.d.ts.map +1 -1
  46. package/dest/browser/crs/net_crs.js +30 -7
  47. package/dest/browser/index.d.ts +2 -2
  48. package/dest/browser/index.d.ts.map +1 -1
  49. package/dest/browser/index.js +2 -2
  50. package/dest/node/barretenberg/backend.d.ts +49 -17
  51. package/dest/node/barretenberg/backend.d.ts.map +1 -1
  52. package/dest/node/barretenberg/backend.js +111 -11
  53. package/dest/node/barretenberg/backend.test.d.ts +2 -0
  54. package/dest/node/barretenberg/backend.test.d.ts.map +1 -0
  55. package/dest/node/barretenberg/backend.test.js +103 -0
  56. package/dest/node/barretenberg/index.d.ts +2 -2
  57. package/dest/node/barretenberg/index.d.ts.map +1 -1
  58. package/dest/node/barretenberg/index.js +2 -2
  59. package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  60. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +1 -1
  61. package/dest/node/bb_backends/index.d.ts +3 -1
  62. package/dest/node/bb_backends/index.d.ts.map +1 -1
  63. package/dest/node/bb_backends/node/index.d.ts +1 -1
  64. package/dest/node/bb_backends/node/index.d.ts.map +1 -1
  65. package/dest/node/bb_backends/node/index.js +5 -5
  66. package/dest/node/bb_backends/node/native_shm.d.ts +3 -2
  67. package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -1
  68. package/dest/node/bb_backends/node/native_shm.js +40 -21
  69. package/dest/node/bb_backends/node/native_shm_async.d.ts +2 -2
  70. package/dest/node/bb_backends/node/native_shm_async.d.ts.map +1 -1
  71. package/dest/node/bb_backends/node/native_shm_async.js +17 -21
  72. package/dest/node/bb_backends/node/native_socket.d.ts +1 -1
  73. package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -1
  74. package/dest/node/bb_backends/node/native_socket.js +7 -5
  75. package/dest/node/bb_backends/node/platform.d.ts +1 -1
  76. package/dest/node/bb_backends/node/platform.d.ts.map +1 -1
  77. package/dest/node/bb_backends/node/platform.js +7 -2
  78. package/dest/node/cbind/generate.d.ts +5 -2
  79. package/dest/node/cbind/generate.d.ts.map +1 -1
  80. package/dest/node/cbind/generate.js +47 -25
  81. package/dest/node/cbind/generated/api_types.d.ts +766 -1687
  82. package/dest/node/cbind/generated/api_types.d.ts.map +1 -1
  83. package/dest/node/cbind/generated/api_types.js +1465 -1555
  84. package/dest/node/cbind/generated/async.d.ts +3 -5
  85. package/dest/node/cbind/generated/async.d.ts.map +1 -1
  86. package/dest/node/cbind/generated/async.js +13 -33
  87. package/dest/node/cbind/generated/sync.d.ts +3 -5
  88. package/dest/node/cbind/generated/sync.d.ts.map +1 -1
  89. package/dest/node/cbind/generated/sync.js +13 -31
  90. package/dest/node/cbind/naming.d.ts +16 -0
  91. package/dest/node/cbind/naming.d.ts.map +1 -0
  92. package/dest/node/cbind/naming.js +24 -0
  93. package/dest/node/cbind/rust_codegen.d.ts +26 -0
  94. package/dest/node/cbind/rust_codegen.d.ts.map +1 -0
  95. package/dest/node/cbind/rust_codegen.js +461 -0
  96. package/dest/node/cbind/schema_visitor.d.ts +47 -0
  97. package/dest/node/cbind/schema_visitor.d.ts.map +1 -0
  98. package/dest/node/cbind/schema_visitor.js +158 -0
  99. package/dest/node/cbind/typescript_codegen.d.ts +30 -0
  100. package/dest/node/cbind/typescript_codegen.d.ts.map +1 -0
  101. package/dest/node/cbind/typescript_codegen.js +365 -0
  102. package/dest/node/crs/net_crs.d.ts +6 -1
  103. package/dest/node/crs/net_crs.d.ts.map +1 -1
  104. package/dest/node/crs/net_crs.js +30 -7
  105. package/dest/node/crs/net_crs.test.d.ts +2 -0
  106. package/dest/node/crs/net_crs.test.d.ts.map +1 -0
  107. package/dest/node/crs/net_crs.test.js +39 -0
  108. package/dest/node/index.d.ts +2 -2
  109. package/dest/node/index.d.ts.map +1 -1
  110. package/dest/node/index.js +2 -2
  111. package/dest/node-cjs/barretenberg/backend.d.ts +49 -17
  112. package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
  113. package/dest/node-cjs/barretenberg/backend.js +113 -11
  114. package/dest/node-cjs/barretenberg/backend.test.d.ts +2 -0
  115. package/dest/node-cjs/barretenberg/backend.test.d.ts.map +1 -0
  116. package/dest/node-cjs/barretenberg/backend.test.js +105 -0
  117. package/dest/node-cjs/barretenberg/index.d.ts +2 -2
  118. package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
  119. package/dest/node-cjs/barretenberg/index.js +4 -2
  120. package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  121. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +1 -1
  122. package/dest/node-cjs/bb_backends/index.d.ts +3 -1
  123. package/dest/node-cjs/bb_backends/index.d.ts.map +1 -1
  124. package/dest/node-cjs/bb_backends/node/index.d.ts +1 -1
  125. package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -1
  126. package/dest/node-cjs/bb_backends/node/index.js +5 -5
  127. package/dest/node-cjs/bb_backends/node/native_shm.d.ts +3 -2
  128. package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -1
  129. package/dest/node-cjs/bb_backends/node/native_shm.js +39 -20
  130. package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts +2 -2
  131. package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts.map +1 -1
  132. package/dest/node-cjs/bb_backends/node/native_shm_async.js +17 -21
  133. package/dest/node-cjs/bb_backends/node/native_socket.d.ts +1 -1
  134. package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -1
  135. package/dest/node-cjs/bb_backends/node/native_socket.js +7 -5
  136. package/dest/node-cjs/bb_backends/node/platform.d.ts +1 -1
  137. package/dest/node-cjs/bb_backends/node/platform.d.ts.map +1 -1
  138. package/dest/node-cjs/bb_backends/node/platform.js +7 -2
  139. package/dest/node-cjs/cbind/generate.d.ts +5 -2
  140. package/dest/node-cjs/cbind/generate.d.ts.map +1 -1
  141. package/dest/node-cjs/cbind/generate.js +47 -25
  142. package/dest/node-cjs/cbind/generated/api_types.d.ts +766 -1687
  143. package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -1
  144. package/dest/node-cjs/cbind/generated/api_types.js +1671 -1771
  145. package/dest/node-cjs/cbind/generated/async.d.ts +3 -5
  146. package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
  147. package/dest/node-cjs/cbind/generated/async.js +12 -32
  148. package/dest/node-cjs/cbind/generated/sync.d.ts +3 -5
  149. package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
  150. package/dest/node-cjs/cbind/generated/sync.js +12 -30
  151. package/dest/node-cjs/cbind/naming.d.ts +16 -0
  152. package/dest/node-cjs/cbind/naming.d.ts.map +1 -0
  153. package/dest/node-cjs/cbind/naming.js +28 -0
  154. package/dest/node-cjs/cbind/rust_codegen.d.ts +26 -0
  155. package/dest/node-cjs/cbind/rust_codegen.d.ts.map +1 -0
  156. package/dest/node-cjs/cbind/rust_codegen.js +465 -0
  157. package/dest/node-cjs/cbind/schema_visitor.d.ts +47 -0
  158. package/dest/node-cjs/cbind/schema_visitor.d.ts.map +1 -0
  159. package/dest/node-cjs/cbind/schema_visitor.js +162 -0
  160. package/dest/node-cjs/cbind/typescript_codegen.d.ts +30 -0
  161. package/dest/node-cjs/cbind/typescript_codegen.d.ts.map +1 -0
  162. package/dest/node-cjs/cbind/typescript_codegen.js +369 -0
  163. package/dest/node-cjs/crs/net_crs.d.ts +6 -1
  164. package/dest/node-cjs/crs/net_crs.d.ts.map +1 -1
  165. package/dest/node-cjs/crs/net_crs.js +31 -7
  166. package/dest/node-cjs/crs/net_crs.test.d.ts +2 -0
  167. package/dest/node-cjs/crs/net_crs.test.d.ts.map +1 -0
  168. package/dest/node-cjs/crs/net_crs.test.js +41 -0
  169. package/dest/node-cjs/index.d.ts +2 -2
  170. package/dest/node-cjs/index.d.ts.map +1 -1
  171. package/dest/node-cjs/index.js +4 -2
  172. package/package.json +1 -1
  173. package/src/barretenberg/backend.test.ts +122 -0
  174. package/src/barretenberg/backend.ts +151 -25
  175. package/src/barretenberg/index.ts +9 -1
  176. package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +1 -1
  177. package/src/bb_backends/index.ts +3 -0
  178. package/src/bb_backends/node/index.ts +9 -4
  179. package/src/bb_backends/node/native_shm.ts +38 -19
  180. package/src/bb_backends/node/native_shm_async.ts +15 -19
  181. package/src/bb_backends/node/native_socket.ts +7 -5
  182. package/src/bb_backends/node/platform.ts +6 -1
  183. package/src/cbind/generate.ts +51 -32
  184. package/src/cbind/generated/api_types.ts +3050 -0
  185. package/src/cbind/generated/async.ts +696 -0
  186. package/src/cbind/generated/curve_constants.ts +53 -0
  187. package/src/cbind/generated/sync.ts +644 -0
  188. package/src/cbind/naming.ts +27 -0
  189. package/src/cbind/rust_codegen.ts +504 -0
  190. package/src/cbind/schema_visitor.ts +219 -0
  191. package/src/cbind/typescript_codegen.ts +419 -0
  192. package/src/crs/net_crs.test.ts +47 -0
  193. package/src/crs/net_crs.ts +45 -14
  194. package/src/index.ts +4 -0
  195. package/dest/browser/cbind/schema_compiler.d.ts +0 -68
  196. package/dest/browser/cbind/schema_compiler.d.ts.map +0 -1
  197. package/dest/browser/cbind/schema_compiler.js +0 -600
  198. package/dest/node/cbind/schema_compiler.d.ts +0 -68
  199. package/dest/node/cbind/schema_compiler.d.ts.map +0 -1
  200. package/dest/node/cbind/schema_compiler.js +0 -600
  201. package/dest/node-cjs/cbind/schema_compiler.d.ts +0 -68
  202. package/dest/node-cjs/cbind/schema_compiler.d.ts.map +0 -1
  203. package/dest/node-cjs/cbind/schema_compiler.js +0 -607
  204. 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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
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Fetches data from primary URL, falling back to secondary on failure
3
+ * @internal Exported for testing
4
+ */
5
+ export declare function fetchWithFallback(primaryUrl: string, fallbackUrl: string, options: RequestInit): Promise<Response>;
1
6
  /**
2
7
  * Downloader for CRS from the web or local.
3
8
  */
@@ -67,4 +72,4 @@ export declare class NetGrumpkinCrs {
67
72
  getG1Data(): Uint8Array;
68
73
  private fetchG1Data;
69
74
  }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0X2Nycy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Nycy9uZXRfY3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBOztHQUVHO0FBQ0gscUJBQWEsTUFBTTthQVFDLFNBQVMsRUFBRSxNQUFNO0lBUG5DLE9BQU8sQ0FBQyxJQUFJLENBQWM7SUFDMUIsT0FBTyxDQUFDLE1BQU0sQ0FBYztJQUU1QjtJQUNFOztPQUVHO0lBQ2EsU0FBUyxFQUFFLE1BQU0sRUFDL0I7SUFFSjs7T0FFRztJQUNHLElBQUksa0JBR1Q7SUFFRDs7T0FFRztJQUNHLFlBQVksSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBR3hEO0lBRUQ7O09BRUc7SUFDRyxZQUFZLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUd4RDtJQUVLLGNBQWMscUNBR25CO0lBRUQ7O09BRUc7SUFDRyxjQUFjLHFDQUduQjtJQUVEOzs7T0FHRztJQUNILFNBQVMsSUFBSSxVQUFVLENBRXRCO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxJQUFJLFVBQVUsQ0FFdEI7WUFLYSxXQUFXO1lBc0JYLFdBQVc7Q0FTMUI7QUFFRDs7R0FFRztBQUNILHFCQUFhLGNBQWM7YUFPUCxTQUFTLEVBQUUsTUFBTTtJQU5uQyxPQUFPLENBQUMsSUFBSSxDQUFjO0lBRTFCO0lBQ0U7O09BRUc7SUFDYSxTQUFTLEVBQUUsTUFBTSxFQUMvQjtJQUVKOztPQUVHO0lBQ0csSUFBSSxrQkFFVDtJQUVLLGNBQWMscUNBR25CO0lBRUQ7O09BRUc7SUFDRyxZQUFZLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUd4RDtJQUVEOzs7T0FHRztJQUNILFNBQVMsSUFBSSxVQUFVLENBRXRCO1lBS2EsV0FBVztDQWUxQiJ9
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0X2Nycy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Nycy9uZXRfY3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BOzs7R0FHRztBQUNILHdCQUFzQixpQkFBaUIsQ0FDckMsVUFBVSxFQUFFLE1BQU0sRUFDbEIsV0FBVyxFQUFFLE1BQU0sRUFDbkIsT0FBTyxFQUFFLFdBQVcsR0FDbkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQVVuQjtBQUVEOztHQUVHO0FBQ0gscUJBQWEsTUFBTTthQVFDLFNBQVMsRUFBRSxNQUFNO0lBUG5DLE9BQU8sQ0FBQyxJQUFJLENBQWM7SUFDMUIsT0FBTyxDQUFDLE1BQU0sQ0FBYztJQUU1QjtJQUNFOztPQUVHO0lBQ2EsU0FBUyxFQUFFLE1BQU0sRUFDL0I7SUFFSjs7T0FFRztJQUNHLElBQUksa0JBR1Q7SUFFRDs7T0FFRztJQUNHLFlBQVksSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBR3hEO0lBRUQ7O09BRUc7SUFDRyxZQUFZLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUd4RDtJQUVLLGNBQWMscUNBR25CO0lBRUQ7O09BRUc7SUFDRyxjQUFjLHFDQUduQjtJQUVEOzs7T0FHRztJQUNILFNBQVMsSUFBSSxVQUFVLENBRXRCO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxJQUFJLFVBQVUsQ0FFdEI7WUFLYSxXQUFXO1lBc0JYLFdBQVc7Q0FTMUI7QUFFRDs7R0FFRztBQUNILHFCQUFhLGNBQWM7YUFPUCxTQUFTLEVBQUUsTUFBTTtJQU5uQyxPQUFPLENBQUMsSUFBSSxDQUFjO0lBRTFCO0lBQ0U7O09BRUc7SUFDYSxTQUFTLEVBQUUsTUFBTSxFQUMvQjtJQUVKOztPQUVHO0lBQ0csSUFBSSxrQkFFVDtJQUVLLGNBQWMscUNBR25CO0lBRUQ7O09BRUc7SUFDRyxZQUFZLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUd4RDtJQUVEOzs7T0FHRztJQUNILFNBQVMsSUFBSSxVQUFVLENBRXRCO1lBS2EsV0FBVztDQW9CMUIifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"net_crs.d.ts","sourceRoot":"","sources":["../../../src/crs/net_crs.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,qBAAa,MAAM;aAQC,SAAS,EAAE,MAAM;IAPnC,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,MAAM,CAAc;IAE5B;IACE;;OAEG;IACa,SAAS,EAAE,MAAM,EAC/B;IAEJ;;OAEG;IACG,IAAI,kBAGT;IAED;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAGxD;IAED;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAGxD;IAEK,cAAc,qCAGnB;IAED;;OAEG;IACG,cAAc,qCAGnB;IAED;;;OAGG;IACH,SAAS,IAAI,UAAU,CAEtB;IAED;;;OAGG;IACH,SAAS,IAAI,UAAU,CAEtB;YAKa,WAAW;YAsBX,WAAW;CAS1B;AAED;;GAEG;AACH,qBAAa,cAAc;aAOP,SAAS,EAAE,MAAM;IANnC,OAAO,CAAC,IAAI,CAAc;IAE1B;IACE;;OAEG;IACa,SAAS,EAAE,MAAM,EAC/B;IAEJ;;OAEG;IACG,IAAI,kBAET;IAEK,cAAc,qCAGnB;IAED;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAGxD;IAED;;;OAGG;IACH,SAAS,IAAI,UAAU,CAEtB;YAKa,WAAW;CAe1B"}
1
+ {"version":3,"file":"net_crs.d.ts","sourceRoot":"","sources":["../../../src/crs/net_crs.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,QAAQ,CAAC,CAUnB;AAED;;GAEG;AACH,qBAAa,MAAM;aAQC,SAAS,EAAE,MAAM;IAPnC,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,MAAM,CAAc;IAE5B;IACE;;OAEG;IACa,SAAS,EAAE,MAAM,EAC/B;IAEJ;;OAEG;IACG,IAAI,kBAGT;IAED;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAGxD;IAED;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAGxD;IAEK,cAAc,qCAGnB;IAED;;OAEG;IACG,cAAc,qCAGnB;IAED;;;OAGG;IACH,SAAS,IAAI,UAAU,CAEtB;IAED;;;OAGG;IACH,SAAS,IAAI,UAAU,CAEtB;YAKa,WAAW;YAsBX,WAAW;CAS1B;AAED;;GAEG;AACH,qBAAa,cAAc;aAOP,SAAS,EAAE,MAAM;IANnC,OAAO,CAAC,IAAI,CAAc;IAE1B;IACE;;OAEG;IACa,SAAS,EAAE,MAAM,EAC/B;IAEJ;;OAEG;IACG,IAAI,kBAET;IAEK,cAAc,qCAGnB;IAED;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAGxD;IAED;;;OAGG;IACH,SAAS,IAAI,UAAU,CAEtB;YAKa,WAAW;CAoB1B"}