solana_kit_rpc_transformers 0.9.1 copy "solana_kit_rpc_transformers: ^0.9.1" to clipboard
solana_kit_rpc_transformers: ^0.9.1 copied to clipboard

Request and response transformers for the Solana Kit Dart SDK.

Changelog #

All notable changes to this project will be documented in this file.

This changelog is managed by monochange.

0.9.1 - 2026-08-30 #

Changed #

  • No package-specific changes were recorded; solana_kit_rpc_transformers was updated to 0.9.1 as part of group main.

0.9.0 - 2026-08-30 #

๐Ÿ’ฅ Breaking Change #

Sync upstream @solana/kit v8.1.0

Tracks upstream APIs and behavior through v8.1.0:

  • solana_kit_transaction_messages (breaking): removed the deprecated compute-unit-limit helpers fillTransactionMessageProvisoryComputeUnitLimit and estimateAndSetComputeUnitLimitFactory, matching upstream @solana/kit's removal of the deprecated @solana/kit estimation helpers (#1948). Use fillTransactionMessageProvisoryResourceLimits and estimateAndSetResourceLimitsFactory instead, which additionally reserve and set the loaded accounts data size limit for version 1 transactions. setTransactionMessageComputeUnitLimit and setTransactionMessageConfig now reject compute unit limits the runtime will not honor โ€” an integer outside [0, 1400000] โ€” throwing SolanaErrorCode.transactionComputeUnitLimitOutOfRange, and reject invalid heap sizes โ€” not a multiple of 1024 bytes in [32768, 262144] โ€” throwing SolanaErrorCode.transactionInvalidHeapSize (upstream #1972). Added the upstream heap-size.ts module as getTransactionMessageHeapSize/setTransactionMessageHeapSize with the same validation, and resource_limit_validation.dart with assertIsValidComputeUnitLimit/assertIsValidHeapSize, minHeapSize, maxHeapSize, and heapSizeMultipleOf. Decoding is unaffected: decompileTransactionMessage still returns messages carrying out-of-range values.

    Migration:

    • fillTransactionMessageProvisoryComputeUnitLimit(m) โ†’ fillTransactionMessageProvisoryResourceLimits(m).
    • estimateAndSetComputeUnitLimitFactory(estimate) โ†’ estimateAndSetResourceLimitsFactory(estimateResourceLimitsFactory(estimate)).
  • solana_kit_transactions (breaking): removed the fixed-size constants transactionPacketSize, transactionPacketHeader, and transactionSizeLimit, matching upstream's removal of TRANSACTION_PACKET_SIZE, TRANSACTION_PACKET_HEADER, and TRANSACTION_SIZE_LIMIT (#1948). Use getTransactionSizeLimit to derive the limit for a specific transaction, or the per-version constants legacyTransactionSizeLimit (1232) and v1TransactionSizeLimit (4096).

    Migration: TRANSACTION_SIZE_LIMIT - getTransactionSize(t) โ†’ getTransactionSizeLimit(t) - getTransactionSize(t).

  • solana_kit_errors: added the failedToSignTransaction (13) and failedToSignTransactions (14) error codes with upstream messages, plus the transaction codes transactionComputeUnitLimitOutOfRange (5663039) and transactionInvalidHeapSize (5663040) (upstream #1902, #1972).

  • solana_kit_instruction_plans: added createFailedToSendTransactionError, createFailedToSendTransactionsError, createFailedToSignTransactionError, createFailedToSignTransactionsError, and createFailedToExecuteTransactionPlanError, mirroring upstream @solana/instruction-plans' transaction-plan-errors.ts (#1902, #1434). The signing factories carry the same non-enumerable transactionPlanResult and optional logs/preflightData context as their sending counterparts, but the message includes no submission-location indicator because signing never submits. The executor now throws through createFailedToExecuteTransactionPlanError.

  • solana_kit: added the ClientWithTransactionSending and ClientWithTransactionSigning client interfaces, mirroring upstream @solana/plugin-interfaces (#1899). signTransaction/signTransactions accept the same flexible inputs as their sending counterparts and return signed transactions without submitting them. Sending results guarantee a signature-bearing context; signing makes no default guarantee about the context, matching the upstream TContext parameterization (adapted to Dart's map-based result contexts).

  • solana_kit_rpc_transformers (breaking): removed getBigIntDowncastRequestTransformer, matching upstream #1948. It was no longer used by the default Solana RPC request transformer: the Solana RPC transport serializes BigInt values losslessly as large integer literals via stringifyJsonWithBigInts, and Agave parses JSON integers across the full u64 range without precision loss, so downcasting BigInts to (potentially lossy) ints is unnecessary. getDefaultRequestTransformerForSolanaRpc no longer downcasts; if you still need this behavior, recreate it with getTreeWalkerRequestTransformer and a visitor that replaces BigInt nodes with int values.

  • solana_kit_rpc_transformers: the numeric allow-list keeps transactionConfig.computeUnitLimit, transactionConfig.heapSize, and transactionConfig.loadedAccountsDataSizeLimit from version 1 transaction responses as numbers instead of upcasting them to BigInt (upstream #1951).

  • Documentation now tracks @solana/kit v8.1.0, and the reference pin in config/reference-repos.json moved to bb54243d8a57 (tag v8.1.0).

Migration example:

// Before (removed):
// final estimate = estimateComputeUnitLimitFactory(rpc);
// var message = await estimateAndSetComputeUnitLimitFactory(estimate)(message);
// final freeBytes = transactionSizeLimit - getTransactionSize(transaction);

// After:
final estimate = estimateResourceLimitsFactory(rpc);
var message = await estimateAndSetResourceLimitsFactory(estimate)(message);
final freeBytes =
    getTransactionSizeLimit(transaction) - getTransactionSize(transaction);

Owner: @ifiokjr ยท Review: PR #225 ยท Related issues: #1899, #1902, #1910, #1913, #1948, #1951, #1957, #1970, #1971, #1972, #1979, #220

๐Ÿ› Fixed #

Sync upstream @solana/kit v7.1.1

Tracks upstream APIs and behavior through v7.1.1:

  • solana_kit: README now documents v7.1.1 as the latest supported upstream version.
  • solana_kit_codecs_strings: base-X decoders now report the end of the buffer as the next offset when no bytes remain to decode, matching upstream @solana/codecs-strings (#1926).
  • solana_kit_rpc_transformers: subscription responses for blockSubscribe/blockNotification now consult the blockNotifications numeric allow-list, matching upstream @solana/rpc-transformers (#1925).
  • solana_kit_instruction_plans: successfulSingleTransactionPlanResultFromTransaction is deprecated in favor of successfulSingleTransactionPlanResult with an explicit context, matching upstream @solana/instruction-plans (#1924).

Owner: @ifiokjr ยท Review: PR #220 ยท Related issues: #1924, #1925, #1926

๐Ÿ“– Documentation #

Unslop package docs and code comments

Rewrote every package README from a reader's perspective with verified, compilable examples, removed AI-tell phrasing from docs and code comments, and added a test that analyzes every Dart block in Markdown so examples cannot drift from the API.

Owner: @ifiokjr ยท Review: PR #223

0.8.0 - 2026-08-19 #

Changed #

  • No package-specific changes were recorded; solana_kit_rpc_transformers was updated to 0.8.0 as part of group main.

0.7.0 - 2026-08-18 #

๐Ÿ’ฅ Breaking Change #

@solana/kit v7.0.0 upstream sync (foundational breaking changes)

Ports the foundational breaking changes from @solana/kit v7.0.0:

  • solana_kit_errors: new transactionIntrospection error domain + codes (transactionFailedToDecompileInstructionAccountIndexOutOfRange, transactionIntrospectionCannotDecodeJsonParsedTransaction, transactionIntrospectionUnrecognizedGetTransactionResponse) and instruction-plans max-instructions codes (instructionPlansInvalidMaxInstructionsPerTransaction, instructionPlansMaxInstructionsPerTransactionExceeded).
  • solana_kit_codecs_data_structures: createDependentStructDecoder fluent builder for structs whose later fields depend on earlier decoded values.
  • solana_kit_instruction_plans: configurable maxInstructionsPerTransaction (default 16, limit 64) on TransactionPlannerConfig, individual TransactionPlanner invocations, and MessagePacker; invocation-specific planner values take precedence without leaking to later calls.
  • solana_kit_rpc_types: isSolanaRpcResponse runtime guard.
  • solana_kit: removed the local getMinimumBalanceForRentExemption helper (rent exemption is becoming dynamic; use the RPC method instead).
  • solana_kit_subscribable: ReactiveStreamStore v7 rewrite โ€” caller-driven connect()/reset()/withSignal(), starts idle, collapses retrying into loading (stale-while-revalidate), renames getUnifiedState() โ†’ getState(); removed retry(), value-only getState(), getError(). ReactiveActionStore now passes a fresh CancellationToken to every action, cancels superseded/reset/disposed dispatches, suppresses late outcomes, exposes caller cancellation through withSignal(), and preserves stale results and errors while running.
  • solana_kit_transaction_introspection: new first-class package porting @solana/transaction-introspection โ€” RPC transaction decoding, instruction and inner-instruction extraction, loaded-address resolution, and instruction walking helpers; re-exported from the solana_kit umbrella.
  • solana_kit_rpc_parsed_types / solana_kit_rpc_transformers / solana_kit_rpc_api: Agave 4.1.0 parsed-account types โ€” vote commissions/latency as int (not BigInt); rent sysvar union (lamportsPerByte vs deprecated burnPercent/exemptionThreshold/ lamportsPerByteYear); stake warmupCooldownRate optional; config slashPenalty/warmupCooldownRate deprecated; keep vote commissions and latency as int in the numeric-keypath allow-lists.

Migration: getMinimumBalanceForRentExemption(space) โ†’ rpc.getMinimumBalanceForRentExemption(space).send(); store.retry() โ†’ store.connect(); store.getUnifiedState() โ†’ store.getState(); the deprecated ReactiveStore/createReactiveStoreFromStreams โ†’ createReactiveStreamStore; reactive actions must migrate from (args) async => result to (signal, args) async => result.

// Before
final lamports = getMinimumBalanceForRentExemption(space);
store.retry();
final state = store.getUnifiedState();

// After
final lamports = await rpc.getMinimumBalanceForRentExemption(space).send();
store.connect();
final state = store.getState();

Owner: @ifiokjr ยท Review: PR #204

๐Ÿ› Fixed #

@solana/kit v7.1.0 upstream sync

Ports the @solana/kit v7.1.0 changes into the Dart SDK.

solana_kit_errors

Adds the three new error codes introduced in @solana/kit v7.1.0:

  • offchainMessageContentDoesNotMatchExpected (5607018) โ€” from @solana/offchain-messages's new assertOffchainMessageV1Equal helper.
  • offchainMessageRequiredSignatoriesDoNotMatchExpected (5607019) โ€” same.
  • subscribableStreamClosedWithoutError (8195001) โ€” from @solana/subscribable's new bridgeStoreToAsyncIterable helper.
solana_kit_subscribable

Adds bridgeStoreToAsyncIterable, which adapts a ReactiveStreamStore into a pull-based Stream (the Dart equivalent of the upstream AsyncIterable). It seeds from the store's current snapshot, yields loaded values (latest-wins), throws on error (substituting subscribableStreamClosedWithoutError when the error payload is nullish), and ends cleanly when the CancellationToken fires. The caller owns the store's lifecycle (connect()/reset()).

solana_kit_offchain_messages

Adds assertOffchainMessageV1Equal, which asserts that a version 1 offchain message received from an untrusted signer is the message you expected it to sign. Compares content (reporting UTF-8 byte lengths) and required signatories (order-insensitive, sorted for comparison), throwing offchainMessageContentDoesNotMatchExpected / offchainMessageRequiredSignatoriesDoNotMatchExpected on mismatch.

solana_kit_instruction_plans

createTransactionPlanExecutor's executeTransactionMessage callback may now return the context of a successful result (a map that must include a signature) instead of a Signature or Transaction. The returned context is merged with the mutable context, taking precedence. Returning a Signature or Transaction still behaves as before (stored as context['signature'] / context['transaction'] with the signature derived).

solana_kit_rpc_transformers / solana_kit_rpc_api
  • New tokenBalancesConfigs export (accountIndex, uiTokenAmount.decimals, uiTokenAmount.uiAmount).
  • getTransaction, getBlock, and simulateTransaction now allow-list uiTokenAmount.uiAmount (previously upcast to BigInt when whole).
  • simulateTransaction now allow-lists token-balance accountIndex and uiTokenAmount.decimals.
  • getTransaction and getBlock now allow-list the transaction version (previously arrived as 0n while typechecking as 0).
  • getTransactionsForAddress allowed-numeric keypaths.
solana_kit

Adds the v7.1.0 client-interface helpers:

  • ClientWithGetMinimumBalance and ClientWithFetchAccounts interfaces.
  • createClientWithGetMinimumBalanceFromRpc โ€” computes the rent-exempt minimum balance via getMinimumBalanceForRentExemption (with the withoutHeader rate-recovery trick).
  • createClientWithFetchAccountsFromRpc โ€” dispatches on address count (getAccountInfo / getMultipleAccounts / empty short-circuit).
  • createClientWithInterfacesFromRpc โ€” returns both interfaces.

Also re-exports the @solana/promises helpers as Dart counterparts: isAbortError, getAbortablePromise, and safeRace (adapted to Dart's cancellation model via CancellationToken; AbortError lives in solana_kit_subscribable).

solana_kit_rpc_api

Adds the getTransactionsForAddress RPC method request side: config (commitment, filters, limit, minContextSlot, paginationToken, sortOrder, encoding, maxSupportedTransactionVersion, transactionDetails), filters (blockTime/signature/slot comparisons, status, tokenAccounts), and the params builder.

solana_kit_rpc_types
  • Adds the getTransactionsForAddress response types: signatures and full modes (with per-entry base fields, transaction/status variants, and the TransactionDetails enum).
  • Adds the shared meta.costUnits field to the transaction meta types.

Already present in the Dart port (no change needed):

  • @solana/codecs-data-structures getBitArrayEncoder next-offset fix (offset + size) โ€” the Dart encoder already returns offset + size.
  • @solana/transaction-messages compressTransactionMessageUsingAddressLookupTables rejecting v1 transactions โ€” a compile-time-only type narrowing upstream; not expressible in Dart's single-class TransactionMessage model, so no runtime change.

@solana/react changes are not ported (React-only).

Owner: @ifiokjr ยท Review: PR #206

0.6.0 - 2026-08-12 #

๐Ÿ“– Documentation #

Centralize package version documentation

Centralize package version metadata in versions.json and render package installation snippets from the shared MDT data source. Published package behavior is unchanged.

Owner: @ifiokjr ยท Review: PR #188

Point package README website badges at package docs

Updated package README website badges to link directly to each package's docs catalog entry and added missing package entries to the documentation website catalog/index.

Owner: @ifiokjr ยท Review: PR #192

0.5.0 - 2026-06-01 #

๐Ÿ’ฅ Breaking Change #

Raise minimum Dart SDK to 3.12

Raise the minimum supported Dart SDK constraint to ^3.12.0 across public Dart packages.

This is a breaking change because consumers must use Dart 3.12 or newer. Flutter consumers must use a Flutter SDK that bundles Dart 3.12 or newer.

environment:
  sdk: ^3.12.0

Owner: Ifiok Jr. ยท Introduced in: 32d5d36

๐Ÿงช Testing #

Improve test coverage to 95%+ across all packages

Added 500+ tests covering equality/hashCode/toString, codec edge cases, error paths, and constructor variants. Removed dead code in fast_stable_stringify. Fixed concurrent modification bug in subscribable.

Owner: Ifiok Jr. ยท Introduced in: 48216f9 ยท Last updated in: b7f5419

0.4.0 - 2026-05-30 #

๐Ÿ“ Changed #

Restructure release groups

Move program-specific and domain-specific packages out of the main release group into standalone release schedules with independent versioning. Core SDK packages remain synchronized in the main group.

Owner: Ifiok Jr. ยท Introduced in: fccec7f ยท Last updated in: 93b3cd3

๐Ÿ› Fixed #

Add per-package coverage badges

Add codecov flags and per-package coverage badges to all package READMEs.

Owner: Ifiok Jr. ยท Introduced in: bed1b1f ยท Last updated in: 93b3cd3

0
likes
160
points
895
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Request and response transformers for the Solana Kit Dart SDK.

Homepage
Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

solana_kit_errors, solana_kit_rpc_spec_types, solana_kit_rpc_types

More

Packages that depend on solana_kit_rpc_transformers