@aztec/foundation 0.0.1-commit.f2ce05ee → 0.0.1-commit.f5a9928

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 (329) hide show
  1. package/dest/array/sorted_array.d.ts +6 -1
  2. package/dest/array/sorted_array.d.ts.map +1 -1
  3. package/dest/array/sorted_array.js +18 -15
  4. package/dest/bigint-buffer/index.d.ts +1 -1
  5. package/dest/bigint-buffer/index.d.ts.map +1 -1
  6. package/dest/bigint-buffer/index.js +6 -1
  7. package/dest/branded-types/block_number.d.ts +3 -3
  8. package/dest/branded-types/block_number.d.ts.map +1 -1
  9. package/dest/branded-types/block_number.js +15 -4
  10. package/dest/branded-types/buffer32_hash.d.ts +27 -0
  11. package/dest/branded-types/buffer32_hash.d.ts.map +1 -0
  12. package/dest/branded-types/buffer32_hash.js +12 -0
  13. package/dest/branded-types/checkpoint_number.d.ts +9 -3
  14. package/dest/branded-types/checkpoint_number.d.ts.map +1 -1
  15. package/dest/branded-types/checkpoint_number.js +11 -0
  16. package/dest/branded-types/epoch.d.ts +2 -2
  17. package/dest/branded-types/epoch.d.ts.map +1 -1
  18. package/dest/branded-types/index.d.ts +2 -1
  19. package/dest/branded-types/index.d.ts.map +1 -1
  20. package/dest/branded-types/index.js +1 -0
  21. package/dest/branded-types/index_within_checkpoint.d.ts +2 -2
  22. package/dest/branded-types/index_within_checkpoint.d.ts.map +1 -1
  23. package/dest/branded-types/slot.d.ts +5 -2
  24. package/dest/branded-types/slot.d.ts.map +1 -1
  25. package/dest/branded-types/slot.js +3 -0
  26. package/dest/buffer/buffer16.d.ts +3 -1
  27. package/dest/buffer/buffer16.d.ts.map +1 -1
  28. package/dest/buffer/buffer32.d.ts +28 -61
  29. package/dest/buffer/buffer32.d.ts.map +1 -1
  30. package/dest/buffer/buffer32.js +29 -63
  31. package/dest/buffer/index.d.ts +2 -1
  32. package/dest/buffer/index.d.ts.map +1 -1
  33. package/dest/buffer/index.js +1 -0
  34. package/dest/buffer/utils.d.ts +3 -0
  35. package/dest/buffer/utils.d.ts.map +1 -0
  36. package/dest/buffer/utils.js +7 -0
  37. package/dest/collection/array.d.ts +11 -1
  38. package/dest/collection/array.d.ts.map +1 -1
  39. package/dest/collection/array.js +33 -0
  40. package/dest/collection/index.d.ts +3 -1
  41. package/dest/collection/index.d.ts.map +1 -1
  42. package/dest/collection/index.js +2 -0
  43. package/dest/collection/lru_map.d.ts +41 -0
  44. package/dest/collection/lru_map.d.ts.map +1 -0
  45. package/dest/collection/lru_map.js +119 -0
  46. package/dest/collection/lru_set.d.ts +35 -0
  47. package/dest/collection/lru_set.d.ts.map +1 -0
  48. package/dest/collection/lru_set.js +95 -0
  49. package/dest/committable/committable.js +1 -1
  50. package/dest/config/env_var.d.ts +2 -2
  51. package/dest/config/env_var.d.ts.map +1 -1
  52. package/dest/config/index.d.ts +67 -37
  53. package/dest/config/index.d.ts.map +1 -1
  54. package/dest/config/index.js +86 -70
  55. package/dest/config/network_config.d.ts +15 -41
  56. package/dest/config/network_config.d.ts.map +1 -1
  57. package/dest/config/network_config.js +4 -1
  58. package/dest/config/network_name.d.ts +2 -2
  59. package/dest/config/network_name.d.ts.map +1 -1
  60. package/dest/config/network_name.js +3 -3
  61. package/dest/config/secret_value.d.ts +2 -2
  62. package/dest/config/secret_value.d.ts.map +1 -1
  63. package/dest/crypto/aes128/index.d.ts +2 -1
  64. package/dest/crypto/aes128/index.d.ts.map +1 -1
  65. package/dest/crypto/aes128/index.js +11 -2
  66. package/dest/crypto/bls/bn254_keystore.d.ts +10 -177
  67. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -1
  68. package/dest/crypto/bls/bn254_keystore.js +22 -34
  69. package/dest/crypto/poseidon/index.d.ts +1 -1
  70. package/dest/crypto/poseidon/index.d.ts.map +1 -1
  71. package/dest/crypto/poseidon/index.js +40 -33
  72. package/dest/crypto/schnorr/index.d.ts +8 -7
  73. package/dest/crypto/schnorr/index.d.ts.map +1 -1
  74. package/dest/crypto/schnorr/index.js +6 -6
  75. package/dest/crypto/schnorr/signature.d.ts +9 -29
  76. package/dest/crypto/schnorr/signature.d.ts.map +1 -1
  77. package/dest/crypto/schnorr/signature.js +20 -36
  78. package/dest/crypto/secp256k1-signer/utils.d.ts +12 -1
  79. package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
  80. package/dest/crypto/secp256k1-signer/utils.js +26 -0
  81. package/dest/curves/bls12/field.d.ts +3 -3
  82. package/dest/curves/bls12/field.d.ts.map +1 -1
  83. package/dest/curves/bls12/field.js +0 -5
  84. package/dest/curves/bls12/point.d.ts +2 -2
  85. package/dest/curves/bls12/point.d.ts.map +1 -1
  86. package/dest/curves/bn254/field.d.ts +24 -19
  87. package/dest/curves/bn254/field.d.ts.map +1 -1
  88. package/dest/curves/bn254/field.js +28 -19
  89. package/dest/curves/grumpkin/point.d.ts +14 -28
  90. package/dest/curves/grumpkin/point.d.ts.map +1 -1
  91. package/dest/curves/grumpkin/point.js +29 -43
  92. package/dest/eth-address/index.d.ts +2 -2
  93. package/dest/eth-address/index.d.ts.map +1 -1
  94. package/dest/eth-address/index.js +0 -3
  95. package/dest/eth-signature/eth_signature.d.ts +3 -2
  96. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  97. package/dest/eth-signature/eth_signature.js +7 -2
  98. package/dest/fifo/fifo_frame_reader.d.ts +41 -0
  99. package/dest/fifo/fifo_frame_reader.d.ts.map +1 -0
  100. package/dest/fifo/fifo_frame_reader.js +74 -0
  101. package/dest/fifo/index.d.ts +2 -0
  102. package/dest/fifo/index.d.ts.map +1 -0
  103. package/dest/fifo/index.js +1 -0
  104. package/dest/fifo_set/fifo_set.d.ts +15 -0
  105. package/dest/fifo_set/fifo_set.d.ts.map +1 -0
  106. package/dest/fifo_set/fifo_set.js +39 -0
  107. package/dest/fifo_set/index.d.ts +2 -0
  108. package/dest/fifo_set/index.d.ts.map +1 -0
  109. package/dest/fifo_set/index.js +1 -0
  110. package/dest/iterable/first.d.ts +8 -0
  111. package/dest/iterable/first.d.ts.map +1 -0
  112. package/dest/iterable/first.js +11 -0
  113. package/dest/iterable/index.d.ts +2 -1
  114. package/dest/iterable/index.d.ts.map +1 -1
  115. package/dest/iterable/index.js +1 -0
  116. package/dest/jest/setup.js +24 -0
  117. package/dest/json-rpc/client/fetch.d.ts +8 -3
  118. package/dest/json-rpc/client/fetch.d.ts.map +1 -1
  119. package/dest/json-rpc/client/fetch.js +11 -7
  120. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +2 -1
  121. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  122. package/dest/json-rpc/client/safe_json_rpc_client.js +3 -3
  123. package/dest/json-rpc/client/undici.d.ts +14 -3
  124. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  125. package/dest/json-rpc/client/undici.js +47 -14
  126. package/dest/json-rpc/fixtures/test_state.d.ts +4 -8
  127. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
  128. package/dest/json-rpc/fixtures/test_state.js +57 -17
  129. package/dest/json-rpc/server/api_key_auth.d.ts +19 -0
  130. package/dest/json-rpc/server/api_key_auth.d.ts.map +1 -0
  131. package/dest/json-rpc/server/api_key_auth.js +57 -0
  132. package/dest/json-rpc/server/index.d.ts +2 -1
  133. package/dest/json-rpc/server/index.d.ts.map +1 -1
  134. package/dest/json-rpc/server/index.js +1 -0
  135. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +49 -11
  136. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  137. package/dest/json-rpc/server/safe_json_rpc_server.js +159 -40
  138. package/dest/log/aws-logger-config.d.ts +8 -0
  139. package/dest/log/aws-logger-config.d.ts.map +1 -0
  140. package/dest/log/aws-logger-config.js +55 -0
  141. package/dest/log/bigint-utils.d.ts +5 -0
  142. package/dest/log/bigint-utils.d.ts.map +1 -0
  143. package/dest/log/bigint-utils.js +21 -0
  144. package/dest/log/gcloud-logger-config.d.ts +1 -1
  145. package/dest/log/gcloud-logger-config.d.ts.map +1 -1
  146. package/dest/log/gcloud-logger-config.js +3 -0
  147. package/dest/log/pino-logger.d.ts +1 -1
  148. package/dest/log/pino-logger.d.ts.map +1 -1
  149. package/dest/log/pino-logger.js +31 -6
  150. package/dest/noir/noir_package_config.d.ts +19 -104
  151. package/dest/noir/noir_package_config.d.ts.map +1 -1
  152. package/dest/noir/noir_package_config.js +1 -1
  153. package/dest/promise/running-promise.d.ts +8 -2
  154. package/dest/promise/running-promise.d.ts.map +1 -1
  155. package/dest/promise/running-promise.js +17 -5
  156. package/dest/promise/utils.d.ts +14 -1
  157. package/dest/promise/utils.d.ts.map +1 -1
  158. package/dest/promise/utils.js +20 -0
  159. package/dest/queue/base_memory_queue.d.ts +2 -2
  160. package/dest/queue/base_memory_queue.d.ts.map +1 -1
  161. package/dest/queue/batch_queue.d.ts +1 -1
  162. package/dest/queue/batch_queue.d.ts.map +1 -1
  163. package/dest/queue/batch_queue.js +1 -0
  164. package/dest/retry/index.d.ts +31 -3
  165. package/dest/retry/index.d.ts.map +1 -1
  166. package/dest/retry/index.js +44 -2
  167. package/dest/schemas/api.d.ts +12 -10
  168. package/dest/schemas/api.d.ts.map +1 -1
  169. package/dest/schemas/api.js +7 -1
  170. package/dest/schemas/parse.d.ts +4 -4
  171. package/dest/schemas/parse.d.ts.map +1 -1
  172. package/dest/schemas/parse.js +6 -5
  173. package/dest/schemas/schemas.d.ts +15 -15
  174. package/dest/schemas/types.d.ts +3 -3
  175. package/dest/schemas/types.d.ts.map +1 -1
  176. package/dest/schemas/utils.d.ts +7 -11
  177. package/dest/schemas/utils.d.ts.map +1 -1
  178. package/dest/schemas/utils.js +2 -18
  179. package/dest/serialize/buffer_reader.d.ts +8 -1
  180. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  181. package/dest/serialize/buffer_reader.js +18 -0
  182. package/dest/serialize/buffer_sink.d.ts +134 -0
  183. package/dest/serialize/buffer_sink.d.ts.map +1 -0
  184. package/dest/serialize/buffer_sink.js +297 -0
  185. package/dest/serialize/index.d.ts +2 -1
  186. package/dest/serialize/index.d.ts.map +1 -1
  187. package/dest/serialize/index.js +1 -0
  188. package/dest/serialize/serialize.d.ts +19 -32
  189. package/dest/serialize/serialize.d.ts.map +1 -1
  190. package/dest/serialize/serialize.js +31 -21
  191. package/dest/sleep/index.d.ts +2 -1
  192. package/dest/sleep/index.d.ts.map +1 -1
  193. package/dest/sleep/index.js +10 -1
  194. package/dest/string/index.js +1 -1
  195. package/dest/testing/files/index.d.ts +2 -3
  196. package/dest/testing/files/index.d.ts.map +1 -1
  197. package/dest/testing/files/index.js +1 -2
  198. package/dest/timer/date.d.ts +3 -1
  199. package/dest/timer/date.d.ts.map +1 -1
  200. package/dest/timer/date.js +4 -0
  201. package/dest/timer/index.d.ts +2 -2
  202. package/dest/timer/index.d.ts.map +1 -1
  203. package/dest/timer/index.js +1 -1
  204. package/dest/timer/timeout.d.ts +3 -1
  205. package/dest/timer/timeout.d.ts.map +1 -1
  206. package/dest/timer/timeout.js +26 -0
  207. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +11 -2
  208. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
  209. package/dest/transport/index.d.ts +1 -2
  210. package/dest/transport/index.d.ts.map +1 -1
  211. package/dest/transport/index.js +0 -1
  212. package/dest/transport/transport_client.js +2 -2
  213. package/dest/trees/balanced_merkle_tree_root.d.ts +2 -3
  214. package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -1
  215. package/dest/trees/balanced_merkle_tree_root.js +2 -3
  216. package/dest/trees/hasher.d.ts +3 -2
  217. package/dest/trees/hasher.d.ts.map +1 -1
  218. package/dest/trees/hasher.js +5 -5
  219. package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
  220. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
  221. package/dest/trees/indexed_merkle_tree_calculator.js +5 -1
  222. package/dest/trees/membership_witness.d.ts +2 -6
  223. package/dest/trees/membership_witness.d.ts.map +1 -1
  224. package/dest/trees/membership_witness.js +0 -9
  225. package/dest/trees/merkle_tree_calculator.d.ts +4 -2
  226. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  227. package/dest/trees/merkle_tree_calculator.js +1 -5
  228. package/dest/trees/sibling_path.d.ts +13 -14
  229. package/dest/trees/sibling_path.d.ts.map +1 -1
  230. package/dest/trees/sibling_path.js +23 -28
  231. package/dest/trees/unbalanced_merkle_tree_root.d.ts +2 -3
  232. package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -1
  233. package/dest/trees/unbalanced_merkle_tree_root.js +2 -3
  234. package/dest/types/index.d.ts +23 -1
  235. package/dest/types/index.d.ts.map +1 -1
  236. package/dest/types/index.js +15 -0
  237. package/package.json +6 -4
  238. package/src/array/sorted_array.ts +22 -17
  239. package/src/bigint-buffer/index.ts +6 -1
  240. package/src/branded-types/block_number.ts +20 -2
  241. package/src/branded-types/buffer32_hash.ts +38 -0
  242. package/src/branded-types/checkpoint_number.ts +16 -1
  243. package/src/branded-types/epoch.ts +1 -1
  244. package/src/branded-types/index.ts +1 -0
  245. package/src/branded-types/index_within_checkpoint.ts +1 -1
  246. package/src/branded-types/slot.ts +6 -1
  247. package/src/buffer/buffer16.ts +3 -0
  248. package/src/buffer/buffer32.ts +39 -68
  249. package/src/buffer/index.ts +1 -0
  250. package/src/buffer/utils.ts +8 -0
  251. package/src/collection/array.ts +34 -0
  252. package/src/collection/index.ts +2 -0
  253. package/src/collection/lru_map.ts +143 -0
  254. package/src/collection/lru_set.ts +115 -0
  255. package/src/committable/committable.ts +1 -1
  256. package/src/config/env_var.ts +85 -23
  257. package/src/config/index.ts +157 -121
  258. package/src/config/network_config.ts +3 -0
  259. package/src/config/network_name.ts +6 -6
  260. package/src/config/secret_value.ts +1 -1
  261. package/src/crypto/aes128/index.ts +11 -2
  262. package/src/crypto/bls/bn254_keystore.ts +33 -43
  263. package/src/crypto/poseidon/index.ts +42 -34
  264. package/src/crypto/schnorr/index.ts +9 -8
  265. package/src/crypto/schnorr/signature.ts +17 -46
  266. package/src/crypto/secp256k1-signer/utils.ts +32 -0
  267. package/src/curves/bls12/field.ts +0 -7
  268. package/src/curves/bn254/field.ts +41 -36
  269. package/src/curves/grumpkin/point.ts +23 -40
  270. package/src/eth-address/index.ts +0 -4
  271. package/src/eth-signature/eth_signature.ts +7 -1
  272. package/src/fifo/fifo_frame_reader.ts +98 -0
  273. package/src/fifo/index.ts +1 -0
  274. package/src/fifo_set/fifo_set.ts +52 -0
  275. package/src/fifo_set/index.ts +1 -0
  276. package/src/iterable/first.ts +14 -0
  277. package/src/iterable/index.ts +1 -0
  278. package/src/jest/setup.mjs +27 -0
  279. package/src/json-rpc/client/fetch.ts +19 -5
  280. package/src/json-rpc/client/safe_json_rpc_client.ts +4 -2
  281. package/src/json-rpc/client/undici.ts +54 -12
  282. package/src/json-rpc/fixtures/test_state.ts +10 -10
  283. package/src/json-rpc/server/api_key_auth.ts +63 -0
  284. package/src/json-rpc/server/index.ts +1 -0
  285. package/src/json-rpc/server/safe_json_rpc_server.ts +204 -47
  286. package/src/log/aws-logger-config.ts +32 -0
  287. package/src/log/bigint-utils.ts +25 -0
  288. package/src/log/gcloud-logger-config.ts +5 -0
  289. package/src/log/pino-logger.ts +37 -6
  290. package/src/noir/noir_package_config.ts +32 -20
  291. package/src/promise/running-promise.ts +20 -7
  292. package/src/promise/utils.ts +31 -0
  293. package/src/queue/base_memory_queue.ts +1 -1
  294. package/src/queue/batch_queue.ts +1 -0
  295. package/src/retry/index.ts +66 -4
  296. package/src/schemas/api.ts +25 -25
  297. package/src/schemas/parse.ts +9 -6
  298. package/src/schemas/schemas.ts +4 -4
  299. package/src/schemas/types.ts +2 -2
  300. package/src/schemas/utils.ts +4 -38
  301. package/src/serialize/buffer_reader.ts +20 -0
  302. package/src/serialize/buffer_sink.ts +350 -0
  303. package/src/serialize/index.ts +1 -0
  304. package/src/serialize/serialize.ts +32 -50
  305. package/src/sleep/index.ts +10 -1
  306. package/src/string/index.ts +1 -1
  307. package/src/testing/files/index.ts +1 -2
  308. package/src/timer/date.ts +6 -0
  309. package/src/timer/index.ts +1 -1
  310. package/src/timer/timeout.ts +31 -0
  311. package/src/transport/dispatch/create_dispatch_proxy.ts +11 -1
  312. package/src/transport/index.ts +0 -1
  313. package/src/transport/transport_client.ts +2 -2
  314. package/src/trees/balanced_merkle_tree_root.ts +2 -5
  315. package/src/trees/hasher.ts +6 -3
  316. package/src/trees/indexed_merkle_tree_calculator.ts +5 -1
  317. package/src/trees/membership_witness.ts +0 -8
  318. package/src/trees/merkle_tree_calculator.ts +4 -10
  319. package/src/trees/sibling_path.ts +24 -30
  320. package/src/trees/unbalanced_merkle_tree_root.ts +2 -5
  321. package/src/types/index.ts +47 -0
  322. package/dest/crypto/serialize.d.ts +0 -51
  323. package/dest/crypto/serialize.d.ts.map +0 -1
  324. package/dest/crypto/serialize.js +0 -68
  325. package/dest/transport/dispatch/create_dispatch_fn.d.ts +0 -25
  326. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +0 -1
  327. package/dest/transport/dispatch/create_dispatch_fn.js +0 -17
  328. package/src/crypto/serialize.ts +0 -85
  329. package/src/transport/dispatch/create_dispatch_fn.ts +0 -35
@@ -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';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Returns the first entry of an iterable, or undefined if it yields none, closing the underlying
3
+ * iterator either way. Use this instead of calling `.next()` once and abandoning the iterator:
4
+ * an abandoned generator never runs its finally blocks, so any resource it holds is leaked — e.g.
5
+ * a kv-store iterator's LMDB cursor, where enough leaks deadlock the store.
6
+ */
7
+ export declare function first<T>(iterator: Iterable<T> | AsyncIterableIterator<T> | AsyncIterable<T> | IterableIterator<T>): Promise<T | undefined>;
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pdGVyYWJsZS9maXJzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILHdCQUFzQixLQUFLLENBQUMsQ0FBQyxFQUMzQixRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FDeEYsT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FLeEIifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"first.d.ts","sourceRoot":"","sources":["../../src/iterable/first.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,GACxF,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAKxB"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Returns the first entry of an iterable, or undefined if it yields none, closing the underlying
3
+ * iterator either way. Use this instead of calling `.next()` once and abandoning the iterator:
4
+ * an abandoned generator never runs its finally blocks, so any resource it holds is leaked — e.g.
5
+ * a kv-store iterator's LMDB cursor, where enough leaks deadlock the store.
6
+ */ export async function first(iterator) {
7
+ for await (const i of iterator){
8
+ return i;
9
+ }
10
+ return undefined;
11
+ }
@@ -3,6 +3,7 @@ export * from './filter.js';
3
3
  export * from './sort.js';
4
4
  export * from './take.js';
5
5
  export * from './all.js';
6
+ export * from './first.js';
6
7
  export * from './peek.js';
7
8
  export * from './toArray.js';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pdGVyYWJsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGNBQWMsQ0FBQyJ9
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pdGVyYWJsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGNBQWMsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/iterable/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/iterable/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
@@ -3,5 +3,6 @@ export * from './filter.js';
3
3
  export * from './sort.js';
4
4
  export * from './take.js';
5
5
  export * from './all.js';
6
+ export * from './first.js';
6
7
  export * from './peek.js';
7
8
  export * from './toArray.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
+ }
@@ -5,6 +5,9 @@ export type JsonRpcFetch = (host: string, body: any, extraHeaders?: Record<strin
5
5
  get: (header: string) => string | null | undefined;
6
6
  };
7
7
  }>;
8
+ export type JsonRpcFetchConfig = {
9
+ credentials?: RequestCredentials;
10
+ };
8
11
  /**
9
12
  * A normal fetch function that does not retry.
10
13
  * Alternatives are a fetch function with retries, or a mocked fetch.
@@ -13,9 +16,10 @@ export type JsonRpcFetch = (host: string, body: any, extraHeaders?: Record<strin
13
16
  * @param body - The RPC payload.
14
17
  * @param noRetry - Whether to throw a `NoRetryError` in case the response is a 5xx error and the body contains an error
15
18
  * message (see `retry` function for more details).
19
+ * @param config - Fetch transport configuration.
16
20
  * @returns The parsed JSON response, or throws an error.
17
21
  */
18
- export declare function defaultFetch(host: string, body: unknown, extraHeaders?: Record<string, string>, noRetry?: boolean): Promise<{
22
+ export declare function defaultFetch(host: string, body: unknown, extraHeaders?: Record<string, string>, noRetry?: boolean, config?: JsonRpcFetchConfig): Promise<{
19
23
  response: any;
20
24
  headers: {
21
25
  get: (header: string) => string | null | undefined;
@@ -26,7 +30,8 @@ export declare function defaultFetch(host: string, body: unknown, extraHeaders?:
26
30
  * @param retries - Sequence of intervals (in seconds) to retry.
27
31
  * @param noRetry - Whether to stop retries on server errors.
28
32
  * @param log - Optional logger for logging attempts.
33
+ * @param config - Fetch transport configuration.
29
34
  * @returns A fetch function.
30
35
  */
31
- export declare function makeFetch(retries: number[], defaultNoRetry: boolean, log?: Logger): typeof defaultFetch;
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uLXJwYy9jbGllbnQvZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLG9CQUFvQixDQUFDO0FBTS9ELE1BQU0sTUFBTSxZQUFZLEdBQUcsQ0FDekIsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUsR0FBRyxFQUNULFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQ3JDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sS0FDZCxPQUFPLENBQUM7SUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDO0lBQUMsT0FBTyxFQUFFO1FBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQTtLQUFFLENBQUE7Q0FBRSxDQUFDLENBQUM7QUFFakc7Ozs7Ozs7OztHQVNHO0FBQ0gsd0JBQXNCLFlBQVksQ0FDaEMsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUsT0FBTyxFQUNiLFlBQVksR0FBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBTSxFQUN6QyxPQUFPLFVBQVEsR0FDZCxPQUFPLENBQUM7SUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDO0lBQUMsT0FBTyxFQUFFO1FBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQTtLQUFFLENBQUE7Q0FBRSxDQUFDLENBa0M3RjtBQUVEOzs7Ozs7R0FNRztBQUNILHdCQUFnQixTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLE9BQU8sWUFBWSxDQVV2RyJ9
36
+ export declare function makeFetch(retries: number[], defaultNoRetry: boolean, log?: Logger, config?: JsonRpcFetchConfig): JsonRpcFetch;
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uLXJwYy9jbGllbnQvZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLG9CQUFvQixDQUFDO0FBTS9ELE1BQU0sTUFBTSxZQUFZLEdBQUcsQ0FDekIsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUsR0FBRyxFQUNULFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQ3JDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sS0FDZCxPQUFPLENBQUM7SUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDO0lBQUMsT0FBTyxFQUFFO1FBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQTtLQUFFLENBQUE7Q0FBRSxDQUFDLENBQUM7QUFFakcsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQy9CLFdBQVcsQ0FBQyxFQUFFLGtCQUFrQixDQUFDO0NBQ2xDLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsd0JBQXNCLFlBQVksQ0FDaEMsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUsT0FBTyxFQUNiLFlBQVksR0FBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBTSxFQUN6QyxPQUFPLFVBQVEsRUFDZixNQUFNLEdBQUUsa0JBQXVCLEdBQzlCLE9BQU8sQ0FBQztJQUFFLFFBQVEsRUFBRSxHQUFHLENBQUM7SUFBQyxPQUFPLEVBQUU7UUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFBO0tBQUUsQ0FBQTtDQUFFLENBQUMsQ0FvQzdGO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILHdCQUFnQixTQUFTLENBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFDakIsY0FBYyxFQUFFLE9BQU8sRUFDdkIsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUNaLE1BQU0sR0FBRSxrQkFBdUIsR0FDOUIsWUFBWSxDQVVkIn0=
@@ -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,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACzC,OAAO,UAAQ,EACf,MAAM,GAAE,kBAAuB,GAC9B,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,CAoC7F;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EAAE,EACjB,cAAc,EAAE,OAAO,EACvB,GAAG,CAAC,EAAE,MAAM,EACZ,MAAM,GAAE,kBAAuB,GAC9B,YAAY,CAUd"}
@@ -11,8 +11,9 @@ const log = createLogger('json-rpc:json_rpc_client');
11
11
  * @param body - The RPC payload.
12
12
  * @param noRetry - Whether to throw a `NoRetryError` in case the response is a 5xx error and the body contains an error
13
13
  * message (see `retry` function for more details).
14
+ * @param config - Fetch transport configuration.
14
15
  * @returns The parsed JSON response, or throws an error.
15
- */ export async function defaultFetch(host, body, extraHeaders = {}, noRetry = false) {
16
+ */ export async function defaultFetch(host, body, extraHeaders = {}, noRetry = false, config = {}) {
16
17
  log.debug(format(`JsonRpcClient.fetch`, host, '->', body));
17
18
  let resp;
18
19
  try {
@@ -22,23 +23,25 @@ const log = createLogger('json-rpc:json_rpc_client');
22
23
  headers: {
23
24
  'content-type': 'application/json',
24
25
  ...extraHeaders
25
- }
26
+ },
27
+ credentials: config.credentials
26
28
  });
27
29
  } catch (err) {
28
30
  const errorMessage = `Error fetching from host ${host}: ${inspect(err)}`;
29
31
  throw new Error(errorMessage);
30
32
  }
31
33
  let responseJson;
34
+ const responseText = await resp.text();
32
35
  try {
33
- responseJson = await resp.json();
36
+ responseJson = JSON.parse(responseText);
34
37
  } catch {
35
38
  if (!resp.ok) {
36
39
  throw new Error(resp.statusText);
37
40
  }
38
- throw new Error(`Failed to parse body as JSON: ${await resp.text()}`);
41
+ throw new Error(`Failed to parse body as JSON: ${responseText}`);
39
42
  }
40
43
  if (!resp.ok) {
41
- const errorMessage = `Error ${resp.status} from server ${host}: ${responseJson.error.message}`;
44
+ const errorMessage = `Error ${resp.status} from server ${host}: ${responseJson?.error?.message ?? JSON.stringify(responseJson)}`;
42
45
  if (noRetry || resp.status >= 400 && resp.status < 500) {
43
46
  throw new NoRetryError(errorMessage);
44
47
  } else {
@@ -55,9 +58,10 @@ const log = createLogger('json-rpc:json_rpc_client');
55
58
  * @param retries - Sequence of intervals (in seconds) to retry.
56
59
  * @param noRetry - Whether to stop retries on server errors.
57
60
  * @param log - Optional logger for logging attempts.
61
+ * @param config - Fetch transport configuration.
58
62
  * @returns A fetch function.
59
- */ export function makeFetch(retries, defaultNoRetry, log) {
63
+ */ export function makeFetch(retries, defaultNoRetry, log, config = {}) {
60
64
  return async (host, body, extraHeaders = {}, noRetry)=>{
61
- return await retry(()=>defaultFetch(host, body, extraHeaders, noRetry ?? defaultNoRetry), `JsonRpcClient request to ${host}`, makeBackoff(retries), log, false);
65
+ return await retry(()=>defaultFetch(host, body, extraHeaders, noRetry ?? defaultNoRetry, config), `JsonRpcClient request to ${host}`, makeBackoff(retries), log, false);
62
66
  };
63
67
  }
@@ -8,6 +8,7 @@ export type SafeJsonRpcClientOptions = {
8
8
  batchWindowMS?: number;
9
9
  maxBatchSize?: number;
10
10
  maxRequestBodySize?: number;
11
+ extraHeaders?: Record<string, string>;
11
12
  onResponse?: (res: {
12
13
  response: any;
13
14
  headers: {
@@ -29,4 +30,4 @@ export declare function createSafeJsonRpcClient<T extends object>(host: string,
29
30
  export declare function batch<T extends readonly unknown[]>(values: T): Promise<{
30
31
  -readonly [P in keyof T]: Awaited<T[P]>;
31
32
  }>;
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZV9qc29uX3JwY19jbGllbnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uLXJwYy9jbGllbnQvc2FmZV9qc29uX3JwY19jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXJFLE9BQU8sRUFBa0IsS0FBSyxZQUFZLEVBQW1CLE1BQU0sc0JBQXNCLENBQUM7QUFFMUYsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFnQixNQUFNLFlBQVksQ0FBQztBQWE3RCxNQUFNLE1BQU0sd0JBQXdCLEdBQUc7SUFDckMsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLEtBQUssQ0FBQyxFQUFFLFlBQVksQ0FBQztJQUNyQixHQUFHLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDYixhQUFhLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDdkIsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQzVCLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFO1FBQ2pCLFFBQVEsRUFBRSxHQUFHLENBQUM7UUFDZCxPQUFPLEVBQUU7WUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsU0FBUyxDQUFBO1NBQUUsQ0FBQztLQUNqRSxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUNyQixDQUFDO0FBNkJGOzs7Ozs7R0FNRztBQUNILHdCQUFnQix1QkFBdUIsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUN0RCxJQUFJLEVBQUUsTUFBTSxFQUNaLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQ3ZCLE1BQU0sR0FBRSx3QkFBNkIsR0FDcEMsQ0FBQyxDQW1MSDtBQUVEOztHQUVHO0FBQ0gsd0JBQXNCLEtBQUssQ0FBQyxDQUFDLFNBQVMsU0FBUyxPQUFPLEVBQUUsRUFDdEQsTUFBTSxFQUFFLENBQUMsR0FDUixPQUFPLENBQUM7SUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FBRSxDQUFDLENBdUJ0RCJ9
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZV9qc29uX3JwY19jbGllbnQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qc29uLXJwYy9jbGllbnQvc2FmZV9qc29uX3JwY19jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXJFLE9BQU8sRUFBa0IsS0FBSyxZQUFZLEVBQXdDLE1BQU0sc0JBQXNCLENBQUM7QUFFL0csT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFnQixNQUFNLFlBQVksQ0FBQztBQWE3RCxNQUFNLE1BQU0sd0JBQXdCLEdBQUc7SUFDckMsZ0JBQWdCLENBQUMsRUFBRSxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLEtBQUssQ0FBQyxFQUFFLFlBQVksQ0FBQztJQUNyQixHQUFHLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDYixhQUFhLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDdkIsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQzVCLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUU7UUFDakIsUUFBUSxFQUFFLEdBQUcsQ0FBQztRQUNkLE9BQU8sRUFBRTtZQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEtBQUssTUFBTSxHQUFHLElBQUksR0FBRyxTQUFTLENBQUE7U0FBRSxDQUFDO0tBQ2pFLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ3JCLENBQUM7QUE2QkY7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLHVCQUF1QixDQUFDLENBQUMsU0FBUyxNQUFNLEVBQ3RELElBQUksRUFBRSxNQUFNLEVBQ1osTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDdkIsTUFBTSxHQUFFLHdCQUE2QixHQUNwQyxDQUFDLENBb0xIO0FBRUQ7O0dBRUc7QUFDSCx3QkFBc0IsS0FBSyxDQUFDLENBQUMsU0FBUyxTQUFTLE9BQU8sRUFBRSxFQUN0RCxNQUFNLEVBQUUsQ0FBQyxHQUNSLE9BQU8sQ0FBQztJQUFFLENBQUMsVUFBVSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUFFLENBQUMsQ0F1QnREIn0=
@@ -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,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,CAmLH;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;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,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
@@ -64,7 +64,7 @@ const clients = new Map();
64
64
  methods: rpcCalls.map(({ request })=>request.method)
65
65
  });
66
66
  try {
67
- const { response, headers } = await fetch(host, rpcCalls.map(({ request })=>request));
67
+ const { response, headers } = await fetch(host, rpcCalls.map(({ request })=>request), config.extraHeaders);
68
68
  if (config.onResponse) {
69
69
  await config.onResponse({
70
70
  response,
@@ -178,7 +178,7 @@ const clients = new Map();
178
178
  ].includes(response.result)) {
179
179
  return;
180
180
  }
181
- return schema[methodName].returnType().parseAsync(response.result);
181
+ return getSchemaReturnType(schema[methodName]).parseAsync(response.result);
182
182
  };
183
183
  const clientId = nextClientId++;
184
184
  const proxy = {
@@ -1,5 +1,16 @@
1
- import { Agent } from 'undici';
1
+ import { Agent, type Dispatcher } from 'undici';
2
2
  import type { JsonRpcFetch } from './fetch.js';
3
3
  export { Agent };
4
- export declare function makeUndiciFetch(client?: Agent): JsonRpcFetch;
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kaWNpLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbi1ycGMvY2xpZW50L3VuZGljaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsS0FBSyxFQUFtQixNQUFNLFFBQVEsQ0FBQztBQUtoRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFVL0MsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRWpCLHdCQUFnQixlQUFlLENBQUMsTUFBTSxRQUFjLEdBQUcsWUFBWSxDQWtFbEUifQ==
4
+ /** Asynchronous cookie storage. */
5
+ export interface CookieJar {
6
+ getCookieString(url: string): Promise<string>;
7
+ setCookie(cookie: string, url: string): Promise<unknown>;
8
+ }
9
+ /**
10
+ * Creates an Undici JSON-RPC transport.
11
+ * @param client - Dispatcher used to make requests.
12
+ * @param cookieJar - Optional application-owned cookie storage. Cookies are ignored when omitted.
13
+ * @returns A JSON-RPC fetch implementation.
14
+ */
15
+ export declare function makeUndiciFetch(client?: Dispatcher, cookieJar?: CookieJar): JsonRpcFetch;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kaWNpLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbi1ycGMvY2xpZW50L3VuZGljaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBS2hELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQVUvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFFakIsbUNBQW1DO0FBQ25DLE1BQU0sV0FBVyxTQUFTO0lBQ3hCLGVBQWUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztDQUMxRDtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLGVBQWUsQ0FBQyxNQUFNLEdBQUUsVUFBd0IsRUFBRSxTQUFTLENBQUMsRUFBRSxTQUFTLEdBQUcsWUFBWSxDQWdHckcifQ==
@@ -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,EAAE,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAKhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU/C,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,mCAAmC;AACnC,MAAM,WAAW,SAAS;IACxB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,GAAE,UAAwB,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,YAAY,CAgGrG"}
@@ -9,29 +9,44 @@ const gunzip = promisify(gunzipCb);
9
9
  const log = createLogger('json-rpc:json_rpc_client:undici');
10
10
  /** Minimum request size in bytes to trigger compression. */ const COMPRESSION_THRESHOLD = 1024;
11
11
  export { Agent };
12
- export function makeUndiciFetch(client = new Agent()) {
12
+ /**
13
+ * Creates an Undici JSON-RPC transport.
14
+ * @param client - Dispatcher used to make requests.
15
+ * @param cookieJar - Optional application-owned cookie storage. Cookies are ignored when omitted.
16
+ * @returns A JSON-RPC fetch implementation.
17
+ */ export function makeUndiciFetch(client = new Agent(), cookieJar) {
13
18
  return async (host, body, extraHeaders = {}, noRetry = false)=>{
14
19
  log.trace(`JsonRpcClient.fetch: ${host}`, {
15
20
  host,
16
21
  body
17
22
  });
23
+ const requestUrl = new URL(host);
24
+ requestUrl.hash = '';
18
25
  let resp;
19
26
  try {
27
+ const headers = new Headers();
28
+ for (const [name, value] of Object.entries(extraHeaders)){
29
+ headers.append(name, value);
30
+ }
31
+ const cookie = await cookieJar?.getCookieString(requestUrl.href);
32
+ if (cookie) {
33
+ headers.append('cookie', cookie);
34
+ }
20
35
  const jsonBody = Buffer.from(jsonStringify(body));
21
36
  const shouldCompress = jsonBody.length >= COMPRESSION_THRESHOLD;
37
+ headers.set('content-type', 'application/json');
38
+ if (shouldCompress) {
39
+ headers.set('content-encoding', 'gzip');
40
+ }
41
+ headers.set('accept-encoding', 'gzip');
42
+ const requestHeaders = [];
43
+ headers.forEach((value, name)=>requestHeaders.push(name, value));
22
44
  resp = await client.request({
23
45
  method: 'POST',
24
- origin: new URL(host),
25
- path: '/',
46
+ origin: requestUrl.origin,
47
+ path: `${requestUrl.pathname}${requestUrl.search}`,
26
48
  body: shouldCompress ? await gzip(jsonBody) : jsonBody,
27
- headers: {
28
- ...extraHeaders,
29
- 'content-type': 'application/json',
30
- ...shouldCompress && {
31
- 'content-encoding': 'gzip'
32
- },
33
- 'accept-encoding': 'gzip'
34
- }
49
+ headers: requestHeaders
35
50
  });
36
51
  } catch (err) {
37
52
  const errorMessage = `Error fetching from host ${host}: ${String(err)}`;
@@ -40,18 +55,36 @@ export function makeUndiciFetch(client = new Agent()) {
40
55
  let responseJson;
41
56
  const responseOk = resp.statusCode >= 200 && resp.statusCode <= 299;
42
57
  const contentEncoding = resp.headers['content-encoding'];
58
+ let responseText;
43
59
  try {
44
60
  if (contentEncoding === 'gzip') {
45
61
  const jsonBuffer = await gunzip(await resp.body.arrayBuffer());
46
- responseJson = JSON.parse(jsonBuffer.toString('utf-8'));
62
+ responseText = jsonBuffer.toString('utf-8');
47
63
  } else {
48
- responseJson = await resp.body.json();
64
+ responseText = await resp.body.text();
65
+ }
66
+ } catch (err) {
67
+ if (!responseOk) {
68
+ throw new Error('HTTP ' + resp.statusCode);
69
+ }
70
+ throw new Error(`Failed to read response body. encoding: ${contentEncoding}, error: ${String(err)}`);
71
+ }
72
+ if (cookieJar) {
73
+ const setCookieHeaders = resp.headers['set-cookie'];
74
+ const cookies = typeof setCookieHeaders === 'string' ? [
75
+ setCookieHeaders
76
+ ] : setCookieHeaders ?? [];
77
+ for (const cookie of cookies){
78
+ await cookieJar.setCookie(cookie, requestUrl.href);
49
79
  }
80
+ }
81
+ try {
82
+ responseJson = JSON.parse(responseText);
50
83
  } catch {
51
84
  if (!responseOk) {
52
85
  throw new Error('HTTP ' + resp.statusCode);
53
86
  }
54
- throw new Error(`Failed to parse body as JSON. encoding: ${contentEncoding}, body: ${await resp.body.text()}`);
87
+ throw new Error(`Failed to parse body as JSON. encoding: ${contentEncoding}, body: ${responseText}`);
55
88
  }
56
89
  if (!responseOk) {
57
90
  const errorMessage = `Error ${resp.statusCode} response from server ${host}: ${responseJson}`;
@@ -6,15 +6,11 @@ import { type ApiSchemaFor } from '../../schemas/index.js';
6
6
  export declare class TestNote {
7
7
  private data;
8
8
  constructor(data: string);
9
- static get schema(): z.ZodEffects<z.ZodObject<{
9
+ static get schema(): z.ZodPipe<z.ZodObject<{
10
10
  data: z.ZodString;
11
- }, "strip", z.ZodTypeAny, {
11
+ }, z.core.$strip>, z.ZodTransform<TestNote, {
12
12
  data: string;
13
- }, {
14
- data: string;
15
- }>, TestNote, {
16
- data: string;
17
- }>;
13
+ }>>;
18
14
  toJSON(): {
19
15
  data: string;
20
16
  };
@@ -86,4 +82,4 @@ export declare class TestState implements TestStateApi {
86
82
  getTuple(): Promise<[string, string | undefined, number]>;
87
83
  }
88
84
  export declare const TestStateSchema: ApiSchemaFor<TestStateApi>;
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9zdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2pzb24tcnBjL2ZpeHR1cmVzL3Rlc3Rfc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQXFCLE1BQU0sd0JBQXdCLENBQUM7QUFHOUU7O0dBRUc7QUFDSCxxQkFBYSxRQUFRO0lBQ1AsT0FBTyxDQUFDLElBQUk7SUFBeEIsWUFBb0IsSUFBSSxFQUFFLE1BQU0sRUFBSTtJQUVwQyxNQUFNLEtBQUssTUFBTTs7Ozs7Ozs7T0FFaEI7SUFFRCxNQUFNOztNQUVMO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxJQUFJLE1BQU0sQ0FFakI7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxHQUFHLFFBQVEsQ0FFeEM7Q0FDRjtBQUVELE1BQU0sV0FBVyxZQUFZO0lBQzNCLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEtBQUssT0FBTyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUMxRCxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEtBQUssT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbEQsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxTQUFTLEtBQUssT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUQsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxLQUFLLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDckQsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixTQUFTLEVBQUUsTUFBTSxPQUFPLENBQUM7UUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO1FBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQTtLQUFFLENBQUMsQ0FBQztJQUM1RCxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztDQUMzRDtBQUVEOzs7O0dBSUc7QUFDSCxxQkFBYSxTQUFVLFlBQVcsWUFBWTtJQUN6QixLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQXBDLFlBQW1CLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBSTtJQUN4Qzs7Ozs7OztPQU9HO0lBQ0csT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUc5QztJQUVELElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRXBCO0lBRUssS0FBSyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FHN0I7SUFFSyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUdsRDtJQUVLLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLFNBQVMsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FHOUQ7SUFFSyxTQUFTLENBQUMsS0FBSyxTQUFJLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBRzlDO0lBRUssS0FBSyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHM0I7SUFFRDs7Ozs7Ozs7T0FRRztJQUNHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBTXJEO0lBRUssVUFBVSxrQkFHZjtJQUVLLFNBQVMsSUFBSSxPQUFPLENBQUM7UUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO1FBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQTtLQUFFLENBQUMsQ0FHNUQ7SUFFSyxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FHOUQ7Q0FDRjtBQUVELGVBQU8sTUFBTSxlQUFlLEVBQUUsWUFBWSxDQUFDLFlBQVksQ0FXdEQsQ0FBQyJ9
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9zdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2pzb24tcnBjL2ZpeHR1cmVzL3Rlc3Rfc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQXFCLE1BQU0sd0JBQXdCLENBQUM7QUFHOUU7O0dBRUc7QUFDSCxxQkFBYSxRQUFRO0lBQ1AsT0FBTyxDQUFDLElBQUk7SUFBeEIsWUFBb0IsSUFBSSxFQUFFLE1BQU0sRUFBSTtJQUVwQyxNQUFNLEtBQUssTUFBTTs7OztRQUVoQjtJQUVELE1BQU07O01BRUw7SUFFRDs7O09BR0c7SUFDSCxRQUFRLElBQUksTUFBTSxDQUVqQjtJQUNEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLEdBQUcsUUFBUSxDQUV4QztDQUNGO0FBRUQsTUFBTSxXQUFXLFlBQVk7SUFDM0IsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sS0FBSyxPQUFPLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQzFELFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sS0FBSyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNsRCxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLFNBQVMsS0FBSyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM5RCxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEtBQUssT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbkQsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNyRCxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLFNBQVMsRUFBRSxNQUFNLE9BQU8sQ0FBQztRQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7UUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFBO0tBQUUsQ0FBQyxDQUFDO0lBQzVELFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0NBQzNEO0FBRUQ7Ozs7R0FJRztBQUNILHFCQUFhLFNBQVUsWUFBVyxZQUFZO0lBQ3pCLEtBQUssRUFBRSxRQUFRLEVBQUU7SUFBcEMsWUFBbUIsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFJO0lBQ3hDOzs7Ozs7O09BT0c7SUFDRyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBRzlDO0lBRUQsSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFcEI7SUFFSyxLQUFLLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUc3QjtJQUVLLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBR2xEO0lBRUssU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUc5RDtJQUVLLFNBQVMsQ0FBQyxLQUFLLFNBQUksR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FHOUM7SUFFSyxLQUFLLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUczQjtJQUVEOzs7Ozs7OztPQVFHO0lBQ0csUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FNckQ7SUFFSyxVQUFVLGtCQUdmO0lBRUssU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7UUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFBO0tBQUUsQ0FBQyxDQUc1RDtJQUVLLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUc5RDtDQUNGO0FBRUQsZUFBTyxNQUFNLGVBQWUsRUFBRSxZQUFZLENBQUMsWUFBWSxDQVd0RCxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"test_state.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/fixtures/test_state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,wBAAwB,CAAC;AAG9E;;GAEG;AACH,qBAAa,QAAQ;IACP,OAAO,CAAC,IAAI;IAAxB,YAAoB,IAAI,EAAE,MAAM,EAAI;IAEpC,MAAM,KAAK,MAAM;;;;;;;;OAEhB;IAED,MAAM;;MAEL;IAED;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAEjB;IACD;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAExC;CACF;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC1D,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,QAAQ,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D;AAED;;;;GAIG;AACH,qBAAa,SAAU,YAAW,YAAY;IACzB,KAAK,EAAE,QAAQ,EAAE;IAApC,YAAmB,KAAK,EAAE,QAAQ,EAAE,EAAI;IACxC;;;;;;;OAOG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAG9C;IAED,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpB;IAEK,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAG7B;IAEK,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAGlD;IAEK,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAG9D;IAEK,SAAS,CAAC,KAAK,SAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAG9C;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;IAED;;;;;;;;OAQG;IACG,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAMrD;IAEK,UAAU,kBAGf;IAEK,SAAS,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAG5D;IAEK,QAAQ,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAG9D;CACF;AAED,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,YAAY,CAWtD,CAAC"}
1
+ {"version":3,"file":"test_state.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/fixtures/test_state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,wBAAwB,CAAC;AAG9E;;GAEG;AACH,qBAAa,QAAQ;IACP,OAAO,CAAC,IAAI;IAAxB,YAAoB,IAAI,EAAE,MAAM,EAAI;IAEpC,MAAM,KAAK,MAAM;;;;QAEhB;IAED,MAAM;;MAEL;IAED;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAEjB;IACD;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAExC;CACF;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC1D,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,QAAQ,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D;AAED;;;;GAIG;AACH,qBAAa,SAAU,YAAW,YAAY;IACzB,KAAK,EAAE,QAAQ,EAAE;IAApC,YAAmB,KAAK,EAAE,QAAQ,EAAE,EAAI;IACxC;;;;;;;OAOG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAG9C;IAED,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpB;IAEK,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAG7B;IAEK,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAGlD;IAEK,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAG9D;IAEK,SAAS,CAAC,KAAK,SAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAG9C;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;IAED;;;;;;;;OAQG;IACG,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAMrD;IAEK,UAAU,kBAGf;IAEK,SAAS,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAG5D;IAEK,QAAQ,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAG9D;CACF;AAED,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,YAAY,CAWtD,CAAC"}
@@ -111,21 +111,61 @@ import { sleep } from '../../sleep/index.js';
111
111
  }
112
112
  }
113
113
  export const TestStateSchema = {
114
- getNote: z.function().args(z.number()).returns(TestNote.schema.optional()),
115
- getNotes: z.function().args(optional(schemas.Integer)).returns(z.array(TestNote.schema)),
116
- getNotes2: z.function().args(optional(schemas.BigInt)).returns(z.array(TestNote.schema)),
117
- getNotes3: z.function().args(optional(schemas.Integer)).returns(z.array(TestNote.schema)),
118
- clear: z.function().returns(z.void()),
119
- addNotes: z.function().args(z.array(TestNote.schema)).returns(z.array(TestNote.schema)),
120
- fail: z.function().returns(z.void()),
121
- count: z.function().returns(z.number()),
122
- getStatus: z.function().returns(z.object({
123
- status: z.string(),
124
- count: schemas.BigInt
125
- })),
126
- getTuple: z.function().returns(z.tuple([
127
- z.string(),
128
- optional(z.string()),
129
- z.number()
130
- ]))
114
+ getNote: z.function({
115
+ input: z.tuple([
116
+ z.number()
117
+ ]),
118
+ output: TestNote.schema.optional()
119
+ }),
120
+ getNotes: z.function({
121
+ input: z.tuple([
122
+ optional(schemas.Integer)
123
+ ]),
124
+ output: z.array(TestNote.schema)
125
+ }),
126
+ getNotes2: z.function({
127
+ input: z.tuple([
128
+ optional(schemas.BigInt)
129
+ ]),
130
+ output: z.array(TestNote.schema)
131
+ }),
132
+ getNotes3: z.function({
133
+ input: z.tuple([
134
+ optional(schemas.Integer)
135
+ ]),
136
+ output: z.array(TestNote.schema)
137
+ }),
138
+ clear: z.function({
139
+ input: z.tuple([]),
140
+ output: z.void()
141
+ }),
142
+ addNotes: z.function({
143
+ input: z.tuple([
144
+ z.array(TestNote.schema)
145
+ ]),
146
+ output: z.array(TestNote.schema)
147
+ }),
148
+ fail: z.function({
149
+ input: z.tuple([]),
150
+ output: z.void()
151
+ }),
152
+ count: z.function({
153
+ input: z.tuple([]),
154
+ output: z.number()
155
+ }),
156
+ getStatus: z.function({
157
+ input: z.tuple([]),
158
+ output: z.object({
159
+ status: z.string(),
160
+ count: schemas.BigInt
161
+ })
162
+ }),
163
+ getTuple: z.function({
164
+ input: z.tuple([]),
165
+ output: z.tuple([
166
+ z.string(),
167
+ optional(z.string()),
168
+ z.number()
169
+ ])
170
+ })
131
171
  };
@@ -0,0 +1,19 @@
1
+ import type Koa from 'koa';
2
+ /**
3
+ * Computes the SHA-256 hash of a string and returns it as a Buffer.
4
+ * @param input - The input string to hash.
5
+ * @returns The SHA-256 hash as a Buffer.
6
+ */
7
+ export declare function sha256Hash(input: string): Buffer;
8
+ /**
9
+ * Creates a Koa middleware that enforces API key authentication on all requests
10
+ * except the health check endpoint (GET /status).
11
+ *
12
+ * The API key can be provided via the `x-api-key` header or the `Authorization: Bearer <key>` header.
13
+ * Comparison is done by hashing the provided key with SHA-256 and comparing against the stored hash.
14
+ *
15
+ * @param apiKeyHash - The SHA-256 hash of the expected API key as a Buffer.
16
+ * @returns A Koa middleware that rejects requests without a valid API key.
17
+ */
18
+ export declare function getApiKeyAuthMiddleware(apiKeyHash: Buffer): (ctx: Koa.Context, next: () => Promise<void>) => Promise<void>;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpX2tleV9hdXRoLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvanNvbi1ycGMvc2VydmVyL2FwaV9rZXlfYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQztBQU8zQjs7OztHQUlHO0FBQ0gsd0JBQWdCLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FFaEQ7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCx3QkFBZ0IsdUJBQXVCLENBQ3JDLFVBQVUsRUFBRSxNQUFNLEdBQ2pCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FpQ2hFIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api_key_auth.d.ts","sourceRoot":"","sources":["../../../src/json-rpc/server/api_key_auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAO3B;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,GACjB,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAiChE"}