@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.
- package/README.md +1529 -0
- package/main/build.js +183 -0
- package/main/builder.js +229 -0
- package/main/bundle.js +162 -0
- package/main/bundler.js +100 -0
- package/main/cli.js +71 -0
- package/main/cmds.js +28 -0
- package/main/commands/download.js +122 -0
- package/main/commands/generate.js +151 -0
- package/main/commands/install.js +143 -0
- package/main/commands/transpile.js +197 -0
- package/main/contracts/generate.js +31 -0
- package/main/contracts/install.js +107 -0
- package/main/contracts/message-composer.js +31 -0
- package/main/contracts/react-query.js +31 -0
- package/main/contracts/recoil.js +31 -0
- package/main/file.js +20 -0
- package/main/generators/create-aggregated-lcd-client.js +87 -0
- package/main/generators/create-all-stargate-clients.js +96 -0
- package/main/generators/create-amino-converters.js +43 -0
- package/main/generators/create-bundle.js +83 -0
- package/main/generators/create-cosmwasm-bundle.js +15 -0
- package/main/generators/create-custom-stargate-clients.js +100 -0
- package/main/generators/create-helpers.js +119 -0
- package/main/generators/create-index.js +75 -0
- package/main/generators/create-lcd-client-all.js +116 -0
- package/main/generators/create-lcd-client-scoped.js +89 -0
- package/main/generators/create-lcd-clients.js +78 -0
- package/main/generators/create-mcp-server.js +1853 -0
- package/main/generators/create-mobx-bundle.js +52 -0
- package/main/generators/create-msg-funcs.js +132 -0
- package/main/generators/create-pinia-store-bundle.js +50 -0
- package/main/generators/create-pinia-store.js +90 -0
- package/main/generators/create-query-funcs.js +133 -0
- package/main/generators/create-react-query-bundle.js +103 -0
- package/main/generators/create-registries.js +49 -0
- package/main/generators/create-root-readme.js +259 -0
- package/main/generators/create-rpc-msg-client-all.js +135 -0
- package/main/generators/create-rpc-msg-client-scoped.js +114 -0
- package/main/generators/create-rpc-msg-clients.js +116 -0
- package/main/generators/create-rpc-ops-bundle.js +119 -0
- package/main/generators/create-rpc-query-client-all.js +137 -0
- package/main/generators/create-rpc-query-client-scoped.js +110 -0
- package/main/generators/create-rpc-query-clients.js +198 -0
- package/main/generators/create-sdk-module-stargate-clients.js +95 -0
- package/main/generators/create-stargate-clients.js +96 -0
- package/main/generators/create-types.js +164 -0
- package/main/generators/customize-utils.js +50 -0
- package/main/helpers/__test__/internalTimestamp.js +49 -0
- package/main/helpers/__test__/internalTimestampBigint.js +45 -0
- package/main/helpers/binary-coder.js +535 -0
- package/main/helpers/decimals.js +111 -0
- package/main/helpers/external-comet.js +52 -0
- package/main/helpers/external-icjs.js +36 -0
- package/main/helpers/external.js +31 -0
- package/main/helpers/grpc-gateway.js +348 -0
- package/main/helpers/grpc-web.js +14 -0
- package/main/helpers/helper-func-types-interface.js +106 -0
- package/main/helpers/helper-func-types.js +93 -0
- package/main/helpers/index.js +38 -0
- package/main/helpers/internal-for-bigint.js +259 -0
- package/main/helpers/internal.js +240 -0
- package/main/helpers/json-safe.js +12 -0
- package/main/helpers/mobx.js +80 -0
- package/main/helpers/pinia-endpoint.js +20 -0
- package/main/helpers/react-query-hooks-icjs.js +223 -0
- package/main/helpers/react-query-hooks.js +258 -0
- package/main/helpers/react-query.js +93 -0
- package/main/helpers/registry-helper.js +229 -0
- package/main/helpers/types-helper.js +165 -0
- package/main/helpers/utf8-helper.js +146 -0
- package/main/helpers/varint.js +486 -0
- package/main/helpers/vue-query-hooks.js +226 -0
- package/main/imports.js +416 -0
- package/main/index.js +24 -0
- package/main/parse.js +194 -0
- package/main/prompt.js +64 -0
- package/main/protod/bufbuild.js +87 -0
- package/main/protod/config.js +30 -0
- package/main/protod/git-repo.js +58 -0
- package/main/protod/index.js +17 -0
- package/main/protod/recursive.js +134 -0
- package/main/protod/types.js +2 -0
- package/main/protod/utils.js +91 -0
- package/main/telescope.js +10 -0
- package/main/types.js +2 -0
- package/main/utils/common-create-bundle.js +29 -0
- package/main/utils/contracts.js +39 -0
- package/main/utils/files.js +138 -0
- package/main/utils/index.js +163 -0
- package/main/utils/unused.js +73 -0
- package/module/build.js +176 -0
- package/module/builder.js +222 -0
- package/module/bundle.js +128 -0
- package/module/bundler.js +96 -0
- package/module/cli.js +44 -0
- package/module/cmds.js +22 -0
- package/module/commands/download.js +94 -0
- package/module/commands/generate.js +123 -0
- package/module/commands/install.js +141 -0
- package/module/commands/transpile.js +169 -0
- package/module/contracts/generate.js +29 -0
- package/module/contracts/install.js +105 -0
- package/module/contracts/message-composer.js +29 -0
- package/module/contracts/react-query.js +29 -0
- package/module/contracts/recoil.js +29 -0
- package/module/file.js +18 -0
- package/module/generators/create-aggregated-lcd-client.js +83 -0
- package/module/generators/create-all-stargate-clients.js +92 -0
- package/module/generators/create-amino-converters.js +39 -0
- package/module/generators/create-bundle.js +79 -0
- package/module/generators/create-cosmwasm-bundle.js +11 -0
- package/module/generators/create-custom-stargate-clients.js +96 -0
- package/module/generators/create-helpers.js +112 -0
- package/module/generators/create-index.js +45 -0
- package/module/generators/create-lcd-client-all.js +89 -0
- package/module/generators/create-lcd-client-scoped.js +62 -0
- package/module/generators/create-lcd-clients.js +74 -0
- package/module/generators/create-mcp-server.js +1849 -0
- package/module/generators/create-mobx-bundle.js +25 -0
- package/module/generators/create-msg-funcs.js +128 -0
- package/module/generators/create-pinia-store-bundle.js +23 -0
- package/module/generators/create-pinia-store.js +86 -0
- package/module/generators/create-query-funcs.js +129 -0
- package/module/generators/create-react-query-bundle.js +76 -0
- package/module/generators/create-registries.js +45 -0
- package/module/generators/create-root-readme.js +255 -0
- package/module/generators/create-rpc-msg-client-all.js +108 -0
- package/module/generators/create-rpc-msg-client-scoped.js +87 -0
- package/module/generators/create-rpc-msg-clients.js +112 -0
- package/module/generators/create-rpc-ops-bundle.js +92 -0
- package/module/generators/create-rpc-query-client-all.js +110 -0
- package/module/generators/create-rpc-query-client-scoped.js +83 -0
- package/module/generators/create-rpc-query-clients.js +198 -0
- package/module/generators/create-sdk-module-stargate-clients.js +91 -0
- package/module/generators/create-stargate-clients.js +92 -0
- package/module/generators/create-types.js +137 -0
- package/module/generators/customize-utils.js +46 -0
- package/module/helpers/__test__/internalTimestamp.js +39 -0
- package/module/helpers/__test__/internalTimestampBigint.js +38 -0
- package/module/helpers/binary-coder.js +531 -0
- package/module/helpers/decimals.js +108 -0
- package/module/helpers/external-comet.js +49 -0
- package/module/helpers/external-icjs.js +33 -0
- package/module/helpers/external.js +28 -0
- package/module/helpers/grpc-gateway.js +345 -0
- package/module/helpers/grpc-web.js +11 -0
- package/module/helpers/helper-func-types-interface.js +102 -0
- package/module/helpers/helper-func-types.js +89 -0
- package/module/helpers/index.js +22 -0
- package/module/helpers/internal-for-bigint.js +255 -0
- package/module/helpers/internal.js +236 -0
- package/module/helpers/json-safe.js +9 -0
- package/module/helpers/mobx.js +77 -0
- package/module/helpers/pinia-endpoint.js +17 -0
- package/module/helpers/react-query-hooks-icjs.js +219 -0
- package/module/helpers/react-query-hooks.js +254 -0
- package/module/helpers/react-query.js +89 -0
- package/module/helpers/registry-helper.js +225 -0
- package/module/helpers/types-helper.js +161 -0
- package/module/helpers/utf8-helper.js +143 -0
- package/module/helpers/varint.js +483 -0
- package/module/helpers/vue-query-hooks.js +222 -0
- package/module/imports.js +382 -0
- package/module/index.js +8 -0
- package/module/parse.js +185 -0
- package/module/prompt.js +58 -0
- package/module/protod/bufbuild.js +76 -0
- package/module/protod/config.js +27 -0
- package/module/protod/git-repo.js +54 -0
- package/module/protod/index.js +1 -0
- package/module/protod/recursive.js +125 -0
- package/module/protod/types.js +1 -0
- package/module/protod/utils.js +77 -0
- package/module/telescope.js +8 -0
- package/module/types.js +1 -0
- package/module/utils/common-create-bundle.js +25 -0
- package/module/utils/contracts.js +33 -0
- package/module/utils/files.js +106 -0
- package/module/utils/index.js +143 -0
- package/module/utils/unused.js +47 -0
- package/package.json +115 -0
- package/src/build.ts +255 -0
- package/src/builder.ts +302 -0
- package/src/bundle.ts +160 -0
- package/src/bundler.ts +153 -0
- package/src/cli.js +51 -0
- package/src/cmds.js +25 -0
- package/src/commands/download.ts +120 -0
- package/src/commands/generate.ts +156 -0
- package/src/commands/install.ts +154 -0
- package/src/commands/transpile.ts +198 -0
- package/src/contracts/generate.ts +33 -0
- package/src/contracts/install.ts +118 -0
- package/src/contracts/message-composer.ts +34 -0
- package/src/contracts/react-query.ts +33 -0
- package/src/contracts/recoil.ts +32 -0
- package/src/file.js +20 -0
- package/src/generators/create-aggregated-lcd-client.ts +133 -0
- package/src/generators/create-all-stargate-clients.ts +121 -0
- package/src/generators/create-amino-converters.ts +62 -0
- package/src/generators/create-bundle.ts +97 -0
- package/src/generators/create-cosmwasm-bundle.ts +17 -0
- package/src/generators/create-custom-stargate-clients.ts +128 -0
- package/src/generators/create-helpers.ts +196 -0
- package/src/generators/create-index.ts +72 -0
- package/src/generators/create-lcd-client-all.ts +139 -0
- package/src/generators/create-lcd-client-scoped.ts +109 -0
- package/src/generators/create-lcd-clients.ts +108 -0
- package/src/generators/create-mcp-server.ts +1902 -0
- package/src/generators/create-mobx-bundle.ts +31 -0
- package/src/generators/create-msg-funcs.ts +219 -0
- package/src/generators/create-pinia-store-bundle.ts +35 -0
- package/src/generators/create-pinia-store.ts +121 -0
- package/src/generators/create-query-funcs.ts +224 -0
- package/src/generators/create-react-query-bundle.ts +111 -0
- package/src/generators/create-registries.ts +70 -0
- package/src/generators/create-root-readme.ts +316 -0
- package/src/generators/create-rpc-msg-client-all.ts +167 -0
- package/src/generators/create-rpc-msg-client-scoped.ts +147 -0
- package/src/generators/create-rpc-msg-clients.ts +165 -0
- package/src/generators/create-rpc-ops-bundle.ts +155 -0
- package/src/generators/create-rpc-query-client-all.ts +173 -0
- package/src/generators/create-rpc-query-client-scoped.ts +142 -0
- package/src/generators/create-rpc-query-clients.ts +304 -0
- package/src/generators/create-sdk-module-stargate-clients.ts +120 -0
- package/src/generators/create-stargate-clients.ts +123 -0
- package/src/generators/create-types.ts +236 -0
- package/src/generators/customize-utils.ts +54 -0
- package/src/helpers/__test__/internalTimestamp.test.ts +79 -0
- package/src/helpers/__test__/internalTimestamp.ts +58 -0
- package/src/helpers/__test__/internalTimestampBigint.test.ts +78 -0
- package/src/helpers/__test__/internalTimestampBigint.ts +58 -0
- package/src/helpers/binary-coder.ts +533 -0
- package/src/helpers/decimals.ts +108 -0
- package/src/helpers/external-comet.ts +49 -0
- package/src/helpers/external-icjs.ts +33 -0
- package/src/helpers/external.ts +28 -0
- package/src/helpers/grpc-gateway.ts +345 -0
- package/src/helpers/grpc-web.ts +11 -0
- package/src/helpers/helper-func-types-interface.ts +104 -0
- package/src/helpers/helper-func-types.ts +91 -0
- package/src/helpers/index.ts +22 -0
- package/src/helpers/internal-for-bigint.ts +257 -0
- package/src/helpers/internal.ts +238 -0
- package/src/helpers/json-safe.ts +11 -0
- package/src/helpers/mobx.ts +77 -0
- package/src/helpers/pinia-endpoint.ts +17 -0
- package/src/helpers/react-query-hooks-icjs.ts +223 -0
- package/src/helpers/react-query-hooks.ts +266 -0
- package/src/helpers/react-query.ts +101 -0
- package/src/helpers/registry-helper.ts +227 -0
- package/src/helpers/types-helper.ts +169 -0
- package/src/helpers/utf8-helper.ts +143 -0
- package/src/helpers/varint.ts +483 -0
- package/src/helpers/vue-query-hooks.ts +224 -0
- package/src/imports.ts +499 -0
- package/src/index.ts +12 -0
- package/src/parse.ts +243 -0
- package/src/prompt.js +65 -0
- package/src/protod/bufbuild.spec.ts +80 -0
- package/src/protod/bufbuild.ts +95 -0
- package/src/protod/config.ts +30 -0
- package/src/protod/git-repo.ts +74 -0
- package/src/protod/index.ts +1 -0
- package/src/protod/recursive.spec.ts +164 -0
- package/src/protod/recursive.ts +180 -0
- package/src/protod/test-data/.protod.config.json +42 -0
- package/src/protod/test-data/buf.lock +23 -0
- package/src/protod/test-data/buf.yaml +25 -0
- package/src/protod/test-data/buf2.yaml +20 -0
- package/src/protod/test-data/cosmos/buf.lock +23 -0
- package/src/protod/test-data/cosmos/crypto/secp256k1/keys.proto +38 -0
- package/src/protod/test-data/model.proto +101 -0
- package/src/protod/types.ts +55 -0
- package/src/protod/utils.spec.ts +68 -0
- package/src/protod/utils.ts +90 -0
- package/src/telescope.js +9 -0
- package/src/types.ts +46 -0
- package/src/utils/common-create-bundle.ts +62 -0
- package/src/utils/contracts.ts +37 -0
- package/src/utils/files.ts +145 -0
- package/src/utils/index.ts +150 -0
- package/src/utils/unused.ts +52 -0
- package/types/build.d.ts +41 -0
- package/types/builder.d.ts +50 -0
- package/types/bundle.d.ts +30 -0
- package/types/bundler.d.ts +31 -0
- package/types/cli.d.ts +1 -0
- package/types/cmds.d.ts +11 -0
- package/types/commands/download.d.ts +5 -0
- package/types/commands/generate.d.ts +2 -0
- package/types/commands/install.d.ts +2 -0
- package/types/commands/transpile.d.ts +4 -0
- package/types/contracts/generate.d.ts +2 -0
- package/types/contracts/install.d.ts +2 -0
- package/types/contracts/message-composer.d.ts +2 -0
- package/types/contracts/react-query.d.ts +2 -0
- package/types/contracts/recoil.d.ts +2 -0
- package/types/file.d.ts +2 -0
- package/types/generators/create-aggregated-lcd-client.d.ts +2 -0
- package/types/generators/create-all-stargate-clients.d.ts +3 -0
- package/types/generators/create-amino-converters.d.ts +3 -0
- package/types/generators/create-bundle.d.ts +3 -0
- package/types/generators/create-combined-stargate-clients.d.ts +3 -0
- package/types/generators/create-cosmwasm-bundle.d.ts +2 -0
- package/types/generators/create-custom-stargate-clients.d.ts +3 -0
- package/types/generators/create-helpers.d.ts +2 -0
- package/types/generators/create-index.d.ts +2 -0
- package/types/generators/create-lcd-client-all.d.ts +3 -0
- package/types/generators/create-lcd-client-scoped.d.ts +3 -0
- package/types/generators/create-lcd-clients.d.ts +3 -0
- package/types/generators/create-mcp-server.d.ts +3 -0
- package/types/generators/create-mobx-bundle.d.ts +2 -0
- package/types/generators/create-msg-funcs.d.ts +3 -0
- package/types/generators/create-pinia-store-bundle.d.ts +2 -0
- package/types/generators/create-pinia-store.d.ts +3 -0
- package/types/generators/create-query-funcs.d.ts +3 -0
- package/types/generators/create-react-query-bundle.d.ts +2 -0
- package/types/generators/create-registries.d.ts +3 -0
- package/types/generators/create-root-readme.d.ts +2 -0
- package/types/generators/create-rpc-msg-client-all.d.ts +3 -0
- package/types/generators/create-rpc-msg-client-scoped.d.ts +3 -0
- package/types/generators/create-rpc-msg-clients.d.ts +3 -0
- package/types/generators/create-rpc-ops-bundle.d.ts +2 -0
- package/types/generators/create-rpc-query-client-all.d.ts +3 -0
- package/types/generators/create-rpc-query-client-scoped.d.ts +3 -0
- package/types/generators/create-rpc-query-clients.d.ts +3 -0
- package/types/generators/create-scoped-stargate-clients.d.ts +3 -0
- package/types/generators/create-sdk-module-stargate-clients.d.ts +3 -0
- package/types/generators/create-stargate-clients.d.ts +3 -0
- package/types/generators/create-types.d.ts +3 -0
- package/types/generators/create-unified-stargate-clients.d.ts +3 -0
- package/types/generators/customize-utils.d.ts +2 -0
- package/types/helpers/__test__/internalTimestamp.d.ts +21 -0
- package/types/helpers/__test__/internalTimestampBigint.d.ts +20 -0
- package/types/helpers/binary-coder.d.ts +2 -0
- package/types/helpers/decimals.d.ts +1 -0
- package/types/helpers/external-comet.d.ts +1 -0
- package/types/helpers/external-icjs.d.ts +1 -0
- package/types/helpers/external.d.ts +1 -0
- package/types/helpers/generated-type.d.ts +1 -0
- package/types/helpers/grpc-gateway.d.ts +1 -0
- package/types/helpers/grpc-web.d.ts +1 -0
- package/types/helpers/helper-func-types-interface.d.ts +2 -0
- package/types/helpers/helper-func-types.d.ts +2 -0
- package/types/helpers/index.d.ts +22 -0
- package/types/helpers/internal-for-bigint.d.ts +2 -0
- package/types/helpers/internal.d.ts +2 -0
- package/types/helpers/internalForBigInt.d.ts +1 -0
- package/types/helpers/json-safe.d.ts +1 -0
- package/types/helpers/mobx.d.ts +1 -0
- package/types/helpers/pinia-endpoint.d.ts +1 -0
- package/types/helpers/react-query-hooks-icjs.d.ts +2 -0
- package/types/helpers/react-query-hooks.d.ts +2 -0
- package/types/helpers/react-query.d.ts +2 -0
- package/types/helpers/registry-helper.d.ts +2 -0
- package/types/helpers/types-helper.d.ts +2 -0
- package/types/helpers/types.d.ts +1 -0
- package/types/helpers/utf8-helper.d.ts +1 -0
- package/types/helpers/varint.d.ts +1 -0
- package/types/helpers/vue-query-hooks.d.ts +2 -0
- package/types/helpers/vue-query.d.ts +2 -0
- package/types/imports.d.ts +17 -0
- package/types/index.d.ts +6 -0
- package/types/parse.d.ts +15 -0
- package/types/prompt.d.ts +3 -0
- package/types/protod/bufbuild.d.ts +6 -0
- package/types/protod/config.d.ts +7 -0
- package/types/protod/git-repo.d.ts +11 -0
- package/types/protod/index.d.ts +1 -0
- package/types/protod/proto-download.d.ts +2 -0
- package/types/protod/recursive.d.ts +4 -0
- package/types/protod/types.d.ts +49 -0
- package/types/protod/utils.d.ts +11 -0
- package/types/telescope.d.ts +2 -0
- package/types/types.d.ts +43 -0
- package/types/utils/common-create-bundle.d.ts +18 -0
- package/types/utils/contracts.d.ts +6 -0
- package/types/utils/files.d.ts +5 -0
- package/types/utils/index.d.ts +16 -0
- 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
|
+
};
|