Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions clients/js/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
"prepublishOnly": "pnpm build"
},
"dependencies": {
"@solana-program/system": "^0.15.0",
"@solana-program/system": "^0.16.0",
"commander": "^13.0.0",
"pako": "^2.1.0",
"picocolors": "^1.1.1",
Expand All @@ -56,10 +56,10 @@
},
"devDependencies": {
"@solana-config/oxc": "^0.1.1",
"@solana/kit": "^8.3.0",
"@solana/kit-plugin-litesvm": "^0.18.0",
"@solana/kit-plugin-rpc": "^0.18.0",
"@solana/kit-plugin-signer": "^0.18.0",
"@solana/kit": "^8.5.0",
"@solana/kit-plugin-litesvm": "^0.19.0",
"@solana/kit-plugin-rpc": "^0.19.0",
"@solana/kit-plugin-signer": "^0.19.0",
"@types/node": "^24",
"@types/pako": "^2.0.3",
"oxfmt": "^0.48.0",
Expand All @@ -72,7 +72,7 @@
"vitest": "^4.0.15"
},
"peerDependencies": {
"@solana/kit": "^8.3.0"
"@solana/kit": "^8.5.0"
},
"devEngines": {
"runtime": {
Expand Down
1,622 changes: 811 additions & 811 deletions clients/js/pnpm-lock.yaml

Large diffs are not rendered by default.

31 changes: 16 additions & 15 deletions clients/js/src/createBuffer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import {
Account,
Address,
ClientWithGetMinimumBalance,
HasAddress,
parallelInstructionPlan,
ReadonlyUint8Array,
sequentialInstructionPlan,
Expand All @@ -21,6 +22,7 @@ import {
PROGRAM_METADATA_PROGRAM_ADDRESS,
SeedArgs,
} from './generated';
import { getCloseDestination } from './internals';
import { getAccountSize, getExtendInstructionPlan, getWriteInstructionPlan, needsExtend } from './utils';

/**
Expand All @@ -39,7 +41,7 @@ export async function getCreateBufferInstructionPlan(
authority: InstructionSignerInput;
payer: TransactionSigner;
sourceBuffer?: Account<Buffer>;
closeSourceBuffer?: Address | boolean;
closeSourceBuffer?: Address | HasAddress | boolean;
data?: ReadonlyUint8Array;
},
) {
Expand Down Expand Up @@ -90,8 +92,7 @@ export async function getCreateBufferInstructionPlan(
getCloseInstruction({
account: input.sourceBuffer.address,
authority: input.authority,
destination:
typeof input.closeSourceBuffer === 'string' ? input.closeSourceBuffer : input.payer.address,
destination: getCloseDestination(input.closeSourceBuffer, input.payer.address),
}),
]
: []),
Expand All @@ -112,13 +113,13 @@ export async function getCreateCanonicalBufferInstructionPlan(
client: ClientWithGetMinimumBalance,
input: {
authority: TransactionSigner;
buffer?: Address;
closeBuffer?: Address | boolean;
buffer?: Address | HasAddress;
closeBuffer?: Address | HasAddress | boolean;
data?: ReadonlyUint8Array;
dataLength?: number;
payer: TransactionSigner;
program: Address;
programData: Address;
program: Address | HasAddress;
programData: Address | HasAddress;
seed: SeedArgs;
singleExtendPerTransaction?: boolean;
},
Expand All @@ -145,12 +146,12 @@ export async function getCreateNonCanonicalBufferInstructionPlan(
client: ClientWithGetMinimumBalance,
input: {
authority: TransactionSigner;
buffer?: Address;
closeBuffer?: Address | boolean;
buffer?: Address | HasAddress;
closeBuffer?: Address | HasAddress | boolean;
data?: ReadonlyUint8Array;
dataLength?: number;
payer: TransactionSigner;
program: Address;
program: Address | HasAddress;
seed: SeedArgs;
singleExtendPerTransaction?: boolean;
},
Expand All @@ -171,13 +172,13 @@ async function getPdaBufferInstructionPlan(
client: ClientWithGetMinimumBalance,
input: {
authority: TransactionSigner;
buffer: Address;
closeBuffer?: Address | boolean;
buffer: Address | HasAddress;
closeBuffer?: Address | HasAddress | boolean;
data?: ReadonlyUint8Array;
dataLength?: number;
payer: TransactionSigner;
program: Address;
programData?: Address;
program: Address | HasAddress;
programData?: Address | HasAddress;
seed: SeedArgs;
singleExtendPerTransaction?: boolean;
},
Expand Down Expand Up @@ -227,7 +228,7 @@ async function getPdaBufferInstructionPlan(
authority: input.authority,
program: input.program,
programData: input.programData,
destination: typeof input.closeBuffer === 'string' ? input.closeBuffer : input.payer.address,
destination: getCloseDestination(input.closeBuffer, input.payer.address),
}),
]
: []),
Expand Down
11 changes: 6 additions & 5 deletions clients/js/src/createMetadata.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
ClientWithTransactionPlanning,
ClientWithTransactionSending,
GetAccountInfoApi,
HasAddress,
InstructionPlan,
parallelInstructionPlan,
ReadonlyUint8Array,
Expand All @@ -25,7 +26,7 @@ import {
InitializeInput,
PROGRAM_METADATA_PROGRAM_ADDRESS,
} from './generated';
import { isValidInstructionPlan } from './internals';
import { getCloseDestination, isValidInstructionPlan } from './internals';
import {
getAccountSize,
getExtendInstructionPlan,
Expand Down Expand Up @@ -66,7 +67,7 @@ export async function getCreateMetadataInstructionPlan(
buffer?: Account<Buffer>;
data?: ReadonlyUint8Array;
payer: TransactionSigner;
closeBuffer?: Address | boolean;
closeBuffer?: Address | HasAddress | boolean;
singleExtendPerTransaction?: boolean;
},
): Promise<InstructionPlan> {
Expand Down Expand Up @@ -164,10 +165,10 @@ export async function getCreateMetadataInstructionPlanUsingNewBuffer(
export async function getCreateMetadataInstructionPlanUsingExistingBuffer(
client: ClientWithGetMinimumBalance,
input: Omit<InitializeInput, 'data'> & {
buffer: Address;
buffer: Address | HasAddress;
dataLength: number;
payer: TransactionSigner;
closeBuffer?: Address | boolean;
closeBuffer?: Address | HasAddress | boolean;
singleExtendPerTransaction?: boolean;
},
) {
Expand Down Expand Up @@ -213,7 +214,7 @@ export async function getCreateMetadataInstructionPlanUsingExistingBuffer(
getCloseInstruction({
account: input.buffer,
authority: input.authority,
destination: typeof input.closeBuffer === 'string' ? input.closeBuffer : input.payer.address,
destination: getCloseDestination(input.closeBuffer, input.payer.address),
}),
]
: []),
Expand Down
14 changes: 7 additions & 7 deletions clients/js/src/fetchMetadataContent.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Address, assertAccountsExist, GetAccountInfoApi, GetMultipleAccountsApi, Rpc } from '@solana/kit';
import { Address, assertAccountsExist, GetAccountInfoApi, GetMultipleAccountsApi, HasAddress, Rpc } from '@solana/kit';
import { parse as parseToml } from 'smol-toml';
import { parse as parseYaml } from 'yaml';

Expand All @@ -7,9 +7,9 @@ import { unpackAndFetchAllData, unpackAndFetchData } from './packData';

export async function fetchMetadataContent(
rpc: Rpc<GetAccountInfoApi>,
program: Address,
program: Address | HasAddress,
seed: SeedArgs,
authority: Address | null = null,
authority: Address | HasAddress | null = null,
): Promise<string> {
const account = await fetchMetadataFromSeeds(rpc, {
program,
Expand All @@ -20,9 +20,9 @@ export async function fetchMetadataContent(
}

type FetchAllMetadataContentInput = {
program: Address;
program: Address | HasAddress;
seed: SeedArgs;
authority: Address | null;
authority: Address | HasAddress | null;
}[];

export async function fetchAllMetadataContent(
Expand Down Expand Up @@ -57,9 +57,9 @@ function parseContent(format: Format, content: string): unknown {

export async function fetchAndParseMetadataContent(
rpc: Rpc<GetAccountInfoApi>,
program: Address,
program: Address | HasAddress,
seed: SeedArgs,
authority: Address | null = null,
authority: Address | HasAddress | null = null,
): Promise<unknown> {
const account = await fetchMetadataFromSeeds(rpc, {
program,
Expand Down
29 changes: 19 additions & 10 deletions clients/js/src/generated/accounts/buffer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import {
type Encoder,
type FetchAccountConfig,
type FetchAccountsConfig,
type HasAddress,
type MaybeAccount,
type MaybeEncodedAccount,
type Option,
Expand Down Expand Up @@ -61,8 +62,8 @@ export type Buffer = {
};

export type BufferArgs = {
program: OptionOrNullable<Address>;
authority: OptionOrNullable<Address>;
program: OptionOrNullable<Address | HasAddress>;
authority: OptionOrNullable<Address | HasAddress>;
canonical: boolean;
seed: SeedArgs;
data: ReadonlyUint8Array;
Expand Down Expand Up @@ -114,7 +115,7 @@ export function decodeBuffer<TAddress extends string = string>(

export async function fetchBuffer<TAddress extends string = string>(
rpc: Parameters<typeof fetchEncodedAccount>[0],
address: Address<TAddress>,
address: Address<TAddress> | HasAddress<TAddress>,
config?: FetchAccountConfig,
): Promise<Account<Buffer, TAddress>> {
const maybeAccount = await fetchMaybeBuffer(rpc, address, config);
Expand All @@ -124,16 +125,20 @@ export async function fetchBuffer<TAddress extends string = string>(

export async function fetchMaybeBuffer<TAddress extends string = string>(
rpc: Parameters<typeof fetchEncodedAccount>[0],
address: Address<TAddress>,
address: Address<TAddress> | HasAddress<TAddress>,
config?: FetchAccountConfig,
): Promise<MaybeAccount<Buffer, TAddress>> {
const maybeAccount = await fetchEncodedAccount(rpc, address, config);
const maybeAccount = await fetchEncodedAccount(
rpc,
typeof address === 'string' ? address : address.address,
config,
);
return decodeBuffer(maybeAccount);
}

export async function fetchAllBuffer(
rpc: Parameters<typeof fetchEncodedAccounts>[0],
addresses: Array<Address>,
addresses: Array<Address | HasAddress>,
config?: FetchAccountsConfig,
): Promise<Account<Buffer>[]> {
const maybeAccounts = await fetchAllMaybeBuffer(rpc, addresses, config);
Expand All @@ -143,17 +148,21 @@ export async function fetchAllBuffer(

export async function fetchAllMaybeBuffer(
rpc: Parameters<typeof fetchEncodedAccounts>[0],
addresses: Array<Address>,
addresses: Array<Address | HasAddress>,
config?: FetchAccountsConfig,
): Promise<MaybeAccount<Buffer>[]> {
const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
const maybeAccounts = await fetchEncodedAccounts(
rpc,
addresses.map(a => (typeof a === 'string' ? a : a.address)),
config,
);
return maybeAccounts.map(maybeAccount => decodeBuffer(maybeAccount));
}

export async function fetchBufferFromSeeds(
rpc: Parameters<typeof fetchEncodedAccount>[0],
seeds: MetadataSeeds,
config: FetchAccountConfig & { programAddress?: Address } = {},
config: FetchAccountConfig & { programAddress?: Address | HasAddress } = {},
): Promise<Account<Buffer>> {
const maybeAccount = await fetchMaybeBufferFromSeeds(rpc, seeds, config);
assertAccountExists(maybeAccount);
Expand All @@ -163,7 +172,7 @@ export async function fetchBufferFromSeeds(
export async function fetchMaybeBufferFromSeeds(
rpc: Parameters<typeof fetchEncodedAccount>[0],
seeds: MetadataSeeds,
config: FetchAccountConfig & { programAddress?: Address } = {},
config: FetchAccountConfig & { programAddress?: Address | HasAddress } = {},
): Promise<MaybeAccount<Buffer>> {
const { programAddress, ...fetchConfig } = config;
const [address] = await findMetadataPda(seeds, { programAddress });
Expand Down
29 changes: 19 additions & 10 deletions clients/js/src/generated/accounts/metadata.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import {
type Encoder,
type FetchAccountConfig,
type FetchAccountsConfig,
type HasAddress,
type MaybeAccount,
type MaybeEncodedAccount,
type Option,
Expand Down Expand Up @@ -85,8 +86,8 @@ export type Metadata = {
};

export type MetadataArgs = {
program: Address;
authority: OptionOrNullable<Address>;
program: Address | HasAddress;
authority: OptionOrNullable<Address | HasAddress>;
mutable: boolean;
canonical: boolean;
seed: SeedArgs;
Expand Down Expand Up @@ -156,7 +157,7 @@ export function decodeMetadata<TAddress extends string = string>(

export async function fetchMetadata<TAddress extends string = string>(
rpc: Parameters<typeof fetchEncodedAccount>[0],
address: Address<TAddress>,
address: Address<TAddress> | HasAddress<TAddress>,
config?: FetchAccountConfig,
): Promise<Account<Metadata, TAddress>> {
const maybeAccount = await fetchMaybeMetadata(rpc, address, config);
Expand All @@ -166,16 +167,20 @@ export async function fetchMetadata<TAddress extends string = string>(

export async function fetchMaybeMetadata<TAddress extends string = string>(
rpc: Parameters<typeof fetchEncodedAccount>[0],
address: Address<TAddress>,
address: Address<TAddress> | HasAddress<TAddress>,
config?: FetchAccountConfig,
): Promise<MaybeAccount<Metadata, TAddress>> {
const maybeAccount = await fetchEncodedAccount(rpc, address, config);
const maybeAccount = await fetchEncodedAccount(
rpc,
typeof address === 'string' ? address : address.address,
config,
);
return decodeMetadata(maybeAccount);
}

export async function fetchAllMetadata(
rpc: Parameters<typeof fetchEncodedAccounts>[0],
addresses: Array<Address>,
addresses: Array<Address | HasAddress>,
config?: FetchAccountsConfig,
): Promise<Account<Metadata>[]> {
const maybeAccounts = await fetchAllMaybeMetadata(rpc, addresses, config);
Expand All @@ -185,17 +190,21 @@ export async function fetchAllMetadata(

export async function fetchAllMaybeMetadata(
rpc: Parameters<typeof fetchEncodedAccounts>[0],
addresses: Array<Address>,
addresses: Array<Address | HasAddress>,
config?: FetchAccountsConfig,
): Promise<MaybeAccount<Metadata>[]> {
const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
const maybeAccounts = await fetchEncodedAccounts(
rpc,
addresses.map(a => (typeof a === 'string' ? a : a.address)),
config,
);
return maybeAccounts.map(maybeAccount => decodeMetadata(maybeAccount));
}

export async function fetchMetadataFromSeeds(
rpc: Parameters<typeof fetchEncodedAccount>[0],
seeds: MetadataSeeds,
config: FetchAccountConfig & { programAddress?: Address } = {},
config: FetchAccountConfig & { programAddress?: Address | HasAddress } = {},
): Promise<Account<Metadata>> {
const maybeAccount = await fetchMaybeMetadataFromSeeds(rpc, seeds, config);
assertAccountExists(maybeAccount);
Expand All @@ -205,7 +214,7 @@ export async function fetchMetadataFromSeeds(
export async function fetchMaybeMetadataFromSeeds(
rpc: Parameters<typeof fetchEncodedAccount>[0],
seeds: MetadataSeeds,
config: FetchAccountConfig & { programAddress?: Address } = {},
config: FetchAccountConfig & { programAddress?: Address | HasAddress } = {},
): Promise<MaybeAccount<Metadata>> {
const { programAddress, ...fetchConfig } = config;
const [address] = await findMetadataPda(seeds, { programAddress });
Expand Down
Loading
Loading