Skip to content

Commit

Permalink
Add isSolanaRequest helper
Browse files Browse the repository at this point in the history
  • Loading branch information
lorisleiva committed Sep 10, 2024
1 parent 0d92cd7 commit d566b79
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { isSolanaRequest } from '../is-solana-request';

describe('isSolanaRequest', () => {
it('returns true if the method name is from the Solana RPC API', () => {
const request = { methodName: 'getBalance', params: ['1234..5678'] };
expect(isSolanaRequest(request)).toBe(true);
});
it('returns false if the method name is not from the Solana RPC API', () => {
const request = { methodName: 'getAssetsByAuthority', params: ['1234..5678'] };
expect(isSolanaRequest(request)).toBe(false);
});
});
65 changes: 65 additions & 0 deletions packages/rpc-transport-http/src/is-solana-request.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import type { RpcRequest } from '@solana/rpc-spec';

const SOLANA_RPC_METHODS: string[] = [
'getAccountInfo',
'getBalance',
'getBlock',
'getBlockCommitment',
'getBlockHeight',
'getBlockProduction',
'getBlocks',
'getBlocksWithLimit',
'getBlockTime',
'getClusterNodes',
'getEpochInfo',
'getEpochSchedule',
'getFeeForMessage',
'getFirstAvailableBlock',
'getGenesisHash',
'getHealth',
'getHighestSnapshotSlot',
'getIdentity',
'getInflationGovernor',
'getInflationRate',
'getInflationReward',
'getLargestAccounts',
'getLatestBlockhash',
'getLeaderSchedule',
'getMaxRetransmitSlot',
'getMaxShredInsertSlot',
'getMinimumBalanceForRentExemption',
'getMultipleAccounts',
'getProgramAccounts',
'getRecentPerformanceSamples',
'getRecentPrioritizationFees',
'getSignaturesForAddress',
'getSignatureStatuses',
'getSlot',
'getSlotLeader',
'getSlotLeaders',
'getStakeActivation',
'getStakeMinimumDelegation',
'getSupply',
'getTokenAccountBalance',
'getTokenAccountsByDelegate',
'getTokenAccountsByOwner',
'getTokenLargestAccounts',
'getTokenSupply',
'getTransaction',
'getTransactionCount',
'getVersion',
'getVoteAccounts',
'index',
'isBlockhashValid',
'minimumLedgerSlot',
'requestAirdrop',
'sendTransaction',
'simulateTransaction',
];

/**
* Helper function that checks if a given `RpcRequest` comes from the Solana RPC API.
*/
export function isSolanaRequest(request: RpcRequest): boolean {
return SOLANA_RPC_METHODS.includes(request.methodName);
}

0 comments on commit d566b79

Please sign in to comment.