diff --git a/README.md b/README.md index b78e479da..7b0cf923e 100644 --- a/README.md +++ b/README.md @@ -444,7 +444,7 @@ See [LCD Clients](#lcd-clients) for more info. | `rpcClients.enabledServices` | which services to enable | [`Msg`,`Query`,`Service`] | | `rpcClients.instantOps` | will generate instant rpc operations in the file `service-ops.ts` under root folder, which contains customized classes having selected rpc methods | `undefined` | | `rpcClients.useConnectComet` | will use connectComet function to get a tendermint client | `undefined` | -| `rpcClients.useQueryClientResolver` | allow user to pass a query client resolver to create query client in createRPCQueryClient function | `undefined` | +| `rpcClients.useMakeClient` | allow user to pass a query client resolver to create query client in createRPCQueryClient function | `undefined` | | `rpcClients.serviceImplement` | assign implement type of rpc methods, `Query` or `Tx`, by setting patterns under service types. | `undefined` | `rpcClients.clientStyle.useUpdatedClientStyle` | The default value is `false`, which sets the generated client to use the legacy style. Setting it to `true` applies the updated style and activates the remaining options in clientStyle. | `false` | `rpcClients.clientStyle.type` | A string array containing possible values: `all-client`, `sdk-module-client`, and `custom-client`. The value `all-client` generates an all-module-client file. The value `sdk-module-client` generates a client for the module specified by the `sdkModuleClientOption`. The value `custom-client` generates a customized client as specified by `customClientOption` | `undefined` diff --git a/__fixtures__/v-next/outputv4/akash/rpc.query.ts b/__fixtures__/v-next/outputv4/akash/rpc.query.ts index 7e9062910..d5c203197 100644 --- a/__fixtures__/v-next/outputv4/akash/rpc.query.ts +++ b/__fixtures__/v-next/outputv4/akash/rpc.query.ts @@ -4,12 +4,13 @@ import { QueryClient } from "@cosmjs/stargate"; import { createConnectCometQueryClient } from "../extern.js"; export const createRPCQueryClient = async ({ rpcEndpoint, - queryClientResolver + makeClient }: { rpcEndpoint: string | HttpEndpoint; - queryClientResolver: (rpcEndpoint: string | HttpEndpoint) => Promise; + makeClient?: (rpcEndpoint: string | HttpEndpoint) => Promise; }) => { - let client = queryClientResolver ? await queryClientResolver(rpcEndpoint) : await createConnectCometQueryClient(rpcEndpoint); + const make = makeClient || createConnectCometQueryClient; + const client = await make(rpcEndpoint); return { akash: { audit: { diff --git a/__fixtures__/v-next/outputv4/cosmos/cosmos-rpc-client.query.ts b/__fixtures__/v-next/outputv4/cosmos/cosmos-rpc-client.query.ts index cabcb76ba..09ce38a6b 100644 --- a/__fixtures__/v-next/outputv4/cosmos/cosmos-rpc-client.query.ts +++ b/__fixtures__/v-next/outputv4/cosmos/cosmos-rpc-client.query.ts @@ -4,12 +4,13 @@ import { QueryClient } from "@cosmjs/stargate"; import { createConnectCometQueryClient } from "../extern.js"; export const createCosmicRPCQueryClient = async ({ rpcEndpoint, - queryClientResolver + makeClient }: { rpcEndpoint: string | HttpEndpoint; - queryClientResolver: (rpcEndpoint: string | HttpEndpoint) => Promise; + makeClient?: (rpcEndpoint: string | HttpEndpoint) => Promise; }) => { - let client = queryClientResolver ? await queryClientResolver(rpcEndpoint) : await createConnectCometQueryClient(rpcEndpoint); + const make = makeClient || createConnectCometQueryClient; + const client = await make(rpcEndpoint); return { cosmos: { bank: { diff --git a/__fixtures__/v-next/outputv4/cosmos/rpc.query.ts b/__fixtures__/v-next/outputv4/cosmos/rpc.query.ts index 71f3bbd4a..807819bad 100644 --- a/__fixtures__/v-next/outputv4/cosmos/rpc.query.ts +++ b/__fixtures__/v-next/outputv4/cosmos/rpc.query.ts @@ -4,12 +4,13 @@ import { QueryClient } from "@cosmjs/stargate"; import { createConnectCometQueryClient } from "../extern.js"; export const createRPCQueryClient = async ({ rpcEndpoint, - queryClientResolver + makeClient }: { rpcEndpoint: string | HttpEndpoint; - queryClientResolver: (rpcEndpoint: string | HttpEndpoint) => Promise; + makeClient?: (rpcEndpoint: string | HttpEndpoint) => Promise; }) => { - let client = queryClientResolver ? await queryClientResolver(rpcEndpoint) : await createConnectCometQueryClient(rpcEndpoint); + const make = makeClient || createConnectCometQueryClient; + const client = await make(rpcEndpoint); return { cosmos: { app: { diff --git a/__fixtures__/v-next/outputv4/cosmwasm/rpc.query.ts b/__fixtures__/v-next/outputv4/cosmwasm/rpc.query.ts index 1396ba338..ccca1c354 100644 --- a/__fixtures__/v-next/outputv4/cosmwasm/rpc.query.ts +++ b/__fixtures__/v-next/outputv4/cosmwasm/rpc.query.ts @@ -4,12 +4,13 @@ import { QueryClient } from "@cosmjs/stargate"; import { createConnectCometQueryClient } from "../extern.js"; export const createRPCQueryClient = async ({ rpcEndpoint, - queryClientResolver + makeClient }: { rpcEndpoint: string | HttpEndpoint; - queryClientResolver: (rpcEndpoint: string | HttpEndpoint) => Promise; + makeClient?: (rpcEndpoint: string | HttpEndpoint) => Promise; }) => { - let client = queryClientResolver ? await queryClientResolver(rpcEndpoint) : await createConnectCometQueryClient(rpcEndpoint); + const make = makeClient || createConnectCometQueryClient; + const client = await make(rpcEndpoint); return { cosmos: { app: { diff --git a/__fixtures__/v-next/outputv4/evmos/evmos-rpc-client.query.ts b/__fixtures__/v-next/outputv4/evmos/evmos-rpc-client.query.ts index aad6b909b..d8dda3506 100644 --- a/__fixtures__/v-next/outputv4/evmos/evmos-rpc-client.query.ts +++ b/__fixtures__/v-next/outputv4/evmos/evmos-rpc-client.query.ts @@ -4,12 +4,13 @@ import { QueryClient } from "@cosmjs/stargate"; import { createConnectCometQueryClient } from "../extern.js"; export const createEvmosRPCQueryClient = async ({ rpcEndpoint, - queryClientResolver + makeClient }: { rpcEndpoint: string | HttpEndpoint; - queryClientResolver: (rpcEndpoint: string | HttpEndpoint) => Promise; + makeClient?: (rpcEndpoint: string | HttpEndpoint) => Promise; }) => { - let client = queryClientResolver ? await queryClientResolver(rpcEndpoint) : await createConnectCometQueryClient(rpcEndpoint); + const make = makeClient || createConnectCometQueryClient; + const client = await make(rpcEndpoint); return { cosmos: { bank: { diff --git a/__fixtures__/v-next/outputv4/evmos/rpc.query.ts b/__fixtures__/v-next/outputv4/evmos/rpc.query.ts index 926159c77..64afe57b2 100644 --- a/__fixtures__/v-next/outputv4/evmos/rpc.query.ts +++ b/__fixtures__/v-next/outputv4/evmos/rpc.query.ts @@ -4,12 +4,13 @@ import { QueryClient } from "@cosmjs/stargate"; import { createConnectCometQueryClient } from "../extern.js"; export const createRPCQueryClient = async ({ rpcEndpoint, - queryClientResolver + makeClient }: { rpcEndpoint: string | HttpEndpoint; - queryClientResolver: (rpcEndpoint: string | HttpEndpoint) => Promise; + makeClient?: (rpcEndpoint: string | HttpEndpoint) => Promise; }) => { - let client = queryClientResolver ? await queryClientResolver(rpcEndpoint) : await createConnectCometQueryClient(rpcEndpoint); + const make = makeClient || createConnectCometQueryClient; + const client = await make(rpcEndpoint); return { cosmos: { app: { diff --git a/__fixtures__/v-next/outputv4/ibc/rpc.query.ts b/__fixtures__/v-next/outputv4/ibc/rpc.query.ts index 883d5f6be..a16a48891 100644 --- a/__fixtures__/v-next/outputv4/ibc/rpc.query.ts +++ b/__fixtures__/v-next/outputv4/ibc/rpc.query.ts @@ -4,12 +4,13 @@ import { QueryClient } from "@cosmjs/stargate"; import { createConnectCometQueryClient } from "../extern.js"; export const createRPCQueryClient = async ({ rpcEndpoint, - queryClientResolver + makeClient }: { rpcEndpoint: string | HttpEndpoint; - queryClientResolver: (rpcEndpoint: string | HttpEndpoint) => Promise; + makeClient?: (rpcEndpoint: string | HttpEndpoint) => Promise; }) => { - let client = queryClientResolver ? await queryClientResolver(rpcEndpoint) : await createConnectCometQueryClient(rpcEndpoint); + const make = makeClient || createConnectCometQueryClient; + const client = await make(rpcEndpoint); return { cosmos: { app: { diff --git a/__fixtures__/v-next/outputv4/osmosis/rpc.query.ts b/__fixtures__/v-next/outputv4/osmosis/rpc.query.ts index edc8dafd5..d90657d92 100644 --- a/__fixtures__/v-next/outputv4/osmosis/rpc.query.ts +++ b/__fixtures__/v-next/outputv4/osmosis/rpc.query.ts @@ -4,12 +4,13 @@ import { QueryClient } from "@cosmjs/stargate"; import { createConnectCometQueryClient } from "../extern.js"; export const createRPCQueryClient = async ({ rpcEndpoint, - queryClientResolver + makeClient }: { rpcEndpoint: string | HttpEndpoint; - queryClientResolver: (rpcEndpoint: string | HttpEndpoint) => Promise; + makeClient?: (rpcEndpoint: string | HttpEndpoint) => Promise; }) => { - let client = queryClientResolver ? await queryClientResolver(rpcEndpoint) : await createConnectCometQueryClient(rpcEndpoint); + const make = makeClient || createConnectCometQueryClient; + const client = await make(rpcEndpoint); return { cosmos: { app: { diff --git a/__fixtures__/v-next/outputv4/tendermint/rpc.query.ts b/__fixtures__/v-next/outputv4/tendermint/rpc.query.ts index aabde7ecf..505685bac 100644 --- a/__fixtures__/v-next/outputv4/tendermint/rpc.query.ts +++ b/__fixtures__/v-next/outputv4/tendermint/rpc.query.ts @@ -4,12 +4,13 @@ import { QueryClient } from "@cosmjs/stargate"; import { createConnectCometQueryClient } from "../extern.js"; export const createRPCQueryClient = async ({ rpcEndpoint, - queryClientResolver + makeClient }: { rpcEndpoint: string | HttpEndpoint; - queryClientResolver: (rpcEndpoint: string | HttpEndpoint) => Promise; + makeClient?: (rpcEndpoint: string | HttpEndpoint) => Promise; }) => { - let client = queryClientResolver ? await queryClientResolver(rpcEndpoint) : await createConnectCometQueryClient(rpcEndpoint); + const make = makeClient || createConnectCometQueryClient; + const client = await make(rpcEndpoint); return { cosmos: { app: { diff --git a/packages/ast/src/clients/rpc/scoped/rpc.ts b/packages/ast/src/clients/rpc/scoped/rpc.ts index f0edefc5e..2eb1bc83f 100644 --- a/packages/ast/src/clients/rpc/scoped/rpc.ts +++ b/packages/ast/src/clients/rpc/scoped/rpc.ts @@ -1,6 +1,10 @@ import * as t from "@babel/types"; import { GenericParseContext } from "../../../encoding"; -import { objectPattern } from "../../../utils"; +import { + objectPattern, + objectProperty, + tsPropertySignature, +} from "../../../utils"; import { restoreExtension } from "@cosmology/utils"; export const rpcFuncArguments = (): t.ObjectPattern[] => { @@ -174,9 +178,7 @@ export const createScopedRpcTmFactory = ( identifier: string ) => { const newClientType = context.pluginValue("rpcClients.useConnectComet"); - const useQueryClientResolver = context.pluginValue( - "rpcClients.useQueryClientResolver" - ); + const useMakeClient = context.pluginValue("rpcClients.useMakeClient"); const extensions = context.pluginValue("rpcClients.extensions"); let functionParams; @@ -234,10 +236,10 @@ export const createScopedRpcTmFactory = ( false, true ), - useQueryClientResolver && + useMakeClient && t.objectProperty( - t.identifier("queryClientResolver"), - t.identifier("queryClientResolver"), + t.identifier("makeClient"), + t.identifier("makeClient"), false, true ), @@ -256,9 +258,9 @@ export const createScopedRpcTmFactory = ( ]) ) ), - useQueryClientResolver && - t.tsPropertySignature( - t.identifier("queryClientResolver"), + useMakeClient && + tsPropertySignature( + t.identifier("makeClient"), t.tsTypeAnnotation( t.tsFunctionType( null, @@ -278,7 +280,8 @@ export const createScopedRpcTmFactory = ( ) ) ) - ) + ), + true ), ].filter(Boolean) ) @@ -286,30 +289,30 @@ export const createScopedRpcTmFactory = ( ), ]; - if (useQueryClientResolver) { + if (useMakeClient) { let createQueryClientName = newClientType ? "createConnectCometQueryClient" : "createTm34QueryClient"; context.addUtil(createQueryClientName); functionStatements = [ - t.variableDeclaration("let", [ + t.variableDeclaration("const", [ + t.variableDeclarator( + t.identifier("make"), + t.logicalExpression( + "||", + t.identifier("makeClient"), + t.identifier(createQueryClientName) + ) + ), + ]), + t.variableDeclaration("const", [ t.variableDeclarator( t.identifier("client"), - t.conditionalExpression( - t.identifier("queryClientResolver"), - t.awaitExpression( - t.callExpression( - t.identifier("queryClientResolver"), - [t.identifier("rpcEndpoint")] - ) - ), - t.awaitExpression( - t.callExpression( - t.identifier(createQueryClientName), - [t.identifier("rpcEndpoint")] - ) - ) + t.awaitExpression( + t.callExpression(t.identifier("make"), [ + t.identifier("rpcEndpoint"), + ]) ) ), ]), diff --git a/packages/telescope/README.md b/packages/telescope/README.md index b78e479da..7b0cf923e 100644 --- a/packages/telescope/README.md +++ b/packages/telescope/README.md @@ -444,7 +444,7 @@ See [LCD Clients](#lcd-clients) for more info. | `rpcClients.enabledServices` | which services to enable | [`Msg`,`Query`,`Service`] | | `rpcClients.instantOps` | will generate instant rpc operations in the file `service-ops.ts` under root folder, which contains customized classes having selected rpc methods | `undefined` | | `rpcClients.useConnectComet` | will use connectComet function to get a tendermint client | `undefined` | -| `rpcClients.useQueryClientResolver` | allow user to pass a query client resolver to create query client in createRPCQueryClient function | `undefined` | +| `rpcClients.useMakeClient` | allow user to pass a query client resolver to create query client in createRPCQueryClient function | `undefined` | | `rpcClients.serviceImplement` | assign implement type of rpc methods, `Query` or `Tx`, by setting patterns under service types. | `undefined` | `rpcClients.clientStyle.useUpdatedClientStyle` | The default value is `false`, which sets the generated client to use the legacy style. Setting it to `true` applies the updated style and activates the remaining options in clientStyle. | `false` | `rpcClients.clientStyle.type` | A string array containing possible values: `all-client`, `sdk-module-client`, and `custom-client`. The value `all-client` generates an all-module-client file. The value `sdk-module-client` generates a client for the module specified by the `sdkModuleClientOption`. The value `custom-client` generates a customized client as specified by `customClientOption` | `undefined` diff --git a/packages/telescope/__tests__/telescope-v4.test.ts b/packages/telescope/__tests__/telescope-v4.test.ts index 515cbd526..8def6c564 100644 --- a/packages/telescope/__tests__/telescope-v4.test.ts +++ b/packages/telescope/__tests__/telescope-v4.test.ts @@ -161,7 +161,7 @@ const options: TelescopeOptions = { 'ABCIApplication' ], useConnectComet: true, - useQueryClientResolver: true + useMakeClient: true }, reactQuery: { diff --git a/packages/telescope/src/generators/create-helpers.ts b/packages/telescope/src/generators/create-helpers.ts index 047454fe2..0c0e90120 100644 --- a/packages/telescope/src/generators/create-helpers.ts +++ b/packages/telescope/src/generators/create-helpers.ts @@ -77,7 +77,7 @@ export const plugin = (builder: TelescopeBuilder) => { write( builder, "extern.ts", - builder.options.rpcClients?.useConnectComet || builder.options.rpcClients?.useQueryClientResolver ? externalComet : external + builder.options.rpcClients?.useConnectComet || builder.options.rpcClients?.useMakeClient ? externalComet : external ); } } diff --git a/packages/types/src/telescope.ts b/packages/types/src/telescope.ts index e3a6a43c0..ce3b97dd7 100644 --- a/packages/types/src/telescope.ts +++ b/packages/types/src/telescope.ts @@ -291,7 +291,7 @@ export interface TelescopeOpts { }; }[]; useConnectComet?: boolean; - useQueryClientResolver?: boolean; + useMakeClient?: boolean; }; helperFuncCreators?: { enabled: boolean; diff --git a/packages/types/types/telescope.d.ts b/packages/types/types/telescope.d.ts index 2d2c85f2d..a429688b7 100644 --- a/packages/types/types/telescope.d.ts +++ b/packages/types/types/telescope.d.ts @@ -238,7 +238,7 @@ export interface TelescopeOpts { }; }[]; useConnectComet?: boolean; - useQueryClientResolver?: boolean; + useMakeClient?: boolean; }; helperFuncCreators?: { enabled: boolean;