@aztec/foundation 0.61.0 → 0.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/abi/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,KAAK,YAAY,EAAoB,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAG7E;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC;AA0FxG;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,cAEzD;AAED;;GAEG;AACH,qBAAa,wBAAwB;IAEvB,OAAO,CAAC,IAAI;IAAU,OAAO,CAAC,UAAU;IAAkB,OAAO,CAAC,YAAY;IAD1F,OAAO,CAAC,SAAS,CAAS;gBACN,IAAI,EAAE,MAAM,EAAU,UAAU,EAAE,YAAY,EAAE,EAAU,YAAY,UAAQ;IAIlG;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAKvB;;;OAGG;IACI,MAAM,IAAI,MAAM;CAGxB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAE/E;AAED;;;;;GAKG;AACH,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAEjG"}
1
+ {"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/abi/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,KAAK,YAAY,EAAoB,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAG7E;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC;AA8FxG;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,cAEzD;AAED;;GAEG;AACH,qBAAa,wBAAwB;IAEvB,OAAO,CAAC,IAAI;IAAU,OAAO,CAAC,UAAU;IAAkB,OAAO,CAAC,YAAY;IAD1F,OAAO,CAAC,SAAS,CAAS;gBACN,IAAI,EAAE,MAAM,EAAU,UAAU,EAAE,YAAY,EAAE,EAAU,YAAY,UAAQ;IAIlG;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAKvB;;;OAGG;IACI,MAAM,IAAI,MAAM;CAGxB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAE/E;AAED;;;;;GAKG;AACH,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAEjG"}
@@ -1,8 +1,7 @@
1
1
  import { AztecAddress } from '../aztec-address/index.js';
2
- import { isAztecAddressStruct } from './utils.js';
2
+ import { isAztecAddressStruct, parseSignedInt } from './utils.js';
3
3
  /**
4
4
  * Decodes values using a provided ABI.
5
- * Missing support for signed integer.
6
5
  */
7
6
  class AbiDecoder {
8
7
  constructor(types, flattened) {
@@ -18,11 +17,14 @@ class AbiDecoder {
18
17
  switch (abiType.kind) {
19
18
  case 'field':
20
19
  return this.getNextField().toBigInt();
21
- case 'integer':
20
+ case 'integer': {
21
+ const nextField = this.getNextField();
22
22
  if (abiType.sign === 'signed') {
23
- throw new Error('Unsupported type: signed integer');
23
+ // We parse the buffer using 2's complement
24
+ return parseSignedInt(nextField.toBuffer(), abiType.width);
24
25
  }
25
- return this.getNextField().toBigInt();
26
+ return nextField.toBigInt();
27
+ }
26
28
  case 'boolean':
27
29
  return !this.getNextField().isZero();
28
30
  case 'array': {
@@ -166,4 +168,4 @@ export function decodeFunctionSignature(name, parameters) {
166
168
  export function decodeFunctionSignatureWithParameterNames(name, parameters) {
167
169
  return new FunctionSignatureDecoder(name, parameters, true).decode();
168
170
  }
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hYmkvZGVjb2Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBT2xEOzs7R0FHRztBQUNILE1BQU0sVUFBVTtJQUNkLFlBQW9CLEtBQWdCLEVBQVUsU0FBZTtRQUF6QyxVQUFLLEdBQUwsS0FBSyxDQUFXO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBTTtJQUFHLENBQUM7SUFFakU7Ozs7T0FJRztJQUNLLFVBQVUsQ0FBQyxPQUFnQjtRQUNqQyxRQUFRLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEMsS0FBSyxTQUFTO2dCQUNaLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO2dCQUN0RCxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hDLEtBQUssU0FBUztnQkFDWixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZDLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDYixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDM0MsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO2dCQUNELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUNELEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDZCxNQUFNLE1BQU0sR0FBa0MsRUFBRSxDQUFDO2dCQUNqRCxJQUFJLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ2xDLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzFELENBQUM7Z0JBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ25DLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELENBQUM7Z0JBQ0QsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztZQUNELEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDZCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDM0MsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDN0MsQ0FBQztnQkFDRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFDRCxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2IsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNqQixLQUFLLE1BQU0sWUFBWSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDMUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0Q7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFlBQVk7UUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNO1FBQ1gsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsR0FBYyxFQUFFLE1BQVk7SUFDeEQsT0FBTyxJQUFJLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDdEQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHdCQUF3QjtJQUVuQyxZQUFvQixJQUFZLEVBQVUsVUFBMEIsRUFBVSxlQUFlLEtBQUs7UUFBOUUsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQVE7UUFDaEcsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssZ0JBQWdCLENBQUMsS0FBYztRQUNyQyxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxPQUFPLENBQUM7WUFDakIsS0FBSyxTQUFTO2dCQUNaLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO2dCQUN0RCxDQUFDO2dCQUNELE9BQU8sSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsS0FBSyxTQUFTO2dCQUNaLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssT0FBTztnQkFDVixPQUFPLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDbEUsS0FBSyxRQUFRO2dCQUNYLE9BQU8sT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDaEMsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO1lBQ2pHO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssZUFBZSxDQUFDLEtBQWtCO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztJQUMzRyxDQUFDO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxJQUFZLEVBQUUsVUFBMEI7SUFDOUUsT0FBTyxJQUFJLHdCQUF3QixDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNqRSxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUseUNBQXlDLENBQUMsSUFBWSxFQUFFLFVBQTBCO0lBQ2hHLE9BQU8sSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3ZFLENBQUMifQ==
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hYmkvZGVjb2Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQU9sRTs7R0FFRztBQUNILE1BQU0sVUFBVTtJQUNkLFlBQW9CLEtBQWdCLEVBQVUsU0FBZTtRQUF6QyxVQUFLLEdBQUwsS0FBSyxDQUFXO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBTTtJQUFHLENBQUM7SUFFakU7Ozs7T0FJRztJQUNLLFVBQVUsQ0FBQyxPQUFnQjtRQUNqQyxRQUFRLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNmLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFFdEMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUM5QiwyQ0FBMkM7b0JBQzNDLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzdELENBQUM7Z0JBRUQsT0FBTyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDOUIsQ0FBQztZQUNELEtBQUssU0FBUztnQkFDWixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZDLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDYixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENB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
@@ -1,3 +1,5 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
1
3
  import { type AbiType } from './abi.js';
2
4
  /**
3
5
  * Returns whether the ABI type is an Aztec or Ethereum Address defined in Aztec.nr.
@@ -28,4 +30,10 @@ export declare function isFunctionSelectorStruct(abiType: AbiType): boolean;
28
30
  * @param abiType - Type to check.
29
31
  */
30
32
  export declare function isWrappedFieldStruct(abiType: AbiType): boolean;
33
+ /**
34
+ * Returns a bigint by parsing a serialized 2's complement signed int.
35
+ * @param b - The signed int as a buffer
36
+ * @returns - a deserialized bigint
37
+ */
38
+ export declare function parseSignedInt(b: Buffer, width?: number): bigint;
31
39
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/abi/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,WAE/C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,WAElD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,WAEpD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,WAExD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,WAOpD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/abi/utils.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,WAE/C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,WAElD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,WAEpD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,WAExD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,WAOpD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,UAqBvD"}
package/dest/abi/utils.js CHANGED
@@ -40,4 +40,26 @@ export function isWrappedFieldStruct(abiType) {
40
40
  abiType.fields[0].name === 'inner' &&
41
41
  abiType.fields[0].type.kind === 'field');
42
42
  }
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE9BQWdCO0lBQzlDLE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBZ0I7SUFDakQsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ25GLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQWdCO0lBQ25ELE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUNyRixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxPQUFnQjtJQUN2RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7QUFDaEgsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxPQUFnQjtJQUNuRCxPQUFPLENBQ0wsT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRO1FBQ3pCLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDM0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTztRQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUN4QyxDQUFDO0FBQ0osQ0FBQyJ9
43
+ /**
44
+ * Returns a bigint by parsing a serialized 2's complement signed int.
45
+ * @param b - The signed int as a buffer
46
+ * @returns - a deserialized bigint
47
+ */
48
+ export function parseSignedInt(b, width) {
49
+ const buf = Buffer.from(b);
50
+ // We get the last (width / 8) bytes where width = bits of type (i64, i32 etc)
51
+ const slicedBuf = width !== undefined ? buf.subarray(-(width / 8)) : buf;
52
+ // Then manually deserialize with 2's complement, with the process as follows:
53
+ // If our most significant bit is high...
54
+ if (0x80 & slicedBuf.subarray(0, 1).readUInt8()) {
55
+ // We flip the bits
56
+ for (let i = 0; i < slicedBuf.length; i++) {
57
+ slicedBuf[i] = ~slicedBuf[i];
58
+ }
59
+ // Add one, then negate it
60
+ return -(BigInt(`0x${slicedBuf.toString('hex')}`) + 1n);
61
+ }
62
+ // ...otherwise we just return our positive int
63
+ return BigInt(`0x${slicedBuf.toString('hex')}`);
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE9BQWdCO0lBQzlDLE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBZ0I7SUFDakQsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ25GLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQWdCO0lBQ25ELE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUNyRixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxPQUFnQjtJQUN2RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7QUFDaEgsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxPQUFnQjtJQUNuRCxPQUFPLENBQ0wsT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRO1FBQ3pCLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7UUFDM0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTztRQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUN4QyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLENBQVMsRUFBRSxLQUFjO0lBQ3RELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFM0IsOEVBQThFO0lBQzlFLE1BQU0sU0FBUyxHQUFHLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFFekUsOEVBQThFO0lBRTlFLHlDQUF5QztJQUN6QyxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1FBQ2hELG1CQUFtQjtRQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBRUQsMEJBQTBCO1FBQzFCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsT0FBTyxNQUFNLENBQUMsS0FBSyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFDIn0=
@@ -1,2 +1,2 @@
1
- export type EnvVar = 'ACVM_BINARY_PATH' | 'ACVM_WORKING_DIRECTORY' | 'APELLA_CONTRACT_ADDRESS' | 'API_KEY' | 'API_PREFIX' | 'ARCHIVER_MAX_LOGS' | 'ARCHIVER_POLLING_INTERVAL_MS' | 'ARCHIVER_URL' | 'ARCHIVER_VIEM_POLLING_INTERVAL_MS' | 'ASSUME_PROVEN_THROUGH_BLOCK_NUMBER' | 'AZTEC_NODE_URL' | 'AZTEC_PORT' | 'BB_BINARY_PATH' | 'BB_SKIP_CLEANUP' | 'BB_WORKING_DIRECTORY' | 'BOOTSTRAP_NODES' | 'BOT_DA_GAS_LIMIT' | 'BOT_FEE_PAYMENT_METHOD' | 'BOT_FLUSH_SETUP_TRANSACTIONS' | 'BOT_FOLLOW_CHAIN' | 'BOT_L2_GAS_LIMIT' | 'BOT_MAX_PENDING_TXS' | 'BOT_NO_START' | 'BOT_NO_WAIT_FOR_TRANSFERS' | 'BOT_PRIVATE_KEY' | 'BOT_PRIVATE_TRANSFERS_PER_TX' | 'BOT_PUBLIC_TRANSFERS_PER_TX' | 'BOT_PXE_URL' | 'BOT_RECIPIENT_ENCRYPTION_SECRET' | 'BOT_SKIP_PUBLIC_SIMULATION' | 'BOT_TOKEN_CONTRACT' | 'BOT_TOKEN_SALT' | 'BOT_TX_INTERVAL_SECONDS' | 'BOT_TX_MINED_WAIT_SECONDS' | 'COINBASE' | 'DATA_DIRECTORY' | 'DEBUG' | 'DEPLOY_AZTEC_CONTRACTS_SALT' | 'DEPLOY_AZTEC_CONTRACTS' | 'ENABLE_GAS' | 'ENFORCE_FEES' | 'ETHEREUM_HOST' | 'FEE_JUICE_CONTRACT_ADDRESS' | 'FEE_JUICE_PORTAL_CONTRACT_ADDRESS' | 'FEE_RECIPIENT' | 'GEROUSIA_CONTRACT_ADDRESS' | 'GEROUSIA_PAYLOAD_ADDRESS' | 'INBOX_CONTRACT_ADDRESS' | 'L1_CHAIN_ID' | 'L1_PRIVATE_KEY' | 'L2_QUEUE_SIZE' | 'LOG_JSON' | 'LOG_LEVEL' | 'MNEMONIC' | 'NETWORK_NAME' | 'NETWORK' | 'NOMISMATOKOPIO_CONTRACT_ADDRESS' | 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT' | 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT' | 'OTEL_SERVICE_NAME' | 'OUTBOX_CONTRACT_ADDRESS' | 'P2P_BLOCK_CHECK_INTERVAL_MS' | 'P2P_ENABLED' | 'P2P_GOSSIPSUB_D' | 'P2P_GOSSIPSUB_DHI' | 'P2P_GOSSIPSUB_DLO' | 'P2P_GOSSIPSUB_INTERVAL_MS' | 'P2P_GOSSIPSUB_MCACHE_GOSSIP' | 'P2P_GOSSIPSUB_MCACHE_LENGTH' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_DECAY' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_WEIGHT' | 'P2P_GOSSIPSUB_TX_TOPIC_WEIGHT' | 'P2P_L2_QUEUE_SIZE' | 'P2P_MAX_PEERS' | 'P2P_MIN_PEERS' | 'P2P_PEER_CHECK_INTERVAL_MS' | 'P2P_PEER_PENALTY_VALUES' | 'P2P_QUERY_FOR_IP' | 'P2P_REQRESP_INDIVIDUAL_REQUEST_TIMEOUT_MS' | 'P2P_REQRESP_OVERALL_REQUEST_TIMEOUT_MS' | 'P2P_SEVERE_PEER_PENALTY_BLOCK_LENGTH' | 'P2P_TCP_LISTEN_ADDR' | 'P2P_TCP_ANNOUNCE_ADDR' | 'P2P_TX_POOL_KEEP_PROVEN_FOR' | 'P2P_TX_PROTOCOL' | 'P2P_UDP_ANNOUNCE_ADDR' | 'P2P_UDP_LISTEN_ADDR' | 'PEER_ID_PRIVATE_KEY' | 'PROOF_VERIFIER_L1_START_BLOCK' | 'PROOF_VERIFIER_POLL_INTERVAL_MS' | 'PROVER_AGENT_CONCURRENCY' | 'PROVER_AGENT_ENABLED' | 'PROVER_AGENT_POLL_INTERVAL_MS' | 'PROVER_COORDINATION_NODE_URL' | 'PROVER_DISABLED' | 'PROVER_ID' | 'PROVER_JOB_POLL_INTERVAL_MS' | 'PROVER_JOB_TIMEOUT_MS' | 'PROVER_JOB_SOURCE_URL' | 'PROVER_NODE_POLLING_INTERVAL_MS' | 'PROVER_NODE_MAX_PENDING_JOBS' | 'PROVER_PUBLISH_RETRY_INTERVAL_MS' | 'PROVER_PUBLISHER_PRIVATE_KEY' | 'PROVER_REAL_PROOFS' | 'PROVER_REQUIRED_CONFIRMATIONS' | 'PROVER_TEST_DELAY_MS' | 'PXE_BLOCK_POLLING_INTERVAL_MS' | 'PXE_DATA_DIRECTORY' | 'PXE_L2_STARTING_BLOCK' | 'PXE_PROVER_ENABLED' | 'QUOTE_PROVIDER_BASIS_POINT_FEE' | 'QUOTE_PROVIDER_BOND_AMOUNT' | 'QUOTE_PROVIDER_URL' | 'PROVER_TARGET_ESCROW_AMOUNT' | 'PROVER_MINIMUM_ESCROW_AMOUNT' | 'REGISTRY_CONTRACT_ADDRESS' | 'ROLLUP_CONTRACT_ADDRESS' | 'SEQ_ALLOWED_SETUP_FN' | 'SEQ_ALLOWED_TEARDOWN_FN' | 'SEQ_MAX_BLOCK_SIZE_IN_BYTES' | 'SEQ_MAX_SECONDS_BETWEEN_BLOCKS' | 'SEQ_MAX_TX_PER_BLOCK' | 'SEQ_MIN_SECONDS_BETWEEN_BLOCKS' | 'SEQ_MIN_TX_PER_BLOCK' | 'SEQ_PUBLISH_RETRY_INTERVAL_MS' | 'SEQ_PUBLISHER_PRIVATE_KEY' | 'SEQ_REQUIRED_CONFIRMATIONS' | 'SEQ_TX_POLLING_INTERVAL_MS' | 'SYSSTIA_CONTRACT_ADDRESS' | 'TELEMETRY' | 'TEST_ACCOUNTS' | 'TX_GOSSIP_VERSION' | 'TXE_PORT' | 'VALIDATOR_ATTESTATIONS_POOLING_INTERVAL_MS' | 'VALIDATOR_ATTESTATIONS_WAIT_TIMEOUT_MS' | 'VALIDATOR_DISABLED' | 'VALIDATOR_PRIVATE_KEY' | 'VERSION' | 'WS_BLOCK_CHECK_INTERVAL_MS' | 'WS_PROVEN_BLOCKS_ONLY' | 'WS_BLOCK_REQUEST_BATCH_SIZE' | 'VERIFIER_VIEM_POLLING_INTERVAL_MS' | 'L1_READER_VIEM_POLLING_INTERVAL_MS' | 'PROVER_VIEM_POLLING_INTERVAL_MS' | 'SEQ_VIEM_POLLING_INTERVAL_MS';
1
+ export type EnvVar = 'ACVM_BINARY_PATH' | 'ACVM_WORKING_DIRECTORY' | 'APELLA_CONTRACT_ADDRESS' | 'API_KEY' | 'API_PREFIX' | 'ARCHIVER_MAX_LOGS' | 'ARCHIVER_POLLING_INTERVAL_MS' | 'ARCHIVER_URL' | 'ARCHIVER_VIEM_POLLING_INTERVAL_MS' | 'ASSUME_PROVEN_THROUGH_BLOCK_NUMBER' | 'AZTEC_NODE_URL' | 'AZTEC_PORT' | 'BB_BINARY_PATH' | 'BB_SKIP_CLEANUP' | 'BB_WORKING_DIRECTORY' | 'BOOTSTRAP_NODES' | 'BOT_DA_GAS_LIMIT' | 'BOT_FEE_PAYMENT_METHOD' | 'BOT_FLUSH_SETUP_TRANSACTIONS' | 'BOT_FOLLOW_CHAIN' | 'BOT_L2_GAS_LIMIT' | 'BOT_MAX_PENDING_TXS' | 'BOT_NO_START' | 'BOT_NO_WAIT_FOR_TRANSFERS' | 'BOT_PRIVATE_KEY' | 'BOT_PRIVATE_TRANSFERS_PER_TX' | 'BOT_PUBLIC_TRANSFERS_PER_TX' | 'BOT_PXE_URL' | 'BOT_RECIPIENT_ENCRYPTION_SECRET' | 'BOT_SKIP_PUBLIC_SIMULATION' | 'BOT_TOKEN_CONTRACT' | 'BOT_TOKEN_SALT' | 'BOT_TX_INTERVAL_SECONDS' | 'BOT_TX_MINED_WAIT_SECONDS' | 'BOT_MAX_CONSECUTIVE_ERRORS' | 'BOT_STOP_WHEN_UNHEALTHY' | 'COINBASE' | 'DATA_DIRECTORY' | 'DEBUG' | 'DEPLOY_AZTEC_CONTRACTS_SALT' | 'DEPLOY_AZTEC_CONTRACTS' | 'ENABLE_GAS' | 'ENFORCE_FEES' | 'ETHEREUM_HOST' | 'FEE_JUICE_CONTRACT_ADDRESS' | 'FEE_JUICE_PORTAL_CONTRACT_ADDRESS' | 'FEE_RECIPIENT' | 'GEROUSIA_CONTRACT_ADDRESS' | 'GEROUSIA_PAYLOAD_ADDRESS' | 'INBOX_CONTRACT_ADDRESS' | 'L1_CHAIN_ID' | 'L1_PRIVATE_KEY' | 'L2_QUEUE_SIZE' | 'LOG_JSON' | 'LOG_LEVEL' | 'MNEMONIC' | 'NETWORK_NAME' | 'NETWORK' | 'NOMISMATOKOPIO_CONTRACT_ADDRESS' | 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT' | 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT' | 'OTEL_EXPORTER_OTLP_LOGS_ENDPOINT' | 'OTEL_SERVICE_NAME' | 'OUTBOX_CONTRACT_ADDRESS' | 'P2P_BLOCK_CHECK_INTERVAL_MS' | 'P2P_BLOCK_REQUEST_BATCH_SIZE' | 'P2P_ENABLED' | 'P2P_GOSSIPSUB_D' | 'P2P_GOSSIPSUB_DHI' | 'P2P_GOSSIPSUB_DLO' | 'P2P_GOSSIPSUB_INTERVAL_MS' | 'P2P_GOSSIPSUB_MCACHE_GOSSIP' | 'P2P_GOSSIPSUB_MCACHE_LENGTH' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_DECAY' | 'P2P_GOSSIPSUB_TX_INVALID_MESSAGE_DELIVERIES_WEIGHT' | 'P2P_GOSSIPSUB_TX_TOPIC_WEIGHT' | 'P2P_L2_QUEUE_SIZE' | 'P2P_MAX_PEERS' | 'P2P_MIN_PEERS' | 'P2P_PEER_CHECK_INTERVAL_MS' | 'P2P_PEER_PENALTY_VALUES' | 'P2P_QUERY_FOR_IP' | 'P2P_REQRESP_INDIVIDUAL_REQUEST_TIMEOUT_MS' | 'P2P_REQRESP_OVERALL_REQUEST_TIMEOUT_MS' | 'P2P_SEVERE_PEER_PENALTY_BLOCK_LENGTH' | 'P2P_TCP_LISTEN_ADDR' | 'P2P_TCP_ANNOUNCE_ADDR' | 'P2P_TX_POOL_KEEP_PROVEN_FOR' | 'P2P_TX_PROTOCOL' | 'P2P_UDP_ANNOUNCE_ADDR' | 'P2P_UDP_LISTEN_ADDR' | 'PEER_ID_PRIVATE_KEY' | 'PROOF_VERIFIER_L1_START_BLOCK' | 'PROOF_VERIFIER_POLL_INTERVAL_MS' | 'PROVER_AGENT_CONCURRENCY' | 'PROVER_AGENT_ENABLED' | 'PROVER_AGENT_POLL_INTERVAL_MS' | 'PROVER_COORDINATION_NODE_URL' | 'PROVER_DISABLED' | 'PROVER_ID' | 'PROVER_JOB_POLL_INTERVAL_MS' | 'PROVER_JOB_TIMEOUT_MS' | 'PROVER_JOB_SOURCE_URL' | 'PROVER_NODE_POLLING_INTERVAL_MS' | 'PROVER_NODE_MAX_PENDING_JOBS' | 'PROVER_PUBLISH_RETRY_INTERVAL_MS' | 'PROVER_PUBLISHER_PRIVATE_KEY' | 'PROVER_REAL_PROOFS' | 'PROVER_REQUIRED_CONFIRMATIONS' | 'PROVER_TEST_DELAY_MS' | 'PXE_BLOCK_POLLING_INTERVAL_MS' | 'PXE_DATA_DIRECTORY' | 'PXE_L2_STARTING_BLOCK' | 'PXE_PROVER_ENABLED' | 'QUOTE_PROVIDER_BASIS_POINT_FEE' | 'QUOTE_PROVIDER_BOND_AMOUNT' | 'QUOTE_PROVIDER_URL' | 'PROVER_TARGET_ESCROW_AMOUNT' | 'PROVER_MINIMUM_ESCROW_AMOUNT' | 'REGISTRY_CONTRACT_ADDRESS' | 'ROLLUP_CONTRACT_ADDRESS' | 'SEQ_ALLOWED_SETUP_FN' | 'SEQ_ALLOWED_TEARDOWN_FN' | 'SEQ_MAX_BLOCK_SIZE_IN_BYTES' | 'SEQ_MAX_SECONDS_BETWEEN_BLOCKS' | 'SEQ_MAX_TX_PER_BLOCK' | 'SEQ_MIN_SECONDS_BETWEEN_BLOCKS' | 'SEQ_MIN_TX_PER_BLOCK' | 'SEQ_PUBLISH_RETRY_INTERVAL_MS' | 'SEQ_PUBLISHER_PRIVATE_KEY' | 'SEQ_REQUIRED_CONFIRMATIONS' | 'SEQ_TX_POLLING_INTERVAL_MS' | 'SYSSTIA_CONTRACT_ADDRESS' | 'TELEMETRY' | 'TEST_ACCOUNTS' | 'TX_GOSSIP_VERSION' | 'TXE_PORT' | 'VALIDATOR_ATTESTATIONS_POOLING_INTERVAL_MS' | 'VALIDATOR_ATTESTATIONS_WAIT_TIMEOUT_MS' | 'VALIDATOR_DISABLED' | 'VALIDATOR_PRIVATE_KEY' | 'VERSION' | 'WS_BLOCK_CHECK_INTERVAL_MS' | 'WS_PROVEN_BLOCKS_ONLY' | 'WS_BLOCK_REQUEST_BATCH_SIZE' | 'VERIFIER_VIEM_POLLING_INTERVAL_MS' | 'L1_READER_VIEM_POLLING_INTERVAL_MS' | 'PROVER_VIEM_POLLING_INTERVAL_MS' | 'SEQ_VIEM_POLLING_INTERVAL_MS';
2
2
  //# sourceMappingURL=env_var.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"env_var.d.ts","sourceRoot":"","sources":["../../src/config/env_var.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GACd,kBAAkB,GAClB,wBAAwB,GACxB,yBAAyB,GACzB,SAAS,GACT,YAAY,GACZ,mBAAmB,GACnB,8BAA8B,GAC9B,cAAc,GACd,mCAAmC,GACnC,oCAAoC,GACpC,gBAAgB,GAChB,YAAY,GACZ,gBAAgB,GAChB,iBAAiB,GACjB,sBAAsB,GACtB,iBAAiB,GACjB,kBAAkB,GAClB,wBAAwB,GACxB,8BAA8B,GAC9B,kBAAkB,GAClB,kBAAkB,GAClB,qBAAqB,GACrB,cAAc,GACd,2BAA2B,GAC3B,iBAAiB,GACjB,8BAA8B,GAC9B,6BAA6B,GAC7B,aAAa,GACb,iCAAiC,GACjC,4BAA4B,GAC5B,oBAAoB,GACpB,gBAAgB,GAChB,yBAAyB,GACzB,2BAA2B,GAC3B,UAAU,GACV,gBAAgB,GAChB,OAAO,GACP,6BAA6B,GAC7B,wBAAwB,GACxB,YAAY,GACZ,cAAc,GACd,eAAe,GACf,4BAA4B,GAC5B,mCAAmC,GACnC,eAAe,GACf,2BAA2B,GAC3B,0BAA0B,GAC1B,wBAAwB,GACxB,aAAa,GACb,gBAAgB,GAChB,eAAe,GACf,UAAU,GACV,WAAW,GACX,UAAU,GACV,cAAc,GACd,SAAS,GACT,iCAAiC,GACjC,qCAAqC,GACrC,oCAAoC,GACpC,mBAAmB,GACnB,yBAAyB,GACzB,6BAA6B,GAC7B,aAAa,GACb,iBAAiB,GACjB,mBAAmB,GACnB,mBAAmB,GACnB,2BAA2B,GAC3B,6BAA6B,GAC7B,6BAA6B,GAC7B,mDAAmD,GACnD,oDAAoD,GACpD,+BAA+B,GAC/B,mBAAmB,GACnB,eAAe,GACf,eAAe,GACf,4BAA4B,GAC5B,yBAAyB,GACzB,kBAAkB,GAClB,2CAA2C,GAC3C,wCAAwC,GACxC,sCAAsC,GACtC,qBAAqB,GACrB,uBAAuB,GACvB,6BAA6B,GAC7B,iBAAiB,GACjB,uBAAuB,GACvB,qBAAqB,GACrB,qBAAqB,GACrB,+BAA+B,GAC/B,iCAAiC,GACjC,0BAA0B,GAC1B,sBAAsB,GACtB,+BAA+B,GAC/B,8BAA8B,GAC9B,iBAAiB,GACjB,WAAW,GACX,6BAA6B,GAC7B,uBAAuB,GACvB,uBAAuB,GACvB,iCAAiC,GACjC,8BAA8B,GAC9B,kCAAkC,GAClC,8BAA8B,GAC9B,oBAAoB,GACpB,+BAA+B,GAC/B,sBAAsB,GACtB,+BAA+B,GAC/B,oBAAoB,GACpB,uBAAuB,GACvB,oBAAoB,GACpB,gCAAgC,GAChC,4BAA4B,GAC5B,oBAAoB,GACpB,6BAA6B,GAC7B,8BAA8B,GAC9B,2BAA2B,GAC3B,yBAAyB,GACzB,sBAAsB,GACtB,yBAAyB,GACzB,6BAA6B,GAC7B,gCAAgC,GAChC,sBAAsB,GACtB,gCAAgC,GAChC,sBAAsB,GACtB,+BAA+B,GAC/B,2BAA2B,GAC3B,4BAA4B,GAC5B,4BAA4B,GAC5B,0BAA0B,GAC1B,WAAW,GACX,eAAe,GACf,mBAAmB,GACnB,UAAU,GACV,4CAA4C,GAC5C,wCAAwC,GACxC,oBAAoB,GACpB,uBAAuB,GACvB,SAAS,GACT,4BAA4B,GAC5B,uBAAuB,GACvB,6BAA6B,GAC7B,mCAAmC,GACnC,oCAAoC,GACpC,iCAAiC,GACjC,8BAA8B,CAAC"}
1
+ {"version":3,"file":"env_var.d.ts","sourceRoot":"","sources":["../../src/config/env_var.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GACd,kBAAkB,GAClB,wBAAwB,GACxB,yBAAyB,GACzB,SAAS,GACT,YAAY,GACZ,mBAAmB,GACnB,8BAA8B,GAC9B,cAAc,GACd,mCAAmC,GACnC,oCAAoC,GACpC,gBAAgB,GAChB,YAAY,GACZ,gBAAgB,GAChB,iBAAiB,GACjB,sBAAsB,GACtB,iBAAiB,GACjB,kBAAkB,GAClB,wBAAwB,GACxB,8BAA8B,GAC9B,kBAAkB,GAClB,kBAAkB,GAClB,qBAAqB,GACrB,cAAc,GACd,2BAA2B,GAC3B,iBAAiB,GACjB,8BAA8B,GAC9B,6BAA6B,GAC7B,aAAa,GACb,iCAAiC,GACjC,4BAA4B,GAC5B,oBAAoB,GACpB,gBAAgB,GAChB,yBAAyB,GACzB,2BAA2B,GAC3B,4BAA4B,GAC5B,yBAAyB,GACzB,UAAU,GACV,gBAAgB,GAChB,OAAO,GACP,6BAA6B,GAC7B,wBAAwB,GACxB,YAAY,GACZ,cAAc,GACd,eAAe,GACf,4BAA4B,GAC5B,mCAAmC,GACnC,eAAe,GACf,2BAA2B,GAC3B,0BAA0B,GAC1B,wBAAwB,GACxB,aAAa,GACb,gBAAgB,GAChB,eAAe,GACf,UAAU,GACV,WAAW,GACX,UAAU,GACV,cAAc,GACd,SAAS,GACT,iCAAiC,GACjC,qCAAqC,GACrC,oCAAoC,GACpC,kCAAkC,GAClC,mBAAmB,GACnB,yBAAyB,GACzB,6BAA6B,GAC7B,8BAA8B,GAC9B,aAAa,GACb,iBAAiB,GACjB,mBAAmB,GACnB,mBAAmB,GACnB,2BAA2B,GAC3B,6BAA6B,GAC7B,6BAA6B,GAC7B,mDAAmD,GACnD,oDAAoD,GACpD,+BAA+B,GAC/B,mBAAmB,GACnB,eAAe,GACf,eAAe,GACf,4BAA4B,GAC5B,yBAAyB,GACzB,kBAAkB,GAClB,2CAA2C,GAC3C,wCAAwC,GACxC,sCAAsC,GACtC,qBAAqB,GACrB,uBAAuB,GACvB,6BAA6B,GAC7B,iBAAiB,GACjB,uBAAuB,GACvB,qBAAqB,GACrB,qBAAqB,GACrB,+BAA+B,GAC/B,iCAAiC,GACjC,0BAA0B,GAC1B,sBAAsB,GACtB,+BAA+B,GAC/B,8BAA8B,GAC9B,iBAAiB,GACjB,WAAW,GACX,6BAA6B,GAC7B,uBAAuB,GACvB,uBAAuB,GACvB,iCAAiC,GACjC,8BAA8B,GAC9B,kCAAkC,GAClC,8BAA8B,GAC9B,oBAAoB,GACpB,+BAA+B,GAC/B,sBAAsB,GACtB,+BAA+B,GAC/B,oBAAoB,GACpB,uBAAuB,GACvB,oBAAoB,GACpB,gCAAgC,GAChC,4BAA4B,GAC5B,oBAAoB,GACpB,6BAA6B,GAC7B,8BAA8B,GAC9B,2BAA2B,GAC3B,yBAAyB,GACzB,sBAAsB,GACtB,yBAAyB,GACzB,6BAA6B,GAC7B,gCAAgC,GAChC,sBAAsB,GACtB,gCAAgC,GAChC,sBAAsB,GACtB,+BAA+B,GAC/B,2BAA2B,GAC3B,4BAA4B,GAC5B,4BAA4B,GAC5B,0BAA0B,GAC1B,WAAW,GACX,eAAe,GACf,mBAAmB,GACnB,UAAU,GACV,4CAA4C,GAC5C,wCAAwC,GACxC,oBAAoB,GACpB,uBAAuB,GACvB,SAAS,GACT,4BAA4B,GAC5B,uBAAuB,GACvB,6BAA6B,GAC7B,mCAAmC,GACnC,oCAAoC,GACpC,iCAAiC,GACjC,8BAA8B,CAAC"}
@@ -14,6 +14,7 @@ export declare class JsonRpcServer {
14
14
  private objectClassMap;
15
15
  /** List of methods to disallow from calling remotely */
16
16
  readonly disallowedMethods: string[];
17
+ private healthCheck;
17
18
  private log;
18
19
  /**
19
20
  * The proxy object.
@@ -26,7 +27,8 @@ export declare class JsonRpcServer {
26
27
  private httpServer?;
27
28
  constructor(handler: object, stringClassMap: StringClassConverterInput, objectClassMap: JsonClassConverterInput,
28
29
  /** List of methods to disallow from calling remotely */
29
- disallowedMethods?: string[], log?: import("../../log/logger.js").Logger);
30
+ disallowedMethods?: string[], healthCheck?: StatusCheckFn, log?: import("../../log/logger.js").Logger);
31
+ isHealthy(): boolean | Promise<boolean>;
30
32
  /**
31
33
  * Get an express app object.
32
34
  * @param prefix - Our server prefix.
@@ -68,12 +70,14 @@ export declare class JsonRpcServer {
68
70
  */
69
71
  call(methodName: string, jsonParams: any[] | undefined, skipConversion: boolean): Promise<any>;
70
72
  }
73
+ export type StatusCheckFn = () => boolean | Promise<boolean>;
71
74
  /**
72
75
  * Creates a router for handling a plain status request that will return 200 status when running.
76
+ * @param getCurrentStatus - List of health check functions to run.
73
77
  * @param apiPrefix - The prefix to use for all api requests
74
78
  * @returns - The router for handling status requests.
75
79
  */
76
- export declare function createStatusRouter(apiPrefix?: string): Router<any, {}>;
80
+ export declare function createStatusRouter(getCurrentStatus: StatusCheckFn, apiPrefix?: string): Router<any, {}>;
77
81
  /**
78
82
  * Creates an http server that forwards calls to the underlying instance and starts it on the given port.
79
83
  * @param instance - Instance to wrap in a JSON-RPC server.
@@ -1 +1 @@
1
- {"version":3,"file":"json_rpc_server.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/server/json_rpc_server.ts"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,OAAO,MAAM,MAAM,YAAY,CAAC;AAIhC,OAAO,EAAE,KAAK,uBAAuB,EAAE,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAErG,OAAO,EAAE,KAAK,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5D;;;GAGG;AACH,qBAAa,aAAa;IAatB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,cAAc;IACtB,wDAAwD;aACxC,iBAAiB,EAAE,MAAM,EAAE;IAC3C,OAAO,CAAC,GAAG;IAjBb;;OAEG;IACI,KAAK,EAAE,SAAS,CAAC;IAExB;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAC,CAAc;gBAGvB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,yBAAyB,EACzC,cAAc,EAAE,uBAAuB;IAC/C,wDAAwD;IACxC,iBAAiB,GAAE,MAAM,EAAO,EACxC,GAAG,uCAAuC;IAKpD;;;;OAIG;IACI,MAAM,CAAC,MAAM,SAAK;IAkDzB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IA8CjB;;;;OAIG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,IAAI;IAS7C;;OAEG;IACI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;;OAGG;IACI,UAAU,IAAI,MAAM,EAAE;IAI7B;;;OAGG;IACI,YAAY,IAAI,SAAS;IAIhC;;;;;;OAMG;IACU,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,mBAAY,EAAE,cAAc,EAAE,OAAO;CAGtF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,SAAK,mBAMhD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,EACX,kBAAkB,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,aAAa,EAClD,IAAI,EAAE,MAAM,GAAG,MAAM,GACpB,IAAI,CAAC,MAAM,CAWb;AACD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,qDAAqD;IACrD,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;CAC/B,EAAE,CAAC;AAEJ;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,UAAU,EACnB,GAAG,uCAA6C,GAC/C,aAAa,CAuCf"}
1
+ {"version":3,"file":"json_rpc_server.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/server/json_rpc_server.ts"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,OAAO,MAAM,MAAM,YAAY,CAAC;AAIhC,OAAO,EAAE,KAAK,uBAAuB,EAAE,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAErG,OAAO,EAAE,KAAK,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5D;;;GAGG;AACH,qBAAa,aAAa;IAatB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,cAAc;IACtB,wDAAwD;aACxC,iBAAiB,EAAE,MAAM,EAAE;IAC3C,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,GAAG;IAlBb;;OAEG;IACI,KAAK,EAAE,SAAS,CAAC;IAExB;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAC,CAAc;gBAGvB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,yBAAyB,EACzC,cAAc,EAAE,uBAAuB;IAC/C,wDAAwD;IACxC,iBAAiB,GAAE,MAAM,EAAO,EACxC,WAAW,GAAE,aAA0B,EACvC,GAAG,uCAAuC;IAK7C,SAAS,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9C;;;;OAIG;IACI,MAAM,CAAC,MAAM,SAAK;IAkDzB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IA8CjB;;;;OAIG;IACI,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,IAAI;IAS7C;;OAEG;IACI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;;OAGG;IACI,UAAU,IAAI,MAAM,EAAE;IAI7B;;;OAGG;IACI,YAAY,IAAI,SAAS;IAIhC;;;;;;OAMG;IACU,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,mBAAY,EAAE,cAAc,EAAE,OAAO;CAGtF;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7D;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,aAAa,EAAE,SAAS,SAAK,mBAajF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,EACX,kBAAkB,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,aAAa,EAClD,IAAI,EAAE,MAAM,GAAG,MAAM,GACpB,IAAI,CAAC,MAAM,CAWb;AACD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,qDAAqD;IACrD,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;CAC/B,EAAE,CAAC;AAEJ;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,UAAU,EACnB,GAAG,uCAA6C,GAC/C,aAAa,CAwDf"}
@@ -15,14 +15,18 @@ import { JsonProxy } from './json_proxy.js';
15
15
  export class JsonRpcServer {
16
16
  constructor(handler, stringClassMap, objectClassMap,
17
17
  /** List of methods to disallow from calling remotely */
18
- disallowedMethods = [], log = createDebugLogger('json-rpc:server')) {
18
+ disallowedMethods = [], healthCheck = () => true, log = createDebugLogger('json-rpc:server')) {
19
19
  this.handler = handler;
20
20
  this.stringClassMap = stringClassMap;
21
21
  this.objectClassMap = objectClassMap;
22
22
  this.disallowedMethods = disallowedMethods;
23
+ this.healthCheck = healthCheck;
23
24
  this.log = log;
24
25
  this.proxy = new JsonProxy(handler, stringClassMap, objectClassMap);
25
26
  }
27
+ isHealthy() {
28
+ return this.healthCheck();
29
+ }
26
30
  /**
27
31
  * Get an express app object.
28
32
  * @param prefix - Our server prefix.
@@ -184,13 +188,21 @@ export class JsonRpcServer {
184
188
  }
185
189
  /**
186
190
  * Creates a router for handling a plain status request that will return 200 status when running.
191
+ * @param getCurrentStatus - List of health check functions to run.
187
192
  * @param apiPrefix - The prefix to use for all api requests
188
193
  * @returns - The router for handling status requests.
189
194
  */
190
- export function createStatusRouter(apiPrefix = '') {
195
+ export function createStatusRouter(getCurrentStatus, apiPrefix = '') {
191
196
  const router = new Router({ prefix: `${apiPrefix}` });
192
- router.get('/status', (ctx) => {
193
- ctx.status = 200;
197
+ router.get('/status', async (ctx) => {
198
+ let ok;
199
+ try {
200
+ ok = (await getCurrentStatus()) === true;
201
+ }
202
+ catch (err) {
203
+ ok = false;
204
+ }
205
+ ctx.status = ok ? 200 : 500;
194
206
  });
195
207
  return router;
196
208
  }
@@ -243,6 +255,11 @@ export function createNamespacedJsonRpcServer(servers, log = createDebugLogger('
243
255
  objectClassMap: { ...acc.objectClassMap, ...curr.objectClassMap },
244
256
  };
245
257
  }, { stringClassMap: {}, objectClassMap: {} });
246
- return new JsonRpcServer(Object.create(handler), classMaps.stringClassMap, classMaps.objectClassMap, [], log);
258
+ const aggregateHealthCheck = async () => {
259
+ const statuses = await Promise.allSettled(servers.flatMap(services => Object.entries(services).map(async ([name, service]) => ({ name, healthy: await service.isHealthy() }))));
260
+ const allHealthy = statuses.every(result => result.status === 'fulfilled' && result.value.healthy);
261
+ return allHealthy;
262
+ };
263
+ return new JsonRpcServer(Object.create(handler), classMaps.stringClassMap, classMaps.objectClassMap, [], aggregateHealthCheck, log);
247
264
  }
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbl9ycGNfc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2pzb24tcnBjL3NlcnZlci9qc29uX3JwY19zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUM7QUFDdEIsT0FBTyxVQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxRQUFRLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sTUFBTSxNQUFNLFlBQVksQ0FBQztBQUVoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFrQixTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQVl4QixZQUNVLE9BQWUsRUFDZixjQUF5QyxFQUN6QyxjQUF1QztJQUMvQyx3REFBd0Q7SUFDeEMsb0JBQThCLEVBQUUsRUFDeEMsTUFBTSxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQztRQUwxQyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsbUJBQWMsR0FBZCxjQUFjLENBQTJCO1FBQ3pDLG1CQUFjLEdBQWQsY0FBYyxDQUF5QjtRQUUvQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWU7UUFDeEMsUUFBRyxHQUFILEdBQUcsQ0FBdUM7UUFFbEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1B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
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbl9ycGNfc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2pzb24tcnBjL3NlcnZlci9qc29uX3JwY19zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUM7QUFDdEIsT0FBTyxVQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxRQUFRLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sTUFBTSxNQUFNLFlBQVksQ0FBQztBQUVoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFrQixTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQVl4QixZQUNVLE9BQWUsRUFDZixjQUF5QyxFQUN6QyxjQUF1QztJQUMvQyx3REFBd0Q7SUFDeEMsb0JBQThCLEVBQUUsRUFDeEMsY0FBNkIsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUN2QyxNQUFNLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDO1FBTjFDLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBMkI7UUFDekMsbUJBQWMsR0FBZCxjQUFjLENBQXlCO1FBRS9CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZTtRQUN4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBNEI7UUFDdkMsUUFBRyxHQUFILEdBQUcsQ0FBdUM7UUFFbEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsY0FBYyxF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
@@ -26,11 +26,19 @@ export type DebugLogger = Logger;
26
26
  * Uses npm debug for debug level and console.error for other levels.
27
27
  * @param name - Name of the module.
28
28
  * @param fixedLogData - Additional data to include in the log message.
29
- * @usage createDebugLogger('aztec:validator', {validatorAddress: '0x1234...'});
29
+ * @usage createDebugLogger('aztec:validator');
30
30
  * // will always add the validator address to the log labels
31
31
  * @returns A debug logger.
32
32
  */
33
- export declare function createDebugLogger(name: string, fixedLogData?: LogData): DebugLogger;
33
+ export declare function createDebugLogger(name: string): DebugLogger;
34
+ /**
35
+ * A function to create a logger that automatically includes fixed data in each log entry.
36
+ * @param debugLogger - The base DebugLogger instance to which we attach fixed log data.
37
+ * @param fixedLogData - The data to be included in every log entry.
38
+ * @returns A DebugLogger with log level methods (error, warn, info, verbose, debug) that
39
+ * automatically attach `fixedLogData` to every log message.
40
+ */
41
+ export declare function attachedFixedDataToLogger(debugLogger: DebugLogger, fixedLogData: LogData): DebugLogger;
34
42
  /** A callback to capture all logs. */
35
43
  export type LogHandler = (level: LogLevel, namespace: string, msg: string, data?: LogData) => void;
36
44
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/log/logger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEvD,QAAA,MAAM,SAAS,kEAAmE,CAAC;AAEnF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AASlD,eAAO,IAAI,YAAY,4DAAgB,CAAC;AAKxC,oDAAoD;AACpD,KAAK,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;KAAG,CAAC,IAAI,QAAQ,GAAG,KAAK;CAAE,GAAG;IAA4B,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAElG;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC;;;;;;;;;GASG;AAEH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,WAAW,CAkBnF;AACD,sCAAsC;AACtC,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAInG;;;GAGG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,UAAU,QAExC;AAED,mCAAmC;AACnC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,QAEvC;AA6BD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAIjD"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/log/logger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEvD,QAAA,MAAM,SAAS,kEAAmE,CAAC;AAEnF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AASlD,eAAO,IAAI,YAAY,4DAAgB,CAAC;AAqBxC,oDAAoD;AACpD,KAAK,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;KAAG,CAAC,IAAI,QAAQ,GAAG,KAAK;CAAE,GAAG;IAA4B,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAElG;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC;;;;;;;;;GASG;AAEH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAqB3D;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,GAAG,WAAW,CActG;AAED,sCAAsC;AACtC,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAInG;;;GAGG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,UAAU,QAExC;AAED,mCAAmC;AACnC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,QAEvC;AA6BD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAIjD"}
@@ -8,30 +8,73 @@ function getLogLevel() {
8
8
  return LogLevels.includes(envLogLevel) ? envLogLevel : defaultLogLevel;
9
9
  }
10
10
  export let currentLevel = getLogLevel();
11
+ function filterNegativePatterns(debugString) {
12
+ return debugString
13
+ .split(',')
14
+ .filter(p => !p.startsWith('-'))
15
+ .join(',');
16
+ }
17
+ function extractNegativePatterns(debugString) {
18
+ return (debugString
19
+ .split(',')
20
+ .filter(p => p.startsWith('-'))
21
+ // Remove the leading '-' from the pattern
22
+ .map(p => p.slice(1)));
23
+ }
11
24
  const namespaces = process.env.DEBUG ?? 'aztec:*';
12
- debug.enable(namespaces);
25
+ debug.enable(filterNegativePatterns(namespaces));
13
26
  /**
14
27
  * Creates a new DebugLogger for the current module, defaulting to the LOG_LEVEL env var.
15
28
  * If DEBUG="[module]" env is set, will enable debug logging if the module matches.
16
29
  * Uses npm debug for debug level and console.error for other levels.
17
30
  * @param name - Name of the module.
18
31
  * @param fixedLogData - Additional data to include in the log message.
19
- * @usage createDebugLogger('aztec:validator', {validatorAddress: '0x1234...'});
32
+ * @usage createDebugLogger('aztec:validator');
20
33
  * // will always add the validator address to the log labels
21
34
  * @returns A debug logger.
22
35
  */
23
- export function createDebugLogger(name, fixedLogData) {
36
+ export function createDebugLogger(name) {
24
37
  const debugLogger = debug(name);
25
- const attatchFixedLogData = (data) => ({ ...fixedLogData, ...data });
38
+ const negativePatterns = extractNegativePatterns(namespaces);
39
+ const accepted = () => {
40
+ return !negativePatterns.some(pattern => name.match(pattern));
41
+ };
42
+ const log = (level, msg, data) => {
43
+ if (accepted()) {
44
+ logWithDebug(debugLogger, level, msg, data);
45
+ }
46
+ };
47
+ const logger = {
48
+ silent: () => { },
49
+ error: (msg, err, data) => log('error', fmtErr(msg, err), data),
50
+ warn: (msg, data) => log('warn', msg, data),
51
+ info: (msg, data) => log('info', msg, data),
52
+ verbose: (msg, data) => log('verbose', msg, data),
53
+ debug: (msg, data) => log('debug', msg, data),
54
+ };
55
+ return Object.assign((msg, data) => log('debug', msg, data), logger);
56
+ }
57
+ /**
58
+ * A function to create a logger that automatically includes fixed data in each log entry.
59
+ * @param debugLogger - The base DebugLogger instance to which we attach fixed log data.
60
+ * @param fixedLogData - The data to be included in every log entry.
61
+ * @returns A DebugLogger with log level methods (error, warn, info, verbose, debug) that
62
+ * automatically attach `fixedLogData` to every log message.
63
+ */
64
+ export function attachedFixedDataToLogger(debugLogger, fixedLogData) {
65
+ // Helper function to merge fixed data with additional data passed to log entries.
66
+ const attach = (data) => ({ ...fixedLogData, ...data });
67
+ // Define the logger with all the necessary log level methods.
26
68
  const logger = {
69
+ // Silent log level does nothing.
27
70
  silent: () => { },
28
- error: (msg, err, data) => logWithDebug(debugLogger, 'error', fmtErr(msg, err), attatchFixedLogData(data)),
29
- warn: (msg, data) => logWithDebug(debugLogger, 'warn', msg, attatchFixedLogData(data)),
30
- info: (msg, data) => logWithDebug(debugLogger, 'info', msg, attatchFixedLogData(data)),
31
- verbose: (msg, data) => logWithDebug(debugLogger, 'verbose', msg, attatchFixedLogData(data)),
32
- debug: (msg, data) => logWithDebug(debugLogger, 'debug', msg, attatchFixedLogData(data)),
71
+ error: (msg, err, data) => debugLogger.error(fmtErr(msg, err), attach(data)),
72
+ warn: (msg, data) => debugLogger.warn(msg, attach(data)),
73
+ info: (msg, data) => debugLogger.info(msg, attach(data)),
74
+ verbose: (msg, data) => debugLogger.verbose(msg, attach(data)),
75
+ debug: (msg, data) => debugLogger.debug(msg, attach(data)),
33
76
  };
34
- return Object.assign((msg, data) => logWithDebug(debugLogger, 'debug', msg, attatchFixedLogData(data)), logger);
77
+ return Object.assign((msg, data) => debugLogger.debug(msg, attach(data)), logger);
35
78
  }
36
79
  const logHandlers = [];
37
80
  /**
@@ -78,4 +121,4 @@ export function fmtLogData(data) {
78
121
  .map(([key, value]) => `${key}=${typeof value === 'object' && 'toString' in value ? value.toString() : value}`)
79
122
  .join(' ');
80
123
  }
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZy9sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJL0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBVSxDQUFDO0FBT25GLFNBQVMsV0FBVztJQUNsQixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQWMsQ0FBQztJQUNyRSxNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUUsTUFBZ0IsQ0FBQyxDQUFDLENBQUUsT0FBaUIsQ0FBQztJQUN4RyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFFLFFBQWtCLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDO0lBQ3ZHLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7QUFDekUsQ0FBQztBQUVELE1BQU0sQ0FBQyxJQUFJLFlBQVksR0FBRyxXQUFXLEVBQUUsQ0FBQztBQUV4QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUM7QUFDbEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQWdCekI7Ozs7Ozs7OztHQVNHO0FBRUgsTUFBTSxVQUFVLGlCQUFpQixDQUFDLElBQVksRUFBRSxZQUFzQjtJQUNwRSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMs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
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZy9sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJL0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBVSxDQUFDO0FBT25GLFNBQVMsV0FBVztJQUNsQixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQWMsQ0FBQztJQUNyRSxNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUUsTUFBZ0IsQ0FBQyxDQUFDLENBQUUsT0FBaUIsQ0FBQztJQUN4RyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFFLFFBQWtCLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDO0lBQ3ZHLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7QUFDekUsQ0FBQztBQUVELE1BQU0sQ0FBQyxJQUFJLFlBQVksR0FBRyxXQUFXLEVBQUUsQ0FBQztBQUV4QyxTQUFTLHNCQUFzQixDQUFDLFdBQW1CO0lBQ2pELE9BQU8sV0FBVztTQUNmLEtBQUssQ0FBQyxHQUFHLENBQUM7U0FDVixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQUNELFNBQVMs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
@@ -39,7 +39,7 @@ export class WasmModule {
39
39
  * @param initMethod - Defaults to calling '_initialize'.
40
40
  * @param maximum - 8192 maximum by default. 512mb.
41
41
  */
42
- async init(initial = 30, maximum = 8192, initMethod = '_initialize') {
42
+ async init(initial = 31, maximum = 8192, initMethod = '_initialize') {
43
43
  this.debug(`initial mem: ${initial} pages, ${(initial * 2 ** 16) / (1024 * 1024)}mb. max mem: ${maximum} pages, ${(maximum * 2 ** 16) / (1024 * 1024)}mb`);
44
44
  this.memory = new WebAssembly.Memory({ initial, maximum });
45
45
  // Create a view over the memory buffer.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/foundation",
3
- "version": "0.61.0",
3
+ "version": "0.62.0",
4
4
  "packageManager": "yarn@3.4.1",
5
5
  "type": "module",
6
6
  "main": "./dest/index.js",
@@ -95,7 +95,7 @@
95
95
  ]
96
96
  },
97
97
  "dependencies": {
98
- "@aztec/bb.js": "0.61.0",
98
+ "@aztec/bb.js": "0.62.0",
99
99
  "@koa/cors": "^5.0.0",
100
100
  "@noble/curves": "^1.2.0",
101
101
  "bn.js": "^5.2.1",
@@ -1,7 +1,7 @@
1
1
  import { AztecAddress } from '../aztec-address/index.js';
2
2
  import { type Fr } from '../fields/index.js';
3
3
  import { type ABIParameter, type ABIVariable, type AbiType } from './abi.js';
4
- import { isAztecAddressStruct } from './utils.js';
4
+ import { isAztecAddressStruct, parseSignedInt } from './utils.js';
5
5
 
6
6
  /**
7
7
  * The type of our decoded ABI.
@@ -10,7 +10,6 @@ export type AbiDecoded = bigint | boolean | AztecAddress | AbiDecoded[] | { [key
10
10
 
11
11
  /**
12
12
  * Decodes values using a provided ABI.
13
- * Missing support for signed integer.
14
13
  */
15
14
  class AbiDecoder {
16
15
  constructor(private types: AbiType[], private flattened: Fr[]) {}
@@ -24,11 +23,16 @@ class AbiDecoder {
24
23
  switch (abiType.kind) {
25
24
  case 'field':
26
25
  return this.getNextField().toBigInt();
27
- case 'integer':
26
+ case 'integer': {
27
+ const nextField = this.getNextField();
28
+
28
29
  if (abiType.sign === 'signed') {
29
- throw new Error('Unsupported type: signed integer');
30
+ // We parse the buffer using 2's complement
31
+ return parseSignedInt(nextField.toBuffer(), abiType.width);
30
32
  }
31
- return this.getNextField().toBigInt();
33
+
34
+ return nextField.toBigInt();
35
+ }
32
36
  case 'boolean':
33
37
  return !this.getNextField().isZero();
34
38
  case 'array': {
package/src/abi/utils.ts CHANGED
@@ -48,3 +48,31 @@ export function isWrappedFieldStruct(abiType: AbiType) {
48
48
  abiType.fields[0].type.kind === 'field'
49
49
  );
50
50
  }
51
+
52
+ /**
53
+ * Returns a bigint by parsing a serialized 2's complement signed int.
54
+ * @param b - The signed int as a buffer
55
+ * @returns - a deserialized bigint
56
+ */
57
+ export function parseSignedInt(b: Buffer, width?: number) {
58
+ const buf = Buffer.from(b);
59
+
60
+ // We get the last (width / 8) bytes where width = bits of type (i64, i32 etc)
61
+ const slicedBuf = width !== undefined ? buf.subarray(-(width / 8)) : buf;
62
+
63
+ // Then manually deserialize with 2's complement, with the process as follows:
64
+
65
+ // If our most significant bit is high...
66
+ if (0x80 & slicedBuf.subarray(0, 1).readUInt8()) {
67
+ // We flip the bits
68
+ for (let i = 0; i < slicedBuf.length; i++) {
69
+ slicedBuf[i] = ~slicedBuf[i];
70
+ }
71
+
72
+ // Add one, then negate it
73
+ return -(BigInt(`0x${slicedBuf.toString('hex')}`) + 1n);
74
+ }
75
+
76
+ // ...otherwise we just return our positive int
77
+ return BigInt(`0x${slicedBuf.toString('hex')}`);
78
+ }
@@ -33,6 +33,8 @@ export type EnvVar =
33
33
  | 'BOT_TOKEN_SALT'
34
34
  | 'BOT_TX_INTERVAL_SECONDS'
35
35
  | 'BOT_TX_MINED_WAIT_SECONDS'
36
+ | 'BOT_MAX_CONSECUTIVE_ERRORS'
37
+ | 'BOT_STOP_WHEN_UNHEALTHY'
36
38
  | 'COINBASE'
37
39
  | 'DATA_DIRECTORY'
38
40
  | 'DEBUG'
@@ -58,9 +60,11 @@ export type EnvVar =
58
60
  | 'NOMISMATOKOPIO_CONTRACT_ADDRESS'
59
61
  | 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT'
60
62
  | 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT'
63
+ | 'OTEL_EXPORTER_OTLP_LOGS_ENDPOINT'
61
64
  | 'OTEL_SERVICE_NAME'
62
65
  | 'OUTBOX_CONTRACT_ADDRESS'
63
66
  | 'P2P_BLOCK_CHECK_INTERVAL_MS'
67
+ | 'P2P_BLOCK_REQUEST_BATCH_SIZE'
64
68
  | 'P2P_ENABLED'
65
69
  | 'P2P_GOSSIPSUB_D'
66
70
  | 'P2P_GOSSIPSUB_DHI'
@@ -33,11 +33,16 @@ export class JsonRpcServer {
33
33
  private objectClassMap: JsonClassConverterInput,
34
34
  /** List of methods to disallow from calling remotely */
35
35
  public readonly disallowedMethods: string[] = [],
36
+ private healthCheck: StatusCheckFn = () => true,
36
37
  private log = createDebugLogger('json-rpc:server'),
37
38
  ) {
38
39
  this.proxy = new JsonProxy(handler, stringClassMap, objectClassMap);
39
40
  }
40
41
 
42
+ public isHealthy(): boolean | Promise<boolean> {
43
+ return this.healthCheck();
44
+ }
45
+
41
46
  /**
42
47
  * Get an express app object.
43
48
  * @param prefix - Our server prefix.
@@ -205,15 +210,25 @@ export class JsonRpcServer {
205
210
  }
206
211
  }
207
212
 
213
+ export type StatusCheckFn = () => boolean | Promise<boolean>;
214
+
208
215
  /**
209
216
  * Creates a router for handling a plain status request that will return 200 status when running.
217
+ * @param getCurrentStatus - List of health check functions to run.
210
218
  * @param apiPrefix - The prefix to use for all api requests
211
219
  * @returns - The router for handling status requests.
212
220
  */
213
- export function createStatusRouter(apiPrefix = '') {
221
+ export function createStatusRouter(getCurrentStatus: StatusCheckFn, apiPrefix = '') {
214
222
  const router = new Router({ prefix: `${apiPrefix}` });
215
- router.get('/status', (ctx: Koa.Context) => {
216
- ctx.status = 200;
223
+ router.get('/status', async (ctx: Koa.Context) => {
224
+ let ok: boolean;
225
+ try {
226
+ ok = (await getCurrentStatus()) === true;
227
+ } catch (err) {
228
+ ok = false;
229
+ }
230
+
231
+ ctx.status = ok ? 200 : 500;
217
232
  });
218
233
  return router;
219
234
  }
@@ -296,5 +311,22 @@ export function createNamespacedJsonRpcServer(
296
311
  { stringClassMap: {}, objectClassMap: {} } as ClassMaps,
297
312
  );
298
313
 
299
- return new JsonRpcServer(Object.create(handler), classMaps.stringClassMap, classMaps.objectClassMap, [], log);
314
+ const aggregateHealthCheck = async () => {
315
+ const statuses = await Promise.allSettled(
316
+ servers.flatMap(services =>
317
+ Object.entries(services).map(async ([name, service]) => ({ name, healthy: await service.isHealthy() })),
318
+ ),
319
+ );
320
+ const allHealthy = statuses.every(result => result.status === 'fulfilled' && result.value.healthy);
321
+ return allHealthy;
322
+ };
323
+
324
+ return new JsonRpcServer(
325
+ Object.create(handler),
326
+ classMaps.stringClassMap,
327
+ classMaps.objectClassMap,
328
+ [],
329
+ aggregateHealthCheck,
330
+ log,
331
+ );
300
332
  }
package/src/log/logger.ts CHANGED
@@ -19,8 +19,24 @@ function getLogLevel() {
19
19
 
20
20
  export let currentLevel = getLogLevel();
21
21
 
22
+ function filterNegativePatterns(debugString: string): string {
23
+ return debugString
24
+ .split(',')
25
+ .filter(p => !p.startsWith('-'))
26
+ .join(',');
27
+ }
28
+ function extractNegativePatterns(debugString: string): string[] {
29
+ return (
30
+ debugString
31
+ .split(',')
32
+ .filter(p => p.startsWith('-'))
33
+ // Remove the leading '-' from the pattern
34
+ .map(p => p.slice(1))
35
+ );
36
+ }
37
+
22
38
  const namespaces = process.env.DEBUG ?? 'aztec:*';
23
- debug.enable(namespaces);
39
+ debug.enable(filterNegativePatterns(namespaces));
24
40
 
25
41
  /** Log function that accepts an exception object */
26
42
  type ErrorLogFn = (msg: string, err?: Error | unknown, data?: LogData) => void;
@@ -42,30 +58,57 @@ export type DebugLogger = Logger;
42
58
  * Uses npm debug for debug level and console.error for other levels.
43
59
  * @param name - Name of the module.
44
60
  * @param fixedLogData - Additional data to include in the log message.
45
- * @usage createDebugLogger('aztec:validator', {validatorAddress: '0x1234...'});
61
+ * @usage createDebugLogger('aztec:validator');
46
62
  * // will always add the validator address to the log labels
47
63
  * @returns A debug logger.
48
64
  */
49
65
 
50
- export function createDebugLogger(name: string, fixedLogData?: LogData): DebugLogger {
66
+ export function createDebugLogger(name: string): DebugLogger {
51
67
  const debugLogger = debug(name);
52
68
 
53
- const attatchFixedLogData = (data?: LogData) => ({ ...fixedLogData, ...data });
69
+ const negativePatterns = extractNegativePatterns(namespaces);
70
+ const accepted = () => {
71
+ return !negativePatterns.some(pattern => name.match(pattern));
72
+ };
73
+ const log = (level: LogLevel, msg: string, data?: LogData) => {
74
+ if (accepted()) {
75
+ logWithDebug(debugLogger, level, msg, data);
76
+ }
77
+ };
78
+ const logger = {
79
+ silent: () => {},
80
+ error: (msg: string, err?: unknown, data?: LogData) => log('error', fmtErr(msg, err), data),
81
+ warn: (msg: string, data?: LogData) => log('warn', msg, data),
82
+ info: (msg: string, data?: LogData) => log('info', msg, data),
83
+ verbose: (msg: string, data?: LogData) => log('verbose', msg, data),
84
+ debug: (msg: string, data?: LogData) => log('debug', msg, data),
85
+ };
86
+ return Object.assign((msg: string, data?: LogData) => log('debug', msg, data), logger);
87
+ }
54
88
 
89
+ /**
90
+ * A function to create a logger that automatically includes fixed data in each log entry.
91
+ * @param debugLogger - The base DebugLogger instance to which we attach fixed log data.
92
+ * @param fixedLogData - The data to be included in every log entry.
93
+ * @returns A DebugLogger with log level methods (error, warn, info, verbose, debug) that
94
+ * automatically attach `fixedLogData` to every log message.
95
+ */
96
+ export function attachedFixedDataToLogger(debugLogger: DebugLogger, fixedLogData: LogData): DebugLogger {
97
+ // Helper function to merge fixed data with additional data passed to log entries.
98
+ const attach = (data?: LogData) => ({ ...fixedLogData, ...data });
99
+ // Define the logger with all the necessary log level methods.
55
100
  const logger = {
101
+ // Silent log level does nothing.
56
102
  silent: () => {},
57
- error: (msg: string, err?: unknown, data?: LogData) =>
58
- logWithDebug(debugLogger, 'error', fmtErr(msg, err), attatchFixedLogData(data)),
59
- warn: (msg: string, data?: LogData) => logWithDebug(debugLogger, 'warn', msg, attatchFixedLogData(data)),
60
- info: (msg: string, data?: LogData) => logWithDebug(debugLogger, 'info', msg, attatchFixedLogData(data)),
61
- verbose: (msg: string, data?: LogData) => logWithDebug(debugLogger, 'verbose', msg, attatchFixedLogData(data)),
62
- debug: (msg: string, data?: LogData) => logWithDebug(debugLogger, 'debug', msg, attatchFixedLogData(data)),
103
+ error: (msg: string, err?: unknown, data?: LogData) => debugLogger.error(fmtErr(msg, err), attach(data)),
104
+ warn: (msg: string, data?: LogData) => debugLogger.warn(msg, attach(data)),
105
+ info: (msg: string, data?: LogData) => debugLogger.info(msg, attach(data)),
106
+ verbose: (msg: string, data?: LogData) => debugLogger.verbose(msg, attach(data)),
107
+ debug: (msg: string, data?: LogData) => debugLogger.debug(msg, attach(data)),
63
108
  };
64
- return Object.assign(
65
- (msg: string, data?: LogData) => logWithDebug(debugLogger, 'debug', msg, attatchFixedLogData(data)),
66
- logger,
67
- );
109
+ return Object.assign((msg: string, data?: LogData) => debugLogger.debug(msg, attach(data)), logger);
68
110
  }
111
+
69
112
  /** A callback to capture all logs. */
70
113
  export type LogHandler = (level: LogLevel, namespace: string, msg: string, data?: LogData) => void;
71
114
 
@@ -79,7 +79,7 @@ export class WasmModule implements IWasmModule {
79
79
  * @param initMethod - Defaults to calling '_initialize'.
80
80
  * @param maximum - 8192 maximum by default. 512mb.
81
81
  */
82
- public async init(initial = 30, maximum = 8192, initMethod: string | null = '_initialize') {
82
+ public async init(initial = 31, maximum = 8192, initMethod: string | null = '_initialize') {
83
83
  this.debug(
84
84
  `initial mem: ${initial} pages, ${(initial * 2 ** 16) / (1024 * 1024)}mb. max mem: ${maximum} pages, ${
85
85
  (maximum * 2 ** 16) / (1024 * 1024)