@aztec/foundation 0.67.1 → 0.68.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.
Files changed (51) hide show
  1. package/dest/abi/abi.d.ts +18 -18
  2. package/dest/blob/index.d.ts +41 -0
  3. package/dest/blob/index.d.ts.map +1 -0
  4. package/dest/blob/index.js +118 -0
  5. package/dest/config/env_var.d.ts +1 -1
  6. package/dest/config/env_var.d.ts.map +1 -1
  7. package/dest/index.d.ts +1 -0
  8. package/dest/index.d.ts.map +1 -1
  9. package/dest/index.js +2 -1
  10. package/dest/log/pino-logger.d.ts.map +1 -1
  11. package/dest/log/pino-logger.js +37 -2
  12. package/dest/noir/noir_package_config.d.ts +4 -4
  13. package/dest/promise/running-promise.d.ts +2 -1
  14. package/dest/promise/running-promise.d.ts.map +1 -1
  15. package/dest/promise/running-promise.js +10 -3
  16. package/dest/retry/index.js +2 -2
  17. package/dest/serialize/field_reader.d.ts +5 -0
  18. package/dest/serialize/field_reader.d.ts.map +1 -1
  19. package/dest/serialize/field_reader.js +8 -1
  20. package/dest/string/index.d.ts +1 -0
  21. package/dest/string/index.d.ts.map +1 -1
  22. package/dest/string/index.js +4 -1
  23. package/dest/testing/files/index.d.ts +18 -0
  24. package/dest/testing/files/index.d.ts.map +1 -0
  25. package/dest/testing/files/index.js +57 -0
  26. package/dest/testing/index.d.ts +1 -1
  27. package/dest/testing/index.d.ts.map +1 -1
  28. package/dest/testing/index.js +2 -2
  29. package/dest/testing/test_data.d.ts +0 -22
  30. package/dest/testing/test_data.d.ts.map +1 -1
  31. package/dest/testing/test_data.js +1 -67
  32. package/dest/timer/date.d.ts +13 -0
  33. package/dest/timer/date.d.ts.map +1 -0
  34. package/dest/timer/date.js +22 -0
  35. package/dest/timer/index.d.ts +1 -0
  36. package/dest/timer/index.d.ts.map +1 -1
  37. package/dest/timer/index.js +2 -1
  38. package/package.json +8 -6
  39. package/src/blob/index.ts +152 -0
  40. package/src/config/env_var.ts +2 -4
  41. package/src/index.ts +1 -0
  42. package/src/log/pino-logger.ts +40 -1
  43. package/src/promise/running-promise.ts +11 -2
  44. package/src/retry/index.ts +1 -1
  45. package/src/serialize/field_reader.ts +8 -0
  46. package/src/string/index.ts +4 -0
  47. package/src/testing/files/index.ts +63 -0
  48. package/src/testing/index.ts +1 -1
  49. package/src/testing/test_data.ts +0 -75
  50. package/src/timer/date.ts +24 -0
  51. package/src/timer/index.ts +1 -0
@@ -85,5 +85,10 @@ export declare class FieldReader {
85
85
  */
86
86
  fromFields: (reader: FieldReader) => T;
87
87
  }): T;
88
+ /**
89
+ * Returns whether the reader has finished reading all fields.
90
+ * @returns A bool.
91
+ */
92
+ isFinished(): boolean;
88
93
  }
89
94
  //# sourceMappingURL=field_reader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"field_reader.d.ts","sourceRoot":"","sources":["../../src/serialize/field_reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;;;GAOG;AACH,qBAAa,WAAW;IAGV,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;gBACH,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,SAAI;IAQ5C;;;;;OAKG;WACW,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,WAAW;IAQ/D;;;;OAIG;IACI,SAAS,IAAI,EAAE;IAOtB;;;;OAIG;IACI,MAAM,IAAI,EAAE;IAInB;;;;;;;OAOG;IACI,WAAW,IAAI,OAAO;IAS7B;;;;;;OAMG;IACI,OAAO,IAAI,MAAM;IASxB;;;;;OAKG;IACI,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAQ9D;;;;;;;;;OASG;IACI,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAClC,IAAI,EAAE,CAAC,EACP,gBAAgB,EAAE;QAChB;;WAEG;QACH,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,CAAC,CAAC;KACxC,GACA,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAKd;;;;;;OAMG;IACI,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE;QACjC;;WAEG;QACH,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,CAAC,CAAC;KACxC,GAAG,CAAC;CAGN"}
1
+ {"version":3,"file":"field_reader.d.ts","sourceRoot":"","sources":["../../src/serialize/field_reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;;;GAOG;AACH,qBAAa,WAAW;IAGV,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;gBACH,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,SAAI;IAQ5C;;;;;OAKG;WACW,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,GAAG,WAAW;IAQ/D;;;;OAIG;IACI,SAAS,IAAI,EAAE;IAOtB;;;;OAIG;IACI,MAAM,IAAI,EAAE;IAInB;;;;;;;OAOG;IACI,WAAW,IAAI,OAAO;IAS7B;;;;;;OAMG;IACI,OAAO,IAAI,MAAM;IASxB;;;;;OAKG;IACI,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAQ9D;;;;;;;;;OASG;IACI,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAClC,IAAI,EAAE,CAAC,EACP,gBAAgB,EAAE;QAChB;;WAEG;QACH,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,CAAC,CAAC;KACxC,GACA,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAKd;;;;;;OAMG;IACI,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE;QACjC;;WAEG;QACH,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,CAAC,CAAC;KACxC,GAAG,CAAC;IAIL;;;OAGG;IACI,UAAU,IAAI,OAAO;CAG7B"}
@@ -115,5 +115,12 @@ export class FieldReader {
115
115
  readObject(deserializer) {
116
116
  return deserializer.fromFields(this);
117
117
  }
118
+ /**
119
+ * Returns whether the reader has finished reading all fields.
120
+ * @returns A bool.
121
+ */
122
+ isFinished() {
123
+ return this.index === this.length;
124
+ }
118
125
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRfcmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcmlhbGl6ZS9maWVsZF9yZWFkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBVyxNQUFNLHFCQUFxQixDQUFDO0FBR2xEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUd0QixZQUFvQixNQUFZLEVBQUUsTUFBTSxHQUFHLENBQUM7UUFBeEIsV0FBTSxHQUFOLE1BQU0sQ0FBTTtRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDNUIsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUEwQjtRQUMvQyxJQUFJLE1BQU0sWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUNsQyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVM7UUFDZCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxXQUFXO1FBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksT0FBTztRQUNaLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxLQUFLLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksY0FBYyxDQUFtQixJQUFPO1FBQzdDLE1BQU0sTUFBTSxHQUFTLEVBQUUsQ0FBQztRQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsT0FBTyxNQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxTQUFTLENBQ2QsSUFBTyxFQUNQLGdCQUtDO1FBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRixPQUFPLE1BQXFCLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFVBQVUsQ0FBSSxZQUtwQjtRQUNDLE9BQU8sWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0YifQ==
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRfcmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcmlhbGl6ZS9maWVsZF9yZWFkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBVyxNQUFNLHFCQUFxQixDQUFDO0FBR2xEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUd0QixZQUFvQixNQUFZLEVBQUUsTUFBTSxHQUFHLENBQUM7UUFBeEIsV0FBTSxHQUFOLE1BQU0sQ0FBTTtRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDNUIsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUEwQjtRQUMvQyxJQUFJLE1BQU0sWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUNsQyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVM7UUFDZCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxXQUFXO1FBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksT0FBTztRQUNaLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxLQUFLLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksY0FBYyxDQUFtQixJQUFPO1FBQzdDLE1BQU0sTUFBTSxHQUFTLEVBQUUsQ0FBQztRQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsT0FBTyxNQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxTQUFTLENBQ2QsSUFBTyxFQUNQLGdCQUtDO1FBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRixPQUFPLE1BQXFCLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFVBQVUsQ0FBSSxZQUtwQjtRQUNDLE9BQU8sWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3BDLENBQUM7Q0FDRiJ9
@@ -7,4 +7,5 @@ export declare function hexToBuffer(str: string): Buffer;
7
7
  export declare function bufferToHex(buffer: Buffer): `0x${string}`;
8
8
  export declare function pluralize(str: string, count: number | bigint, plural?: string): string;
9
9
  export declare function count(count: number | bigint, str: string, plural?: string): string;
10
+ export declare function truncate(str: string, length?: number): string;
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/string/index.ts"],"names":[],"mappings":";;AAAA,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,KAAK,MAAM,EAAE,CAE9D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAEzD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtF;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAElF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/string/index.ts"],"names":[],"mappings":";;AAAA,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,KAAK,MAAM,EAAE,CAE9D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAEzD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtF;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAElF;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW,GAAG,MAAM,CAEjE"}
@@ -19,4 +19,7 @@ export function pluralize(str, count, plural) {
19
19
  export function count(count, str, plural) {
20
20
  return `${count} ${pluralize(str, count, plural)}`;
21
21
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBVztJQUN0QyxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxHQUFXO0lBQzFDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDaEQsQ0FBQztBQUVELE1BQU0sVUFBVSxLQUFLLENBQUMsR0FBVztJQUMvQixPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFXO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUFjO0lBQ3hDLE9BQU8sS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDdkMsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsR0FBVyxFQUFFLEtBQXNCLEVBQUUsTUFBZTtJQUM1RSxPQUFPLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNqRSxDQUFDO0FBRUQsTUFBTSxVQUFVLEtBQUssQ0FBQyxLQUFzQixFQUFFLEdBQVcsRUFBRSxNQUFlO0lBQ3hFLE9BQU8sR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUNyRCxDQUFDIn0=
22
+ export function truncate(str, length = 64) {
23
+ return str.length > length ? str.slice(0, length) + '...' : str;
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBVztJQUN0QyxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxHQUFXO0lBQzFDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDaEQsQ0FBQztBQUVELE1BQU0sVUFBVSxLQUFLLENBQUMsR0FBVztJQUMvQixPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFXO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUFjO0lBQ3hDLE9BQU8sS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDdkMsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsR0FBVyxFQUFFLEtBQXNCLEVBQUUsTUFBZTtJQUM1RSxPQUFPLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNqRSxDQUFDO0FBRUQsTUFBTSxVQUFVLEtBQUssQ0FBQyxLQUFzQixFQUFFLEdBQVcsRUFBRSxNQUFlO0lBQ3hFLE9BQU8sR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUNyRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFXLEVBQUUsU0FBaUIsRUFBRTtJQUN2RCxPQUFPLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNsRSxDQUFDIn0=
@@ -0,0 +1,18 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ /** Writes the contents specified to the target file if test data generation is enabled. */
4
+ export declare function writeTestData(targetFileFromRepoRoot: string, contents: string | Buffer): void;
5
+ /**
6
+ * Looks for a variable assignment in the target file and updates the value, only if test data generation is enabled.
7
+ * Note that a magic inline comment would be a cleaner approach, like `/* TEST-DATA-START *\/` and `/* TEST-DATA-END *\/`,
8
+ * but running nargo fmt on it panics since the comment would be erased, so we roll with this for now.
9
+ * @remarks Requires AZTEC_GENERATE_TEST_DATA=1 to be set
10
+ */
11
+ export declare function updateInlineTestData(targetFileFromRepoRoot: string, itemName: string, value: string): void;
12
+ /**
13
+ * Updates the sample Prover.toml files in noir-projects/noir-protocol-circuits/crates/.
14
+ * @remarks Requires AZTEC_GENERATE_TEST_DATA=1 & generateProtocolCircuitTestData=true to be set
15
+ * To re-gen, run 'AZTEC_GENERATE_TEST_DATA=1 FAKE_PROOFS=1 yarn workspace @aztec/end-to-end test full.test'
16
+ */
17
+ export declare function updateProtocolCircuitSampleInputs(circuitName: string, value: string): void;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/files/index.ts"],"names":[],"mappings":";;AAOA,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,sBAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,QAStF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,sBAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAenG;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAMnF"}
@@ -0,0 +1,57 @@
1
+ import { existsSync, readFileSync, writeFileSync } from 'fs';
2
+ import { dirname, join, resolve } from 'path';
3
+ import { createConsoleLogger } from '../../log/console.js';
4
+ import { fileURLToPath } from '../../url/index.js';
5
+ import { isGenerateTestDataEnabled } from '../test_data.js';
6
+ /** Writes the contents specified to the target file if test data generation is enabled. */
7
+ export function writeTestData(targetFileFromRepoRoot, contents) {
8
+ if (!isGenerateTestDataEnabled()) {
9
+ return;
10
+ }
11
+ const targetFile = getPathToFile(targetFileFromRepoRoot);
12
+ const toWrite = typeof contents === 'string' ? contents : contents.toString('hex');
13
+ writeFileSync(targetFile, toWrite);
14
+ const logger = createConsoleLogger('aztec:testing:test_data');
15
+ logger(`Wrote test data to ${targetFile}`);
16
+ }
17
+ /**
18
+ * Looks for a variable assignment in the target file and updates the value, only if test data generation is enabled.
19
+ * Note that a magic inline comment would be a cleaner approach, like `/* TEST-DATA-START *\/` and `/* TEST-DATA-END *\/`,
20
+ * but running nargo fmt on it panics since the comment would be erased, so we roll with this for now.
21
+ * @remarks Requires AZTEC_GENERATE_TEST_DATA=1 to be set
22
+ */
23
+ export function updateInlineTestData(targetFileFromRepoRoot, itemName, value) {
24
+ if (!isGenerateTestDataEnabled()) {
25
+ return;
26
+ }
27
+ const logger = createConsoleLogger('aztec:testing:test_data');
28
+ const targetFile = getPathToFile(targetFileFromRepoRoot);
29
+ const contents = readFileSync(targetFile, 'utf8').toString();
30
+ const regex = new RegExp(`let ${itemName} =[\\s\\S]*?;`, 'g');
31
+ if (!regex.exec(contents)) {
32
+ throw new Error(`Test data marker for ${itemName} not found in ${targetFile}`);
33
+ }
34
+ const updatedContents = contents.replaceAll(regex, `let ${itemName} = ${value};`);
35
+ writeFileSync(targetFile, updatedContents);
36
+ logger(`Updated test data in ${targetFile} for ${itemName} to ${value}`);
37
+ }
38
+ /**
39
+ * Updates the sample Prover.toml files in noir-projects/noir-protocol-circuits/crates/.
40
+ * @remarks Requires AZTEC_GENERATE_TEST_DATA=1 & generateProtocolCircuitTestData=true to be set
41
+ * To re-gen, run 'AZTEC_GENERATE_TEST_DATA=1 FAKE_PROOFS=1 yarn workspace @aztec/end-to-end test full.test'
42
+ */
43
+ export function updateProtocolCircuitSampleInputs(circuitName, value) {
44
+ const logger = createConsoleLogger('aztec:testing:test_data');
45
+ const targetFileFromRepoRoot = `noir-projects/noir-protocol-circuits/crates/${circuitName}/Prover.toml`;
46
+ const targetFile = getPathToFile(targetFileFromRepoRoot);
47
+ writeFileSync(targetFile, value);
48
+ logger(`Updated test data in ${targetFile} for ${circuitName}`);
49
+ }
50
+ function getPathToFile(targetFileFromRepoRoot) {
51
+ const repoRoot = resolve(dirname(fileURLToPath(import.meta.url)), '../../../../../');
52
+ if (!existsSync(join(repoRoot, 'CODEOWNERS'))) {
53
+ throw new Error(`Path to repo root is incorrect (got ${repoRoot})`);
54
+ }
55
+ return join(repoRoot, targetFileFromRepoRoot);
56
+ }
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9maWxlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1RCwyRkFBMkY7QUFDM0YsTUFBTSxVQUFVLGFBQWEsQ0FBQyxzQkFBOEIsRUFBRSxRQUF5QjtJQUNyRixJQUFJLENBQUMseUJBQXlCLEVBQUUsRUFBRSxDQUFDO1FBQ2pDLE9BQU87SUFDVCxDQUFDO0lBQ0QsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDekQsTUFBTSxPQUFPLEdBQUcsT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkYsYUFBYSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuQyxNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzlELE1BQU0sQ0FBQyxzQkFBc0IsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsc0JBQThCLEVBQUUsUUFBZ0IsRUFBRSxLQUFhO0lBQ2xHLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLENBQUM7UUFDakMsT0FBTztJQUNULENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzlELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxRQUFRLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM5RCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLFFBQVEsaUJBQWlCLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDbEYsYUFBYSxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUMzQyxNQUFNLENBQUMsd0JBQXdCLFVBQVUsUUFBUSxRQUFRLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQztBQUMzRSxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxXQUFtQixFQUFFLEtBQWE7SUFDbEYsTUFBTSxNQUFNLEdBQUcsbUJBQW1CLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM5RCxNQUFNLHNCQUFzQixHQUFHLCtDQUErQyxXQUFXLGNBQWMsQ0FBQztJQUN4RyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN6RCxhQUFhLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sQ0FBQyx3QkFBd0IsVUFBVSxRQUFRLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLHNCQUE4QjtJQUNuRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUNyRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBQ2hELENBQUMifQ==
@@ -1,4 +1,4 @@
1
- export * from './test_data.js';
2
1
  export * from './snapshot_serializer.js';
3
2
  export * from './port_allocator.js';
3
+ export * from './test_data.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
@@ -1,4 +1,4 @@
1
- export * from './test_data.js';
2
1
  export * from './snapshot_serializer.js';
3
2
  export * from './port_allocator.js';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxxQkFBcUIsQ0FBQyJ9
3
+ export * from './test_data.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxnQkFBZ0IsQ0FBQyJ9
@@ -1,29 +1,7 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
1
  /** Returns whether test data generation is enabled */
4
2
  export declare function isGenerateTestDataEnabled(): boolean;
5
- /**
6
- * This is separate so Prover.tomls don't get edited everytime any test is run,
7
- * Only full.test updates prover tomls, then switches this off.
8
- */
9
- export declare function switchGenerateProtocolCircuitTestData(): void;
10
3
  /** Pushes test data with the given name, only if test data generation is enabled. */
11
4
  export declare function pushTestData<T>(itemName: string, data: T): void;
12
5
  /** Returns all instances of pushed test data with the given name, or empty if test data generation is not enabled. */
13
6
  export declare function getTestData(itemName: string): unknown[];
14
- /** Writes the contents specified to the target file if test data generation is enabled. */
15
- export declare function writeTestData(targetFileFromRepoRoot: string, contents: string | Buffer): void;
16
- /**
17
- * Looks for a variable assignment in the target file and updates the value, only if test data generation is enabled.
18
- * Note that a magic inline comment would be a cleaner approach, like `/* TEST-DATA-START *\/` and `/* TEST-DATA-END *\/`,
19
- * but running nargo fmt on it panics since the comment would be erased, so we roll with this for now.
20
- * @remarks Requires AZTEC_GENERATE_TEST_DATA=1 to be set
21
- */
22
- export declare function updateInlineTestData(targetFileFromRepoRoot: string, itemName: string, value: string): void;
23
- /**
24
- * Updates the sample Prover.toml files in noir-projects/noir-protocol-circuits/crates/.
25
- * @remarks Requires AZTEC_GENERATE_TEST_DATA=1 & generateProtocolCircuitTestData=true to be set
26
- * To re-gen, run 'AZTEC_GENERATE_TEST_DATA=1 FAKE_PROOFS=1 yarn workspace @aztec/end-to-end test full.test'
27
- */
28
- export declare function updateProtocolCircuitSampleInputs(circuitName: string, value: string): void;
29
7
  //# sourceMappingURL=test_data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test_data.d.ts","sourceRoot":"","sources":["../../src/testing/test_data.ts"],"names":[],"mappings":";;AASA,sDAAsD;AACtD,wBAAgB,yBAAyB,YAExC;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,SAEpD;AAED,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,QAgBxD;AAED,sHAAsH;AACtH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE,CAQvD;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,sBAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,QAStF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,sBAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAenG;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QASnF"}
1
+ {"version":3,"file":"test_data.d.ts","sourceRoot":"","sources":["../../src/testing/test_data.ts"],"names":[],"mappings":"AAEA,sDAAsD;AACtD,wBAAgB,yBAAyB,YAExC;AAED,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,QAgBxD;AAED,sHAAsH;AACtH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE,CAQvD"}
@@ -1,20 +1,8 @@
1
- import { existsSync, readFileSync, writeFileSync } from 'fs';
2
- import { dirname, join, resolve } from 'path';
3
- import { createConsoleLogger } from '../log/console.js';
4
- import { fileURLToPath } from '../url/index.js';
5
1
  const testData = {};
6
- let generateProtocolCircuitTestData = false;
7
2
  /** Returns whether test data generation is enabled */
8
3
  export function isGenerateTestDataEnabled() {
9
4
  return ['1', 'true'].includes(process.env.AZTEC_GENERATE_TEST_DATA ?? '') && typeof expect !== 'undefined';
10
5
  }
11
- /**
12
- * This is separate so Prover.tomls don't get edited everytime any test is run,
13
- * Only full.test updates prover tomls, then switches this off.
14
- */
15
- export function switchGenerateProtocolCircuitTestData() {
16
- generateProtocolCircuitTestData = !generateProtocolCircuitTestData;
17
- }
18
6
  /** Pushes test data with the given name, only if test data generation is enabled. */
19
7
  export function pushTestData(itemName, data) {
20
8
  if (!isGenerateTestDataEnabled()) {
@@ -39,58 +27,4 @@ export function getTestData(itemName) {
39
27
  const fullItemName = `${testName} ${itemName}`;
40
28
  return testData[fullItemName];
41
29
  }
42
- /** Writes the contents specified to the target file if test data generation is enabled. */
43
- export function writeTestData(targetFileFromRepoRoot, contents) {
44
- if (!isGenerateTestDataEnabled()) {
45
- return;
46
- }
47
- const targetFile = getPathToFile(targetFileFromRepoRoot);
48
- const toWrite = typeof contents === 'string' ? contents : contents.toString('hex');
49
- writeFileSync(targetFile, toWrite);
50
- const logger = createConsoleLogger('aztec:testing:test_data');
51
- logger(`Wrote test data to ${targetFile}`);
52
- }
53
- /**
54
- * Looks for a variable assignment in the target file and updates the value, only if test data generation is enabled.
55
- * Note that a magic inline comment would be a cleaner approach, like `/* TEST-DATA-START *\/` and `/* TEST-DATA-END *\/`,
56
- * but running nargo fmt on it panics since the comment would be erased, so we roll with this for now.
57
- * @remarks Requires AZTEC_GENERATE_TEST_DATA=1 to be set
58
- */
59
- export function updateInlineTestData(targetFileFromRepoRoot, itemName, value) {
60
- if (!isGenerateTestDataEnabled()) {
61
- return;
62
- }
63
- const logger = createConsoleLogger('aztec:testing:test_data');
64
- const targetFile = getPathToFile(targetFileFromRepoRoot);
65
- const contents = readFileSync(targetFile, 'utf8').toString();
66
- const regex = new RegExp(`let ${itemName} =[\\s\\S]*?;`, 'g');
67
- if (!regex.exec(contents)) {
68
- throw new Error(`Test data marker for ${itemName} not found in ${targetFile}`);
69
- }
70
- const updatedContents = contents.replaceAll(regex, `let ${itemName} = ${value};`);
71
- writeFileSync(targetFile, updatedContents);
72
- logger(`Updated test data in ${targetFile} for ${itemName} to ${value}`);
73
- }
74
- /**
75
- * Updates the sample Prover.toml files in noir-projects/noir-protocol-circuits/crates/.
76
- * @remarks Requires AZTEC_GENERATE_TEST_DATA=1 & generateProtocolCircuitTestData=true to be set
77
- * To re-gen, run 'AZTEC_GENERATE_TEST_DATA=1 FAKE_PROOFS=1 yarn workspace @aztec/end-to-end test full.test'
78
- */
79
- export function updateProtocolCircuitSampleInputs(circuitName, value) {
80
- if (!isGenerateTestDataEnabled() || !generateProtocolCircuitTestData) {
81
- return;
82
- }
83
- const logger = createConsoleLogger('aztec:testing:test_data');
84
- const targetFileFromRepoRoot = `noir-projects/noir-protocol-circuits/crates/${circuitName}/Prover.toml`;
85
- const targetFile = getPathToFile(targetFileFromRepoRoot);
86
- writeFileSync(targetFile, value);
87
- logger(`Updated test data in ${targetFile} for ${circuitName}`);
88
- }
89
- function getPathToFile(targetFileFromRepoRoot) {
90
- const repoRoot = resolve(dirname(fileURLToPath(import.meta.url)), '../../../../');
91
- if (!existsSync(join(repoRoot, 'CODEOWNERS'))) {
92
- throw new Error(`Path to repo root is incorrect (got ${repoRoot})`);
93
- }
94
- return join(repoRoot, targetFileFromRepoRoot);
95
- }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3RpbmcvdGVzdF9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLElBQUksQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE1BQU0sUUFBUSxHQUFpQyxFQUFFLENBQUM7QUFDbEQsSUFBSSwrQkFBK0IsR0FBRyxLQUFLLENBQUM7QUFFNUMsc0RBQXNEO0FBQ3RELE1BQU0sVUFBVSx5QkFBeUI7SUFDdkMsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsSUFBSSxFQUFFLENBQUMsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUM7QUFDN0csQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxxQ0FBcUM7SUFDbkQsK0JBQStCLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQztBQUNyRSxDQUFDO0FBRUQscUZBQXFGO0FBQ3JGLE1BQU0sVUFBVSxZQUFZLENBQUksUUFBZ0IsRUFBRSxJQUFPO0lBQ3ZELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLENBQUM7UUFDakMsT0FBTztJQUNULENBQUM7SUFFRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLGVBQWUsQ0FBQztJQUNuRCxNQUFNLFlBQVksR0FBRyxHQUFHLFFB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
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3RpbmcvdGVzdF9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sUUFBUSxHQUFpQyxFQUFFLENBQUM7QUFFbEQsc0RBQXNEO0FBQ3RELE1BQU0sVUFBVSx5QkFBeUI7SUFDdkMsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsSUFBSSxFQUFFLENBQUMsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUM7QUFDN0csQ0FBQztBQUVELHFGQUFxRjtBQUNyRixNQUFNLFVBQVUsWUFBWSxDQUFJLFFBQWdCLEVBQUUsSUFBTztJQUN2RCxJQUFJLENBQUMseUJBQXlCLEVBQUUsRUFBRSxDQUFDO1FBQ2pDLE9BQU87SUFDVCxDQUFDO0lBRUQsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxlQUFlLENBQUM7SUFDbkQsTUFBTSxZQUFZLEdBQUcsR0FBRyxRQUFRLElBQUksUUFBUSxFQUFFLENBQUM7SUFFL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQzVCLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNELFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELHNIQUFzSDtBQUN0SCxNQUFNLFVBQVUsV0FBVyxDQUFDLFFBQWdCO0lBQzFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLENBQUM7UUFDakMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLGVBQWUsQ0FBQztJQUNuRCxNQUFNLFlBQVksR0FBRyxHQUFHLFFBQVEsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUMvQyxPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNoQyxDQUFDIn0=
@@ -0,0 +1,13 @@
1
+ /** Returns current datetime. */
2
+ export declare class DateProvider {
3
+ now(): number;
4
+ }
5
+ /** Returns current datetime and allows to override it. */
6
+ export declare class TestDateProvider implements DateProvider {
7
+ private readonly logger;
8
+ private offset;
9
+ constructor(logger?: import("../log/pino-logger.js").Logger);
10
+ now(): number;
11
+ setTime(timeMs: number): void;
12
+ }
13
+ //# sourceMappingURL=date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/timer/date.ts"],"names":[],"mappings":"AAEA,gCAAgC;AAChC,qBAAa,YAAY;IAChB,GAAG,IAAI,MAAM;CAGrB;AAED,0DAA0D;AAC1D,qBAAa,gBAAiB,YAAW,YAAY;IAGvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,MAAM,CAAK;gBAEU,MAAM,yCAAgD;IAE5E,GAAG,IAAI,MAAM;IAIb,OAAO,CAAC,MAAM,EAAE,MAAM;CAI9B"}
@@ -0,0 +1,22 @@
1
+ import { createLogger } from '../log/pino-logger.js';
2
+ /** Returns current datetime. */
3
+ export class DateProvider {
4
+ now() {
5
+ return Date.now();
6
+ }
7
+ }
8
+ /** Returns current datetime and allows to override it. */
9
+ export class TestDateProvider {
10
+ constructor(logger = createLogger('foundation:test-date-provider')) {
11
+ this.logger = logger;
12
+ this.offset = 0;
13
+ }
14
+ now() {
15
+ return Date.now() + this.offset;
16
+ }
17
+ setTime(timeMs) {
18
+ this.offset = timeMs - Date.now();
19
+ this.logger.warn(`Time set to ${timeMs}`);
20
+ }
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90aW1lci9kYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRCxnQ0FBZ0M7QUFDaEMsTUFBTSxPQUFPLFlBQVk7SUFDaEIsR0FBRztRQUNSLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQUVELDBEQUEwRDtBQUMxRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCLFlBQTZCLFNBQVMsWUFBWSxDQUFDLCtCQUErQixDQUFDO1FBQXRELFdBQU0sR0FBTixNQUFNLENBQWdEO1FBRjNFLFdBQU0sR0FBRyxDQUFDLENBQUM7SUFFbUUsQ0FBQztJQUVoRixHQUFHO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxDQUFDO0lBRU0sT0FBTyxDQUFDLE1BQWM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0YifQ==
@@ -1,4 +1,5 @@
1
1
  export { TimeoutTask, executeTimeoutWithCustomError } from './timeout.js';
2
2
  export { Timer } from './timer.js';
3
3
  export { elapsed, elapsedSync } from './elapsed.js';
4
+ export * from './date.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/timer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/timer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACpD,cAAc,WAAW,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { TimeoutTask, executeTimeoutWithCustomError } from './timeout.js';
2
2
  export { Timer } from './timer.js';
3
3
  export { elapsed, elapsedSync } from './elapsed.js';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGltZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDIn0=
4
+ export * from './date.js';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGltZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BELGNBQWMsV0FBVyxDQUFDIn0=
package/package.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/foundation",
3
- "version": "0.67.1",
4
- "packageManager": "yarn@3.4.1",
3
+ "version": "0.68.0",
5
4
  "type": "module",
6
5
  "main": "./dest/index.js",
7
6
  "types": "./dest/index.d.ts",
@@ -41,12 +40,14 @@
41
40
  "./wasm": "./dest/wasm/index.js",
42
41
  "./worker": "./dest/worker/index.js",
43
42
  "./bigint-buffer": "./dest/bigint-buffer/index.js",
43
+ "./blob": "./dest/blob/index.js",
44
44
  "./types": "./dest/types/index.js",
45
45
  "./schemas": "./dest/schemas/index.js",
46
46
  "./url": "./dest/url/index.js",
47
47
  "./committable": "./dest/committable/index.js",
48
48
  "./noir": "./dest/noir/index.js",
49
49
  "./testing": "./dest/testing/index.js",
50
+ "./testing/files": "./dest/testing/files/index.js",
50
51
  "./array": "./dest/array/index.js",
51
52
  "./validation": "./dest/validation/index.js",
52
53
  "./promise": "./dest/promise/index.js",
@@ -59,7 +60,7 @@
59
60
  "generate": "true",
60
61
  "formatting": "run -T prettier --check ./src && run -T eslint ./src",
61
62
  "formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src",
62
- "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests"
63
+ "test": "HARDWARE_CONCURRENCY=16 RAYON_NUM_THREADS=4 NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=8"
63
64
  },
64
65
  "inherits": [
65
66
  "../package.common.json"
@@ -91,9 +92,9 @@
91
92
  ],
92
93
  "reporters": [
93
94
  [
94
- "default",
95
+ "jest-silent-reporter",
95
96
  {
96
- "summaryThreshold": 9999
97
+ "useDots": true
97
98
  }
98
99
  ]
99
100
  ],
@@ -106,10 +107,11 @@
106
107
  ]
107
108
  },
108
109
  "dependencies": {
109
- "@aztec/bb.js": "0.67.1",
110
+ "@aztec/bb.js": "0.68.0",
110
111
  "@koa/cors": "^5.0.0",
111
112
  "@noble/curves": "^1.2.0",
112
113
  "bn.js": "^5.2.1",
114
+ "c-kzg": "4.0.0-alpha.1",
113
115
  "colorette": "^2.0.20",
114
116
  "debug": "^4.3.4",
115
117
  "detect-node": "^2.1.0",
@@ -0,0 +1,152 @@
1
+ import cKzg from 'c-kzg';
2
+ import type { Blob as BlobBuffer } from 'c-kzg';
3
+
4
+ import { poseidon2Hash, sha256 } from '../crypto/index.js';
5
+ import { Fr } from '../fields/index.js';
6
+ import { serializeToBuffer } from '../serialize/index.js';
7
+
8
+ // Importing directly from 'c-kzg' does not work, ignoring import/no-named-as-default-member err:
9
+ /* eslint-disable import/no-named-as-default-member */
10
+
11
+ const {
12
+ BYTES_PER_BLOB,
13
+ FIELD_ELEMENTS_PER_BLOB,
14
+ blobToKzgCommitment,
15
+ computeKzgProof,
16
+ loadTrustedSetup,
17
+ verifyKzgProof,
18
+ } = cKzg;
19
+
20
+ try {
21
+ loadTrustedSetup();
22
+ } catch (error: any) {
23
+ if (error.message.includes('trusted setup is already loaded')) {
24
+ // NB: The c-kzg lib has no way of checking whether the setup is loaded or not,
25
+ // and it throws an error if it's already loaded, even though nothing is wrong.
26
+ // This is a rudimentary way of ensuring we load the trusted setup if we need it.
27
+ } else {
28
+ throw new Error(error);
29
+ }
30
+ }
31
+
32
+ // The prefix to the EVM blobHash, defined here: https://eips.ethereum.org/EIPS/eip-4844#specification
33
+ export const VERSIONED_HASH_VERSION_KZG = 0x01;
34
+
35
+ /**
36
+ * A class to create, manage, and prove EVM blobs.
37
+ */
38
+ export class Blob {
39
+ /** The blob to be broadcast on L1 in bytes form. */
40
+ public readonly data: BlobBuffer;
41
+ /** The hash of all tx effects inside the blob. Used in generating the challenge z and proving that we have included all required effects. */
42
+ public readonly fieldsHash: Fr;
43
+ /** Challenge point z (= H(H(tx_effects), kzgCommmitment). Used such that p(z) = y. */
44
+ public readonly challengeZ: Fr;
45
+ /** Evaluation y = p(z), where p() is the blob polynomial. BLS12 field element, rep. as BigNum in nr, bigint in ts. */
46
+ public readonly evaluationY: Buffer;
47
+ /** Commitment to the blob C. Used in compressed BLS12 point format (48 bytes). */
48
+ public readonly commitment: Buffer;
49
+ /** KZG opening proof for y = p(z). The commitment to quotient polynomial Q, used in compressed BLS12 point format (48 bytes). */
50
+ public readonly proof: Buffer;
51
+
52
+ constructor(
53
+ /** All fields to be broadcast in the blob. */
54
+ fields: Fr[],
55
+ /** If we want to broadcast more fields than fit into a blob, we hash those and used it as the fieldsHash across all blobs.
56
+ * This is much simpler and cheaper in the circuit to do, but MUST BE CHECKED before injecting here.
57
+ */
58
+ multiBlobFieldsHash?: Fr,
59
+ ) {
60
+ if (fields.length > FIELD_ELEMENTS_PER_BLOB) {
61
+ throw new Error(
62
+ `Attempted to overfill blob with ${fields.length} elements. The maximum is ${FIELD_ELEMENTS_PER_BLOB}`,
63
+ );
64
+ }
65
+ this.data = Buffer.concat([serializeToBuffer(fields)], BYTES_PER_BLOB);
66
+ // This matches the output of SpongeBlob.squeeze() in the blob circuit
67
+ this.fieldsHash = multiBlobFieldsHash ? multiBlobFieldsHash : poseidon2Hash(fields);
68
+ this.commitment = Buffer.from(blobToKzgCommitment(this.data));
69
+ this.challengeZ = poseidon2Hash([this.fieldsHash, ...this.commitmentToFields()]);
70
+ const res = computeKzgProof(this.data, this.challengeZ.toBuffer());
71
+ if (!verifyKzgProof(this.commitment, this.challengeZ.toBuffer(), res[1], res[0])) {
72
+ throw new Error(`KZG proof did not verify.`);
73
+ }
74
+ this.proof = Buffer.from(res[0]);
75
+ this.evaluationY = Buffer.from(res[1]);
76
+ }
77
+
78
+ // 48 bytes encoded in fields as [Fr, Fr] = [0->31, 31->48]
79
+ commitmentToFields(): [Fr, Fr] {
80
+ return [new Fr(this.commitment.subarray(0, 31)), new Fr(this.commitment.subarray(31, 48))];
81
+ }
82
+
83
+ // Returns ethereum's versioned blob hash, following kzg_to_versioned_hash: https://eips.ethereum.org/EIPS/eip-4844#helpers
84
+ getEthVersionedBlobHash(): Buffer {
85
+ const hash = sha256(this.commitment);
86
+ hash[0] = VERSIONED_HASH_VERSION_KZG;
87
+ return hash;
88
+ }
89
+
90
+ static getEthVersionedBlobHash(commitment: Buffer): Buffer {
91
+ const hash = sha256(commitment);
92
+ hash[0] = VERSIONED_HASH_VERSION_KZG;
93
+ return hash;
94
+ }
95
+
96
+ // Returns a proof of opening of the blob to verify on L1 using the point evaluation precompile:
97
+ // * input[:32] - versioned_hash
98
+ // * input[32:64] - z
99
+ // * input[64:96] - y
100
+ // * input[96:144] - commitment C
101
+ // * input[144:192] - proof (a commitment to the quotient polynomial q(X))
102
+ // See https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile
103
+ getEthBlobEvaluationInputs(): `0x${string}` {
104
+ const buf = Buffer.concat([
105
+ this.getEthVersionedBlobHash(),
106
+ this.challengeZ.toBuffer(),
107
+ this.evaluationY,
108
+ this.commitment,
109
+ this.proof,
110
+ ]);
111
+ return `0x${buf.toString('hex')}`;
112
+ }
113
+
114
+ static getEthBlobEvaluationInputs(blobs: Blob[]): `0x${string}` {
115
+ let buf = Buffer.alloc(0);
116
+ blobs.forEach(blob => {
117
+ buf = Buffer.concat([
118
+ buf,
119
+ blob.getEthVersionedBlobHash(),
120
+ blob.challengeZ.toBuffer(),
121
+ blob.evaluationY,
122
+ blob.commitment,
123
+ blob.proof,
124
+ ]);
125
+ });
126
+ // For multiple blobs, we prefix the number of blobs:
127
+ const lenBuf = Buffer.alloc(1);
128
+ lenBuf.writeUint8(blobs.length);
129
+ buf = Buffer.concat([lenBuf, buf]);
130
+ return `0x${buf.toString('hex')}`;
131
+ }
132
+
133
+ static getViemKzgInstance() {
134
+ return {
135
+ blobToKzgCommitment: cKzg.blobToKzgCommitment,
136
+ computeBlobKzgProof: cKzg.computeBlobKzgProof,
137
+ };
138
+ }
139
+
140
+ // Returns as many blobs as we require to broadcast the given fields
141
+ // Assumes we share the fields hash between all blobs
142
+ static getBlobs(fields: Fr[]): Blob[] {
143
+ const numBlobs = Math.max(Math.ceil(fields.length / FIELD_ELEMENTS_PER_BLOB), 1);
144
+ const multiBlobFieldsHash = poseidon2Hash(fields);
145
+ const res = [];
146
+ for (let i = 0; i < numBlobs; i++) {
147
+ const end = fields.length < (i + 1) * FIELD_ELEMENTS_PER_BLOB ? fields.length : (i + 1) * FIELD_ELEMENTS_PER_BLOB;
148
+ res.push(new Blob(fields.slice(i * FIELD_ELEMENTS_PER_BLOB, end), multiBlobFieldsHash));
149
+ }
150
+ return res;
151
+ }
152
+ }
@@ -52,6 +52,7 @@ export type EnvVar =
52
52
  | 'GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS'
53
53
  | 'INBOX_CONTRACT_ADDRESS'
54
54
  | 'L1_CHAIN_ID'
55
+ | 'L1_CONSENSUS_CLIENT_URL'
55
56
  | 'L1_PRIVATE_KEY'
56
57
  | 'L2_QUEUE_SIZE'
57
58
  | 'LOG_ELAPSED_TIME'
@@ -125,7 +126,6 @@ export type EnvVar =
125
126
  | 'PROVER_REAL_PROOFS'
126
127
  | 'PROVER_REQUIRED_CONFIRMATIONS'
127
128
  | 'PROVER_TEST_DELAY_MS'
128
- | 'PROVER_CACHE_DIR'
129
129
  | 'PXE_L2_STARTING_BLOCK'
130
130
  | 'PXE_PROVER_ENABLED'
131
131
  | 'QUOTE_PROVIDER_BASIS_POINT_FEE'
@@ -136,11 +136,8 @@ export type EnvVar =
136
136
  | 'REGISTRY_CONTRACT_ADDRESS'
137
137
  | 'ROLLUP_CONTRACT_ADDRESS'
138
138
  | 'SEQ_ALLOWED_SETUP_FN'
139
- | 'SEQ_ALLOWED_TEARDOWN_FN'
140
139
  | 'SEQ_MAX_BLOCK_SIZE_IN_BYTES'
141
- | 'SEQ_MAX_SECONDS_BETWEEN_BLOCKS'
142
140
  | 'SEQ_MAX_TX_PER_BLOCK'
143
- | 'SEQ_MIN_SECONDS_BETWEEN_BLOCKS'
144
141
  | 'SEQ_MIN_TX_PER_BLOCK'
145
142
  | 'SEQ_PUBLISH_RETRY_INTERVAL_MS'
146
143
  | 'SEQ_PUBLISHER_PRIVATE_KEY'
@@ -184,6 +181,7 @@ export type EnvVar =
184
181
  | 'L1_TX_MONITOR_CHECK_INTERVAL_MS'
185
182
  | 'L1_TX_MONITOR_STALL_TIME_MS'
186
183
  | 'L1_TX_MONITOR_TX_TIMEOUT_MS'
184
+ | 'L1_TX_PROPAGATION_MAX_QUERY_ATTEMPTS'
187
185
  | 'FAUCET_MNEMONIC_ACCOUNT_INDEX'
188
186
  | 'FAUCET_ETH_AMOUNT'
189
187
  | 'FAUCET_INTERVAL_MS'
package/src/index.ts CHANGED
@@ -3,6 +3,7 @@ export * as abi from './abi/index.js';
3
3
  export * as asyncMap from './async-map/index.js';
4
4
  export * as aztecAddress from './aztec-address/index.js';
5
5
  export * as bigintBuffer from './bigint-buffer/index.js';
6
+ export * as blob from './blob/index.js';
6
7
  export * as collection from './collection/index.js';
7
8
  export * as committable from './committable/index.js';
8
9
  export * as crypto from './crypto/index.js';