@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,219 @@
1
+ export const getReactQueryHelperHooksIcJs = (options) => {
2
+ return `
3
+ import { getRpcClient } from './extern${options.restoreImportExtension ?? ""}'
4
+ import {
5
+ isRpc,
6
+ Rpc,
7
+ } from './helpers${options.restoreImportExtension ?? ""}'
8
+ import {
9
+ ITxArgs,
10
+ EndpointOrRpc,
11
+ } from './helper-func-types${options.restoreImportExtension ?? ""}'
12
+ import { ISigningClient, isISigningClient } from "@interchainjs/cosmos/types/signing-client${options.restoreImportExtension ?? ""}";
13
+ import {
14
+ StdFee,
15
+ DeliverTxResponse,
16
+ } from './types${options.restoreImportExtension ?? ""}'
17
+ import {
18
+ useQuery,
19
+ useQueryClient,
20
+ UseQueryOptions,
21
+ useMutation,
22
+ UseMutationOptions,
23
+ QueryKey,
24
+ } from '@tanstack/react-query';
25
+
26
+ import { HttpEndpoint } from "@interchainjs/types";
27
+ import { Rpc as ProtobufRpcClient } from "./helpers${options.restoreImportExtension ?? ""}";
28
+
29
+ export const DEFAULT_RPC_CLIENT_QUERY_KEY = 'rpcClient';
30
+ export const DEFAULT_RPC_ENDPOINT_QUERY_KEY = 'rpcEndPoint';
31
+ export const DEFAULT_SIGNING_CLIENT_QUERY_KEY = 'signingClient';
32
+
33
+ export interface CacheResolver {
34
+ rpcEndpoint?: string | HttpEndpoint;
35
+ clientQueryKey?: string;
36
+ }
37
+
38
+ export function isCacheResolver(resolver: unknown) : resolver is CacheResolver {
39
+ return resolver !== null && resolver !== undefined && (resolver as CacheResolver).rpcEndpoint !== undefined && (resolver as CacheResolver).clientQueryKey !== undefined;
40
+ }
41
+
42
+ export interface ReactQueryParams<TResponse, TData = TResponse> {
43
+ options?: UseQueryOptions<TResponse, Error, TData>;
44
+ }
45
+
46
+ export interface UseRpcClientQuery<TData> extends ReactQueryParams<ProtobufRpcClient, TData> {
47
+ clientResolver?: CacheResolver;
48
+ }
49
+
50
+
51
+ ${options.reactQuery.needExtraQueryKey
52
+ ? `export interface UseRpcEndpointQuery<TData> extends ReactQueryParams<string | HttpEndpoint, TData> {
53
+ getter: () => Promise<string | HttpEndpoint>;
54
+ rpcEndPointKey?: string;
55
+ extraKey?: string
56
+ }
57
+
58
+ export const useRpcEndpoint = <TData = string | HttpEndpoint>({
59
+ getter,
60
+ options,
61
+ rpcEndPointKey,
62
+ extraKey
63
+ }: UseRpcEndpointQuery<TData>) => {
64
+ const key = rpcEndPointKey || DEFAULT_RPC_ENDPOINT_QUERY_KEY;
65
+ return useQuery<string | HttpEndpoint, Error, TData>([key, extraKey], async () => {
66
+ return await getter();
67
+ }, options);
68
+ };`
69
+ : `export interface UseRpcEndpointQuery<TData> extends ReactQueryParams<string | HttpEndpoint, TData> {
70
+ getter: () => Promise<string | HttpEndpoint>;
71
+ rpcEndPointKey?: string;
72
+ }
73
+
74
+ export const useRpcEndpoint = <TData = string | HttpEndpoint>({
75
+ getter,
76
+ options,
77
+ rpcEndPointKey,
78
+ }: UseRpcEndpointQuery<TData>) => {
79
+ const key = rpcEndPointKey || DEFAULT_RPC_ENDPOINT_QUERY_KEY;
80
+ return useQuery<string | HttpEndpoint, Error, TData>([key, getter], async () => {
81
+ return await getter();
82
+ }, options);
83
+ };`}
84
+
85
+ export const useRpcClient = <TData = ProtobufRpcClient>({
86
+ options,
87
+ clientResolver
88
+ }: UseRpcClientQuery<TData>) => {
89
+ const queryClient = useQueryClient({
90
+ context: options?.context
91
+ });
92
+
93
+ const key = clientResolver?.clientQueryKey || DEFAULT_RPC_CLIENT_QUERY_KEY;
94
+ return useQuery<ProtobufRpcClient, Error, TData>([key, clientResolver?.rpcEndpoint], async () => {
95
+ if(!clientResolver?.rpcEndpoint) {
96
+ throw new Error('rpcEndpoint is required');
97
+ }
98
+
99
+ const client = await getRpcClient(clientResolver.rpcEndpoint);
100
+ if(!client) {
101
+ throw new Error('Failed to connect to rpc client');
102
+ }
103
+
104
+ queryClient.setQueryData([key], client);
105
+
106
+ return client;
107
+ }, options);
108
+ };
109
+
110
+ const getRpcClientFromCache = (
111
+ queryClient: ReturnType<typeof useQueryClient>,
112
+ key: string,
113
+ rpcEndpoint?: string | HttpEndpoint
114
+ ): Rpc | undefined => {
115
+ const queryKey = rpcEndpoint ? [key, rpcEndpoint] : [key];
116
+ return queryClient.getQueryData<Rpc>(queryKey);
117
+ };
118
+
119
+ export interface UseQueryBuilderOptions<TReq, TRes> {
120
+ builderQueryFn: (client: EndpointOrRpc, request: TReq) => Promise<TRes>,
121
+ queryKeyPrefix: string,
122
+ }
123
+
124
+
125
+ export function buildUseQuery<TReq, TRes>(opts: UseQueryBuilderOptions<TReq, TRes>) {
126
+ return <TData = TRes>({
127
+ request,
128
+ options,
129
+ clientResolver,
130
+ customizedQueryKey,
131
+ }: UseQueryParams<TReq, TRes, TData>) => {
132
+ const queryClient = useQueryClient({
133
+ context: options?.context
134
+ });
135
+
136
+ let rpcResolver: EndpointOrRpc | undefined;
137
+
138
+ if(isRpc(clientResolver)) {
139
+ rpcResolver = clientResolver;
140
+ } else {
141
+ const key = isCacheResolver(clientResolver)
142
+ ? clientResolver.clientQueryKey || DEFAULT_RPC_CLIENT_QUERY_KEY
143
+ : DEFAULT_RPC_CLIENT_QUERY_KEY;
144
+ const endpoint = isCacheResolver(clientResolver) ? clientResolver.rpcEndpoint : undefined;
145
+
146
+ const cachedClient = getRpcClientFromCache(queryClient, key, endpoint);
147
+ // For CacheResolver with endpoint, use endpoint as fallback if no cached client
148
+ rpcResolver = cachedClient ||
149
+ (isCacheResolver(clientResolver) && clientResolver.rpcEndpoint ? clientResolver.rpcEndpoint :
150
+ (!isCacheResolver(clientResolver) ? clientResolver : undefined));
151
+ }
152
+
153
+ return useQuery<TRes, Error, TData>(customizedQueryKey || [opts.queryKeyPrefix, request], () => opts.builderQueryFn(rpcResolver!, request), options);
154
+ };
155
+ }
156
+
157
+ export interface UseQueryParams<TReq, TRes, TData = TRes> extends ReactQueryParams<TRes, TData> {
158
+ request: TReq;
159
+ clientResolver?: CacheResolver | EndpointOrRpc;
160
+ customizedQueryKey?: QueryKey
161
+ }
162
+
163
+ export interface ReactMutationParams<TData, TError, TVariables, TContext = unknown> {
164
+ options?: UseMutationOptions<TData, TError, TVariables, TContext>;
165
+ clientResolver?: CacheResolver | ISigningClient;
166
+ }
167
+
168
+
169
+ export interface UseMutationBuilderOptions<TMsg> {
170
+ builderMutationFn: (
171
+ client: ISigningClient,
172
+ signerAddress: string,
173
+ message: TMsg | TMsg[],
174
+ fee: StdFee | 'auto',
175
+ memo: string
176
+ ) => Promise<DeliverTxResponse>,
177
+ }
178
+
179
+ const getSigningClientFromCache = (
180
+ queryClient: ReturnType<typeof useQueryClient>,
181
+ key: string,
182
+ rpcEndpoint?: string | HttpEndpoint
183
+ ): ISigningClient | undefined => {
184
+ const queryKey = rpcEndpoint ? [key, rpcEndpoint] : [key];
185
+ return queryClient.getQueryData<ISigningClient>(queryKey);
186
+ };
187
+
188
+ export function buildUseMutation<TMsg, TError>(opts: UseMutationBuilderOptions<TMsg>) {
189
+ return ({
190
+ options,
191
+ clientResolver
192
+ }: ReactMutationParams<DeliverTxResponse, TError, ITxArgs<TMsg>>) => {
193
+ const queryClient = useQueryClient({
194
+ context: options?.context
195
+ });
196
+
197
+ let signingClientResolver: ISigningClient | undefined;
198
+
199
+ if(isISigningClient(clientResolver)) {
200
+ signingClientResolver = clientResolver;
201
+ } else {
202
+ // For both CacheResolver and other cases, try to get from cache first
203
+ const key = isCacheResolver(clientResolver)
204
+ ? clientResolver.clientQueryKey || DEFAULT_SIGNING_CLIENT_QUERY_KEY
205
+ : DEFAULT_SIGNING_CLIENT_QUERY_KEY;
206
+ const endpoint = isCacheResolver(clientResolver) ? clientResolver.rpcEndpoint : undefined;
207
+
208
+ const cachedClient = getSigningClientFromCache(queryClient, key, endpoint);
209
+ signingClientResolver = cachedClient || (!isCacheResolver(clientResolver) ? clientResolver : undefined);
210
+ }
211
+
212
+ return useMutation<DeliverTxResponse, Error, ITxArgs<TMsg>>(
213
+ (reqData: ITxArgs<TMsg>) => opts.builderMutationFn(signingClientResolver!, reqData.signerAddress, reqData.message, reqData.fee, reqData.memo),
214
+ options as Omit<UseMutationOptions<DeliverTxResponse, Error, ITxArgs<TMsg>, unknown>, "mutationFn">
215
+ );
216
+ };
217
+ }
218
+ `;
219
+ };
@@ -0,0 +1,254 @@
1
+ export const getReactQueryHelperHooks = (options) => {
2
+ return `
3
+
4
+
5
+ import { getRpcClient } from './extern${options.restoreImportExtension ?? ""}'
6
+ import {
7
+ isRpc,
8
+ Rpc,
9
+ } from './helpers${options.restoreImportExtension ?? ""}'
10
+ import {
11
+ StdFee,
12
+ DeliverTxResponse,
13
+ } from './types${options.restoreImportExtension ?? ""}'
14
+ import {
15
+ ITxArgs,
16
+ EndpointOrRpc,
17
+ } from './helper-func-types${options.restoreImportExtension ?? ""}'
18
+ import { ISigningClient, isISigningClient } from "@interchainjs/cosmos/types/signing-client${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, ProtobufRpcClient } from '@cosmjs/stargate';
29
+ ${options.rpcClients.useConnectComet
30
+ ? "import { CometClient, connectComet, Tendermint34Client, Tendermint37Client } from '@cosmjs/tendermint-rpc';"
31
+ : "import { Tendermint34Client } from '@cosmjs/tendermint-rpc';"}
32
+
33
+ export const DEFAULT_RPC_CLIENT_QUERY_KEY = 'rpcClient';
34
+ export const DEFAULT_RPC_ENDPOINT_QUERY_KEY = 'rpcEndPoint';
35
+ export const DEFAULT_SIGNING_CLIENT_QUERY_KEY = 'signingClient';
36
+
37
+ export interface CacheResolver {
38
+ rpcEndpoint?: string | HttpEndpoint;
39
+ clientQueryKey?: string;
40
+ }
41
+
42
+ export function isCacheResolver(resolver: unknown) : resolver is CacheResolver {
43
+ return resolver !== null && resolver !== undefined && (resolver as CacheResolver).rpcEndpoint !== undefined && (resolver as CacheResolver).clientQueryKey !== undefined;
44
+ }
45
+
46
+ export interface ReactQueryParams<TResponse, TData = TResponse> {
47
+ options?: UseQueryOptions<TResponse, Error, TData>;
48
+ }
49
+
50
+ export interface UseRpcClientQuery<TData> extends ReactQueryParams<ProtobufRpcClient, TData> {
51
+ clientResolver?: CacheResolver;
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
+ export const useRpcClient = <TData = ProtobufRpcClient>({
89
+ options,
90
+ clientResolver
91
+ }: UseRpcClientQuery<TData>) => {
92
+ const queryClient = useQueryClient({
93
+ context: options?.context
94
+ });
95
+
96
+ const key = clientResolver?.clientQueryKey || DEFAULT_RPC_CLIENT_QUERY_KEY;
97
+ return useQuery<ProtobufRpcClient, Error, TData>([key, clientResolver?.rpcEndpoint], async () => {
98
+ if(!clientResolver?.rpcEndpoint) {
99
+ throw new Error('rpcEndpoint is required');
100
+ }
101
+
102
+ const client = await getRpcClient(clientResolver.rpcEndpoint);
103
+ if(!client) {
104
+ throw new Error('Failed to connect to rpc client');
105
+ }
106
+
107
+ queryClient.setQueryData([key], client);
108
+
109
+ return client;
110
+ }, options);
111
+ };
112
+
113
+ ${options.rpcClients.useConnectComet
114
+ ? "interface UseTendermintClient extends ReactQueryParams<Tendermint34Client | Tendermint37Client | CometClient> {"
115
+ : "interface UseTendermintClient extends ReactQueryParams<Tendermint34Client> {"}
116
+ rpcEndpoint: string | HttpEndpoint;
117
+ }
118
+
119
+ /**
120
+ * Hook that uses react-query to cache a connected tendermint client.
121
+ */
122
+ export const useTendermintClient = ({
123
+ rpcEndpoint,
124
+ options,
125
+ }: UseTendermintClient) => {
126
+ ${options.rpcClients.useConnectComet
127
+ ? " const { data: client } = useQuery<Tendermint34Client | Tendermint37Client | CometClient, Error, Tendermint34Client | Tendermint37Client | CometClient>("
128
+ : " const { data: client } = useQuery<Tendermint34Client, Error, Tendermint34Client>("}
129
+ ['client', 'tendermint', rpcEndpoint],
130
+ () => ${options.rpcClients.useConnectComet
131
+ ? "connectComet(rpcEndpoint)"
132
+ : "Tendermint34Client.connect(rpcEndpoint)"},
133
+ {
134
+ // allow overriding
135
+ onError: (e) => {
136
+ throw new Error(\`Failed to connect to \${rpcEndpoint}\` + '\\n' + e)
137
+ },
138
+ ...options,
139
+ }
140
+ )
141
+ return { client }
142
+ };
143
+
144
+ export interface UseQueryBuilderOptions<TReq, TRes> {
145
+ builderQueryFn: (clientResolver?: EndpointOrRpc) => (request: TReq) => Promise<TRes>,
146
+ queryKeyPrefix: string,
147
+ }
148
+
149
+ const getRpcClientFromCache = (
150
+ queryClient: ReturnType<typeof useQueryClient>,
151
+ key: string,
152
+ rpcEndpoint?: string | HttpEndpoint
153
+ ): Rpc | undefined => {
154
+ const queryKey = rpcEndpoint ? [key, rpcEndpoint] : [key];
155
+ return queryClient.getQueryData<Rpc>(queryKey);
156
+ };
157
+
158
+ export function buildUseQuery<TReq, TRes>(opts: UseQueryBuilderOptions<TReq, TRes>) {
159
+ return <TData = TRes>({
160
+ request,
161
+ options,
162
+ clientResolver,
163
+ customizedQueryKey,
164
+ }: UseQueryParams<TReq, TRes, TData>) => {
165
+ const queryClient = useQueryClient({
166
+ context: options?.context
167
+ });
168
+
169
+ let rpcResolver: EndpointOrRpc | undefined;
170
+
171
+ if(isRpc(clientResolver)) {
172
+ rpcResolver = clientResolver;
173
+ } else {
174
+ const key = isCacheResolver(clientResolver)
175
+ ? clientResolver.clientQueryKey || DEFAULT_RPC_CLIENT_QUERY_KEY
176
+ : DEFAULT_RPC_CLIENT_QUERY_KEY;
177
+ const endpoint = isCacheResolver(clientResolver) ? clientResolver.rpcEndpoint : undefined;
178
+
179
+ const cachedClient = getRpcClientFromCache(queryClient, key, endpoint);
180
+ // For CacheResolver with endpoint, use endpoint as fallback if no cached client
181
+ rpcResolver = cachedClient ||
182
+ (isCacheResolver(clientResolver) && clientResolver.rpcEndpoint ? clientResolver.rpcEndpoint :
183
+ (!isCacheResolver(clientResolver) ? clientResolver : undefined));
184
+ }
185
+
186
+ const queryFn = opts.builderQueryFn(rpcResolver);
187
+ return useQuery<TRes, Error, TData>(customizedQueryKey || [opts.queryKeyPrefix, request], () => queryFn(request), options);
188
+ };
189
+ }
190
+
191
+ export interface UseQueryParams<TReq, TRes, TData = TRes> extends ReactQueryParams<TRes, TData> {
192
+ request: TReq;
193
+ clientResolver?: CacheResolver | EndpointOrRpc;
194
+ customizedQueryKey?: QueryKey
195
+ }
196
+
197
+ export interface ReactMutationParams<TData, TError, TVariables, TContext = unknown> {
198
+ options?: UseMutationOptions<TData, TError, TVariables, TContext>;
199
+ clientResolver?: CacheResolver | ISigningClient;
200
+ }
201
+
202
+
203
+ export interface UseMutationBuilderOptions<TMsg> {
204
+ builderMutationFn: (clientResolver?: ISigningClient) => (
205
+ signerAddress: string,
206
+ message: TMsg | TMsg[],
207
+ fee: StdFee | 'auto',
208
+ memo: string
209
+ ) => Promise<DeliverTxResponse>,
210
+ }
211
+
212
+ const getSigningClientFromCache = (
213
+ queryClient: ReturnType<typeof useQueryClient>,
214
+ key: string,
215
+ rpcEndpoint?: string | HttpEndpoint
216
+ ): ISigningClient | undefined => {
217
+ const queryKey = rpcEndpoint ? [key, rpcEndpoint] : [key];
218
+ return queryClient.getQueryData<ISigningClient>(queryKey);
219
+ };
220
+
221
+ export function buildUseMutation<TMsg, TError>(opts: UseMutationBuilderOptions<TMsg>) {
222
+ return ({
223
+ options,
224
+ clientResolver
225
+ }: ReactMutationParams<DeliverTxResponse, TError, ITxArgs<TMsg>>) => {
226
+ const queryClient = useQueryClient({
227
+ context: options?.context
228
+ });
229
+
230
+ let signingClientResolver: ISigningClient | undefined;
231
+
232
+ if(isISigningClient(clientResolver)) {
233
+ signingClientResolver = clientResolver;
234
+ } else {
235
+ // For both CacheResolver and other cases, try to get from cache first
236
+ const key = isCacheResolver(clientResolver)
237
+ ? clientResolver.clientQueryKey || DEFAULT_SIGNING_CLIENT_QUERY_KEY
238
+ : DEFAULT_SIGNING_CLIENT_QUERY_KEY;
239
+ const endpoint = isCacheResolver(clientResolver) ? clientResolver.rpcEndpoint : undefined;
240
+
241
+ const cachedClient = getSigningClientFromCache(queryClient, key, endpoint);
242
+ signingClientResolver = cachedClient || (!isCacheResolver(clientResolver) ? clientResolver : undefined);
243
+ }
244
+
245
+ const mutationFn = opts.builderMutationFn(signingClientResolver);
246
+
247
+ return useMutation<DeliverTxResponse, Error, ITxArgs<TMsg>>(
248
+ (reqData: ITxArgs<TMsg>) => mutationFn(reqData.signerAddress, reqData.message, reqData.fee, reqData.memo),
249
+ options as Omit<UseMutationOptions<DeliverTxResponse, Error, ITxArgs<TMsg>, unknown>, "mutationFn">
250
+ );
251
+ };
252
+ }
253
+ `;
254
+ };
@@ -0,0 +1,89 @@
1
+ export const getReactQueryHelper = (options) => {
2
+ return `import { getRpcClient } from './extern${options.restoreImportExtension ?? ""}'
3
+ import {
4
+ useQuery,
5
+ UseQueryOptions,
6
+ } from '@tanstack/react-query';
7
+
8
+ import { HttpEndpoint, ProtobufRpcClient } from '@cosmjs/stargate';
9
+ ${options.rpcClients.useConnectComet
10
+ ? "import { CometClient, connectComet, Tendermint34Client, Tendermint37Client } from '@cosmjs/tendermint-rpc';"
11
+ : "import { Tendermint34Client } from '@cosmjs/tendermint-rpc';"}
12
+
13
+ export interface ReactQueryParams<TResponse, TData = TResponse> {
14
+ options?: UseQueryOptions<TResponse, Error, TData>;
15
+ }
16
+
17
+ export interface UseRpcClientQuery<TData> extends ReactQueryParams<ProtobufRpcClient, TData> {
18
+ rpcEndpoint: string | HttpEndpoint;
19
+ }
20
+
21
+ ${options.reactQuery.needExtraQueryKey
22
+ ? `export interface UseRpcEndpointQuery<TData> extends ReactQueryParams<string | HttpEndpoint, TData> {
23
+ getter: () => Promise<string | HttpEndpoint>;
24
+ extraKey?: string
25
+ }
26
+
27
+ export const useRpcEndpoint = <TData = string | HttpEndpoint>({
28
+ getter,
29
+ options,
30
+ extraKey
31
+ }: UseRpcEndpointQuery<TData>) => {
32
+ return useQuery<string | HttpEndpoint, Error, TData>(['rpcEndpoint', extraKey], async () => {
33
+ return await getter();
34
+ }, options);
35
+ };`
36
+ : `export interface UseRpcEndpointQuery<TData> extends ReactQueryParams<string | HttpEndpoint, TData> {
37
+ getter: () => Promise<string | HttpEndpoint>;
38
+ }
39
+
40
+ export const useRpcEndpoint = <TData = string | HttpEndpoint>({
41
+ getter,
42
+ options,
43
+ }: UseRpcEndpointQuery<TData>) => {
44
+ return useQuery<string | HttpEndpoint, Error, TData>(['rpcEndpoint', getter], async () => {
45
+ return await getter();
46
+ }, options);
47
+ };`}
48
+
49
+ export const useRpcClient = <TData = ProtobufRpcClient>({
50
+ rpcEndpoint,
51
+ options,
52
+ }: UseRpcClientQuery<TData>) => {
53
+ return useQuery<ProtobufRpcClient, Error, TData>(['rpcClient', rpcEndpoint], async () => {
54
+ return await getRpcClient(rpcEndpoint);
55
+ }, options);
56
+ };
57
+
58
+ ${options.rpcClients.useConnectComet
59
+ ? "interface UseTendermintClient extends ReactQueryParams<Tendermint34Client | Tendermint37Client | CometClient> {"
60
+ : "interface UseTendermintClient extends ReactQueryParams<Tendermint34Client> {"}
61
+ rpcEndpoint: string | HttpEndpoint;
62
+ }
63
+
64
+ /**
65
+ * Hook that uses react-query to cache a connected tendermint client.
66
+ */
67
+ export const useTendermintClient = ({
68
+ rpcEndpoint,
69
+ options,
70
+ }: UseTendermintClient) => {
71
+ ${options.rpcClients.useConnectComet
72
+ ? " const { data: client } = useQuery<Tendermint34Client | Tendermint37Client | CometClient, Error, Tendermint34Client | Tendermint37Client | CometClient>("
73
+ : " const { data: client } = useQuery<Tendermint34Client, Error, Tendermint34Client>("}
74
+ ['client', 'tendermint', rpcEndpoint],
75
+ () => ${options.rpcClients.useConnectComet
76
+ ? "connectComet(rpcEndpoint)"
77
+ : "Tendermint34Client.connect(rpcEndpoint)"},
78
+ {
79
+ // allow overriding
80
+ onError: (e) => {
81
+ throw new Error(\`Failed to connect to \${rpcEndpoint}\` + '\\n' + e)
82
+ },
83
+ ...options,
84
+ }
85
+ )
86
+ return { client }
87
+ };
88
+ `;
89
+ };