@aztec/foundation 0.0.1-commit.a89ec08 → 0.0.1-commit.aa0c64f

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 (273) hide show
  1. package/dest/bigint-buffer/index.d.ts +1 -1
  2. package/dest/bigint-buffer/index.d.ts.map +1 -1
  3. package/dest/bigint-buffer/index.js +6 -1
  4. package/dest/branded-types/block_number.d.ts +3 -3
  5. package/dest/branded-types/block_number.d.ts.map +1 -1
  6. package/dest/branded-types/block_number.js +15 -4
  7. package/dest/branded-types/buffer32_hash.d.ts +27 -0
  8. package/dest/branded-types/buffer32_hash.d.ts.map +1 -0
  9. package/dest/branded-types/buffer32_hash.js +12 -0
  10. package/dest/branded-types/checkpoint_number.d.ts +9 -3
  11. package/dest/branded-types/checkpoint_number.d.ts.map +1 -1
  12. package/dest/branded-types/checkpoint_number.js +11 -0
  13. package/dest/branded-types/epoch.d.ts +2 -2
  14. package/dest/branded-types/epoch.d.ts.map +1 -1
  15. package/dest/branded-types/index.d.ts +2 -1
  16. package/dest/branded-types/index.d.ts.map +1 -1
  17. package/dest/branded-types/index.js +1 -0
  18. package/dest/branded-types/index_within_checkpoint.d.ts +2 -2
  19. package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -1
  20. package/dest/branded-types/slot.d.ts +2 -2
  21. package/dest/branded-types/slot.d.ts.map +1 -1
  22. package/dest/buffer/buffer16.d.ts +3 -1
  23. package/dest/buffer/buffer16.d.ts.map +1 -1
  24. package/dest/buffer/buffer32.d.ts +28 -61
  25. package/dest/buffer/buffer32.d.ts.map +1 -1
  26. package/dest/buffer/buffer32.js +29 -63
  27. package/dest/collection/array.d.ts +9 -1
  28. package/dest/collection/array.d.ts.map +1 -1
  29. package/dest/collection/array.js +18 -0
  30. package/dest/collection/index.d.ts +3 -1
  31. package/dest/collection/index.d.ts.map +1 -1
  32. package/dest/collection/index.js +2 -0
  33. package/dest/collection/lru_map.d.ts +41 -0
  34. package/dest/collection/lru_map.d.ts.map +1 -0
  35. package/dest/collection/lru_map.js +119 -0
  36. package/dest/collection/lru_set.d.ts +35 -0
  37. package/dest/collection/lru_set.d.ts.map +1 -0
  38. package/dest/collection/lru_set.js +95 -0
  39. package/dest/committable/committable.js +1 -1
  40. package/dest/config/env_var.d.ts +2 -2
  41. package/dest/config/env_var.d.ts.map +1 -1
  42. package/dest/config/index.d.ts +67 -37
  43. package/dest/config/index.d.ts.map +1 -1
  44. package/dest/config/index.js +72 -71
  45. package/dest/config/network_config.d.ts +11 -55
  46. package/dest/config/network_config.d.ts.map +1 -1
  47. package/dest/config/network_config.js +2 -2
  48. package/dest/config/network_name.d.ts +2 -2
  49. package/dest/config/network_name.d.ts.map +1 -1
  50. package/dest/config/network_name.js +3 -3
  51. package/dest/config/secret_value.d.ts +2 -2
  52. package/dest/config/secret_value.d.ts.map +1 -1
  53. package/dest/crypto/aes128/index.d.ts +2 -1
  54. package/dest/crypto/aes128/index.d.ts.map +1 -1
  55. package/dest/crypto/aes128/index.js +11 -2
  56. package/dest/crypto/bls/bn254_keystore.d.ts +10 -177
  57. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -1
  58. package/dest/crypto/bls/bn254_keystore.js +22 -34
  59. package/dest/crypto/keys/index.d.ts +3 -2
  60. package/dest/crypto/keys/index.d.ts.map +1 -1
  61. package/dest/crypto/keys/index.js +30 -6
  62. package/dest/crypto/schnorr/index.d.ts +8 -7
  63. package/dest/crypto/schnorr/index.d.ts.map +1 -1
  64. package/dest/crypto/schnorr/index.js +6 -6
  65. package/dest/crypto/schnorr/signature.d.ts +9 -29
  66. package/dest/crypto/schnorr/signature.d.ts.map +1 -1
  67. package/dest/crypto/schnorr/signature.js +20 -36
  68. package/dest/curves/bls12/field.d.ts +3 -3
  69. package/dest/curves/bls12/field.d.ts.map +1 -1
  70. package/dest/curves/bls12/field.js +0 -5
  71. package/dest/curves/bls12/point.d.ts +2 -2
  72. package/dest/curves/bls12/point.d.ts.map +1 -1
  73. package/dest/curves/bn254/field.d.ts +23 -19
  74. package/dest/curves/bn254/field.d.ts.map +1 -1
  75. package/dest/curves/bn254/field.js +23 -17
  76. package/dest/curves/grumpkin/point.d.ts +15 -29
  77. package/dest/curves/grumpkin/point.d.ts.map +1 -1
  78. package/dest/curves/grumpkin/point.js +31 -48
  79. package/dest/eth-address/index.d.ts +2 -2
  80. package/dest/eth-address/index.d.ts.map +1 -1
  81. package/dest/eth-address/index.js +0 -3
  82. package/dest/eth-signature/eth_signature.d.ts +2 -2
  83. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  84. package/dest/fifo/fifo_frame_reader.d.ts +41 -0
  85. package/dest/fifo/fifo_frame_reader.d.ts.map +1 -0
  86. package/dest/fifo/fifo_frame_reader.js +91 -0
  87. package/dest/fifo/index.d.ts +2 -0
  88. package/dest/fifo/index.d.ts.map +1 -0
  89. package/dest/fifo/index.js +1 -0
  90. package/dest/fifo_set/fifo_set.d.ts +15 -0
  91. package/dest/fifo_set/fifo_set.d.ts.map +1 -0
  92. package/dest/fifo_set/fifo_set.js +39 -0
  93. package/dest/fifo_set/index.d.ts +2 -0
  94. package/dest/fifo_set/index.d.ts.map +1 -0
  95. package/dest/fifo_set/index.js +1 -0
  96. package/dest/jest/setup.js +24 -0
  97. package/dest/json-rpc/client/fetch.d.ts +1 -1
  98. package/dest/json-rpc/client/fetch.d.ts.map +1 -1
  99. package/dest/json-rpc/client/fetch.js +4 -3
  100. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +1 -1
  101. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  102. package/dest/json-rpc/client/safe_json_rpc_client.js +5 -4
  103. package/dest/json-rpc/client/undici.d.ts +1 -1
  104. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  105. package/dest/json-rpc/client/undici.js +5 -3
  106. package/dest/json-rpc/fixtures/test_state.d.ts +4 -8
  107. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
  108. package/dest/json-rpc/fixtures/test_state.js +57 -17
  109. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +8 -3
  110. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  111. package/dest/json-rpc/server/safe_json_rpc_server.js +27 -13
  112. package/dest/log/pino-logger.d.ts +1 -1
  113. package/dest/log/pino-logger.d.ts.map +1 -1
  114. package/dest/log/pino-logger.js +17 -2
  115. package/dest/noir/noir_package_config.d.ts +19 -104
  116. package/dest/noir/noir_package_config.d.ts.map +1 -1
  117. package/dest/noir/noir_package_config.js +1 -1
  118. package/dest/promise/running-promise.d.ts +5 -4
  119. package/dest/promise/running-promise.d.ts.map +1 -1
  120. package/dest/promise/running-promise.js +7 -3
  121. package/dest/queue/batch_queue.d.ts +1 -1
  122. package/dest/queue/batch_queue.d.ts.map +1 -1
  123. package/dest/queue/batch_queue.js +1 -0
  124. package/dest/retry/index.d.ts +31 -3
  125. package/dest/retry/index.d.ts.map +1 -1
  126. package/dest/retry/index.js +44 -2
  127. package/dest/schemas/api.d.ts +11 -9
  128. package/dest/schemas/api.d.ts.map +1 -1
  129. package/dest/schemas/api.js +7 -1
  130. package/dest/schemas/parse.d.ts +4 -4
  131. package/dest/schemas/parse.d.ts.map +1 -1
  132. package/dest/schemas/parse.js +6 -5
  133. package/dest/schemas/schemas.d.ts +15 -15
  134. package/dest/schemas/types.d.ts +3 -3
  135. package/dest/schemas/types.d.ts.map +1 -1
  136. package/dest/schemas/utils.d.ts +7 -11
  137. package/dest/schemas/utils.d.ts.map +1 -1
  138. package/dest/schemas/utils.js +2 -18
  139. package/dest/serialize/buffer_reader.d.ts +7 -20
  140. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  141. package/dest/serialize/buffer_reader.js +5 -18
  142. package/dest/serialize/buffer_sink.d.ts +134 -0
  143. package/dest/serialize/buffer_sink.d.ts.map +1 -0
  144. package/dest/serialize/buffer_sink.js +297 -0
  145. package/dest/serialize/field_reader.d.ts +5 -13
  146. package/dest/serialize/field_reader.d.ts.map +1 -1
  147. package/dest/serialize/field_reader.js +0 -13
  148. package/dest/serialize/index.d.ts +2 -1
  149. package/dest/serialize/index.d.ts.map +1 -1
  150. package/dest/serialize/index.js +1 -0
  151. package/dest/sleep/index.d.ts +2 -1
  152. package/dest/sleep/index.d.ts.map +1 -1
  153. package/dest/sleep/index.js +10 -1
  154. package/dest/string/index.js +1 -1
  155. package/dest/testing/files/index.d.ts +2 -3
  156. package/dest/testing/files/index.d.ts.map +1 -1
  157. package/dest/testing/files/index.js +1 -2
  158. package/dest/timer/date.d.ts +3 -1
  159. package/dest/timer/date.d.ts.map +1 -1
  160. package/dest/timer/date.js +4 -0
  161. package/dest/timer/index.d.ts +2 -2
  162. package/dest/timer/index.d.ts.map +1 -1
  163. package/dest/timer/index.js +1 -1
  164. package/dest/timer/timeout.d.ts +3 -1
  165. package/dest/timer/timeout.d.ts.map +1 -1
  166. package/dest/timer/timeout.js +26 -0
  167. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +11 -2
  168. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
  169. package/dest/transport/index.d.ts +1 -2
  170. package/dest/transport/index.d.ts.map +1 -1
  171. package/dest/transport/index.js +0 -1
  172. package/dest/trees/balanced_merkle_tree_root.d.ts +2 -3
  173. package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -1
  174. package/dest/trees/balanced_merkle_tree_root.js +2 -3
  175. package/dest/trees/hasher.d.ts +3 -2
  176. package/dest/trees/hasher.d.ts.map +1 -1
  177. package/dest/trees/hasher.js +5 -5
  178. package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
  179. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
  180. package/dest/trees/indexed_merkle_tree_calculator.js +5 -1
  181. package/dest/trees/membership_witness.d.ts +2 -6
  182. package/dest/trees/membership_witness.d.ts.map +1 -1
  183. package/dest/trees/membership_witness.js +0 -9
  184. package/dest/trees/merkle_tree_calculator.d.ts +4 -2
  185. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  186. package/dest/trees/merkle_tree_calculator.js +1 -5
  187. package/dest/trees/sibling_path.d.ts +5 -4
  188. package/dest/trees/sibling_path.d.ts.map +1 -1
  189. package/dest/trees/sibling_path.js +10 -8
  190. package/dest/trees/unbalanced_merkle_tree_root.d.ts +2 -3
  191. package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -1
  192. package/dest/trees/unbalanced_merkle_tree_root.js +2 -3
  193. package/dest/types/index.d.ts +23 -1
  194. package/dest/types/index.d.ts.map +1 -1
  195. package/dest/types/index.js +15 -0
  196. package/package.json +6 -4
  197. package/src/bigint-buffer/index.ts +6 -1
  198. package/src/branded-types/block_number.ts +20 -2
  199. package/src/branded-types/buffer32_hash.ts +38 -0
  200. package/src/branded-types/checkpoint_number.ts +16 -1
  201. package/src/branded-types/epoch.ts +1 -1
  202. package/src/branded-types/index.ts +1 -0
  203. package/src/branded-types/index_within_checkpoint.ts +1 -1
  204. package/src/branded-types/slot.ts +1 -1
  205. package/src/buffer/buffer16.ts +3 -0
  206. package/src/buffer/buffer32.ts +39 -68
  207. package/src/collection/array.ts +20 -0
  208. package/src/collection/index.ts +2 -0
  209. package/src/collection/lru_map.ts +143 -0
  210. package/src/collection/lru_set.ts +115 -0
  211. package/src/committable/committable.ts +1 -1
  212. package/src/config/env_var.ts +51 -23
  213. package/src/config/index.ts +143 -122
  214. package/src/config/network_config.ts +1 -1
  215. package/src/config/network_name.ts +6 -6
  216. package/src/config/secret_value.ts +1 -1
  217. package/src/crypto/aes128/index.ts +11 -2
  218. package/src/crypto/bls/bn254_keystore.ts +33 -43
  219. package/src/crypto/keys/index.ts +20 -4
  220. package/src/crypto/schnorr/index.ts +9 -8
  221. package/src/crypto/schnorr/signature.ts +17 -46
  222. package/src/curves/bls12/field.ts +0 -7
  223. package/src/curves/bn254/field.ts +35 -34
  224. package/src/curves/grumpkin/point.ts +24 -44
  225. package/src/eth-address/index.ts +0 -4
  226. package/src/fifo/fifo_frame_reader.ts +113 -0
  227. package/src/fifo/index.ts +1 -0
  228. package/src/fifo_set/fifo_set.ts +52 -0
  229. package/src/fifo_set/index.ts +1 -0
  230. package/src/jest/setup.mjs +27 -0
  231. package/src/json-rpc/client/fetch.ts +4 -3
  232. package/src/json-rpc/client/safe_json_rpc_client.ts +5 -4
  233. package/src/json-rpc/client/undici.ts +5 -3
  234. package/src/json-rpc/fixtures/test_state.ts +10 -10
  235. package/src/json-rpc/server/safe_json_rpc_server.ts +31 -13
  236. package/src/log/pino-logger.ts +19 -2
  237. package/src/noir/noir_package_config.ts +32 -20
  238. package/src/promise/running-promise.ts +8 -5
  239. package/src/queue/batch_queue.ts +1 -0
  240. package/src/retry/index.ts +66 -4
  241. package/src/schemas/api.ts +21 -24
  242. package/src/schemas/parse.ts +9 -6
  243. package/src/schemas/schemas.ts +4 -4
  244. package/src/schemas/types.ts +2 -2
  245. package/src/schemas/utils.ts +4 -38
  246. package/src/serialize/buffer_reader.ts +6 -29
  247. package/src/serialize/buffer_sink.ts +350 -0
  248. package/src/serialize/field_reader.ts +4 -22
  249. package/src/serialize/index.ts +1 -0
  250. package/src/sleep/index.ts +10 -1
  251. package/src/string/index.ts +1 -1
  252. package/src/testing/files/index.ts +1 -2
  253. package/src/timer/date.ts +6 -0
  254. package/src/timer/index.ts +1 -1
  255. package/src/timer/timeout.ts +31 -0
  256. package/src/transport/dispatch/create_dispatch_proxy.ts +11 -1
  257. package/src/transport/index.ts +0 -1
  258. package/src/trees/balanced_merkle_tree_root.ts +2 -5
  259. package/src/trees/hasher.ts +6 -3
  260. package/src/trees/indexed_merkle_tree_calculator.ts +5 -1
  261. package/src/trees/membership_witness.ts +2 -10
  262. package/src/trees/merkle_tree_calculator.ts +4 -10
  263. package/src/trees/sibling_path.ts +11 -6
  264. package/src/trees/unbalanced_merkle_tree_root.ts +2 -5
  265. package/src/types/index.ts +47 -0
  266. package/dest/crypto/serialize.d.ts +0 -51
  267. package/dest/crypto/serialize.d.ts.map +0 -1
  268. package/dest/crypto/serialize.js +0 -68
  269. package/dest/transport/dispatch/create_dispatch_fn.d.ts +0 -25
  270. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +0 -1
  271. package/dest/transport/dispatch/create_dispatch_fn.js +0 -17
  272. package/src/crypto/serialize.ts +0 -85
  273. package/src/transport/dispatch/create_dispatch_fn.ts +0 -35
@@ -1,5 +1,4 @@
1
1
  import { toBigIntBE } from '../../bigint-buffer/index.js';
2
- import { poseidon2Hash } from '../../crypto/poseidon/index.js';
3
2
  import { randomBoolean } from '../../crypto/random/index.js';
4
3
  import { hexSchemaFor } from '../../schemas/utils.js';
5
4
  import { BufferReader, FieldReader, serializeToBuffer } from '../../serialize/index.js';
@@ -13,23 +12,22 @@ import { Fr } from '../bn254/field.js';
13
12
  */ export class Point {
14
13
  x;
15
14
  y;
16
- isInfinite;
17
- static ZERO = new Point(Fr.ZERO, Fr.ZERO, false);
15
+ static INFINITY = new Point(Fr.ZERO, Fr.ZERO);
18
16
  static SIZE_IN_BYTES = Fr.SIZE_IN_BYTES * 2;
19
17
  static COMPRESSED_SIZE_IN_BYTES = Fr.SIZE_IN_BYTES;
20
18
  /** Used to differentiate this class from AztecAddress */ kind;
19
+ /** Whether the point is at infinity */ isInfinite;
21
20
  constructor(/**
22
21
  * The point's x coordinate
23
22
  */ x, /**
24
23
  * The point's y coordinate
25
- */ y, /**
26
- * Whether the point is at infinity
27
- */ isInfinite){
24
+ */ y){
28
25
  this.x = x;
29
26
  this.y = y;
30
- this.isInfinite = isInfinite;
31
27
  this.kind = 'point';
32
- // TODO(#7386): check if on curve
28
+ // TODO(#7386): check if on curve
29
+ // NOTE: now there is no isInfinite in the struct, empty == inf, so an empty class would pass an on-curve check. This may be fine depending on the usage.
30
+ this.isInfinite = x.isZero() && y.isZero();
33
31
  }
34
32
  toJSON() {
35
33
  return this.toString();
@@ -52,7 +50,7 @@ import { Fr } from '../bn254/field.js';
52
50
  if (obj instanceof Buffer || Buffer.isBuffer(obj)) {
53
51
  return Point.fromBuffer(obj);
54
52
  }
55
- return new Point(Fr.fromPlainObject(obj.x), Fr.fromPlainObject(obj.y), obj.isInfinite ?? false);
53
+ return new this(Fr.fromPlainObject(obj.x), Fr.fromPlainObject(obj.y));
56
54
  }
57
55
  /**
58
56
  * Generate a random Point instance that is on the curve.
@@ -78,7 +76,7 @@ import { Fr } from '../bn254/field.js';
78
76
  * @returns A Point instance.
79
77
  */ static fromBuffer(buffer) {
80
78
  const reader = BufferReader.asReader(buffer);
81
- return new this(Fr.fromBuffer(reader), Fr.fromBuffer(reader), false);
79
+ return new this(Fr.fromBuffer(reader), Fr.fromBuffer(reader));
82
80
  }
83
81
  /**
84
82
  * Create a Point instance from a compressed buffer.
@@ -104,21 +102,21 @@ import { Fr } from '../bn254/field.js';
104
102
  return this.fromBuffer(hexToBuffer(str));
105
103
  }
106
104
  /**
107
- * Returns the contents of the point as an array of 3 fields.
108
- * @returns The point as an array of 3 fields
109
- */ // TODO(F-553): Once we take the breaking change and drop the custom Noir `Point` wrapper in
110
- // `noir-projects/noir-protocol-circuits/crates/types/src/point.nr`, revert this to serialize as `[x, y]` (2 fields)
111
- // and drop the `is_infinite` flag from `fromFields` / `toNoirStruct` below.
112
- toFields() {
105
+ * Returns the contents of the point as an array of 2 fields.
106
+ * @returns The point as an array of 2 fields
107
+ */ toFields() {
113
108
  return [
114
109
  this.x,
115
- this.y,
116
- new Fr(this.isInfinite)
110
+ this.y
117
111
  ];
118
112
  }
119
113
  static fromFields(fields) {
120
114
  const reader = FieldReader.asReader(fields);
121
- return new this(reader.readField(), reader.readField(), reader.readBoolean());
115
+ const [x, y] = [
116
+ reader.readField(),
117
+ reader.readField()
118
+ ];
119
+ return new this(x, y);
122
120
  }
123
121
  /**
124
122
  * Uses the x coordinate and isPositive flag (+/-) to reconstruct the point.
@@ -138,10 +136,11 @@ import { Fr } from '../bn254/field.js';
138
136
  // Choose the positive or negative root based on isPositive
139
137
  const finalY = sign ? new Fr(yPositiveBigInt) : new Fr(yNegativeBigInt);
140
138
  // Create and return the new Point
141
- return new this(x, finalY, false);
139
+ return new this(x, finalY);
142
140
  }
143
141
  /**
144
- * @returns
142
+ * @param x - The x coordinate of the point
143
+ * @returns y^2 such that y^2 = x^3 - 17
145
144
  */ static YFromX(x) {
146
145
  // Calculate y^2 = x^3 - 17 (i.e. the Grumpkin curve equation)
147
146
  const ySquared = x.square().mul(x).sub(new Fr(17));
@@ -165,23 +164,14 @@ import { Fr } from '../bn254/field.js';
165
164
  */ toBigInts() {
166
165
  return {
167
166
  x: this.x.toBigInt(),
168
- y: this.y.toBigInt(),
169
- isInfinite: this.isInfinite ? 1n : 0n
167
+ y: this.y.toBigInt()
170
168
  };
171
169
  }
172
170
  /**
173
171
  * Converts the Point instance to a Buffer representation of the coordinates.
174
172
  * @returns A Buffer representation of the Point instance.
175
- * @dev Note that toBuffer does not include the isInfinite flag and other serialization methods do (e.g. toFields).
176
- * This is because currently when we work with point as bytes we don't want to populate the extra bytes for
177
- * isInfinite flag because:
178
- * 1. Our Grumpkin BB API currently does not handle point at infinity,
179
- * 2. we use toBuffer when serializing notes and events and there we only work with public keys and point at infinity
180
- * is not considered a valid public key and the extra byte would raise DA cost.
173
+ * @dev Note that toBuffer does not include the isInfinite flag. The point at infinity is serialized as (0, 0).
181
174
  */ toBuffer() {
182
- if (this.isInfinite) {
183
- throw new Error('Cannot serialize infinite point with isInfinite flag');
184
- }
185
175
  const buf = serializeToBuffer([
186
176
  this.x,
187
177
  this.y
@@ -227,13 +217,12 @@ import { Fr } from '../bn254/field.js';
227
217
  return `${str.slice(0, 10)}...${str.slice(-4)}`;
228
218
  }
229
219
  toNoirStruct() {
230
- /* eslint-disable camelcase */ return {
220
+ return {
231
221
  x: this.x,
232
- y: this.y,
233
- is_infinite: this.isInfinite
222
+ y: this.y
234
223
  };
235
- /* eslint-enable camelcase */ }
236
- // Used for IvpkM, OvpkM, NpkM and TpkM. TODO(#8124): Consider removing this method.
224
+ }
225
+ // Used for IvpkM. TODO(#8124): Consider removing this method.
237
226
  toWrappedNoirStruct() {
238
227
  return {
239
228
  inner: this.toNoirStruct()
@@ -251,18 +240,12 @@ import { Fr } from '../bn254/field.js';
251
240
  isZero() {
252
241
  return this.x.isZero() && this.y.isZero();
253
242
  }
254
- hash() {
255
- return poseidon2Hash(this.toFields());
256
- }
257
243
  /**
258
- * Check if this is point at infinity.
259
- * Check this is consistent with how bb is encoding the point at infinity
260
- */ get inf() {
261
- return this.isInfinite;
262
- }
263
- isOnGrumpkin() {
264
- // TODO: Check this against how bb handles curve check and infinity point check
265
- if (this.inf) {
244
+ * @param x - The x coordinate of the point
245
+ * @param y - The y coordinate of the point
246
+ * @returns Whether the point exists on Grumpkin
247
+ */ isOnCurve() {
248
+ if (this.isInfinite) {
266
249
  return true;
267
250
  }
268
251
  // The Grumpkin equation is y^2 = x^3 - 17. We could use `YFromX` and then compare to `this.y`, but this would
@@ -137,7 +137,7 @@ export declare class EthAddress {
137
137
  /** Converts a number into an address. Useful for testing. */
138
138
  static fromNumber(num: bigint | number): EthAddress;
139
139
  toJSON(): `0x${string}`;
140
- static get schema(): import("zod").ZodType<EthAddress, any, string>;
140
+ static get schema(): import("zod").ZodType<EthAddress, string, import("zod/v4/core").$ZodTypeInternals<EthAddress, string>>;
141
141
  static areEqual(a: EthAddress | string, b: EthAddress | string): boolean;
142
142
  }
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ldGgtYWRkcmVzcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSS9CLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSWxFOzs7OztHQUtHO0FBQ0gscUJBQWEsVUFBVTtJQU1ULE9BQU8sQ0FBQyxNQUFNO0lBTDFCLGdEQUFnRDtJQUNoRCxPQUFjLGFBQWEsU0FBTTtJQUNqQywwRUFBMEU7SUFDMUUsT0FBYyxJQUFJLGFBQTBEO0lBRTVFLFlBQW9CLE1BQU0sRUFBRSxNQUFNLEVBSWpDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE9BQWMsVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLGNBS3ZDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE9BQWMsZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQVFsRDtJQUVEOzs7Ozs7T0FNRztJQUNILE9BQWMsTUFBTSxlQUVuQjtJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsT0FBYyxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sV0FVdEM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sWUFFWjtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFjLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxNQUFNLFdBY2pEO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsT0FBYyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLEtBQUssTUFBTSxFQUFFLENBa0I5RDtJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsVUFBVSxXQUU1QjtJQUVEOzs7Ozs7T0FNRztJQUNJLFFBQVEsa0JBRWQ7SUFFRCxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FFZjtJQUVEOzs7Ozs7T0FNRztJQUNJLGdCQUFnQixrQkFFdEI7SUFFRDs7O09BR0c7SUFDSSxRQUFRLDRCQUVkO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksVUFBVSx3QkFJaEI7SUFFRDs7OztPQUlHO0lBQ0ksT0FBTyxPQUViO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxVQUFVLENBRW5DO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsV0FBVyxjQUczQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsWUFBWSxHQUFHLFVBQVUsQ0FHM0Q7SUFFRCw2REFBNkQ7SUFDN0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxVQUFVLENBSWxEO0lBRUQsTUFBTSxrQkFFTDtJQUVELE1BQU0sS0FBSyxNQUFNLG1EQUdoQjtJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLFVBQVUsR0FBRyxNQUFNLFdBSTdEO0NBQ0YifQ==
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ldGgtYWRkcmVzcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSS9CLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR2xFOzs7OztHQUtHO0FBQ0gscUJBQWEsVUFBVTtJQU1ULE9BQU8sQ0FBQyxNQUFNO0lBTDFCLGdEQUFnRDtJQUNoRCxPQUFjLGFBQWEsU0FBTTtJQUNqQywwRUFBMEU7SUFDMUUsT0FBYyxJQUFJLGFBQTBEO0lBRTVFLFlBQW9CLE1BQU0sRUFBRSxNQUFNLEVBSWpDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE9BQWMsVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLGNBS3ZDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE9BQWMsZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQVFsRDtJQUVEOzs7Ozs7T0FNRztJQUNILE9BQWMsTUFBTSxlQUVuQjtJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsT0FBYyxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sV0FVdEM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sWUFFWjtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFjLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxNQUFNLFdBY2pEO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsT0FBYyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLEtBQUssTUFBTSxFQUFFLENBa0I5RDtJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsVUFBVSxXQUU1QjtJQUVEOzs7Ozs7T0FNRztJQUNJLFFBQVEsa0JBRWQ7SUFFRCxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FFZjtJQUVEOzs7Ozs7T0FNRztJQUNJLGdCQUFnQixrQkFFdEI7SUFFRDs7O09BR0c7SUFDSSxRQUFRLDRCQUVkO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksVUFBVSx3QkFJaEI7SUFFRDs7OztPQUlHO0lBQ0ksT0FBTyxPQUViO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxVQUFVLENBRW5DO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsV0FBVyxjQUczQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsWUFBWSxHQUFHLFVBQVUsQ0FHM0Q7SUFFRCw2REFBNkQ7SUFDN0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxVQUFVLENBSWxEO0lBRUQsTUFBTSxrQkFFTDtJQUVELE1BQU0sS0FBSyxNQUFNLDJHQUdoQjtJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFVBQVUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLFVBQVUsR0FBRyxNQUFNLFdBSTdEO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eth-address/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAI/B,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIlE;;;;;GAKG;AACH,qBAAa,UAAU;IAMT,OAAO,CAAC,MAAM;IAL1B,gDAAgD;IAChD,OAAc,aAAa,SAAM;IACjC,0EAA0E;IAC1E,OAAc,IAAI,aAA0D;IAE5E,YAAoB,MAAM,EAAE,MAAM,EAIjC;IAED;;;;;;;OAOG;IACH,OAAc,UAAU,CAAC,OAAO,EAAE,MAAM,cAKvC;IAED;;;;;;;OAOG;IACH,OAAc,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,UAAU,CAQlD;IAED;;;;;;OAMG;IACH,OAAc,MAAM,eAEnB;IAED;;;;;;;;OAQG;IACH,OAAc,SAAS,CAAC,OAAO,EAAE,MAAM,WAUtC;IAED;;;;;OAKG;IACI,MAAM,YAEZ;IAED;;;;;;;OAOG;IACH,OAAc,oBAAoB,CAAC,OAAO,EAAE,MAAM,WAcjD;IAED;;;;;;;;;OASG;IACH,OAAc,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAkB9D;IAED;;;;;;OAMG;IACI,MAAM,CAAC,GAAG,EAAE,UAAU,WAE5B;IAED;;;;;;OAMG;IACI,QAAQ,kBAEd;IAED,CAAC,OAAO,CAAC,MAAM,CAAC,WAEf;IAED;;;;;;OAMG;IACI,gBAAgB,kBAEtB;IAED;;;OAGG;IACI,QAAQ,4BAEd;IAED;;;;;;OAMG;IACI,UAAU,wBAIhB;IAED;;;;OAIG;IACI,OAAO,OAEb;IAED;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,UAAU,CAEnC;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,cAG3C;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,CAG3D;IAED,6DAA6D;IAC7D,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAIlD;IAED,MAAM,kBAEL;IAED,MAAM,KAAK,MAAM,mDAGhB;IAED,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM,WAI7D;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eth-address/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAI/B,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGlE;;;;;GAKG;AACH,qBAAa,UAAU;IAMT,OAAO,CAAC,MAAM;IAL1B,gDAAgD;IAChD,OAAc,aAAa,SAAM;IACjC,0EAA0E;IAC1E,OAAc,IAAI,aAA0D;IAE5E,YAAoB,MAAM,EAAE,MAAM,EAIjC;IAED;;;;;;;OAOG;IACH,OAAc,UAAU,CAAC,OAAO,EAAE,MAAM,cAKvC;IAED;;;;;;;OAOG;IACH,OAAc,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,UAAU,CAQlD;IAED;;;;;;OAMG;IACH,OAAc,MAAM,eAEnB;IAED;;;;;;;;OAQG;IACH,OAAc,SAAS,CAAC,OAAO,EAAE,MAAM,WAUtC;IAED;;;;;OAKG;IACI,MAAM,YAEZ;IAED;;;;;;;OAOG;IACH,OAAc,oBAAoB,CAAC,OAAO,EAAE,MAAM,WAcjD;IAED;;;;;;;;;OASG;IACH,OAAc,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAkB9D;IAED;;;;;;OAMG;IACI,MAAM,CAAC,GAAG,EAAE,UAAU,WAE5B;IAED;;;;;;OAMG;IACI,QAAQ,kBAEd;IAED,CAAC,OAAO,CAAC,MAAM,CAAC,WAEf;IAED;;;;;;OAMG;IACI,gBAAgB,kBAEtB;IAED;;;OAGG;IACI,QAAQ,4BAEd;IAED;;;;;;OAMG;IACI,UAAU,wBAIhB;IAED;;;;OAIG;IACI,OAAO,OAEb;IAED;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,UAAU,CAEnC;IAED,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,cAG3C;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,CAG3D;IAED,6DAA6D;IAC7D,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAIlD;IAED,MAAM,kBAEL;IAED,MAAM,KAAK,MAAM,2GAGhB;IAED,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM,WAI7D;CACF"}
@@ -5,7 +5,6 @@ import { randomBytes } from '../crypto/random/index.js';
5
5
  import { Fr } from '../curves/bn254/index.js';
6
6
  import { hexSchemaFor } from '../schemas/utils.js';
7
7
  import { BufferReader, FieldReader } from '../serialize/index.js';
8
- import { TypeRegistry } from '../serialize/type_registry.js';
9
8
  import { bufferToHex } from '../string/index.js';
10
9
  _computedKey = inspect.custom;
11
10
  /**
@@ -223,5 +222,3 @@ _computedKey = inspect.custom;
223
222
  return addrA.equals(addrB);
224
223
  }
225
224
  }
226
- // For deserializing JSON.
227
- TypeRegistry.register('EthAddress', EthAddress);
@@ -60,6 +60,6 @@ export declare class Signature {
60
60
  */
61
61
  toViemTransactionSignature(): ViemTransactionSignature;
62
62
  toJSON(): `0x${string}`;
63
- static get schema(): z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, `0x${string}`, string>, `0x${string}`, string>, Signature, string>;
63
+ static get schema(): z.ZodPipe<z.ZodString & z.ZodType<`0x${string}`, string, z.core.$ZodTypeInternals<`0x${string}`, string>>, z.ZodTransform<Signature, `0x${string}`>>;
64
64
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoX3NpZ25hdHVyZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V0aC1zaWduYXR1cmUvZXRoX3NpZ25hdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUc5RSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBS3hCOztHQUVHO0FBQ0gsTUFBTSxNQUFNLGFBQWEsR0FBRztJQUMxQixDQUFDLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztJQUNqQixDQUFDLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztJQUNqQixDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ1gsQ0FBQztBQUVGLE1BQU0sTUFBTSx3QkFBd0IsR0FBRztJQUNyQyxDQUFDLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztJQUNqQixDQUFDLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztJQUNqQixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNoQixDQUFDO0FBRUY7O0dBRUc7QUFDSCxxQkFBYSxTQUFTO0lBT2xCLG1DQUFtQzthQUNuQixDQUFDLEVBQUUsUUFBUTtJQUMzQixtQ0FBbUM7YUFDbkIsQ0FBQyxFQUFFLFFBQVE7SUFDM0IsbUNBQW1DO2FBQ25CLENBQUMsRUFBRSxNQUFNO0lBVjNCLE9BQU8sQ0FBQyxJQUFJLENBQXFCO0lBRWpDLFNBQWdCLEtBQUssRUFBRSxPQUFPLENBQUM7SUFFL0I7SUFDRSxtQ0FBbUM7SUFDbkIsQ0FBQyxFQUFFLFFBQVE7SUFDM0IsbUNBQW1DO0lBQ25CLENBQUMsRUFBRSxRQUFRO0lBQzNCLG1DQUFtQztJQUNuQixDQUFDLEVBQUUsTUFBTSxFQUcxQjtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsU0FBUyxDQVF2RDtJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLEtBQUssTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUVoRDtJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FRL0M7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLGFBQWEsR0FBRyxTQUFTLENBRXREO0lBRUQsTUFBTSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsRUFBRSx3QkFBd0IsR0FBRyxTQUFTLENBRTVFO0lBRUQsaUhBQWlIO0lBQ2pILE1BQU0sQ0FBQyxNQUFNLElBQUksU0FBUyxDQUt6QjtJQUVELE1BQU0sQ0FBQyxLQUFLLElBQUksU0FBUyxDQUV4QjtJQUVELE9BQU8sSUFBSSxPQUFPLENBRWpCO0lBRUQsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUVoQztJQUVELFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQsT0FBTyxJQUFJLE1BQU0sQ0FRaEI7SUFFRCxRQUFRLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FFeEI7SUFFRDs7T0FFRztJQUNILGVBQWUsSUFBSSxhQUFhLENBTS9CO0lBRUQ7O09BRUc7SUFDSCwwQkFBMEIsSUFBSSx3QkFBd0IsQ0FTckQ7SUFFRCxNQUFNLGtCQUVMO0lBRUQsTUFBTSxLQUFLLE1BQU0sMkhBTWhCO0NBQ0YifQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoX3NpZ25hdHVyZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V0aC1zaWduYXR1cmUvZXRoX3NpZ25hdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUc5RSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBS3hCOztHQUVHO0FBQ0gsTUFBTSxNQUFNLGFBQWEsR0FBRztJQUMxQixDQUFDLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztJQUNqQixDQUFDLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztJQUNqQixDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ1gsQ0FBQztBQUVGLE1BQU0sTUFBTSx3QkFBd0IsR0FBRztJQUNyQyxDQUFDLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztJQUNqQixDQUFDLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztJQUNqQixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNoQixDQUFDO0FBRUY7O0dBRUc7QUFDSCxxQkFBYSxTQUFTO0lBT2xCLG1DQUFtQzthQUNuQixDQUFDLEVBQUUsUUFBUTtJQUMzQixtQ0FBbUM7YUFDbkIsQ0FBQyxFQUFFLFFBQVE7SUFDM0IsbUNBQW1DO2FBQ25CLENBQUMsRUFBRSxNQUFNO0lBVjNCLE9BQU8sQ0FBQyxJQUFJLENBQXFCO0lBRWpDLFNBQWdCLEtBQUssRUFBRSxPQUFPLENBQUM7SUFFL0I7SUFDRSxtQ0FBbUM7SUFDbkIsQ0FBQyxFQUFFLFFBQVE7SUFDM0IsbUNBQW1DO0lBQ25CLENBQUMsRUFBRSxRQUFRO0lBQzNCLG1DQUFtQztJQUNuQixDQUFDLEVBQUUsTUFBTSxFQUcxQjtJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsU0FBUyxDQVF2RDtJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLEtBQUssTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUVoRDtJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FRL0M7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLGFBQWEsR0FBRyxTQUFTLENBRXREO0lBRUQsTUFBTSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsRUFBRSx3QkFBd0IsR0FBRyxTQUFTLENBRTVFO0lBRUQsaUhBQWlIO0lBQ2pILE1BQU0sQ0FBQyxNQUFNLElBQUksU0FBUyxDQUt6QjtJQUVELE1BQU0sQ0FBQyxLQUFLLElBQUksU0FBUyxDQUV4QjtJQUVELE9BQU8sSUFBSSxPQUFPLENBRWpCO0lBRUQsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUVoQztJQUVELFFBQVEsSUFBSSxNQUFNLENBRWpCO0lBRUQsT0FBTyxJQUFJLE1BQU0sQ0FRaEI7SUFFRCxRQUFRLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FFeEI7SUFFRDs7T0FFRztJQUNILGVBQWUsSUFBSSxhQUFhLENBTS9CO0lBRUQ7O09BRUc7SUFDSCwwQkFBMEIsSUFBSSx3QkFBd0IsQ0FTckQ7SUFFRCxNQUFNLGtCQUVMO0lBRUQsTUFBTSxLQUFLLE1BQU0seUpBTWhCO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"eth_signature.d.ts","sourceRoot":"","sources":["../../src/eth-signature/eth_signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAG9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjB,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;IAOlB,mCAAmC;aACnB,CAAC,EAAE,QAAQ;IAC3B,mCAAmC;aACnB,CAAC,EAAE,QAAQ;IAC3B,mCAAmC;aACnB,CAAC,EAAE,MAAM;IAV3B,OAAO,CAAC,IAAI,CAAqB;IAEjC,SAAgB,KAAK,EAAE,OAAO,CAAC;IAE/B;IACE,mCAAmC;IACnB,CAAC,EAAE,QAAQ;IAC3B,mCAAmC;IACnB,CAAC,EAAE,QAAQ;IAC3B,mCAAmC;IACnB,CAAC,EAAE,MAAM,EAG1B;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAQvD;IAED,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAEhD;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,SAAS,CAQ/C;IAED,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,CAEtD;IAED,MAAM,CAAC,4BAA4B,CAAC,GAAG,EAAE,wBAAwB,GAAG,SAAS,CAE5E;IAED,iHAAiH;IACjH,MAAM,CAAC,MAAM,IAAI,SAAS,CAKzB;IAED,MAAM,CAAC,KAAK,IAAI,SAAS,CAExB;IAED,OAAO,IAAI,OAAO,CAEjB;IAED,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAEhC;IAED,QAAQ,IAAI,MAAM,CAEjB;IAED,OAAO,IAAI,MAAM,CAQhB;IAED,QAAQ,IAAI,KAAK,MAAM,EAAE,CAExB;IAED;;OAEG;IACH,eAAe,IAAI,aAAa,CAM/B;IAED;;OAEG;IACH,0BAA0B,IAAI,wBAAwB,CASrD;IAED,MAAM,kBAEL;IAED,MAAM,KAAK,MAAM,2HAMhB;CACF"}
1
+ {"version":3,"file":"eth_signature.d.ts","sourceRoot":"","sources":["../../src/eth-signature/eth_signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAG9E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjB,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;IAOlB,mCAAmC;aACnB,CAAC,EAAE,QAAQ;IAC3B,mCAAmC;aACnB,CAAC,EAAE,QAAQ;IAC3B,mCAAmC;aACnB,CAAC,EAAE,MAAM;IAV3B,OAAO,CAAC,IAAI,CAAqB;IAEjC,SAAgB,KAAK,EAAE,OAAO,CAAC;IAE/B;IACE,mCAAmC;IACnB,CAAC,EAAE,QAAQ;IAC3B,mCAAmC;IACnB,CAAC,EAAE,QAAQ;IAC3B,mCAAmC;IACnB,CAAC,EAAE,MAAM,EAG1B;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAQvD;IAED,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAEhD;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,SAAS,CAQ/C;IAED,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,CAEtD;IAED,MAAM,CAAC,4BAA4B,CAAC,GAAG,EAAE,wBAAwB,GAAG,SAAS,CAE5E;IAED,iHAAiH;IACjH,MAAM,CAAC,MAAM,IAAI,SAAS,CAKzB;IAED,MAAM,CAAC,KAAK,IAAI,SAAS,CAExB;IAED,OAAO,IAAI,OAAO,CAEjB;IAED,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAEhC;IAED,QAAQ,IAAI,MAAM,CAEjB;IAED,OAAO,IAAI,MAAM,CAQhB;IAED,QAAQ,IAAI,KAAK,MAAM,EAAE,CAExB;IAED;;OAEG;IACH,eAAe,IAAI,aAAa,CAM/B;IAED;;OAEG;IACH,0BAA0B,IAAI,wBAAwB,CASrD;IAED,MAAM,kBAEL;IAED,MAAM,KAAK,MAAM,yJAMhB;CACF"}
@@ -0,0 +1,41 @@
1
+ import EventEmitter from 'node:events';
2
+ import type { Readable } from 'node:stream';
3
+ /**
4
+ * Events emitted by FifoFrameReader.
5
+ *
6
+ * - `frame`: A complete frame payload (without the 4-byte length header).
7
+ * - `error`: An unrecoverable error (invalid frame length, stream error).
8
+ * - `end`: The underlying stream has ended.
9
+ */
10
+ export interface FifoFrameReaderEvents {
11
+ frame: [payload: Buffer];
12
+ error: [error: Error];
13
+ end: [];
14
+ }
15
+ /**
16
+ * Reads length-delimited frames from a readable stream (typically a named FIFO pipe).
17
+ *
18
+ * Wire format: `[4-byte big-endian payload length][payload bytes]`
19
+ *
20
+ * Emits a `frame` event for each complete frame with the raw payload buffer.
21
+ * Callers are responsible for deserializing the payload (e.g., via msgpack).
22
+ *
23
+ * On encountering an invalid payload length (0 or >maxPayloadSize), emits `error`
24
+ * and destroys the stream.
25
+ */
26
+ export declare class FifoFrameReader extends EventEmitter<FifoFrameReaderEvents> {
27
+ private readonly maxPayloadSize;
28
+ private stream;
29
+ private pendingBuf;
30
+ private running;
31
+ constructor(maxPayloadSize?: number);
32
+ /** Open a FIFO at the given path and start reading frames. */
33
+ start(fifoPath: string): void;
34
+ /** Start reading frames from an existing readable stream. */
35
+ startFromStream(stream: Readable): void;
36
+ /** Stop reading and destroy the underlying stream. */
37
+ stop(): void;
38
+ /** Parse complete frames out of the pending buffer. */
39
+ private drainFrames;
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlmb19mcmFtZV9yZWFkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWZvL2ZpZm9fZnJhbWVfcmVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sWUFBWSxNQUFNLGFBQWEsQ0FBQztBQUd2QyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxXQUFXLHFCQUFxQjtJQUNwQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekIsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLEdBQUcsRUFBRSxFQUFFLENBQUM7Q0FDVDtBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxxQkFBYSxlQUFnQixTQUFRLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQztJQUsxRCxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWM7SUFKM0MsT0FBTyxDQUFDLE1BQU0sQ0FBeUI7SUFDdkMsT0FBTyxDQUFDLFVBQVUsQ0FBMkI7SUFDN0MsT0FBTyxDQUFDLE9BQU8sQ0FBUztJQUV4QixZQUE2QixjQUFjLFNBQW1CLEVBRTdEO0lBRUQsOERBQThEO0lBQzlELEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FnQjVCO0lBRUQsNkRBQTZEO0lBQzdELGVBQWUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxHQUFHLElBQUksQ0F1QnRDO0lBRUQsc0RBQXNEO0lBQ3RELElBQUksSUFBSSxJQUFJLENBTVg7SUFFRCx1REFBdUQ7SUFDdkQsT0FBTyxDQUFDLFdBQVc7Q0FtQnBCIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fifo_frame_reader.d.ts","sourceRoot":"","sources":["../../src/fifo/fifo_frame_reader.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAC;AAGvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzB,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtB,GAAG,EAAE,EAAE,CAAC;CACT;AAED;;;;;;;;;;GAUG;AACH,qBAAa,eAAgB,SAAQ,YAAY,CAAC,qBAAqB,CAAC;IAK1D,OAAO,CAAC,QAAQ,CAAC,cAAc;IAJ3C,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,OAAO,CAAS;IAExB,YAA6B,cAAc,SAAmB,EAE7D;IAED,8DAA8D;IAC9D,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAgB5B;IAED,6DAA6D;IAC7D,eAAe,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAuBtC;IAED,sDAAsD;IACtD,IAAI,IAAI,IAAI,CAMX;IAED,uDAAuD;IACvD,OAAO,CAAC,WAAW;CAmBpB"}
@@ -0,0 +1,91 @@
1
+ import EventEmitter from 'node:events';
2
+ import * as fs from 'node:fs';
3
+ import * as net from 'node:net';
4
+ /**
5
+ * Reads length-delimited frames from a readable stream (typically a named FIFO pipe).
6
+ *
7
+ * Wire format: `[4-byte big-endian payload length][payload bytes]`
8
+ *
9
+ * Emits a `frame` event for each complete frame with the raw payload buffer.
10
+ * Callers are responsible for deserializing the payload (e.g., via msgpack).
11
+ *
12
+ * On encountering an invalid payload length (0 or >maxPayloadSize), emits `error`
13
+ * and destroys the stream.
14
+ */ export class FifoFrameReader extends EventEmitter {
15
+ maxPayloadSize;
16
+ stream;
17
+ pendingBuf;
18
+ running;
19
+ constructor(maxPayloadSize = 10 * 1024 * 1024){
20
+ super(), this.maxPayloadSize = maxPayloadSize, this.stream = null, this.pendingBuf = Buffer.alloc(0), this.running = false;
21
+ }
22
+ /** Open a FIFO at the given path and start reading frames. */ start(fifoPath) {
23
+ // Read the FIFO through a libuv pipe handle (net.Socket) rather than fs.createReadStream.
24
+ // An fs read stream services the pipe with a blocking threadpool read that destroy() cannot
25
+ // cancel: if a writer never closes, that read stays parked and keeps the host process alive
26
+ // (manifesting as Jest "did not exit"). Opening O_NONBLOCK and wrapping the fd in a pipe
27
+ // handle makes reads epoll-based, so stop()'s destroy() releases the handle immediately,
28
+ // regardless of whether the writer is still attached.
29
+ const fd = fs.openSync(fifoPath, fs.constants.O_RDONLY | fs.constants.O_NONBLOCK);
30
+ let socket;
31
+ try {
32
+ socket = new net.Socket({
33
+ fd,
34
+ readable: true,
35
+ writable: false
36
+ });
37
+ } catch (err) {
38
+ fs.closeSync(fd);
39
+ throw err;
40
+ }
41
+ this.startFromStream(socket);
42
+ }
43
+ /** Start reading frames from an existing readable stream. */ startFromStream(stream) {
44
+ if (this.running) {
45
+ throw new Error('FifoFrameReader is already running');
46
+ }
47
+ this.running = true;
48
+ this.pendingBuf = Buffer.alloc(0);
49
+ this.stream = stream;
50
+ stream.on('data', (chunk)=>{
51
+ const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
52
+ this.pendingBuf = this.pendingBuf.length > 0 ? Buffer.concat([
53
+ this.pendingBuf,
54
+ buf
55
+ ]) : buf;
56
+ this.drainFrames();
57
+ });
58
+ stream.on('error', (err)=>{
59
+ if (this.running) {
60
+ this.emit('error', err);
61
+ }
62
+ });
63
+ stream.on('end', ()=>{
64
+ this.emit('end');
65
+ });
66
+ }
67
+ /** Stop reading and destroy the underlying stream. */ stop() {
68
+ this.running = false;
69
+ if (this.stream) {
70
+ this.stream.destroy();
71
+ this.stream = null;
72
+ }
73
+ }
74
+ /** Parse complete frames out of the pending buffer. */ drainFrames() {
75
+ while(this.pendingBuf.length >= 4){
76
+ const payloadLen = this.pendingBuf.readUInt32BE(0);
77
+ if (payloadLen === 0 || payloadLen > this.maxPayloadSize) {
78
+ this.emit('error', new Error(`Invalid payload length: ${payloadLen}`));
79
+ this.stop();
80
+ return;
81
+ }
82
+ const frameLen = 4 + payloadLen;
83
+ if (this.pendingBuf.length < frameLen) {
84
+ break; // Wait for more data
85
+ }
86
+ const payload = this.pendingBuf.subarray(4, frameLen);
87
+ this.pendingBuf = this.pendingBuf.subarray(frameLen);
88
+ this.emit('frame', Buffer.from(payload));
89
+ }
90
+ }
91
+ }
@@ -0,0 +1,2 @@
1
+ export { FifoFrameReader } from './fifo_frame_reader.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWZvL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fifo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1 @@
1
+ export { FifoFrameReader } from './fifo_frame_reader.js';
@@ -0,0 +1,15 @@
1
+ /** A Set capped to a fixed number of entries, evicting the oldest inserted value when full. */
2
+ export declare class FifoSet<T> extends Set<T> {
3
+ private _limit;
4
+ private constructor();
5
+ /** Creates a bounded set with a positive integer limit. */
6
+ static withLimit<T>(limit: number, values?: Iterable<T>): FifoSet<T>;
7
+ add(value: T): this;
8
+ /** Maximum number of entries retained by this set. */
9
+ get limit(): number;
10
+ /** Evicts oldest entries until the set is within its limit. */
11
+ compact(): void;
12
+ /** Adds a value only if it is absent, returning whether the set changed. */
13
+ addIfAbsent(value: T): boolean;
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlmb19zZXQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWZvX3NldC9maWZvX3NldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrRkFBK0Y7QUFDL0YscUJBQWEsT0FBTyxDQUFDLENBQUMsQ0FBRSxTQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEMsT0FBTyxDQUFDLE1BQU0sQ0FBcUI7SUFFbkMsT0FBTyxlQUVOO0lBRUQsMkRBQTJEO0lBQzNELE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FVbkU7SUFFUSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBSTNCO0lBRUQsc0RBQXNEO0lBQ3RELElBQVcsS0FBSyxJQUFJLE1BQU0sQ0FFekI7SUFFRCwrREFBK0Q7SUFDeEQsT0FBTyxJQUFJLElBQUksQ0FRckI7SUFFRCw0RUFBNEU7SUFDckUsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsT0FBTyxDQU1wQztDQUNGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fifo_set.d.ts","sourceRoot":"","sources":["../../src/fifo_set/fifo_set.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,qBAAa,OAAO,CAAC,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,MAAM,CAAqB;IAEnC,OAAO,eAEN;IAED,2DAA2D;IAC3D,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAUnE;IAEQ,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAI3B;IAED,sDAAsD;IACtD,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,+DAA+D;IACxD,OAAO,IAAI,IAAI,CAQrB;IAED,4EAA4E;IACrE,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAMpC;CACF"}
@@ -0,0 +1,39 @@
1
+ /** A Set capped to a fixed number of entries, evicting the oldest inserted value when full. */ export class FifoSet extends Set {
2
+ _limit;
3
+ constructor(values){
4
+ super(values);
5
+ }
6
+ /** Creates a bounded set with a positive integer limit. */ static withLimit(limit, values) {
7
+ if (!Number.isSafeInteger(limit) || limit <= 0) {
8
+ throw new TypeError(`FifoSet limit must be a positive safe integer: ${limit}`);
9
+ }
10
+ const set = new FifoSet(values);
11
+ set._limit = limit;
12
+ set.compact();
13
+ return set;
14
+ }
15
+ add(value) {
16
+ super.add(value);
17
+ this.compact();
18
+ return this;
19
+ }
20
+ /** Maximum number of entries retained by this set. */ get limit() {
21
+ return this._limit ?? Infinity;
22
+ }
23
+ /** Evicts oldest entries until the set is within its limit. */ compact() {
24
+ while(this.size > this.limit){
25
+ const head = this.values().next();
26
+ if (head.done) {
27
+ return;
28
+ }
29
+ this.delete(head.value);
30
+ }
31
+ }
32
+ /** Adds a value only if it is absent, returning whether the set changed. */ addIfAbsent(value) {
33
+ if (this.has(value)) {
34
+ return false;
35
+ }
36
+ this.add(value);
37
+ return true;
38
+ }
39
+ }
@@ -0,0 +1,2 @@
1
+ export * from './fifo_set.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWZvX3NldC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fifo_set/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './fifo_set.js';
@@ -8,3 +8,27 @@ import pretty from 'pino-pretty';
8
8
  if (!parseBooleanEnv(process.env.LOG_JSON)) {
9
9
  overwriteLoggingStream(pretty(pinoPrettyOpts));
10
10
  }
11
+ // Prevent timers from keeping the process alive after tests complete.
12
+ // Libraries like viem create internal polling loops (via setTimeout) that
13
+ // reschedule themselves indefinitely. In test environments we never want a
14
+ // timer to be the reason the process can't exit. We also unref stdout/stderr
15
+ // which, when they are pipes (as in Jest workers), remain ref'd by default.
16
+ {
17
+ const origSetTimeout = globalThis.setTimeout;
18
+ const origSetInterval = globalThis.setInterval;
19
+ globalThis.setTimeout = function unrefSetTimeout(...args) {
20
+ const id = origSetTimeout.apply(this, args);
21
+ id?.unref?.();
22
+ return id;
23
+ };
24
+ // Preserve .unref, .__promisify__ etc. that may exist on the original
25
+ Object.setPrototypeOf(globalThis.setTimeout, origSetTimeout);
26
+ globalThis.setInterval = function unrefSetInterval(...args) {
27
+ const id = origSetInterval.apply(this, args);
28
+ id?.unref?.();
29
+ return id;
30
+ };
31
+ Object.setPrototypeOf(globalThis.setInterval, origSetInterval);
32
+ if (process.stdout?._handle?.unref) process.stdout._handle.unref();
33
+ if (process.stderr?._handle?.unref) process.stderr._handle.unref();
34
+ }
@@ -29,4 +29,4 @@ export declare function defaultFetch(host: string, body: unknown, extraHeaders?:
29
29
  * @returns A fetch function.
30
30
  */
31
31
  export declare function makeFetch(retries: number[], defaultNoRetry: boolean, log?: Logger): typeof defaultFetch;
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uLXJwYy9jbGllbnQvZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLG9CQUFvQixDQUFDO0FBTS9ELE1BQU0sTUFBTSxZQUFZLEdBQUcsQ0FDekIsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUsR0FBRyxFQUNULFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQ3JDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sS0FDZCxPQUFPLENBQUM7SUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDO0lBQUMsT0FBTyxFQUFFO1FBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQTtLQUFFLENBQUE7Q0FBRSxDQUFDLENBQUM7QUFFakc7Ozs7Ozs7OztHQVNHO0FBQ0gsd0JBQXNCLFlBQVksQ0FDaEMsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUsT0FBTyxFQUNiLFlBQVksR0FBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBTSxFQUN6QyxPQUFPLFVBQVEsR0FDZCxPQUFPLENBQUM7SUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDO0lBQUMsT0FBTyxFQUFFO1FBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQTtLQUFFLENBQUE7Q0FBRSxDQUFDLENBa0M3RjtBQUVEOzs7Ozs7R0FNRztBQUNILHdCQUFnQixTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLE9BQU8sWUFBWSxDQVV2RyJ9
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uLXJwYy9jbGllbnQvZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLG9CQUFvQixDQUFDO0FBTS9ELE1BQU0sTUFBTSxZQUFZLEdBQUcsQ0FDekIsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUsR0FBRyxFQUNULFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQ3JDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sS0FDZCxPQUFPLENBQUM7SUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDO0lBQUMsT0FBTyxFQUFFO1FBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQTtLQUFFLENBQUE7Q0FBRSxDQUFDLENBQUM7QUFFakc7Ozs7Ozs7OztHQVNHO0FBQ0gsd0JBQXNCLFlBQVksQ0FDaEMsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUsT0FBTyxFQUNiLFlBQVksR0FBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBTSxFQUN6QyxPQUFPLFVBQVEsR0FDZCxPQUFPLENBQUM7SUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDO0lBQUMsT0FBTyxFQUFFO1FBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQTtLQUFFLENBQUE7Q0FBRSxDQUFDLENBbUM3RjtBQUVEOzs7Ozs7R0FNRztBQUNILHdCQUFnQixTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLE9BQU8sWUFBWSxDQVV2RyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/client/fetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,oBAAoB,CAAC;AAM/D,MAAM,MAAM,YAAY,GAAG,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,EACT,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,OAAO,CAAC,EAAE,OAAO,KACd,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE;QAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAA;CAAE,CAAC,CAAC;AAEjG;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACzC,OAAO,UAAQ,GACd,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE;QAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAA;CAAE,CAAC,CAkC7F;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,YAAY,CAUvG"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/client/fetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,oBAAoB,CAAC;AAM/D,MAAM,MAAM,YAAY,GAAG,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,EACT,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,OAAO,CAAC,EAAE,OAAO,KACd,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE;QAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAA;CAAE,CAAC,CAAC;AAEjG;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACzC,OAAO,UAAQ,GACd,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE;QAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAA;CAAE,CAAC,CAmC7F;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,YAAY,CAUvG"}
@@ -29,16 +29,17 @@ const log = createLogger('json-rpc:json_rpc_client');
29
29
  throw new Error(errorMessage);
30
30
  }
31
31
  let responseJson;
32
+ const responseText = await resp.text();
32
33
  try {
33
- responseJson = await resp.json();
34
+ responseJson = JSON.parse(responseText);
34
35
  } catch {
35
36
  if (!resp.ok) {
36
37
  throw new Error(resp.statusText);
37
38
  }
38
- throw new Error(`Failed to parse body as JSON: ${await resp.text()}`);
39
+ throw new Error(`Failed to parse body as JSON: ${responseText}`);
39
40
  }
40
41
  if (!resp.ok) {
41
- const errorMessage = `Error ${resp.status} from server ${host}: ${responseJson.error.message}`;
42
+ const errorMessage = `Error ${resp.status} from server ${host}: ${responseJson?.error?.message ?? JSON.stringify(responseJson)}`;
42
43
  if (noRetry || resp.status >= 400 && resp.status < 500) {
43
44
  throw new NoRetryError(errorMessage);
44
45
  } else {
@@ -30,4 +30,4 @@ export declare function createSafeJsonRpcClient<T extends object>(host: string,
30
30
  export declare function batch<T extends readonly unknown[]>(values: T): Promise<{
31
31
  -readonly [P in keyof T]: Awaited<T[P]>;
32
32
  }>;
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZV9qc29uX3JwY19jbGllbnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uLXJwYy9jbGllbnQvc2FmZV9qc29uX3JwY19jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXJFLE9BQU8sRUFBa0IsS0FBSyxZQUFZLEVBQW1CLE1BQU0sc0JBQXNCLENBQUM7QUFFMUYsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFnQixNQUFNLFlBQVksQ0FBQztBQWE3RCxNQUFNLE1BQU0sd0JBQXdCLEdBQUc7SUFDckMsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLEtBQUssQ0FBQyxFQUFFLFlBQVksQ0FBQztJQUNyQixHQUFHLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDYixhQUFhLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDdkIsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQzVCLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUU7UUFDakIsUUFBUSxFQUFFLEdBQUcsQ0FBQztRQUNkLE9BQU8sRUFBRTtZQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssTUFBTSxHQUFHLElBQUksR0FBRyxTQUFTLENBQUE7U0FBRSxDQUFDO0tBQ2pFLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ3JCLENBQUM7QUE2QkY7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLHVCQUF1QixDQUFDLENBQUMsU0FBUyxNQUFNLEVBQ3RELElBQUksRUFBRSxNQUFNLEVBQ1osTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDdkIsTUFBTSxHQUFFLHdCQUE2QixHQUNwQyxDQUFDLENBb0xIO0FBRUQ7O0dBRUc7QUFDSCx3QkFBc0IsS0FBSyxDQUFDLENBQUMsU0FBUyxTQUFTLE9BQU8sRUFBRSxFQUN0RCxNQUFNLEVBQUUsQ0FBQyxHQUNSLE9BQU8sQ0FBQztJQUFFLENBQUMsVUFBVSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUFFLENBQUMsQ0F1QnREIn0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZV9qc29uX3JwY19jbGllbnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uLXJwYy9jbGllbnQvc2FmZV9qc29uX3JwY19jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXJFLE9BQU8sRUFBa0IsS0FBSyxZQUFZLEVBQXdDLE1BQU0sc0JBQXNCLENBQUM7QUFFL0csT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFnQixNQUFNLFlBQVksQ0FBQztBQWM3RCxNQUFNLE1BQU0sd0JBQXdCLEdBQUc7SUFDckMsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLEtBQUssQ0FBQyxFQUFFLFlBQVksQ0FBQztJQUNyQixHQUFHLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDYixhQUFhLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDdkIsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQzVCLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUU7UUFDakIsUUFBUSxFQUFFLEdBQUcsQ0FBQztRQUNkLE9BQU8sRUFBRTtZQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssTUFBTSxHQUFHLElBQUksR0FBRyxTQUFTLENBQUE7U0FBRSxDQUFDO0tBQ2pFLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ3JCLENBQUM7QUE2QkY7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLHVCQUF1QixDQUFDLENBQUMsU0FBUyxNQUFNLEVBQ3RELElBQUksRUFBRSxNQUFNLEVBQ1osTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDdkIsTUFBTSxHQUFFLHdCQUE2QixHQUNwQyxDQUFDLENBb0xIO0FBRUQ7O0dBRUc7QUFDSCx3QkFBc0IsS0FBSyxDQUFDLENBQUMsU0FBUyxTQUFTLE9BQU8sRUFBRSxFQUN0RCxNQUFNLEVBQUUsQ0FBQyxHQUNSLE9BQU8sQ0FBQztJQUFFLENBQUMsVUFBVSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUFFLENBQUMsQ0F1QnREIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"safe_json_rpc_client.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/client/safe_json_rpc_client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAkB,KAAK,YAAY,EAAmB,MAAM,sBAAsB,CAAC;AAE1F,OAAO,EAAE,KAAK,YAAY,EAAgB,MAAM,YAAY,CAAC;AAa7D,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAClC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE;QACjB,QAAQ,EAAE,GAAG,CAAC;QACd,OAAO,EAAE;YAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;SAAE,CAAC;KACjE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB,CAAC;AA6BF;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EACtD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,MAAM,GAAE,wBAA6B,GACpC,CAAC,CAoLH;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EACtD,MAAM,EAAE,CAAC,GACR,OAAO,CAAC;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAuBtD"}
1
+ {"version":3,"file":"safe_json_rpc_client.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/client/safe_json_rpc_client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAkB,KAAK,YAAY,EAAwC,MAAM,sBAAsB,CAAC;AAE/G,OAAO,EAAE,KAAK,YAAY,EAAgB,MAAM,YAAY,CAAC;AAc7D,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAClC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE;QACjB,QAAQ,EAAE,GAAG,CAAC;QACd,OAAO,EAAE;YAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;SAAE,CAAC;KACjE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB,CAAC;AA6BF;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EACtD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,MAAM,GAAE,wBAA6B,GACpC,CAAC,CAoLH;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EACtD,MAAM,EAAE,CAAC,GACR,OAAO,CAAC;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAuBtD"}
@@ -1,7 +1,7 @@
1
1
  import { format } from 'util';
2
2
  import { createLogger } from '../../log/pino-logger.js';
3
3
  import { promiseWithResolvers } from '../../promise/utils.js';
4
- import { schemaHasMethod } from '../../schemas/api.js';
4
+ import { getSchemaReturnType, schemaHasMethod } from '../../schemas/api.js';
5
5
  import { jsonStringify } from '../convert.js';
6
6
  import { defaultFetch } from './fetch.js';
7
7
  // batch window of 0 would capture all requests in the current sync iteration of the event loop
@@ -10,8 +10,9 @@ import { defaultFetch } from './fetch.js';
10
10
  const DEFAULT_BATCH_WINDOW_MS = 0;
11
11
  // the maximum size of a batched request
12
12
  const DEFAULT_MAX_BATCH_SIZE = 100;
13
- // 10 mb
14
- const DEFAULT_MAX_REQUESTY_BODY_SIZE = 10 * 1024 * 1024;
13
+ // 1 mb, matching the JSON-RPC server's default maxBodySizeBytes so the client never assembles a batch the
14
+ // server rejects for exceeding the body limit
15
+ const DEFAULT_MAX_REQUESTY_BODY_SIZE = 1 * 1024 * 1024;
15
16
  // expose helpful information on the RPC clients such that we can recognize them later
16
17
  const SEND_BATCH = Symbol('JsonRpcClient.sendBatch');
17
18
  const CLIENT_ID = Symbol('JsonRpcClient.clientId');
@@ -178,7 +179,7 @@ const clients = new Map();
178
179
  ].includes(response.result)) {
179
180
  return;
180
181
  }
181
- return schema[methodName].returnType().parseAsync(response.result);
182
+ return getSchemaReturnType(schema[methodName]).parseAsync(response.result);
182
183
  };
183
184
  const clientId = nextClientId++;
184
185
  const proxy = {
@@ -2,4 +2,4 @@ import { Agent } from 'undici';
2
2
  import type { JsonRpcFetch } from './fetch.js';
3
3
  export { Agent };
4
4
  export declare function makeUndiciFetch(client?: Agent): JsonRpcFetch;
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kaWNpLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbi1ycGMvY2xpZW50L3VuZGljaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsS0FBSyxFQUFtQixNQUFNLFFBQVEsQ0FBQztBQUtoRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFVL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRWpCLHdCQUFnQixlQUFlLENBQUMsTUFBTSxRQUFjLEdBQUcsWUFBWSxDQWtFbEUifQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kaWNpLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbi1ycGMvY2xpZW50L3VuZGljaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsS0FBSyxFQUFtQixNQUFNLFFBQVEsQ0FBQztBQUtoRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFVL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRWpCLHdCQUFnQixlQUFlLENBQUMsTUFBTSxRQUFjLEdBQUcsWUFBWSxDQW9FbEUifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"undici.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/client/undici.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAmB,MAAM,QAAQ,CAAC;AAKhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU/C,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,wBAAgB,eAAe,CAAC,MAAM,QAAc,GAAG,YAAY,CAkElE"}
1
+ {"version":3,"file":"undici.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/client/undici.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAmB,MAAM,QAAQ,CAAC;AAKhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU/C,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,wBAAgB,eAAe,CAAC,MAAM,QAAc,GAAG,YAAY,CAoElE"}
@@ -40,18 +40,20 @@ export function makeUndiciFetch(client = new Agent()) {
40
40
  let responseJson;
41
41
  const responseOk = resp.statusCode >= 200 && resp.statusCode <= 299;
42
42
  const contentEncoding = resp.headers['content-encoding'];
43
+ let responseText;
43
44
  try {
44
45
  if (contentEncoding === 'gzip') {
45
46
  const jsonBuffer = await gunzip(await resp.body.arrayBuffer());
46
- responseJson = JSON.parse(jsonBuffer.toString('utf-8'));
47
+ responseText = jsonBuffer.toString('utf-8');
47
48
  } else {
48
- responseJson = await resp.body.json();
49
+ responseText = await resp.body.text();
49
50
  }
51
+ responseJson = JSON.parse(responseText);
50
52
  } catch {
51
53
  if (!responseOk) {
52
54
  throw new Error('HTTP ' + resp.statusCode);
53
55
  }
54
- throw new Error(`Failed to parse body as JSON. encoding: ${contentEncoding}, body: ${await resp.body.text()}`);
56
+ throw new Error(`Failed to parse body as JSON. encoding: ${contentEncoding}, body: ${responseText}`);
55
57
  }
56
58
  if (!responseOk) {
57
59
  const errorMessage = `Error ${resp.statusCode} response from server ${host}: ${responseJson}`;