@polyester/sdk 0.4.0 → 0.4.2

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 (296) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/_virtual/_rolldown/runtime.js +1 -15
  3. package/dist/catalogs/snapshot-validation.js +63 -63
  4. package/dist/catalogs/snapshot-validation.js.map +1 -1
  5. package/dist/core-client.d.ts +9 -0
  6. package/dist/core-client.d.ts.map +1 -1
  7. package/dist/core-client.js +21 -0
  8. package/dist/core-client.js.map +1 -1
  9. package/dist/gen/fees/v1/fees_pb.d.ts +124 -0
  10. package/dist/gen/fees/v1/fees_pb.d.ts.map +1 -0
  11. package/dist/gen/fees/v1/fees_pb.js +39 -0
  12. package/dist/gen/fees/v1/fees_pb.js.map +1 -0
  13. package/dist/gen/index.d.ts +4 -1
  14. package/dist/gen/index.js +4 -1
  15. package/dist/gen/ratelimit/v1/ratelimit_pb.d.ts +223 -0
  16. package/dist/gen/ratelimit/v1/ratelimit_pb.d.ts.map +1 -0
  17. package/dist/gen/ratelimit/v1/ratelimit_pb.js +86 -0
  18. package/dist/gen/ratelimit/v1/ratelimit_pb.js.map +1 -0
  19. package/dist/gen/vip/v1/vip_pb.d.ts +277 -0
  20. package/dist/gen/vip/v1/vip_pb.d.ts.map +1 -0
  21. package/dist/gen/vip/v1/vip_pb.js +60 -0
  22. package/dist/gen/vip/v1/vip_pb.js.map +1 -0
  23. package/dist/index.d.ts +8 -1
  24. package/dist/services/accounts/accounts.js +1 -1
  25. package/dist/services/accounts/accounts.js.map +1 -1
  26. package/dist/services/accounts/accounts.schemas.d.ts +13 -13
  27. package/dist/services/accounts/accounts.schemas.d.ts.map +1 -1
  28. package/dist/services/accounts/accounts.schemas.js +11 -11
  29. package/dist/services/accounts/accounts.schemas.js.map +1 -1
  30. package/dist/services/address-book/address-book.js.map +1 -1
  31. package/dist/services/address-book/address-book.schemas.d.ts +751 -751
  32. package/dist/services/address-book/address-book.schemas.d.ts.map +1 -1
  33. package/dist/services/address-book/address-book.schemas.js +160 -159
  34. package/dist/services/address-book/address-book.schemas.js.map +1 -1
  35. package/dist/services/api-keys/api-keys.d.ts +6 -6
  36. package/dist/services/api-keys/api-keys.d.ts.map +1 -1
  37. package/dist/services/api-keys/api-keys.js.map +1 -1
  38. package/dist/services/api-keys/api-keys.schemas.d.ts +62 -62
  39. package/dist/services/api-keys/api-keys.schemas.d.ts.map +1 -1
  40. package/dist/services/api-keys/api-keys.schemas.js +34 -34
  41. package/dist/services/api-keys/api-keys.schemas.js.map +1 -1
  42. package/dist/services/auth/auth.d.ts +39 -39
  43. package/dist/services/auth/auth.d.ts.map +1 -1
  44. package/dist/services/auth/auth.js +19 -18
  45. package/dist/services/auth/auth.js.map +1 -1
  46. package/dist/services/auth/profile/profile.d.ts +2 -2
  47. package/dist/services/auth/profile/profile.d.ts.map +1 -1
  48. package/dist/services/auth/profile/profile.js +3 -2
  49. package/dist/services/auth/profile/profile.js.map +1 -1
  50. package/dist/services/auth/profile/profile.schemas.d.ts +41 -41
  51. package/dist/services/auth/profile/profile.schemas.d.ts.map +1 -1
  52. package/dist/services/auth/profile/profile.schemas.js +27 -27
  53. package/dist/services/auth/profile/profile.schemas.js.map +1 -1
  54. package/dist/services/auth/session.schemas.js +17 -17
  55. package/dist/services/auth/session.schemas.js.map +1 -1
  56. package/dist/services/balances/balances.d.ts.map +1 -1
  57. package/dist/services/balances/balances.js +3 -2
  58. package/dist/services/balances/balances.js.map +1 -1
  59. package/dist/services/balances/balances.schemas.d.ts +95 -95
  60. package/dist/services/balances/balances.schemas.d.ts.map +1 -1
  61. package/dist/services/balances/balances.schemas.js +61 -61
  62. package/dist/services/balances/balances.schemas.js.map +1 -1
  63. package/dist/services/candles/candles.d.ts.map +1 -1
  64. package/dist/services/candles/candles.js +5 -4
  65. package/dist/services/candles/candles.js.map +1 -1
  66. package/dist/services/candles/candles.schemas.d.ts +64 -64
  67. package/dist/services/candles/candles.schemas.d.ts.map +1 -1
  68. package/dist/services/candles/candles.schemas.js +47 -47
  69. package/dist/services/candles/candles.schemas.js.map +1 -1
  70. package/dist/services/chain-analytics/chain-analytics.js.map +1 -1
  71. package/dist/services/chain-analytics/chain-analytics.schemas.d.ts +68 -68
  72. package/dist/services/chain-analytics/chain-analytics.schemas.d.ts.map +1 -1
  73. package/dist/services/chain-analytics/chain-analytics.schemas.js +29 -29
  74. package/dist/services/chain-analytics/chain-analytics.schemas.js.map +1 -1
  75. package/dist/services/deposit/deposit.js.map +1 -1
  76. package/dist/services/deposit/deposit.schemas.d.ts +17 -17
  77. package/dist/services/deposit/deposit.schemas.d.ts.map +1 -1
  78. package/dist/services/deposit/deposit.schemas.js +11 -11
  79. package/dist/services/deposit/deposit.schemas.js.map +1 -1
  80. package/dist/services/fees/fees.d.ts +19 -0
  81. package/dist/services/fees/fees.d.ts.map +1 -0
  82. package/dist/services/fees/fees.js +32 -0
  83. package/dist/services/fees/fees.js.map +1 -0
  84. package/dist/services/fees/fees.schemas.d.ts +28 -0
  85. package/dist/services/fees/fees.schemas.d.ts.map +1 -0
  86. package/dist/services/fees/fees.schemas.js +25 -0
  87. package/dist/services/fees/fees.schemas.js.map +1 -0
  88. package/dist/services/fees/fees.types.d.ts +2 -0
  89. package/dist/services/fees/index.d.ts +3 -0
  90. package/dist/services/guard-signer/guard-signer.js.map +1 -1
  91. package/dist/services/guard-signer/guard-signer.schemas.d.ts +75 -75
  92. package/dist/services/guard-signer/guard-signer.schemas.d.ts.map +1 -1
  93. package/dist/services/guard-signer/guard-signer.schemas.js +42 -42
  94. package/dist/services/guard-signer/guard-signer.schemas.js.map +1 -1
  95. package/dist/services/heatmap/heatmap.d.ts.map +1 -1
  96. package/dist/services/heatmap/heatmap.js +5 -4
  97. package/dist/services/heatmap/heatmap.js.map +1 -1
  98. package/dist/services/heatmap/heatmap.schemas.d.ts +138 -138
  99. package/dist/services/heatmap/heatmap.schemas.d.ts.map +1 -1
  100. package/dist/services/heatmap/heatmap.schemas.js +47 -47
  101. package/dist/services/heatmap/heatmap.schemas.js.map +1 -1
  102. package/dist/services/internal-transfers/internal-transfers.js.map +1 -1
  103. package/dist/services/internal-transfers/internal-transfers.schemas.d.ts +53 -53
  104. package/dist/services/internal-transfers/internal-transfers.schemas.d.ts.map +1 -1
  105. package/dist/services/internal-transfers/internal-transfers.schemas.js +27 -27
  106. package/dist/services/internal-transfers/internal-transfers.schemas.js.map +1 -1
  107. package/dist/services/lifecycle/lifecycle.d.ts.map +1 -1
  108. package/dist/services/lifecycle/lifecycle.js +3 -2
  109. package/dist/services/lifecycle/lifecycle.js.map +1 -1
  110. package/dist/services/lifecycle/lifecycle.schemas.d.ts +614 -614
  111. package/dist/services/lifecycle/lifecycle.schemas.d.ts.map +1 -1
  112. package/dist/services/lifecycle/lifecycle.schemas.js +146 -146
  113. package/dist/services/lifecycle/lifecycle.schemas.js.map +1 -1
  114. package/dist/services/market-data/market-data.d.ts.map +1 -1
  115. package/dist/services/market-data/market-data.js +4 -3
  116. package/dist/services/market-data/market-data.js.map +1 -1
  117. package/dist/services/market-data/market-data.schemas.d.ts +19 -19
  118. package/dist/services/market-data/market-data.schemas.d.ts.map +1 -1
  119. package/dist/services/market-data/market-data.schemas.js +50 -50
  120. package/dist/services/market-data/market-data.schemas.js.map +1 -1
  121. package/dist/services/market-overview/market-overview.d.ts.map +1 -1
  122. package/dist/services/market-overview/market-overview.js +3 -2
  123. package/dist/services/market-overview/market-overview.js.map +1 -1
  124. package/dist/services/market-overview/market-overview.schemas.d.ts +37 -37
  125. package/dist/services/market-overview/market-overview.schemas.d.ts.map +1 -1
  126. package/dist/services/market-overview/market-overview.schemas.js +33 -33
  127. package/dist/services/market-overview/market-overview.schemas.js.map +1 -1
  128. package/dist/services/mfa/mfa.js +1 -1
  129. package/dist/services/mfa/mfa.js.map +1 -1
  130. package/dist/services/mfa/mfa.schemas.d.ts +206 -206
  131. package/dist/services/mfa/mfa.schemas.d.ts.map +1 -1
  132. package/dist/services/mfa/mfa.schemas.js +83 -83
  133. package/dist/services/mfa/mfa.schemas.js.map +1 -1
  134. package/dist/services/orderbook/orderbook.d.ts +2 -2
  135. package/dist/services/orderbook/orderbook.d.ts.map +1 -1
  136. package/dist/services/orderbook/orderbook.js +3 -2
  137. package/dist/services/orderbook/orderbook.js.map +1 -1
  138. package/dist/services/orderbook/orderbook.schemas.d.ts +23 -23
  139. package/dist/services/orderbook/orderbook.schemas.d.ts.map +1 -1
  140. package/dist/services/orderbook/orderbook.schemas.js +15 -15
  141. package/dist/services/orderbook/orderbook.schemas.js.map +1 -1
  142. package/dist/services/orders/order-errors.schemas.d.ts +18 -18
  143. package/dist/services/orders/order-errors.schemas.d.ts.map +1 -1
  144. package/dist/services/orders/order-errors.schemas.js +8 -8
  145. package/dist/services/orders/order-errors.schemas.js.map +1 -1
  146. package/dist/services/orders/orders-batch.schemas.d.ts +492 -492
  147. package/dist/services/orders/orders-batch.schemas.d.ts.map +1 -1
  148. package/dist/services/orders/orders-batch.schemas.js +117 -117
  149. package/dist/services/orders/orders-batch.schemas.js.map +1 -1
  150. package/dist/services/orders/orders-identifiers.schemas.js +5 -5
  151. package/dist/services/orders/orders-identifiers.schemas.js.map +1 -1
  152. package/dist/services/orders/orders-input.schemas.d.ts +648 -648
  153. package/dist/services/orders/orders-input.schemas.d.ts.map +1 -1
  154. package/dist/services/orders/orders-input.schemas.js +95 -95
  155. package/dist/services/orders/orders-input.schemas.js.map +1 -1
  156. package/dist/services/orders/orders-modify.schemas.d.ts +351 -351
  157. package/dist/services/orders/orders-modify.schemas.d.ts.map +1 -1
  158. package/dist/services/orders/orders-modify.schemas.js +44 -44
  159. package/dist/services/orders/orders-modify.schemas.js.map +1 -1
  160. package/dist/services/orders/orders-output.schemas.d.ts +179 -179
  161. package/dist/services/orders/orders-output.schemas.d.ts.map +1 -1
  162. package/dist/services/orders/orders-output.schemas.js +49 -49
  163. package/dist/services/orders/orders-output.schemas.js.map +1 -1
  164. package/dist/services/orders/orders-risk.schemas.d.ts +226 -226
  165. package/dist/services/orders/orders-risk.schemas.d.ts.map +1 -1
  166. package/dist/services/orders/orders-risk.schemas.js +69 -69
  167. package/dist/services/orders/orders-risk.schemas.js.map +1 -1
  168. package/dist/services/orders/orders.d.ts +6 -6
  169. package/dist/services/orders/orders.d.ts.map +1 -1
  170. package/dist/services/orders/orders.js +4 -3
  171. package/dist/services/orders/orders.js.map +1 -1
  172. package/dist/services/policies/api-key-policies/api-key-policies.d.ts +6 -6
  173. package/dist/services/policies/api-key-policies/api-key-policies.d.ts.map +1 -1
  174. package/dist/services/policies/api-key-policies/api-key-policies.js.map +1 -1
  175. package/dist/services/policies/api-key-policies/api-key-policies.schemas.d.ts +105 -105
  176. package/dist/services/policies/api-key-policies/api-key-policies.schemas.d.ts.map +1 -1
  177. package/dist/services/policies/api-key-policies/api-key-policies.schemas.js +49 -49
  178. package/dist/services/policies/api-key-policies/api-key-policies.schemas.js.map +1 -1
  179. package/dist/services/policies/shared.d.ts +5 -5
  180. package/dist/services/policies/shared.d.ts.map +1 -1
  181. package/dist/services/policies/shared.js +10 -10
  182. package/dist/services/policies/shared.js.map +1 -1
  183. package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts +6 -6
  184. package/dist/services/policies/subaccount-policies/subaccount-policies.d.ts.map +1 -1
  185. package/dist/services/policies/subaccount-policies/subaccount-policies.js +3 -2
  186. package/dist/services/policies/subaccount-policies/subaccount-policies.js.map +1 -1
  187. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.d.ts +124 -124
  188. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.d.ts.map +1 -1
  189. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.js +75 -75
  190. package/dist/services/policies/subaccount-policies/subaccount-policies.schemas.js.map +1 -1
  191. package/dist/services/rate-limits/index.d.ts +4 -0
  192. package/dist/services/rate-limits/rate-limits.codecs.d.ts +6 -0
  193. package/dist/services/rate-limits/rate-limits.codecs.d.ts.map +1 -0
  194. package/dist/services/rate-limits/rate-limits.codecs.js +11 -0
  195. package/dist/services/rate-limits/rate-limits.codecs.js.map +1 -0
  196. package/dist/services/rate-limits/rate-limits.d.ts +24 -0
  197. package/dist/services/rate-limits/rate-limits.d.ts.map +1 -0
  198. package/dist/services/rate-limits/rate-limits.js +40 -0
  199. package/dist/services/rate-limits/rate-limits.js.map +1 -0
  200. package/dist/services/rate-limits/rate-limits.schemas.d.ts +58 -0
  201. package/dist/services/rate-limits/rate-limits.schemas.d.ts.map +1 -0
  202. package/dist/services/rate-limits/rate-limits.schemas.js +30 -0
  203. package/dist/services/rate-limits/rate-limits.schemas.js.map +1 -0
  204. package/dist/services/rate-limits/rate-limits.types.d.ts +3 -0
  205. package/dist/services/shared.js +11 -11
  206. package/dist/services/shared.js.map +1 -1
  207. package/dist/services/social-verification/social-verification.d.ts +3 -3
  208. package/dist/services/social-verification/social-verification.d.ts.map +1 -1
  209. package/dist/services/social-verification/social-verification.js.map +1 -1
  210. package/dist/services/social-verification/social-verification.schemas.d.ts +54 -54
  211. package/dist/services/social-verification/social-verification.schemas.d.ts.map +1 -1
  212. package/dist/services/social-verification/social-verification.schemas.js +28 -28
  213. package/dist/services/social-verification/social-verification.schemas.js.map +1 -1
  214. package/dist/services/subaccounts/subaccounts.d.ts +14 -14
  215. package/dist/services/subaccounts/subaccounts.d.ts.map +1 -1
  216. package/dist/services/subaccounts/subaccounts.js +9 -8
  217. package/dist/services/subaccounts/subaccounts.js.map +1 -1
  218. package/dist/services/subaccounts/subaccounts.schemas.d.ts +137 -137
  219. package/dist/services/subaccounts/subaccounts.schemas.d.ts.map +1 -1
  220. package/dist/services/subaccounts/subaccounts.schemas.js +72 -72
  221. package/dist/services/subaccounts/subaccounts.schemas.js.map +1 -1
  222. package/dist/services/trades/trades.d.ts +2 -2
  223. package/dist/services/trades/trades.d.ts.map +1 -1
  224. package/dist/services/trades/trades.js +3 -2
  225. package/dist/services/trades/trades.js.map +1 -1
  226. package/dist/services/trades/trades.schemas.d.ts +31 -31
  227. package/dist/services/trades/trades.schemas.d.ts.map +1 -1
  228. package/dist/services/trades/trades.schemas.js +24 -24
  229. package/dist/services/trades/trades.schemas.js.map +1 -1
  230. package/dist/services/trading-withdraws/trading-withdraws.js +1 -1
  231. package/dist/services/trading-withdraws/trading-withdraws.js.map +1 -1
  232. package/dist/services/trading-withdraws/trading-withdraws.schemas.d.ts +45 -45
  233. package/dist/services/trading-withdraws/trading-withdraws.schemas.d.ts.map +1 -1
  234. package/dist/services/trading-withdraws/trading-withdraws.schemas.js +36 -36
  235. package/dist/services/trading-withdraws/trading-withdraws.schemas.js.map +1 -1
  236. package/dist/services/transfers/transfers.d.ts.map +1 -1
  237. package/dist/services/transfers/transfers.js +3 -2
  238. package/dist/services/transfers/transfers.js.map +1 -1
  239. package/dist/services/transfers/transfers.schemas.d.ts +42 -42
  240. package/dist/services/transfers/transfers.schemas.d.ts.map +1 -1
  241. package/dist/services/transfers/transfers.schemas.js +30 -30
  242. package/dist/services/transfers/transfers.schemas.js.map +1 -1
  243. package/dist/services/triggers/trigger-child-order.schemas.js +23 -23
  244. package/dist/services/triggers/trigger-child-order.schemas.js.map +1 -1
  245. package/dist/services/triggers/trigger-input.schemas.d.ts +226 -226
  246. package/dist/services/triggers/trigger-input.schemas.d.ts.map +1 -1
  247. package/dist/services/triggers/trigger-input.schemas.js +53 -53
  248. package/dist/services/triggers/trigger-input.schemas.js.map +1 -1
  249. package/dist/services/triggers/triggers-output.schemas.d.ts +218 -218
  250. package/dist/services/triggers/triggers-output.schemas.d.ts.map +1 -1
  251. package/dist/services/triggers/triggers-output.schemas.js +152 -152
  252. package/dist/services/triggers/triggers-output.schemas.js.map +1 -1
  253. package/dist/services/triggers/triggers.d.ts.map +1 -1
  254. package/dist/services/triggers/triggers.js +4 -3
  255. package/dist/services/triggers/triggers.js.map +1 -1
  256. package/dist/services/vip/index.d.ts +3 -0
  257. package/dist/services/vip/vip.d.ts +22 -0
  258. package/dist/services/vip/vip.d.ts.map +1 -0
  259. package/dist/services/vip/vip.js +35 -0
  260. package/dist/services/vip/vip.js.map +1 -0
  261. package/dist/services/vip/vip.schemas.d.ts +90 -0
  262. package/dist/services/vip/vip.schemas.d.ts.map +1 -0
  263. package/dist/services/vip/vip.schemas.js +47 -0
  264. package/dist/services/vip/vip.schemas.js.map +1 -0
  265. package/dist/services/vip/vip.types.d.ts +2 -0
  266. package/dist/services/whiteboard/whiteboard.js.map +1 -1
  267. package/dist/services/whiteboard/whiteboard.schemas.d.ts +379 -379
  268. package/dist/services/whiteboard/whiteboard.schemas.d.ts.map +1 -1
  269. package/dist/services/whiteboard/whiteboard.schemas.js +71 -71
  270. package/dist/services/whiteboard/whiteboard.schemas.js.map +1 -1
  271. package/dist/services/zipper/zipper.js.map +1 -1
  272. package/dist/services/zipper/zipper.schemas.d.ts +1 -1
  273. package/dist/services/zipper/zipper.schemas.js +54 -54
  274. package/dist/services/zipper/zipper.schemas.js.map +1 -1
  275. package/dist/shared/account-scope.d.ts +6 -6
  276. package/dist/shared/account-scope.d.ts.map +1 -1
  277. package/dist/shared/account-scope.js +3 -3
  278. package/dist/shared/account-scope.js.map +1 -1
  279. package/dist/shared/connect-error-mapping.js +2 -2
  280. package/dist/shared/connect-error-mapping.js.map +1 -1
  281. package/dist/shared/rate-limit.schemas.d.ts +12 -12
  282. package/dist/shared/rate-limit.schemas.d.ts.map +1 -1
  283. package/dist/shared/rate-limit.schemas.js +7 -7
  284. package/dist/shared/rate-limit.schemas.js.map +1 -1
  285. package/dist/shared/schemas.js +26 -26
  286. package/dist/shared/schemas.js.map +1 -1
  287. package/dist/shared/validation.js +1 -6
  288. package/dist/shared/validation.js.map +1 -1
  289. package/dist/utils/connect-order-errors.js +2 -2
  290. package/dist/utils/connect-order-errors.js.map +1 -1
  291. package/dist/wired-services.d.ts.map +1 -1
  292. package/dist/wired-services.js +6 -0
  293. package/dist/wired-services.js.map +1 -1
  294. package/package.json +3 -3
  295. package/dist/shared/validation.d.ts +0 -14
  296. package/dist/shared/validation.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"connect-error-mapping.js","names":["OrderErrorDetailSchema","v"],"sources":["../../src/shared/connect-error-mapping.ts"],"sourcesContent":["import { Code, ConnectError, type Interceptor, type Transport } from \"@connectrpc/connect\";\nimport * as v from \"./validation.js\";\nimport { AuthErrorCode, AuthErrorDetailSchema } from \"../gen/auth/v1/auth_pb.js\";\nimport {\n ErrorCode as OrderErrorCode,\n ErrorDetailSchema as OrderErrorDetailSchema,\n} from \"../gen/orders/v1/orders_pb.js\";\nimport {\n AlreadyExistsError,\n AuthenticationError,\n InternalServerError,\n isAbortError,\n MfaEnrollmentRequiredError,\n MfaLastFactorRequiredError,\n MfaVerificationError,\n type MfaVerificationFailureReason,\n normalizeErrorMessage,\n PermissionError,\n PolicyInUseError,\n PolicyLockedError,\n PolicyScopeMismatchError,\n PolyesterError,\n type PolyesterErrorOptions,\n PreconditionFailedError,\n RateLimitError,\n ResourceNotFoundError,\n RevisionConflictError,\n ServiceUnavailableError,\n SessionElevationRequiredError,\n StaleQuoteError,\n StepUpRequiredError,\n TimeoutError,\n TransientError,\n ValidationError,\n} from \"./errors.js\";\nimport { RateLimitDetailSchema, type RateLimitDetail } from \"./rate-limit.schemas.js\";\n\nfunction getAuthErrorDetails(err: unknown) {\n return ConnectError.from(err).findDetails(AuthErrorDetailSchema);\n}\n\nfunction hasAuthErrorCode(err: unknown, code: AuthErrorCode): boolean {\n return getAuthErrorDetails(err).some((detail) => detail.code === code);\n}\n\nfunction hasOrderErrorCode(err: unknown, code: OrderErrorCode): boolean {\n return getOrderErrorDetails(err).some((detail) => detail.code === code);\n}\n\nfunction getOrderErrorDetails(err: unknown) {\n return ConnectError.from(err).findDetails(OrderErrorDetailSchema);\n}\n\nfunction getRateLimitDetail(err: unknown): RateLimitDetail | undefined {\n for (const orderDetail of getOrderErrorDetails(err)) {\n if (!orderDetail.rateLimit) continue;\n const result = v.safeParse(RateLimitDetailSchema, orderDetail.rateLimit);\n if (result.success) return result.output;\n }\n return undefined;\n}\n\nfunction safeRetryAfterMs(rateLimit: RateLimitDetail | undefined): number | undefined {\n if (rateLimit?.retryAfterMs === undefined) return undefined;\n const value = BigInt(rateLimit.retryAfterMs);\n return value <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : undefined;\n}\n\n/**\n * Returns the error message without the leading \"[code] \" prefix that\n * `ConnectError` prepends, e.g. \"[invalid_argument] Insufficient funds.\"\n * becomes \"Insufficient funds.\".\n */\nexport function getNormalizedConnectMessage(err: unknown): string {\n const ce = ConnectError.from(err);\n const raw = ce.message ?? \"\";\n return normalizeErrorMessage(raw);\n}\n\nexport type MfaErrorKind = \"session-elevation\" | \"enrollment\" | \"step-up\";\n\n/**\n * Classifies an error as one of the MFA flows the backend can demand.\n * Classification is based only on stable structured auth error details.\n */\nexport function detectMfaErrorKind(err: unknown): MfaErrorKind | null {\n if (hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_ELEVATION_REQUIRED)) {\n return \"session-elevation\";\n }\n if (hasAuthErrorCode(err, AuthErrorCode.AUTH_STEP_UP_REQUIRED)) return \"step-up\";\n if (hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_NOT_ENROLLED)) return \"enrollment\";\n return null;\n}\n\nfunction parseRetryAfterMs(ce: ConnectError): number | undefined {\n const value = ce.metadata.get(\"retry-after\");\n if (!value) return undefined;\n const seconds = Number(value);\n if (Number.isFinite(seconds)) return Math.max(0, Math.round(seconds * 1000));\n const date = Date.parse(value);\n if (!Number.isNaN(date)) return Math.max(0, date - Date.now());\n return undefined;\n}\n\nconst MFA_ERROR_CLASSES = {\n \"session-elevation\": SessionElevationRequiredError,\n enrollment: MfaEnrollmentRequiredError,\n \"step-up\": StepUpRequiredError,\n} as const;\n\n/**\n * Maps a `ConnectError` from the Polyester backend onto the typed\n * {@link PolyesterError} tree. The original error is preserved as `cause`.\n */\nexport function connectErrorToPolyesterError(ce: ConnectError): PolyesterError {\n const message = getNormalizedConnectMessage(ce);\n const options: PolyesterErrorOptions = { cause: ce };\n const withFallback = (fallback: string) => message || fallback;\n\n if (hasAuthErrorCode(ce, AuthErrorCode.AUTH_RESOURCE_NOT_FOUND)) {\n return new ResourceNotFoundError(withFallback(\"Resource not found.\"), options);\n }\n\n if (hasAuthErrorCode(ce, AuthErrorCode.AUTH_REVISION_CONFLICT)) {\n return new RevisionConflictError(\n withFallback(\"Resource changed since it was last read.\"),\n options,\n );\n }\n\n if (hasAuthErrorCode(ce, AuthErrorCode.AUTH_POLICY_IN_USE)) {\n return new PolicyInUseError(withFallback(\"Policy is still in use.\"), options);\n }\n if (hasAuthErrorCode(ce, AuthErrorCode.AUTH_POLICY_LOCKED)) {\n return new PolicyLockedError(withFallback(\"Policy is locked.\"), options);\n }\n if (hasAuthErrorCode(ce, AuthErrorCode.AUTH_POLICY_SCOPE_MISMATCH)) {\n return new PolicyScopeMismatchError(\n withFallback(\"Policy does not belong to the target account scope.\"),\n options,\n );\n }\n if (hasAuthErrorCode(ce, AuthErrorCode.AUTH_MFA_LAST_FACTOR_REQUIRED)) {\n return new MfaLastFactorRequiredError(\n withFallback(\"At least one active MFA factor must remain enrolled.\"),\n options,\n );\n }\n\n const mfaVerificationReason = getMfaVerificationFailureReason(ce);\n if (mfaVerificationReason) {\n return new MfaVerificationError(\n withFallback(\"MFA verification failed.\"),\n mfaVerificationReason,\n options,\n );\n }\n\n const mfaKind = detectMfaErrorKind(ce);\n if (mfaKind) {\n return new MFA_ERROR_CLASSES[mfaKind](\n withFallback(\"Multi-factor authentication required.\"),\n options,\n );\n }\n\n if (hasOrderErrorCode(ce, OrderErrorCode.STALE_QUOTE)) {\n return new StaleQuoteError(withFallback(\"The submitted market quote is stale.\"), options);\n }\n\n const rateLimit = getRateLimitDetail(ce);\n if (rateLimit || hasOrderErrorCode(ce, OrderErrorCode.RATE_LIMIT_EXCEEDED)) {\n return new RateLimitError(withFallback(\"Rate limit exceeded.\"), {\n ...options,\n rateLimit,\n retryAfterMs: safeRetryAfterMs(rateLimit) ?? parseRetryAfterMs(ce),\n });\n }\n\n switch (ce.code) {\n case Code.InvalidArgument:\n case Code.OutOfRange:\n return new ValidationError(withFallback(\"Invalid request.\"), options);\n case Code.NotFound:\n return new ResourceNotFoundError(withFallback(\"Resource not found.\"), options);\n case Code.AlreadyExists:\n return new AlreadyExistsError(withFallback(\"Resource already exists.\"), options);\n case Code.PermissionDenied:\n return new PermissionError(withFallback(\"Permission denied.\"), options);\n case Code.Unauthenticated:\n return new AuthenticationError(withFallback(\"Authentication required.\"), options);\n case Code.FailedPrecondition:\n return new PreconditionFailedError(withFallback(\"Precondition failed.\"), options);\n case Code.ResourceExhausted:\n return new RateLimitError(withFallback(\"Rate limit exceeded.\"), {\n ...options,\n retryAfterMs: parseRetryAfterMs(ce),\n });\n case Code.DeadlineExceeded:\n return new TimeoutError(withFallback(\"Request timed out.\"), options);\n case Code.Unavailable:\n return new ServiceUnavailableError(withFallback(\"Service unavailable.\"), options);\n case Code.Aborted:\n return new TransientError(withFallback(\"Operation aborted by the backend.\"), options);\n default:\n // Gateways sometimes surface outages as Unknown with this stock phrase.\n if (/service temporarily unavailable/i.test(message)) {\n return new ServiceUnavailableError(withFallback(\"Service unavailable.\"), options);\n }\n return new InternalServerError(withFallback(\"Internal server error.\"), options);\n }\n}\n\nfunction getMfaVerificationFailureReason(err: unknown): MfaVerificationFailureReason | null {\n if (hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_CHALLENGE_INVALID)) {\n return \"challenge-invalid\";\n }\n if (hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_CHALLENGE_LOCKED)) {\n return \"challenge-locked\";\n }\n if (hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_OTP_INVALID)) return \"otp-invalid\";\n if (hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_RECOVERY_INVALID)) {\n return \"recovery-code-invalid\";\n }\n if (\n hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_PASSKEY_CREDENTIAL_INVALID) ||\n hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_PASSKEY_VERIFY_FAILED)\n ) {\n return \"passkey-invalid\";\n }\n\n return null;\n}\n\nfunction findPolyesterErrorInCauseChain(err: unknown): PolyesterError | null {\n let current: unknown = err;\n for (let depth = 0; depth < 5 && current instanceof Error; depth++) {\n current = current.cause;\n if (current instanceof PolyesterError) return current;\n }\n return null;\n}\n\n/**\n * Converts any RPC-layer failure into its typed SDK error. Abort errors and\n * caller-cancelled requests pass through unchanged, as do errors that are\n * already typed (e.g. a `NetworkError` from the SDK fetch wrapper).\n */\nexport function toPolyesterError(err: unknown): unknown {\n if (err instanceof PolyesterError) return err;\n if (isAbortError(err)) return err;\n if (err instanceof ConnectError) {\n if (err.code === Code.Canceled) return err;\n const wrapped = findPolyesterErrorInCauseChain(err);\n if (wrapped) return wrapped;\n return connectErrorToPolyesterError(err);\n }\n return err;\n}\n\nasync function* mapStreamErrors<T>(source: AsyncIterable<T>): AsyncIterable<T> {\n try {\n yield* source;\n } catch (err) {\n throw toPolyesterError(err);\n }\n}\n\n/**\n * Interceptor that converts every RPC failure (unary and streaming) into the\n * typed {@link PolyesterError} hierarchy. Installed outermost by\n * `createTransports`, so callers of SDK services always see typed errors.\n */\nexport function createErrorMappingInterceptor(): Interceptor {\n return (next) => async (req) => {\n try {\n const res = await next(req);\n if (res.stream) {\n return { ...res, message: mapStreamErrors(res.message) };\n }\n return res;\n } catch (err) {\n throw toPolyesterError(err);\n }\n };\n}\n\n/**\n * Wraps a Connect transport so errors are translated after Connect's call\n * runner has applied its own error normalization.\n */\nexport function createErrorMappingTransport(transport: Transport): Transport {\n return {\n async unary(method, signal, timeoutMs, header, input, contextValues) {\n try {\n return await transport.unary(\n method,\n signal,\n timeoutMs,\n header,\n input,\n contextValues,\n );\n } catch (error) {\n throw toPolyesterError(error);\n }\n },\n async stream(method, signal, timeoutMs, header, input, contextValues) {\n try {\n const response = await transport.stream(\n method,\n signal,\n timeoutMs,\n header,\n input,\n contextValues,\n );\n return { ...response, message: mapStreamErrors(response.message) };\n } catch (error) {\n throw toPolyesterError(error);\n }\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"connect-error-mapping.js","names":["OrderErrorDetailSchema"],"sources":["../../src/shared/connect-error-mapping.ts"],"sourcesContent":["import { Code, ConnectError, type Interceptor, type Transport } from \"@connectrpc/connect\";\nimport * as v from \"valibot\";\nimport { AuthErrorCode, AuthErrorDetailSchema } from \"../gen/auth/v1/auth_pb.js\";\nimport {\n ErrorCode as OrderErrorCode,\n ErrorDetailSchema as OrderErrorDetailSchema,\n} from \"../gen/orders/v1/orders_pb.js\";\nimport {\n AlreadyExistsError,\n AuthenticationError,\n InternalServerError,\n isAbortError,\n MfaEnrollmentRequiredError,\n MfaLastFactorRequiredError,\n MfaVerificationError,\n type MfaVerificationFailureReason,\n normalizeErrorMessage,\n PermissionError,\n PolicyInUseError,\n PolicyLockedError,\n PolicyScopeMismatchError,\n PolyesterError,\n type PolyesterErrorOptions,\n PreconditionFailedError,\n RateLimitError,\n ResourceNotFoundError,\n RevisionConflictError,\n ServiceUnavailableError,\n SessionElevationRequiredError,\n StaleQuoteError,\n StepUpRequiredError,\n TimeoutError,\n TransientError,\n ValidationError,\n} from \"./errors.js\";\nimport { RateLimitDetailSchema, type RateLimitDetail } from \"./rate-limit.schemas.js\";\n\nfunction getAuthErrorDetails(err: unknown) {\n return ConnectError.from(err).findDetails(AuthErrorDetailSchema);\n}\n\nfunction hasAuthErrorCode(err: unknown, code: AuthErrorCode): boolean {\n return getAuthErrorDetails(err).some((detail) => detail.code === code);\n}\n\nfunction hasOrderErrorCode(err: unknown, code: OrderErrorCode): boolean {\n return getOrderErrorDetails(err).some((detail) => detail.code === code);\n}\n\nfunction getOrderErrorDetails(err: unknown) {\n return ConnectError.from(err).findDetails(OrderErrorDetailSchema);\n}\n\nfunction getRateLimitDetail(err: unknown): RateLimitDetail | undefined {\n for (const orderDetail of getOrderErrorDetails(err)) {\n if (!orderDetail.rateLimit) continue;\n const result = v.safeParse(RateLimitDetailSchema, orderDetail.rateLimit);\n if (result.success) return result.output;\n }\n return undefined;\n}\n\nfunction safeRetryAfterMs(rateLimit: RateLimitDetail | undefined): number | undefined {\n if (rateLimit?.retryAfterMs === undefined) return undefined;\n const value = BigInt(rateLimit.retryAfterMs);\n return value <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : undefined;\n}\n\n/**\n * Returns the error message without the leading \"[code] \" prefix that\n * `ConnectError` prepends, e.g. \"[invalid_argument] Insufficient funds.\"\n * becomes \"Insufficient funds.\".\n */\nexport function getNormalizedConnectMessage(err: unknown): string {\n const ce = ConnectError.from(err);\n const raw = ce.message ?? \"\";\n return normalizeErrorMessage(raw);\n}\n\nexport type MfaErrorKind = \"session-elevation\" | \"enrollment\" | \"step-up\";\n\n/**\n * Classifies an error as one of the MFA flows the backend can demand.\n * Classification is based only on stable structured auth error details.\n */\nexport function detectMfaErrorKind(err: unknown): MfaErrorKind | null {\n if (hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_ELEVATION_REQUIRED)) {\n return \"session-elevation\";\n }\n if (hasAuthErrorCode(err, AuthErrorCode.AUTH_STEP_UP_REQUIRED)) return \"step-up\";\n if (hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_NOT_ENROLLED)) return \"enrollment\";\n return null;\n}\n\nfunction parseRetryAfterMs(ce: ConnectError): number | undefined {\n const value = ce.metadata.get(\"retry-after\");\n if (!value) return undefined;\n const seconds = Number(value);\n if (Number.isFinite(seconds)) return Math.max(0, Math.round(seconds * 1000));\n const date = Date.parse(value);\n if (!Number.isNaN(date)) return Math.max(0, date - Date.now());\n return undefined;\n}\n\nconst MFA_ERROR_CLASSES = {\n \"session-elevation\": SessionElevationRequiredError,\n enrollment: MfaEnrollmentRequiredError,\n \"step-up\": StepUpRequiredError,\n} as const;\n\n/**\n * Maps a `ConnectError` from the Polyester backend onto the typed\n * {@link PolyesterError} tree. The original error is preserved as `cause`.\n */\nexport function connectErrorToPolyesterError(ce: ConnectError): PolyesterError {\n const message = getNormalizedConnectMessage(ce);\n const options: PolyesterErrorOptions = { cause: ce };\n const withFallback = (fallback: string) => message || fallback;\n\n if (hasAuthErrorCode(ce, AuthErrorCode.AUTH_RESOURCE_NOT_FOUND)) {\n return new ResourceNotFoundError(withFallback(\"Resource not found.\"), options);\n }\n\n if (hasAuthErrorCode(ce, AuthErrorCode.AUTH_REVISION_CONFLICT)) {\n return new RevisionConflictError(\n withFallback(\"Resource changed since it was last read.\"),\n options,\n );\n }\n\n if (hasAuthErrorCode(ce, AuthErrorCode.AUTH_POLICY_IN_USE)) {\n return new PolicyInUseError(withFallback(\"Policy is still in use.\"), options);\n }\n if (hasAuthErrorCode(ce, AuthErrorCode.AUTH_POLICY_LOCKED)) {\n return new PolicyLockedError(withFallback(\"Policy is locked.\"), options);\n }\n if (hasAuthErrorCode(ce, AuthErrorCode.AUTH_POLICY_SCOPE_MISMATCH)) {\n return new PolicyScopeMismatchError(\n withFallback(\"Policy does not belong to the target account scope.\"),\n options,\n );\n }\n if (hasAuthErrorCode(ce, AuthErrorCode.AUTH_MFA_LAST_FACTOR_REQUIRED)) {\n return new MfaLastFactorRequiredError(\n withFallback(\"At least one active MFA factor must remain enrolled.\"),\n options,\n );\n }\n\n const mfaVerificationReason = getMfaVerificationFailureReason(ce);\n if (mfaVerificationReason) {\n return new MfaVerificationError(\n withFallback(\"MFA verification failed.\"),\n mfaVerificationReason,\n options,\n );\n }\n\n const mfaKind = detectMfaErrorKind(ce);\n if (mfaKind) {\n return new MFA_ERROR_CLASSES[mfaKind](\n withFallback(\"Multi-factor authentication required.\"),\n options,\n );\n }\n\n if (hasOrderErrorCode(ce, OrderErrorCode.STALE_QUOTE)) {\n return new StaleQuoteError(withFallback(\"The submitted market quote is stale.\"), options);\n }\n\n const rateLimit = getRateLimitDetail(ce);\n if (rateLimit || hasOrderErrorCode(ce, OrderErrorCode.RATE_LIMIT_EXCEEDED)) {\n return new RateLimitError(withFallback(\"Rate limit exceeded.\"), {\n ...options,\n rateLimit,\n retryAfterMs: safeRetryAfterMs(rateLimit) ?? parseRetryAfterMs(ce),\n });\n }\n\n switch (ce.code) {\n case Code.InvalidArgument:\n case Code.OutOfRange:\n return new ValidationError(withFallback(\"Invalid request.\"), options);\n case Code.NotFound:\n return new ResourceNotFoundError(withFallback(\"Resource not found.\"), options);\n case Code.AlreadyExists:\n return new AlreadyExistsError(withFallback(\"Resource already exists.\"), options);\n case Code.PermissionDenied:\n return new PermissionError(withFallback(\"Permission denied.\"), options);\n case Code.Unauthenticated:\n return new AuthenticationError(withFallback(\"Authentication required.\"), options);\n case Code.FailedPrecondition:\n return new PreconditionFailedError(withFallback(\"Precondition failed.\"), options);\n case Code.ResourceExhausted:\n return new RateLimitError(withFallback(\"Rate limit exceeded.\"), {\n ...options,\n retryAfterMs: parseRetryAfterMs(ce),\n });\n case Code.DeadlineExceeded:\n return new TimeoutError(withFallback(\"Request timed out.\"), options);\n case Code.Unavailable:\n return new ServiceUnavailableError(withFallback(\"Service unavailable.\"), options);\n case Code.Aborted:\n return new TransientError(withFallback(\"Operation aborted by the backend.\"), options);\n default:\n // Gateways sometimes surface outages as Unknown with this stock phrase.\n if (/service temporarily unavailable/i.test(message)) {\n return new ServiceUnavailableError(withFallback(\"Service unavailable.\"), options);\n }\n return new InternalServerError(withFallback(\"Internal server error.\"), options);\n }\n}\n\nfunction getMfaVerificationFailureReason(err: unknown): MfaVerificationFailureReason | null {\n if (hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_CHALLENGE_INVALID)) {\n return \"challenge-invalid\";\n }\n if (hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_CHALLENGE_LOCKED)) {\n return \"challenge-locked\";\n }\n if (hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_OTP_INVALID)) return \"otp-invalid\";\n if (hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_RECOVERY_INVALID)) {\n return \"recovery-code-invalid\";\n }\n if (\n hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_PASSKEY_CREDENTIAL_INVALID) ||\n hasAuthErrorCode(err, AuthErrorCode.AUTH_MFA_PASSKEY_VERIFY_FAILED)\n ) {\n return \"passkey-invalid\";\n }\n\n return null;\n}\n\nfunction findPolyesterErrorInCauseChain(err: unknown): PolyesterError | null {\n let current: unknown = err;\n for (let depth = 0; depth < 5 && current instanceof Error; depth++) {\n current = current.cause;\n if (current instanceof PolyesterError) return current;\n }\n return null;\n}\n\n/**\n * Converts any RPC-layer failure into its typed SDK error. Abort errors and\n * caller-cancelled requests pass through unchanged, as do errors that are\n * already typed (e.g. a `NetworkError` from the SDK fetch wrapper).\n */\nexport function toPolyesterError(err: unknown): unknown {\n if (err instanceof PolyesterError) return err;\n if (isAbortError(err)) return err;\n if (err instanceof ConnectError) {\n if (err.code === Code.Canceled) return err;\n const wrapped = findPolyesterErrorInCauseChain(err);\n if (wrapped) return wrapped;\n return connectErrorToPolyesterError(err);\n }\n return err;\n}\n\nasync function* mapStreamErrors<T>(source: AsyncIterable<T>): AsyncIterable<T> {\n try {\n yield* source;\n } catch (err) {\n throw toPolyesterError(err);\n }\n}\n\n/**\n * Interceptor that converts every RPC failure (unary and streaming) into the\n * typed {@link PolyesterError} hierarchy. Installed outermost by\n * `createTransports`, so callers of SDK services always see typed errors.\n */\nexport function createErrorMappingInterceptor(): Interceptor {\n return (next) => async (req) => {\n try {\n const res = await next(req);\n if (res.stream) {\n return { ...res, message: mapStreamErrors(res.message) };\n }\n return res;\n } catch (err) {\n throw toPolyesterError(err);\n }\n };\n}\n\n/**\n * Wraps a Connect transport so errors are translated after Connect's call\n * runner has applied its own error normalization.\n */\nexport function createErrorMappingTransport(transport: Transport): Transport {\n return {\n async unary(method, signal, timeoutMs, header, input, contextValues) {\n try {\n return await transport.unary(\n method,\n signal,\n timeoutMs,\n header,\n input,\n contextValues,\n );\n } catch (error) {\n throw toPolyesterError(error);\n }\n },\n async stream(method, signal, timeoutMs, header, input, contextValues) {\n try {\n const response = await transport.stream(\n method,\n signal,\n timeoutMs,\n header,\n input,\n contextValues,\n );\n return { ...response, message: mapStreamErrors(response.message) };\n } catch (error) {\n throw toPolyesterError(error);\n }\n },\n };\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { validation_d_exports } from "./validation.js";
2
1
  import { FailureReason, LimiterScope, PolicyClass, RefillModel } from "../gen/polyester/ratelimit/v1/types_pb.js";
2
+ import * as v from "valibot";
3
3
  //#region src/shared/rate-limit.schemas.d.ts
4
4
  declare const RATE_LIMIT_FAILURE_REASON_VALUES: readonly ["unspecified", "quota_exceeded", "authority_unavailable"];
5
5
  declare const RATE_LIMIT_POLICY_CLASS_VALUES: readonly ["unspecified", "auth_public", "trading_place", "trading_cancel", "trading_read", "account_admin", "public_read", "account_security", "deposit_create", "internal_transfer", "withdraw_submit", "withdraw_validate", "guard_sign", "social_provider"];
@@ -14,19 +14,19 @@ type RateLimitScope = (typeof RATE_LIMIT_SCOPE_VALUES)[number];
14
14
  /** Refill behavior for the exhausted quota. */
15
15
  type RateLimitRefillModel = (typeof RATE_LIMIT_REFILL_MODEL_VALUES)[number];
16
16
  /** Parses protobuf quota state into the stable SDK rate-limit detail shape. */
17
- declare const RateLimitDetailSchema: validation_d_exports.ObjectSchema<{
18
- readonly reason: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.EnumSchema<typeof FailureReason, undefined>, validation_d_exports.TransformAction<FailureReason, "unspecified" | "quota_exceeded" | "authority_unavailable">]>;
19
- readonly limit: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.OptionalSchema<validation_d_exports.BigintSchema<undefined>, undefined>, validation_d_exports.TransformAction<bigint | undefined, string | undefined>]>;
20
- readonly remaining: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.OptionalSchema<validation_d_exports.BigintSchema<undefined>, undefined>, validation_d_exports.TransformAction<bigint | undefined, string | undefined>]>;
21
- readonly retryAfterMs: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.OptionalSchema<validation_d_exports.BigintSchema<undefined>, undefined>, validation_d_exports.TransformAction<bigint | undefined, string | undefined>]>;
22
- readonly policyVersion: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.OptionalSchema<validation_d_exports.BigintSchema<undefined>, undefined>, validation_d_exports.TransformAction<bigint | undefined, string | undefined>]>;
23
- readonly operationId: validation_d_exports.StringSchema<undefined>;
24
- readonly policyClass: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.EnumSchema<typeof PolicyClass, undefined>, validation_d_exports.TransformAction<PolicyClass, "unspecified" | "auth_public" | "trading_place" | "trading_cancel" | "trading_read" | "account_admin" | "public_read" | "account_security" | "deposit_create" | "internal_transfer" | "withdraw_submit" | "withdraw_validate" | "guard_sign" | "social_provider">]>;
25
- readonly scope: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.EnumSchema<typeof LimiterScope, undefined>, validation_d_exports.TransformAction<LimiterScope, "symbol" | "unspecified" | "client_ip" | "api_key" | "account" | "subaccount" | "connection" | "service" | "region" | "auth_subject">]>;
26
- readonly refillModel: validation_d_exports.SchemaWithPipe<readonly [validation_d_exports.EnumSchema<typeof RefillModel, undefined>, validation_d_exports.TransformAction<RefillModel, "unspecified" | "continuous" | "fixed_window" | "rolling_window">]>;
17
+ declare const RateLimitDetailSchema: v.ObjectSchema<{
18
+ readonly reason: v.SchemaWithPipe<readonly [v.EnumSchema<typeof FailureReason, undefined>, v.TransformAction<FailureReason, "unspecified" | "quota_exceeded" | "authority_unavailable">]>;
19
+ readonly limit: v.SchemaWithPipe<readonly [v.OptionalSchema<v.BigintSchema<undefined>, undefined>, v.TransformAction<bigint | undefined, string | undefined>]>;
20
+ readonly remaining: v.SchemaWithPipe<readonly [v.OptionalSchema<v.BigintSchema<undefined>, undefined>, v.TransformAction<bigint | undefined, string | undefined>]>;
21
+ readonly retryAfterMs: v.SchemaWithPipe<readonly [v.OptionalSchema<v.BigintSchema<undefined>, undefined>, v.TransformAction<bigint | undefined, string | undefined>]>;
22
+ readonly policyVersion: v.SchemaWithPipe<readonly [v.OptionalSchema<v.BigintSchema<undefined>, undefined>, v.TransformAction<bigint | undefined, string | undefined>]>;
23
+ readonly operationId: v.StringSchema<undefined>;
24
+ readonly policyClass: v.SchemaWithPipe<readonly [v.EnumSchema<typeof PolicyClass, undefined>, v.TransformAction<PolicyClass, "unspecified" | "auth_public" | "trading_place" | "trading_cancel" | "trading_read" | "account_admin" | "public_read" | "account_security" | "deposit_create" | "internal_transfer" | "withdraw_submit" | "withdraw_validate" | "guard_sign" | "social_provider">]>;
25
+ readonly scope: v.SchemaWithPipe<readonly [v.EnumSchema<typeof LimiterScope, undefined>, v.TransformAction<LimiterScope, "symbol" | "unspecified" | "client_ip" | "api_key" | "account" | "subaccount" | "connection" | "service" | "region" | "auth_subject">]>;
26
+ readonly refillModel: v.SchemaWithPipe<readonly [v.EnumSchema<typeof RefillModel, undefined>, v.TransformAction<RefillModel, "unspecified" | "continuous" | "fixed_window" | "rolling_window">]>;
27
27
  }, undefined>;
28
28
  /** Structured quota state exposed by order rejections and {@link RateLimitError}. */
29
- type RateLimitDetail = validation_d_exports.InferOutput<typeof RateLimitDetailSchema>;
29
+ type RateLimitDetail = v.InferOutput<typeof RateLimitDetailSchema>;
30
30
  //#endregion
31
31
  export { RateLimitDetail, RateLimitDetailSchema, RateLimitFailureReason, RateLimitPolicyClass, RateLimitRefillModel, RateLimitScope };
32
32
  //# sourceMappingURL=rate-limit.schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit.schemas.d.ts","names":[],"sources":["../../src/shared/rate-limit.schemas.ts"],"mappings":";;;cAMM;cAMA;cAiBA;cAaA;;KAQM,iCAAiC;;KAEjC,+BAA+B;;KAE/B,yBAAyB;;KAEzB,+BAA+B;;cAsD9B,uBAAqB,qBAAA;;;;;;;;;;;;KAqDtB,kBAAkB,qBAAE,mBAAmB"}
1
+ {"version":3,"file":"rate-limit.schemas.d.ts","names":[],"sources":["../../src/shared/rate-limit.schemas.ts"],"mappings":";;;cAMM;cAMA;cAiBA;cAaA;;KAQM,iCAAiC;;KAEjC,+BAA+B;;KAE/B,yBAAyB;;KAEzB,+BAA+B;;cAsD9B,uBAAqB,EAAA;;;;;;;;;;;;KAqDtB,kBAAkB,EAAE,mBAAmB"}
@@ -1,7 +1,7 @@
1
- import { validation_exports } from "./validation.js";
2
1
  import { FailureReason, LimiterScope, PolicyClass, RefillModel } from "../gen/polyester/ratelimit/v1/types_pb.js";
3
2
  import { requiredEnumLabel } from "./proto-enum-codec.js";
4
3
  import { OptionalBigIntStringSchema } from "./schemas.js";
4
+ import * as v from "valibot";
5
5
  //#region src/shared/rate-limit.schemas.ts
6
6
  const RateLimitFailureReasonCodec = { protoToOutput: {
7
7
  [0]: "unspecified",
@@ -43,16 +43,16 @@ const RateLimitRefillModelCodec = { protoToOutput: {
43
43
  [3]: "rolling_window"
44
44
  } };
45
45
  /** Parses protobuf quota state into the stable SDK rate-limit detail shape. */
46
- const RateLimitDetailSchema = validation_exports.object({
47
- reason: validation_exports.pipe(validation_exports.enum(FailureReason), validation_exports.transform((reason) => requiredEnumLabel(RateLimitFailureReasonCodec.protoToOutput, reason, "RateLimitDetailSchema", "reason"))),
46
+ const RateLimitDetailSchema = v.object({
47
+ reason: v.pipe(v.enum(FailureReason), v.transform((reason) => requiredEnumLabel(RateLimitFailureReasonCodec.protoToOutput, reason, "RateLimitDetailSchema", "reason"))),
48
48
  limit: OptionalBigIntStringSchema,
49
49
  remaining: OptionalBigIntStringSchema,
50
50
  retryAfterMs: OptionalBigIntStringSchema,
51
51
  policyVersion: OptionalBigIntStringSchema,
52
- operationId: validation_exports.string(),
53
- policyClass: validation_exports.pipe(validation_exports.enum(PolicyClass), validation_exports.transform((policyClass) => requiredEnumLabel(RateLimitPolicyClassCodec.protoToOutput, policyClass, "RateLimitDetailSchema", "policyClass"))),
54
- scope: validation_exports.pipe(validation_exports.enum(LimiterScope), validation_exports.transform((scope) => requiredEnumLabel(RateLimitScopeCodec.protoToOutput, scope, "RateLimitDetailSchema", "scope"))),
55
- refillModel: validation_exports.pipe(validation_exports.enum(RefillModel), validation_exports.transform((refillModel) => requiredEnumLabel(RateLimitRefillModelCodec.protoToOutput, refillModel, "RateLimitDetailSchema", "refillModel")))
52
+ operationId: v.string(),
53
+ policyClass: v.pipe(v.enum(PolicyClass), v.transform((policyClass) => requiredEnumLabel(RateLimitPolicyClassCodec.protoToOutput, policyClass, "RateLimitDetailSchema", "policyClass"))),
54
+ scope: v.pipe(v.enum(LimiterScope), v.transform((scope) => requiredEnumLabel(RateLimitScopeCodec.protoToOutput, scope, "RateLimitDetailSchema", "scope"))),
55
+ refillModel: v.pipe(v.enum(RefillModel), v.transform((refillModel) => requiredEnumLabel(RateLimitRefillModelCodec.protoToOutput, refillModel, "RateLimitDetailSchema", "refillModel")))
56
56
  });
57
57
  //#endregion
58
58
  export { RateLimitDetailSchema };
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limit.schemas.js","names":["v","Proto.FailureReason","Proto.PolicyClass","Proto.LimiterScope","Proto.RefillModel"],"sources":["../../src/shared/rate-limit.schemas.ts"],"sourcesContent":["import * as v from \"./validation.js\";\nimport * as Proto from \"../gen/polyester/ratelimit/v1/types_pb.js\";\nimport type { ProtoToOutput } from \"../utils/types.js\";\nimport { requiredEnumLabel } from \"./proto-enum-codec.js\";\nimport { OptionalBigIntStringSchema } from \"./schemas.js\";\n\nconst RATE_LIMIT_FAILURE_REASON_VALUES = [\n \"unspecified\",\n \"quota_exceeded\",\n \"authority_unavailable\",\n] as const;\n\nconst RATE_LIMIT_POLICY_CLASS_VALUES = [\n \"unspecified\",\n \"auth_public\",\n \"trading_place\",\n \"trading_cancel\",\n \"trading_read\",\n \"account_admin\",\n \"public_read\",\n \"account_security\",\n \"deposit_create\",\n \"internal_transfer\",\n \"withdraw_submit\",\n \"withdraw_validate\",\n \"guard_sign\",\n \"social_provider\",\n] as const;\n\nconst RATE_LIMIT_SCOPE_VALUES = [\n \"unspecified\",\n \"client_ip\",\n \"api_key\",\n \"account\",\n \"subaccount\",\n \"connection\",\n \"service\",\n \"region\",\n \"symbol\",\n \"auth_subject\",\n] as const;\n\nconst RATE_LIMIT_REFILL_MODEL_VALUES = [\n \"unspecified\",\n \"continuous\",\n \"fixed_window\",\n \"rolling_window\",\n] as const;\n\n/** Machine-readable reason for a rate-limit rejection. */\nexport type RateLimitFailureReason = (typeof RATE_LIMIT_FAILURE_REASON_VALUES)[number];\n/** Quota policy family used for a rate-limit decision. */\nexport type RateLimitPolicyClass = (typeof RATE_LIMIT_POLICY_CLASS_VALUES)[number];\n/** Caller dimension that owns the exhausted capacity. */\nexport type RateLimitScope = (typeof RATE_LIMIT_SCOPE_VALUES)[number];\n/** Refill behavior for the exhausted quota. */\nexport type RateLimitRefillModel = (typeof RATE_LIMIT_REFILL_MODEL_VALUES)[number];\n\nconst RateLimitFailureReasonCodec = {\n protoToOutput: {\n [Proto.FailureReason.REASON_UNSPECIFIED]: \"unspecified\",\n [Proto.FailureReason.QUOTA_EXCEEDED]: \"quota_exceeded\",\n [Proto.FailureReason.AUTHORITY_UNAVAILABLE]: \"authority_unavailable\",\n } satisfies ProtoToOutput<Proto.FailureReason, RateLimitFailureReason>,\n} as const;\n\nconst RateLimitPolicyClassCodec = {\n protoToOutput: {\n [Proto.PolicyClass.CLASS_UNSPECIFIED]: \"unspecified\",\n [Proto.PolicyClass.AUTH_PUBLIC]: \"auth_public\",\n [Proto.PolicyClass.TRADING_PLACE]: \"trading_place\",\n [Proto.PolicyClass.TRADING_CANCEL]: \"trading_cancel\",\n [Proto.PolicyClass.TRADING_READ]: \"trading_read\",\n [Proto.PolicyClass.ACCOUNT_ADMIN]: \"account_admin\",\n [Proto.PolicyClass.PUBLIC_READ]: \"public_read\",\n [Proto.PolicyClass.ACCOUNT_SECURITY]: \"account_security\",\n [Proto.PolicyClass.DEPOSIT_CREATE]: \"deposit_create\",\n [Proto.PolicyClass.INTERNAL_TRANSFER]: \"internal_transfer\",\n [Proto.PolicyClass.WITHDRAW_SUBMIT]: \"withdraw_submit\",\n [Proto.PolicyClass.WITHDRAW_VALIDATE]: \"withdraw_validate\",\n [Proto.PolicyClass.GUARD_SIGN]: \"guard_sign\",\n [Proto.PolicyClass.SOCIAL_PROVIDER]: \"social_provider\",\n } satisfies ProtoToOutput<Proto.PolicyClass, RateLimitPolicyClass>,\n} as const;\n\nconst RateLimitScopeCodec = {\n protoToOutput: {\n [Proto.LimiterScope.SCOPE_UNSPECIFIED]: \"unspecified\",\n [Proto.LimiterScope.CLIENT_IP]: \"client_ip\",\n [Proto.LimiterScope.API_KEY]: \"api_key\",\n [Proto.LimiterScope.ACCOUNT]: \"account\",\n [Proto.LimiterScope.SUBACCOUNT]: \"subaccount\",\n [Proto.LimiterScope.CONNECTION]: \"connection\",\n [Proto.LimiterScope.SERVICE]: \"service\",\n [Proto.LimiterScope.REGION]: \"region\",\n [Proto.LimiterScope.SYMBOL]: \"symbol\",\n [Proto.LimiterScope.AUTH_SUBJECT]: \"auth_subject\",\n } satisfies ProtoToOutput<Proto.LimiterScope, RateLimitScope>,\n} as const;\n\nconst RateLimitRefillModelCodec = {\n protoToOutput: {\n [Proto.RefillModel.REFILL_UNSPECIFIED]: \"unspecified\",\n [Proto.RefillModel.CONTINUOUS]: \"continuous\",\n [Proto.RefillModel.FIXED_WINDOW]: \"fixed_window\",\n [Proto.RefillModel.ROLLING_WINDOW]: \"rolling_window\",\n } satisfies ProtoToOutput<Proto.RefillModel, RateLimitRefillModel>,\n} as const;\n\n/** Parses protobuf quota state into the stable SDK rate-limit detail shape. */\nexport const RateLimitDetailSchema = v.object({\n reason: v.pipe(\n v.enum(Proto.FailureReason),\n v.transform((reason) =>\n requiredEnumLabel(\n RateLimitFailureReasonCodec.protoToOutput,\n reason,\n \"RateLimitDetailSchema\",\n \"reason\",\n ),\n ),\n ),\n limit: OptionalBigIntStringSchema,\n remaining: OptionalBigIntStringSchema,\n retryAfterMs: OptionalBigIntStringSchema,\n policyVersion: OptionalBigIntStringSchema,\n operationId: v.string(),\n policyClass: v.pipe(\n v.enum(Proto.PolicyClass),\n v.transform((policyClass) =>\n requiredEnumLabel(\n RateLimitPolicyClassCodec.protoToOutput,\n policyClass,\n \"RateLimitDetailSchema\",\n \"policyClass\",\n ),\n ),\n ),\n scope: v.pipe(\n v.enum(Proto.LimiterScope),\n v.transform((scope) =>\n requiredEnumLabel(\n RateLimitScopeCodec.protoToOutput,\n scope,\n \"RateLimitDetailSchema\",\n \"scope\",\n ),\n ),\n ),\n refillModel: v.pipe(\n v.enum(Proto.RefillModel),\n v.transform((refillModel) =>\n requiredEnumLabel(\n RateLimitRefillModelCodec.protoToOutput,\n refillModel,\n \"RateLimitDetailSchema\",\n \"refillModel\",\n ),\n ),\n ),\n});\n\n/** Structured quota state exposed by order rejections and {@link RateLimitError}. */\nexport type RateLimitDetail = v.InferOutput<typeof RateLimitDetailSchema>;\n"],"mappings":";;;;;AA0DA,MAAM,8BAA8B,EAChC,eAAe;EAC+B,IAAA;EACJ,IAAA;EACO,IAAA;AACjD,EACJ;AAEA,MAAM,4BAA4B,EAC9B,eAAe;EAC4B,IAAA;EACN,IAAA;EACE,IAAA;EACC,IAAA;EACF,IAAA;EACC,IAAA;EACF,IAAA;EACK,IAAA;EACF,IAAA;EACG,IAAA;EACF,KAAA;EACE,KAAA;EACP,KAAA;EACK,KAAA;AACzC,EACJ;AAEA,MAAM,sBAAsB,EACxB,eAAe;EAC6B,IAAA;EACR,IAAA;EACF,IAAA;EACA,IAAA;EACG,IAAA;EACA,IAAA;EACH,IAAA;EACD,IAAA;EACA,IAAA;EACM,IAAA;AACvC,EACJ;AAEA,MAAM,4BAA4B,EAC9B,eAAe;EAC6B,IAAA;EACR,IAAA;EACE,IAAA;EACE,IAAA;AACxC,EACJ;;AAGA,MAAa,wBAAwBA,mBAAE,OAAO;CAC1C,QAAQA,mBAAE,KACNA,mBAAE,KAAKC,aAAmB,GAC1BD,mBAAE,WAAW,WACT,kBACI,4BAA4B,eAC5B,QACA,yBACA,QACJ,CACJ,CACJ;CACA,OAAO;CACP,WAAW;CACX,cAAc;CACd,eAAe;CACf,aAAaA,mBAAE,OAAO;CACtB,aAAaA,mBAAE,KACXA,mBAAE,KAAKE,WAAiB,GACxBF,mBAAE,WAAW,gBACT,kBACI,0BAA0B,eAC1B,aACA,yBACA,aACJ,CACJ,CACJ;CACA,OAAOA,mBAAE,KACLA,mBAAE,KAAKG,YAAkB,GACzBH,mBAAE,WAAW,UACT,kBACI,oBAAoB,eACpB,OACA,yBACA,OACJ,CACJ,CACJ;CACA,aAAaA,mBAAE,KACXA,mBAAE,KAAKI,WAAiB,GACxBJ,mBAAE,WAAW,gBACT,kBACI,0BAA0B,eAC1B,aACA,yBACA,aACJ,CACJ,CACJ;AACJ,CAAC"}
1
+ {"version":3,"file":"rate-limit.schemas.js","names":["Proto.FailureReason","Proto.PolicyClass","Proto.LimiterScope","Proto.RefillModel"],"sources":["../../src/shared/rate-limit.schemas.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport * as Proto from \"../gen/polyester/ratelimit/v1/types_pb.js\";\nimport type { ProtoToOutput } from \"../utils/types.js\";\nimport { requiredEnumLabel } from \"./proto-enum-codec.js\";\nimport { OptionalBigIntStringSchema } from \"./schemas.js\";\n\nconst RATE_LIMIT_FAILURE_REASON_VALUES = [\n \"unspecified\",\n \"quota_exceeded\",\n \"authority_unavailable\",\n] as const;\n\nconst RATE_LIMIT_POLICY_CLASS_VALUES = [\n \"unspecified\",\n \"auth_public\",\n \"trading_place\",\n \"trading_cancel\",\n \"trading_read\",\n \"account_admin\",\n \"public_read\",\n \"account_security\",\n \"deposit_create\",\n \"internal_transfer\",\n \"withdraw_submit\",\n \"withdraw_validate\",\n \"guard_sign\",\n \"social_provider\",\n] as const;\n\nconst RATE_LIMIT_SCOPE_VALUES = [\n \"unspecified\",\n \"client_ip\",\n \"api_key\",\n \"account\",\n \"subaccount\",\n \"connection\",\n \"service\",\n \"region\",\n \"symbol\",\n \"auth_subject\",\n] as const;\n\nconst RATE_LIMIT_REFILL_MODEL_VALUES = [\n \"unspecified\",\n \"continuous\",\n \"fixed_window\",\n \"rolling_window\",\n] as const;\n\n/** Machine-readable reason for a rate-limit rejection. */\nexport type RateLimitFailureReason = (typeof RATE_LIMIT_FAILURE_REASON_VALUES)[number];\n/** Quota policy family used for a rate-limit decision. */\nexport type RateLimitPolicyClass = (typeof RATE_LIMIT_POLICY_CLASS_VALUES)[number];\n/** Caller dimension that owns the exhausted capacity. */\nexport type RateLimitScope = (typeof RATE_LIMIT_SCOPE_VALUES)[number];\n/** Refill behavior for the exhausted quota. */\nexport type RateLimitRefillModel = (typeof RATE_LIMIT_REFILL_MODEL_VALUES)[number];\n\nconst RateLimitFailureReasonCodec = {\n protoToOutput: {\n [Proto.FailureReason.REASON_UNSPECIFIED]: \"unspecified\",\n [Proto.FailureReason.QUOTA_EXCEEDED]: \"quota_exceeded\",\n [Proto.FailureReason.AUTHORITY_UNAVAILABLE]: \"authority_unavailable\",\n } satisfies ProtoToOutput<Proto.FailureReason, RateLimitFailureReason>,\n} as const;\n\nconst RateLimitPolicyClassCodec = {\n protoToOutput: {\n [Proto.PolicyClass.CLASS_UNSPECIFIED]: \"unspecified\",\n [Proto.PolicyClass.AUTH_PUBLIC]: \"auth_public\",\n [Proto.PolicyClass.TRADING_PLACE]: \"trading_place\",\n [Proto.PolicyClass.TRADING_CANCEL]: \"trading_cancel\",\n [Proto.PolicyClass.TRADING_READ]: \"trading_read\",\n [Proto.PolicyClass.ACCOUNT_ADMIN]: \"account_admin\",\n [Proto.PolicyClass.PUBLIC_READ]: \"public_read\",\n [Proto.PolicyClass.ACCOUNT_SECURITY]: \"account_security\",\n [Proto.PolicyClass.DEPOSIT_CREATE]: \"deposit_create\",\n [Proto.PolicyClass.INTERNAL_TRANSFER]: \"internal_transfer\",\n [Proto.PolicyClass.WITHDRAW_SUBMIT]: \"withdraw_submit\",\n [Proto.PolicyClass.WITHDRAW_VALIDATE]: \"withdraw_validate\",\n [Proto.PolicyClass.GUARD_SIGN]: \"guard_sign\",\n [Proto.PolicyClass.SOCIAL_PROVIDER]: \"social_provider\",\n } satisfies ProtoToOutput<Proto.PolicyClass, RateLimitPolicyClass>,\n} as const;\n\nconst RateLimitScopeCodec = {\n protoToOutput: {\n [Proto.LimiterScope.SCOPE_UNSPECIFIED]: \"unspecified\",\n [Proto.LimiterScope.CLIENT_IP]: \"client_ip\",\n [Proto.LimiterScope.API_KEY]: \"api_key\",\n [Proto.LimiterScope.ACCOUNT]: \"account\",\n [Proto.LimiterScope.SUBACCOUNT]: \"subaccount\",\n [Proto.LimiterScope.CONNECTION]: \"connection\",\n [Proto.LimiterScope.SERVICE]: \"service\",\n [Proto.LimiterScope.REGION]: \"region\",\n [Proto.LimiterScope.SYMBOL]: \"symbol\",\n [Proto.LimiterScope.AUTH_SUBJECT]: \"auth_subject\",\n } satisfies ProtoToOutput<Proto.LimiterScope, RateLimitScope>,\n} as const;\n\nconst RateLimitRefillModelCodec = {\n protoToOutput: {\n [Proto.RefillModel.REFILL_UNSPECIFIED]: \"unspecified\",\n [Proto.RefillModel.CONTINUOUS]: \"continuous\",\n [Proto.RefillModel.FIXED_WINDOW]: \"fixed_window\",\n [Proto.RefillModel.ROLLING_WINDOW]: \"rolling_window\",\n } satisfies ProtoToOutput<Proto.RefillModel, RateLimitRefillModel>,\n} as const;\n\n/** Parses protobuf quota state into the stable SDK rate-limit detail shape. */\nexport const RateLimitDetailSchema = v.object({\n reason: v.pipe(\n v.enum(Proto.FailureReason),\n v.transform((reason) =>\n requiredEnumLabel(\n RateLimitFailureReasonCodec.protoToOutput,\n reason,\n \"RateLimitDetailSchema\",\n \"reason\",\n ),\n ),\n ),\n limit: OptionalBigIntStringSchema,\n remaining: OptionalBigIntStringSchema,\n retryAfterMs: OptionalBigIntStringSchema,\n policyVersion: OptionalBigIntStringSchema,\n operationId: v.string(),\n policyClass: v.pipe(\n v.enum(Proto.PolicyClass),\n v.transform((policyClass) =>\n requiredEnumLabel(\n RateLimitPolicyClassCodec.protoToOutput,\n policyClass,\n \"RateLimitDetailSchema\",\n \"policyClass\",\n ),\n ),\n ),\n scope: v.pipe(\n v.enum(Proto.LimiterScope),\n v.transform((scope) =>\n requiredEnumLabel(\n RateLimitScopeCodec.protoToOutput,\n scope,\n \"RateLimitDetailSchema\",\n \"scope\",\n ),\n ),\n ),\n refillModel: v.pipe(\n v.enum(Proto.RefillModel),\n v.transform((refillModel) =>\n requiredEnumLabel(\n RateLimitRefillModelCodec.protoToOutput,\n refillModel,\n \"RateLimitDetailSchema\",\n \"refillModel\",\n ),\n ),\n ),\n});\n\n/** Structured quota state exposed by order rejections and {@link RateLimitError}. */\nexport type RateLimitDetail = v.InferOutput<typeof RateLimitDetailSchema>;\n"],"mappings":";;;;;AA0DA,MAAM,8BAA8B,EAChC,eAAe;EAC+B,IAAA;EACJ,IAAA;EACO,IAAA;AACjD,EACJ;AAEA,MAAM,4BAA4B,EAC9B,eAAe;EAC4B,IAAA;EACN,IAAA;EACE,IAAA;EACC,IAAA;EACF,IAAA;EACC,IAAA;EACF,IAAA;EACK,IAAA;EACF,IAAA;EACG,IAAA;EACF,KAAA;EACE,KAAA;EACP,KAAA;EACK,KAAA;AACzC,EACJ;AAEA,MAAM,sBAAsB,EACxB,eAAe;EAC6B,IAAA;EACR,IAAA;EACF,IAAA;EACA,IAAA;EACG,IAAA;EACA,IAAA;EACH,IAAA;EACD,IAAA;EACA,IAAA;EACM,IAAA;AACvC,EACJ;AAEA,MAAM,4BAA4B,EAC9B,eAAe;EAC6B,IAAA;EACR,IAAA;EACE,IAAA;EACE,IAAA;AACxC,EACJ;;AAGA,MAAa,wBAAwB,EAAE,OAAO;CAC1C,QAAQ,EAAE,KACN,EAAE,KAAKA,aAAmB,GAC1B,EAAE,WAAW,WACT,kBACI,4BAA4B,eAC5B,QACA,yBACA,QACJ,CACJ,CACJ;CACA,OAAO;CACP,WAAW;CACX,cAAc;CACd,eAAe;CACf,aAAa,EAAE,OAAO;CACtB,aAAa,EAAE,KACX,EAAE,KAAKC,WAAiB,GACxB,EAAE,WAAW,gBACT,kBACI,0BAA0B,eAC1B,aACA,yBACA,aACJ,CACJ,CACJ;CACA,OAAO,EAAE,KACL,EAAE,KAAKC,YAAkB,GACzB,EAAE,WAAW,UACT,kBACI,oBAAoB,eACpB,OACA,yBACA,OACJ,CACJ,CACJ;CACA,aAAa,EAAE,KACX,EAAE,KAAKC,WAAiB,GACxB,EAAE,WAAW,gBACT,kBACI,0BAA0B,eAC1B,aACA,yBACA,aACJ,CACJ,CACJ;AACJ,CAAC"}
@@ -1,44 +1,44 @@
1
- import { validation_exports } from "./validation.js";
2
1
  import { formatId, idToBigInt } from "../utils/base58-id.js";
3
2
  import { parseOptionalUint64DecimalStrict, toBigIntOrZero, toBpsOrZero, toIntOrZero } from "../utils/numbers.js";
4
3
  import { tsNsToMs, tsObjToMs } from "../utils/time.js";
4
+ import * as v from "valibot";
5
5
  //#region src/shared/schemas.ts
6
6
  const UINT64_MAX = (1n << 64n) - 1n;
7
7
  const MS_TO_US = 1000n;
8
8
  const MS_TO_NS = 1000000n;
9
9
  const MAX_UINT64_TIMESTAMP_MS_US = Number(UINT64_MAX / MS_TO_US);
10
10
  const MAX_UINT64_TIMESTAMP_MS = Number(UINT64_MAX / MS_TO_NS);
11
- const TimestampSchema = validation_exports.object({
12
- seconds: validation_exports.bigint(),
13
- nanos: validation_exports.optional(validation_exports.number(), 0)
11
+ const TimestampSchema = v.object({
12
+ seconds: v.bigint(),
13
+ nanos: v.optional(v.number(), 0)
14
14
  });
15
- const TimestampMsSchema = validation_exports.pipe(TimestampSchema, validation_exports.transform((value) => tsObjToMs(value)));
16
- const OptionalTimestampMsSchema = validation_exports.pipe(validation_exports.optional(TimestampSchema), validation_exports.transform((value) => tsObjToMs(value)));
17
- const OptionalNumberDefaultNullSchema = validation_exports.optional(validation_exports.nullable(validation_exports.number()), null);
18
- const OptionalNumberToBigIntOrZeroSchema = validation_exports.pipe(OptionalNumberDefaultNullSchema, validation_exports.transform((value) => toBigIntOrZero(value)));
19
- const OptionalNumberToIntOrZeroSchema = validation_exports.pipe(OptionalNumberDefaultNullSchema, validation_exports.transform((value) => toIntOrZero(value)));
20
- const OptionalNumberToBpsOrZeroSchema = validation_exports.pipe(OptionalNumberDefaultNullSchema, validation_exports.transform((value) => toBpsOrZero(value)));
21
- validation_exports.pipe(validation_exports.bigint(), validation_exports.transform((value) => tsNsToMs(value)));
22
- const BigIntStringSchema = validation_exports.pipe(validation_exports.bigint(), validation_exports.transform((value) => value.toString()));
23
- const OptionalBigIntStringSchema = validation_exports.pipe(validation_exports.optional(validation_exports.bigint()), validation_exports.transform((value) => value === void 0 ? void 0 : value.toString()));
24
- validation_exports.optional(validation_exports.pipe(validation_exports.number(), validation_exports.integer(), validation_exports.minValue(0), validation_exports.maxValue(MAX_UINT64_TIMESTAMP_MS), validation_exports.transform((value) => BigInt(value) * MS_TO_NS)));
25
- const OptionalTimestampMsToUsInputSchema = validation_exports.optional(validation_exports.pipe(validation_exports.number(), validation_exports.integer(), validation_exports.minValue(0), validation_exports.maxValue(MAX_UINT64_TIMESTAMP_MS_US), validation_exports.transform((value) => BigInt(value) * MS_TO_US)));
26
- const OptionalTimestampSecondsInputSchema = validation_exports.optional(validation_exports.pipe(validation_exports.number(), validation_exports.integer(), validation_exports.minValue(0), validation_exports.maxValue(Number.MAX_SAFE_INTEGER), validation_exports.transform((value) => BigInt(value))));
27
- const PublicIdSchema = validation_exports.pipe(validation_exports.bigint(), validation_exports.transform((value) => formatId(value)));
28
- const OptionalPublicIdSchema = validation_exports.pipe(validation_exports.optional(validation_exports.bigint()), validation_exports.transform((value) => value ? formatId(value) : void 0));
29
- const TrimmedStringSchema = validation_exports.pipe(validation_exports.string(), validation_exports.trim());
30
- const OptionalTrimmedStringSchema = validation_exports.optional(TrimmedStringSchema);
15
+ const TimestampMsSchema = v.pipe(TimestampSchema, v.transform((value) => tsObjToMs(value)));
16
+ const OptionalTimestampMsSchema = v.pipe(v.optional(TimestampSchema), v.transform((value) => tsObjToMs(value)));
17
+ const OptionalNumberDefaultNullSchema = v.optional(v.nullable(v.number()), null);
18
+ const OptionalNumberToBigIntOrZeroSchema = v.pipe(OptionalNumberDefaultNullSchema, v.transform((value) => toBigIntOrZero(value)));
19
+ const OptionalNumberToIntOrZeroSchema = v.pipe(OptionalNumberDefaultNullSchema, v.transform((value) => toIntOrZero(value)));
20
+ const OptionalNumberToBpsOrZeroSchema = v.pipe(OptionalNumberDefaultNullSchema, v.transform((value) => toBpsOrZero(value)));
21
+ v.pipe(v.bigint(), v.transform((value) => tsNsToMs(value)));
22
+ const BigIntStringSchema = v.pipe(v.bigint(), v.transform((value) => value.toString()));
23
+ const OptionalBigIntStringSchema = v.pipe(v.optional(v.bigint()), v.transform((value) => value === void 0 ? void 0 : value.toString()));
24
+ v.optional(v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(MAX_UINT64_TIMESTAMP_MS), v.transform((value) => BigInt(value) * MS_TO_NS)));
25
+ const OptionalTimestampMsToUsInputSchema = v.optional(v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(MAX_UINT64_TIMESTAMP_MS_US), v.transform((value) => BigInt(value) * MS_TO_US)));
26
+ const OptionalTimestampSecondsInputSchema = v.optional(v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(Number.MAX_SAFE_INTEGER), v.transform((value) => BigInt(value))));
27
+ const PublicIdSchema = v.pipe(v.bigint(), v.transform((value) => formatId(value)));
28
+ const OptionalPublicIdSchema = v.pipe(v.optional(v.bigint()), v.transform((value) => value ? formatId(value) : void 0));
29
+ const TrimmedStringSchema = v.pipe(v.string(), v.trim());
30
+ const OptionalTrimmedStringSchema = v.optional(TrimmedStringSchema);
31
31
  /**
32
32
  * Creates a schema for required public id input.
33
33
  */
34
34
  function idInputSchema(fieldName) {
35
- return validation_exports.pipe(validation_exports.string(), validation_exports.trim(), validation_exports.minLength(1), validation_exports.transform((value) => idToBigInt(value, fieldName)));
35
+ return v.pipe(v.string(), v.trim(), v.minLength(1), v.transform((value) => idToBigInt(value, fieldName)));
36
36
  }
37
37
  /**
38
38
  * Creates a schema for optional public id input.
39
39
  */
40
40
  function optionalIdInputSchema(fieldName) {
41
- return validation_exports.pipe(OptionalTrimmedStringSchema, validation_exports.transform((value) => value ? idToBigInt(value, fieldName) : void 0));
41
+ return v.pipe(OptionalTrimmedStringSchema, v.transform((value) => value ? idToBigInt(value, fieldName) : void 0));
42
42
  }
43
43
  /**
44
44
  * Creates a schema for optional subaccount id input.
@@ -50,15 +50,15 @@ function optionalSubaccountIdInputSchema() {
50
50
  * Creates a schema for optional uint64 decimal filter input.
51
51
  */
52
52
  function optionalUint64DecimalFilterSchema(fieldName) {
53
- return validation_exports.pipe(OptionalTrimmedStringSchema, validation_exports.transform((value) => parseOptionalUint64DecimalStrict(value, fieldName)));
53
+ return v.pipe(OptionalTrimmedStringSchema, v.transform((value) => parseOptionalUint64DecimalStrict(value, fieldName)));
54
54
  }
55
55
  function bigintStringInputSchema(fieldName) {
56
- return validation_exports.pipe(TrimmedStringSchema, validation_exports.regex(/^\d+$/, `${fieldName} must be a decimal integer`), validation_exports.transform((value) => BigInt(value)));
56
+ return v.pipe(TrimmedStringSchema, v.regex(/^\d+$/, `${fieldName} must be a decimal integer`), v.transform((value) => BigInt(value)));
57
57
  }
58
58
  function positiveBigintStringInputSchema(fieldName) {
59
- return validation_exports.pipe(bigintStringInputSchema(fieldName), validation_exports.check((value) => value > 0n, `${fieldName} must be greater than 0`));
59
+ return v.pipe(bigintStringInputSchema(fieldName), v.check((value) => value > 0n, `${fieldName} must be greater than 0`));
60
60
  }
61
- const JsonObjectSchema = validation_exports.custom((input) => typeof input === "object" && input !== null && !Array.isArray(input));
61
+ const JsonObjectSchema = v.custom((input) => typeof input === "object" && input !== null && !Array.isArray(input));
62
62
  //#endregion
63
63
  export { BigIntStringSchema, JsonObjectSchema, OptionalBigIntStringSchema, OptionalNumberDefaultNullSchema, OptionalNumberToBigIntOrZeroSchema, OptionalNumberToBpsOrZeroSchema, OptionalNumberToIntOrZeroSchema, OptionalPublicIdSchema, OptionalTimestampMsSchema, OptionalTimestampMsToUsInputSchema, OptionalTimestampSecondsInputSchema, PublicIdSchema, TimestampMsSchema, TimestampSchema, bigintStringInputSchema, idInputSchema, optionalIdInputSchema, optionalSubaccountIdInputSchema, optionalUint64DecimalFilterSchema, positiveBigintStringInputSchema };
64
64
 
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","names":["v"],"sources":["../../src/shared/schemas.ts"],"sourcesContent":["import * as v from \"./validation.js\";\nimport { formatId, idToBigInt } from \"../utils/base58-id.js\";\nimport {\n parseOptionalUint64DecimalStrict,\n toBigIntOrZero,\n toBpsOrZero,\n toIntOrZero,\n} from \"../utils/numbers.js\";\nimport { tsNsToMs, tsObjToMs } from \"../utils/time.js\";\nimport type { JsonObject } from \"@bufbuild/protobuf\";\n\nconst UINT64_MAX = (1n << 64n) - 1n;\nconst MS_TO_US = 1_000n;\nconst MS_TO_NS = 1_000_000n;\nconst MAX_UINT64_TIMESTAMP_MS_US = Number(UINT64_MAX / MS_TO_US);\nconst MAX_UINT64_TIMESTAMP_MS = Number(UINT64_MAX / MS_TO_NS);\n\nexport const TimestampSchema = v.object({\n seconds: v.bigint(),\n nanos: v.optional(v.number(), 0),\n});\n\nexport const TimestampMsSchema = v.pipe(\n TimestampSchema,\n v.transform((value) => tsObjToMs(value)),\n);\n\nexport const OptionalTimestampMsSchema = v.pipe(\n v.optional(TimestampSchema),\n v.transform((value) => tsObjToMs(value)),\n);\n\nexport const OptionalNumberDefaultNullSchema = v.optional(v.nullable(v.number()), null);\n\nexport const OptionalNumberToBigIntOrZeroSchema = v.pipe(\n OptionalNumberDefaultNullSchema,\n v.transform((value) => toBigIntOrZero(value)),\n);\n\nexport const OptionalNumberToIntOrZeroSchema = v.pipe(\n OptionalNumberDefaultNullSchema,\n v.transform((value) => toIntOrZero(value)),\n);\n\nexport const OptionalNumberToBpsOrZeroSchema = v.pipe(\n OptionalNumberDefaultNullSchema,\n v.transform((value) => toBpsOrZero(value)),\n);\n\nexport const TimestampNsMsSchema = v.pipe(\n v.bigint(),\n v.transform((value) => tsNsToMs(value)),\n);\n\nexport const BigIntStringSchema = v.pipe(\n v.bigint(),\n v.transform((value) => value.toString()),\n);\n\nexport const OptionalBigIntStringSchema = v.pipe(\n v.optional(v.bigint()),\n v.transform((value) => (value === undefined ? undefined : value.toString())),\n);\n\nexport const OptionalTimestampMsToNsInputSchema = v.optional(\n v.pipe(\n v.number(),\n v.integer(),\n v.minValue(0),\n v.maxValue(MAX_UINT64_TIMESTAMP_MS),\n v.transform((value) => BigInt(value) * MS_TO_NS),\n ),\n);\n\nexport const OptionalTimestampMsToUsInputSchema = v.optional(\n v.pipe(\n v.number(),\n v.integer(),\n v.minValue(0),\n v.maxValue(MAX_UINT64_TIMESTAMP_MS_US),\n v.transform((value) => BigInt(value) * MS_TO_US),\n ),\n);\n\nexport const OptionalTimestampSecondsInputSchema = v.optional(\n v.pipe(\n v.number(),\n v.integer(),\n v.minValue(0),\n v.maxValue(Number.MAX_SAFE_INTEGER),\n v.transform((value) => BigInt(value)),\n ),\n);\n\nexport const PublicIdSchema = v.pipe(\n v.bigint(),\n v.transform((value) => formatId(value)),\n);\n\nexport const OptionalPublicIdSchema = v.pipe(\n v.optional(v.bigint()),\n v.transform((value) => (value ? formatId(value) : undefined)),\n);\n\nconst TrimmedStringSchema = v.pipe(v.string(), v.trim());\n\nconst OptionalTrimmedStringSchema = v.optional(TrimmedStringSchema);\n\n/**\n * Creates a schema for required public id input.\n */\nexport function idInputSchema(fieldName: string) {\n return v.pipe(\n v.string(),\n v.trim(),\n v.minLength(1),\n v.transform((value) => idToBigInt(value, fieldName)),\n );\n}\n\n/**\n * Creates a schema for optional public id input.\n */\nexport function optionalIdInputSchema(fieldName: string) {\n return v.pipe(\n OptionalTrimmedStringSchema,\n v.transform((value) => (value ? idToBigInt(value, fieldName) : undefined)),\n );\n}\n\n/**\n * Creates a schema for optional subaccount id input.\n */\nexport function optionalSubaccountIdInputSchema() {\n return optionalIdInputSchema(\"subaccountId\");\n}\n\n/**\n * Creates a schema for optional uint64 decimal filter input.\n */\nexport function optionalUint64DecimalFilterSchema(fieldName: string) {\n return v.pipe(\n OptionalTrimmedStringSchema,\n v.transform((value) => parseOptionalUint64DecimalStrict(value, fieldName)),\n );\n}\n\n/**\n * Creates a schema for positive bigint-like input.\n */\nexport function positiveBigintLikeSchema(message: string) {\n return v.pipe(\n v.union([\n v.bigint(),\n v.pipe(\n TrimmedStringSchema,\n v.regex(/^\\d+$/),\n v.transform((value) => BigInt(value)),\n ),\n ]),\n v.check((value) => value > 0n, message),\n );\n}\n\nexport function bigintStringInputSchema(fieldName: string) {\n return v.pipe(\n TrimmedStringSchema,\n v.regex(/^\\d+$/, `${fieldName} must be a decimal integer`),\n v.transform((value) => BigInt(value)),\n );\n}\n\nexport function positiveBigintStringInputSchema(fieldName: string) {\n return v.pipe(\n bigintStringInputSchema(fieldName),\n v.check((value) => value > 0n, `${fieldName} must be greater than 0`),\n );\n}\n\nexport const JsonObjectSchema = v.custom<JsonObject>(\n (input): input is JsonObject =>\n typeof input === \"object\" && input !== null && !Array.isArray(input),\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","names":[],"sources":["../../src/shared/schemas.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport { formatId, idToBigInt } from \"../utils/base58-id.js\";\nimport {\n parseOptionalUint64DecimalStrict,\n toBigIntOrZero,\n toBpsOrZero,\n toIntOrZero,\n} from \"../utils/numbers.js\";\nimport { tsNsToMs, tsObjToMs } from \"../utils/time.js\";\nimport type { JsonObject } from \"@bufbuild/protobuf\";\n\nconst UINT64_MAX = (1n << 64n) - 1n;\nconst MS_TO_US = 1_000n;\nconst MS_TO_NS = 1_000_000n;\nconst MAX_UINT64_TIMESTAMP_MS_US = Number(UINT64_MAX / MS_TO_US);\nconst MAX_UINT64_TIMESTAMP_MS = Number(UINT64_MAX / MS_TO_NS);\n\nexport const TimestampSchema = v.object({\n seconds: v.bigint(),\n nanos: v.optional(v.number(), 0),\n});\n\nexport const TimestampMsSchema = v.pipe(\n TimestampSchema,\n v.transform((value) => tsObjToMs(value)),\n);\n\nexport const OptionalTimestampMsSchema = v.pipe(\n v.optional(TimestampSchema),\n v.transform((value) => tsObjToMs(value)),\n);\n\nexport const OptionalNumberDefaultNullSchema = v.optional(v.nullable(v.number()), null);\n\nexport const OptionalNumberToBigIntOrZeroSchema = v.pipe(\n OptionalNumberDefaultNullSchema,\n v.transform((value) => toBigIntOrZero(value)),\n);\n\nexport const OptionalNumberToIntOrZeroSchema = v.pipe(\n OptionalNumberDefaultNullSchema,\n v.transform((value) => toIntOrZero(value)),\n);\n\nexport const OptionalNumberToBpsOrZeroSchema = v.pipe(\n OptionalNumberDefaultNullSchema,\n v.transform((value) => toBpsOrZero(value)),\n);\n\nexport const TimestampNsMsSchema = v.pipe(\n v.bigint(),\n v.transform((value) => tsNsToMs(value)),\n);\n\nexport const BigIntStringSchema = v.pipe(\n v.bigint(),\n v.transform((value) => value.toString()),\n);\n\nexport const OptionalBigIntStringSchema = v.pipe(\n v.optional(v.bigint()),\n v.transform((value) => (value === undefined ? undefined : value.toString())),\n);\n\nexport const OptionalTimestampMsToNsInputSchema = v.optional(\n v.pipe(\n v.number(),\n v.integer(),\n v.minValue(0),\n v.maxValue(MAX_UINT64_TIMESTAMP_MS),\n v.transform((value) => BigInt(value) * MS_TO_NS),\n ),\n);\n\nexport const OptionalTimestampMsToUsInputSchema = v.optional(\n v.pipe(\n v.number(),\n v.integer(),\n v.minValue(0),\n v.maxValue(MAX_UINT64_TIMESTAMP_MS_US),\n v.transform((value) => BigInt(value) * MS_TO_US),\n ),\n);\n\nexport const OptionalTimestampSecondsInputSchema = v.optional(\n v.pipe(\n v.number(),\n v.integer(),\n v.minValue(0),\n v.maxValue(Number.MAX_SAFE_INTEGER),\n v.transform((value) => BigInt(value)),\n ),\n);\n\nexport const PublicIdSchema = v.pipe(\n v.bigint(),\n v.transform((value) => formatId(value)),\n);\n\nexport const OptionalPublicIdSchema = v.pipe(\n v.optional(v.bigint()),\n v.transform((value) => (value ? formatId(value) : undefined)),\n);\n\nconst TrimmedStringSchema = v.pipe(v.string(), v.trim());\n\nconst OptionalTrimmedStringSchema = v.optional(TrimmedStringSchema);\n\n/**\n * Creates a schema for required public id input.\n */\nexport function idInputSchema(fieldName: string) {\n return v.pipe(\n v.string(),\n v.trim(),\n v.minLength(1),\n v.transform((value) => idToBigInt(value, fieldName)),\n );\n}\n\n/**\n * Creates a schema for optional public id input.\n */\nexport function optionalIdInputSchema(fieldName: string) {\n return v.pipe(\n OptionalTrimmedStringSchema,\n v.transform((value) => (value ? idToBigInt(value, fieldName) : undefined)),\n );\n}\n\n/**\n * Creates a schema for optional subaccount id input.\n */\nexport function optionalSubaccountIdInputSchema() {\n return optionalIdInputSchema(\"subaccountId\");\n}\n\n/**\n * Creates a schema for optional uint64 decimal filter input.\n */\nexport function optionalUint64DecimalFilterSchema(fieldName: string) {\n return v.pipe(\n OptionalTrimmedStringSchema,\n v.transform((value) => parseOptionalUint64DecimalStrict(value, fieldName)),\n );\n}\n\n/**\n * Creates a schema for positive bigint-like input.\n */\nexport function positiveBigintLikeSchema(message: string) {\n return v.pipe(\n v.union([\n v.bigint(),\n v.pipe(\n TrimmedStringSchema,\n v.regex(/^\\d+$/),\n v.transform((value) => BigInt(value)),\n ),\n ]),\n v.check((value) => value > 0n, message),\n );\n}\n\nexport function bigintStringInputSchema(fieldName: string) {\n return v.pipe(\n TrimmedStringSchema,\n v.regex(/^\\d+$/, `${fieldName} must be a decimal integer`),\n v.transform((value) => BigInt(value)),\n );\n}\n\nexport function positiveBigintStringInputSchema(fieldName: string) {\n return v.pipe(\n bigintStringInputSchema(fieldName),\n v.check((value) => value > 0n, `${fieldName} must be greater than 0`),\n );\n}\n\nexport const JsonObjectSchema = v.custom<JsonObject>(\n (input): input is JsonObject =>\n typeof input === \"object\" && input !== null && !Array.isArray(input),\n);\n"],"mappings":"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"}
@@ -1,11 +1,6 @@
1
- import { __exportAll, __reExport } from "../_virtual/_rolldown/runtime.js";
2
1
  import { ValidationError } from "./errors.js";
3
2
  import * as v from "valibot";
4
- export * from "valibot";
5
3
  //#region src/shared/validation.ts
6
- var validation_exports = /* @__PURE__ */ __exportAll({ parse: () => parse });
7
- import * as import_valibot from "valibot";
8
- __reExport(validation_exports, import_valibot);
9
4
  /**
10
5
  * Parses a value with Valibot and translates schema failures into the SDK's
11
6
  * public error hierarchy.
@@ -19,6 +14,6 @@ function parse(schema, input, config) {
19
14
  }
20
15
  }
21
16
  //#endregion
22
- export { parse, validation_exports };
17
+ export { parse };
23
18
 
24
19
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","names":[],"sources":["../../src/shared/validation.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport { ValidationError } from \"./errors.js\";\n\nexport * from \"valibot\";\n\n/**\n * Parses a value with Valibot and translates schema failures into the SDK's\n * public error hierarchy.\n */\nexport function parse<const TSchema extends v.BaseSchema<unknown, unknown, v.BaseIssue<unknown>>>(\n schema: TSchema,\n input: unknown,\n config?: v.Config<v.InferIssue<TSchema>>,\n): v.InferOutput<TSchema> {\n try {\n return v.parse(schema, input, config);\n } catch (error) {\n if (v.isValiError(error)) {\n throw new ValidationError(error.message, { cause: error });\n }\n throw error;\n }\n}\n"],"mappings":";;;;;;;;;;;;AASA,SAAgB,MACZ,QACA,OACA,QACsB;CACtB,IAAI;EACA,OAAO,EAAE,MAAM,QAAQ,OAAO,MAAM;CACxC,SAAS,OAAO;EACZ,IAAI,EAAE,YAAY,KAAK,GACnB,MAAM,IAAI,gBAAgB,MAAM,SAAS,EAAE,OAAO,MAAM,CAAC;EAE7D,MAAM;CACV;AACJ"}
1
+ {"version":3,"file":"validation.js","names":[],"sources":["../../src/shared/validation.ts"],"sourcesContent":["import * as v from \"valibot\";\nimport { ValidationError } from \"./errors.js\";\n\n/**\n * Parses a value with Valibot and translates schema failures into the SDK's\n * public error hierarchy.\n */\nexport function parse<const TSchema extends v.BaseSchema<unknown, unknown, v.BaseIssue<unknown>>>(\n schema: TSchema,\n input: unknown,\n config?: v.Config<v.InferIssue<TSchema>>,\n): v.InferOutput<TSchema> {\n try {\n return v.parse(schema, input, config);\n } catch (error) {\n if (v.isValiError(error)) {\n throw new ValidationError(error.message, { cause: error });\n }\n throw error;\n }\n}\n"],"mappings":";;;;;;;AAOA,SAAgB,MACZ,QACA,OACA,QACsB;CACtB,IAAI;EACA,OAAO,EAAE,MAAM,QAAQ,OAAO,MAAM;CACxC,SAAS,OAAO;EACZ,IAAI,EAAE,YAAY,KAAK,GACnB,MAAM,IAAI,gBAAgB,MAAM,SAAS,EAAE,OAAO,MAAM,CAAC;EAE7D,MAAM;CACV;AACJ"}
@@ -1,9 +1,9 @@
1
1
  import { StaleQuoteError } from "../shared/errors.js";
2
- import { validation_exports } from "../shared/validation.js";
3
2
  import { ErrorDetailSchema } from "../gen/orders/v1/orders_pb.js";
4
3
  import { toPolyesterError } from "../shared/connect-error-mapping.js";
5
4
  import { OrderErrorDetailSchema } from "../services/orders/order-errors.schemas.js";
6
5
  import { ConnectError } from "@connectrpc/connect";
6
+ import * as v from "valibot";
7
7
  //#region src/utils/connect-order-errors.ts
8
8
  /**
9
9
  * Returns the first structured Orders API rejection detail in an error cause chain.
@@ -16,7 +16,7 @@ function getOrderErrorDetail(error) {
16
16
  seen.add(current);
17
17
  const details = ConnectError.from(current).findDetails(ErrorDetailSchema);
18
18
  for (const detail of details) {
19
- const parsed = validation_exports.safeParse(OrderErrorDetailSchema, detail);
19
+ const parsed = v.safeParse(OrderErrorDetailSchema, detail);
20
20
  if (parsed.success) return parsed.output;
21
21
  }
22
22
  current = current instanceof Error ? current.cause : void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"connect-order-errors.js","names":["v"],"sources":["../../src/utils/connect-order-errors.ts"],"sourcesContent":["import { ConnectError } from \"@connectrpc/connect\";\nimport * as v from \"../shared/validation.js\";\nimport { ErrorDetailSchema } from \"../gen/orders/v1/orders_pb.js\";\nimport {\n OrderErrorDetailSchema,\n type OrderErrorDetail,\n} from \"../services/orders/order-errors.schemas.js\";\nimport { toPolyesterError } from \"../shared/connect-error-mapping.js\";\nimport { StaleQuoteError } from \"../shared/errors.js\";\n\n/**\n * Returns the first structured Orders API rejection detail in an error cause chain.\n * Invalid or unrelated details are ignored rather than exposing transport prose.\n */\nexport function getOrderErrorDetail(error: unknown): OrderErrorDetail | undefined {\n const seen = new Set<unknown>();\n let current: unknown = error;\n\n for (let depth = 0; depth < 5 && current != null && !seen.has(current); depth += 1) {\n seen.add(current);\n const details = ConnectError.from(current).findDetails(ErrorDetailSchema);\n for (const detail of details) {\n const parsed = v.safeParse(OrderErrorDetailSchema, detail);\n if (parsed.success) return parsed.output;\n }\n\n current = current instanceof Error ? current.cause : undefined;\n }\n\n return undefined;\n}\n\n/**\n * True when an order mutation was rejected because its client reference quote\n * exceeded the backend's configured drift limit.\n */\nexport function isStaleQuoteError(error: unknown): boolean {\n let current = error;\n\n for (let depth = 0; depth < 5; depth += 1) {\n if (toPolyesterError(current) instanceof StaleQuoteError) return true;\n if (!(current instanceof Error) || current.cause === undefined) return false;\n current = current.cause;\n }\n\n return false;\n}\n"],"mappings":";;;;;;;;;;;AAcA,SAAgB,oBAAoB,OAA8C;CAC9E,MAAM,uBAAO,IAAI,IAAa;CAC9B,IAAI,UAAmB;CAEvB,KAAK,IAAI,QAAQ,GAAG,QAAQ,KAAK,WAAW,QAAQ,CAAC,KAAK,IAAI,OAAO,GAAG,SAAS,GAAG;EAChF,KAAK,IAAI,OAAO;EAChB,MAAM,UAAU,aAAa,KAAK,OAAO,CAAC,CAAC,YAAY,iBAAiB;EACxE,KAAK,MAAM,UAAU,SAAS;GAC1B,MAAM,SAASA,mBAAE,UAAU,wBAAwB,MAAM;GACzD,IAAI,OAAO,SAAS,OAAO,OAAO;EACtC;EAEA,UAAU,mBAAmB,QAAQ,QAAQ,QAAQ,KAAA;CACzD;AAGJ;;;;;AAMA,SAAgB,kBAAkB,OAAyB;CACvD,IAAI,UAAU;CAEd,KAAK,IAAI,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG;EACvC,IAAI,iBAAiB,OAAO,aAAa,iBAAiB,OAAO;EACjE,IAAI,EAAE,mBAAmB,UAAU,QAAQ,UAAU,KAAA,GAAW,OAAO;EACvE,UAAU,QAAQ;CACtB;CAEA,OAAO;AACX"}
1
+ {"version":3,"file":"connect-order-errors.js","names":[],"sources":["../../src/utils/connect-order-errors.ts"],"sourcesContent":["import { ConnectError } from \"@connectrpc/connect\";\nimport * as v from \"valibot\";\nimport { ErrorDetailSchema } from \"../gen/orders/v1/orders_pb.js\";\nimport {\n OrderErrorDetailSchema,\n type OrderErrorDetail,\n} from \"../services/orders/order-errors.schemas.js\";\nimport { toPolyesterError } from \"../shared/connect-error-mapping.js\";\nimport { StaleQuoteError } from \"../shared/errors.js\";\n\n/**\n * Returns the first structured Orders API rejection detail in an error cause chain.\n * Invalid or unrelated details are ignored rather than exposing transport prose.\n */\nexport function getOrderErrorDetail(error: unknown): OrderErrorDetail | undefined {\n const seen = new Set<unknown>();\n let current: unknown = error;\n\n for (let depth = 0; depth < 5 && current != null && !seen.has(current); depth += 1) {\n seen.add(current);\n const details = ConnectError.from(current).findDetails(ErrorDetailSchema);\n for (const detail of details) {\n const parsed = v.safeParse(OrderErrorDetailSchema, detail);\n if (parsed.success) return parsed.output;\n }\n\n current = current instanceof Error ? current.cause : undefined;\n }\n\n return undefined;\n}\n\n/**\n * True when an order mutation was rejected because its client reference quote\n * exceeded the backend's configured drift limit.\n */\nexport function isStaleQuoteError(error: unknown): boolean {\n let current = error;\n\n for (let depth = 0; depth < 5; depth += 1) {\n if (toPolyesterError(current) instanceof StaleQuoteError) return true;\n if (!(current instanceof Error) || current.cause === undefined) return false;\n current = current.cause;\n }\n\n return false;\n}\n"],"mappings":";;;;;;;;;;;AAcA,SAAgB,oBAAoB,OAA8C;CAC9E,MAAM,uBAAO,IAAI,IAAa;CAC9B,IAAI,UAAmB;CAEvB,KAAK,IAAI,QAAQ,GAAG,QAAQ,KAAK,WAAW,QAAQ,CAAC,KAAK,IAAI,OAAO,GAAG,SAAS,GAAG;EAChF,KAAK,IAAI,OAAO;EAChB,MAAM,UAAU,aAAa,KAAK,OAAO,CAAC,CAAC,YAAY,iBAAiB;EACxE,KAAK,MAAM,UAAU,SAAS;GAC1B,MAAM,SAAS,EAAE,UAAU,wBAAwB,MAAM;GACzD,IAAI,OAAO,SAAS,OAAO,OAAO;EACtC;EAEA,UAAU,mBAAmB,QAAQ,QAAQ,QAAQ,KAAA;CACzD;AAGJ;;;;;AAMA,SAAgB,kBAAkB,OAAyB;CACvD,IAAI,UAAU;CAEd,KAAK,IAAI,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG;EACvC,IAAI,iBAAiB,OAAO,aAAa,iBAAiB,OAAO;EACjE,IAAI,EAAE,mBAAmB,UAAU,QAAQ,UAAU,KAAA,GAAW,OAAO;EACvE,UAAU,QAAQ;CACtB;CAEA,OAAO;AACX"}
@@ -1 +1 @@
1
- {"version":3,"file":"wired-services.d.ts","names":[],"sources":["../src/wired-services.ts"],"mappings":";;;;;;;;;;;cAoCa,oCAAoC"}
1
+ {"version":3,"file":"wired-services.d.ts","names":[],"sources":["../src/wired-services.ts"],"mappings":";;;;;;;;;;;cAuCa,oCAAoC"}
@@ -23,6 +23,9 @@ import { GuardSignerService } from "./gen/chain/guard/v1/guard_signer_pb.js";
23
23
  import { SocialVerificationService } from "./gen/auth/v1/social_verification_pb.js";
24
24
  import { WhiteboardService } from "./gen/collab/v1/whiteboard_pb.js";
25
25
  import { ZipperService } from "./gen/chain/zipper/v1/zipper_pb.js";
26
+ import { VIPService } from "./gen/vip/v1/vip_pb.js";
27
+ import { FeeService } from "./gen/fees/v1/fees_pb.js";
28
+ import { RateLimitService } from "./gen/ratelimit/v1/ratelimit_pb.js";
26
29
  //#region src/wired-services.ts
27
30
  /**
28
31
  * Every proto service descriptor the SDK's service layer wires a client for.
@@ -39,6 +42,7 @@ const WIRED_SERVICE_DESCRIPTORS = [
39
42
  AuthService,
40
43
  ChainAnalyticsService,
41
44
  DepositAddressService,
45
+ FeeService,
42
46
  GuardSignerService,
43
47
  HeatmapService,
44
48
  InternalTransferService,
@@ -52,11 +56,13 @@ const WIRED_SERVICE_DESCRIPTORS = [
52
56
  OrdersService,
53
57
  PolicyService,
54
58
  ProfileService,
59
+ RateLimitService,
55
60
  ResolveService,
56
61
  SocialVerificationService,
57
62
  SubaccountService,
58
63
  SubaccountViewService,
59
64
  TriggersService,
65
+ VIPService,
60
66
  WhiteboardService,
61
67
  WithdrawService,
62
68
  ZipperService
@@ -1 +1 @@
1
- {"version":3,"file":"wired-services.js","names":[],"sources":["../src/wired-services.ts"],"sourcesContent":["import type { DescService } from \"@bufbuild/protobuf\";\nimport { AddressBookService } from \"./gen/auth/v1/address_book_pb.js\";\nimport { ApiKeyService } from \"./gen/auth/v1/api_keys_pb.js\";\nimport { AuthService } from \"./gen/auth/v1/auth_pb.js\";\nimport { MFAService } from \"./gen/auth/v1/mfa_pb.js\";\nimport { PolicyService } from \"./gen/auth/v1/policies_pb.js\";\nimport { ProfileService } from \"./gen/auth/v1/profile_pb.js\";\nimport { ResolveService } from \"./gen/auth/v1/resolve_pb.js\";\nimport { SocialVerificationService } from \"./gen/auth/v1/social_verification_pb.js\";\nimport { SubaccountService, SubaccountViewService } from \"./gen/auth/v1/subaccounts_pb.js\";\nimport { ChainAnalyticsService } from \"./gen/chain/analytics/v1/analytics_read_pb.js\";\nimport { DepositAddressService } from \"./gen/chain/deposit/v1/deposit_pb.js\";\nimport { GuardSignerService } from \"./gen/chain/guard/v1/guard_signer_pb.js\";\nimport { LifecycleReadService } from \"./gen/chain/lifecycle/v1/lifecycle_read_pb.js\";\nimport { WithdrawService } from \"./gen/chain/withdraw/v1/withdraw_pb.js\";\nimport { ZipperService } from \"./gen/chain/zipper/v1/zipper_pb.js\";\nimport { WhiteboardService } from \"./gen/collab/v1/whiteboard_pb.js\";\nimport { LedgerReadService } from \"./gen/ledger/read/v1/ledger_read_pb.js\";\nimport { HeatmapService } from \"./gen/marketdata/v1/heatmap_pb.js\";\nimport { MarketDataService } from \"./gen/marketdata/v1/marketdata_pb.js\";\nimport { MarketOverviewService } from \"./gen/marketoverview/v1/marketoverview_pb.js\";\nimport { OrderbookService } from \"./gen/orderbook/v1/orderbook_pb.js\";\nimport { OrdersService } from \"./gen/orders/v1/orders_pb.js\";\nimport { OrdersReadService } from \"./gen/orders/v1/orders_read_pb.js\";\nimport { InternalTransferService } from \"./gen/transfer/v1/internal_transfer_pb.js\";\nimport { TriggersService } from \"./gen/triggers/v1/triggers_pb.js\";\n\n/**\n * Every proto service descriptor the SDK's service layer wires a client for.\n * This is the authoritative surface for transport-level mocks: an in-memory\n * transport that routes all of these can serve the whole SDK.\n *\n * Kept in sync mechanically — `wired-services.test.ts` scans every\n * `createClient(...)` call site under `src/services` and `src/realtime` and\n * fails when this list drifts from the code.\n */\nexport const WIRED_SERVICE_DESCRIPTORS: readonly DescService[] = [\n AddressBookService,\n ApiKeyService,\n AuthService,\n ChainAnalyticsService,\n DepositAddressService,\n GuardSignerService,\n HeatmapService,\n InternalTransferService,\n LedgerReadService,\n LifecycleReadService,\n MarketDataService,\n MarketOverviewService,\n MFAService,\n OrderbookService,\n OrdersReadService,\n OrdersService,\n PolicyService,\n ProfileService,\n ResolveService,\n SocialVerificationService,\n SubaccountService,\n SubaccountViewService,\n TriggersService,\n WhiteboardService,\n WithdrawService,\n ZipperService,\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAa,4BAAoD;CAC7D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACJ"}
1
+ {"version":3,"file":"wired-services.js","names":[],"sources":["../src/wired-services.ts"],"sourcesContent":["import type { DescService } from \"@bufbuild/protobuf\";\nimport { AddressBookService } from \"./gen/auth/v1/address_book_pb.js\";\nimport { ApiKeyService } from \"./gen/auth/v1/api_keys_pb.js\";\nimport { AuthService } from \"./gen/auth/v1/auth_pb.js\";\nimport { MFAService } from \"./gen/auth/v1/mfa_pb.js\";\nimport { PolicyService } from \"./gen/auth/v1/policies_pb.js\";\nimport { ProfileService } from \"./gen/auth/v1/profile_pb.js\";\nimport { ResolveService } from \"./gen/auth/v1/resolve_pb.js\";\nimport { SocialVerificationService } from \"./gen/auth/v1/social_verification_pb.js\";\nimport { SubaccountService, SubaccountViewService } from \"./gen/auth/v1/subaccounts_pb.js\";\nimport { ChainAnalyticsService } from \"./gen/chain/analytics/v1/analytics_read_pb.js\";\nimport { DepositAddressService } from \"./gen/chain/deposit/v1/deposit_pb.js\";\nimport { GuardSignerService } from \"./gen/chain/guard/v1/guard_signer_pb.js\";\nimport { LifecycleReadService } from \"./gen/chain/lifecycle/v1/lifecycle_read_pb.js\";\nimport { WithdrawService } from \"./gen/chain/withdraw/v1/withdraw_pb.js\";\nimport { ZipperService } from \"./gen/chain/zipper/v1/zipper_pb.js\";\nimport { WhiteboardService } from \"./gen/collab/v1/whiteboard_pb.js\";\nimport { FeeService } from \"./gen/fees/v1/fees_pb.js\";\nimport { LedgerReadService } from \"./gen/ledger/read/v1/ledger_read_pb.js\";\nimport { HeatmapService } from \"./gen/marketdata/v1/heatmap_pb.js\";\nimport { MarketDataService } from \"./gen/marketdata/v1/marketdata_pb.js\";\nimport { MarketOverviewService } from \"./gen/marketoverview/v1/marketoverview_pb.js\";\nimport { OrderbookService } from \"./gen/orderbook/v1/orderbook_pb.js\";\nimport { OrdersService } from \"./gen/orders/v1/orders_pb.js\";\nimport { OrdersReadService } from \"./gen/orders/v1/orders_read_pb.js\";\nimport { RateLimitService } from \"./gen/ratelimit/v1/ratelimit_pb.js\";\nimport { InternalTransferService } from \"./gen/transfer/v1/internal_transfer_pb.js\";\nimport { TriggersService } from \"./gen/triggers/v1/triggers_pb.js\";\nimport { VIPService } from \"./gen/vip/v1/vip_pb.js\";\n\n/**\n * Every proto service descriptor the SDK's service layer wires a client for.\n * This is the authoritative surface for transport-level mocks: an in-memory\n * transport that routes all of these can serve the whole SDK.\n *\n * Kept in sync mechanically — `wired-services.test.ts` scans every\n * `createClient(...)` call site under `src/services` and `src/realtime` and\n * fails when this list drifts from the code.\n */\nexport const WIRED_SERVICE_DESCRIPTORS: readonly DescService[] = [\n AddressBookService,\n ApiKeyService,\n AuthService,\n ChainAnalyticsService,\n DepositAddressService,\n FeeService,\n GuardSignerService,\n HeatmapService,\n InternalTransferService,\n LedgerReadService,\n LifecycleReadService,\n MarketDataService,\n MarketOverviewService,\n MFAService,\n OrderbookService,\n OrdersReadService,\n OrdersService,\n PolicyService,\n ProfileService,\n RateLimitService,\n ResolveService,\n SocialVerificationService,\n SubaccountService,\n SubaccountViewService,\n TriggersService,\n VIPService,\n WhiteboardService,\n WithdrawService,\n ZipperService,\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,MAAa,4BAAoD;CAC7D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polyester/sdk",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "private": false,
5
5
  "description": "TypeScript SDK providing access to APIs on Polyester Exchange.",
6
6
  "homepage": "https://github.com/Fabric-Labs/polyester-sdk-typescript#readme",
@@ -89,8 +89,8 @@
89
89
  "changeset": "changeset",
90
90
  "version-packages": "changeset version && bun install --lockfile-only",
91
91
  "release": "changeset publish",
92
- "verify:package": "bun scripts/verify-package-exports.ts",
93
- "ci": "bun run lint && bun run format:check && bun run check && bun run test && bun run build && bun run verify:package"
92
+ "verify:package": "bun run build && bun scripts/verify-package-exports.ts",
93
+ "ci": "bun run lint && bun run format:check && bun run check && bun run test && bun run verify:package"
94
94
  },
95
95
  "dependencies": {
96
96
  "@bufbuild/protobuf": "2.13.0",
@@ -1,14 +0,0 @@
1
- import * as v from "valibot";
2
- export * from "valibot";
3
- declare namespace validation_d_exports {
4
- export { parse };
5
- }
6
- import * as import_valibot from "valibot";
7
- /**
8
- * Parses a value with Valibot and translates schema failures into the SDK's
9
- * public error hierarchy.
10
- */
11
- declare function parse<const TSchema extends v.BaseSchema<unknown, unknown, v.BaseIssue<unknown>>>(schema: TSchema, input: unknown, config?: v.Config<v.InferIssue<TSchema>>): v.InferOutput<TSchema>;
12
- //#endregion
13
- export { parse, validation_d_exports };
14
- //# sourceMappingURL=validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.d.ts","names":[],"sources":["../../src/shared/validation.ts"],"mappings":";;;;;;;;;;iBASgB,YAAY,gBAAgB,EAAE,6BAA6B,EAAE,qBACzE,QAAQ,SACR,gBACA,SAAS,EAAE,OAAO,EAAE,WAAW,YAChC,EAAE,YAAY"}