@florent-uzio/custody 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +280 -0
  3. package/dist/constants/defaults.d.ts +3 -0
  4. package/dist/constants/defaults.d.ts.map +1 -0
  5. package/dist/constants/defaults.js +3 -0
  6. package/dist/constants/defaults.js.map +1 -0
  7. package/dist/constants/index.d.ts +3 -0
  8. package/dist/constants/index.d.ts.map +1 -0
  9. package/dist/constants/index.js +3 -0
  10. package/dist/constants/index.js.map +1 -0
  11. package/dist/constants/urls.d.ts +86 -0
  12. package/dist/constants/urls.d.ts.map +1 -0
  13. package/dist/constants/urls.js +109 -0
  14. package/dist/constants/urls.js.map +1 -0
  15. package/dist/helpers/async/async.d.ts +6 -0
  16. package/dist/helpers/async/async.d.ts.map +1 -0
  17. package/dist/helpers/async/async.js +6 -0
  18. package/dist/helpers/async/async.js.map +1 -0
  19. package/dist/helpers/async/index.d.ts +2 -0
  20. package/dist/helpers/async/index.d.ts.map +1 -0
  21. package/dist/helpers/async/index.js +2 -0
  22. package/dist/helpers/async/index.js.map +1 -0
  23. package/dist/helpers/index.d.ts +4 -0
  24. package/dist/helpers/index.d.ts.map +1 -0
  25. package/dist/helpers/index.js +4 -0
  26. package/dist/helpers/index.js.map +1 -0
  27. package/dist/helpers/typeof-fns/index.d.ts +2 -0
  28. package/dist/helpers/typeof-fns/index.d.ts.map +1 -0
  29. package/dist/helpers/typeof-fns/index.js +2 -0
  30. package/dist/helpers/typeof-fns/index.js.map +1 -0
  31. package/dist/helpers/typeof-fns/typeof-fns.d.ts +18 -0
  32. package/dist/helpers/typeof-fns/typeof-fns.d.ts.map +1 -0
  33. package/dist/helpers/typeof-fns/typeof-fns.js +48 -0
  34. package/dist/helpers/typeof-fns/typeof-fns.js.map +1 -0
  35. package/dist/helpers/url/index.d.ts +2 -0
  36. package/dist/helpers/url/index.d.ts.map +1 -0
  37. package/dist/helpers/url/index.js +2 -0
  38. package/dist/helpers/url/index.js.map +1 -0
  39. package/dist/helpers/url/url.d.ts +39 -0
  40. package/dist/helpers/url/url.d.ts.map +1 -0
  41. package/dist/helpers/url/url.js +54 -0
  42. package/dist/helpers/url/url.js.map +1 -0
  43. package/dist/index.d.ts +27 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +9 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/main.d.ts +2 -0
  48. package/dist/main.d.ts.map +1 -0
  49. package/dist/main.helpers.d.ts +2 -0
  50. package/dist/main.helpers.d.ts.map +1 -0
  51. package/dist/main.helpers.js +99 -0
  52. package/dist/main.helpers.js.map +1 -0
  53. package/dist/main.js +41 -0
  54. package/dist/main.js.map +1 -0
  55. package/dist/models/custody-error.d.ts +22 -0
  56. package/dist/models/custody-error.d.ts.map +1 -0
  57. package/dist/models/custody-error.js +47 -0
  58. package/dist/models/custody-error.js.map +1 -0
  59. package/dist/models/custody-types.d.ts +14664 -0
  60. package/dist/models/custody-types.d.ts.map +1 -0
  61. package/dist/models/custody-types.js +6 -0
  62. package/dist/models/custody-types.js.map +1 -0
  63. package/dist/models/index.d.ts +4 -0
  64. package/dist/models/index.d.ts.map +1 -0
  65. package/dist/models/index.js +3 -0
  66. package/dist/models/index.js.map +1 -0
  67. package/dist/models/ledger-ids.d.ts +19 -0
  68. package/dist/models/ledger-ids.d.ts.map +1 -0
  69. package/dist/models/ledger-ids.js +2 -0
  70. package/dist/models/ledger-ids.js.map +1 -0
  71. package/dist/namespaces/accounts.d.ts +32 -0
  72. package/dist/namespaces/accounts.d.ts.map +1 -0
  73. package/dist/namespaces/accounts.js +66 -0
  74. package/dist/namespaces/accounts.js.map +1 -0
  75. package/dist/namespaces/channels.d.ts +14 -0
  76. package/dist/namespaces/channels.d.ts.map +1 -0
  77. package/dist/namespaces/channels.js +15 -0
  78. package/dist/namespaces/channels.js.map +1 -0
  79. package/dist/namespaces/domains.d.ts +7 -0
  80. package/dist/namespaces/domains.d.ts.map +1 -0
  81. package/dist/namespaces/domains.js +8 -0
  82. package/dist/namespaces/domains.js.map +1 -0
  83. package/dist/namespaces/endpoints.d.ts +7 -0
  84. package/dist/namespaces/endpoints.d.ts.map +1 -0
  85. package/dist/namespaces/endpoints.js +8 -0
  86. package/dist/namespaces/endpoints.js.map +1 -0
  87. package/dist/namespaces/events.d.ts +6 -0
  88. package/dist/namespaces/events.d.ts.map +1 -0
  89. package/dist/namespaces/events.js +7 -0
  90. package/dist/namespaces/events.js.map +1 -0
  91. package/dist/namespaces/genesis.d.ts +6 -0
  92. package/dist/namespaces/genesis.d.ts.map +1 -0
  93. package/dist/namespaces/genesis.js +7 -0
  94. package/dist/namespaces/genesis.js.map +1 -0
  95. package/dist/namespaces/index.d.ts +16 -0
  96. package/dist/namespaces/index.d.ts.map +1 -0
  97. package/dist/namespaces/index.js +16 -0
  98. package/dist/namespaces/index.js.map +1 -0
  99. package/dist/namespaces/intents.d.ts +13 -0
  100. package/dist/namespaces/intents.d.ts.map +1 -0
  101. package/dist/namespaces/intents.js +70 -0
  102. package/dist/namespaces/intents.js.map +1 -0
  103. package/dist/namespaces/ledgers.d.ts +11 -0
  104. package/dist/namespaces/ledgers.d.ts.map +1 -0
  105. package/dist/namespaces/ledgers.js +12 -0
  106. package/dist/namespaces/ledgers.js.map +1 -0
  107. package/dist/namespaces/policies.d.ts +7 -0
  108. package/dist/namespaces/policies.d.ts.map +1 -0
  109. package/dist/namespaces/policies.js +8 -0
  110. package/dist/namespaces/policies.js.map +1 -0
  111. package/dist/namespaces/requests.d.ts +8 -0
  112. package/dist/namespaces/requests.d.ts.map +1 -0
  113. package/dist/namespaces/requests.js +9 -0
  114. package/dist/namespaces/requests.js.map +1 -0
  115. package/dist/namespaces/tickers.d.ts +7 -0
  116. package/dist/namespaces/tickers.d.ts.map +1 -0
  117. package/dist/namespaces/tickers.js +8 -0
  118. package/dist/namespaces/tickers.js.map +1 -0
  119. package/dist/namespaces/transactions.d.ts +12 -0
  120. package/dist/namespaces/transactions.d.ts.map +1 -0
  121. package/dist/namespaces/transactions.js +13 -0
  122. package/dist/namespaces/transactions.js.map +1 -0
  123. package/dist/namespaces/user-invitations.d.ts +13 -0
  124. package/dist/namespaces/user-invitations.d.ts.map +1 -0
  125. package/dist/namespaces/user-invitations.js +14 -0
  126. package/dist/namespaces/user-invitations.js.map +1 -0
  127. package/dist/namespaces/users.d.ts +9 -0
  128. package/dist/namespaces/users.d.ts.map +1 -0
  129. package/dist/namespaces/users.js +10 -0
  130. package/dist/namespaces/users.js.map +1 -0
  131. package/dist/namespaces/vaults.d.ts +9 -0
  132. package/dist/namespaces/vaults.d.ts.map +1 -0
  133. package/dist/namespaces/vaults.js +12 -0
  134. package/dist/namespaces/vaults.js.map +1 -0
  135. package/dist/ripple-custody.d.ts +95 -0
  136. package/dist/ripple-custody.d.ts.map +1 -0
  137. package/dist/ripple-custody.js +138 -0
  138. package/dist/ripple-custody.js.map +1 -0
  139. package/dist/ripple-custody.types.d.ts +29 -0
  140. package/dist/ripple-custody.types.d.ts.map +1 -0
  141. package/dist/ripple-custody.types.js +2 -0
  142. package/dist/ripple-custody.types.js.map +1 -0
  143. package/dist/services/accounts/accounts.types.d.ts +48 -0
  144. package/dist/services/accounts/accounts.types.d.ts.map +1 -0
  145. package/dist/services/accounts/accounts.types.js +2 -0
  146. package/dist/services/accounts/accounts.types.js.map +1 -0
  147. package/dist/services/accounts/index.d.ts +2 -0
  148. package/dist/services/accounts/index.d.ts.map +1 -0
  149. package/dist/services/accounts/index.js +2 -0
  150. package/dist/services/accounts/index.js.map +1 -0
  151. package/dist/services/apis/api.service.d.ts +64 -0
  152. package/dist/services/apis/api.service.d.ts.map +1 -0
  153. package/dist/services/apis/api.service.js +235 -0
  154. package/dist/services/apis/api.service.js.map +1 -0
  155. package/dist/services/apis/api.service.types.d.ts +16 -0
  156. package/dist/services/apis/api.service.types.d.ts.map +1 -0
  157. package/dist/services/apis/api.service.types.js +3 -0
  158. package/dist/services/apis/api.service.types.js.map +1 -0
  159. package/dist/services/apis/index.d.ts +3 -0
  160. package/dist/services/apis/index.d.ts.map +1 -0
  161. package/dist/services/apis/index.js +3 -0
  162. package/dist/services/apis/index.js.map +1 -0
  163. package/dist/services/auth/auth.service.d.ts +56 -0
  164. package/dist/services/auth/auth.service.d.ts.map +1 -0
  165. package/dist/services/auth/auth.service.js +120 -0
  166. package/dist/services/auth/auth.service.js.map +1 -0
  167. package/dist/services/auth/auth.service.types.d.ts +9 -0
  168. package/dist/services/auth/auth.service.types.d.ts.map +1 -0
  169. package/dist/services/auth/auth.service.types.js +2 -0
  170. package/dist/services/auth/auth.service.types.js.map +1 -0
  171. package/dist/services/auth/index.d.ts +3 -0
  172. package/dist/services/auth/index.d.ts.map +1 -0
  173. package/dist/services/auth/index.js +3 -0
  174. package/dist/services/auth/index.js.map +1 -0
  175. package/dist/services/channels/channels.types.d.ts +37 -0
  176. package/dist/services/channels/channels.types.d.ts.map +1 -0
  177. package/dist/services/channels/channels.types.js +2 -0
  178. package/dist/services/channels/channels.types.js.map +1 -0
  179. package/dist/services/channels/index.d.ts +3 -0
  180. package/dist/services/channels/index.d.ts.map +1 -0
  181. package/dist/services/channels/index.js +3 -0
  182. package/dist/services/channels/index.js.map +1 -0
  183. package/dist/services/channels/parse-event-payload.d.ts +12 -0
  184. package/dist/services/channels/parse-event-payload.d.ts.map +1 -0
  185. package/dist/services/channels/parse-event-payload.js +37 -0
  186. package/dist/services/channels/parse-event-payload.js.map +1 -0
  187. package/dist/services/domain-resolver/domain-resolver.types.d.ts +18 -0
  188. package/dist/services/domain-resolver/domain-resolver.types.d.ts.map +1 -0
  189. package/dist/services/domain-resolver/domain-resolver.types.js +2 -0
  190. package/dist/services/domain-resolver/domain-resolver.types.js.map +1 -0
  191. package/dist/services/domain-resolver/index.d.ts +2 -0
  192. package/dist/services/domain-resolver/index.d.ts.map +1 -0
  193. package/dist/services/domain-resolver/index.js +2 -0
  194. package/dist/services/domain-resolver/index.js.map +1 -0
  195. package/dist/services/domains/domain.types.d.ts +6 -0
  196. package/dist/services/domains/domain.types.d.ts.map +1 -0
  197. package/dist/services/domains/domain.types.js +2 -0
  198. package/dist/services/domains/domain.types.js.map +1 -0
  199. package/dist/services/domains/index.d.ts +2 -0
  200. package/dist/services/domains/index.d.ts.map +1 -0
  201. package/dist/services/domains/index.js +2 -0
  202. package/dist/services/domains/index.js.map +1 -0
  203. package/dist/services/endpoints/endpoints.types.d.ts +7 -0
  204. package/dist/services/endpoints/endpoints.types.d.ts.map +1 -0
  205. package/dist/services/endpoints/endpoints.types.js +2 -0
  206. package/dist/services/endpoints/endpoints.types.js.map +1 -0
  207. package/dist/services/endpoints/index.d.ts +2 -0
  208. package/dist/services/endpoints/index.d.ts.map +1 -0
  209. package/dist/services/endpoints/index.js +2 -0
  210. package/dist/services/endpoints/index.js.map +1 -0
  211. package/dist/services/events/events.types.d.ts +8 -0
  212. package/dist/services/events/events.types.d.ts.map +1 -0
  213. package/dist/services/events/events.types.js +2 -0
  214. package/dist/services/events/events.types.js.map +1 -0
  215. package/dist/services/events/index.d.ts +2 -0
  216. package/dist/services/events/index.d.ts.map +1 -0
  217. package/dist/services/events/index.js +2 -0
  218. package/dist/services/events/index.js.map +1 -0
  219. package/dist/services/genesis/genesis.types.d.ts +7 -0
  220. package/dist/services/genesis/genesis.types.d.ts.map +1 -0
  221. package/dist/services/genesis/genesis.types.js +2 -0
  222. package/dist/services/genesis/genesis.types.js.map +1 -0
  223. package/dist/services/genesis/index.d.ts +2 -0
  224. package/dist/services/genesis/index.d.ts.map +1 -0
  225. package/dist/services/genesis/index.js +2 -0
  226. package/dist/services/genesis/index.js.map +1 -0
  227. package/dist/services/index.d.ts +19 -0
  228. package/dist/services/index.d.ts.map +1 -0
  229. package/dist/services/index.js +19 -0
  230. package/dist/services/index.js.map +1 -0
  231. package/dist/services/intents/index.d.ts +2 -0
  232. package/dist/services/intents/index.d.ts.map +1 -0
  233. package/dist/services/intents/index.js +2 -0
  234. package/dist/services/intents/index.js.map +1 -0
  235. package/dist/services/intents/intents.types.d.ts +66 -0
  236. package/dist/services/intents/intents.types.d.ts.map +1 -0
  237. package/dist/services/intents/intents.types.js +5 -0
  238. package/dist/services/intents/intents.types.js.map +1 -0
  239. package/dist/services/keypairs/ed25519.service.d.ts +25 -0
  240. package/dist/services/keypairs/ed25519.service.d.ts.map +1 -0
  241. package/dist/services/keypairs/ed25519.service.js +84 -0
  242. package/dist/services/keypairs/ed25519.service.js.map +1 -0
  243. package/dist/services/keypairs/index.d.ts +3 -0
  244. package/dist/services/keypairs/index.d.ts.map +1 -0
  245. package/dist/services/keypairs/index.js +3 -0
  246. package/dist/services/keypairs/index.js.map +1 -0
  247. package/dist/services/keypairs/keypair.service.d.ts +27 -0
  248. package/dist/services/keypairs/keypair.service.d.ts.map +1 -0
  249. package/dist/services/keypairs/keypair.service.js +69 -0
  250. package/dist/services/keypairs/keypair.service.js.map +1 -0
  251. package/dist/services/keypairs/keypairs.types.d.ts +10 -0
  252. package/dist/services/keypairs/keypairs.types.d.ts.map +1 -0
  253. package/dist/services/keypairs/keypairs.types.js +2 -0
  254. package/dist/services/keypairs/keypairs.types.js.map +1 -0
  255. package/dist/services/keypairs/secp256k1.service.d.ts +24 -0
  256. package/dist/services/keypairs/secp256k1.service.d.ts.map +1 -0
  257. package/dist/services/keypairs/secp256k1.service.js +101 -0
  258. package/dist/services/keypairs/secp256k1.service.js.map +1 -0
  259. package/dist/services/keypairs/secp256r1.service.d.ts +24 -0
  260. package/dist/services/keypairs/secp256r1.service.d.ts.map +1 -0
  261. package/dist/services/keypairs/secp256r1.service.js +101 -0
  262. package/dist/services/keypairs/secp256r1.service.js.map +1 -0
  263. package/dist/services/ledgers/index.d.ts +2 -0
  264. package/dist/services/ledgers/index.d.ts.map +1 -0
  265. package/dist/services/ledgers/index.js +2 -0
  266. package/dist/services/ledgers/index.js.map +1 -0
  267. package/dist/services/ledgers/ledgers.types.d.ts +13 -0
  268. package/dist/services/ledgers/ledgers.types.d.ts.map +1 -0
  269. package/dist/services/ledgers/ledgers.types.js +2 -0
  270. package/dist/services/ledgers/ledgers.types.js.map +1 -0
  271. package/dist/services/policies/index.d.ts +2 -0
  272. package/dist/services/policies/index.d.ts.map +1 -0
  273. package/dist/services/policies/index.js +2 -0
  274. package/dist/services/policies/index.js.map +1 -0
  275. package/dist/services/policies/policies.types.d.ts +13 -0
  276. package/dist/services/policies/policies.types.d.ts.map +1 -0
  277. package/dist/services/policies/policies.types.js +2 -0
  278. package/dist/services/policies/policies.types.js.map +1 -0
  279. package/dist/services/requests/index.d.ts +2 -0
  280. package/dist/services/requests/index.d.ts.map +1 -0
  281. package/dist/services/requests/index.js +2 -0
  282. package/dist/services/requests/index.js.map +1 -0
  283. package/dist/services/requests/requests.types.d.ts +8 -0
  284. package/dist/services/requests/requests.types.d.ts.map +1 -0
  285. package/dist/services/requests/requests.types.js +2 -0
  286. package/dist/services/requests/requests.types.js.map +1 -0
  287. package/dist/services/tickers/index.d.ts +2 -0
  288. package/dist/services/tickers/index.d.ts.map +1 -0
  289. package/dist/services/tickers/index.js +2 -0
  290. package/dist/services/tickers/index.js.map +1 -0
  291. package/dist/services/tickers/tickers.types.d.ts +6 -0
  292. package/dist/services/tickers/tickers.types.d.ts.map +1 -0
  293. package/dist/services/tickers/tickers.types.js +2 -0
  294. package/dist/services/tickers/tickers.types.js.map +1 -0
  295. package/dist/services/transactions/index.d.ts +2 -0
  296. package/dist/services/transactions/index.d.ts.map +1 -0
  297. package/dist/services/transactions/index.js +2 -0
  298. package/dist/services/transactions/index.js.map +1 -0
  299. package/dist/services/transactions/transactions.types.d.ts +21 -0
  300. package/dist/services/transactions/transactions.types.d.ts.map +1 -0
  301. package/dist/services/transactions/transactions.types.js +2 -0
  302. package/dist/services/transactions/transactions.types.js.map +1 -0
  303. package/dist/services/user-invitations/index.d.ts +2 -0
  304. package/dist/services/user-invitations/index.d.ts.map +1 -0
  305. package/dist/services/user-invitations/index.js +2 -0
  306. package/dist/services/user-invitations/index.js.map +1 -0
  307. package/dist/services/user-invitations/user-invitations.types.d.ts +15 -0
  308. package/dist/services/user-invitations/user-invitations.types.d.ts.map +1 -0
  309. package/dist/services/user-invitations/user-invitations.types.js +2 -0
  310. package/dist/services/user-invitations/user-invitations.types.js.map +1 -0
  311. package/dist/services/users/index.d.ts +2 -0
  312. package/dist/services/users/index.d.ts.map +1 -0
  313. package/dist/services/users/index.js +2 -0
  314. package/dist/services/users/index.js.map +1 -0
  315. package/dist/services/users/users.types.d.ts +10 -0
  316. package/dist/services/users/users.types.d.ts.map +1 -0
  317. package/dist/services/users/users.types.js +2 -0
  318. package/dist/services/users/users.types.js.map +1 -0
  319. package/dist/services/vaults/index.d.ts +2 -0
  320. package/dist/services/vaults/index.d.ts.map +1 -0
  321. package/dist/services/vaults/index.js +2 -0
  322. package/dist/services/vaults/index.js.map +1 -0
  323. package/dist/services/vaults/vaults.types.d.ts +14 -0
  324. package/dist/services/vaults/vaults.types.d.ts.map +1 -0
  325. package/dist/services/vaults/vaults.types.js +2 -0
  326. package/dist/services/vaults/vaults.types.js.map +1 -0
  327. package/dist/services/xrpl/index.d.ts +5 -0
  328. package/dist/services/xrpl/index.d.ts.map +1 -0
  329. package/dist/services/xrpl/index.js +8 -0
  330. package/dist/services/xrpl/index.js.map +1 -0
  331. package/dist/services/xrpl/xrpl.adapters.d.ts +13 -0
  332. package/dist/services/xrpl/xrpl.adapters.d.ts.map +1 -0
  333. package/dist/services/xrpl/xrpl.adapters.js +288 -0
  334. package/dist/services/xrpl/xrpl.adapters.js.map +1 -0
  335. package/dist/services/xrpl/xrpl.http-adapters.d.ts +14 -0
  336. package/dist/services/xrpl/xrpl.http-adapters.d.ts.map +1 -0
  337. package/dist/services/xrpl/xrpl.http-adapters.js +83 -0
  338. package/dist/services/xrpl/xrpl.http-adapters.js.map +1 -0
  339. package/dist/services/xrpl/xrpl.ports.d.ts +36 -0
  340. package/dist/services/xrpl/xrpl.ports.d.ts.map +1 -0
  341. package/dist/services/xrpl/xrpl.ports.js +2 -0
  342. package/dist/services/xrpl/xrpl.ports.js.map +1 -0
  343. package/dist/services/xrpl/xrpl.service.d.ts +124 -0
  344. package/dist/services/xrpl/xrpl.service.d.ts.map +1 -0
  345. package/dist/services/xrpl/xrpl.service.js +370 -0
  346. package/dist/services/xrpl/xrpl.service.js.map +1 -0
  347. package/dist/services/xrpl/xrpl.types.d.ts +131 -0
  348. package/dist/services/xrpl/xrpl.types.d.ts.map +1 -0
  349. package/dist/services/xrpl/xrpl.types.js +30 -0
  350. package/dist/services/xrpl/xrpl.types.js.map +1 -0
  351. package/dist/transport/index.d.ts +4 -0
  352. package/dist/transport/index.d.ts.map +1 -0
  353. package/dist/transport/index.js +3 -0
  354. package/dist/transport/index.js.map +1 -0
  355. package/dist/transport/split-params.d.ts +14 -0
  356. package/dist/transport/split-params.d.ts.map +1 -0
  357. package/dist/transport/split-params.js +28 -0
  358. package/dist/transport/split-params.js.map +1 -0
  359. package/dist/transport/transport.types.d.ts +11 -0
  360. package/dist/transport/transport.types.d.ts.map +1 -0
  361. package/dist/transport/transport.types.js +2 -0
  362. package/dist/transport/transport.types.js.map +1 -0
  363. package/dist/transport/typed-transport.d.ts +38 -0
  364. package/dist/transport/typed-transport.d.ts.map +1 -0
  365. package/dist/transport/typed-transport.js +78 -0
  366. package/dist/transport/typed-transport.js.map +1 -0
  367. package/dist/type-utils/index.d.ts +4 -0
  368. package/dist/type-utils/index.d.ts.map +1 -0
  369. package/dist/type-utils/index.js +4 -0
  370. package/dist/type-utils/index.js.map +1 -0
  371. package/dist/type-utils/optional-except-for.d.ts +2 -0
  372. package/dist/type-utils/optional-except-for.d.ts.map +1 -0
  373. package/dist/type-utils/optional-except-for.js +2 -0
  374. package/dist/type-utils/optional-except-for.js.map +1 -0
  375. package/dist/type-utils/prettify.d.ts +4 -0
  376. package/dist/type-utils/prettify.d.ts.map +1 -0
  377. package/dist/type-utils/prettify.js +2 -0
  378. package/dist/type-utils/prettify.js.map +1 -0
  379. package/dist/type-utils/required-except-for.d.ts +2 -0
  380. package/dist/type-utils/required-except-for.d.ts.map +1 -0
  381. package/dist/type-utils/required-except-for.js +2 -0
  382. package/dist/type-utils/required-except-for.js.map +1 -0
  383. package/package.json +72 -0
@@ -0,0 +1,235 @@
1
+ import axios, {} from "axios";
2
+ import canonicalize from "canonicalize";
3
+ import qs from "qs";
4
+ import { v4 as uuidv4 } from "uuid";
5
+ import { DEFAULT_TIMEOUT_MS } from "../../constants/index.js";
6
+ import { isObject } from "../../helpers/index.js";
7
+ import { CustodyError } from "../../models/custody-error.js";
8
+ import { AuthService } from "../auth/auth.service.js";
9
+ import { KeypairService } from "../keypairs/index.js";
10
+ import {} from "./api.service.types.js";
11
+ /**
12
+ * ApiService handles authenticated API requests and token management
13
+ */
14
+ export class ApiService {
15
+ apiClient;
16
+ authFormData;
17
+ authService;
18
+ apiUrl;
19
+ challenge;
20
+ keypairService;
21
+ privateKey;
22
+ constructor(options) {
23
+ this.authService = options.authService;
24
+ this.apiUrl = options.apiUrl;
25
+ this.authFormData = options.authFormData;
26
+ this.privateKey = options.privateKey;
27
+ const timeout = options.timeout ?? DEFAULT_TIMEOUT_MS;
28
+ // Create Axios instance for API requests
29
+ this.apiClient = axios.create({
30
+ baseURL: this.apiUrl,
31
+ timeout,
32
+ headers: {
33
+ "Content-Type": "application/json",
34
+ },
35
+ });
36
+ // Set params serializer to handle arrays the way Ripple Custody expects
37
+ this.apiClient.defaults.paramsSerializer = (params) => qs.stringify(params, { arrayFormat: "repeat" });
38
+ // Add request interceptor to inject JWT token into headers
39
+ this.apiClient.interceptors.request.use(async (config) => {
40
+ const token = await this.getValidToken(this.privateKey);
41
+ config.headers.Authorization = `Bearer ${token}`;
42
+ return config;
43
+ }, (error) => Promise.reject(error));
44
+ // Add response interceptor to handle 401 errors by refreshing the token and retrying once
45
+ this.apiClient.interceptors.response.use((response) => response, async (error) => {
46
+ const originalRequest = error.config;
47
+ // Only retry once and only on 401 responses
48
+ if (axios.isAxiosError(error) &&
49
+ error.response?.status === 401 &&
50
+ originalRequest &&
51
+ !originalRequest._retried) {
52
+ originalRequest._retried = true;
53
+ // Generate a fresh challenge and force-refresh the token
54
+ const token = await this.getValidToken(this.privateKey, true);
55
+ originalRequest.headers.Authorization = `Bearer ${token}`;
56
+ return this.apiClient(originalRequest);
57
+ }
58
+ return Promise.reject(error);
59
+ });
60
+ // Validate provided private key
61
+ const privateKeyAlgorithm = KeypairService.detectKeyType(this.privateKey);
62
+ if (privateKeyAlgorithm === "unknown") {
63
+ throw new Error("Unsupported private key algorithm. Please provide a valid private key.");
64
+ }
65
+ // Initialize keypair service for signing
66
+ this.keypairService = new KeypairService(privateKeyAlgorithm);
67
+ // Use provided challenge or generate a new one
68
+ this.challenge = this.authFormData.challenge ? this.authFormData.challenge : uuidv4();
69
+ }
70
+ /**
71
+ * Retrieves a valid JWT token, refreshing if needed.
72
+ * @param privateKey - The private key for signing the challenge.
73
+ * @param forceRefresh - Whether to force a token refresh.
74
+ * @returns {Promise<string>} The valid JWT token.
75
+ */
76
+ async getValidToken(privateKey, forceRefresh = false) {
77
+ if (forceRefresh || this.authService.isTokenExpired()) {
78
+ // Generate a fresh challenge for each token refresh to avoid stale challenge rejection
79
+ this.challenge = this.authFormData.challenge ? this.authFormData.challenge : uuidv4();
80
+ const authData = {
81
+ signature: this.keypairService.sign(privateKey, this.challenge),
82
+ challenge: this.challenge,
83
+ publicKey: this.authFormData.publicKey,
84
+ };
85
+ return await this.authService.getToken(authData);
86
+ }
87
+ return this.authService.getCurrentToken() || "";
88
+ }
89
+ /**
90
+ * Makes a GET request to the API.
91
+ * @param url - The endpoint URL.
92
+ * @returns {Promise<T>} The response data.
93
+ * @throws {CustodyError} If the request fails with a typed error response.
94
+ */
95
+ async get(url, params) {
96
+ try {
97
+ const response = await this.apiClient.get(url, { params });
98
+ return response.data;
99
+ }
100
+ catch (error) {
101
+ if (axios.isAxiosError(error)) {
102
+ // Check if the error response contains the expected error structure
103
+ const errorData = error.response?.data;
104
+ if (isObject(errorData)) {
105
+ throw new CustodyError(errorData, error.response?.status, error);
106
+ }
107
+ // Fallback for unexpected error formats
108
+ throw new CustodyError({ reason: `GET API request failed: ${error.message}` }, error.response?.status, error);
109
+ }
110
+ else {
111
+ // Re-throw non-Axios errors as CustodyError
112
+ throw new CustodyError({ reason: error instanceof Error ? error.message : "Unknown error occurred" }, undefined, error instanceof Error ? error : undefined);
113
+ }
114
+ }
115
+ }
116
+ /**
117
+ * Makes a POST request to the API.
118
+ * @param url - The endpoint URL.
119
+ * @param body - The request payload.
120
+ * @param config - Axios config; set `sign: false` to skip canonicalization/signing.
121
+ * @returns {Promise<T>} The response data.
122
+ * @throws {CustodyError} If the request fails with a typed error response.
123
+ */
124
+ async post(url, body, config) {
125
+ const { sign, ...rest } = config ?? {};
126
+ // Preserve `undefined` when no config was passed so axios receives its own default
127
+ const axiosConfig = config ? rest : undefined;
128
+ try {
129
+ // Sign the request (default) unless the caller opted out
130
+ if (sign !== false && body && (!body.signature || body.signature === "")) {
131
+ // Canonicalize the request body
132
+ // @ts-expect-error canonicalize works fine but has complex types
133
+ const canonicalizedRequest = canonicalize(body.request);
134
+ if (!canonicalizedRequest) {
135
+ throw new CustodyError({ reason: "Failed to canonicalize request body" });
136
+ }
137
+ // Sign the canonicalized request
138
+ const signature = this.keypairService.sign(this.privateKey, canonicalizedRequest);
139
+ body.signature = signature;
140
+ }
141
+ const response = await this.apiClient.post(url, body, axiosConfig);
142
+ return response.data;
143
+ }
144
+ catch (error) {
145
+ if (axios.isAxiosError(error)) {
146
+ // Check if the error response contains the expected error structure
147
+ const errorData = error.response?.data;
148
+ if (isObject(errorData)) {
149
+ throw new CustodyError(errorData, error.response?.status, error);
150
+ }
151
+ // Fallback for unexpected error formats
152
+ throw new CustodyError({ reason: `POST API request failed: ${error.message}` }, error.response?.status, error);
153
+ }
154
+ else {
155
+ // Re-throw non-Axios errors as CustodyError
156
+ throw new CustodyError({ reason: error instanceof Error ? error.message : "Unknown error occurred" }, undefined, error instanceof Error ? error : undefined);
157
+ }
158
+ }
159
+ }
160
+ /**
161
+ * Makes a PUT request to the API.
162
+ * @param url - The endpoint URL.
163
+ * @param body - The request payload (sent as-is; no canonicalization or signing).
164
+ * @returns {Promise<T>} The response data.
165
+ * @throws {CustodyError} If the request fails with a typed error response.
166
+ */
167
+ async put(url, body, config) {
168
+ try {
169
+ const response = await this.apiClient.put(url, body, config);
170
+ return response.data;
171
+ }
172
+ catch (error) {
173
+ if (axios.isAxiosError(error)) {
174
+ const errorData = error.response?.data;
175
+ if (isObject(errorData)) {
176
+ throw new CustodyError(errorData, error.response?.status, error);
177
+ }
178
+ throw new CustodyError({ reason: `PUT API request failed: ${error.message}` }, error.response?.status, error);
179
+ }
180
+ else {
181
+ throw new CustodyError({ reason: error instanceof Error ? error.message : "Unknown error occurred" }, undefined, error instanceof Error ? error : undefined);
182
+ }
183
+ }
184
+ }
185
+ /**
186
+ * Makes a PATCH request to the API.
187
+ * @param url - The endpoint URL.
188
+ * @param body - The request payload (sent as-is; no canonicalization or signing).
189
+ * @returns {Promise<T>} The response data.
190
+ * @throws {CustodyError} If the request fails with a typed error response.
191
+ */
192
+ async patch(url, body, config) {
193
+ try {
194
+ const response = await this.apiClient.patch(url, body, config);
195
+ return response.data;
196
+ }
197
+ catch (error) {
198
+ if (axios.isAxiosError(error)) {
199
+ const errorData = error.response?.data;
200
+ if (isObject(errorData)) {
201
+ throw new CustodyError(errorData, error.response?.status, error);
202
+ }
203
+ throw new CustodyError({ reason: `PATCH API request failed: ${error.message}` }, error.response?.status, error);
204
+ }
205
+ else {
206
+ throw new CustodyError({ reason: error instanceof Error ? error.message : "Unknown error occurred" }, undefined, error instanceof Error ? error : undefined);
207
+ }
208
+ }
209
+ }
210
+ /**
211
+ * Makes a DELETE request to the API.
212
+ * @param url - The endpoint URL.
213
+ * @returns {Promise<T>} The response data.
214
+ * @throws {CustodyError} If the request fails with a typed error response.
215
+ */
216
+ async delete(url, config) {
217
+ try {
218
+ const response = await this.apiClient.delete(url, config);
219
+ return response.data;
220
+ }
221
+ catch (error) {
222
+ if (axios.isAxiosError(error)) {
223
+ const errorData = error.response?.data;
224
+ if (isObject(errorData)) {
225
+ throw new CustodyError(errorData, error.response?.status, error);
226
+ }
227
+ throw new CustodyError({ reason: `DELETE API request failed: ${error.message}` }, error.response?.status, error);
228
+ }
229
+ else {
230
+ throw new CustodyError({ reason: error instanceof Error ? error.message : "Unknown error occurred" }, undefined, error instanceof Error ? error : undefined);
231
+ }
232
+ }
233
+ }
234
+ }
235
+ //# sourceMappingURL=api.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.service.js","sourceRoot":"","sources":["../../../src/services/apis/api.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type AuthFormData, AuthService } from "../auth/index.js";
2
+ import { type KeypairAlgorithm } from "../keypairs/index.js";
3
+ export type PartialAuthFormData = Pick<AuthFormData, "publicKey"> & Partial<Pick<AuthFormData, "challenge">>;
4
+ export type ApiServiceOptions = {
5
+ authFormData: PartialAuthFormData;
6
+ authService: AuthService;
7
+ apiUrl: string;
8
+ keypairAlgorithm?: KeypairAlgorithm;
9
+ privateKey: string;
10
+ /**
11
+ * Request timeout in milliseconds.
12
+ * If not provided, defaults to 30 seconds.
13
+ */
14
+ timeout?: number;
15
+ };
16
+ //# sourceMappingURL=api.service.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.service.types.d.ts","sourceRoot":"","sources":["../../../src/services/apis/api.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,GAC/D,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAA;AAE1C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,mBAAmB,CAAA;IACjC,WAAW,EAAE,WAAW,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { AuthService } from "../auth/index.js";
2
+ import {} from "../keypairs/index.js";
3
+ //# sourceMappingURL=api.service.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.service.types.js","sourceRoot":"","sources":["../../../src/services/apis/api.service.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAyB,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from "./api.service.js";
2
+ export * from "./api.service.types.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/apis/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from "./api.service.js";
2
+ export * from "./api.service.types.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/apis/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA"}
@@ -0,0 +1,56 @@
1
+ import { type AuthFormData } from "./auth.service.types.js";
2
+ export type AuthServiceOptions = {
3
+ /** The full authentication token endpoint URL (e.g., https://auth.example.com/token) */
4
+ authUrl: string;
5
+ /**
6
+ * Request timeout in milliseconds.
7
+ * @default 30000 (30 seconds)
8
+ */
9
+ timeout?: number;
10
+ };
11
+ export declare class AuthService {
12
+ private authClient;
13
+ private accessToken;
14
+ private tokenExpiration;
15
+ private readonly DEFAULT_TOKEN_VALIDITY;
16
+ /**
17
+ * Stores the in-flight token refresh promise to prevent concurrent refresh requests.
18
+ * When multiple requests need a token refresh simultaneously, they will all await
19
+ * the same promise instead of triggering multiple auth requests.
20
+ */
21
+ private tokenRefreshPromise;
22
+ constructor(options: AuthServiceOptions);
23
+ /**
24
+ * Fetch a JWT token using the provided authentication data from Ripple Custody backend.
25
+ * @param authData - The authentication data (challenge, publicKey, signature)
26
+ * @returns {Promise<string>} The JWT token.
27
+ * @throws {CustodyError} If authentication fails.
28
+ */
29
+ private fetchToken;
30
+ /**
31
+ * Get a valid JWT token, refreshing if expired or missing.
32
+ *
33
+ * This method handles concurrent token refresh requests by ensuring only one
34
+ * refresh request is made at a time. If multiple callers need a token refresh
35
+ * simultaneously, they will all await the same promise.
36
+ */
37
+ getToken(authData: AuthFormData): Promise<string>;
38
+ /**
39
+ * Extract the `exp` (expiration) claim from a JWT token's payload.
40
+ * @returns The `exp` value in seconds (Unix timestamp), or null if extraction fails.
41
+ */
42
+ private extractExpFromJwt;
43
+ /**
44
+ * Check if the current token is expired or about to expire.
45
+ */
46
+ isTokenExpired(): boolean;
47
+ /**
48
+ * Get the current JWT token, if available.
49
+ */
50
+ getCurrentToken(): string | null;
51
+ /**
52
+ * Get the current JWT token expiration, if available.
53
+ */
54
+ getTokenExpiration(): number | null;
55
+ }
56
+ //# sourceMappingURL=auth.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../../src/services/auth/auth.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,yBAAyB,CAAA;AAE9E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqB;IAE5D;;;;OAIG;IACH,OAAO,CAAC,mBAAmB,CAA+B;gBAE9C,OAAO,EAAE,kBAAkB;IAavC;;;;;OAKG;YACW,UAAU;IA+BxB;;;;;;OAMG;IACG,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBvD;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;OAEG;IACH,cAAc,IAAI,OAAO;IASzB;;OAEG;IACH,eAAe,IAAI,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,kBAAkB,IAAI,MAAM,GAAG,IAAI;CAGpC"}
@@ -0,0 +1,120 @@
1
+ import axios, {} from "axios";
2
+ import { DEFAULT_TIMEOUT_MS } from "../../constants/index.js";
3
+ import { CustodyError } from "../../models/custody-error.js";
4
+ import {} from "./auth.service.types.js";
5
+ export class AuthService {
6
+ authClient;
7
+ accessToken = "";
8
+ tokenExpiration = null; // timestamp in milliseconds
9
+ DEFAULT_TOKEN_VALIDITY = 4 * 60 * 60 * 1000; // 4 hours in milliseconds
10
+ /**
11
+ * Stores the in-flight token refresh promise to prevent concurrent refresh requests.
12
+ * When multiple requests need a token refresh simultaneously, they will all await
13
+ * the same promise instead of triggering multiple auth requests.
14
+ */
15
+ tokenRefreshPromise = null;
16
+ constructor(options) {
17
+ const { authUrl, timeout = DEFAULT_TIMEOUT_MS } = options;
18
+ // Initialize Axios client for auth requests
19
+ this.authClient = axios.create({
20
+ baseURL: authUrl,
21
+ timeout,
22
+ headers: {
23
+ "Content-Type": "application/x-www-form-urlencoded",
24
+ },
25
+ });
26
+ }
27
+ /**
28
+ * Fetch a JWT token using the provided authentication data from Ripple Custody backend.
29
+ * @param authData - The authentication data (challenge, publicKey, signature)
30
+ * @returns {Promise<string>} The JWT token.
31
+ * @throws {CustodyError} If authentication fails.
32
+ */
33
+ async fetchToken(authData) {
34
+ // Prepare form data for token request
35
+ const formData = new URLSearchParams();
36
+ formData.append("grant_type", "password");
37
+ formData.append("client_id", "customer_api");
38
+ formData.append("signature", authData.signature);
39
+ formData.append("challenge", authData.challenge);
40
+ formData.append("public_key", authData.publicKey);
41
+ try {
42
+ // Send POST request to obtain token
43
+ const response = await this.authClient.post("", formData);
44
+ this.accessToken = response.data.access_token;
45
+ // Extract expiration from the JWT's exp claim, fall back to default validity
46
+ const exp = this.extractExpFromJwt(this.accessToken);
47
+ this.tokenExpiration = exp ? exp * 1000 : Date.now() + this.DEFAULT_TOKEN_VALIDITY;
48
+ return this.accessToken;
49
+ }
50
+ catch (error) {
51
+ if (axios.isAxiosError(error) && error.response) {
52
+ const errorData = error.response.data;
53
+ throw new CustodyError(errorData, error.response.status, error);
54
+ }
55
+ throw new CustodyError({ reason: "Authentication request failed" }, undefined, error instanceof Error ? error : undefined);
56
+ }
57
+ }
58
+ /**
59
+ * Get a valid JWT token, refreshing if expired or missing.
60
+ *
61
+ * This method handles concurrent token refresh requests by ensuring only one
62
+ * refresh request is made at a time. If multiple callers need a token refresh
63
+ * simultaneously, they will all await the same promise.
64
+ */
65
+ async getToken(authData) {
66
+ // Return existing valid token
67
+ if (this.accessToken && !this.isTokenExpired()) {
68
+ return this.accessToken;
69
+ }
70
+ // If a refresh is already in progress, wait for it
71
+ if (this.tokenRefreshPromise) {
72
+ return this.tokenRefreshPromise;
73
+ }
74
+ // Start a new token refresh and store the promise
75
+ this.tokenRefreshPromise = this.fetchToken(authData).finally(() => {
76
+ // Clear the promise once completed (success or failure)
77
+ this.tokenRefreshPromise = null;
78
+ });
79
+ return this.tokenRefreshPromise;
80
+ }
81
+ /**
82
+ * Extract the `exp` (expiration) claim from a JWT token's payload.
83
+ * @returns The `exp` value in seconds (Unix timestamp), or null if extraction fails.
84
+ */
85
+ extractExpFromJwt(token) {
86
+ try {
87
+ const payload = token.split(".")[1];
88
+ if (!payload)
89
+ return null;
90
+ const decoded = JSON.parse(Buffer.from(payload, "base64url").toString());
91
+ return typeof decoded.exp === "number" ? decoded.exp : null;
92
+ }
93
+ catch {
94
+ return null;
95
+ }
96
+ }
97
+ /**
98
+ * Check if the current token is expired or about to expire.
99
+ */
100
+ isTokenExpired() {
101
+ if (!this.tokenExpiration)
102
+ return true;
103
+ // Consider token expired 5 minutes before actual expiration for safety
104
+ const bufferTime = 5 * 60 * 1000;
105
+ return Date.now() > this.tokenExpiration - bufferTime;
106
+ }
107
+ /**
108
+ * Get the current JWT token, if available.
109
+ */
110
+ getCurrentToken() {
111
+ return this.accessToken;
112
+ }
113
+ /**
114
+ * Get the current JWT token expiration, if available.
115
+ */
116
+ getTokenExpiration() {
117
+ return this.tokenExpiration;
118
+ }
119
+ }
120
+ //# sourceMappingURL=auth.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../src/services/auth/auth.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export type AuthFormData = {
2
+ challenge: string;
3
+ publicKey: string;
4
+ signature: string;
5
+ };
6
+ export interface AuthResponse {
7
+ access_token: string;
8
+ }
9
+ //# sourceMappingURL=auth.service.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.types.d.ts","sourceRoot":"","sources":["../../../src/services/auth/auth.service.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAA;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=auth.service.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.types.js","sourceRoot":"","sources":["../../../src/services/auth/auth.service.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export * from "./auth.service.js";
2
+ export * from "./auth.service.types.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from "./auth.service.js";
2
+ export * from "./auth.service.types.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA"}
@@ -0,0 +1,37 @@
1
+ import type { components, operations } from "../../models/custody-types.js";
2
+ import type { Prettify } from "../../type-utils/index.js";
3
+ import type { Core_HarmonizeEvent, Core_HarmonizeEventPayload } from "../events/index.js";
4
+ export type GetChannelsPathParams = operations["getAllChannels"]["parameters"]["path"];
5
+ export type GetChannelPathParams = operations["getChannel"]["parameters"]["path"];
6
+ export type CreateChannelPathParams = operations["createChannel"]["parameters"]["path"];
7
+ export type UpdateChannelPathParams = operations["updateChannel"]["parameters"]["path"];
8
+ export type DeleteChannelPathParams = operations["deleteChannel"]["parameters"]["path"];
9
+ export type TestChannelPathParams = operations["testChannel"]["parameters"]["path"];
10
+ export type GetChannelEventsPathParams = operations["getAllChannelEvents"]["parameters"]["path"];
11
+ export type GetChannelEventPathParams = operations["getEvent"]["parameters"]["path"];
12
+ export type GetAllChannelsEventsPathParams = operations["getAllEvents"]["parameters"]["path"];
13
+ export type EDS_Channel = components["schemas"]["EDS_Channel"];
14
+ export type EDS_Event = components["schemas"]["EDS_Event"];
15
+ export type EDS_ChannelUpdate = components["schemas"]["EDS_ChannelUpdate"];
16
+ export type EDS_WebhookChannelCreate = Omit<components["schemas"]["EDS_ChannelCreate"], "type" | "supportedEventTypes"> & {
17
+ supportedEventTypes: (Core_HarmonizeEventPayload["type"] | (string & {}))[];
18
+ type: "WEBHOOK";
19
+ url: string;
20
+ };
21
+ /**
22
+ * Request body for `channels.create`. Modeled as a discriminated union so new
23
+ * channel types (e.g. non-WEBHOOK) can be added without a breaking change.
24
+ */
25
+ export type EDS_ChannelCreate = Prettify<EDS_WebhookChannelCreate>;
26
+ /**
27
+ * Body shape delivered to a webhook channel's URL. The outer envelope adds a
28
+ * W3C `traceId` for distributed tracing; `msg` is a fully-parsed
29
+ * `Core_HarmonizeEvent` (its `payload` is an object, not a JSON string — this
30
+ * is distinct from `EDS_Event`, which the REST API returns with `payload` as
31
+ * a string and which is what `parseEventPayload` operates on).
32
+ */
33
+ export type EDS_WebhookEvent = {
34
+ traceId: string;
35
+ msg: Core_HarmonizeEvent;
36
+ };
37
+ //# sourceMappingURL=channels.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channels.types.d.ts","sourceRoot":"","sources":["../../../src/services/channels/channels.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC3E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAA;AAGzF,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AACtF,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AACjF,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AACvF,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AACvF,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AACvF,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AACnF,MAAM,MAAM,0BAA0B,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAChG,MAAM,MAAM,yBAAyB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AACpF,MAAM,MAAM,8BAA8B,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAG7F,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAA;AAC9D,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAA;AAC1D,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAA;AAM1E,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,EAC1C,MAAM,GAAG,qBAAqB,CAC/B,GAAG;IACF,mBAAmB,EAAE,CAAC,0BAA0B,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,CAAA;IAC3E,IAAI,EAAE,SAAS,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,wBAAwB,CAAC,CAAA;AAElE;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,mBAAmB,CAAA;CACzB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=channels.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channels.types.js","sourceRoot":"","sources":["../../../src/services/channels/channels.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export * from "./channels.types.js";
2
+ export { parseEventPayload } from "./parse-event-payload.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/channels/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from "./channels.types.js";
2
+ export { parseEventPayload } from "./parse-event-payload.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/channels/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA"}
@@ -0,0 +1,12 @@
1
+ import type { Core_HarmonizeEvent } from "../events/events.types.js";
2
+ import type { EDS_Event } from "./channels.types.js";
3
+ /**
4
+ * Parses the JSON-encoded `payload` on an `EDS_Event` into a fully typed
5
+ * `Core_HarmonizeEvent`. TypeScript narrows the inner `payload.type`
6
+ * discriminator so callers can switch on the event variant.
7
+ *
8
+ * Throws `CustodyError` when `payload` is missing, is not valid JSON, or
9
+ * does not contain a `Core_HarmonizeEvent` with a string `payload.type`.
10
+ */
11
+ export declare function parseEventPayload(event: EDS_Event): Core_HarmonizeEvent;
12
+ //# sourceMappingURL=parse-event-payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-event-payload.d.ts","sourceRoot":"","sources":["../../../src/services/channels/parse-event-payload.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,mBAAmB,CAuBvE"}