@mysten/graphql-transport
v0.2.26
Published
A GraphQL transport to allow SuiClient to work with RPC 2.0
Downloads
1,583
Keywords
Readme
@mysten/graphql-transport
This package provides a SuiTransport
that enables SuiClient
to make requests using the RPC 2.0
(GraphQL) API instead of the JSON RPC API.
Install
npm install --save @mysten/graphql-transport
Setup
import { SuiClientGraphQLTransport } from '@mysten/graphql-transport';
import { getFullnodeUrl, SuiClient } from '@mysten/sui/client';
const client = new SuiClient({
transport: new SuiClientGraphQLTransport({
url: 'https://sui-testnet.mystenlabs.com/graphql',
// When specified, the transport will fallback to JSON RPC for unsupported method and parameters
fallbackFullNodeUrl: getFullnodeUrl('testnet'),
}),
});
Limitations
Unsupported methods
The following methods are currently unsupported in SuiClientGraphQLTransport, and will either error,
or fallback to the JSON RPC API if a fallbackFullNodeUrl
is provided:
subscribeTransaction
subscribeEvents
call
getNetworkMetrics
getMoveCallMetrics
getAddressMetrics
getEpochs
dryRunTransactionBlock
devInspectTransactionBlock
executeTransactionBlock
Unsupported parameters
Some supported methods in SuiClientGraphQLTransport
do not support the full set of parameters
available in the JSON RPC API.
If an unsupported parameter is used, the request will error, or fallback to JSON RPC API if a
fallbackFullNodeUrl
is provided.
getOwnedObjects
:- missing the
MatchAll
,MatchAny
,MatchNone
, andVersion
filters
- missing the
queryEvents
:- missing the
MoveEventField
,Module
,TimeRange
,All
,Any
,And
, andOr
filters
- missing the
Unsupported fields
queryTransactionBlocks
,getTransactionBlock
, andmultiGetTransactionBlocks
- missing
messageVersion
,eventsDigest
,sharedObjects
,unwrapped
,wrapped
, andunwrappedThenDeleted
in effects - missing
id
forevents
- missing
getStakes
andgetStakesByIds
- missing
validatorAddress
- missing
getLatestSuiSystemState
- missing
stakingPoolMappingsId
,inactivePoolsId
,pendingActiveValidatorsId
,validatorCandidatesId
- missing
reportRecords
on validators
- missing
getCurrentEpoch
- missing
reportRecords
on validators
- missing
queryEvents
- missing
id
forevents
- missing
getCheckpoint
andgetCheckpoints
- missing
checkpointCommitments
- missing
getCurrentEpoch
- missing
epochTotalTransactions
- missing
getDynamicFields
- missing
objectId
,digest
andversion
available forDynamicObject
but notDynamicField
- missing
Performance
Some may require multiple requests to properly resolve:
getDynamicFieldObject
requires 2 requestsqueryTransactionBlocks
,getTransactionBlock
, andmultiGetTransactionBlocks
- may require additional requests to load all
objectChanges
,balanceChanges
,dependencies
andevents
- may require additional requests to load all
getNormalizedMoveModule
andgetNormalizedMoveModulesByPage
- may require additional requests to load all
friends
,functions
, andstructs
- may require additional requests to load all
getCheckpoint
andgetCheckpoints
,- may require additional requests to load all
transactionBlocks
andvalidators
- may require additional requests to load all
getLatestSuiSystemState
,getCurrentEpoch
,getValidatorsApy
andgetCommitteeInfo
:- may require additional requests to load all
validators
- may require additional requests to load all
Pagination
Page sizes and limits for paginated methods are based on the defaults and limits of the GraphQL API, so page sizes and limits may be different than those returned by the JSON RPC API