@mysten/dapp-kit 0.14.21 → 0.14.23
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/CHANGELOG.md +16 -0
- package/dist/cjs/components/AccountDropdownMenu.js +11 -10
- package/dist/cjs/components/AccountDropdownMenu.js.map +3 -3
- package/dist/cjs/components/ConnectButton.js +15 -14
- package/dist/cjs/components/ConnectButton.js.map +3 -3
- package/dist/cjs/hooks/useResolveSuiNSNames.js +1 -0
- package/dist/cjs/hooks/useResolveSuiNSNames.js.map +3 -3
- package/dist/cjs/hooks/useSuiClientQuery.d.ts +17 -1
- package/dist/cjs/hooks/useSuiClientQuery.js +33 -1
- package/dist/cjs/hooks/useSuiClientQuery.js.map +3 -3
- package/dist/cjs/index.js +48 -16
- package/dist/cjs/index.js.map +3 -3
- package/dist/esm/components/AccountDropdownMenu.js +2 -1
- package/dist/esm/components/AccountDropdownMenu.js.map +3 -3
- package/dist/esm/components/ConnectButton.js +2 -1
- package/dist/esm/components/ConnectButton.js.map +3 -3
- package/dist/esm/hooks/useResolveSuiNSNames.js +2 -1
- package/dist/esm/hooks/useResolveSuiNSNames.js.map +3 -3
- package/dist/esm/hooks/useSuiClientQuery.d.ts +17 -1
- package/dist/esm/hooks/useSuiClientQuery.js +34 -2
- package/dist/esm/hooks/useSuiClientQuery.js.map +3 -3
- package/dist/esm/index.js +33 -1
- package/dist/esm/index.js.map +3 -3
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/hooks/useSuiClientQuery.ts +64 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/hooks/useSuiClientQuery.ts", "../../../src/hooks/useSuiClient.ts", "../../../src/components/SuiClientProvider.tsx"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { SuiClient } from '@mysten/sui/client';\nimport type {
|
|
5
|
-
"mappings": ";
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { SuiClient } from '@mysten/sui/client';\nimport type {\n\tUndefinedInitialDataOptions,\n\tUseQueryOptions,\n\tUseQueryResult,\n} from '@tanstack/react-query';\nimport { queryOptions, useQuery, useSuspenseQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\n\nimport type { PartialBy } from '../types/utilityTypes.js';\nimport { useSuiClientContext } from './useSuiClient.js';\n\nexport type SuiRpcMethodName = {\n\t[K in keyof SuiClient]: SuiClient[K] extends ((input: any) => Promise<any>) | (() => Promise<any>)\n\t\t? K\n\t\t: never;\n}[keyof SuiClient];\n\nexport type SuiRpcMethods = {\n\t[K in SuiRpcMethodName]: SuiClient[K] extends (input: infer P) => Promise<infer R>\n\t\t? {\n\t\t\t\tname: K;\n\t\t\t\tresult: R;\n\t\t\t\tparams: P;\n\t\t\t}\n\t\t: SuiClient[K] extends () => Promise<infer R>\n\t\t\t? {\n\t\t\t\t\tname: K;\n\t\t\t\t\tresult: R;\n\t\t\t\t\tparams: undefined | object;\n\t\t\t\t}\n\t\t\t: never;\n};\n\nexport type UseSuiClientQueryOptions<T extends keyof SuiRpcMethods, TData> = PartialBy<\n\tOmit<UseQueryOptions<SuiRpcMethods[T]['result'], Error, TData, unknown[]>, 'queryFn'>,\n\t'queryKey'\n>;\n\nexport type GetSuiClientQueryOptions<T extends keyof SuiRpcMethods> = {\n\tclient: SuiClient;\n\tnetwork: string;\n\tmethod: T;\n\toptions?: PartialBy<\n\t\tOmit<UndefinedInitialDataOptions<SuiRpcMethods[T]['result']>, 'queryFn'>,\n\t\t'queryKey'\n\t>;\n} & (undefined extends SuiRpcMethods[T]['params']\n\t? { params?: SuiRpcMethods[T]['params'] }\n\t: { params: SuiRpcMethods[T]['params'] });\n\nexport function getSuiClientQuery<T extends keyof SuiRpcMethods>({\n\tclient,\n\tnetwork,\n\tmethod,\n\tparams,\n\toptions,\n}: GetSuiClientQueryOptions<T>) {\n\treturn queryOptions<SuiRpcMethods[T]['result']>({\n\t\t...options,\n\t\tqueryKey: [network, method, params],\n\t\tqueryFn: async () => {\n\t\t\treturn await client[method](params as never);\n\t\t},\n\t});\n}\n\nexport function useSuiClientQuery<\n\tT extends keyof SuiRpcMethods,\n\tTData = SuiRpcMethods[T]['result'],\n>(\n\t...args: undefined extends SuiRpcMethods[T]['params']\n\t\t? [method: T, params?: SuiRpcMethods[T]['params'], options?: UseSuiClientQueryOptions<T, TData>]\n\t\t: [method: T, params: SuiRpcMethods[T]['params'], options?: UseSuiClientQueryOptions<T, TData>]\n): UseQueryResult<TData, Error> {\n\tconst [method, params, { queryKey = [], ...options } = {}] = args as [\n\t\tmethod: T,\n\t\tparams?: SuiRpcMethods[T]['params'],\n\t\toptions?: UseSuiClientQueryOptions<T, TData>,\n\t];\n\n\tconst suiContext = useSuiClientContext();\n\n\treturn useQuery({\n\t\t...options,\n\t\tqueryKey: [suiContext.network, method, params, ...queryKey],\n\t\tqueryFn: async () => {\n\t\t\treturn await suiContext.client[method](params as never);\n\t\t},\n\t});\n}\n\nexport function useSuiClientSuspenseQuery<\n\tT extends keyof SuiRpcMethods,\n\tTData = SuiRpcMethods[T]['result'],\n>(\n\t...args: undefined extends SuiRpcMethods[T]['params']\n\t\t? [method: T, params?: SuiRpcMethods[T]['params'], options?: UndefinedInitialDataOptions<TData>]\n\t\t: [method: T, params: SuiRpcMethods[T]['params'], options?: UndefinedInitialDataOptions<TData>]\n) {\n\tconst [method, params, options = {}] = args as [\n\t\tmethod: T,\n\t\tparams?: SuiRpcMethods[T]['params'],\n\t\toptions?: UndefinedInitialDataOptions<TData>,\n\t];\n\n\tconst suiContext = useSuiClientContext();\n\n\tconst query = useMemo(() => {\n\t\treturn getSuiClientQuery<T>({\n\t\t\tclient: suiContext.client,\n\t\t\tnetwork: suiContext.network,\n\t\t\tmethod,\n\t\t\tparams,\n\t\t\toptions,\n\t\t});\n\t}, [suiContext.client, suiContext.network, method, params, options]);\n\n\treturn useSuspenseQuery(query);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { SuiClient } from '@mysten/sui/client';\nimport { useContext } from 'react';\n\nimport { SuiClientContext } from '../components/SuiClientProvider.js';\n\nexport function useSuiClientContext() {\n\tconst suiClient = useContext(SuiClientContext);\n\n\tif (!suiClient) {\n\t\tthrow new Error(\n\t\t\t'Could not find SuiClientContext. Ensure that you have set up the SuiClientProvider',\n\t\t);\n\t}\n\n\treturn suiClient;\n}\n\nexport function useSuiClient(): SuiClient {\n\treturn useSuiClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getFullnodeUrl, isSuiClient, SuiClient } from '@mysten/sui/client';\nimport type { SuiClientOptions } from '@mysten/sui/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | SuiClient = NetworkConfig | SuiClient> = Record<\n\tstring,\n\tT\n>;\n\nexport interface SuiClientProviderContext {\n\tclient: SuiClient;\n\tnetworks: NetworkConfigs;\n\tnetwork: string;\n\tconfig: NetworkConfig | null;\n\tselectNetwork: (network: string) => void;\n}\n\nexport const SuiClientContext = createContext<SuiClientProviderContext | null>(null);\n\nexport type SuiClientProviderProps<T extends NetworkConfigs> = {\n\tcreateClient?: (name: keyof T, config: T[keyof T]) => SuiClient;\n\tchildren: React.ReactNode;\n\tnetworks?: T;\n\tonNetworkChange?: (network: keyof T & string) => void;\n} & (\n\t| {\n\t\t\tdefaultNetwork?: keyof T & string;\n\t\t\tnetwork?: never;\n\t }\n\t| {\n\t\t\tdefaultNetwork?: never;\n\t\t\tnetwork?: keyof T & string;\n\t }\n);\n\nconst DEFAULT_NETWORKS = {\n\tlocalnet: { url: getFullnodeUrl('localnet') },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n\t_name: string,\n\tconfig: NetworkConfig | SuiClient,\n) {\n\tif (isSuiClient(config)) {\n\t\treturn config;\n\t}\n\n\treturn new SuiClient(config);\n};\n\nexport function SuiClientProvider<T extends NetworkConfigs>(props: SuiClientProviderProps<T>) {\n\tconst { onNetworkChange, network, children } = props;\n\tconst networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n\tconst createClient =\n\t\t(props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n\tconst [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n\t\tprops.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n\t);\n\n\tconst currentNetwork = props.network ?? selectedNetwork;\n\n\tconst client = useMemo(() => {\n\t\treturn createClient(currentNetwork, networks[currentNetwork]);\n\t}, [createClient, currentNetwork, networks]);\n\n\tconst ctx = useMemo((): SuiClientProviderContext => {\n\t\treturn {\n\t\t\tclient,\n\t\t\tnetworks,\n\t\t\tnetwork: currentNetwork,\n\t\t\tconfig:\n\t\t\t\tnetworks[currentNetwork] instanceof SuiClient\n\t\t\t\t\t? null\n\t\t\t\t\t: (networks[currentNetwork] as SuiClientOptions),\n\t\t\tselectNetwork: (newNetwork) => {\n\t\t\t\tif (currentNetwork === newNetwork) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!network && newNetwork !== selectedNetwork) {\n\t\t\t\t\tsetSelectedNetwork(newNetwork);\n\t\t\t\t}\n\n\t\t\t\tonNetworkChange?.(newNetwork);\n\t\t\t},\n\t\t};\n\t}, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n\treturn <SuiClientContext.Provider value={ctx}>{children}</SuiClientContext.Provider>;\n}\n"],
|
|
5
|
+
"mappings": ";AASA,SAAS,cAAc,UAAU,wBAAwB;AACzD,SAAS,WAAAA,gBAAe;;;ACNxB,SAAS,kBAAkB;;;ACD3B,SAAS,gBAAgB,aAAa,iBAAiB;AAEvD,SAAS,eAAe,SAAS,gBAAgB;AAyFzC;AAxED,IAAM,mBAAmB,cAA+C,IAAI;AAkBnF,IAAM,mBAAmB;AAAA,EACxB,UAAU,EAAE,KAAK,eAAe,UAAU,EAAE;AAC7C;;;ADlCO,SAAS,sBAAsB;AACrC,QAAM,YAAY,WAAW,gBAAgB;AAE7C,MAAI,CAAC,WAAW;AACf,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;;;ADoCO,SAAS,kBAAiD;AAAA,EAChE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAgC;AAC/B,SAAO,aAAyC;AAAA,IAC/C,GAAG;AAAA,IACH,UAAU,CAAC,SAAS,QAAQ,MAAM;AAAA,IAClC,SAAS,YAAY;AACpB,aAAO,MAAM,OAAO,MAAM,EAAE,MAAe;AAAA,IAC5C;AAAA,EACD,CAAC;AACF;AAEO,SAAS,qBAIZ,MAG4B;AAC/B,QAAM,CAAC,QAAQ,QAAQ,EAAE,WAAW,CAAC,GAAG,GAAG,QAAQ,IAAI,CAAC,CAAC,IAAI;AAM7D,QAAM,aAAa,oBAAoB;AAEvC,SAAO,SAAS;AAAA,IACf,GAAG;AAAA,IACH,UAAU,CAAC,WAAW,SAAS,QAAQ,QAAQ,GAAG,QAAQ;AAAA,IAC1D,SAAS,YAAY;AACpB,aAAO,MAAM,WAAW,OAAO,MAAM,EAAE,MAAe;AAAA,IACvD;AAAA,EACD,CAAC;AACF;AAEO,SAAS,6BAIZ,MAGF;AACD,QAAM,CAAC,QAAQ,QAAQ,UAAU,CAAC,CAAC,IAAI;AAMvC,QAAM,aAAa,oBAAoB;AAEvC,QAAM,QAAQC,SAAQ,MAAM;AAC3B,WAAO,kBAAqB;AAAA,MAC3B,QAAQ,WAAW;AAAA,MACnB,SAAS,WAAW;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,EACF,GAAG,CAAC,WAAW,QAAQ,WAAW,SAAS,QAAQ,QAAQ,OAAO,CAAC;AAEnE,SAAO,iBAAiB,KAAK;AAC9B;",
|
|
6
|
+
"names": ["useMemo", "useMemo"]
|
|
7
7
|
}
|
package/dist/esm/index.js
CHANGED
|
@@ -597,7 +597,8 @@ import * as DropdownMenu from "@radix-ui/react-dropdown-menu";
|
|
|
597
597
|
import clsx7 from "clsx";
|
|
598
598
|
|
|
599
599
|
// src/hooks/useSuiClientQuery.ts
|
|
600
|
-
import { useQuery } from "@tanstack/react-query";
|
|
600
|
+
import { queryOptions, useQuery, useSuspenseQuery } from "@tanstack/react-query";
|
|
601
|
+
import { useMemo as useMemo2 } from "react";
|
|
601
602
|
|
|
602
603
|
// src/hooks/useSuiClient.ts
|
|
603
604
|
import { useContext as useContext2 } from "react";
|
|
@@ -662,6 +663,21 @@ function useSuiClient() {
|
|
|
662
663
|
}
|
|
663
664
|
|
|
664
665
|
// src/hooks/useSuiClientQuery.ts
|
|
666
|
+
function getSuiClientQuery({
|
|
667
|
+
client,
|
|
668
|
+
network,
|
|
669
|
+
method,
|
|
670
|
+
params,
|
|
671
|
+
options
|
|
672
|
+
}) {
|
|
673
|
+
return queryOptions({
|
|
674
|
+
...options,
|
|
675
|
+
queryKey: [network, method, params],
|
|
676
|
+
queryFn: async () => {
|
|
677
|
+
return await client[method](params);
|
|
678
|
+
}
|
|
679
|
+
});
|
|
680
|
+
}
|
|
665
681
|
function useSuiClientQuery(...args) {
|
|
666
682
|
const [method, params, { queryKey = [], ...options } = {}] = args;
|
|
667
683
|
const suiContext = useSuiClientContext();
|
|
@@ -673,6 +689,20 @@ function useSuiClientQuery(...args) {
|
|
|
673
689
|
}
|
|
674
690
|
});
|
|
675
691
|
}
|
|
692
|
+
function useSuiClientSuspenseQuery(...args) {
|
|
693
|
+
const [method, params, options = {}] = args;
|
|
694
|
+
const suiContext = useSuiClientContext();
|
|
695
|
+
const query = useMemo2(() => {
|
|
696
|
+
return getSuiClientQuery({
|
|
697
|
+
client: suiContext.client,
|
|
698
|
+
network: suiContext.network,
|
|
699
|
+
method,
|
|
700
|
+
params,
|
|
701
|
+
options
|
|
702
|
+
});
|
|
703
|
+
}, [suiContext.client, suiContext.network, method, params, options]);
|
|
704
|
+
return useSuspenseQuery(query);
|
|
705
|
+
}
|
|
676
706
|
|
|
677
707
|
// src/hooks/useResolveSuiNSNames.ts
|
|
678
708
|
function useResolveSuiNSName(address, options) {
|
|
@@ -1849,6 +1879,7 @@ export {
|
|
|
1849
1879
|
SuiClientProvider,
|
|
1850
1880
|
WalletProvider,
|
|
1851
1881
|
createNetworkConfig,
|
|
1882
|
+
getSuiClientQuery,
|
|
1852
1883
|
lightTheme,
|
|
1853
1884
|
useAccounts,
|
|
1854
1885
|
useAutoConnectWallet,
|
|
@@ -1867,6 +1898,7 @@ export {
|
|
|
1867
1898
|
useSuiClientMutation,
|
|
1868
1899
|
useSuiClientQueries,
|
|
1869
1900
|
useSuiClientQuery,
|
|
1901
|
+
useSuiClientSuspenseQuery,
|
|
1870
1902
|
useSwitchAccount,
|
|
1871
1903
|
useWallets
|
|
1872
1904
|
};
|