@reclaimprotocol/attestor-core 4.0.3 → 5.0.1-beta.10

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 (474) hide show
  1. package/LICENSE +660 -660
  2. package/README.md +1 -2
  3. package/lib/avs/abis/avsDirectoryABI.js +341 -342
  4. package/lib/avs/abis/delegationABI.js +4 -5
  5. package/lib/avs/abis/registryABI.js +722 -723
  6. package/lib/avs/client/create-claim-on-avs.d.ts +5 -5
  7. package/lib/avs/client/create-claim-on-avs.js +160 -139
  8. package/lib/avs/config.d.ts +1 -1
  9. package/lib/avs/config.js +25 -23
  10. package/lib/avs/contracts/ReclaimServiceManager.d.ts +436 -532
  11. package/lib/avs/contracts/ReclaimServiceManager.js +0 -3
  12. package/lib/avs/contracts/common.d.ts +40 -11
  13. package/lib/avs/contracts/common.js +0 -3
  14. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +13 -11
  15. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1157 -1148
  16. package/lib/avs/contracts/factories/index.d.ts +1 -1
  17. package/lib/avs/contracts/factories/index.js +4 -9
  18. package/lib/avs/contracts/index.d.ts +3 -3
  19. package/lib/avs/contracts/index.js +6 -40
  20. package/lib/avs/types/index.d.ts +6 -6
  21. package/lib/avs/types/index.js +0 -3
  22. package/lib/avs/utils/contracts.d.ts +14 -14
  23. package/lib/avs/utils/contracts.js +50 -35
  24. package/lib/avs/utils/register.d.ts +3 -3
  25. package/lib/avs/utils/register.js +71 -79
  26. package/lib/avs/utils/tasks.d.ts +4 -4
  27. package/lib/avs/utils/tasks.js +44 -41
  28. package/lib/browser/avs/abis/avsDirectoryABI.d.ts +60 -0
  29. package/lib/browser/avs/abis/avsDirectoryABI.js +343 -0
  30. package/lib/browser/avs/abis/delegationABI.d.ts +126 -0
  31. package/lib/browser/avs/abis/delegationABI.js +4 -0
  32. package/lib/browser/avs/abis/registryABI.d.ts +136 -0
  33. package/lib/browser/avs/abis/registryABI.js +728 -0
  34. package/lib/browser/avs/client/create-claim-on-avs.d.ts +12 -0
  35. package/lib/browser/avs/client/create-claim-on-avs.js +168 -0
  36. package/lib/browser/avs/config.d.ts +7 -0
  37. package/lib/browser/avs/config.js +26 -0
  38. package/lib/browser/avs/contracts/ReclaimServiceManager.d.ts +601 -0
  39. package/lib/browser/avs/contracts/ReclaimServiceManager.js +0 -0
  40. package/lib/browser/avs/contracts/common.d.ts +50 -0
  41. package/lib/browser/avs/contracts/common.js +0 -0
  42. package/lib/browser/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +890 -0
  43. package/lib/browser/avs/contracts/factories/ReclaimServiceManager__factory.js +1183 -0
  44. package/lib/browser/avs/contracts/factories/index.d.ts +1 -0
  45. package/lib/browser/avs/contracts/factories/index.js +4 -0
  46. package/lib/browser/avs/contracts/index.d.ts +3 -0
  47. package/lib/browser/avs/contracts/index.js +6 -0
  48. package/lib/browser/avs/types/index.d.ts +55 -0
  49. package/lib/browser/avs/types/index.js +0 -0
  50. package/lib/browser/avs/utils/contracts.d.ts +21 -0
  51. package/lib/browser/avs/utils/contracts.js +53 -0
  52. package/lib/browser/avs/utils/register.d.ts +27 -0
  53. package/lib/browser/avs/utils/register.js +74 -0
  54. package/lib/browser/avs/utils/tasks.d.ts +22 -0
  55. package/lib/browser/avs/utils/tasks.js +48 -0
  56. package/lib/browser/client/create-claim.d.ts +5 -0
  57. package/lib/browser/client/create-claim.js +461 -0
  58. package/lib/browser/client/index.d.ts +3 -0
  59. package/lib/browser/client/index.js +3 -0
  60. package/lib/browser/client/tunnels/make-rpc-tcp-tunnel.d.ts +16 -0
  61. package/lib/browser/client/tunnels/make-rpc-tcp-tunnel.js +53 -0
  62. package/lib/browser/client/tunnels/make-rpc-tls-tunnel.d.ts +26 -0
  63. package/lib/browser/client/tunnels/make-rpc-tls-tunnel.js +127 -0
  64. package/lib/browser/client/utils/attestor-pool.d.ts +8 -0
  65. package/lib/browser/client/utils/attestor-pool.js +24 -0
  66. package/lib/browser/client/utils/client-socket.d.ts +11 -0
  67. package/lib/browser/client/utils/client-socket.js +120 -0
  68. package/lib/browser/client/utils/message-handler.d.ts +4 -0
  69. package/lib/browser/client/utils/message-handler.js +97 -0
  70. package/lib/browser/config/index.d.ts +31 -0
  71. package/lib/browser/config/index.js +62 -0
  72. package/lib/browser/external-rpc/benchmark.d.ts +1 -0
  73. package/lib/browser/external-rpc/benchmark.js +82 -0
  74. package/lib/browser/external-rpc/event-bus.d.ts +7 -0
  75. package/lib/browser/external-rpc/event-bus.js +17 -0
  76. package/lib/browser/external-rpc/global.d.js +0 -0
  77. package/lib/browser/external-rpc/handle-incoming-msg.d.ts +2 -0
  78. package/lib/browser/external-rpc/handle-incoming-msg.js +241 -0
  79. package/lib/browser/external-rpc/index.d.ts +3 -0
  80. package/lib/browser/external-rpc/index.js +3 -0
  81. package/lib/browser/external-rpc/jsc-polyfills/1.d.ts +14 -0
  82. package/lib/browser/external-rpc/jsc-polyfills/1.js +80 -0
  83. package/lib/browser/external-rpc/jsc-polyfills/2.js +15 -0
  84. package/lib/browser/external-rpc/jsc-polyfills/event.d.ts +10 -0
  85. package/lib/browser/external-rpc/jsc-polyfills/event.js +19 -0
  86. package/lib/browser/external-rpc/jsc-polyfills/index.d.ts +2 -0
  87. package/lib/browser/external-rpc/jsc-polyfills/index.js +2 -0
  88. package/lib/browser/external-rpc/jsc-polyfills/ws.d.ts +21 -0
  89. package/lib/browser/external-rpc/jsc-polyfills/ws.js +83 -0
  90. package/lib/browser/external-rpc/setup-browser.d.ts +6 -0
  91. package/lib/browser/external-rpc/setup-browser.js +33 -0
  92. package/lib/browser/external-rpc/setup-jsc.d.ts +24 -0
  93. package/lib/browser/external-rpc/setup-jsc.js +22 -0
  94. package/lib/{window-rpc → browser/external-rpc}/types.d.ts +56 -35
  95. package/lib/browser/external-rpc/types.js +0 -0
  96. package/lib/browser/external-rpc/utils.d.ts +20 -0
  97. package/lib/browser/external-rpc/utils.js +100 -0
  98. package/lib/browser/external-rpc/zk.d.ts +14 -0
  99. package/lib/browser/external-rpc/zk.js +58 -0
  100. package/lib/browser/index.browser.js +13 -0
  101. package/lib/browser/index.d.ts +9 -0
  102. package/lib/browser/index.js +13 -0
  103. package/lib/browser/mechain/abis/governanceABI.d.ts +50 -0
  104. package/lib/browser/mechain/abis/governanceABI.js +461 -0
  105. package/lib/browser/mechain/abis/taskABI.d.ts +157 -0
  106. package/lib/browser/mechain/abis/taskABI.js +512 -0
  107. package/lib/browser/mechain/client/create-claim-on-mechain.d.ts +10 -0
  108. package/lib/browser/mechain/client/create-claim-on-mechain.js +33 -0
  109. package/lib/browser/mechain/client/index.d.ts +1 -0
  110. package/lib/browser/mechain/client/index.js +1 -0
  111. package/lib/browser/mechain/constants/index.d.ts +3 -0
  112. package/lib/browser/mechain/constants/index.js +8 -0
  113. package/lib/browser/mechain/index.d.ts +2 -0
  114. package/lib/browser/mechain/index.js +2 -0
  115. package/lib/browser/mechain/types/index.d.ts +23 -0
  116. package/lib/browser/mechain/types/index.js +0 -0
  117. package/lib/browser/proto/api.d.ts +651 -0
  118. package/lib/browser/proto/api.js +4250 -0
  119. package/lib/browser/proto/tee-bundle.d.ts +156 -0
  120. package/lib/browser/proto/tee-bundle.js +1296 -0
  121. package/lib/browser/providers/http/index.d.ts +18 -0
  122. package/lib/browser/providers/http/index.js +640 -0
  123. package/lib/browser/providers/http/patch-parse5-tree.d.ts +6 -0
  124. package/lib/browser/providers/http/patch-parse5-tree.js +34 -0
  125. package/lib/browser/providers/http/utils.d.ts +77 -0
  126. package/lib/browser/providers/http/utils.js +283 -0
  127. package/lib/browser/providers/index.d.ts +4 -0
  128. package/lib/browser/providers/index.js +7 -0
  129. package/lib/browser/scripts/fallbacks/crypto.js +4 -0
  130. package/lib/browser/scripts/fallbacks/empty.js +4 -0
  131. package/lib/browser/scripts/fallbacks/gnark.js +15 -0
  132. package/lib/browser/scripts/fallbacks/re2.js +7 -0
  133. package/lib/browser/scripts/fallbacks/snarkjs.js +10 -0
  134. package/lib/browser/scripts/fallbacks/stwo.js +159 -0
  135. package/lib/browser/types/bgp.d.ts +11 -0
  136. package/lib/browser/types/bgp.js +0 -0
  137. package/lib/browser/types/claims.d.ts +70 -0
  138. package/lib/browser/types/claims.js +0 -0
  139. package/lib/browser/types/client.d.ts +163 -0
  140. package/lib/browser/types/client.js +0 -0
  141. package/lib/browser/types/general.d.ts +77 -0
  142. package/lib/browser/types/general.js +0 -0
  143. package/lib/browser/types/handlers.d.ts +10 -0
  144. package/lib/browser/types/handlers.js +0 -0
  145. package/lib/browser/types/index.d.ts +10 -0
  146. package/lib/browser/types/index.js +10 -0
  147. package/lib/browser/types/providers.d.ts +161 -0
  148. package/lib/browser/types/providers.gen.d.ts +443 -0
  149. package/lib/browser/types/providers.gen.js +16 -0
  150. package/lib/browser/types/providers.js +0 -0
  151. package/lib/browser/types/rpc.d.ts +35 -0
  152. package/lib/browser/types/rpc.js +0 -0
  153. package/lib/browser/types/signatures.d.ts +28 -0
  154. package/lib/browser/types/signatures.js +0 -0
  155. package/lib/browser/types/tunnel.d.ts +18 -0
  156. package/lib/browser/types/tunnel.js +0 -0
  157. package/lib/browser/types/zk.d.ts +38 -0
  158. package/lib/browser/types/zk.js +0 -0
  159. package/lib/browser/utils/auth.d.ts +8 -0
  160. package/lib/browser/utils/auth.js +71 -0
  161. package/lib/browser/utils/b64-json.d.ts +2 -0
  162. package/lib/browser/utils/b64-json.js +17 -0
  163. package/lib/browser/utils/claims.d.ts +33 -0
  164. package/lib/browser/utils/claims.js +89 -0
  165. package/lib/browser/utils/env.d.ts +3 -0
  166. package/lib/browser/utils/env.js +19 -0
  167. package/lib/browser/utils/error.d.ts +26 -0
  168. package/lib/browser/utils/error.js +54 -0
  169. package/lib/browser/utils/generics.d.ts +119 -0
  170. package/lib/browser/utils/generics.js +272 -0
  171. package/lib/browser/utils/http-parser.d.ts +59 -0
  172. package/lib/browser/utils/http-parser.js +201 -0
  173. package/lib/browser/utils/index.browser.js +13 -0
  174. package/lib/browser/utils/index.d.ts +13 -0
  175. package/lib/browser/utils/index.js +13 -0
  176. package/lib/browser/utils/logger.browser.js +88 -0
  177. package/lib/browser/utils/logger.d.ts +14 -0
  178. package/lib/browser/utils/logger.js +88 -0
  179. package/lib/browser/utils/prepare-packets.d.ts +16 -0
  180. package/lib/browser/utils/prepare-packets.js +69 -0
  181. package/lib/browser/utils/redactions.d.ts +73 -0
  182. package/lib/browser/utils/redactions.js +135 -0
  183. package/lib/browser/utils/retries.d.ts +12 -0
  184. package/lib/browser/utils/retries.js +26 -0
  185. package/lib/browser/utils/signatures/eth.d.ts +2 -0
  186. package/lib/browser/utils/signatures/eth.js +31 -0
  187. package/lib/browser/utils/signatures/index.d.ts +5 -0
  188. package/lib/browser/utils/signatures/index.js +12 -0
  189. package/lib/browser/utils/socket-base.d.ts +23 -0
  190. package/lib/browser/utils/socket-base.js +96 -0
  191. package/lib/browser/utils/tls-imports.d.ts +21 -0
  192. package/lib/browser/utils/tls-imports.js +71 -0
  193. package/lib/browser/utils/tls.d.ts +2 -0
  194. package/lib/browser/utils/tls.js +58 -0
  195. package/lib/browser/utils/ws.d.ts +7 -0
  196. package/lib/browser/utils/ws.js +22 -0
  197. package/lib/browser/utils/zk.d.ts +71 -0
  198. package/lib/browser/utils/zk.js +625 -0
  199. package/lib/client/create-claim.d.ts +2 -2
  200. package/lib/client/create-claim.js +437 -400
  201. package/lib/client/index.d.ts +3 -3
  202. package/lib/client/index.js +3 -20
  203. package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +2 -2
  204. package/lib/client/tunnels/make-rpc-tcp-tunnel.js +49 -56
  205. package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +4 -3
  206. package/lib/client/tunnels/make-rpc-tls-tunnel.js +123 -131
  207. package/lib/client/utils/attestor-pool.d.ts +3 -1
  208. package/lib/client/utils/attestor-pool.js +21 -25
  209. package/lib/client/utils/client-socket.d.ts +4 -4
  210. package/lib/client/utils/client-socket.js +114 -94
  211. package/lib/client/utils/message-handler.d.ts +2 -2
  212. package/lib/client/utils/message-handler.js +89 -86
  213. package/lib/config/index.d.ts +6 -3
  214. package/lib/config/index.js +60 -37
  215. package/lib/external-rpc/benchmark.d.ts +1 -0
  216. package/lib/external-rpc/benchmark.js +82 -0
  217. package/lib/external-rpc/event-bus.d.ts +7 -0
  218. package/lib/external-rpc/event-bus.js +17 -0
  219. package/lib/external-rpc/global.d.js +0 -0
  220. package/lib/external-rpc/handle-incoming-msg.d.ts +2 -0
  221. package/lib/external-rpc/handle-incoming-msg.js +241 -0
  222. package/lib/external-rpc/index.d.ts +3 -0
  223. package/lib/external-rpc/index.js +3 -0
  224. package/lib/external-rpc/jsc-polyfills/1.d.ts +14 -0
  225. package/lib/external-rpc/jsc-polyfills/1.js +80 -0
  226. package/lib/external-rpc/jsc-polyfills/2.js +15 -0
  227. package/lib/external-rpc/jsc-polyfills/event.d.ts +10 -0
  228. package/lib/external-rpc/jsc-polyfills/event.js +19 -0
  229. package/lib/external-rpc/jsc-polyfills/index.d.ts +2 -0
  230. package/lib/external-rpc/jsc-polyfills/index.js +2 -0
  231. package/lib/external-rpc/jsc-polyfills/ws.d.ts +21 -0
  232. package/lib/external-rpc/jsc-polyfills/ws.js +83 -0
  233. package/lib/external-rpc/setup-browser.d.ts +6 -0
  234. package/lib/external-rpc/setup-browser.js +33 -0
  235. package/lib/external-rpc/setup-jsc.d.ts +24 -0
  236. package/lib/external-rpc/setup-jsc.js +22 -0
  237. package/lib/external-rpc/types.d.ts +213 -0
  238. package/lib/external-rpc/types.js +0 -0
  239. package/lib/external-rpc/utils.d.ts +20 -0
  240. package/lib/external-rpc/utils.js +100 -0
  241. package/lib/external-rpc/zk.d.ts +14 -0
  242. package/lib/external-rpc/zk.js +58 -0
  243. package/lib/index.browser.d.ts +9 -0
  244. package/lib/index.d.ts +8 -9
  245. package/lib/index.js +12 -49
  246. package/lib/mechain/abis/governanceABI.js +460 -461
  247. package/lib/mechain/abis/taskABI.js +505 -506
  248. package/lib/mechain/client/create-claim-on-mechain.d.ts +3 -3
  249. package/lib/mechain/client/create-claim-on-mechain.js +31 -30
  250. package/lib/mechain/client/index.d.ts +1 -1
  251. package/lib/mechain/client/index.js +1 -18
  252. package/lib/mechain/constants/index.js +8 -7
  253. package/lib/mechain/index.d.ts +2 -2
  254. package/lib/mechain/index.js +2 -19
  255. package/lib/mechain/types/index.d.ts +2 -2
  256. package/lib/mechain/types/index.js +0 -3
  257. package/lib/proto/api.d.ts +182 -39
  258. package/lib/proto/api.js +4105 -3555
  259. package/lib/proto/tee-bundle.d.ts +156 -0
  260. package/lib/proto/tee-bundle.js +1296 -0
  261. package/lib/providers/http/index.d.ts +16 -1
  262. package/lib/providers/http/index.js +603 -576
  263. package/lib/providers/http/patch-parse5-tree.d.ts +6 -0
  264. package/lib/providers/http/patch-parse5-tree.js +34 -0
  265. package/lib/providers/http/utils.d.ts +7 -4
  266. package/lib/providers/http/utils.js +240 -317
  267. package/lib/providers/index.d.ts +1 -1
  268. package/lib/providers/index.js +5 -9
  269. package/lib/scripts/check-avs-registration.d.ts +1 -1
  270. package/lib/scripts/check-avs-registration.js +24 -25
  271. package/lib/scripts/fallbacks/crypto.d.ts +1 -0
  272. package/lib/scripts/fallbacks/crypto.js +4 -0
  273. package/lib/scripts/fallbacks/empty.d.ts +3 -0
  274. package/lib/scripts/fallbacks/empty.js +4 -0
  275. package/lib/scripts/fallbacks/gnark.d.ts +7 -0
  276. package/lib/scripts/fallbacks/gnark.js +15 -0
  277. package/lib/scripts/fallbacks/re2.d.ts +1 -0
  278. package/lib/scripts/fallbacks/re2.js +7 -0
  279. package/lib/scripts/fallbacks/snarkjs.d.ts +1 -0
  280. package/lib/scripts/fallbacks/snarkjs.js +10 -0
  281. package/lib/scripts/fallbacks/stwo.d.ts +6 -0
  282. package/lib/scripts/generate-provider-types.js +92 -73
  283. package/lib/scripts/generate-receipt.d.ts +2 -2
  284. package/lib/scripts/generate-receipt.js +94 -83
  285. package/lib/scripts/generate-toprf-keys.js +17 -16
  286. package/lib/scripts/jsc-cli-rpc.d.ts +1 -0
  287. package/lib/scripts/jsc-cli-rpc.js +35 -0
  288. package/lib/scripts/register-avs-operator.d.ts +1 -1
  289. package/lib/scripts/register-avs-operator.js +3 -7
  290. package/lib/scripts/start-server.d.ts +1 -1
  291. package/lib/scripts/start-server.js +9 -11
  292. package/lib/scripts/update-avs-metadata.d.ts +1 -1
  293. package/lib/scripts/update-avs-metadata.js +17 -19
  294. package/lib/scripts/utils.js +8 -9
  295. package/lib/scripts/whitelist-operator.d.ts +1 -1
  296. package/lib/scripts/whitelist-operator.js +13 -15
  297. package/lib/server/create-server.d.ts +3 -2
  298. package/lib/server/create-server.js +98 -85
  299. package/lib/server/handlers/claimTeeBundle.d.ts +6 -0
  300. package/lib/server/handlers/claimTeeBundle.js +232 -0
  301. package/lib/server/handlers/claimTunnel.d.ts +1 -1
  302. package/lib/server/handlers/claimTunnel.js +75 -73
  303. package/lib/server/handlers/completeClaimOnChain.d.ts +1 -1
  304. package/lib/server/handlers/completeClaimOnChain.js +27 -26
  305. package/lib/server/handlers/createClaimOnChain.d.ts +1 -1
  306. package/lib/server/handlers/createClaimOnChain.js +30 -29
  307. package/lib/server/handlers/createTaskOnMechain.d.ts +1 -1
  308. package/lib/server/handlers/createTaskOnMechain.js +54 -49
  309. package/lib/server/handlers/createTunnel.d.ts +1 -1
  310. package/lib/server/handlers/createTunnel.js +91 -94
  311. package/lib/server/handlers/disconnectTunnel.d.ts +1 -1
  312. package/lib/server/handlers/disconnectTunnel.js +6 -8
  313. package/lib/server/handlers/fetchCertificateBytes.d.ts +2 -0
  314. package/lib/server/handlers/fetchCertificateBytes.js +57 -0
  315. package/lib/server/handlers/index.d.ts +1 -1
  316. package/lib/server/handlers/index.js +24 -21
  317. package/lib/server/handlers/init.d.ts +1 -1
  318. package/lib/server/handlers/init.js +31 -34
  319. package/lib/server/handlers/toprf.d.ts +1 -1
  320. package/lib/server/handlers/toprf.js +17 -19
  321. package/lib/server/index.d.ts +4 -4
  322. package/lib/server/index.js +4 -21
  323. package/lib/server/socket.d.ts +7 -7
  324. package/lib/server/socket.js +104 -106
  325. package/lib/server/tunnels/make-tcp-tunnel.d.ts +5 -3
  326. package/lib/server/tunnels/make-tcp-tunnel.js +189 -162
  327. package/lib/server/utils/apm.d.ts +1 -1
  328. package/lib/server/utils/apm.js +26 -40
  329. package/lib/server/utils/assert-valid-claim-request.d.ts +6 -5
  330. package/lib/server/utils/assert-valid-claim-request.js +339 -185
  331. package/lib/server/utils/config-env.js +4 -7
  332. package/lib/server/utils/dns.js +18 -16
  333. package/lib/server/utils/gcp-attestation.d.ts +17 -0
  334. package/lib/server/utils/gcp-attestation.js +237 -0
  335. package/lib/server/utils/generics.d.ts +3 -3
  336. package/lib/server/utils/generics.js +37 -51
  337. package/lib/server/utils/iso.js +255 -256
  338. package/lib/server/utils/keep-alive.d.ts +2 -2
  339. package/lib/server/utils/keep-alive.js +36 -40
  340. package/lib/server/utils/nitro-attestation.d.ts +33 -0
  341. package/lib/server/utils/nitro-attestation.js +249 -0
  342. package/lib/server/utils/oprf-raw.d.ts +21 -0
  343. package/lib/server/utils/oprf-raw.js +61 -0
  344. package/lib/server/utils/process-handshake.d.ts +3 -3
  345. package/lib/server/utils/process-handshake.js +217 -175
  346. package/lib/server/utils/proxy-session.d.ts +1 -0
  347. package/lib/server/utils/proxy-session.js +4 -0
  348. package/lib/server/utils/tee-oprf-mpc-verification.d.ts +16 -0
  349. package/lib/server/utils/tee-oprf-mpc-verification.js +86 -0
  350. package/lib/server/utils/tee-oprf-verification.d.ts +24 -0
  351. package/lib/server/utils/tee-oprf-verification.js +151 -0
  352. package/lib/server/utils/tee-transcript-reconstruction.d.ts +24 -0
  353. package/lib/server/utils/tee-transcript-reconstruction.js +140 -0
  354. package/lib/server/utils/tee-verification.d.ts +28 -0
  355. package/lib/server/utils/tee-verification.js +358 -0
  356. package/lib/{utils → server/utils}/validation.d.ts +1 -1
  357. package/lib/server/utils/validation.js +45 -0
  358. package/lib/types/bgp.js +0 -3
  359. package/lib/types/claims.d.ts +7 -10
  360. package/lib/types/claims.js +0 -3
  361. package/lib/types/client.d.ts +5 -5
  362. package/lib/types/client.js +0 -3
  363. package/lib/types/general.d.ts +30 -4
  364. package/lib/types/general.js +0 -3
  365. package/lib/types/handlers.d.ts +3 -3
  366. package/lib/types/handlers.js +0 -3
  367. package/lib/types/index.d.ts +10 -10
  368. package/lib/types/index.js +10 -27
  369. package/lib/types/providers.d.ts +15 -4
  370. package/lib/types/providers.gen.d.ts +15 -1
  371. package/lib/types/providers.gen.js +15 -13
  372. package/lib/types/providers.js +0 -3
  373. package/lib/types/rpc.d.ts +2 -2
  374. package/lib/types/rpc.js +0 -3
  375. package/lib/types/signatures.js +0 -3
  376. package/lib/types/tunnel.d.ts +2 -2
  377. package/lib/types/tunnel.js +0 -3
  378. package/lib/types/zk.d.ts +17 -2
  379. package/lib/types/zk.js +0 -3
  380. package/lib/utils/auth.d.ts +2 -1
  381. package/lib/utils/auth.js +66 -59
  382. package/lib/utils/b64-json.js +13 -19
  383. package/lib/utils/bgp-listener.d.ts +1 -1
  384. package/lib/utils/bgp-listener.js +111 -114
  385. package/lib/utils/claims.d.ts +3 -3
  386. package/lib/utils/claims.js +78 -101
  387. package/lib/utils/env.js +15 -16
  388. package/lib/utils/error.d.ts +6 -7
  389. package/lib/utils/error.js +50 -39
  390. package/lib/utils/generics.d.ts +20 -13
  391. package/lib/utils/generics.js +221 -297
  392. package/lib/utils/http-parser.d.ts +1 -1
  393. package/lib/utils/http-parser.js +186 -237
  394. package/lib/utils/index.browser.d.ts +13 -0
  395. package/lib/utils/index.d.ts +14 -12
  396. package/lib/utils/index.js +14 -29
  397. package/lib/utils/logger.browser.d.ts +14 -0
  398. package/lib/utils/logger.d.ts +1 -1
  399. package/lib/utils/logger.js +69 -87
  400. package/lib/utils/prepare-packets.d.ts +3 -3
  401. package/lib/utils/prepare-packets.js +66 -58
  402. package/lib/utils/redactions.d.ts +20 -1
  403. package/lib/utils/redactions.js +116 -129
  404. package/lib/utils/retries.d.ts +1 -1
  405. package/lib/utils/retries.js +24 -26
  406. package/lib/utils/signatures/eth.d.ts +1 -1
  407. package/lib/utils/signatures/eth.js +28 -30
  408. package/lib/utils/signatures/index.d.ts +3 -3
  409. package/lib/utils/signatures/index.js +11 -10
  410. package/lib/utils/socket-base.d.ts +6 -5
  411. package/lib/utils/socket-base.js +89 -88
  412. package/lib/utils/tls-imports.d.ts +21 -0
  413. package/lib/utils/tls-imports.js +71 -0
  414. package/lib/utils/tls.d.ts +1 -1
  415. package/lib/utils/tls.js +54 -28
  416. package/lib/utils/ws.d.ts +1 -6
  417. package/lib/utils/ws.js +17 -33
  418. package/lib/utils/zk.d.ts +28 -12
  419. package/lib/utils/zk.js +587 -406
  420. package/package.json +79 -60
  421. package/lib/avs/tests/test.operator.d.ts +0 -11
  422. package/lib/avs/tests/test.operator.js +0 -313
  423. package/lib/avs/tests/utils.d.ts +0 -2
  424. package/lib/avs/tests/utils.js +0 -50
  425. package/lib/scripts/verify-root-ca.d.ts +0 -1
  426. package/lib/scripts/verify-root-ca.js +0 -51
  427. package/lib/tests/describe-with-server.d.ts +0 -20
  428. package/lib/tests/describe-with-server.js +0 -64
  429. package/lib/tests/mock-provider-server.d.ts +0 -13
  430. package/lib/tests/mock-provider-server.js +0 -65
  431. package/lib/tests/mocks.d.ts +0 -4
  432. package/lib/tests/mocks.js +0 -23
  433. package/lib/tests/test.auth.js +0 -75
  434. package/lib/tests/test.bgp-listener.js +0 -169
  435. package/lib/tests/test.claim-creation.js +0 -280
  436. package/lib/tests/test.http-parser.d.ts +0 -1
  437. package/lib/tests/test.http-parser.js +0 -120
  438. package/lib/tests/test.http-provider-utils.js +0 -2416
  439. package/lib/tests/test.http-provider.js +0 -114
  440. package/lib/tests/test.rpc-communication.d.ts +0 -1
  441. package/lib/tests/test.rpc-communication.js +0 -64
  442. package/lib/tests/test.rpc-tunnel.d.ts +0 -1
  443. package/lib/tests/test.rpc-tunnel.js +0 -172
  444. package/lib/tests/test.signatures.d.ts +0 -1
  445. package/lib/tests/test.signatures.js +0 -24
  446. package/lib/tests/test.tcp-tunnel.d.ts +0 -1
  447. package/lib/tests/test.tcp-tunnel.js +0 -64
  448. package/lib/tests/test.zk.d.ts +0 -1
  449. package/lib/tests/test.zk.js +0 -337
  450. package/lib/tests/utils.d.ts +0 -18
  451. package/lib/tests/utils.js +0 -64
  452. package/lib/utils/atomic-operations.d.ts +0 -24
  453. package/lib/utils/atomic-operations.js +0 -65
  454. package/lib/utils/benchmark.d.ts +0 -1
  455. package/lib/utils/benchmark.js +0 -70
  456. package/lib/utils/connection-state-machine.d.ts +0 -43
  457. package/lib/utils/connection-state-machine.js +0 -129
  458. package/lib/utils/resource-monitor.d.ts +0 -61
  459. package/lib/utils/resource-monitor.js +0 -107
  460. package/lib/utils/validation.js +0 -46
  461. package/lib/window-rpc/index.d.ts +0 -3
  462. package/lib/window-rpc/index.js +0 -20
  463. package/lib/window-rpc/setup-window-rpc.d.ts +0 -5
  464. package/lib/window-rpc/setup-window-rpc.js +0 -291
  465. package/lib/window-rpc/types.js +0 -3
  466. package/lib/window-rpc/utils.d.ts +0 -14
  467. package/lib/window-rpc/utils.js +0 -102
  468. package/lib/window-rpc/window-rpc-zk.d.ts +0 -15
  469. package/lib/window-rpc/window-rpc-zk.js +0 -85
  470. /package/lib/{tests/test.auth.d.ts → browser/external-rpc/jsc-polyfills/2.d.ts} +0 -0
  471. /package/lib/{tests/test.bgp-listener.d.ts → external-rpc/jsc-polyfills/2.d.ts} +0 -0
  472. /package/lib/{tests/test.claim-creation.d.ts → scripts/build-browser.d.ts} +0 -0
  473. /package/lib/{tests/test.http-provider-utils.d.ts → scripts/build-jsc.d.ts} +0 -0
  474. /package/lib/{tests/test.http-provider.d.ts → scripts/build-lib.d.ts} +0 -0
@@ -1,78 +1,80 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.claimTunnel = void 0;
4
- const config_1 = require("../../config");
5
- const api_1 = require("../../proto/api");
6
- const apm_1 = require("../../server/utils/apm");
7
- const assert_valid_claim_request_1 = require("../../server/utils/assert-valid-claim-request");
8
- const generics_1 = require("../../server/utils/generics");
9
- const utils_1 = require("../../utils");
1
+ import { MAX_CLAIM_TIMESTAMP_DIFF_S } from "../../config/index.js";
2
+ import { ClaimTunnelResponse } from "../../proto/api.js";
3
+ import { getApm } from "../../server/utils/apm.js";
4
+ import { assertTranscriptsMatch, assertValidClaimRequest } from "../../server/utils/assert-valid-claim-request.js";
5
+ import { getAttestorAddress, signAsAttestor } from "../../server/utils/generics.js";
6
+ import { AttestorError, createSignDataForClaim, getIdentifierFromClaimInfo, unixTimestampSeconds } from "../../utils/index.js";
10
7
  const claimTunnel = async (claimRequest, { tx, logger, client }) => {
11
- var _a, _b, _c, _d;
12
- const { request, data: { timestampS } = {}, } = claimRequest;
13
- const tunnel = client.getTunnel(request === null || request === void 0 ? void 0 : request.id);
14
- try {
15
- await tunnel.close();
16
- }
17
- catch (err) {
18
- logger.debug({ err }, 'error closing tunnel');
19
- }
20
- if (tx) {
21
- const transcriptBytes = tunnel.transcript.reduce((acc, { message }) => acc + message.length, 0);
22
- tx === null || tx === void 0 ? void 0 : tx.setLabel('transcriptBytes', transcriptBytes.toString());
8
+ const {
9
+ request,
10
+ data: { timestampS } = {}
11
+ } = claimRequest;
12
+ const tunnel = client.getTunnel(request?.id);
13
+ try {
14
+ await tunnel.close();
15
+ } catch (err) {
16
+ logger.debug({ err }, "error closing tunnel");
17
+ }
18
+ if (tx) {
19
+ const transcriptBytes = tunnel.transcript.reduce(
20
+ (acc, { message }) => acc + message.length,
21
+ 0
22
+ );
23
+ tx?.setLabel("transcriptBytes", transcriptBytes.toString());
24
+ }
25
+ if (tunnel.createRequest?.host !== request?.host || tunnel.createRequest?.port !== request?.port || tunnel.createRequest?.geoLocation !== request?.geoLocation || tunnel.createRequest?.proxySessionId !== request?.proxySessionId) {
26
+ throw AttestorError.badRequest("Tunnel request does not match");
27
+ }
28
+ assertTranscriptsMatch(claimRequest.transcript, tunnel.transcript);
29
+ const res = ClaimTunnelResponse.create({ request: claimRequest });
30
+ try {
31
+ const now = unixTimestampSeconds();
32
+ if (Math.floor(timestampS - now) > MAX_CLAIM_TIMESTAMP_DIFF_S) {
33
+ throw new AttestorError(
34
+ "ERROR_INVALID_CLAIM",
35
+ `Timestamp provided ${timestampS} is too far off. Current time is ${now}`
36
+ );
23
37
  }
24
- // we throw an error for cases where the attestor cannot prove
25
- // the user's request is faulty. For eg. if the user sends a
26
- // "createRequest" that does not match the tunnel's actual
27
- // create request -- the attestor cannot prove that the user
28
- // is lying. In such cases, we throw a bad request error.
29
- // Same goes for matching the transcript.
30
- if (((_a = tunnel.createRequest) === null || _a === void 0 ? void 0 : _a.host) !== (request === null || request === void 0 ? void 0 : request.host)
31
- || ((_b = tunnel.createRequest) === null || _b === void 0 ? void 0 : _b.port) !== (request === null || request === void 0 ? void 0 : request.port)
32
- || ((_c = tunnel.createRequest) === null || _c === void 0 ? void 0 : _c.geoLocation) !== (request === null || request === void 0 ? void 0 : request.geoLocation)) {
33
- throw utils_1.AttestorError.badRequest('Tunnel request does not match');
34
- }
35
- (0, assert_valid_claim_request_1.assertTranscriptsMatch)(claimRequest.transcript, tunnel.transcript);
36
- const res = api_1.ClaimTunnelResponse.create({ request: claimRequest });
38
+ const assertTx = getApm()?.startTransaction("assertValidClaimRequest", { childOf: tx });
37
39
  try {
38
- const now = (0, utils_1.unixTimestampSeconds)();
39
- if (Math.floor(timestampS - now) > config_1.MAX_CLAIM_TIMESTAMP_DIFF_S) {
40
- throw new utils_1.AttestorError('ERROR_INVALID_CLAIM', `Timestamp provided ${timestampS} is too far off. Current time is ${now}`);
41
- }
42
- const assertTx = (_d = (0, apm_1.getApm)()) === null || _d === void 0 ? void 0 : _d.startTransaction('assertValidClaimRequest', { childOf: tx });
43
- try {
44
- const claim = await (0, assert_valid_claim_request_1.assertValidClaimRequest)(claimRequest, client.metadata, logger);
45
- res.claim = {
46
- ...claim,
47
- identifier: (0, utils_1.getIdentifierFromClaimInfo)(claim),
48
- // hardcode for compatibility with V1 claims
49
- epoch: 1
50
- };
51
- }
52
- catch (err) {
53
- assertTx === null || assertTx === void 0 ? void 0 : assertTx.setOutcome('failure');
54
- throw err;
55
- }
56
- finally {
57
- assertTx === null || assertTx === void 0 ? void 0 : assertTx.end();
58
- }
59
- }
60
- catch (err) {
61
- logger.error({ err }, 'invalid claim request');
62
- const attestorErr = utils_1.AttestorError.fromError(err);
63
- attestorErr.code = 'ERROR_INVALID_CLAIM';
64
- res.error = attestorErr.toProto();
40
+ const claim = await assertValidClaimRequest(
41
+ claimRequest,
42
+ client.metadata,
43
+ logger
44
+ );
45
+ res.claim = {
46
+ ...claim,
47
+ identifier: getIdentifierFromClaimInfo(claim),
48
+ // hardcode for compatibility with V1 claims
49
+ epoch: 1
50
+ };
51
+ } catch (err) {
52
+ assertTx?.setOutcome("failure");
53
+ throw err;
54
+ } finally {
55
+ assertTx?.end();
65
56
  }
66
- res.signatures = {
67
- attestorAddress: (0, generics_1.getAttestorAddress)(client.metadata.signatureType),
68
- claimSignature: res.claim
69
- ? await (0, generics_1.signAsAttestor)((0, utils_1.createSignDataForClaim)(res.claim), client.metadata.signatureType)
70
- : new Uint8Array(),
71
- resultSignature: await (0, generics_1.signAsAttestor)(api_1.ClaimTunnelResponse.encode(res).finish(), client.metadata.signatureType)
72
- };
73
- // remove tunnel from client -- to free up our mem
74
- client.removeTunnel(request.id);
75
- return res;
57
+ } catch (err) {
58
+ logger.error({ err }, "invalid claim request");
59
+ const attestorErr = AttestorError.fromError(err, "ERROR_INVALID_CLAIM");
60
+ res.error = attestorErr.toProto();
61
+ }
62
+ res.signatures = {
63
+ attestorAddress: getAttestorAddress(
64
+ client.metadata.signatureType
65
+ ),
66
+ claimSignature: res.claim ? await signAsAttestor(
67
+ createSignDataForClaim(res.claim),
68
+ client.metadata.signatureType
69
+ ) : new Uint8Array(),
70
+ resultSignature: await signAsAttestor(
71
+ ClaimTunnelResponse.encode(res).finish(),
72
+ client.metadata.signatureType
73
+ )
74
+ };
75
+ client.removeTunnel(request.id);
76
+ return res;
77
+ };
78
+ export {
79
+ claimTunnel
76
80
  };
77
- exports.claimTunnel = claimTunnel;
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW1UdW5uZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmVyL2hhbmRsZXJzL2NsYWltVHVubmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQUF1RDtBQUN2RCx1Q0FBbUQ7QUFDbkQsOENBQTZDO0FBQzdDLDRGQUE2RztBQUM3Ryx3REFBOEU7QUFFOUUscUNBQW1IO0FBRTVHLE1BQU0sV0FBVyxHQUE4QixLQUFLLEVBQzFELFlBQVksRUFDWixFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQ3JCLEVBQUU7O0lBQ0gsTUFBTSxFQUNMLE9BQU8sRUFDUCxJQUFJLEVBQUUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQ3pCLEdBQUcsWUFBWSxDQUFBO0lBQ2hCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEVBQUcsQ0FBQyxDQUFBO0lBQzdDLElBQUksQ0FBQztRQUNKLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3JCLENBQUM7SUFBQyxPQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLHNCQUFzQixDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUVELElBQUcsRUFBRSxFQUFFLENBQUM7UUFDUCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FDL0MsQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQzFDLENBQUMsQ0FDRCxDQUFBO1FBQ0QsRUFBRSxhQUFGLEVBQUUsdUJBQUYsRUFBRSxDQUFFLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUM1RCxDQUFDO0lB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
@@ -1,2 +1,2 @@
1
- import { RPCHandler } from '../../types';
1
+ import type { RPCHandler } from '#src/types/index.ts';
2
2
  export declare const completeClaimOnChain: RPCHandler<'completeClaimOnChain'>;
@@ -1,28 +1,29 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.completeClaimOnChain = void 0;
4
- const contracts_1 = require("../../avs/utils/contracts");
5
- const utils_1 = require("../../utils");
6
- const env_1 = require("../../utils/env");
7
- const ACCEPT_CLAIM_PAYMENT_REQUESTS = (0, env_1.getEnvVariable)('ACCEPT_CLAIM_PAYMENT_REQUESTS') === '1';
1
+ import { EventLog } from "ethers";
2
+ import { getContracts } from "../../avs/utils/contracts.js";
3
+ import { getEnvVariable } from "../../utils/env.js";
4
+ import { AttestorError, ethersStructToPlainObject } from "../../utils/index.js";
5
+ const ACCEPT_CLAIM_PAYMENT_REQUESTS = getEnvVariable("ACCEPT_CLAIM_PAYMENT_REQUESTS") === "1";
8
6
  const completeClaimOnChain = async ({ chainId: chainIdNum, taskIndex, completedTaskJson }) => {
9
- var _a;
10
- if (!ACCEPT_CLAIM_PAYMENT_REQUESTS) {
11
- throw new utils_1.AttestorError('ERROR_PAYMENT_REFUSED', 'Payment requests are not accepted at this time');
12
- }
13
- const chainId = chainIdNum.toString();
14
- const { contract } = (0, contracts_1.getContracts)(chainId.toString());
15
- const task = JSON.parse(completedTaskJson);
16
- const tx = await contract.taskCompleted(task, taskIndex);
17
- const rslt = await tx.wait();
18
- // check task created event was emitted
19
- const ev = (_a = rslt.events) === null || _a === void 0 ? void 0 : _a[0];
20
- const obj = ev === null || ev === void 0 ? void 0 : ev.args;
21
- const plainObj = (0, utils_1.ethersStructToPlainObject)(obj);
22
- return {
23
- txHash: rslt.transactionHash,
24
- taskCompletedObjectJson: JSON.stringify(plainObj)
25
- };
7
+ if (!ACCEPT_CLAIM_PAYMENT_REQUESTS) {
8
+ throw new AttestorError(
9
+ "ERROR_PAYMENT_REFUSED",
10
+ "Payment requests are not accepted at this time"
11
+ );
12
+ }
13
+ const chainId = chainIdNum.toString();
14
+ const { contract } = getContracts(chainId.toString());
15
+ const task = JSON.parse(completedTaskJson);
16
+ const tx = await contract.taskCompleted(task, taskIndex);
17
+ const rslt = await tx.wait();
18
+ const logs = rslt?.logs ?? [];
19
+ const eventLogs = logs.filter((log) => log instanceof EventLog);
20
+ const obj = eventLogs[0]?.args;
21
+ const plainObj = ethersStructToPlainObject(obj);
22
+ return {
23
+ txHash: rslt?.hash ?? "",
24
+ taskCompletedObjectJson: JSON.stringify(plainObj)
25
+ };
26
+ };
27
+ export {
28
+ completeClaimOnChain
26
29
  };
27
- exports.completeClaimOnChain = completeClaimOnChain;
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGVDbGFpbU9uQ2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmVyL2hhbmRsZXJzL2NvbXBsZXRlQ2xhaW1PbkNoYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVEQUFzRDtBQUV0RCxxQ0FBb0U7QUFDcEUsdUNBQThDO0FBRTlDLE1BQU0sNkJBQTZCLEdBQUcsSUFBQSxvQkFBYyxFQUFDLCtCQUErQixDQUFDLEtBQUssR0FBRyxDQUFBO0FBRXRGLE1BQU0sb0JBQW9CLEdBQXVDLEtBQUssRUFDNUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxFQUNwRCxFQUFFOztJQUNILElBQUcsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxxQkFBYSxDQUN0Qix1QkFBdUIsRUFDdkIsZ0RBQWdELENBQ2hELENBQUE7SUFDRixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3JDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFBLHdCQUFZLEVBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDckQsTUFBTSxJQUFJLEdBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQ2hDLE1BQU0sRUFBRSxHQUFHLE1BQU0sUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDeEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7SUFFNUIsdUNBQXVDO0lBQ3ZDLE1BQU0sRUFBRSxHQUFHLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUcsQ0FBQyxDQUFDLENBQUE7SUFDM0IsTUFBTSxHQUFHLEdBQUcsRUFBRSxhQUFGLEVBQUUsdUJBQUYsRUFBRSxDQUFFLElBQTJDLENBQUE7SUFFM0QsTUFBTSxRQUFRLEdBQUcsSUFBQSxpQ0FBeUIsRUFBQyxHQUFHLENBQUMsQ0FBQTtJQUUvQyxPQUFPO1FBQ04sTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlO1FBQzVCLHVCQUF1QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0tBQ2pELENBQUE7QUFDRixDQUFDLENBQUE7QUEzQlksUUFBQSxvQkFBb0Isd0JBMkJoQyJ9
@@ -1,2 +1,2 @@
1
- import { RPCHandler } from '../../types';
1
+ import type { RPCHandler } from '#src/types/index.ts';
2
2
  export declare const createClaimOnChain: RPCHandler<'createClaimOnChain'>;
@@ -1,31 +1,32 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createClaimOnChain = void 0;
4
- const contracts_1 = require("../../avs/utils/contracts");
5
- const tasks_1 = require("../../avs/utils/tasks");
6
- const utils_1 = require("../../utils");
7
- const env_1 = require("../../utils/env");
8
- const ACCEPT_CLAIM_PAYMENT_REQUESTS = (0, env_1.getEnvVariable)('ACCEPT_CLAIM_PAYMENT_REQUESTS') === '1';
1
+ import { getContracts } from "../../avs/utils/contracts.js";
2
+ import { createNewClaimRequestOnChain } from "../../avs/utils/tasks.js";
3
+ import { getEnvVariable } from "../../utils/env.js";
4
+ import { AttestorError, ethersStructToPlainObject } from "../../utils/index.js";
5
+ const ACCEPT_CLAIM_PAYMENT_REQUESTS = getEnvVariable("ACCEPT_CLAIM_PAYMENT_REQUESTS") === "1";
9
6
  const createClaimOnChain = async ({ chainId: chainIdNum, jsonCreateClaimRequest, requestSignature }) => {
10
- if (!ACCEPT_CLAIM_PAYMENT_REQUESTS) {
11
- throw new utils_1.AttestorError('ERROR_PAYMENT_REFUSED', 'Payment requests are not accepted at this time');
12
- }
13
- const chainId = chainIdNum.toString();
14
- const { wallet } = (0, contracts_1.getContracts)(chainId.toString());
15
- const request = JSON.parse(jsonCreateClaimRequest);
16
- const { task, tx } = await (0, tasks_1.createNewClaimRequestOnChain)({
17
- request,
18
- owner: request.owner,
19
- payer: wallet,
20
- chainId,
21
- requestSignature: requestSignature
22
- });
23
- const plainTask = (0, utils_1.ethersStructToPlainObject)(task);
24
- return {
25
- txHash: tx.transactionHash,
26
- taskIndex: task.taskIndex,
27
- jsonTask: JSON.stringify(plainTask)
28
- };
7
+ if (!ACCEPT_CLAIM_PAYMENT_REQUESTS) {
8
+ throw new AttestorError(
9
+ "ERROR_PAYMENT_REFUSED",
10
+ "Payment requests are not accepted at this time"
11
+ );
12
+ }
13
+ const chainId = chainIdNum.toString();
14
+ const { wallet } = getContracts(chainId.toString());
15
+ const request = JSON.parse(jsonCreateClaimRequest);
16
+ const { task, tx } = await createNewClaimRequestOnChain({
17
+ request,
18
+ owner: request.owner,
19
+ payer: wallet,
20
+ chainId,
21
+ requestSignature
22
+ });
23
+ const plainTask = ethersStructToPlainObject(task);
24
+ return {
25
+ txHash: tx?.hash ?? "",
26
+ taskIndex: Number(task.taskIndex),
27
+ jsonTask: JSON.stringify(plainTask)
28
+ };
29
+ };
30
+ export {
31
+ createClaimOnChain
29
32
  };
30
- exports.createClaimOnChain = createClaimOnChain;
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlQ2xhaW1PbkNoYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci9oYW5kbGVycy9jcmVhdGVDbGFpbU9uQ2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsdURBQXNEO0FBQ3RELCtDQUFrRTtBQUVsRSxxQ0FBb0U7QUFDcEUsdUNBQThDO0FBRTlDLE1BQU0sNkJBQTZCLEdBQUcsSUFBQSxvQkFBYyxFQUFDLCtCQUErQixDQUFDLEtBQUssR0FBRyxDQUFBO0FBRXRGLE1BQU0sa0JBQWtCLEdBQXFDLEtBQUssRUFDeEUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLEVBQ2hFLEVBQUU7SUFDSCxJQUFHLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUkscUJBQWEsQ0FDdEIsdUJBQXVCLEVBQ3ZCLGdEQUFnRCxDQUNoRCxDQUFBO0lBQ0YsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUNyQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSx3QkFBWSxFQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ25ELE1BQU0sT0FBTyxHQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtJQUNyQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLE1BQU0sSUFBQSxvQ0FBNEIsRUFBQztRQUN2RCxPQUFPO1FBQ1AsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQ3BCLEtBQUssRUFBRSxNQUFPO1FBQ2QsT0FBTztRQUNQLGdCQUFnQixFQUFFLGdCQUFnQjtLQUNsQyxDQUFDLENBQUE7SUFFRixNQUFNLFNBQVMsR0FBRyxJQUFBLGlDQUF5QixFQUFDLElBQUksQ0FBQyxDQUFBO0lBRWpELE9BQU87UUFDTixNQUFNLEVBQUUsRUFBRSxDQUFDLGVBQWU7UUFDMUIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1FBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztLQUNuQyxDQUFBO0FBQ0YsQ0FBQyxDQUFBO0FBN0JZLFFBQUEsa0JBQWtCLHNCQTZCOUIifQ==
@@ -1,2 +1,2 @@
1
- import { RPCHandler } from '../../types';
1
+ import type { RPCHandler } from '#src/types/index.ts';
2
2
  export declare const createTaskOnMechain: RPCHandler<'createTaskOnMechain'>;
@@ -1,52 +1,57 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createTaskOnMechain = void 0;
4
- const ethers_1 = require("ethers");
5
- const governanceABI_1 = require("../../mechain/abis/governanceABI");
6
- const taskABI_1 = require("../../mechain/abis/taskABI");
7
- const constants_1 = require("../../mechain/constants");
8
- const env_1 = require("../../utils/env");
9
- const createTaskOnMechain = async ({ timestamp }) => {
10
- const { taskContract } = await getContracts();
11
- const seed = ethers_1.utils.randomBytes(32);
12
- // Perform a static call to fetch taskId and attestors for the next task
13
- const result = await taskContract.callStatic.createNewTaskRequest(seed, timestamp);
14
- const taskId = result[0];
15
- // Fetch requiredAttestors to determine how many proofs to request
16
- const requiredAttestors = await taskContract.requiredAttestors();
17
- const hosts = [];
18
- // Fetch attestors's WebSocket URI, e.g. wss://attestor.reclaimprotocol.org/ws
19
- for (let i = 0; i < requiredAttestors; i++) {
20
- hosts.push(result[1][i].host);
21
- }
22
- // Perform the call that was statically-called previously
23
- const tx = await taskContract.createNewTaskRequest(seed, timestamp);
24
- await tx.wait();
25
- return {
26
- taskId: taskId,
27
- requiredAttestors: requiredAttestors,
28
- hosts: hosts
29
- };
1
+ import { Contract, JsonRpcProvider, randomBytes, Wallet } from "ethers";
2
+ import { governanceABI } from "../../mechain/abis/governanceABI.js";
3
+ import { taskABI } from "../../mechain/abis/taskABI.js";
4
+ import { GOVERNANCE_CONTRACT_ADDRESS, RPC_URL, TASK_CONTRACT_ADDRESS } from "../../mechain/constants/index.js";
5
+ import { getEnvVariable } from "../../utils/env.js";
6
+ const createTaskOnMechain = async ({
7
+ timestamp
8
+ }) => {
9
+ const { taskContract } = await getContracts();
10
+ const seed = randomBytes(32);
11
+ const result = await taskContract.createNewTaskRequest.staticCall(
12
+ seed,
13
+ timestamp
14
+ );
15
+ const taskId = result[0];
16
+ const requiredAttestors = await taskContract.requiredAttestors();
17
+ const hosts = [];
18
+ for (let i = 0; i < requiredAttestors; i++) {
19
+ hosts.push(result[1][i].host);
20
+ }
21
+ const tx = await taskContract.createNewTaskRequest(seed, timestamp);
22
+ await tx.wait();
23
+ return {
24
+ taskId,
25
+ requiredAttestors,
26
+ hosts
27
+ };
30
28
  };
31
- exports.createTaskOnMechain = createTaskOnMechain;
32
29
  async function getContracts() {
33
- const privateKey = (0, env_1.getEnvVariable)('MECHAIN_PRIVATE_KEY');
34
- const taskContractAddress = (0, env_1.getEnvVariable)('TASK_CONTRACT_ADDRESS') || constants_1.TASK_CONTRACT_ADDRESS;
35
- const governanceContractAddress = (0, env_1.getEnvVariable)('GOVERNANCE_CONTRACT_ADDRESS') || constants_1.GOVERNANCE_CONTRACT_ADDRESS;
36
- if (!privateKey) {
37
- throw new Error('MECHAIN_PRIVATE_KEY environment variable is not set');
38
- }
39
- try {
40
- const provider = new ethers_1.providers.JsonRpcProvider(constants_1.RPC_URL);
41
- // Validate connection to provider
42
- await provider.getNetwork();
43
- const signer = new ethers_1.Wallet(privateKey, provider);
44
- const taskContract = new ethers_1.Contract(taskContractAddress, taskABI_1.taskABI, signer);
45
- const governanceContract = new ethers_1.Contract(governanceContractAddress, governanceABI_1.governanceABI, signer);
46
- return { taskContract, governanceContract };
47
- }
48
- catch (error) {
49
- throw new Error(`Failed to initialize contracts: ${error.message || error}`);
50
- }
30
+ const privateKey = getEnvVariable("MECHAIN_PRIVATE_KEY");
31
+ const taskContractAddress = getEnvVariable("TASK_CONTRACT_ADDRESS") || TASK_CONTRACT_ADDRESS;
32
+ const governanceContractAddress = getEnvVariable("GOVERNANCE_CONTRACT_ADDRESS") || GOVERNANCE_CONTRACT_ADDRESS;
33
+ if (!privateKey) {
34
+ throw new Error("MECHAIN_PRIVATE_KEY environment variable is not set");
35
+ }
36
+ try {
37
+ const provider = new JsonRpcProvider(RPC_URL);
38
+ await provider.getNetwork();
39
+ const signer = new Wallet(privateKey, provider);
40
+ const taskContract = new Contract(
41
+ taskContractAddress,
42
+ taskABI,
43
+ signer
44
+ );
45
+ const governanceContract = new Contract(
46
+ governanceContractAddress,
47
+ governanceABI,
48
+ signer
49
+ );
50
+ return { taskContract, governanceContract };
51
+ } catch (error) {
52
+ throw new Error(`Failed to initialize contracts: ${error.message || error}`);
53
+ }
51
54
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlVGFza09uTWVjaGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvaGFuZGxlcnMvY3JlYXRlVGFza09uTWVjaGFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBMkQ7QUFDM0Qsa0VBQThEO0FBQzlELHNEQUFrRDtBQUNsRCxxREFBbUc7QUFFbkcsdUNBQThDO0FBR3ZDLE1BQU0sbUJBQW1CLEdBQXNDLEtBQUssRUFBQyxFQUMzRSxTQUFTLEVBQ1QsRUFBRSxFQUFFO0lBRUosTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLE1BQU0sWUFBWSxFQUFFLENBQUE7SUFFN0MsTUFBTSxJQUFJLEdBQUcsY0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUVsQyx3RUFBd0U7SUFDeEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxZQUFZLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUNoRSxJQUFJLEVBQ0osU0FBUyxDQUNULENBQUE7SUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFXLENBQUE7SUFFbEMsa0VBQWtFO0lBQ2xFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtJQUVoRSxNQUFNLEtBQUssR0FBYyxFQUFFLENBQUE7SUFFM0IsOEVBQThFO0lBQzlFLEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFFRCx5REFBeUQ7SUFDekQsTUFBTSxFQUFFLEdBQUcsTUFBTSxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ25FLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFBO0lBRWYsT0FBTztRQUNOLE1BQU0sRUFBRSxNQUFNO1FBQ2QsaUJBQWlCLEVBQUUsaUJBQWlCO1FBQ3BDLEtBQUssRUFBRSxLQUFLO0tBQ1osQ0FBQTtBQUNGLENBQUMsQ0FBQTtBQW5DWSxRQUFBLG1CQUFtQix1QkFtQy9CO0FBRUQsS0FBSyxVQUFVLFlBQVk7SUFDMUIsTUFBTSxVQUFVLEdBQUcsSUFBQSxvQkFBYyxFQUFDLHFCQUFxQixDQUFDLENBQUE7SUFDeEQsTUFBTSxtQkFBbUIsR0FBRyxJQUFBLG9CQUFjLEVBQUMsdUJBQXVCLENBQUMsSUFBSSxpQ0FBcUIsQ0FBQTtJQUM1RixNQUFNLHlCQUF5QixHQUFHLElBQUEsb0JBQWMsRUFBQyw2QkFBNkIsQ0FBQyxJQUFJLHVDQUEyQixDQUFBO0lBRTlHLElBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUE7SUFDdkUsQ0FBQztJQUVELElBQUksQ0FBQztRQUNKLE1BQU0sUUFBUSxHQUFHLElBQUksa0JBQVMsQ0FBQyxlQUFlLENBQUMsbUJBQU8sQ0FBQyxDQUFBO1FBQ3ZELGtDQUFrQztRQUNsQyxNQUFNLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUUzQixNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFFL0MsTUFBTSxZQUFZLEdBQUcsSUFBSSxpQkFBUSxDQUNoQyxtQkFBbUIsRUFDbkIsaUJBQU8sRUFDUCxNQUFNLENBQ04sQ0FBQTtRQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxpQkFBUSxDQUN0Qyx5QkFBeUIsRUFDekIsNkJBQWEsRUFDYixNQUFNLENBQ04sQ0FBQTtRQUVELE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQTtJQUM1QyxDQUFDO0lBQUMsT0FBTSxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUM3RSxDQUFDO0FBRUYsQ0FBQyJ9
55
+ export {
56
+ createTaskOnMechain
57
+ };
@@ -1,2 +1,2 @@
1
- import { RPCHandler } from '../../types';
1
+ import type { RPCHandler } from '#src/types/index.ts';
2
2
  export declare const createTunnel: RPCHandler<'createTunnel'>;
@@ -1,101 +1,98 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createTunnel = void 0;
4
- const make_tcp_tunnel_1 = require("../../server/tunnels/make-tcp-tunnel");
5
- const apm_1 = require("../../server/utils/apm");
6
- const dns_1 = require("../../server/utils/dns");
7
- const utils_1 = require("../../utils");
1
+ import { makeTcpTunnel } from "../../server/tunnels/make-tcp-tunnel.js";
2
+ import { getApm } from "../../server/utils/apm.js";
3
+ import { resolveHostnames } from "../../server/utils/dns.js";
4
+ import { AttestorError } from "../../utils/index.js";
8
5
  const createTunnel = async ({ id, ...opts }, { tx, logger, client }) => {
9
- var _a, _b, _c;
10
- if (client.tunnels[id]) {
11
- throw utils_1.AttestorError.badRequest(`Tunnel "${id}" already exists`);
12
- }
13
- const allowedHosts = (_c = (_b = (_a = client.metadata) === null || _a === void 0 ? void 0 : _a.auth) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.hostWhitelist;
14
- if ((allowedHosts === null || allowedHosts === void 0 ? void 0 : allowedHosts.length) && !allowedHosts.includes(opts.host)) {
15
- throw utils_1.AttestorError.badRequest(`Host "${opts.host}" not allowed by auth request`);
16
- }
17
- let cancelBgp;
18
- const apm = (0, apm_1.getApm)();
19
- const sessionTx = apm === null || apm === void 0 ? void 0 : apm.startTransaction('tunnelConnection', { childOf: tx });
20
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.setLabel('tunnelId', id.toString());
21
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.setLabel('hostPort', `${opts.host}:${opts.port}`);
22
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.setLabel('geoLocation', opts.geoLocation);
23
- try {
24
- const tunnel = await (0, make_tcp_tunnel_1.makeTcpTunnel)({
25
- ...opts,
26
- logger,
27
- onMessage(message) {
28
- if (!client.isOpen) {
29
- logger.warn('client is closed, dropping message');
30
- return;
31
- }
32
- void client.sendMessage({
33
- tunnelMessage: {
34
- tunnelId: id,
35
- message
36
- }
37
- });
38
- },
39
- onClose(err) {
40
- cancelBgp === null || cancelBgp === void 0 ? void 0 : cancelBgp();
41
- if (err) {
42
- apm === null || apm === void 0 ? void 0 : apm.captureError(err, { parent: sessionTx });
43
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.setOutcome('failure');
44
- }
45
- else {
46
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.setOutcome('success');
47
- }
48
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.end();
49
- if (!client.isOpen) {
50
- return;
51
- }
52
- client.sendMessage({
53
- tunnelDisconnectEvent: {
54
- tunnelId: id,
55
- error: err
56
- ? utils_1.AttestorError
57
- .fromError(err)
58
- .toProto()
59
- : undefined
60
- }
61
- })
62
- .catch(err => {
63
- logger.error({ err }, 'failed to send tunnel disconnect event');
64
- });
65
- },
66
- });
67
- try {
68
- await checkForBgp(tunnel);
6
+ if (client.tunnels[id]) {
7
+ throw AttestorError.badRequest(`Tunnel "${id}" already exists`);
8
+ }
9
+ const allowedHosts = client.metadata?.auth?.data?.hostWhitelist;
10
+ if (allowedHosts?.length && !allowedHosts.includes(opts.host)) {
11
+ throw AttestorError.badRequest(
12
+ `Host "${opts.host}" not allowed by auth request`
13
+ );
14
+ }
15
+ let cancelBgp;
16
+ const apm = getApm();
17
+ const sessionTx = apm?.startTransaction("tunnelConnection", { childOf: tx });
18
+ sessionTx?.setLabel("tunnelId", id.toString());
19
+ sessionTx?.setLabel("hostPort", `${opts.host}:${opts.port}`);
20
+ sessionTx?.setLabel("geoLocation", opts.geoLocation);
21
+ sessionTx?.setLabel("proxySessionId", opts.proxySessionId);
22
+ try {
23
+ const tunnel = await makeTcpTunnel({
24
+ ...opts,
25
+ logger,
26
+ onMessage(message) {
27
+ if (!client.isOpen) {
28
+ logger.warn("client is closed, dropping message");
29
+ return;
69
30
  }
70
- catch (err) {
71
- logger.warn({ err, host: opts.host }, 'failed to start BGP overlap check');
31
+ return client.sendMessage({ tunnelMessage: { tunnelId: id, message } });
32
+ },
33
+ onClose(err) {
34
+ cancelBgp?.();
35
+ if (err) {
36
+ apm?.captureError(err, { parent: sessionTx });
37
+ sessionTx?.setOutcome("failure");
38
+ } else {
39
+ sessionTx?.setOutcome("success");
72
40
  }
73
- client.tunnels[id] = tunnel;
74
- return {};
75
- }
76
- catch (err) {
77
- apm === null || apm === void 0 ? void 0 : apm.captureError(err, { parent: sessionTx });
78
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.setOutcome('failure');
79
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.end();
80
- cancelBgp === null || cancelBgp === void 0 ? void 0 : cancelBgp();
81
- throw err;
82
- }
83
- async function checkForBgp(tunnel) {
84
- if (!client.bgpListener) {
85
- return;
41
+ sessionTx?.end();
42
+ if (!client.isOpen) {
43
+ return;
86
44
  }
87
- // listen to all IPs for the host -- in case any of them
88
- // has a BGP announcement overlap, we'll close the tunnel
89
- // so the user can retry
90
- const ips = await (0, dns_1.resolveHostnames)(opts.host);
91
- cancelBgp = client.bgpListener.onOverlap(ips, (info) => {
92
- logger.warn({ info, host: opts.host }, 'BGP announcement overlap detected');
93
- // track how many times we've seen a BGP overlap
94
- sessionTx === null || sessionTx === void 0 ? void 0 : sessionTx.addLabels({ bgpOverlap: true, ...info });
95
- void (tunnel === null || tunnel === void 0 ? void 0 : tunnel.close(new utils_1.AttestorError('ERROR_BGP_ANNOUNCEMENT_OVERLAP', `BGP announcement overlap detected for ${opts.host}`)));
45
+ client.sendMessage({
46
+ tunnelDisconnectEvent: {
47
+ tunnelId: id,
48
+ error: err ? AttestorError.fromError(err).toProto() : void 0
49
+ }
50
+ }).catch((err2) => {
51
+ logger.error(
52
+ { err: err2 },
53
+ "failed to send tunnel disconnect event"
54
+ );
96
55
  });
97
- logger.debug({ ips }, 'checking for BGP overlap');
56
+ }
57
+ });
58
+ try {
59
+ await checkForBgp(tunnel);
60
+ } catch (err) {
61
+ logger.warn(
62
+ { err, host: opts.host },
63
+ "failed to start BGP overlap check"
64
+ );
98
65
  }
66
+ client.tunnels[id] = tunnel;
67
+ return {};
68
+ } catch (err) {
69
+ apm?.captureError(err, { parent: sessionTx });
70
+ sessionTx?.setOutcome("failure");
71
+ sessionTx?.end();
72
+ cancelBgp?.();
73
+ throw err;
74
+ }
75
+ async function checkForBgp(tunnel) {
76
+ if (!client.bgpListener) {
77
+ return;
78
+ }
79
+ const ips = await resolveHostnames(opts.host);
80
+ cancelBgp = client.bgpListener.onOverlap(ips, (info) => {
81
+ logger.warn(
82
+ { info, host: opts.host },
83
+ "BGP announcement overlap detected"
84
+ );
85
+ sessionTx?.addLabels({ bgpOverlap: true, ...info });
86
+ void tunnel?.close(
87
+ new AttestorError(
88
+ "ERROR_BGP_ANNOUNCEMENT_OVERLAP",
89
+ `BGP announcement overlap detected for ${opts.host}`
90
+ )
91
+ );
92
+ });
93
+ logger.debug({ ips }, "checking for BGP overlap");
94
+ }
95
+ };
96
+ export {
97
+ createTunnel
99
98
  };
100
- exports.createTunnel = createTunnel;
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlVHVubmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZlci9oYW5kbGVycy9jcmVhdGVUdW5uZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0VBQWtFO0FBQ2xFLDhDQUE2QztBQUM3Qyw4Q0FBdUQ7QUFFdkQscUNBQXlDO0FBRWxDLE1BQU0sWUFBWSxHQUErQixLQUFLLEVBQzVELEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQ2YsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUNyQixFQUFFOztJQUNILElBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0scUJBQWEsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLENBQUE7SUFDaEUsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLE1BQUEsTUFBQSxNQUFBLE1BQU0sQ0FBQyxRQUFRLDBDQUFFLElBQUksMENBQUUsSUFBSSwwQ0FBRSxhQUFhLENBQUE7SUFDL0QsSUFBRyxDQUFBLFlBQVksYUFBWixZQUFZLHVCQUFaLFlBQVksQ0FBRSxNQUFNLEtBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzlELE1BQU0scUJBQWEsQ0FBQyxVQUFVLENBQzdCLFNBQVMsSUFBSSxDQUFDLElBQUksK0JBQStCLENBQ2pELENBQUE7SUFDRixDQUFDO0lBRUQsSUFBSSxTQUFtQyxDQUFBO0lBRXZDLE1BQU0sR0FBRyxHQUFHLElBQUEsWUFBTSxHQUFFLENBQUE7SUFDcEIsTUFBTSxTQUFTLEdBQUcsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDNUUsU0FBUyxhQUFULFNBQVMs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