solana_kit_rpc_transformers 0.9.1
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_transformerswas updated to 0.9.1 as part of groupmain.
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 helpersfillTransactionMessageProvisoryComputeUnitLimitandestimateAndSetComputeUnitLimitFactory, matching upstream@solana/kit's removal of the deprecated@solana/kitestimation helpers (#1948). UsefillTransactionMessageProvisoryResourceLimitsandestimateAndSetResourceLimitsFactoryinstead, which additionally reserve and set the loaded accounts data size limit for version 1 transactions.setTransactionMessageComputeUnitLimitandsetTransactionMessageConfignow reject compute unit limits the runtime will not honor โ an integer outside[0, 1400000]โ throwingSolanaErrorCode.transactionComputeUnitLimitOutOfRange, and reject invalid heap sizes โ not a multiple of 1024 bytes in[32768, 262144]โ throwingSolanaErrorCode.transactionInvalidHeapSize(upstream #1972). Added the upstreamheap-size.tsmodule asgetTransactionMessageHeapSize/setTransactionMessageHeapSizewith the same validation, andresource_limit_validation.dartwithassertIsValidComputeUnitLimit/assertIsValidHeapSize,minHeapSize,maxHeapSize, andheapSizeMultipleOf. Decoding is unaffected:decompileTransactionMessagestill 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 constantstransactionPacketSize,transactionPacketHeader, andtransactionSizeLimit, matching upstream's removal ofTRANSACTION_PACKET_SIZE,TRANSACTION_PACKET_HEADER, andTRANSACTION_SIZE_LIMIT(#1948). UsegetTransactionSizeLimitto derive the limit for a specific transaction, or the per-version constantslegacyTransactionSizeLimit(1232) andv1TransactionSizeLimit(4096).Migration:
TRANSACTION_SIZE_LIMIT - getTransactionSize(t)โgetTransactionSizeLimit(t) - getTransactionSize(t). -
solana_kit_errors: added thefailedToSignTransaction(13) andfailedToSignTransactions(14) error codes with upstream messages, plus the transaction codestransactionComputeUnitLimitOutOfRange(5663039) andtransactionInvalidHeapSize(5663040) (upstream #1902, #1972). -
solana_kit_instruction_plans: addedcreateFailedToSendTransactionError,createFailedToSendTransactionsError,createFailedToSignTransactionError,createFailedToSignTransactionsError, andcreateFailedToExecuteTransactionPlanError, mirroring upstream@solana/instruction-plans'transaction-plan-errors.ts(#1902, #1434). The signing factories carry the same non-enumerabletransactionPlanResultand optionallogs/preflightDatacontext as their sending counterparts, but the message includes no submission-location indicator because signing never submits. The executor now throws throughcreateFailedToExecuteTransactionPlanError. -
solana_kit: added theClientWithTransactionSendingandClientWithTransactionSigningclient interfaces, mirroring upstream@solana/plugin-interfaces(#1899).signTransaction/signTransactionsaccept the same flexible inputs as their sending counterparts and return signed transactions without submitting them. Sending results guarantee a signature-bearingcontext; signing makes no default guarantee about the context, matching the upstreamTContextparameterization (adapted to Dart's map-based result contexts). -
solana_kit_rpc_transformers(breaking): removedgetBigIntDowncastRequestTransformer, matching upstream #1948. It was no longer used by the default Solana RPC request transformer: the Solana RPC transport serializesBigIntvalues losslessly as large integer literals viastringifyJsonWithBigInts, and Agave parses JSON integers across the fullu64range without precision loss, so downcastingBigInts to (potentially lossy)ints is unnecessary.getDefaultRequestTransformerForSolanaRpcno longer downcasts; if you still need this behavior, recreate it withgetTreeWalkerRequestTransformerand a visitor that replacesBigIntnodes withintvalues. -
solana_kit_rpc_transformers: the numeric allow-list keepstransactionConfig.computeUnitLimit,transactionConfig.heapSize, andtransactionConfig.loadedAccountsDataSizeLimitfrom version 1 transaction responses as numbers instead of upcasting them toBigInt(upstream #1951). -
Documentation now tracks
@solana/kitv8.1.0, and the reference pin inconfig/reference-repos.jsonmoved tobb54243d8a57(tagv8.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 documentsv7.1.1as 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 forblockSubscribe/blockNotificationnow consult theblockNotificationsnumeric allow-list, matching upstream@solana/rpc-transformers(#1925).solana_kit_instruction_plans:successfulSingleTransactionPlanResultFromTransactionis deprecated in favor ofsuccessfulSingleTransactionPlanResultwith 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.
0.8.0 - 2026-08-19 #
Changed #
- No package-specific changes were recorded;
solana_kit_rpc_transformerswas updated to 0.8.0 as part of groupmain.
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
transactionIntrospectionerror domain + codes (transactionFailedToDecompileInstructionAccountIndexOutOfRange,transactionIntrospectionCannotDecodeJsonParsedTransaction,transactionIntrospectionUnrecognizedGetTransactionResponse) and instruction-plans max-instructions codes (instructionPlansInvalidMaxInstructionsPerTransaction,instructionPlansMaxInstructionsPerTransactionExceeded). - solana_kit_codecs_data_structures:
createDependentStructDecoderfluent builder for structs whose later fields depend on earlier decoded values. - solana_kit_instruction_plans: configurable
maxInstructionsPerTransaction(default 16, limit 64) onTransactionPlannerConfig, individualTransactionPlannerinvocations, andMessagePacker; invocation-specific planner values take precedence without leaking to later calls. - solana_kit_rpc_types:
isSolanaRpcResponseruntime guard. - solana_kit: removed the local
getMinimumBalanceForRentExemptionhelper (rent exemption is becoming dynamic; use the RPC method instead). - solana_kit_subscribable:
ReactiveStreamStorev7 rewrite โ caller-drivenconnect()/reset()/withSignal(), startsidle, collapsesretryingintoloading(stale-while-revalidate), renamesgetUnifiedState()โgetState(); removedretry(), value-onlygetState(),getError().ReactiveActionStorenow passes a freshCancellationTokento every action, cancels superseded/reset/disposed dispatches, suppresses late outcomes, exposes caller cancellation throughwithSignal(), 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 thesolana_kitumbrella. - 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(notBigInt); rent sysvar union (lamportsPerBytevs deprecatedburnPercent/exemptionThreshold/lamportsPerByteYear); stakewarmupCooldownRateoptional; configslashPenalty/warmupCooldownRatedeprecated; keep vote commissions and latency asintin 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 newassertOffchainMessageV1Equalhelper.offchainMessageRequiredSignatoriesDoNotMatchExpected(5607019) โ same.subscribableStreamClosedWithoutError(8195001) โ from@solana/subscribable's newbridgeStoreToAsyncIterablehelper.
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
tokenBalancesConfigsexport (accountIndex,uiTokenAmount.decimals,uiTokenAmount.uiAmount). getTransaction,getBlock, andsimulateTransactionnow allow-listuiTokenAmount.uiAmount(previously upcast toBigIntwhen whole).simulateTransactionnow allow-lists token-balanceaccountIndexanduiTokenAmount.decimals.getTransactionandgetBlocknow allow-list the transactionversion(previously arrived as0nwhile typechecking as0).getTransactionsForAddressallowed-numeric keypaths.
solana_kit
Adds the v7.1.0 client-interface helpers:
ClientWithGetMinimumBalanceandClientWithFetchAccountsinterfaces.createClientWithGetMinimumBalanceFromRpcโ computes the rent-exempt minimum balance viagetMinimumBalanceForRentExemption(with thewithoutHeaderrate-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
getTransactionsForAddressresponse types:signaturesandfullmodes (with per-entry base fields, transaction/status variants, and theTransactionDetailsenum). - Adds the shared
meta.costUnitsfield to the transaction meta types.
Already present in the Dart port (no change needed):
@solana/codecs-data-structuresgetBitArrayEncodernext-offset fix (offset + size) โ the Dart encoder already returnsoffset + size.@solana/transaction-messagescompressTransactionMessageUsingAddressLookupTablesrejecting v1 transactions โ a compile-time-only type narrowing upstream; not expressible in Dart's single-classTransactionMessagemodel, so no runtime change.
@solana/react changes are not ported (React-only).
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.
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