@aztec/foundation 0.72.1 → 0.73.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 (115) hide show
  1. package/dest/abi/abi.d.ts +3 -2
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/abi.js +22 -5
  4. package/dest/abi/event_selector.d.ts +1 -1
  5. package/dest/abi/event_selector.d.ts.map +1 -1
  6. package/dest/abi/event_selector.js +3 -3
  7. package/dest/abi/function_selector.d.ts +3 -13
  8. package/dest/abi/function_selector.d.ts.map +1 -1
  9. package/dest/abi/function_selector.js +5 -16
  10. package/dest/blob/blob.d.ts +150 -0
  11. package/dest/blob/blob.d.ts.map +1 -0
  12. package/dest/blob/blob.js +249 -0
  13. package/dest/blob/encoding.d.ts +53 -0
  14. package/dest/blob/encoding.d.ts.map +1 -0
  15. package/dest/blob/encoding.js +87 -0
  16. package/dest/blob/index.d.ts +4 -58
  17. package/dest/blob/index.d.ts.map +1 -1
  18. package/dest/blob/index.js +6 -142
  19. package/dest/blob/interface.d.ts +10 -0
  20. package/dest/blob/interface.d.ts.map +1 -0
  21. package/dest/blob/interface.js +2 -0
  22. package/dest/blob/mocks.d.ts +5 -0
  23. package/dest/blob/mocks.d.ts.map +1 -0
  24. package/dest/blob/mocks.js +25 -0
  25. package/dest/config/env_var.d.ts +1 -1
  26. package/dest/config/env_var.d.ts.map +1 -1
  27. package/dest/config/index.d.ts +1 -0
  28. package/dest/config/index.d.ts.map +1 -1
  29. package/dest/config/index.js +11 -14
  30. package/dest/crypto/index.d.ts +0 -7
  31. package/dest/crypto/index.d.ts.map +1 -1
  32. package/dest/crypto/index.js +1 -11
  33. package/dest/crypto/keys/index.d.ts +1 -1
  34. package/dest/crypto/keys/index.d.ts.map +1 -1
  35. package/dest/crypto/keys/index.js +5 -5
  36. package/dest/crypto/pedersen/pedersen.wasm.d.ts +3 -3
  37. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
  38. package/dest/crypto/pedersen/pedersen.wasm.js +13 -10
  39. package/dest/crypto/poseidon/index.d.ts +5 -5
  40. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  41. package/dest/crypto/poseidon/index.js +20 -19
  42. package/dest/crypto/sync/index.d.ts +3 -0
  43. package/dest/crypto/sync/index.d.ts.map +1 -0
  44. package/dest/crypto/sync/index.js +5 -0
  45. package/dest/crypto/sync/pedersen/index.d.ts +21 -0
  46. package/dest/crypto/sync/pedersen/index.d.ts.map +1 -0
  47. package/dest/crypto/sync/pedersen/index.js +37 -0
  48. package/dest/crypto/sync/poseidon/index.d.ts +26 -0
  49. package/dest/crypto/sync/poseidon/index.d.ts.map +1 -0
  50. package/dest/crypto/sync/poseidon/index.js +57 -0
  51. package/dest/fields/fields.js +4 -4
  52. package/dest/fields/point.d.ts +1 -1
  53. package/dest/iterable/toArray.d.ts +1 -1
  54. package/dest/iterable/toArray.d.ts.map +1 -1
  55. package/dest/iterable/toArray.js +1 -1
  56. package/dest/json-rpc/client/safe_json_rpc_client.js +2 -2
  57. package/dest/json-rpc/convert.d.ts +1 -1
  58. package/dest/json-rpc/convert.d.ts.map +1 -1
  59. package/dest/json-rpc/convert.js +2 -2
  60. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  61. package/dest/json-rpc/server/safe_json_rpc_server.js +4 -2
  62. package/dest/message/index.d.ts +32 -0
  63. package/dest/message/index.d.ts.map +1 -0
  64. package/dest/message/index.js +23 -0
  65. package/dest/mutex/index.d.ts.map +1 -1
  66. package/dest/mutex/index.js +6 -4
  67. package/dest/promise/running-promise.d.ts +2 -1
  68. package/dest/promise/running-promise.d.ts.map +1 -1
  69. package/dest/promise/running-promise.js +6 -3
  70. package/dest/schemas/parse.d.ts +1 -1
  71. package/dest/schemas/parse.d.ts.map +1 -1
  72. package/dest/schemas/parse.js +2 -2
  73. package/dest/serialize/field_reader.d.ts +18 -0
  74. package/dest/serialize/field_reader.d.ts.map +1 -1
  75. package/dest/serialize/field_reader.js +32 -2
  76. package/dest/worker/browser/start_web_module.d.ts.map +1 -1
  77. package/dest/worker/browser/start_web_module.js +2 -1
  78. package/dest/worker/browser/web_worker.d.ts.map +1 -1
  79. package/dest/worker/browser/web_worker.js +2 -1
  80. package/dest/worker/node/node_worker.d.ts.map +1 -1
  81. package/dest/worker/node/node_worker.js +2 -1
  82. package/dest/worker/node/start_node_module.d.ts.map +1 -1
  83. package/dest/worker/node/start_node_module.js +2 -1
  84. package/package.json +5 -3
  85. package/src/abi/abi.ts +28 -8
  86. package/src/abi/event_selector.ts +2 -2
  87. package/src/abi/function_selector.ts +7 -27
  88. package/src/blob/blob.ts +294 -0
  89. package/src/blob/encoding.ts +98 -0
  90. package/src/blob/index.ts +5 -183
  91. package/src/blob/interface.ts +11 -0
  92. package/src/blob/mocks.ts +30 -0
  93. package/src/config/env_var.ts +7 -4
  94. package/src/config/index.ts +10 -12
  95. package/src/crypto/index.ts +0 -12
  96. package/src/crypto/keys/index.ts +5 -4
  97. package/src/crypto/pedersen/pedersen.wasm.ts +13 -14
  98. package/src/crypto/poseidon/index.ts +24 -39
  99. package/src/crypto/sync/index.ts +6 -0
  100. package/src/crypto/sync/pedersen/index.ts +45 -0
  101. package/src/crypto/sync/poseidon/index.ts +76 -0
  102. package/src/fields/fields.ts +3 -3
  103. package/src/iterable/toArray.ts +3 -1
  104. package/src/json-rpc/client/safe_json_rpc_client.ts +1 -1
  105. package/src/json-rpc/convert.ts +2 -2
  106. package/src/json-rpc/server/safe_json_rpc_server.ts +3 -1
  107. package/src/message/index.ts +43 -0
  108. package/src/mutex/index.ts +5 -4
  109. package/src/promise/running-promise.ts +4 -1
  110. package/src/schemas/parse.ts +2 -2
  111. package/src/serialize/field_reader.ts +34 -1
  112. package/src/worker/browser/start_web_module.ts +1 -0
  113. package/src/worker/browser/web_worker.ts +1 -0
  114. package/src/worker/node/node_worker.ts +1 -0
  115. package/src/worker/node/start_node_module.ts +1 -0
@@ -28,6 +28,25 @@ export class FieldReader {
28
28
  }
29
29
  return new FieldReader(fields);
30
30
  }
31
+ /**
32
+ * Skips the next n fields.
33
+ *
34
+ * @param n - The number of fields to skip.
35
+ */
36
+ skip(n) {
37
+ if (this.index + n > this.length) {
38
+ throw new Error('Not enough fields to be consumed.');
39
+ }
40
+ this.index += n;
41
+ }
42
+ /**
43
+ * Returns the current cursor position.
44
+ *
45
+ * @returns The current cursor position.
46
+ */
47
+ get cursor() {
48
+ return this.index;
49
+ }
31
50
  /**
32
51
  * Reads a single field from the array.
33
52
  *
@@ -39,6 +58,17 @@ export class FieldReader {
39
58
  }
40
59
  return this.fields[this.index++];
41
60
  }
61
+ /**
62
+ * Peeks at the next field without advancing the cursor.
63
+ *
64
+ * @returns A field.
65
+ */
66
+ peekField() {
67
+ if (this.index === this.length) {
68
+ throw new Error('Not enough fields to be consumed.');
69
+ }
70
+ return this.fields[this.index];
71
+ }
42
72
  /**
43
73
  * Reads a Fq from the array.
44
74
  *
@@ -120,7 +150,7 @@ export class FieldReader {
120
150
  * @returns A bool.
121
151
  */
122
152
  isFinished() {
123
- return this.index === this.length;
153
+ return this.index >= this.length;
124
154
  }
125
155
  }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRfcmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcmlhbGl6ZS9maWVsZF9yZWFkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBVyxNQUFNLHFCQUFxQixDQUFDO0FBR2xEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUd0QixZQUFvQixNQUFZLEVBQUUsTUFBTSxHQUFHLENBQUM7UUFBeEIsV0FBTSxHQUFOLE1BQU0sQ0FBTTtRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDNUIsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUEwQjtRQUMvQyxJQUFJLE1BQU0sWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUNsQyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVM7UUFDZCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxXQUFXO1FBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksT0FBTztRQUNaLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDL0IsSUFBSSxLQUFLLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksY0FBYyxDQUFtQixJQUFPO1FBQzdDLE1BQU0sTUFBTSxHQUFTLEVBQUUsQ0FBQztRQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsT0FBTyxNQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxTQUFTLENBQ2QsSUFBTyxFQUNQLGdCQUtDO1FBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRixPQUFPLE1BQXFCLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFVBQVUsQ0FBSSxZQUtwQjtRQUNDLE9BQU8sWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3BDLENBQUM7Q0FDRiJ9
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRfcmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcmlhbGl6ZS9maWVsZF9yZWFkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBVyxNQUFNLHFCQUFxQixDQUFDO0FBR2xEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUd0QixZQUFvQixNQUFZLEVBQUUsTUFBTSxHQUFHLENBQUM7UUFBeEIsV0FBTSxHQUFOLE1BQU0sQ0FBTTtRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDNUIsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUEwQjtRQUMvQyxJQUFJLE1BQU0sWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUNsQyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBQyxDQUFTO1FBQ25CLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7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
@@ -1 +1 @@
1
- {"version":3,"file":"start_web_module.d.ts","sourceRoot":"","sources":["../../../src/worker/browser/start_web_module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,QAehD"}
1
+ {"version":3,"file":"start_web_module.d.ts","sourceRoot":"","sources":["../../../src/worker/browser/start_web_module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,QAgBhD"}
@@ -16,7 +16,8 @@ export function startWebModule(module) {
16
16
  };
17
17
  const transportListener = new WorkerListener(self);
18
18
  const transportServer = new TransportServer(transportListener, dispatch);
19
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
19
20
  module.addLogger((...args) => transportServer.broadcast({ fn: 'emit', args: ['log', ...args] }));
20
21
  transportServer.start();
21
22
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfd2ViX21vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93b3JrZXIvYnJvd3Nlci9zdGFydF93ZWJfbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzdGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBa0I7SUFDL0MsTUFBTSxRQUFRLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBZSxFQUFFLEVBQUU7UUFDbkQsSUFBSSxFQUFFLEtBQUssbUJBQW1CLEVBQUUsQ0FBQztZQUMvQixlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUUsTUFBYyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsT0FBTyxNQUFPLE1BQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQztJQUNGLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQWMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdEYsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDMUIsQ0FBQyJ9
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfd2ViX21vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93b3JrZXIvYnJvd3Nlci9zdGFydF93ZWJfbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzdGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBa0I7SUFDL0MsTUFBTSxRQUFRLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBZSxFQUFFLEVBQUU7UUFDbkQsSUFBSSxFQUFFLEtBQUssbUJBQW1CLEVBQUUsQ0FBQztZQUMvQixlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUUsTUFBYyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsT0FBTyxNQUFPLE1BQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQztJQUNGLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQWMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdEYsa0VBQWtFO0lBQ2xFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEcsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzFCLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"web_worker.d.ts","sourceRoot":"","sources":["../../../src/worker/browser/web_worker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAY5G"}
1
+ {"version":3,"file":"web_worker.d.ts","sourceRoot":"","sources":["../../../src/worker/browser/web_worker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAa5G"}
@@ -13,6 +13,7 @@ export async function createWebWorker(url, initialMem, maxMem) {
13
13
  const transportClient = new TransportClient(transportConnect);
14
14
  await transportClient.open();
15
15
  const remoteModule = createDispatchProxy(WasmModule, transportClient);
16
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
16
17
  remoteModule.destroyWorker = async () => {
17
18
  await transportClient.request({ fn: '__destroyWorker__', args: [] });
18
19
  transportClient.close();
@@ -20,4 +21,4 @@ export async function createWebWorker(url, initialMem, maxMem) {
20
21
  await remoteModule.init(initialMem, maxMem);
21
22
  return remoteModule;
22
23
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViX3dvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93b3JrZXIvYnJvd3Nlci93ZWJfd29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsZUFBZSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25ILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdqRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWUsQ0FBQyxHQUFXLEVBQUUsVUFBbUIsRUFBRSxNQUFlO0lBQ3JGLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckQsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQWMsZ0JBQWdCLENBQUMsQ0FBQztJQUMzRSxNQUFNLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFlLENBQUM7SUFDcEYsWUFBWSxDQUFDLGFBQWEsR0FBRyxLQUFLLElBQUksRUFBRTtRQUN0QyxNQUFNLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckUsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUMsQ0FBQztJQUNGLE1BQU0sWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUMsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyJ9
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViX3dvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93b3JrZXIvYnJvd3Nlci93ZWJfd29ya2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsZUFBZSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25ILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdqRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGVBQWUsQ0FBQyxHQUFXLEVBQUUsVUFBbUIsRUFBRSxNQUFlO0lBQ3JGLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckQsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQWMsZ0JBQWdCLENBQUMsQ0FBQztJQUMzRSxNQUFNLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFlLENBQUM7SUFDcEYsa0VBQWtFO0lBQ2xFLFlBQVksQ0FBQyxhQUFhLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDdEMsTUFBTSxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDLENBQUM7SUFDRixNQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"node_worker.d.ts","sourceRoot":"","sources":["../../../src/worker/node/node_worker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAYlH"}
1
+ {"version":3,"file":"node_worker.d.ts","sourceRoot":"","sources":["../../../src/worker/node/node_worker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAalH"}
@@ -10,6 +10,7 @@ export async function createNodeWorker(filepath, initialMem, maxMem) {
10
10
  const transportClient = new TransportClient(transportConnect);
11
11
  await transportClient.open();
12
12
  const remoteModule = createDispatchProxy(WasmModule, transportClient);
13
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
13
14
  remoteModule.destroyWorker = async () => {
14
15
  await transportClient.request({ fn: '__destroyWorker__', args: [] });
15
16
  transportClient.close();
@@ -17,4 +18,4 @@ export async function createNodeWorker(filepath, initialMem, maxMem) {
17
18
  await remoteModule.init(initialMem, maxMem);
18
19
  return remoteModule;
19
20
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV93b3JrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd29ya2VyL25vZGUvbm9kZV93b3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBb0IsYUFBYSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd2RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsUUFBZ0IsRUFBRSxVQUFtQixFQUFFLE1BQWU7SUFDM0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRCxNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBYyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxlQUFlLENBQWUsQ0FBQztJQUNwRixZQUFZLENBQUMsYUFBYSxHQUFHLEtBQUssSUFBSSxFQUFFO1FBQ3RDLE1BQU0sZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRSxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDMUIsQ0FBQyxDQUFDO0lBQ0YsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDIn0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV93b3JrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd29ya2VyL25vZGUvbm9kZV93b3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBb0IsYUFBYSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd2RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsUUFBZ0IsRUFBRSxVQUFtQixFQUFFLE1BQWU7SUFDM0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRCxNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBYyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxlQUFlLENBQWUsQ0FBQztJQUNwRixrRUFBa0U7SUFDbEUsWUFBWSxDQUFDLGFBQWEsR0FBRyxLQUFLLElBQUksRUFBRTtRQUN0QyxNQUFNLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckUsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUMsQ0FBQztJQUNGLE1BQU0sWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUMsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"start_node_module.d.ts","sourceRoot":"","sources":["../../../src/worker/node/start_node_module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAM5D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,QAejD"}
1
+ {"version":3,"file":"start_node_module.d.ts","sourceRoot":"","sources":["../../../src/worker/node/start_node_module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAM5D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,QAgBjD"}
@@ -20,7 +20,8 @@ export function startNodeModule(module) {
20
20
  };
21
21
  const transportListener = new NodeListener();
22
22
  const transportServer = new TransportServer(transportListener, dispatch);
23
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
23
24
  module.addLogger((...args) => transportServer.broadcast({ fn: 'emit', args: ['log', ...args] }));
24
25
  transportServer.start();
25
26
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfbm9kZV9tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd29ya2VyL25vZGUvc3RhcnRfbm9kZV9tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVDLE9BQU8sRUFBb0IsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzNGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQWtCO0lBQ2hELE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQWUsRUFBRSxFQUFFO1FBQ25ELElBQUksRUFBRSxLQUFLLG1CQUFtQixFQUFFLENBQUM7WUFDL0IsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFFLE1BQWMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELE9BQU8sTUFBTyxNQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUM7SUFDRixNQUFNLGlCQUFpQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDN0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQWMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdEYsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDMUIsQ0FBQyJ9
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfbm9kZV9tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd29ya2VyL25vZGUvc3RhcnRfbm9kZV9tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVDLE9BQU8sRUFBb0IsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzNGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQWtCO0lBQ2hELE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQWUsRUFBRSxFQUFFO1FBQ25ELElBQUksRUFBRSxLQUFLLG1CQUFtQixFQUFFLENBQUM7WUFDL0IsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFFLE1BQWMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELE9BQU8sTUFBTyxNQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUM7SUFDRixNQUFNLGlCQUFpQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDN0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQWMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdEYsa0VBQWtFO0lBQ2xFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEcsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzFCLENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/foundation",
3
- "version": "0.72.1",
3
+ "version": "0.73.0",
4
4
  "type": "module",
5
5
  "main": "./dest/index.js",
6
6
  "types": "./dest/index.d.ts",
@@ -15,6 +15,7 @@
15
15
  "./collection": "./dest/collection/index.js",
16
16
  "./config": "./dest/config/index.js",
17
17
  "./crypto": "./dest/crypto/index.js",
18
+ "./crypto/sync": "./dest/crypto/sync/index.js",
18
19
  "./decorators": "./dest/decorators/index.js",
19
20
  "./error": "./dest/error/index.js",
20
21
  "./eth-address": "./dest/eth-address/index.js",
@@ -51,7 +52,8 @@
51
52
  "./array": "./dest/array/index.js",
52
53
  "./validation": "./dest/validation/index.js",
53
54
  "./promise": "./dest/promise/index.js",
54
- "./string": "./dest/string/index.js"
55
+ "./string": "./dest/string/index.js",
56
+ "./message": "./dest/message/index.js"
55
57
  },
56
58
  "scripts": {
57
59
  "build": "yarn clean && tsc -b",
@@ -102,7 +104,7 @@
102
104
  ]
103
105
  },
104
106
  "dependencies": {
105
- "@aztec/bb.js": "0.72.1",
107
+ "@aztec/bb.js": "0.73.0",
106
108
  "@koa/cors": "^5.0.0",
107
109
  "@noble/curves": "^1.2.0",
108
110
  "bn.js": "^5.2.1",
package/src/abi/abi.ts CHANGED
@@ -6,7 +6,7 @@ import { type Fr } from '../fields/fields.js';
6
6
  import { createLogger } from '../log/index.js';
7
7
  import { schemas } from '../schemas/schemas.js';
8
8
  import { type ZodFor } from '../schemas/types.js';
9
- import { type FunctionSelector } from './function_selector.js';
9
+ import { FunctionSelector } from './function_selector.js';
10
10
  import { type NoteSelector } from './note_selector.js';
11
11
 
12
12
  /** A basic value. */
@@ -380,16 +380,36 @@ export const ContractArtifactSchema: ZodFor<ContractArtifact> = z.object({
380
380
  fileMap: z.record(z.coerce.number(), z.object({ source: z.string(), path: z.string() })),
381
381
  });
382
382
 
383
+ export function getFunctionArtifactByName(artifact: ContractArtifact, functionName: string): FunctionArtifact {
384
+ const functionArtifact = artifact.functions.find(f => f.name === functionName);
385
+
386
+ if (!functionArtifact) {
387
+ throw new Error(`Unknown function ${functionName}`);
388
+ }
389
+
390
+ const debugMetadata = getFunctionDebugMetadata(artifact, functionArtifact);
391
+ return { ...functionArtifact, debug: debugMetadata };
392
+ }
393
+
383
394
  /** Gets a function artifact including debug metadata given its name or selector. */
384
- export function getFunctionArtifact(
395
+ export async function getFunctionArtifact(
385
396
  artifact: ContractArtifact,
386
397
  functionNameOrSelector: string | FunctionSelector,
387
- ): FunctionArtifact {
388
- const functionArtifact = artifact.functions.find(f =>
389
- typeof functionNameOrSelector === 'string'
390
- ? f.name === functionNameOrSelector
391
- : functionNameOrSelector.equals(f.name, f.parameters),
392
- );
398
+ ): Promise<FunctionArtifact> {
399
+ let functionArtifact;
400
+ if (typeof functionNameOrSelector === 'string') {
401
+ functionArtifact = artifact.functions.find(f => f.name === functionNameOrSelector);
402
+ } else {
403
+ const functionsAndSelectors = await Promise.all(
404
+ artifact.functions.map(async fn => ({
405
+ fn,
406
+ selector: await FunctionSelector.fromNameAndParameters(fn.name, fn.parameters),
407
+ })),
408
+ );
409
+ functionArtifact = functionsAndSelectors.find(fnAndSelector =>
410
+ functionNameOrSelector.equals(fnAndSelector.selector),
411
+ )?.fn;
412
+ }
393
413
  if (!functionArtifact) {
394
414
  throw new Error(`Unknown function ${functionNameOrSelector}`);
395
415
  }
@@ -40,12 +40,12 @@ export class EventSelector extends Selector {
40
40
  * @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
41
41
  * @returns selector.
42
42
  */
43
- static fromSignature(signature: string) {
43
+ static async fromSignature(signature: string) {
44
44
  // throw if signature contains whitespace
45
45
  if (/\s/.test(signature)) {
46
46
  throw new Error('Signature cannot contain whitespace');
47
47
  }
48
- const hash = poseidon2HashBytes(Buffer.from(signature));
48
+ const hash = await poseidon2HashBytes(Buffer.from(signature));
49
49
  // We take the last Selector.SIZE big endian bytes
50
50
  const bytes = hash.toBuffer().slice(-Selector.SIZE);
51
51
  return EventSelector.fromBuffer(bytes);
@@ -19,26 +19,6 @@ export interface FunctionSelector {
19
19
 
20
20
  /** A function selector is the first 4 bytes of the hash of a function signature. */
21
21
  export class FunctionSelector extends Selector {
22
- /**
23
- * Checks if this function selector is equal to another.
24
- * @returns True if the function selectors are equal.
25
- */
26
- override equals(fn: { name: string; parameters: ABIParameter[] }): boolean;
27
- override equals(otherName: string, otherParams: ABIParameter[]): boolean;
28
- override equals(other: FunctionSelector): boolean;
29
- override equals(
30
- other: FunctionSelector | string | { name: string; parameters: ABIParameter[] },
31
- otherParams?: ABIParameter[],
32
- ): boolean {
33
- if (typeof other === 'string') {
34
- return this.equals(FunctionSelector.fromNameAndParameters(other, otherParams!));
35
- } else if (typeof other === 'object' && 'name' in other) {
36
- return this.equals(FunctionSelector.fromNameAndParameters(other.name, other.parameters));
37
- } else {
38
- return this.value === other.value;
39
- }
40
- }
41
-
42
22
  /**
43
23
  * Deserializes from a buffer or reader, corresponding to a write in cpp.
44
24
  * @param buffer - Buffer or BufferReader to read from.
@@ -69,12 +49,12 @@ export class FunctionSelector extends Selector {
69
49
  * @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
70
50
  * @returns selector.
71
51
  */
72
- static fromSignature(signature: string) {
52
+ static async fromSignature(signature: string) {
73
53
  // throw if signature contains whitespace
74
54
  if (/\s/.test(signature)) {
75
55
  throw new Error('Signature cannot contain whitespace');
76
56
  }
77
- const hash = poseidon2HashBytes(Buffer.from(signature));
57
+ const hash = await poseidon2HashBytes(Buffer.from(signature));
78
58
  // We take the last Selector.SIZE big endian bytes
79
59
  const bytes = hash.toBuffer().slice(-Selector.SIZE);
80
60
  return FunctionSelector.fromBuffer(bytes);
@@ -109,16 +89,16 @@ export class FunctionSelector extends Selector {
109
89
  * @param parameters - An array of ABIParameter objects, each containing the type information of a function parameter.
110
90
  * @returns A Buffer containing the 4-byte selector.
111
91
  */
112
- static fromNameAndParameters(args: { name: string; parameters: ABIParameter[] }): FunctionSelector;
113
- static fromNameAndParameters(name: string, parameters: ABIParameter[]): FunctionSelector;
114
- static fromNameAndParameters(
92
+ static fromNameAndParameters(args: { name: string; parameters: ABIParameter[] }): Promise<FunctionSelector>;
93
+ static fromNameAndParameters(name: string, parameters: ABIParameter[]): Promise<FunctionSelector>;
94
+ static async fromNameAndParameters(
115
95
  nameOrArgs: string | { name: string; parameters: ABIParameter[] },
116
96
  maybeParameters?: ABIParameter[],
117
- ): FunctionSelector {
97
+ ): Promise<FunctionSelector> {
118
98
  const { name, parameters } =
119
99
  typeof nameOrArgs === 'string' ? { name: nameOrArgs, parameters: maybeParameters! } : nameOrArgs;
120
100
  const signature = decodeFunctionSignature(name, parameters);
121
- const selector = this.fromSignature(signature);
101
+ const selector = await this.fromSignature(signature);
122
102
  // If using the debug logger here it kill the typing in the `server_world_state_synchronizer` and jest tests.
123
103
  // console.log(`selector for ${signature} is ${selector}`);
124
104
  return selector;
@@ -0,0 +1,294 @@
1
+ // Importing directly from 'c-kzg' does not work, ignoring import/no-named-as-default-member err:
2
+ import cKzg from 'c-kzg';
3
+ import type { Blob as BlobBuffer } from 'c-kzg';
4
+
5
+ import { poseidon2Hash, sha256 } from '../crypto/index.js';
6
+ import { Fr } from '../fields/index.js';
7
+ import { BufferReader, serializeToBuffer } from '../serialize/index.js';
8
+ import { deserializeEncodedBlobFields, extractBlobFieldsFromBuffer } from './encoding.js';
9
+ import { type BlobJson } from './interface.js';
10
+
11
+ /* eslint-disable import/no-named-as-default-member */
12
+ const { BYTES_PER_BLOB, FIELD_ELEMENTS_PER_BLOB, blobToKzgCommitment, computeKzgProof, verifyKzgProof } = cKzg;
13
+
14
+ // The prefix to the EVM blobHash, defined here: https://eips.ethereum.org/EIPS/eip-4844#specification
15
+ export const VERSIONED_HASH_VERSION_KZG = 0x01;
16
+
17
+ /**
18
+ * A class to create, manage, and prove EVM blobs.
19
+ */
20
+ export class Blob {
21
+ constructor(
22
+ /** The blob to be broadcast on L1 in bytes form. */
23
+ public readonly data: BlobBuffer,
24
+ /** The hash of all tx effects inside the blob. Used in generating the challenge z and proving that we have included all required effects. */
25
+ public readonly fieldsHash: Fr,
26
+ /** Challenge point z (= H(H(tx_effects), kzgCommmitment). Used such that p(z) = y. */
27
+ public readonly challengeZ: Fr,
28
+ /** Evaluation y = p(z), where p() is the blob polynomial. BLS12 field element, rep. as BigNum in nr, bigint in ts. */
29
+ public readonly evaluationY: Buffer,
30
+ /** Commitment to the blob C. Used in compressed BLS12 point format (48 bytes). */
31
+ public readonly commitment: Buffer,
32
+ /** KZG opening proof for y = p(z). The commitment to quotient polynomial Q, used in compressed BLS12 point format (48 bytes). */
33
+ public readonly proof: Buffer,
34
+ ) {}
35
+
36
+ /**
37
+ * The encoded version of the blob will determine the end of the blob based on the transaction encoding.
38
+ * This is required when the fieldsHash of a blob will contain trailing zeros.
39
+ *
40
+ * See `./encoding.ts` for more details.
41
+ *
42
+ * This method is used to create a Blob from a buffer.
43
+ * @param blob - The buffer to create the Blob from.
44
+ * @param multiBlobFieldsHash - The fields hash to use for the Blob.
45
+ * @returns A Blob created from the buffer.
46
+ */
47
+ static fromEncodedBlobBuffer(blob: BlobBuffer, multiBlobFieldsHash?: Fr): Promise<Blob> {
48
+ const fields: Fr[] = deserializeEncodedBlobFields(blob);
49
+ return Blob.fromFields(fields, multiBlobFieldsHash);
50
+ }
51
+
52
+ /**
53
+ * Create a Blob from an array of fields.
54
+ *
55
+ * @param fields - The array of fields to create the Blob from.
56
+ * @param multiBlobFieldsHash - The fields hash to use for the Blob.
57
+ * @returns A Blob created from the array of fields.
58
+ */
59
+ static async fromFields(fields: Fr[], multiBlobFieldsHash?: Fr): Promise<Blob> {
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
+
66
+ const data = Buffer.concat([serializeToBuffer(fields)], BYTES_PER_BLOB);
67
+
68
+ // This matches the output of SpongeBlob.squeeze() in the blob circuit
69
+ const fieldsHash = multiBlobFieldsHash ? multiBlobFieldsHash : await poseidon2Hash(fields);
70
+ const commitment = Buffer.from(blobToKzgCommitment(data));
71
+ const challengeZ = await poseidon2Hash([fieldsHash, ...commitmentToFields(commitment)]);
72
+ const res = computeKzgProof(data, challengeZ.toBuffer());
73
+ if (!verifyKzgProof(commitment, challengeZ.toBuffer(), res[1], res[0])) {
74
+ throw new Error(`KZG proof did not verify.`);
75
+ }
76
+ const proof = Buffer.from(res[0]);
77
+ const evaluationY = Buffer.from(res[1]);
78
+
79
+ return new Blob(data, fieldsHash, challengeZ, evaluationY, commitment, proof);
80
+ }
81
+
82
+ /**
83
+ * Create a Blob from a JSON object.
84
+ *
85
+ * Blobs will be in this form when requested from the blob sink, or from
86
+ * the beacon chain via `getBlobSidecars`
87
+ * https://ethereum.github.io/beacon-APIs/?urls.primaryName=dev#/Beacon/getBlobSidecars
88
+ *
89
+ * @dev WARNING: by default json deals with encoded buffers
90
+ *
91
+ * @param json - The JSON object to create the Blob from.
92
+ * @returns A Blob created from the JSON object.
93
+ */
94
+ static async fromJson(json: BlobJson): Promise<Blob> {
95
+ const blobBuffer = Buffer.from(json.blob.slice(2), 'hex');
96
+
97
+ const blob = await Blob.fromEncodedBlobBuffer(blobBuffer);
98
+
99
+ if (blob.commitment.toString('hex') !== json.kzg_commitment.slice(2)) {
100
+ throw new Error('KZG commitment does not match');
101
+ }
102
+
103
+ // We do not check the proof, as it will be different if the challenge is shared
104
+ // across multiple blobs
105
+
106
+ return blob;
107
+ }
108
+
109
+ /**
110
+ * Get the JSON representation of the blob.
111
+ *
112
+ * @dev WARNING: by default json deals with encoded buffers
113
+ * @param index - optional - The index of the blob in the block.
114
+ * @returns The JSON representation of the blob.
115
+ */
116
+ toJson(index?: number): BlobJson {
117
+ return {
118
+ blob: `0x${Buffer.from(this.data).toString('hex')}`,
119
+ index,
120
+ // eslint-disable-next-line camelcase
121
+ kzg_commitment: `0x${this.commitment.toString('hex')}`,
122
+ // eslint-disable-next-line camelcase
123
+ kzg_proof: `0x${this.proof.toString('hex')}`,
124
+ };
125
+ }
126
+
127
+ /**
128
+ * Get the fields from the blob.
129
+ *
130
+ * @dev WARNING: this method does not take into account trailing zeros
131
+ *
132
+ * @returns The fields from the blob.
133
+ */
134
+ toFields(): Fr[] {
135
+ return extractBlobFieldsFromBuffer(this.data);
136
+ }
137
+
138
+ /**
139
+ * Get the encoded fields from the blob.
140
+ *
141
+ * @dev This method takes into account trailing zeros
142
+ *
143
+ * @returns The encoded fields from the blob.
144
+ */
145
+ toEncodedFields(): Fr[] {
146
+ return deserializeEncodedBlobFields(this.data);
147
+ }
148
+
149
+ /**
150
+ * Get the commitment fields from the blob.
151
+ *
152
+ * The 48-byte commitment is encoded into two field elements:
153
+ * +------------------+------------------+
154
+ * | Field Element 1 | Field Element 2 |
155
+ * | [bytes 0-31] | [bytes 32-47] |
156
+ * +------------------+------------------+
157
+ * | 32 bytes | 16 bytes |
158
+ * +------------------+------------------+
159
+ * @returns The commitment fields from the blob.
160
+ */
161
+ commitmentToFields(): [Fr, Fr] {
162
+ return commitmentToFields(this.commitment);
163
+ }
164
+
165
+ // Returns ethereum's versioned blob hash, following kzg_to_versioned_hash: https://eips.ethereum.org/EIPS/eip-4844#helpers
166
+ getEthVersionedBlobHash(): Buffer {
167
+ const hash = sha256(this.commitment);
168
+ hash[0] = VERSIONED_HASH_VERSION_KZG;
169
+ return hash;
170
+ }
171
+
172
+ static getEthVersionedBlobHash(commitment: Buffer): Buffer {
173
+ const hash = sha256(commitment);
174
+ hash[0] = VERSIONED_HASH_VERSION_KZG;
175
+ return hash;
176
+ }
177
+
178
+ /**
179
+ * Get the buffer representation of the ENTIRE blob.
180
+ *
181
+ * @dev WARNING: this buffer contains all metadata aswell as the data itself
182
+ *
183
+ * @returns The buffer representation of the blob.
184
+ */
185
+ toBuffer(): Buffer {
186
+ return Buffer.from(
187
+ serializeToBuffer(
188
+ this.data.length,
189
+ this.data,
190
+ this.fieldsHash,
191
+ this.challengeZ,
192
+ this.evaluationY.length,
193
+ this.evaluationY,
194
+ this.commitment.length,
195
+ this.commitment,
196
+ this.proof.length,
197
+ this.proof,
198
+ ),
199
+ );
200
+ }
201
+
202
+ /**
203
+ * Create a Blob from a buffer.
204
+ *
205
+ * @dev WARNING: this method contains all metadata aswell as the data itself
206
+ *
207
+ * @param buf - The buffer to create the Blob from.
208
+ * @returns A Blob created from the buffer.
209
+ */
210
+ static fromBuffer(buf: Buffer | BufferReader): Blob {
211
+ const reader = BufferReader.asReader(buf);
212
+ return new Blob(
213
+ reader.readUint8Array(),
214
+ reader.readObject(Fr),
215
+ reader.readObject(Fr),
216
+ reader.readBuffer(),
217
+ reader.readBuffer(),
218
+ reader.readBuffer(),
219
+ );
220
+ }
221
+
222
+ /**
223
+ * Get the size of the blob in bytes
224
+ */
225
+ getSize() {
226
+ return this.data.length;
227
+ }
228
+
229
+ /**
230
+ * Returns a proof of opening of the blob to verify on L1 using the point evaluation precompile:
231
+ *
232
+ * input[:32] - versioned_hash
233
+ * input[32:64] - z
234
+ * input[64:96] - y
235
+ * input[96:144] - commitment C
236
+ * input[144:192] - proof (a commitment to the quotient polynomial q(X))
237
+ *
238
+ * See https://eips.ethereum.org/EIPS/eip-4844#point-evaluation-precompile
239
+ */
240
+ getEthBlobEvaluationInputs(): `0x${string}` {
241
+ const buf = Buffer.concat([
242
+ this.getEthVersionedBlobHash(),
243
+ this.challengeZ.toBuffer(),
244
+ this.evaluationY,
245
+ this.commitment,
246
+ this.proof,
247
+ ]);
248
+ return `0x${buf.toString('hex')}`;
249
+ }
250
+
251
+ static getEthBlobEvaluationInputs(blobs: Blob[]): `0x${string}` {
252
+ let buf = Buffer.alloc(0);
253
+ blobs.forEach(blob => {
254
+ buf = Buffer.concat([
255
+ buf,
256
+ blob.getEthVersionedBlobHash(),
257
+ blob.challengeZ.toBuffer(),
258
+ blob.evaluationY,
259
+ blob.commitment,
260
+ blob.proof,
261
+ ]);
262
+ });
263
+ // For multiple blobs, we prefix the number of blobs:
264
+ const lenBuf = Buffer.alloc(1);
265
+ lenBuf.writeUint8(blobs.length);
266
+ buf = Buffer.concat([lenBuf, buf]);
267
+ return `0x${buf.toString('hex')}`;
268
+ }
269
+
270
+ static getViemKzgInstance() {
271
+ return {
272
+ blobToKzgCommitment: cKzg.blobToKzgCommitment,
273
+ computeBlobKzgProof: cKzg.computeBlobKzgProof,
274
+ };
275
+ }
276
+
277
+ // Returns as many blobs as we require to broadcast the given fields
278
+ // Assumes we share the fields hash between all blobs
279
+ static async getBlobs(fields: Fr[]): Promise<Blob[]> {
280
+ const numBlobs = Math.max(Math.ceil(fields.length / FIELD_ELEMENTS_PER_BLOB), 1);
281
+ const multiBlobFieldsHash = await poseidon2Hash(fields);
282
+ const res = [];
283
+ for (let i = 0; i < numBlobs; i++) {
284
+ const end = fields.length < (i + 1) * FIELD_ELEMENTS_PER_BLOB ? fields.length : (i + 1) * FIELD_ELEMENTS_PER_BLOB;
285
+ res.push(await Blob.fromFields(fields.slice(i * FIELD_ELEMENTS_PER_BLOB, end), multiBlobFieldsHash));
286
+ }
287
+ return res;
288
+ }
289
+ }
290
+
291
+ // 48 bytes encoded in fields as [Fr, Fr] = [0->31, 31->48]
292
+ function commitmentToFields(commitment: Buffer): [Fr, Fr] {
293
+ return [new Fr(commitment.subarray(0, 31)), new Fr(commitment.subarray(31, 48))];
294
+ }