@hyperweb/telescope 1.15.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 (382) hide show
  1. package/README.md +1529 -0
  2. package/main/build.js +183 -0
  3. package/main/builder.js +229 -0
  4. package/main/bundle.js +162 -0
  5. package/main/bundler.js +100 -0
  6. package/main/cli.js +71 -0
  7. package/main/cmds.js +28 -0
  8. package/main/commands/download.js +122 -0
  9. package/main/commands/generate.js +151 -0
  10. package/main/commands/install.js +143 -0
  11. package/main/commands/transpile.js +197 -0
  12. package/main/contracts/generate.js +31 -0
  13. package/main/contracts/install.js +107 -0
  14. package/main/contracts/message-composer.js +31 -0
  15. package/main/contracts/react-query.js +31 -0
  16. package/main/contracts/recoil.js +31 -0
  17. package/main/file.js +20 -0
  18. package/main/generators/create-aggregated-lcd-client.js +87 -0
  19. package/main/generators/create-all-stargate-clients.js +96 -0
  20. package/main/generators/create-amino-converters.js +43 -0
  21. package/main/generators/create-bundle.js +83 -0
  22. package/main/generators/create-cosmwasm-bundle.js +15 -0
  23. package/main/generators/create-custom-stargate-clients.js +100 -0
  24. package/main/generators/create-helpers.js +119 -0
  25. package/main/generators/create-index.js +75 -0
  26. package/main/generators/create-lcd-client-all.js +116 -0
  27. package/main/generators/create-lcd-client-scoped.js +89 -0
  28. package/main/generators/create-lcd-clients.js +78 -0
  29. package/main/generators/create-mcp-server.js +1853 -0
  30. package/main/generators/create-mobx-bundle.js +52 -0
  31. package/main/generators/create-msg-funcs.js +132 -0
  32. package/main/generators/create-pinia-store-bundle.js +50 -0
  33. package/main/generators/create-pinia-store.js +90 -0
  34. package/main/generators/create-query-funcs.js +133 -0
  35. package/main/generators/create-react-query-bundle.js +103 -0
  36. package/main/generators/create-registries.js +49 -0
  37. package/main/generators/create-root-readme.js +259 -0
  38. package/main/generators/create-rpc-msg-client-all.js +135 -0
  39. package/main/generators/create-rpc-msg-client-scoped.js +114 -0
  40. package/main/generators/create-rpc-msg-clients.js +116 -0
  41. package/main/generators/create-rpc-ops-bundle.js +119 -0
  42. package/main/generators/create-rpc-query-client-all.js +137 -0
  43. package/main/generators/create-rpc-query-client-scoped.js +110 -0
  44. package/main/generators/create-rpc-query-clients.js +198 -0
  45. package/main/generators/create-sdk-module-stargate-clients.js +95 -0
  46. package/main/generators/create-stargate-clients.js +96 -0
  47. package/main/generators/create-types.js +164 -0
  48. package/main/generators/customize-utils.js +50 -0
  49. package/main/helpers/__test__/internalTimestamp.js +49 -0
  50. package/main/helpers/__test__/internalTimestampBigint.js +45 -0
  51. package/main/helpers/binary-coder.js +535 -0
  52. package/main/helpers/decimals.js +111 -0
  53. package/main/helpers/external-comet.js +52 -0
  54. package/main/helpers/external-icjs.js +36 -0
  55. package/main/helpers/external.js +31 -0
  56. package/main/helpers/grpc-gateway.js +348 -0
  57. package/main/helpers/grpc-web.js +14 -0
  58. package/main/helpers/helper-func-types-interface.js +106 -0
  59. package/main/helpers/helper-func-types.js +93 -0
  60. package/main/helpers/index.js +38 -0
  61. package/main/helpers/internal-for-bigint.js +259 -0
  62. package/main/helpers/internal.js +240 -0
  63. package/main/helpers/json-safe.js +12 -0
  64. package/main/helpers/mobx.js +80 -0
  65. package/main/helpers/pinia-endpoint.js +20 -0
  66. package/main/helpers/react-query-hooks-icjs.js +223 -0
  67. package/main/helpers/react-query-hooks.js +258 -0
  68. package/main/helpers/react-query.js +93 -0
  69. package/main/helpers/registry-helper.js +229 -0
  70. package/main/helpers/types-helper.js +165 -0
  71. package/main/helpers/utf8-helper.js +146 -0
  72. package/main/helpers/varint.js +486 -0
  73. package/main/helpers/vue-query-hooks.js +226 -0
  74. package/main/imports.js +416 -0
  75. package/main/index.js +24 -0
  76. package/main/parse.js +194 -0
  77. package/main/prompt.js +64 -0
  78. package/main/protod/bufbuild.js +87 -0
  79. package/main/protod/config.js +30 -0
  80. package/main/protod/git-repo.js +58 -0
  81. package/main/protod/index.js +17 -0
  82. package/main/protod/recursive.js +134 -0
  83. package/main/protod/types.js +2 -0
  84. package/main/protod/utils.js +91 -0
  85. package/main/telescope.js +10 -0
  86. package/main/types.js +2 -0
  87. package/main/utils/common-create-bundle.js +29 -0
  88. package/main/utils/contracts.js +39 -0
  89. package/main/utils/files.js +138 -0
  90. package/main/utils/index.js +163 -0
  91. package/main/utils/unused.js +73 -0
  92. package/module/build.js +176 -0
  93. package/module/builder.js +222 -0
  94. package/module/bundle.js +128 -0
  95. package/module/bundler.js +96 -0
  96. package/module/cli.js +44 -0
  97. package/module/cmds.js +22 -0
  98. package/module/commands/download.js +94 -0
  99. package/module/commands/generate.js +123 -0
  100. package/module/commands/install.js +141 -0
  101. package/module/commands/transpile.js +169 -0
  102. package/module/contracts/generate.js +29 -0
  103. package/module/contracts/install.js +105 -0
  104. package/module/contracts/message-composer.js +29 -0
  105. package/module/contracts/react-query.js +29 -0
  106. package/module/contracts/recoil.js +29 -0
  107. package/module/file.js +18 -0
  108. package/module/generators/create-aggregated-lcd-client.js +83 -0
  109. package/module/generators/create-all-stargate-clients.js +92 -0
  110. package/module/generators/create-amino-converters.js +39 -0
  111. package/module/generators/create-bundle.js +79 -0
  112. package/module/generators/create-cosmwasm-bundle.js +11 -0
  113. package/module/generators/create-custom-stargate-clients.js +96 -0
  114. package/module/generators/create-helpers.js +112 -0
  115. package/module/generators/create-index.js +45 -0
  116. package/module/generators/create-lcd-client-all.js +89 -0
  117. package/module/generators/create-lcd-client-scoped.js +62 -0
  118. package/module/generators/create-lcd-clients.js +74 -0
  119. package/module/generators/create-mcp-server.js +1849 -0
  120. package/module/generators/create-mobx-bundle.js +25 -0
  121. package/module/generators/create-msg-funcs.js +128 -0
  122. package/module/generators/create-pinia-store-bundle.js +23 -0
  123. package/module/generators/create-pinia-store.js +86 -0
  124. package/module/generators/create-query-funcs.js +129 -0
  125. package/module/generators/create-react-query-bundle.js +76 -0
  126. package/module/generators/create-registries.js +45 -0
  127. package/module/generators/create-root-readme.js +255 -0
  128. package/module/generators/create-rpc-msg-client-all.js +108 -0
  129. package/module/generators/create-rpc-msg-client-scoped.js +87 -0
  130. package/module/generators/create-rpc-msg-clients.js +112 -0
  131. package/module/generators/create-rpc-ops-bundle.js +92 -0
  132. package/module/generators/create-rpc-query-client-all.js +110 -0
  133. package/module/generators/create-rpc-query-client-scoped.js +83 -0
  134. package/module/generators/create-rpc-query-clients.js +198 -0
  135. package/module/generators/create-sdk-module-stargate-clients.js +91 -0
  136. package/module/generators/create-stargate-clients.js +92 -0
  137. package/module/generators/create-types.js +137 -0
  138. package/module/generators/customize-utils.js +46 -0
  139. package/module/helpers/__test__/internalTimestamp.js +39 -0
  140. package/module/helpers/__test__/internalTimestampBigint.js +38 -0
  141. package/module/helpers/binary-coder.js +531 -0
  142. package/module/helpers/decimals.js +108 -0
  143. package/module/helpers/external-comet.js +49 -0
  144. package/module/helpers/external-icjs.js +33 -0
  145. package/module/helpers/external.js +28 -0
  146. package/module/helpers/grpc-gateway.js +345 -0
  147. package/module/helpers/grpc-web.js +11 -0
  148. package/module/helpers/helper-func-types-interface.js +102 -0
  149. package/module/helpers/helper-func-types.js +89 -0
  150. package/module/helpers/index.js +22 -0
  151. package/module/helpers/internal-for-bigint.js +255 -0
  152. package/module/helpers/internal.js +236 -0
  153. package/module/helpers/json-safe.js +9 -0
  154. package/module/helpers/mobx.js +77 -0
  155. package/module/helpers/pinia-endpoint.js +17 -0
  156. package/module/helpers/react-query-hooks-icjs.js +219 -0
  157. package/module/helpers/react-query-hooks.js +254 -0
  158. package/module/helpers/react-query.js +89 -0
  159. package/module/helpers/registry-helper.js +225 -0
  160. package/module/helpers/types-helper.js +161 -0
  161. package/module/helpers/utf8-helper.js +143 -0
  162. package/module/helpers/varint.js +483 -0
  163. package/module/helpers/vue-query-hooks.js +222 -0
  164. package/module/imports.js +382 -0
  165. package/module/index.js +8 -0
  166. package/module/parse.js +185 -0
  167. package/module/prompt.js +58 -0
  168. package/module/protod/bufbuild.js +76 -0
  169. package/module/protod/config.js +27 -0
  170. package/module/protod/git-repo.js +54 -0
  171. package/module/protod/index.js +1 -0
  172. package/module/protod/recursive.js +125 -0
  173. package/module/protod/types.js +1 -0
  174. package/module/protod/utils.js +77 -0
  175. package/module/telescope.js +8 -0
  176. package/module/types.js +1 -0
  177. package/module/utils/common-create-bundle.js +25 -0
  178. package/module/utils/contracts.js +33 -0
  179. package/module/utils/files.js +106 -0
  180. package/module/utils/index.js +143 -0
  181. package/module/utils/unused.js +47 -0
  182. package/package.json +115 -0
  183. package/src/build.ts +255 -0
  184. package/src/builder.ts +302 -0
  185. package/src/bundle.ts +160 -0
  186. package/src/bundler.ts +153 -0
  187. package/src/cli.js +51 -0
  188. package/src/cmds.js +25 -0
  189. package/src/commands/download.ts +120 -0
  190. package/src/commands/generate.ts +156 -0
  191. package/src/commands/install.ts +154 -0
  192. package/src/commands/transpile.ts +198 -0
  193. package/src/contracts/generate.ts +33 -0
  194. package/src/contracts/install.ts +118 -0
  195. package/src/contracts/message-composer.ts +34 -0
  196. package/src/contracts/react-query.ts +33 -0
  197. package/src/contracts/recoil.ts +32 -0
  198. package/src/file.js +20 -0
  199. package/src/generators/create-aggregated-lcd-client.ts +133 -0
  200. package/src/generators/create-all-stargate-clients.ts +121 -0
  201. package/src/generators/create-amino-converters.ts +62 -0
  202. package/src/generators/create-bundle.ts +97 -0
  203. package/src/generators/create-cosmwasm-bundle.ts +17 -0
  204. package/src/generators/create-custom-stargate-clients.ts +128 -0
  205. package/src/generators/create-helpers.ts +196 -0
  206. package/src/generators/create-index.ts +72 -0
  207. package/src/generators/create-lcd-client-all.ts +139 -0
  208. package/src/generators/create-lcd-client-scoped.ts +109 -0
  209. package/src/generators/create-lcd-clients.ts +108 -0
  210. package/src/generators/create-mcp-server.ts +1902 -0
  211. package/src/generators/create-mobx-bundle.ts +31 -0
  212. package/src/generators/create-msg-funcs.ts +219 -0
  213. package/src/generators/create-pinia-store-bundle.ts +35 -0
  214. package/src/generators/create-pinia-store.ts +121 -0
  215. package/src/generators/create-query-funcs.ts +224 -0
  216. package/src/generators/create-react-query-bundle.ts +111 -0
  217. package/src/generators/create-registries.ts +70 -0
  218. package/src/generators/create-root-readme.ts +316 -0
  219. package/src/generators/create-rpc-msg-client-all.ts +167 -0
  220. package/src/generators/create-rpc-msg-client-scoped.ts +147 -0
  221. package/src/generators/create-rpc-msg-clients.ts +165 -0
  222. package/src/generators/create-rpc-ops-bundle.ts +155 -0
  223. package/src/generators/create-rpc-query-client-all.ts +173 -0
  224. package/src/generators/create-rpc-query-client-scoped.ts +142 -0
  225. package/src/generators/create-rpc-query-clients.ts +304 -0
  226. package/src/generators/create-sdk-module-stargate-clients.ts +120 -0
  227. package/src/generators/create-stargate-clients.ts +123 -0
  228. package/src/generators/create-types.ts +236 -0
  229. package/src/generators/customize-utils.ts +54 -0
  230. package/src/helpers/__test__/internalTimestamp.test.ts +79 -0
  231. package/src/helpers/__test__/internalTimestamp.ts +58 -0
  232. package/src/helpers/__test__/internalTimestampBigint.test.ts +78 -0
  233. package/src/helpers/__test__/internalTimestampBigint.ts +58 -0
  234. package/src/helpers/binary-coder.ts +533 -0
  235. package/src/helpers/decimals.ts +108 -0
  236. package/src/helpers/external-comet.ts +49 -0
  237. package/src/helpers/external-icjs.ts +33 -0
  238. package/src/helpers/external.ts +28 -0
  239. package/src/helpers/grpc-gateway.ts +345 -0
  240. package/src/helpers/grpc-web.ts +11 -0
  241. package/src/helpers/helper-func-types-interface.ts +104 -0
  242. package/src/helpers/helper-func-types.ts +91 -0
  243. package/src/helpers/index.ts +22 -0
  244. package/src/helpers/internal-for-bigint.ts +257 -0
  245. package/src/helpers/internal.ts +238 -0
  246. package/src/helpers/json-safe.ts +11 -0
  247. package/src/helpers/mobx.ts +77 -0
  248. package/src/helpers/pinia-endpoint.ts +17 -0
  249. package/src/helpers/react-query-hooks-icjs.ts +223 -0
  250. package/src/helpers/react-query-hooks.ts +266 -0
  251. package/src/helpers/react-query.ts +101 -0
  252. package/src/helpers/registry-helper.ts +227 -0
  253. package/src/helpers/types-helper.ts +169 -0
  254. package/src/helpers/utf8-helper.ts +143 -0
  255. package/src/helpers/varint.ts +483 -0
  256. package/src/helpers/vue-query-hooks.ts +224 -0
  257. package/src/imports.ts +499 -0
  258. package/src/index.ts +12 -0
  259. package/src/parse.ts +243 -0
  260. package/src/prompt.js +65 -0
  261. package/src/protod/bufbuild.spec.ts +80 -0
  262. package/src/protod/bufbuild.ts +95 -0
  263. package/src/protod/config.ts +30 -0
  264. package/src/protod/git-repo.ts +74 -0
  265. package/src/protod/index.ts +1 -0
  266. package/src/protod/recursive.spec.ts +164 -0
  267. package/src/protod/recursive.ts +180 -0
  268. package/src/protod/test-data/.protod.config.json +42 -0
  269. package/src/protod/test-data/buf.lock +23 -0
  270. package/src/protod/test-data/buf.yaml +25 -0
  271. package/src/protod/test-data/buf2.yaml +20 -0
  272. package/src/protod/test-data/cosmos/buf.lock +23 -0
  273. package/src/protod/test-data/cosmos/crypto/secp256k1/keys.proto +38 -0
  274. package/src/protod/test-data/model.proto +101 -0
  275. package/src/protod/types.ts +55 -0
  276. package/src/protod/utils.spec.ts +68 -0
  277. package/src/protod/utils.ts +90 -0
  278. package/src/telescope.js +9 -0
  279. package/src/types.ts +46 -0
  280. package/src/utils/common-create-bundle.ts +62 -0
  281. package/src/utils/contracts.ts +37 -0
  282. package/src/utils/files.ts +145 -0
  283. package/src/utils/index.ts +150 -0
  284. package/src/utils/unused.ts +52 -0
  285. package/types/build.d.ts +41 -0
  286. package/types/builder.d.ts +50 -0
  287. package/types/bundle.d.ts +30 -0
  288. package/types/bundler.d.ts +31 -0
  289. package/types/cli.d.ts +1 -0
  290. package/types/cmds.d.ts +11 -0
  291. package/types/commands/download.d.ts +5 -0
  292. package/types/commands/generate.d.ts +2 -0
  293. package/types/commands/install.d.ts +2 -0
  294. package/types/commands/transpile.d.ts +4 -0
  295. package/types/contracts/generate.d.ts +2 -0
  296. package/types/contracts/install.d.ts +2 -0
  297. package/types/contracts/message-composer.d.ts +2 -0
  298. package/types/contracts/react-query.d.ts +2 -0
  299. package/types/contracts/recoil.d.ts +2 -0
  300. package/types/file.d.ts +2 -0
  301. package/types/generators/create-aggregated-lcd-client.d.ts +2 -0
  302. package/types/generators/create-all-stargate-clients.d.ts +3 -0
  303. package/types/generators/create-amino-converters.d.ts +3 -0
  304. package/types/generators/create-bundle.d.ts +3 -0
  305. package/types/generators/create-combined-stargate-clients.d.ts +3 -0
  306. package/types/generators/create-cosmwasm-bundle.d.ts +2 -0
  307. package/types/generators/create-custom-stargate-clients.d.ts +3 -0
  308. package/types/generators/create-helpers.d.ts +2 -0
  309. package/types/generators/create-index.d.ts +2 -0
  310. package/types/generators/create-lcd-client-all.d.ts +3 -0
  311. package/types/generators/create-lcd-client-scoped.d.ts +3 -0
  312. package/types/generators/create-lcd-clients.d.ts +3 -0
  313. package/types/generators/create-mcp-server.d.ts +3 -0
  314. package/types/generators/create-mobx-bundle.d.ts +2 -0
  315. package/types/generators/create-msg-funcs.d.ts +3 -0
  316. package/types/generators/create-pinia-store-bundle.d.ts +2 -0
  317. package/types/generators/create-pinia-store.d.ts +3 -0
  318. package/types/generators/create-query-funcs.d.ts +3 -0
  319. package/types/generators/create-react-query-bundle.d.ts +2 -0
  320. package/types/generators/create-registries.d.ts +3 -0
  321. package/types/generators/create-root-readme.d.ts +2 -0
  322. package/types/generators/create-rpc-msg-client-all.d.ts +3 -0
  323. package/types/generators/create-rpc-msg-client-scoped.d.ts +3 -0
  324. package/types/generators/create-rpc-msg-clients.d.ts +3 -0
  325. package/types/generators/create-rpc-ops-bundle.d.ts +2 -0
  326. package/types/generators/create-rpc-query-client-all.d.ts +3 -0
  327. package/types/generators/create-rpc-query-client-scoped.d.ts +3 -0
  328. package/types/generators/create-rpc-query-clients.d.ts +3 -0
  329. package/types/generators/create-scoped-stargate-clients.d.ts +3 -0
  330. package/types/generators/create-sdk-module-stargate-clients.d.ts +3 -0
  331. package/types/generators/create-stargate-clients.d.ts +3 -0
  332. package/types/generators/create-types.d.ts +3 -0
  333. package/types/generators/create-unified-stargate-clients.d.ts +3 -0
  334. package/types/generators/customize-utils.d.ts +2 -0
  335. package/types/helpers/__test__/internalTimestamp.d.ts +21 -0
  336. package/types/helpers/__test__/internalTimestampBigint.d.ts +20 -0
  337. package/types/helpers/binary-coder.d.ts +2 -0
  338. package/types/helpers/decimals.d.ts +1 -0
  339. package/types/helpers/external-comet.d.ts +1 -0
  340. package/types/helpers/external-icjs.d.ts +1 -0
  341. package/types/helpers/external.d.ts +1 -0
  342. package/types/helpers/generated-type.d.ts +1 -0
  343. package/types/helpers/grpc-gateway.d.ts +1 -0
  344. package/types/helpers/grpc-web.d.ts +1 -0
  345. package/types/helpers/helper-func-types-interface.d.ts +2 -0
  346. package/types/helpers/helper-func-types.d.ts +2 -0
  347. package/types/helpers/index.d.ts +22 -0
  348. package/types/helpers/internal-for-bigint.d.ts +2 -0
  349. package/types/helpers/internal.d.ts +2 -0
  350. package/types/helpers/internalForBigInt.d.ts +1 -0
  351. package/types/helpers/json-safe.d.ts +1 -0
  352. package/types/helpers/mobx.d.ts +1 -0
  353. package/types/helpers/pinia-endpoint.d.ts +1 -0
  354. package/types/helpers/react-query-hooks-icjs.d.ts +2 -0
  355. package/types/helpers/react-query-hooks.d.ts +2 -0
  356. package/types/helpers/react-query.d.ts +2 -0
  357. package/types/helpers/registry-helper.d.ts +2 -0
  358. package/types/helpers/types-helper.d.ts +2 -0
  359. package/types/helpers/types.d.ts +1 -0
  360. package/types/helpers/utf8-helper.d.ts +1 -0
  361. package/types/helpers/varint.d.ts +1 -0
  362. package/types/helpers/vue-query-hooks.d.ts +2 -0
  363. package/types/helpers/vue-query.d.ts +2 -0
  364. package/types/imports.d.ts +17 -0
  365. package/types/index.d.ts +6 -0
  366. package/types/parse.d.ts +15 -0
  367. package/types/prompt.d.ts +3 -0
  368. package/types/protod/bufbuild.d.ts +6 -0
  369. package/types/protod/config.d.ts +7 -0
  370. package/types/protod/git-repo.d.ts +11 -0
  371. package/types/protod/index.d.ts +1 -0
  372. package/types/protod/proto-download.d.ts +2 -0
  373. package/types/protod/recursive.d.ts +4 -0
  374. package/types/protod/types.d.ts +49 -0
  375. package/types/protod/utils.d.ts +11 -0
  376. package/types/telescope.d.ts +2 -0
  377. package/types/types.d.ts +43 -0
  378. package/types/utils/common-create-bundle.d.ts +18 -0
  379. package/types/utils/contracts.d.ts +6 -0
  380. package/types/utils/files.d.ts +5 -0
  381. package/types/utils/index.d.ts +16 -0
  382. package/types/utils/unused.d.ts +5 -0
@@ -0,0 +1,223 @@
1
+ import { TelescopeOptions } from "@cosmology/types";
2
+
3
+ export const getReactQueryHelperHooksIcJs = (options: TelescopeOptions) => {
4
+ return `
5
+ import { getRpcClient } from './extern${options.restoreImportExtension ?? ""}'
6
+ import {
7
+ isRpc,
8
+ Rpc,
9
+ } from './helpers${options.restoreImportExtension ?? ""}'
10
+ import {
11
+ ITxArgs,
12
+ EndpointOrRpc,
13
+ } from './helper-func-types${options.restoreImportExtension ?? ""}'
14
+ import { ISigningClient, isISigningClient } from "@interchainjs/cosmos/types/signing-client${options.restoreImportExtension ?? ""}";
15
+ import {
16
+ StdFee,
17
+ DeliverTxResponse,
18
+ } from './types${options.restoreImportExtension ?? ""}'
19
+ import {
20
+ useQuery,
21
+ useQueryClient,
22
+ UseQueryOptions,
23
+ useMutation,
24
+ UseMutationOptions,
25
+ QueryKey,
26
+ } from '@tanstack/react-query';
27
+
28
+ import { HttpEndpoint } from "@interchainjs/types";
29
+ import { Rpc as ProtobufRpcClient } from "./helpers${options.restoreImportExtension ?? ""}";
30
+
31
+ export const DEFAULT_RPC_CLIENT_QUERY_KEY = 'rpcClient';
32
+ export const DEFAULT_RPC_ENDPOINT_QUERY_KEY = 'rpcEndPoint';
33
+ export const DEFAULT_SIGNING_CLIENT_QUERY_KEY = 'signingClient';
34
+
35
+ export interface CacheResolver {
36
+ rpcEndpoint?: string | HttpEndpoint;
37
+ clientQueryKey?: string;
38
+ }
39
+
40
+ export function isCacheResolver(resolver: unknown) : resolver is CacheResolver {
41
+ return resolver !== null && resolver !== undefined && (resolver as CacheResolver).rpcEndpoint !== undefined && (resolver as CacheResolver).clientQueryKey !== undefined;
42
+ }
43
+
44
+ export interface ReactQueryParams<TResponse, TData = TResponse> {
45
+ options?: UseQueryOptions<TResponse, Error, TData>;
46
+ }
47
+
48
+ export interface UseRpcClientQuery<TData> extends ReactQueryParams<ProtobufRpcClient, TData> {
49
+ clientResolver?: CacheResolver;
50
+ }
51
+
52
+
53
+ ${
54
+ options.reactQuery.needExtraQueryKey
55
+ ? `export interface UseRpcEndpointQuery<TData> extends ReactQueryParams<string | HttpEndpoint, TData> {
56
+ getter: () => Promise<string | HttpEndpoint>;
57
+ rpcEndPointKey?: string;
58
+ extraKey?: string
59
+ }
60
+
61
+ export const useRpcEndpoint = <TData = string | HttpEndpoint>({
62
+ getter,
63
+ options,
64
+ rpcEndPointKey,
65
+ extraKey
66
+ }: UseRpcEndpointQuery<TData>) => {
67
+ const key = rpcEndPointKey || DEFAULT_RPC_ENDPOINT_QUERY_KEY;
68
+ return useQuery<string | HttpEndpoint, Error, TData>([key, extraKey], async () => {
69
+ return await getter();
70
+ }, options);
71
+ };`
72
+ : `export interface UseRpcEndpointQuery<TData> extends ReactQueryParams<string | HttpEndpoint, TData> {
73
+ getter: () => Promise<string | HttpEndpoint>;
74
+ rpcEndPointKey?: string;
75
+ }
76
+
77
+ export const useRpcEndpoint = <TData = string | HttpEndpoint>({
78
+ getter,
79
+ options,
80
+ rpcEndPointKey,
81
+ }: UseRpcEndpointQuery<TData>) => {
82
+ const key = rpcEndPointKey || DEFAULT_RPC_ENDPOINT_QUERY_KEY;
83
+ return useQuery<string | HttpEndpoint, Error, TData>([key, getter], async () => {
84
+ return await getter();
85
+ }, options);
86
+ };`
87
+ }
88
+
89
+ export const useRpcClient = <TData = ProtobufRpcClient>({
90
+ options,
91
+ clientResolver
92
+ }: UseRpcClientQuery<TData>) => {
93
+ const queryClient = useQueryClient({
94
+ context: options?.context
95
+ });
96
+
97
+ const key = clientResolver?.clientQueryKey || DEFAULT_RPC_CLIENT_QUERY_KEY;
98
+ return useQuery<ProtobufRpcClient, Error, TData>([key, clientResolver?.rpcEndpoint], async () => {
99
+ if(!clientResolver?.rpcEndpoint) {
100
+ throw new Error('rpcEndpoint is required');
101
+ }
102
+
103
+ const client = await getRpcClient(clientResolver.rpcEndpoint);
104
+ if(!client) {
105
+ throw new Error('Failed to connect to rpc client');
106
+ }
107
+
108
+ queryClient.setQueryData([key], client);
109
+
110
+ return client;
111
+ }, options);
112
+ };
113
+
114
+ const getRpcClientFromCache = (
115
+ queryClient: ReturnType<typeof useQueryClient>,
116
+ key: string,
117
+ rpcEndpoint?: string | HttpEndpoint
118
+ ): Rpc | undefined => {
119
+ const queryKey = rpcEndpoint ? [key, rpcEndpoint] : [key];
120
+ return queryClient.getQueryData<Rpc>(queryKey);
121
+ };
122
+
123
+ export interface UseQueryBuilderOptions<TReq, TRes> {
124
+ builderQueryFn: (client: EndpointOrRpc, request: TReq) => Promise<TRes>,
125
+ queryKeyPrefix: string,
126
+ }
127
+
128
+
129
+ export function buildUseQuery<TReq, TRes>(opts: UseQueryBuilderOptions<TReq, TRes>) {
130
+ return <TData = TRes>({
131
+ request,
132
+ options,
133
+ clientResolver,
134
+ customizedQueryKey,
135
+ }: UseQueryParams<TReq, TRes, TData>) => {
136
+ const queryClient = useQueryClient({
137
+ context: options?.context
138
+ });
139
+
140
+ let rpcResolver: EndpointOrRpc | undefined;
141
+
142
+ if(isRpc(clientResolver)) {
143
+ rpcResolver = clientResolver;
144
+ } else {
145
+ const key = isCacheResolver(clientResolver)
146
+ ? clientResolver.clientQueryKey || DEFAULT_RPC_CLIENT_QUERY_KEY
147
+ : DEFAULT_RPC_CLIENT_QUERY_KEY;
148
+ const endpoint = isCacheResolver(clientResolver) ? clientResolver.rpcEndpoint : undefined;
149
+
150
+ const cachedClient = getRpcClientFromCache(queryClient, key, endpoint);
151
+ // For CacheResolver with endpoint, use endpoint as fallback if no cached client
152
+ rpcResolver = cachedClient ||
153
+ (isCacheResolver(clientResolver) && clientResolver.rpcEndpoint ? clientResolver.rpcEndpoint :
154
+ (!isCacheResolver(clientResolver) ? clientResolver : undefined));
155
+ }
156
+
157
+ return useQuery<TRes, Error, TData>(customizedQueryKey || [opts.queryKeyPrefix, request], () => opts.builderQueryFn(rpcResolver!, request), options);
158
+ };
159
+ }
160
+
161
+ export interface UseQueryParams<TReq, TRes, TData = TRes> extends ReactQueryParams<TRes, TData> {
162
+ request: TReq;
163
+ clientResolver?: CacheResolver | EndpointOrRpc;
164
+ customizedQueryKey?: QueryKey
165
+ }
166
+
167
+ export interface ReactMutationParams<TData, TError, TVariables, TContext = unknown> {
168
+ options?: UseMutationOptions<TData, TError, TVariables, TContext>;
169
+ clientResolver?: CacheResolver | ISigningClient;
170
+ }
171
+
172
+
173
+ export interface UseMutationBuilderOptions<TMsg> {
174
+ builderMutationFn: (
175
+ client: ISigningClient,
176
+ signerAddress: string,
177
+ message: TMsg | TMsg[],
178
+ fee: StdFee | 'auto',
179
+ memo: string
180
+ ) => Promise<DeliverTxResponse>,
181
+ }
182
+
183
+ const getSigningClientFromCache = (
184
+ queryClient: ReturnType<typeof useQueryClient>,
185
+ key: string,
186
+ rpcEndpoint?: string | HttpEndpoint
187
+ ): ISigningClient | undefined => {
188
+ const queryKey = rpcEndpoint ? [key, rpcEndpoint] : [key];
189
+ return queryClient.getQueryData<ISigningClient>(queryKey);
190
+ };
191
+
192
+ export function buildUseMutation<TMsg, TError>(opts: UseMutationBuilderOptions<TMsg>) {
193
+ return ({
194
+ options,
195
+ clientResolver
196
+ }: ReactMutationParams<DeliverTxResponse, TError, ITxArgs<TMsg>>) => {
197
+ const queryClient = useQueryClient({
198
+ context: options?.context
199
+ });
200
+
201
+ let signingClientResolver: ISigningClient | undefined;
202
+
203
+ if(isISigningClient(clientResolver)) {
204
+ signingClientResolver = clientResolver;
205
+ } else {
206
+ // For both CacheResolver and other cases, try to get from cache first
207
+ const key = isCacheResolver(clientResolver)
208
+ ? clientResolver.clientQueryKey || DEFAULT_SIGNING_CLIENT_QUERY_KEY
209
+ : DEFAULT_SIGNING_CLIENT_QUERY_KEY;
210
+ const endpoint = isCacheResolver(clientResolver) ? clientResolver.rpcEndpoint : undefined;
211
+
212
+ const cachedClient = getSigningClientFromCache(queryClient, key, endpoint);
213
+ signingClientResolver = cachedClient || (!isCacheResolver(clientResolver) ? clientResolver : undefined);
214
+ }
215
+
216
+ return useMutation<DeliverTxResponse, Error, ITxArgs<TMsg>>(
217
+ (reqData: ITxArgs<TMsg>) => opts.builderMutationFn(signingClientResolver!, reqData.signerAddress, reqData.message, reqData.fee, reqData.memo),
218
+ options as Omit<UseMutationOptions<DeliverTxResponse, Error, ITxArgs<TMsg>, unknown>, "mutationFn">
219
+ );
220
+ };
221
+ }
222
+ `;
223
+ };
@@ -0,0 +1,266 @@
1
+ import { TelescopeOptions } from "@cosmology/types";
2
+
3
+ export const getReactQueryHelperHooks = (options: TelescopeOptions) => {
4
+ return `
5
+
6
+
7
+ import { getRpcClient } from './extern${options.restoreImportExtension ?? ""}'
8
+ import {
9
+ isRpc,
10
+ Rpc,
11
+ } from './helpers${options.restoreImportExtension ?? ""}'
12
+ import {
13
+ StdFee,
14
+ DeliverTxResponse,
15
+ } from './types${options.restoreImportExtension ?? ""}'
16
+ import {
17
+ ITxArgs,
18
+ EndpointOrRpc,
19
+ } from './helper-func-types${options.restoreImportExtension ?? ""}'
20
+ import { ISigningClient, isISigningClient } from "@interchainjs/cosmos/types/signing-client${options.restoreImportExtension ?? ""}";
21
+ import {
22
+ useQuery,
23
+ useQueryClient,
24
+ UseQueryOptions,
25
+ useMutation,
26
+ UseMutationOptions,
27
+ QueryKey,
28
+ } from '@tanstack/react-query';
29
+
30
+ import { HttpEndpoint, ProtobufRpcClient } from '@cosmjs/stargate';
31
+ ${
32
+ options.rpcClients.useConnectComet
33
+ ? "import { CometClient, connectComet, Tendermint34Client, Tendermint37Client } from '@cosmjs/tendermint-rpc';"
34
+ : "import { Tendermint34Client } from '@cosmjs/tendermint-rpc';"
35
+ }
36
+
37
+ export const DEFAULT_RPC_CLIENT_QUERY_KEY = 'rpcClient';
38
+ export const DEFAULT_RPC_ENDPOINT_QUERY_KEY = 'rpcEndPoint';
39
+ export const DEFAULT_SIGNING_CLIENT_QUERY_KEY = 'signingClient';
40
+
41
+ export interface CacheResolver {
42
+ rpcEndpoint?: string | HttpEndpoint;
43
+ clientQueryKey?: string;
44
+ }
45
+
46
+ export function isCacheResolver(resolver: unknown) : resolver is CacheResolver {
47
+ return resolver !== null && resolver !== undefined && (resolver as CacheResolver).rpcEndpoint !== undefined && (resolver as CacheResolver).clientQueryKey !== undefined;
48
+ }
49
+
50
+ export interface ReactQueryParams<TResponse, TData = TResponse> {
51
+ options?: UseQueryOptions<TResponse, Error, TData>;
52
+ }
53
+
54
+ export interface UseRpcClientQuery<TData> extends ReactQueryParams<ProtobufRpcClient, TData> {
55
+ clientResolver?: CacheResolver;
56
+ }
57
+
58
+ ${
59
+ options.reactQuery.needExtraQueryKey
60
+ ? `export interface UseRpcEndpointQuery<TData> extends ReactQueryParams<string | HttpEndpoint, TData> {
61
+ getter: () => Promise<string | HttpEndpoint>;
62
+ rpcEndPointKey?: string;
63
+ extraKey?: string
64
+ }
65
+
66
+ export const useRpcEndpoint = <TData = string | HttpEndpoint>({
67
+ getter,
68
+ options,
69
+ rpcEndPointKey,
70
+ extraKey
71
+ }: UseRpcEndpointQuery<TData>) => {
72
+ const key = rpcEndPointKey || DEFAULT_RPC_ENDPOINT_QUERY_KEY;
73
+ return useQuery<string | HttpEndpoint, Error, TData>([key, extraKey], async () => {
74
+ return await getter();
75
+ }, options);
76
+ };`
77
+ : `export interface UseRpcEndpointQuery<TData> extends ReactQueryParams<string | HttpEndpoint, TData> {
78
+ getter: () => Promise<string | HttpEndpoint>;
79
+ rpcEndPointKey?: string;
80
+ }
81
+
82
+ export const useRpcEndpoint = <TData = string | HttpEndpoint>({
83
+ getter,
84
+ options,
85
+ rpcEndPointKey,
86
+ }: UseRpcEndpointQuery<TData>) => {
87
+ const key = rpcEndPointKey || DEFAULT_RPC_ENDPOINT_QUERY_KEY;
88
+ return useQuery<string | HttpEndpoint, Error, TData>([key, getter], async () => {
89
+ return await getter();
90
+ }, options);
91
+ };`
92
+ }
93
+
94
+ export const useRpcClient = <TData = ProtobufRpcClient>({
95
+ options,
96
+ clientResolver
97
+ }: UseRpcClientQuery<TData>) => {
98
+ const queryClient = useQueryClient({
99
+ context: options?.context
100
+ });
101
+
102
+ const key = clientResolver?.clientQueryKey || DEFAULT_RPC_CLIENT_QUERY_KEY;
103
+ return useQuery<ProtobufRpcClient, Error, TData>([key, clientResolver?.rpcEndpoint], async () => {
104
+ if(!clientResolver?.rpcEndpoint) {
105
+ throw new Error('rpcEndpoint is required');
106
+ }
107
+
108
+ const client = await getRpcClient(clientResolver.rpcEndpoint);
109
+ if(!client) {
110
+ throw new Error('Failed to connect to rpc client');
111
+ }
112
+
113
+ queryClient.setQueryData([key], client);
114
+
115
+ return client;
116
+ }, options);
117
+ };
118
+
119
+ ${
120
+ options.rpcClients.useConnectComet
121
+ ? "interface UseTendermintClient extends ReactQueryParams<Tendermint34Client | Tendermint37Client | CometClient> {"
122
+ : "interface UseTendermintClient extends ReactQueryParams<Tendermint34Client> {"
123
+ }
124
+ rpcEndpoint: string | HttpEndpoint;
125
+ }
126
+
127
+ /**
128
+ * Hook that uses react-query to cache a connected tendermint client.
129
+ */
130
+ export const useTendermintClient = ({
131
+ rpcEndpoint,
132
+ options,
133
+ }: UseTendermintClient) => {
134
+ ${
135
+ options.rpcClients.useConnectComet
136
+ ? " const { data: client } = useQuery<Tendermint34Client | Tendermint37Client | CometClient, Error, Tendermint34Client | Tendermint37Client | CometClient>("
137
+ : " const { data: client } = useQuery<Tendermint34Client, Error, Tendermint34Client>("
138
+ }
139
+ ['client', 'tendermint', rpcEndpoint],
140
+ () => ${
141
+ options.rpcClients.useConnectComet
142
+ ? "connectComet(rpcEndpoint)"
143
+ : "Tendermint34Client.connect(rpcEndpoint)"
144
+ },
145
+ {
146
+ // allow overriding
147
+ onError: (e) => {
148
+ throw new Error(\`Failed to connect to \${rpcEndpoint}\` + '\\n' + e)
149
+ },
150
+ ...options,
151
+ }
152
+ )
153
+ return { client }
154
+ };
155
+
156
+ export interface UseQueryBuilderOptions<TReq, TRes> {
157
+ builderQueryFn: (clientResolver?: EndpointOrRpc) => (request: TReq) => Promise<TRes>,
158
+ queryKeyPrefix: string,
159
+ }
160
+
161
+ const getRpcClientFromCache = (
162
+ queryClient: ReturnType<typeof useQueryClient>,
163
+ key: string,
164
+ rpcEndpoint?: string | HttpEndpoint
165
+ ): Rpc | undefined => {
166
+ const queryKey = rpcEndpoint ? [key, rpcEndpoint] : [key];
167
+ return queryClient.getQueryData<Rpc>(queryKey);
168
+ };
169
+
170
+ export function buildUseQuery<TReq, TRes>(opts: UseQueryBuilderOptions<TReq, TRes>) {
171
+ return <TData = TRes>({
172
+ request,
173
+ options,
174
+ clientResolver,
175
+ customizedQueryKey,
176
+ }: UseQueryParams<TReq, TRes, TData>) => {
177
+ const queryClient = useQueryClient({
178
+ context: options?.context
179
+ });
180
+
181
+ let rpcResolver: EndpointOrRpc | undefined;
182
+
183
+ if(isRpc(clientResolver)) {
184
+ rpcResolver = clientResolver;
185
+ } else {
186
+ const key = isCacheResolver(clientResolver)
187
+ ? clientResolver.clientQueryKey || DEFAULT_RPC_CLIENT_QUERY_KEY
188
+ : DEFAULT_RPC_CLIENT_QUERY_KEY;
189
+ const endpoint = isCacheResolver(clientResolver) ? clientResolver.rpcEndpoint : undefined;
190
+
191
+ const cachedClient = getRpcClientFromCache(queryClient, key, endpoint);
192
+ // For CacheResolver with endpoint, use endpoint as fallback if no cached client
193
+ rpcResolver = cachedClient ||
194
+ (isCacheResolver(clientResolver) && clientResolver.rpcEndpoint ? clientResolver.rpcEndpoint :
195
+ (!isCacheResolver(clientResolver) ? clientResolver : undefined));
196
+ }
197
+
198
+ const queryFn = opts.builderQueryFn(rpcResolver);
199
+ return useQuery<TRes, Error, TData>(customizedQueryKey || [opts.queryKeyPrefix, request], () => queryFn(request), options);
200
+ };
201
+ }
202
+
203
+ export interface UseQueryParams<TReq, TRes, TData = TRes> extends ReactQueryParams<TRes, TData> {
204
+ request: TReq;
205
+ clientResolver?: CacheResolver | EndpointOrRpc;
206
+ customizedQueryKey?: QueryKey
207
+ }
208
+
209
+ export interface ReactMutationParams<TData, TError, TVariables, TContext = unknown> {
210
+ options?: UseMutationOptions<TData, TError, TVariables, TContext>;
211
+ clientResolver?: CacheResolver | ISigningClient;
212
+ }
213
+
214
+
215
+ export interface UseMutationBuilderOptions<TMsg> {
216
+ builderMutationFn: (clientResolver?: ISigningClient) => (
217
+ signerAddress: string,
218
+ message: TMsg | TMsg[],
219
+ fee: StdFee | 'auto',
220
+ memo: string
221
+ ) => Promise<DeliverTxResponse>,
222
+ }
223
+
224
+ const getSigningClientFromCache = (
225
+ queryClient: ReturnType<typeof useQueryClient>,
226
+ key: string,
227
+ rpcEndpoint?: string | HttpEndpoint
228
+ ): ISigningClient | undefined => {
229
+ const queryKey = rpcEndpoint ? [key, rpcEndpoint] : [key];
230
+ return queryClient.getQueryData<ISigningClient>(queryKey);
231
+ };
232
+
233
+ export function buildUseMutation<TMsg, TError>(opts: UseMutationBuilderOptions<TMsg>) {
234
+ return ({
235
+ options,
236
+ clientResolver
237
+ }: ReactMutationParams<DeliverTxResponse, TError, ITxArgs<TMsg>>) => {
238
+ const queryClient = useQueryClient({
239
+ context: options?.context
240
+ });
241
+
242
+ let signingClientResolver: ISigningClient | undefined;
243
+
244
+ if(isISigningClient(clientResolver)) {
245
+ signingClientResolver = clientResolver;
246
+ } else {
247
+ // For both CacheResolver and other cases, try to get from cache first
248
+ const key = isCacheResolver(clientResolver)
249
+ ? clientResolver.clientQueryKey || DEFAULT_SIGNING_CLIENT_QUERY_KEY
250
+ : DEFAULT_SIGNING_CLIENT_QUERY_KEY;
251
+ const endpoint = isCacheResolver(clientResolver) ? clientResolver.rpcEndpoint : undefined;
252
+
253
+ const cachedClient = getSigningClientFromCache(queryClient, key, endpoint);
254
+ signingClientResolver = cachedClient || (!isCacheResolver(clientResolver) ? clientResolver : undefined);
255
+ }
256
+
257
+ const mutationFn = opts.builderMutationFn(signingClientResolver);
258
+
259
+ return useMutation<DeliverTxResponse, Error, ITxArgs<TMsg>>(
260
+ (reqData: ITxArgs<TMsg>) => mutationFn(reqData.signerAddress, reqData.message, reqData.fee, reqData.memo),
261
+ options as Omit<UseMutationOptions<DeliverTxResponse, Error, ITxArgs<TMsg>, unknown>, "mutationFn">
262
+ );
263
+ };
264
+ }
265
+ `;
266
+ };
@@ -0,0 +1,101 @@
1
+ import { TelescopeOptions } from "@cosmology/types";
2
+
3
+ export const getReactQueryHelper = (options: TelescopeOptions) => {
4
+ return `import { getRpcClient } from './extern${options.restoreImportExtension ?? ""}'
5
+ import {
6
+ useQuery,
7
+ UseQueryOptions,
8
+ } from '@tanstack/react-query';
9
+
10
+ import { HttpEndpoint, ProtobufRpcClient } from '@cosmjs/stargate';
11
+ ${
12
+ options.rpcClients.useConnectComet
13
+ ? "import { CometClient, connectComet, Tendermint34Client, Tendermint37Client } from '@cosmjs/tendermint-rpc';"
14
+ : "import { Tendermint34Client } from '@cosmjs/tendermint-rpc';"
15
+ }
16
+
17
+ export interface ReactQueryParams<TResponse, TData = TResponse> {
18
+ options?: UseQueryOptions<TResponse, Error, TData>;
19
+ }
20
+
21
+ export interface UseRpcClientQuery<TData> extends ReactQueryParams<ProtobufRpcClient, TData> {
22
+ rpcEndpoint: string | HttpEndpoint;
23
+ }
24
+
25
+ ${
26
+ options.reactQuery.needExtraQueryKey
27
+ ? `export interface UseRpcEndpointQuery<TData> extends ReactQueryParams<string | HttpEndpoint, TData> {
28
+ getter: () => Promise<string | HttpEndpoint>;
29
+ extraKey?: string
30
+ }
31
+
32
+ export const useRpcEndpoint = <TData = string | HttpEndpoint>({
33
+ getter,
34
+ options,
35
+ extraKey
36
+ }: UseRpcEndpointQuery<TData>) => {
37
+ return useQuery<string | HttpEndpoint, Error, TData>(['rpcEndpoint', extraKey], async () => {
38
+ return await getter();
39
+ }, options);
40
+ };`
41
+ : `export interface UseRpcEndpointQuery<TData> extends ReactQueryParams<string | HttpEndpoint, TData> {
42
+ getter: () => Promise<string | HttpEndpoint>;
43
+ }
44
+
45
+ export const useRpcEndpoint = <TData = string | HttpEndpoint>({
46
+ getter,
47
+ options,
48
+ }: UseRpcEndpointQuery<TData>) => {
49
+ return useQuery<string | HttpEndpoint, Error, TData>(['rpcEndpoint', getter], async () => {
50
+ return await getter();
51
+ }, options);
52
+ };`
53
+ }
54
+
55
+ export const useRpcClient = <TData = ProtobufRpcClient>({
56
+ rpcEndpoint,
57
+ options,
58
+ }: UseRpcClientQuery<TData>) => {
59
+ return useQuery<ProtobufRpcClient, Error, TData>(['rpcClient', rpcEndpoint], async () => {
60
+ return await getRpcClient(rpcEndpoint);
61
+ }, options);
62
+ };
63
+
64
+ ${
65
+ options.rpcClients.useConnectComet
66
+ ? "interface UseTendermintClient extends ReactQueryParams<Tendermint34Client | Tendermint37Client | CometClient> {"
67
+ : "interface UseTendermintClient extends ReactQueryParams<Tendermint34Client> {"
68
+ }
69
+ rpcEndpoint: string | HttpEndpoint;
70
+ }
71
+
72
+ /**
73
+ * Hook that uses react-query to cache a connected tendermint client.
74
+ */
75
+ export const useTendermintClient = ({
76
+ rpcEndpoint,
77
+ options,
78
+ }: UseTendermintClient) => {
79
+ ${
80
+ options.rpcClients.useConnectComet
81
+ ? " const { data: client } = useQuery<Tendermint34Client | Tendermint37Client | CometClient, Error, Tendermint34Client | Tendermint37Client | CometClient>("
82
+ : " const { data: client } = useQuery<Tendermint34Client, Error, Tendermint34Client>("
83
+ }
84
+ ['client', 'tendermint', rpcEndpoint],
85
+ () => ${
86
+ options.rpcClients.useConnectComet
87
+ ? "connectComet(rpcEndpoint)"
88
+ : "Tendermint34Client.connect(rpcEndpoint)"
89
+ },
90
+ {
91
+ // allow overriding
92
+ onError: (e) => {
93
+ throw new Error(\`Failed to connect to \${rpcEndpoint}\` + '\\n' + e)
94
+ },
95
+ ...options,
96
+ }
97
+ )
98
+ return { client }
99
+ };
100
+ `;
101
+ };