@aztec/foundation 0.0.1-commit.343b43af6 → 0.0.1-commit.350e0a4d

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 (268) 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 +5 -2
  21. package/dest/branded-types/slot.d.ts.map +1 -1
  22. package/dest/branded-types/slot.js +3 -0
  23. package/dest/buffer/buffer16.d.ts +3 -1
  24. package/dest/buffer/buffer16.d.ts.map +1 -1
  25. package/dest/buffer/buffer32.d.ts +28 -61
  26. package/dest/buffer/buffer32.d.ts.map +1 -1
  27. package/dest/buffer/buffer32.js +29 -63
  28. package/dest/buffer/index.d.ts +2 -1
  29. package/dest/buffer/index.d.ts.map +1 -1
  30. package/dest/buffer/index.js +1 -0
  31. package/dest/buffer/utils.d.ts +3 -0
  32. package/dest/buffer/utils.d.ts.map +1 -0
  33. package/dest/buffer/utils.js +7 -0
  34. package/dest/collection/array.d.ts +11 -1
  35. package/dest/collection/array.d.ts.map +1 -1
  36. package/dest/collection/array.js +33 -0
  37. package/dest/collection/index.d.ts +3 -1
  38. package/dest/collection/index.d.ts.map +1 -1
  39. package/dest/collection/index.js +2 -0
  40. package/dest/collection/lru_map.d.ts +41 -0
  41. package/dest/collection/lru_map.d.ts.map +1 -0
  42. package/dest/collection/lru_map.js +119 -0
  43. package/dest/collection/lru_set.d.ts +35 -0
  44. package/dest/collection/lru_set.d.ts.map +1 -0
  45. package/dest/collection/lru_set.js +95 -0
  46. package/dest/committable/committable.js +1 -1
  47. package/dest/config/env_var.d.ts +2 -2
  48. package/dest/config/env_var.d.ts.map +1 -1
  49. package/dest/config/index.d.ts +67 -37
  50. package/dest/config/index.d.ts.map +1 -1
  51. package/dest/config/index.js +72 -71
  52. package/dest/config/network_config.d.ts +11 -49
  53. package/dest/config/network_config.d.ts.map +1 -1
  54. package/dest/config/network_config.js +1 -0
  55. package/dest/config/network_name.d.ts +2 -2
  56. package/dest/config/network_name.d.ts.map +1 -1
  57. package/dest/config/network_name.js +1 -3
  58. package/dest/config/secret_value.d.ts +2 -2
  59. package/dest/config/secret_value.d.ts.map +1 -1
  60. package/dest/crypto/aes128/index.d.ts +2 -1
  61. package/dest/crypto/aes128/index.d.ts.map +1 -1
  62. package/dest/crypto/aes128/index.js +11 -2
  63. package/dest/crypto/bls/bn254_keystore.d.ts +10 -177
  64. package/dest/crypto/bls/bn254_keystore.d.ts.map +1 -1
  65. package/dest/crypto/bls/bn254_keystore.js +22 -34
  66. package/dest/crypto/keys/index.d.ts +3 -2
  67. package/dest/crypto/keys/index.d.ts.map +1 -1
  68. package/dest/crypto/keys/index.js +30 -6
  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/curves/bls12/field.d.ts +3 -3
  79. package/dest/curves/bls12/field.d.ts.map +1 -1
  80. package/dest/curves/bls12/field.js +0 -5
  81. package/dest/curves/bls12/point.d.ts +2 -2
  82. package/dest/curves/bls12/point.d.ts.map +1 -1
  83. package/dest/curves/bn254/field.d.ts +23 -19
  84. package/dest/curves/bn254/field.d.ts.map +1 -1
  85. package/dest/curves/bn254/field.js +23 -17
  86. package/dest/curves/grumpkin/point.d.ts +14 -28
  87. package/dest/curves/grumpkin/point.d.ts.map +1 -1
  88. package/dest/curves/grumpkin/point.js +29 -43
  89. package/dest/eth-address/index.d.ts +2 -2
  90. package/dest/eth-address/index.d.ts.map +1 -1
  91. package/dest/eth-address/index.js +0 -3
  92. package/dest/eth-signature/eth_signature.d.ts +2 -2
  93. package/dest/eth-signature/eth_signature.d.ts.map +1 -1
  94. package/dest/fifo/fifo_frame_reader.d.ts +41 -0
  95. package/dest/fifo/fifo_frame_reader.d.ts.map +1 -0
  96. package/dest/fifo/fifo_frame_reader.js +91 -0
  97. package/dest/fifo/index.d.ts +2 -0
  98. package/dest/fifo/index.d.ts.map +1 -0
  99. package/dest/fifo/index.js +1 -0
  100. package/dest/fifo_set/fifo_set.d.ts +15 -0
  101. package/dest/fifo_set/fifo_set.d.ts.map +1 -0
  102. package/dest/fifo_set/fifo_set.js +39 -0
  103. package/dest/fifo_set/index.d.ts +2 -0
  104. package/dest/fifo_set/index.d.ts.map +1 -0
  105. package/dest/fifo_set/index.js +1 -0
  106. package/dest/json-rpc/client/fetch.d.ts +1 -1
  107. package/dest/json-rpc/client/fetch.d.ts.map +1 -1
  108. package/dest/json-rpc/client/fetch.js +4 -3
  109. package/dest/json-rpc/client/safe_json_rpc_client.d.ts +1 -1
  110. package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
  111. package/dest/json-rpc/client/safe_json_rpc_client.js +2 -2
  112. package/dest/json-rpc/client/undici.d.ts +1 -1
  113. package/dest/json-rpc/client/undici.d.ts.map +1 -1
  114. package/dest/json-rpc/client/undici.js +5 -3
  115. package/dest/json-rpc/fixtures/test_state.d.ts +4 -8
  116. package/dest/json-rpc/fixtures/test_state.d.ts.map +1 -1
  117. package/dest/json-rpc/fixtures/test_state.js +57 -17
  118. package/dest/json-rpc/server/safe_json_rpc_server.d.ts +8 -3
  119. package/dest/json-rpc/server/safe_json_rpc_server.d.ts.map +1 -1
  120. package/dest/json-rpc/server/safe_json_rpc_server.js +27 -13
  121. package/dest/log/pino-logger.d.ts +1 -1
  122. package/dest/log/pino-logger.d.ts.map +1 -1
  123. package/dest/log/pino-logger.js +17 -2
  124. package/dest/noir/noir_package_config.d.ts +19 -104
  125. package/dest/noir/noir_package_config.d.ts.map +1 -1
  126. package/dest/noir/noir_package_config.js +1 -1
  127. package/dest/promise/running-promise.d.ts +5 -4
  128. package/dest/promise/running-promise.d.ts.map +1 -1
  129. package/dest/promise/running-promise.js +7 -3
  130. package/dest/queue/batch_queue.d.ts +1 -1
  131. package/dest/queue/batch_queue.d.ts.map +1 -1
  132. package/dest/queue/batch_queue.js +1 -0
  133. package/dest/retry/index.d.ts +31 -3
  134. package/dest/retry/index.d.ts.map +1 -1
  135. package/dest/retry/index.js +44 -2
  136. package/dest/schemas/api.d.ts +12 -10
  137. package/dest/schemas/api.d.ts.map +1 -1
  138. package/dest/schemas/api.js +7 -1
  139. package/dest/schemas/parse.d.ts +4 -4
  140. package/dest/schemas/parse.d.ts.map +1 -1
  141. package/dest/schemas/parse.js +6 -5
  142. package/dest/schemas/schemas.d.ts +15 -15
  143. package/dest/schemas/types.d.ts +3 -3
  144. package/dest/schemas/types.d.ts.map +1 -1
  145. package/dest/schemas/utils.d.ts +7 -11
  146. package/dest/schemas/utils.d.ts.map +1 -1
  147. package/dest/schemas/utils.js +2 -18
  148. package/dest/serialize/buffer_sink.d.ts +134 -0
  149. package/dest/serialize/buffer_sink.d.ts.map +1 -0
  150. package/dest/serialize/buffer_sink.js +297 -0
  151. package/dest/serialize/index.d.ts +2 -1
  152. package/dest/serialize/index.d.ts.map +1 -1
  153. package/dest/serialize/index.js +1 -0
  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/index.d.ts +2 -2
  159. package/dest/timer/index.d.ts.map +1 -1
  160. package/dest/timer/index.js +1 -1
  161. package/dest/timer/timeout.d.ts +3 -1
  162. package/dest/timer/timeout.d.ts.map +1 -1
  163. package/dest/timer/timeout.js +26 -0
  164. package/dest/transport/dispatch/create_dispatch_proxy.d.ts +11 -2
  165. package/dest/transport/dispatch/create_dispatch_proxy.d.ts.map +1 -1
  166. package/dest/transport/index.d.ts +1 -2
  167. package/dest/transport/index.d.ts.map +1 -1
  168. package/dest/transport/index.js +0 -1
  169. package/dest/trees/balanced_merkle_tree_root.d.ts +2 -3
  170. package/dest/trees/balanced_merkle_tree_root.d.ts.map +1 -1
  171. package/dest/trees/balanced_merkle_tree_root.js +2 -3
  172. package/dest/trees/hasher.d.ts +3 -2
  173. package/dest/trees/hasher.d.ts.map +1 -1
  174. package/dest/trees/hasher.js +5 -5
  175. package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
  176. package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
  177. package/dest/trees/indexed_merkle_tree_calculator.js +5 -1
  178. package/dest/trees/membership_witness.d.ts +2 -6
  179. package/dest/trees/membership_witness.d.ts.map +1 -1
  180. package/dest/trees/membership_witness.js +0 -9
  181. package/dest/trees/merkle_tree_calculator.d.ts +4 -2
  182. package/dest/trees/merkle_tree_calculator.d.ts.map +1 -1
  183. package/dest/trees/merkle_tree_calculator.js +1 -5
  184. package/dest/trees/sibling_path.d.ts +5 -4
  185. package/dest/trees/sibling_path.d.ts.map +1 -1
  186. package/dest/trees/sibling_path.js +10 -8
  187. package/dest/trees/unbalanced_merkle_tree_root.d.ts +2 -3
  188. package/dest/trees/unbalanced_merkle_tree_root.d.ts.map +1 -1
  189. package/dest/trees/unbalanced_merkle_tree_root.js +2 -3
  190. package/dest/types/index.d.ts +23 -1
  191. package/dest/types/index.d.ts.map +1 -1
  192. package/dest/types/index.js +15 -0
  193. package/package.json +6 -4
  194. package/src/bigint-buffer/index.ts +6 -1
  195. package/src/branded-types/block_number.ts +20 -2
  196. package/src/branded-types/buffer32_hash.ts +38 -0
  197. package/src/branded-types/checkpoint_number.ts +16 -1
  198. package/src/branded-types/epoch.ts +1 -1
  199. package/src/branded-types/index.ts +1 -0
  200. package/src/branded-types/index_within_checkpoint.ts +1 -1
  201. package/src/branded-types/slot.ts +6 -1
  202. package/src/buffer/buffer16.ts +3 -0
  203. package/src/buffer/buffer32.ts +39 -68
  204. package/src/buffer/index.ts +1 -0
  205. package/src/buffer/utils.ts +8 -0
  206. package/src/collection/array.ts +34 -0
  207. package/src/collection/index.ts +2 -0
  208. package/src/collection/lru_map.ts +143 -0
  209. package/src/collection/lru_set.ts +115 -0
  210. package/src/committable/committable.ts +1 -1
  211. package/src/config/env_var.ts +51 -23
  212. package/src/config/index.ts +143 -122
  213. package/src/config/network_config.ts +1 -0
  214. package/src/config/network_name.ts +2 -5
  215. package/src/config/secret_value.ts +1 -1
  216. package/src/crypto/aes128/index.ts +11 -2
  217. package/src/crypto/bls/bn254_keystore.ts +33 -43
  218. package/src/crypto/keys/index.ts +20 -4
  219. package/src/crypto/poseidon/index.ts +42 -34
  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 +23 -40
  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/json-rpc/client/fetch.ts +4 -3
  231. package/src/json-rpc/client/safe_json_rpc_client.ts +2 -2
  232. package/src/json-rpc/client/undici.ts +5 -3
  233. package/src/json-rpc/fixtures/test_state.ts +10 -10
  234. package/src/json-rpc/server/safe_json_rpc_server.ts +31 -13
  235. package/src/log/pino-logger.ts +19 -2
  236. package/src/noir/noir_package_config.ts +32 -20
  237. package/src/promise/running-promise.ts +8 -5
  238. package/src/queue/batch_queue.ts +1 -0
  239. package/src/retry/index.ts +66 -4
  240. package/src/schemas/api.ts +25 -25
  241. package/src/schemas/parse.ts +9 -6
  242. package/src/schemas/schemas.ts +4 -4
  243. package/src/schemas/types.ts +2 -2
  244. package/src/schemas/utils.ts +4 -38
  245. package/src/serialize/buffer_sink.ts +350 -0
  246. package/src/serialize/index.ts +1 -0
  247. package/src/string/index.ts +1 -1
  248. package/src/testing/files/index.ts +1 -2
  249. package/src/timer/index.ts +1 -1
  250. package/src/timer/timeout.ts +31 -0
  251. package/src/transport/dispatch/create_dispatch_proxy.ts +11 -1
  252. package/src/transport/index.ts +0 -1
  253. package/src/trees/balanced_merkle_tree_root.ts +2 -5
  254. package/src/trees/hasher.ts +6 -3
  255. package/src/trees/indexed_merkle_tree_calculator.ts +5 -1
  256. package/src/trees/membership_witness.ts +0 -8
  257. package/src/trees/merkle_tree_calculator.ts +4 -10
  258. package/src/trees/sibling_path.ts +11 -6
  259. package/src/trees/unbalanced_merkle_tree_root.ts +2 -5
  260. package/src/types/index.ts +47 -0
  261. package/dest/crypto/serialize.d.ts +0 -51
  262. package/dest/crypto/serialize.d.ts.map +0 -1
  263. package/dest/crypto/serialize.js +0 -68
  264. package/dest/transport/dispatch/create_dispatch_fn.d.ts +0 -25
  265. package/dest/transport/dispatch/create_dispatch_fn.d.ts.map +0 -1
  266. package/dest/transport/dispatch/create_dispatch_fn.js +0 -17
  267. package/src/crypto/serialize.ts +0 -85
  268. package/src/transport/dispatch/create_dispatch_fn.ts +0 -35
@@ -1,4 +1,5 @@
1
1
  import { type Logger } from '../log/index.js';
2
+ import { type DateProvider } from '../timer/index.js';
2
3
  /** An error that indicates that the operation should not be retried. */
3
4
  export declare class NoRetryError extends Error {
4
5
  }
@@ -30,6 +31,19 @@ export declare function makeBackoff(retries: number[]): Generator<number, void,
30
31
  * @throws If `NoRetryError` is thrown by the `fn`, it is rethrown.
31
32
  */
32
33
  export declare function retry<Result>(fn: () => Promise<Result>, name?: string, backoff?: Generator<number, void, unknown>, log?: Logger, failSilently?: boolean): Promise<Result>;
34
+ /**
35
+ * Timeout specification accepted by {@link retryUntil}. Either a plain number of seconds, an explicit
36
+ * `{ timeout }` in seconds, or an absolute `{ deadline }` with an optional {@link DateProvider} used to
37
+ * read the current time. A deadline is converted to the remaining seconds at call time; a deadline that
38
+ * has already passed yields a zero remaining budget, matching the immediate-timeout semantics of a
39
+ * non-positive numeric timeout.
40
+ */
41
+ export type RetryUntilTimeout = number | {
42
+ timeout: number;
43
+ } | {
44
+ deadline: Date;
45
+ dateProvider?: DateProvider;
46
+ };
33
47
  /**
34
48
  * Retry an asynchronous function until it returns a truthy value or the specified timeout is exceeded.
35
49
  * The function is retried periodically with a fixed interval between attempts. The operation can be named for better error messages.
@@ -37,11 +51,25 @@ export declare function retry<Result>(fn: () => Promise<Result>, name?: string,
37
51
  *
38
52
  * @param fn - The asynchronous function to be retried, which should return a truthy value upon success or undefined otherwise.
39
53
  * @param name - The optional name of the operation, used for generating timeout error message.
40
- * @param timeout - The optional maximum time, in seconds, to keep retrying before throwing a timeout error. Defaults to 0 (never timeout).
54
+ * @param timeout - The maximum time to keep retrying before throwing a timeout error. Accepts a number of
55
+ * seconds (0 = never time out), an explicit `{ timeout }` in seconds, or an absolute `{ deadline }` with an
56
+ * optional `dateProvider`. A deadline already in the past times out on the first interval, the same as a
57
+ * zero/negative numeric timeout. Defaults to 0 (never timeout).
41
58
  * @param interval - The optional interval, in seconds, between retry attempts. Defaults to 1 second.
42
59
  * @returns A Promise that resolves with the successful (truthy) result of the provided function, or rejects if timeout is exceeded.
43
60
  */
44
- export declare function retryUntil<T>(fn: () => (T | undefined) | Promise<T | undefined>, name?: string, timeout?: number, interval?: number): Promise<NonNullable<Awaited<T>>>;
61
+ export declare function retryUntil<T>(fn: () => (T | undefined) | Promise<T | undefined>, name?: string, timeout?: RetryUntilTimeout, interval?: number): Promise<NonNullable<Awaited<T>>>;
62
+ /**
63
+ * Retry an asynchronous function until it returns a truthy value or the maximum number of retries is exceeded.
64
+ * The function is retried periodically with a fixed interval between attempts.
65
+ *
66
+ * @param fn - The asynchronous function to be retried, which should return a truthy value upon success or undefined otherwise.
67
+ * @param name - The optional name of the operation, used for generating error messages.
68
+ * @param maxRetries - The maximum number of retry attempts before throwing an error.
69
+ * @param retryInterval - The optional interval, in seconds, between retry attempts. Defaults to 1 second.
70
+ * @returns A Promise that resolves with the successful (truthy) result of the provided function, or rejects if retries are exhausted.
71
+ */
72
+ export declare function retryTimes<T>(fn: () => (T | undefined) | Promise<T | undefined>, name: string | undefined, maxRetries: number, retryInterval?: number): Promise<NonNullable<Awaited<T>>>;
45
73
  /**
46
74
  * Convenience wrapper around retryUntil with fast polling for tests.
47
75
  * Uses 10s timeout and 100ms polling interval by default.
@@ -52,4 +80,4 @@ export declare function retryUntil<T>(fn: () => (T | undefined) | Promise<T | un
52
80
  * @param interval - Optional interval in seconds. Defaults to 0.1s (100ms).
53
81
  */
54
82
  export declare function retryFastUntil<T>(fn: () => (T | undefined) | Promise<T | undefined>, name?: string, timeout?: number, interval?: number): Promise<NonNullable<Awaited<T>>>;
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXRyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7QUFJNUQsd0VBQXdFO0FBQ3hFLHFCQUFhLFlBQWEsU0FBUSxLQUFLO0NBQUc7QUFFMUM7Ozs7Ozs7R0FPRztBQUNILHdCQUFpQixnQkFBZ0IscUNBTWhDO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFpQixXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxvQ0FJN0M7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILHdCQUFzQixLQUFLLENBQUMsTUFBTSxFQUNoQyxFQUFFLEVBQUUsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQ3pCLElBQUksU0FBYyxFQUNsQixPQUFPLG1DQUFxQixFQUM1QixHQUFHLEdBQUUsTUFBeUMsRUFDOUMsWUFBWSxVQUFRLG1CQW9CckI7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsd0JBQXNCLFVBQVUsQ0FBQyxDQUFDLEVBQ2hDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQ2xELElBQUksU0FBSyxFQUNULE9BQU8sU0FBSSxFQUNYLFFBQVEsU0FBSSxvQ0FlYjtBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLGNBQWMsQ0FBQyxDQUFDLEVBQzlCLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQ2xELElBQUksU0FBSyxFQUNULE9BQU8sU0FBSyxFQUNaLFFBQVEsU0FBTSxvQ0FHZiJ9
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZXRyeS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7QUFFNUQsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFTLE1BQU0sbUJBQW1CLENBQUM7QUFFN0Qsd0VBQXdFO0FBQ3hFLHFCQUFhLFlBQWEsU0FBUSxLQUFLO0NBQUc7QUFFMUM7Ozs7Ozs7R0FPRztBQUNILHdCQUFpQixnQkFBZ0IscUNBTWhDO0FBRUQ7Ozs7R0FJRztBQUNILHdCQUFpQixXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxvQ0FJN0M7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILHdCQUFzQixLQUFLLENBQUMsTUFBTSxFQUNoQyxFQUFFLEVBQUUsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQ3pCLElBQUksU0FBYyxFQUNsQixPQUFPLG1DQUFxQixFQUM1QixHQUFHLEdBQUUsTUFBeUMsRUFDOUMsWUFBWSxVQUFRLG1CQW9CckI7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxHQUFHO0lBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQTtDQUFFLEdBQUc7SUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDO0lBQUMsWUFBWSxDQUFDLEVBQUUsWUFBWSxDQUFBO0NBQUUsQ0FBQztBQXFCL0c7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILHdCQUFzQixVQUFVLENBQUMsQ0FBQyxFQUNoQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUNsRCxJQUFJLFNBQUssRUFDVCxPQUFPLEdBQUUsaUJBQXFCLEVBQzlCLFFBQVEsU0FBSSxvQ0FnQmI7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCx3QkFBc0IsVUFBVSxDQUFDLENBQUMsRUFDaEMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsRUFDbEQsSUFBSSxvQkFBSyxFQUNULFVBQVUsRUFBRSxNQUFNLEVBQ2xCLGFBQWEsU0FBSSxvQ0FjbEI7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFnQixjQUFjLENBQUMsQ0FBQyxFQUM5QixFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUNsRCxJQUFJLFNBQUssRUFDVCxPQUFPLFNBQUssRUFDWixRQUFRLFNBQU0sb0NBR2YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/retry/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,iBAAiB,CAAC;AAI5D,wEAAwE;AACxE,qBAAa,YAAa,SAAQ,KAAK;CAAG;AAE1C;;;;;;;GAOG;AACH,wBAAiB,gBAAgB,qCAMhC;AAED;;;;GAIG;AACH,wBAAiB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,oCAI7C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,KAAK,CAAC,MAAM,EAChC,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EACzB,IAAI,SAAc,EAClB,OAAO,mCAAqB,EAC5B,GAAG,GAAE,MAAyC,EAC9C,YAAY,UAAQ,mBAoBrB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,EAClD,IAAI,SAAK,EACT,OAAO,SAAI,EACX,QAAQ,SAAI,oCAeb;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,EAClD,IAAI,SAAK,EACT,OAAO,SAAK,EACZ,QAAQ,SAAM,oCAGf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/retry/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,mBAAmB,CAAC;AAE7D,wEAAwE;AACxE,qBAAa,YAAa,SAAQ,KAAK;CAAG;AAE1C;;;;;;;GAOG;AACH,wBAAiB,gBAAgB,qCAMhC;AAED;;;;GAIG;AACH,wBAAiB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,oCAI7C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,KAAK,CAAC,MAAM,EAChC,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EACzB,IAAI,SAAc,EAClB,OAAO,mCAAqB,EAC5B,GAAG,GAAE,MAAyC,EAC9C,YAAY,UAAQ,mBAoBrB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAE,CAAC;AAqB/G;;;;;;;;;;;;;GAaG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,EAClD,IAAI,SAAK,EACT,OAAO,GAAE,iBAAqB,EAC9B,QAAQ,SAAI,oCAgBb;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,EAClD,IAAI,oBAAK,EACT,UAAU,EAAE,MAAM,EAClB,aAAa,SAAI,oCAclB;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,EAClD,IAAI,SAAK,EACT,OAAO,SAAK,EACZ,QAAQ,SAAM,oCAGf"}
@@ -68,6 +68,23 @@ import { Timer } from '../timer/index.js';
68
68
  }
69
69
  }
70
70
  }
71
+ /**
72
+ * Resolves a {@link RetryUntilTimeout} to a numeric timeout in seconds for the legacy timer-based loop.
73
+ * A numeric/`{ timeout }` value passes through unchanged (0 means never time out, negative times out on the
74
+ * first interval). A `{ deadline }` is the remaining seconds until the deadline; when the deadline is already
75
+ * at or past `now` it resolves to a negative value so the loop times out immediately instead of being read as
76
+ * the never-timeout sentinel 0.
77
+ */ function resolveRetryUntilTimeoutSeconds(timeout) {
78
+ if (typeof timeout === 'number') {
79
+ return timeout;
80
+ }
81
+ if ('deadline' in timeout) {
82
+ const now = timeout.dateProvider?.now() ?? Date.now();
83
+ const remainingSeconds = (timeout.deadline.getTime() - now) / 1000;
84
+ return remainingSeconds > 0 ? remainingSeconds : -1;
85
+ }
86
+ return timeout.timeout;
87
+ }
71
88
  /**
72
89
  * Retry an asynchronous function until it returns a truthy value or the specified timeout is exceeded.
73
90
  * The function is retried periodically with a fixed interval between attempts. The operation can be named for better error messages.
@@ -75,10 +92,14 @@ import { Timer } from '../timer/index.js';
75
92
  *
76
93
  * @param fn - The asynchronous function to be retried, which should return a truthy value upon success or undefined otherwise.
77
94
  * @param name - The optional name of the operation, used for generating timeout error message.
78
- * @param timeout - The optional maximum time, in seconds, to keep retrying before throwing a timeout error. Defaults to 0 (never timeout).
95
+ * @param timeout - The maximum time to keep retrying before throwing a timeout error. Accepts a number of
96
+ * seconds (0 = never time out), an explicit `{ timeout }` in seconds, or an absolute `{ deadline }` with an
97
+ * optional `dateProvider`. A deadline already in the past times out on the first interval, the same as a
98
+ * zero/negative numeric timeout. Defaults to 0 (never timeout).
79
99
  * @param interval - The optional interval, in seconds, between retry attempts. Defaults to 1 second.
80
100
  * @returns A Promise that resolves with the successful (truthy) result of the provided function, or rejects if timeout is exceeded.
81
101
  */ export async function retryUntil(fn, name = '', timeout = 0, interval = 1) {
102
+ const timeoutSeconds = resolveRetryUntilTimeoutSeconds(timeout);
82
103
  const timer = new Timer();
83
104
  while(true){
84
105
  const result = await fn();
@@ -86,11 +107,32 @@ import { Timer } from '../timer/index.js';
86
107
  return result;
87
108
  }
88
109
  await sleep(interval * 1000);
89
- if (timeout && timer.s() > timeout) {
110
+ if (timeoutSeconds && timer.s() > timeoutSeconds) {
90
111
  throw new TimeoutError(name ? `Timeout awaiting ${name}` : 'Timeout');
91
112
  }
92
113
  }
93
114
  }
115
+ /**
116
+ * Retry an asynchronous function until it returns a truthy value or the maximum number of retries is exceeded.
117
+ * The function is retried periodically with a fixed interval between attempts.
118
+ *
119
+ * @param fn - The asynchronous function to be retried, which should return a truthy value upon success or undefined otherwise.
120
+ * @param name - The optional name of the operation, used for generating error messages.
121
+ * @param maxRetries - The maximum number of retry attempts before throwing an error.
122
+ * @param retryInterval - The optional interval, in seconds, between retry attempts. Defaults to 1 second.
123
+ * @returns A Promise that resolves with the successful (truthy) result of the provided function, or rejects if retries are exhausted.
124
+ */ export async function retryTimes(fn, name = '', maxRetries, retryInterval = 1) {
125
+ for(let attempt = 0; attempt <= maxRetries; attempt++){
126
+ const result = await fn();
127
+ if (result) {
128
+ return result;
129
+ }
130
+ if (attempt < maxRetries) {
131
+ await sleep(retryInterval * 1000);
132
+ }
133
+ }
134
+ throw new Error(name ? `Retries exhausted awaiting ${name}` : 'Retries exhausted');
135
+ }
94
136
  /**
95
137
  * Convenience wrapper around retryUntil with fast polling for tests.
96
138
  * Uses 10s timeout and 100ms polling interval by default.
@@ -1,21 +1,23 @@
1
1
  import type { z } from 'zod';
2
2
  import type { ZodNullableOptional } from './utils.js';
3
- type ZodParameterTypeFor<T> = undefined extends T ? ZodNullableOptional<z.ZodType<T, z.ZodTypeDef, any>> : z.ZodType<T, z.ZodTypeDef, any>;
4
- type ZodReturnTypeFor<T> = z.ZodType<T, z.ZodTypeDef, any>;
5
- type ZodMapParameterTypes<T> = T extends [] ? [] : T extends [item: infer Head, ...infer Rest] ? [ZodParameterTypeFor<Head>, ...{
6
- [K in keyof Rest]: ZodParameterTypeFor<Rest[K]>;
7
- }] : T extends [item?: infer Head, ...infer Rest] ? [ZodNullableOptional<ZodParameterTypeFor<Head>>, ...{
8
- [K in keyof Rest]: ZodParameterTypeFor<Rest[K]>;
9
- }] : never;
3
+ type ZodParameterTypeFor<T> = undefined extends T ? ZodNullableOptional<z.ZodType<T, any>> : z.ZodType<T, any>;
4
+ type ZodReturnTypeFor<T> = z.ZodType<T, any>;
5
+ type ZodMapParameterTypes<T extends readonly unknown[]> = {
6
+ [K in keyof T]-?: ZodParameterTypeFor<T[K]>;
7
+ };
10
8
  /** Maps all functions in an interface to their schema representation. */
11
9
  export type ApiSchemaFor<T> = {
12
- [K in keyof T]: T[K] extends (...args: infer Args) => Promise<infer Ret> ? z.ZodFunction<z.ZodTuple<ZodMapParameterTypes<Args>, z.ZodUnknown>, ZodReturnTypeFor<Ret>> : never;
10
+ [K in keyof T]: T[K] extends (...args: infer Args) => Promise<infer Ret> ? z.ZodFunction<z.ZodTuple<ZodMapParameterTypes<Args>, null>, ZodReturnTypeFor<Ret>> : never;
13
11
  };
14
12
  /** Generic Api schema not bounded to a specific implementation. */
15
13
  export type ApiSchema = {
16
14
  [key: string]: z.ZodFunction<z.ZodTuple<any, any>, z.ZodTypeAny>;
17
15
  };
18
16
  /** Return whether an API schema defines a valid function schema for a given method name. */
19
- export declare function schemaHasMethod(schema: ApiSchema, methodName: string): boolean;
17
+ export declare function schemaHasMethod<T extends ApiSchema>(schema: T, methodName: string): methodName is Extract<keyof T, string>;
18
+ /** Returns the parameter tuple schema for an API method schema. */
19
+ export declare function getSchemaParameters<T extends z.ZodFunction<z.ZodTuple<any, any>, z.ZodTypeAny>>(schema: T): z.ZodTuple<any, any>;
20
+ /** Returns the return value schema for an API method schema. */
21
+ export declare function getSchemaReturnType<T extends z.ZodFunction<z.ZodTuple<any, any>, z.ZodTypeAny>>(schema: T): z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
20
22
  export {};
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZW1hcy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRTdCLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR3RELEtBQUssbUJBQW1CLENBQUMsQ0FBQyxJQUFJLFNBQVMsU0FBUyxDQUFDLEdBQzdDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FDcEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUVwQyxLQUFLLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBUzNELEtBQUssb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQ3ZDLEVBQUUsR0FDRixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUN6QyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUc7S0FBRyxDQUFDLElBQUksTUFBTSxJQUFJLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQUUsQ0FBQyxHQUNuRixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQzFDLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHO0tBQUcsQ0FBQyxJQUFJLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUFFLENBQUMsR0FDeEcsS0FBSyxDQUFDO0FBRWQseUVBQXlFO0FBQ3pFLE1BQU0sTUFBTSxZQUFZLENBQUMsQ0FBQyxJQUFJO0tBQzNCLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksRUFBRSxNQUFNLElBQUksS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsR0FDcEUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUMxRixLQUFLO0NBQ1YsQ0FBQztBQUVGLG1FQUFtRTtBQUNuRSxNQUFNLE1BQU0sU0FBUyxHQUFHO0lBQ3RCLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztDQUNsRSxDQUFDO0FBRUYsNEZBQTRGO0FBQzVGLHdCQUFnQixlQUFlLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxXQU9wRSJ9
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NoZW1hcy9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRTdCLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBR3RELEtBQUssbUJBQW1CLENBQUMsQ0FBQyxJQUFJLFNBQVMsU0FBUyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUUvRyxLQUFLLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUU3QyxLQUFLLG9CQUFvQixDQUFDLENBQUMsU0FBUyxTQUFTLE9BQU8sRUFBRSxJQUFJO0tBQ3ZELENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQzVDLENBQUM7QUFFRix5RUFBeUU7QUFDekUsTUFBTSxNQUFNLFlBQVksQ0FBQyxDQUFDLElBQUk7S0FDM0IsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxFQUFFLE1BQU0sSUFBSSxLQUFLLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUNwRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDbEYsS0FBSztDQUNWLENBQUM7QUFFRixtRUFBbUU7QUFDbkUsTUFBTSxNQUFNLFNBQVMsR0FBRztJQUN0QixDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7Q0FDbEUsQ0FBQztBQUVGLDRGQUE0RjtBQUM1Rix3QkFBZ0IsZUFBZSxDQUFDLENBQUMsU0FBUyxTQUFTLEVBQ2pELE1BQU0sRUFBRSxDQUFDLEVBQ1QsVUFBVSxFQUFFLE1BQU0sR0FDakIsVUFBVSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FPeEM7QUFFRCxtRUFBbUU7QUFDbkUsd0JBQWdCLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyx3QkFFekc7QUFFRCxnRUFBZ0U7QUFDaEUsd0JBQWdCLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQywyRUFFekcifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/schemas/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGtD,KAAK,mBAAmB,CAAC,CAAC,IAAI,SAAS,SAAS,CAAC,GAC7C,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,GACpD,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAEpC,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAS3D,KAAK,oBAAoB,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,GACvC,EAAE,GACF,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GACzC,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG;KAAG,CAAC,IAAI,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,GACnF,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAC1C,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG;KAAG,CAAC,IAAI,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,GACxG,KAAK,CAAC;AAEd,yEAAyE;AACzE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;KAC3B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,GACpE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAC1F,KAAK;CACV,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;CAClE,CAAC;AAEF,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAOpE"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/schemas/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGtD,KAAK,mBAAmB,CAAC,CAAC,IAAI,SAAS,SAAS,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAE/G,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAE7C,KAAK,oBAAoB,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI;KACvD,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;KAC3B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,GACpE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAClF,KAAK;CACV,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;CAClE,CAAC;AAEF,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,CAAC,SAAS,SAAS,EACjD,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,MAAM,GACjB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAOxC;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,wBAEzG;AAED,gEAAgE;AAChE,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,2EAEzG"}
@@ -1,3 +1,9 @@
1
1
  /** Return whether an API schema defines a valid function schema for a given method name. */ export function schemaHasMethod(schema, methodName) {
2
- return typeof methodName === 'string' && Object.hasOwn(schema, methodName) && typeof schema[methodName].parameters === 'function' && typeof schema[methodName].returnType === 'function';
2
+ return typeof methodName === 'string' && Object.hasOwn(schema, methodName) && schema[methodName].def.input !== undefined && schema[methodName].def.output !== undefined;
3
+ }
4
+ /** Returns the parameter tuple schema for an API method schema. */ export function getSchemaParameters(schema) {
5
+ return schema.def.input;
6
+ }
7
+ /** Returns the return value schema for an API method schema. */ export function getSchemaReturnType(schema) {
8
+ return schema.def.output;
3
9
  }
@@ -1,9 +1,9 @@
1
1
  import { z } from 'zod';
2
2
  /** Parses the given arguments using a tuple from the provided schemas. */
3
- export declare function parse<T extends [] | [z.ZodTypeAny, ...z.ZodTypeAny[]]>(args: IArguments, ...schemas: T): z.AssertArray<{ [k in keyof T]: T[k] extends z.ZodType<any, any, any> ? T[k]["_output"] : never; }>;
3
+ export declare function parse<T extends [] | [z.ZodTypeAny, ...z.ZodTypeAny[]]>(args: IArguments, ...schemas: T): [];
4
4
  /**
5
5
  * Parses the given arguments against a tuple, allowing empty for optional items.
6
- * @dev Zod doesn't like tuplues with optional items. See https://github.com/colinhacks/zod/discussions/949.
6
+ * @dev Zod doesn't like tuples with optional items. See https://github.com/colinhacks/zod/discussions/949.
7
7
  */
8
- export declare function parseWithOptionals<T extends z.AnyZodTuple>(args: any[], schema: T): Promise<T['_output']>;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL3BhcnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFJeEIsMEVBQTBFO0FBQzFFLHdCQUFnQixLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsdUdBRXRHO0FBRUQ7OztHQUdHO0FBQ0gsd0JBQWdCLGtCQUFrQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FNekcifQ==
8
+ export declare function parseWithOptionals<T extends z.ZodTuple<any, any>>(args: any[], schema: T): Promise<z.output<T>>;
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL3BhcnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFJeEIsMEVBQTBFO0FBQzFFLHdCQUFnQixLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsTUFJdEc7QUFFRDs7O0dBR0c7QUFDSCx3QkFBZ0Isa0JBQWtCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBTy9HIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/schemas/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,0EAA0E;AAC1E,wBAAgB,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,CAAC,uGAEtG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAMzG"}
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/schemas/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,0EAA0E;AAC1E,wBAAgB,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,CAAC,MAItG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAO/G"}
@@ -1,14 +1,15 @@
1
1
  import { z } from 'zod';
2
2
  import { times } from '../collection/array.js';
3
3
  /** Parses the given arguments using a tuple from the provided schemas. */ export function parse(args, ...schemas) {
4
- return z.tuple(schemas).parse(args);
4
+ return schemas.length === 0 ? z.tuple([]).parse(args) : z.tuple(schemas).parse(args);
5
5
  }
6
6
  /**
7
7
  * Parses the given arguments against a tuple, allowing empty for optional items.
8
- * @dev Zod doesn't like tuplues with optional items. See https://github.com/colinhacks/zod/discussions/949.
8
+ * @dev Zod doesn't like tuples with optional items. See https://github.com/colinhacks/zod/discussions/949.
9
9
  */ export function parseWithOptionals(args, schema) {
10
- const missingCount = schema.items.length - args.length;
11
- const optionalCount = schema.items.filter(isOptional).length;
10
+ const items = schema.def.items;
11
+ const missingCount = items.length - args.length;
12
+ const optionalCount = items.filter(isOptional).length;
12
13
  const toParse = missingCount > 0 && missingCount <= optionalCount ? args.concat(times(missingCount, ()=>undefined)) : args;
13
14
  return schema.parseAsync(toParse);
14
15
  }
@@ -17,6 +18,6 @@ function isOptional(schema) {
17
18
  return schema.isOptional();
18
19
  } catch {
19
20
  // See https://github.com/colinhacks/zod/issues/1911
20
- return schema._def.typeName === 'ZodOptional';
21
+ return schema.def.type === 'optional';
21
22
  }
22
23
  }
@@ -8,37 +8,37 @@ import { Point } from '../curves/grumpkin/point.js';
8
8
  import { EthAddress } from '../eth-address/index.js';
9
9
  export declare const schemas: {
10
10
  /** Accepts a number, bigint, or string as an EpochNumber. */
11
- EpochNumber: z.ZodEffects<z.ZodPipeline<z.ZodUnion<[z.ZodNumber, z.ZodBigInt, z.ZodString]>, z.ZodNumber>, EpochNumber, string | number | bigint>;
11
+ EpochNumber: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt, z.ZodString]>, z.ZodCoercedNumber<string | number | bigint>>, z.ZodTransform<EpochNumber, number>>;
12
12
  /** Accepts a number, bigint, or string as a SlotNumber. */
13
- SlotNumber: z.ZodEffects<z.ZodPipeline<z.ZodUnion<[z.ZodNumber, z.ZodBigInt, z.ZodString]>, z.ZodNumber>, SlotNumber, string | number | bigint>;
13
+ SlotNumber: z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt, z.ZodString]>, z.ZodCoercedNumber<string | number | bigint>>, z.ZodTransform<SlotNumber, number>>;
14
14
  /** Accepts a hex string. */
15
- EthAddress: z.ZodType<EthAddress, any, string>;
15
+ EthAddress: z.ZodType<EthAddress, string, z.core.$ZodTypeInternals<EthAddress, string>>;
16
16
  /** Accepts a hex string. */
17
- Fr: z.ZodType<Fr, any, string>;
17
+ Fr: z.ZodType<Fr, string, z.core.$ZodTypeInternals<Fr, string>>;
18
18
  /** Accepts a hex string. */
19
- Fq: z.ZodType<Fq, any, string>;
19
+ Fq: z.ZodType<Fq, string, z.core.$ZodTypeInternals<Fq, string>>;
20
20
  /** Point. Serialized as a hex string. */
21
- Point: z.ZodType<Point, any, string>;
21
+ Point: z.ZodType<Point, string, z.core.$ZodTypeInternals<Point, string>>;
22
22
  /** Coerces truthy-like string values to boolean. */
23
- Boolean: z.ZodUnion<[z.ZodBoolean, z.ZodEffects<z.ZodEffects<z.ZodNumber, 0 | 1, number>, boolean, number>, z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, boolean, string>]>;
23
+ Boolean: z.ZodUnion<readonly [z.ZodBoolean, z.ZodPipe<z.ZodNumber & z.ZodType<0 | 1, number, z.core.$ZodTypeInternals<0 | 1, number>>, z.ZodTransform<boolean, 0 | 1>>, z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodTransform<boolean, string>>]>;
24
24
  /** Coerces any input to bigint. */
25
- BigInt: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
25
+ BigInt: z.ZodPipe<z.ZodUnion<readonly [z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodCoercedBigInt<string | number | bigint>>;
26
26
  /** Coerces any input to integer number. */
27
- Integer: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>;
27
+ Integer: z.ZodPipe<z.ZodUnion<readonly [z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodCoercedNumber<string | number | bigint>>;
28
28
  /** Coerces input to UInt32. */
29
- UInt32: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodNumber>;
29
+ UInt32: z.ZodPipe<z.ZodUnion<readonly [z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodCoercedNumber<string | number | bigint>>;
30
30
  /** Coerces input to UInt64. */
31
- UInt64: z.ZodPipeline<z.ZodUnion<[z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodBigInt>;
31
+ UInt64: z.ZodPipe<z.ZodUnion<readonly [z.ZodBigInt, z.ZodNumber, z.ZodString]>, z.ZodCoercedBigInt<string | number | bigint>>;
32
32
  /** Accepts a hex string as a Buffer32 type. */
33
- Buffer32: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, Buffer32, string>;
33
+ Buffer32: z.ZodPipe<z.ZodString, z.ZodTransform<Buffer32, string>>;
34
34
  /** Accepts a base64 string or an object `{ type: 'Buffer', data: [byte, byte...] }` as a buffer. */
35
35
  Buffer: import("./types.js").ZodFor<Buffer<ArrayBufferLike>>;
36
36
  /** Accepts a hex string as a buffer. */
37
- BufferHex: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, Buffer<ArrayBuffer>, string>;
37
+ BufferHex: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodTransform<Buffer<ArrayBuffer>, string>>;
38
38
  /** Hex string with an optional 0x prefix which gets removed as part of the parsing. */
39
- HexString: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
39
+ HexString: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
40
40
  /** Hex string with an optional 0x prefix which gets enforced as part of the parsing. */
41
- HexStringWith0x: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, `0x${string}`, string>;
41
+ HexStringWith0x: z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>;
42
42
  /** A secret config value */
43
43
  SecretValue: typeof SecretValue.schema;
44
44
  };
@@ -1,5 +1,5 @@
1
1
  import type { ZodType } from 'zod';
2
- export type ZodFor<T> = ZodType<T, any, any>;
2
+ export type ZodFor<T> = ZodType<T, any>;
3
3
  /**
4
4
  * Creates a schema validator that enforces all properties of type T are present in the schema.
5
5
  * This provides compile-time safety to ensure schemas don't miss optional properties.
@@ -23,11 +23,11 @@ export type ZodFor<T> = ZodType<T, any, any>;
23
23
  * }));
24
24
  * ```
25
25
  */
26
- export declare function zodFor<T>(): <S extends ZodType<any, any, any>>(schema: keyof T extends keyof S["_output"] ? keyof S["_output"] extends keyof T ? S : S & {
26
+ export declare function zodFor<T>(): <S extends ZodType<any, any, import("zod/v4/core").$ZodTypeInternals<any, any>>>(schema: keyof T extends keyof S["_output"] ? keyof S["_output"] extends keyof T ? S : S & {
27
27
  __error__: "Schema has extra keys not in type";
28
28
  __extra__: Exclude<keyof S["_output"], keyof T>;
29
29
  } : S & {
30
30
  __error__: "Schema is missing keys from type";
31
31
  __missing__: Exclude<keyof T, keyof S["_output"]>;
32
32
  }) => S;
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEtBQUssQ0FBQztBQUVuQyxNQUFNLE1BQU0sTUFBTSxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUU3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILHdCQUFnQixNQUFNLENBQUMsQ0FBQyxNQUNRLENBQUM7Ozs7OztRQU9oQyJ9
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEtBQUssQ0FBQztBQUVuQyxNQUFNLE1BQU0sTUFBTSxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRXhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsd0JBQWdCLE1BQU0sQ0FBQyxDQUFDLE1BQ1EsQ0FBQzs7Ozs7O1FBT2hDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schemas/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAEnC,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,MAAM,CAAC,CAAC,MACQ,CAAC;;;;;;QAOhC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/schemas/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAEnC,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,MAAM,CAAC,CAAC,MACQ,CAAC;;;;;;QAOhC"}
@@ -1,19 +1,15 @@
1
- import { type ParseInput, type ParseReturnType, type ZodObject, ZodOptional, type ZodRawShape, type ZodType, type ZodTypeAny, z } from 'zod';
1
+ import { type ZodObject, type ZodRawShape, type ZodType, type ZodTypeAny, z } from 'zod';
2
2
  import type { ZodFor } from './types.js';
3
- export declare const hexSchema: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
3
+ export declare const hexSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
4
4
  /** Schema for a buffer represented as a base64 string or a Buffer object. */
5
5
  export declare const bufferSchema: ZodFor<Buffer>;
6
- export declare class ZodNullableOptional<T extends ZodTypeAny> extends ZodOptional<T> {
7
- _isNullableOptional: boolean;
8
- _parse(input: ParseInput): ParseReturnType<this['_output']>;
9
- static create<T extends ZodTypeAny>(type: T): ZodNullableOptional<T>;
10
- }
6
+ export type ZodNullableOptional<T extends ZodTypeAny> = ZodType<z.output<T> | undefined, z.input<T> | null | undefined>;
11
7
  /**
12
8
  * Declares a parameter as optional. Use this over z.optional in order to accept nulls as undefineds.
13
9
  * This is required as JSON does not have an undefined type, and null is used to represent it, so we
14
10
  * need to convert nulls to undefineds as we parse.
15
11
  */
16
- export declare function optional<T extends ZodTypeAny>(schema: T): ZodNullableOptional<T>;
12
+ export declare function optional<T extends ZodTypeAny>(schema: T): z.ZodPipe<z.ZodOptional<z.ZodNullable<T>>, z.ZodTransform<Awaited<NonNullable<z.TypeOf<T>>> | undefined, z.TypeOf<T> | null | undefined>>;
17
13
  type ToJsonIs<T, TRet> = T extends {
18
14
  toJSON(): TRet;
19
15
  } ? T : never;
@@ -30,7 +26,7 @@ export declare function hexSchemaFor<TClass extends {
30
26
  fromString(str: string): infer TInstance;
31
27
  } | {
32
28
  fromBuffer(buf: Buffer): infer TInstance;
33
- } ? ToJsonIs<TInstance, string> : never, any, string>;
29
+ } ? ToJsonIs<TInstance, string> : never, string>;
34
30
  /**
35
31
  * Creates a schema that accepts a base64 string and uses it to hydrate an instance.
36
32
  * @param klazz - Class that implements fromBuffer.
@@ -40,7 +36,7 @@ export declare function bufferSchemaFor<TClass extends {
40
36
  fromBuffer(buf: Buffer): any;
41
37
  }>(klazz: TClass, refinement?: (buf: Buffer) => boolean): ZodType<TClass extends {
42
38
  fromBuffer(buf: Buffer): infer TInstance;
43
- } ? ToJsonIs<TInstance, Buffer> : never, any, string>;
39
+ } ? ToJsonIs<TInstance, Buffer> : never, string>;
44
40
  /** Creates a schema for a js Map type that matches the serialization used in jsonStringify. */
45
41
  export declare function mapSchema<TKey, TValue>(key: ZodFor<TKey>, value: ZodFor<TValue>): ZodFor<Map<TKey, TValue>>;
46
42
  /** Creates a schema for a js Set type that matches the serialization used in jsonStringify. */
@@ -48,4 +44,4 @@ export declare function setSchema<T>(value: ZodFor<T>): ZodFor<Set<T>>;
48
44
  /** Given an already parsed and validated object, extracts the keys defined in the given schema. Does not validate again. */
49
45
  export declare function pickFromSchema<T extends object, S extends ZodObject<ZodRawShape>>(obj: T, schema: S): Partial<T>;
50
46
  export {};
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxLQUFLLFVBQVUsRUFDZixLQUFLLGVBQWUsRUFFcEIsS0FBSyxTQUFTLEVBQ2QsV0FBVyxFQUVYLEtBQUssV0FBVyxFQUNoQixLQUFLLE9BQU8sRUFDWixLQUFLLFVBQVUsRUFDZixDQUFDLEVBQ0YsTUFBTSxLQUFLLENBQUM7QUFJYixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFekMsZUFBTyxNQUFNLFNBQVMseUVBQWlGLENBQUM7QUFLeEcsNkVBQTZFO0FBQzdFLGVBQU8sTUFBTSxZQUFZLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FpQnRDLENBQUM7QUFFSCxxQkFBYSxtQkFBbUIsQ0FBQyxDQUFDLFNBQVMsVUFBVSxDQUFFLFNBQVEsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMzRSxtQkFBbUIsVUFBUTtJQUVsQixNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBTW5FO0lBRUQsT0FBZ0IsTUFBTSxDQUFDLENBQUMsU0FBUyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FLNUU7Q0FDRjtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsUUFBUSxDQUFDLENBQUMsU0FBUyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsMEJBRXZEO0FBRUQsS0FBSyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVM7SUFBRSxNQUFNLElBQUksSUFBSSxDQUFBO0NBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBRWxFOzs7O0dBSUc7QUFDSCx3QkFBZ0IsWUFBWSxDQUFDLE1BQU0sU0FBUztJQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQTtDQUFFLEdBQUc7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUE7Q0FBRSxFQUM3RyxLQUFLLEVBQUUsTUFBTSxFQUNiLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sS0FBSyxPQUFPLEdBQ3RDLE9BQU8sQ0FDUixNQUFNLFNBQVM7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQTtDQUFFLEdBQUc7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQTtDQUFFLEdBQ3RHLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQzNCLEtBQUssRUFDVCxHQUFHLEVBQ0gsTUFBTSxDQUNQLENBTUE7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLGVBQWUsQ0FBQyxNQUFNLFNBQVM7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUE7Q0FBRSxFQUM3RSxLQUFLLEVBQUUsTUFBTSxFQUNiLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sS0FBSyxPQUFPLEdBQ3BDLE9BQU8sQ0FDUixNQUFNLFNBQVM7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQTtDQUFFLEdBQUcsUUFBUSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxLQUFLLEVBQ2pHLEdBQUcsRUFDSCxNQUFNLENBQ1AsQ0FFQTtBQUVELCtGQUErRjtBQUMvRix3QkFBZ0IsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBRTNHO0FBRUQsK0ZBQStGO0FBQy9GLHdCQUFnQixTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUU3RDtBQUVELDRIQUE0SDtBQUM1SCx3QkFBZ0IsY0FBYyxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsQ0FBQyxTQUFTLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLGNBRW5HIn0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWFzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLFdBQVcsRUFBRSxLQUFLLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFJekYsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXpDLGVBQU8sTUFBTSxTQUFTLHdEQUFpRixDQUFDO0FBS3hHLDZFQUE2RTtBQUM3RSxlQUFPLE1BQU0sWUFBWSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBaUJ0QyxDQUFDO0FBRUgsTUFBTSxNQUFNLG1CQUFtQixDQUFDLENBQUMsU0FBUyxVQUFVLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0FBRXhIOzs7O0dBSUc7QUFDSCx3QkFBZ0IsUUFBUSxDQUFDLENBQUMsU0FBUyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsNklBRXZEO0FBRUQsS0FBSyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVM7SUFBRSxNQUFNLElBQUksSUFBSSxDQUFBO0NBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBRWxFOzs7O0dBSUc7QUFDSCx3QkFBZ0IsWUFBWSxDQUFDLE1BQU0sU0FBUztJQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQTtDQUFFLEdBQUc7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUE7Q0FBRSxFQUM3RyxLQUFLLEVBQUUsTUFBTSxFQUNiLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sS0FBSyxPQUFPLEdBQ3RDLE9BQU8sQ0FDUixNQUFNLFNBQVM7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQTtDQUFFLEdBQUc7SUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQTtDQUFFLEdBQ3RHLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQzNCLEtBQUssRUFDVCxNQUFNLENBQ1AsQ0FNQTtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsZUFBZSxDQUFDLE1BQU0sU0FBUztJQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLEdBQUcsQ0FBQTtDQUFFLEVBQzdFLEtBQUssRUFBRSxNQUFNLEVBQ2IsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxLQUFLLE9BQU8sR0FDcEMsT0FBTyxDQUFDLE1BQU0sU0FBUztJQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFBO0NBQUUsR0FBRyxRQUFRLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FFcEg7QUFFRCwrRkFBK0Y7QUFDL0Ysd0JBQWdCLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUUzRztBQUVELCtGQUErRjtBQUMvRix3QkFBZ0IsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FFN0Q7QUFFRCw0SEFBNEg7QUFDNUgsd0JBQWdCLGNBQWMsQ0FBQyxDQUFDLFNBQVMsTUFBTSxFQUFFLENBQUMsU0FBUyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxjQUVuRyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/schemas/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,eAAe,EAEpB,KAAK,SAAS,EACd,WAAW,EAEX,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,CAAC,EACF,MAAM,KAAK,CAAC;AAIb,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,eAAO,MAAM,SAAS,yEAAiF,CAAC;AAKxG,6EAA6E;AAC7E,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,CAiBtC,CAAC;AAEH,qBAAa,mBAAmB,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC3E,mBAAmB,UAAQ;IAElB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAMnE;IAED,OAAgB,MAAM,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAK5E;CACF;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,MAAM,EAAE,CAAC,0BAEvD;AAED,KAAK,QAAQ,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS;IAAE,MAAM,IAAI,IAAI,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAElE;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7G,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GACtC,OAAO,CACR,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,SAAS,CAAA;CAAE,GAAG;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,SAAS,CAAA;CAAE,GACtG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAC3B,KAAK,EACT,GAAG,EACH,MAAM,CACP,CAMA;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7E,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GACpC,OAAO,CACR,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,SAAS,CAAA;CAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,KAAK,EACjG,GAAG,EACH,MAAM,CACP,CAEA;AAED,+FAA+F;AAC/F,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAE3G;AAED,+FAA+F;AAC/F,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAE7D;AAED,4HAA4H;AAC5H,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,cAEnG"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/schemas/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIzF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,eAAO,MAAM,SAAS,wDAAiF,CAAC;AAKxG,6EAA6E;AAC7E,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,CAiBtC,CAAC;AAEH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,UAAU,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAExH;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,MAAM,EAAE,CAAC,6IAEvD;AAED,KAAK,QAAQ,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS;IAAE,MAAM,IAAI,IAAI,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAElE;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7G,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GACtC,OAAO,CACR,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,SAAS,CAAA;CAAE,GAAG;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,SAAS,CAAA;CAAE,GACtG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAC3B,KAAK,EACT,MAAM,CACP,CAMA;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7E,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GACpC,OAAO,CAAC,MAAM,SAAS;IAAE,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,SAAS,CAAA;CAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,CAEpH;AAED,+FAA+F;AAC/F,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAE3G;AAED,+FAA+F;AAC/F,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAE7D;AAED,4HAA4H;AAC5H,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,cAEnG"}
@@ -1,4 +1,4 @@
1
- import { OK, ZodFirstPartyTypeKind, ZodOptional, ZodParsedType, z } from 'zod';
1
+ import { z } from 'zod';
2
2
  import { pick } from '../collection/object.js';
3
3
  import { isHex, withoutHexPrefix } from '../string/index.js';
4
4
  export const hexSchema = z.string().refine(isHex, 'Not a valid hex string').transform(withoutHexPrefix);
@@ -17,28 +17,12 @@ const base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}
17
17
  // Serialization from Buffer
18
18
  z.instanceof(Buffer)
19
19
  ]);
20
- export class ZodNullableOptional extends ZodOptional {
21
- _isNullableOptional = true;
22
- _parse(input) {
23
- const parsedType = this._getType(input);
24
- if (parsedType === ZodParsedType.undefined || parsedType === ZodParsedType.null) {
25
- return OK(undefined);
26
- }
27
- return this._def.innerType._parse(input);
28
- }
29
- static create(type) {
30
- return new ZodNullableOptional({
31
- innerType: type,
32
- typeName: ZodFirstPartyTypeKind.ZodOptional
33
- });
34
- }
35
- }
36
20
  /**
37
21
  * Declares a parameter as optional. Use this over z.optional in order to accept nulls as undefineds.
38
22
  * This is required as JSON does not have an undefined type, and null is used to represent it, so we
39
23
  * need to convert nulls to undefineds as we parse.
40
24
  */ export function optional(schema) {
41
- return ZodNullableOptional.create(schema);
25
+ return schema.nullish().transform((value)=>value ?? undefined);
42
26
  }
43
27
  /**
44
28
  * Creates a schema that accepts a hex string and uses it to hydrate an instance.
@@ -0,0 +1,134 @@
1
+ /**
2
+ * A value that can be appended to a {@link BufferSink}. Mirrors `Bufferable`, but the object arm allows the
3
+ * optional-sink overload of `toBuffer` so a legacy `toBuffer(): Buffer` and a migrated `toBuffer(sink?)` both fit.
4
+ */
5
+ export type Sinkable = boolean | Buffer | Uint8Array | number | bigint | string | {
6
+ toBuffer(sink?: BufferSink): Buffer | void;
7
+ } | Sinkable[];
8
+ /**
9
+ * A growable, append-only binary sink backed by a single `ArrayBuffer`.
10
+ *
11
+ * It exists to replace the recursive `toBuffer()` chain — which allocates a `Buffer` at every node and
12
+ * `Buffer.concat`s at every level — with one buffer that the whole object graph streams into and that is sliced
13
+ * exactly once at the root. Encodings are big-endian, matching `serializeToBuffer` byte-for-byte.
14
+ *
15
+ * The migration contract is the optional-sink `toBuffer`:
16
+ *
17
+ * ```ts
18
+ * toBuffer(): Buffer;
19
+ * toBuffer(sink: BufferSink): void;
20
+ * toBuffer(sink?: BufferSink): Buffer | void {
21
+ * if (!sink) return BufferSink.serialize(this); // own a sink, fill it, slice once
22
+ * serializeToSink(sink, this.a, this.b, this.c); // stream into the caller's sink
23
+ * }
24
+ * ```
25
+ *
26
+ * When a sink is passed it writes and returns `undefined`; otherwise it returns its own buffer. Nodes that have
27
+ * not been migrated keep their plain `toBuffer(): Buffer` and are folded in via the return-value fallback in
28
+ * {@link serializeToSink}, so the tree stays valid at every step of an incremental migration.
29
+ *
30
+ * Performance note: bigints are written via `DataView.setBigUint64` limbs ({@link writeBigInt},
31
+ * {@link writeField}), NOT a per-byte shift loop. The limb form is ~16x faster than the legacy hex round-trip
32
+ * on field-heavy structures, and faster than the legacy path at every width — a naive per-byte shift loop is
33
+ * actually the slowest option, since each byte allocates a fresh BigInt. See the spike benchmark.
34
+ */
35
+ export declare class BufferSink {
36
+ private buffer;
37
+ private view;
38
+ private offset;
39
+ constructor(initialCapacity?: number);
40
+ /** Number of bytes written so far. */
41
+ get length(): number;
42
+ /**
43
+ * Serialize a migrated value into a fresh sink and return the single resulting buffer. This is the no-sink
44
+ * branch of every migrated `toBuffer`: one allocation, one slice, only at the root.
45
+ *
46
+ * @param obj - The value to serialize via its sink-aware `toBuffer`.
47
+ * @param initialCapacity - Optional size hint (e.g. from `getSize()`) to skip reallocations on hot paths.
48
+ */
49
+ static serialize(obj: {
50
+ toBuffer(sink: BufferSink): void;
51
+ }, initialCapacity?: number): Buffer;
52
+ private ensure;
53
+ /** Append a single byte (0/1) for a boolean, matching `boolToBuffer`. */
54
+ writeBool(value: boolean): void;
55
+ /** Append an unsigned 8-bit integer. */
56
+ writeUInt8(value: number): void;
57
+ /** Append a big-endian unsigned 16-bit integer. */
58
+ writeUInt16(value: number): void;
59
+ /** Append a big-endian unsigned 32-bit integer, matching `numToUInt32BE`. */
60
+ writeNumber(value: number): void;
61
+ /** Append a big-endian unsigned 64-bit integer, matching `bigintToUInt64BE`. */
62
+ writeUInt64(value: bigint): void;
63
+ /**
64
+ * Append a non-negative bigint as a big-endian unsigned integer of `width` bytes (default 32), matching
65
+ * `serializeBigInt` / `toBufferBE`. Every width is written limb-wise via `setBigUint64` rather than the
66
+ * legacy per-byte BigInt shift loop — that loop allocated a fresh BigInt per byte and benchmarked as the
67
+ * *slowest* option (slower even than the legacy hex round-trip); the limb form is faster at every width.
68
+ *
69
+ * The bulk of the value is written as 64-bit big-endian limbs from the least-significant tail upward, and
70
+ * a final `width % 8` (at most 7) high bytes that don't fill a whole limb are written individually. The
71
+ * common widths (8/16/32) are exact multiples of 8, so they take the pure-limb path with no remainder.
72
+ * `width === 32` keeps its own straight-line four-limb form (shared with {@link writeField}) since it is
73
+ * the `Fr`/`Fq`/Chonk-proof hot path and the unrolled body is marginally faster than the loop.
74
+ *
75
+ * @param value - The non-negative bigint to serialize.
76
+ * @param width - Output width in bytes.
77
+ */
78
+ writeBigInt(value: bigint, width?: number): void;
79
+ /**
80
+ * Append a 32-byte (256-bit) big-endian non-negative bigint. Specialized form of {@link writeBigInt}
81
+ * with no width parameter and no width-branch, so V8 can inline the four `setBigUint64` limb writes
82
+ * without the wider branchy form's instability. This is the Fr/Fq leaf hot path; prefer it over
83
+ * `writeBigInt(value, 32)` in callers that always serialize 32-byte fields.
84
+ */
85
+ writeField(value: bigint): void;
86
+ /**
87
+ * Append an array of field elements (or any objects exposing `toBigInt(): bigint`) as a contiguous
88
+ * sequence of 32-byte big-endian limbs. Iterates inline — no per-element `toBuffer` dispatch and no
89
+ * per-element function-call indirection through the generic sinkable dispatcher. Use this in classes
90
+ * that hold large flat field arrays (e.g. the 1632-element ChonkProof field list).
91
+ */
92
+ writeFields(fields: ReadonlyArray<{
93
+ toBigInt(): bigint;
94
+ }>): void;
95
+ /** Append raw bytes verbatim (no length prefix), matching how a `Buffer`/`Uint8Array` is serialized inline. */
96
+ writeBytes(bytes: Uint8Array): void;
97
+ /** Append a string as a 4-byte big-endian length prefix followed by its UTF-8 bytes, matching the string case. */
98
+ writeString(value: string): void;
99
+ /**
100
+ * Reset the write cursor without releasing the backing buffer. Lets the same sink be reused across many
101
+ * serializations without reallocating — the per-call cost drops to the bytes written (no `new ArrayBuffer`).
102
+ * Any `Buffer` previously returned by {@link toBuffer} is a fresh copy and remains valid; any view from
103
+ * {@link asUint8Array} aliases the buffer and is invalidated.
104
+ */
105
+ reset(): void;
106
+ /** Copy the written region into a freshly allocated `Buffer`. The single allocation of the whole serialization. */
107
+ toBuffer(): Buffer;
108
+ /** A zero-copy view of the written region. Valid only until the next write (which may reallocate). */
109
+ asUint8Array(): Uint8Array;
110
+ }
111
+ /**
112
+ * Streaming counterpart to `serializeToBufferArray`: walk a list of {@link Sinkable}s and append each to the sink.
113
+ * Dispatch matches `serializeToBufferArray` byte-for-byte. An object is serialized via `obj.toBuffer(sink)`; a
114
+ * migrated node writes into the sink and returns `undefined`, while a not-yet-migrated node ignores the argument
115
+ * and returns its `Buffer`, which we copy in. That return-value fallback is what makes the migration incremental.
116
+ *
117
+ * Dispatch is hot-pathed for the common case of objects exposing `toBuffer` (Fr/Fq and every other migrated leaf),
118
+ * and arrays recurse via an inner-array helper to avoid the per-call rest-args allocation that a spread-recurse
119
+ * would force on large flat arrays like the 1632-element ChonkProof field list.
120
+ *
121
+ * @param sink - The destination sink.
122
+ * @param objs - The values to serialize, in order.
123
+ */
124
+ export declare function serializeToSink(sink: BufferSink, ...objs: Sinkable[]): void;
125
+ /**
126
+ * Streaming counterpart to `serializeArrayOfBufferableToVector`: write a length prefix (1 or 4 bytes) giving the
127
+ * number of serialized elements, then each element. Byte-identical to the buffer version.
128
+ *
129
+ * @param sink - The destination sink.
130
+ * @param objs - The vector elements.
131
+ * @param prefixLength - Width of the count prefix in bytes (1 or 4).
132
+ */
133
+ export declare function serializeArrayToSink(sink: BufferSink, objs: Sinkable[], prefixLength?: number): void;
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyX3NpbmsuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemUvYnVmZmVyX3NpbmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxNQUFNLFFBQVEsR0FDaEIsT0FBTyxHQUNQLE1BQU0sR0FDTixVQUFVLEdBQ1YsTUFBTSxHQUNOLE1BQU0sR0FDTixNQUFNLEdBQ047SUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUE7Q0FBRSxHQUM5QyxRQUFRLEVBQUUsQ0FBQztBQUtmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUNILHFCQUFhLFVBQVU7SUFDckIsT0FBTyxDQUFDLE1BQU0sQ0FBYTtJQUMzQixPQUFPLENBQUMsSUFBSSxDQUFXO0lBQ3ZCLE9BQU8sQ0FBQyxNQUFNLENBQUs7SUFFbkIsWUFBWSxlQUFlLEdBQUUsTUFBaUMsRUFJN0Q7SUFFRCxzQ0FBc0M7SUFDdEMsSUFBVyxNQUFNLElBQUksTUFBTSxDQUUxQjtJQUVEOzs7Ozs7T0FNRztJQUNILE9BQWMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLElBQUksQ0FBQTtLQUFFLEVBQUUsZUFBZSxDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FJbkc7SUFFRCxPQUFPLENBQUMsTUFBTTtJQWVkLHlFQUF5RTtJQUNsRSxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sR0FBRyxJQUFJLENBR3JDO0lBRUQsd0NBQXdDO0lBQ2pDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FHckM7SUFFRCxtREFBbUQ7SUFDNUMsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUl0QztJQUVELDZFQUE2RTtJQUN0RSxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBSXRDO0lBRUQsZ0ZBQWdGO0lBQ3pFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FJdEM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNJLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssU0FBSyxHQUFHLElBQUksQ0FxQ2xEO0lBRUQ7Ozs7O09BS0c7SUFDSSxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBa0JyQztJQUVEOzs7OztPQUtHO0lBQ0ksV0FBVyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUM7UUFBRSxRQUFRLElBQUksTUFBTSxDQUFBO0tBQUUsQ0FBQyxHQUFHLElBQUksQ0FxQnRFO0lBRUQsK0dBQStHO0lBQ3hHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxHQUFHLElBQUksQ0FJekM7SUFFRCxrSEFBa0g7SUFDM0csV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUl0QztJQUVEOzs7OztPQUtHO0lBQ0ksS0FBSyxJQUFJLElBQUksQ0FFbkI7SUFFRCxtSEFBbUg7SUFDNUcsUUFBUSxJQUFJLE1BQU0sQ0FFeEI7SUFFRCxzR0FBc0c7SUFDL0YsWUFBWSxJQUFJLFVBQVUsQ0FFaEM7Q0FDRjtBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILHdCQUFnQixlQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBRTNFO0FBMENEOzs7Ozs7O0dBT0c7QUFDSCx3QkFBZ0Isb0JBQW9CLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsWUFBWSxTQUFJLEdBQUcsSUFBSSxDQVUvRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer_sink.d.ts","sourceRoot":"","sources":["../../src/serialize/buffer_sink.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAChB,OAAO,GACP,MAAM,GACN,UAAU,GACV,MAAM,GACN,MAAM,GACN,MAAM,GACN;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAAA;CAAE,GAC9C,QAAQ,EAAE,CAAC;AAKf;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,MAAM,CAAK;IAEnB,YAAY,eAAe,GAAE,MAAiC,EAI7D;IAED,sCAAsC;IACtC,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED;;;;;;OAMG;IACH,OAAc,SAAS,CAAC,GAAG,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;KAAE,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAInG;IAED,OAAO,CAAC,MAAM;IAed,yEAAyE;IAClE,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAGrC;IAED,wCAAwC;IACjC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGrC;IAED,mDAAmD;IAC5C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAItC;IAED,6EAA6E;IACtE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAItC;IAED,gFAAgF;IACzE,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAItC;IAED;;;;;;;;;;;;;;OAcG;IACI,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,IAAI,CAqClD;IAED;;;;;OAKG;IACI,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAkBrC;IAED;;;;;OAKG;IACI,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAqBtE;IAED,+GAA+G;IACxG,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAIzC;IAED,kHAAkH;IAC3G,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAItC;IAED;;;;;OAKG;IACI,KAAK,IAAI,IAAI,CAEnB;IAED,mHAAmH;IAC5G,QAAQ,IAAI,MAAM,CAExB;IAED,sGAAsG;IAC/F,YAAY,IAAI,UAAU,CAEhC;CACF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAE3E;AA0CD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,YAAY,SAAI,GAAG,IAAI,CAU/F"}