Skip to content

Add functions to narrow a TransactionWithLifetime to a specific lifetime#925

Merged
mcintyre94 merged 2 commits into
mainfrom
transaction-lifetime-narrow
Oct 3, 2025
Merged

Add functions to narrow a TransactionWithLifetime to a specific lifetime#925
mcintyre94 merged 2 commits into
mainfrom
transaction-lifetime-narrow

Conversation

@mcintyre94
Copy link
Copy Markdown
Member

@mcintyre94 mcintyre94 commented Oct 1, 2025

Summary of Changes

This PR adds functions to narrow from a Transaction | (Transaction & TransactionWithLifetime) to TransactionWithBlockhashLifetime or TransactionWithDurableNonceLifetime.

These functions will be useful when we update the modifying signer API to return TransactionWithLifetime instead of mirroring the input transaction message type. It will then be necessary to use one of these functions to narrow the type if you wish to use Kit's confirmation logic, which depends on a specific lifetimeConstraint being attached to transactions.

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Oct 1, 2025

🦋 Changeset detected

Latest commit: 5e14804

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 41 packages
Name Type
@solana/transactions Patch
@solana/compat Patch
@solana/instruction-plans Patch
@solana/kit Patch
@solana/react Patch
@solana/rpc-api Patch
@solana/rpc-graphql Patch
@solana/rpc-subscriptions-api Patch
@solana/signers Patch
@solana/transaction-confirmation Patch
@solana/rpc Patch
@solana/sysvars Patch
@solana/rpc-subscriptions Patch
@solana/accounts Patch
@solana/addresses Patch
@solana/assertions Patch
@solana/codecs-core Patch
@solana/codecs-data-structures Patch
@solana/codecs-numbers Patch
@solana/codecs-strings Patch
@solana/codecs Patch
@solana/errors Patch
@solana/fast-stable-stringify Patch
@solana/functional Patch
@solana/instructions Patch
@solana/keys Patch
@solana/nominal-types Patch
@solana/options Patch
@solana/programs Patch
@solana/promises Patch
@solana/rpc-parsed-types Patch
@solana/rpc-spec-types Patch
@solana/rpc-spec Patch
@solana/rpc-subscriptions-channel-websocket Patch
@solana/rpc-subscriptions-spec Patch
@solana/rpc-transformers Patch
@solana/rpc-transport-http Patch
@solana/rpc-types Patch
@solana/subscribable Patch
@solana/transaction-messages Patch
@solana/webcrypto-ed25519-polyfill Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@bundlemon
Copy link
Copy Markdown

bundlemon Bot commented Oct 1, 2025

BundleMon

Files updated (4)
Status Path Size Limits
transactions/dist/index.browser.mjs
2.9KB (+200B +7.21%) -
transactions/dist/index.node.mjs
2.9KB (+199B +7.18%) -
transactions/dist/index.native.mjs
2.9KB (+198B +7.14%) -
@solana/kit production bundle
kit/dist/index.production.min.js
36.01KB (+102B +0.28%) -
Unchanged files (126)
Status Path Size Limits
rpc-graphql/dist/index.browser.mjs
18.82KB -
rpc-graphql/dist/index.native.mjs
18.81KB -
rpc-graphql/dist/index.node.mjs
18.81KB -
errors/dist/index.node.mjs
15.52KB -
errors/dist/index.browser.mjs
15.5KB -
errors/dist/index.native.mjs
15.5KB -
transaction-messages/dist/index.browser.mjs
7.25KB -
transaction-messages/dist/index.native.mjs
7.25KB -
transaction-messages/dist/index.node.mjs
7.25KB -
codecs-data-structures/dist/index.browser.mjs
4.69KB -
codecs-data-structures/dist/index.native.mjs
4.69KB -
codecs-data-structures/dist/index.node.mjs
4.69KB -
webcrypto-ed25519-polyfill/dist/index.node.mj
s
3.6KB -
webcrypto-ed25519-polyfill/dist/index.browser
.mjs
3.59KB -
webcrypto-ed25519-polyfill/dist/index.native.
mjs
3.57KB -
instruction-plans/dist/index.browser.mjs
3.42KB -
instruction-plans/dist/index.native.mjs
3.42KB -
instruction-plans/dist/index.node.mjs
3.41KB -
rpc-subscriptions/dist/index.browser.mjs
3.37KB -
rpc-subscriptions/dist/index.node.mjs
3.34KB -
rpc-subscriptions/dist/index.native.mjs
3.31KB -
codecs-core/dist/index.browser.mjs
3.31KB -
codecs-core/dist/index.native.mjs
3.31KB -
codecs-core/dist/index.node.mjs
3.31KB -
addresses/dist/index.browser.mjs
2.93KB -
rpc-transformers/dist/index.browser.mjs
2.93KB -
rpc-transformers/dist/index.native.mjs
2.93KB -
addresses/dist/index.native.mjs
2.93KB -
addresses/dist/index.node.mjs
2.93KB -
rpc-transformers/dist/index.node.mjs
2.93KB -
signers/dist/index.browser.mjs
2.63KB -
signers/dist/index.native.mjs
2.63KB -
signers/dist/index.node.mjs
2.62KB -
codecs-strings/dist/index.browser.mjs
2.53KB -
codecs-strings/dist/index.node.mjs
2.48KB -
codecs-strings/dist/index.native.mjs
2.45KB -
transaction-confirmation/dist/index.node.mjs
2.41KB -
transaction-confirmation/dist/index.native.mj
s
2.36KB -
transaction-confirmation/dist/index.browser.m
js
2.35KB -
sysvars/dist/index.browser.mjs
2.35KB -
sysvars/dist/index.native.mjs
2.34KB -
sysvars/dist/index.node.mjs
2.34KB -
react/dist/index.browser.mjs
2.29KB -
react/dist/index.native.mjs
2.28KB -
react/dist/index.node.mjs
2.28KB -
rpc-subscriptions-spec/dist/index.node.mjs
2.18KB -
rpc-subscriptions-spec/dist/index.native.mjs
2.13KB -
rpc-subscriptions-spec/dist/index.browser.mjs
2.13KB -
keys/dist/index.browser.mjs
2.08KB -
keys/dist/index.native.mjs
2.08KB -
keys/dist/index.node.mjs
2.08KB -
codecs-numbers/dist/index.native.mjs
2.01KB -
codecs-numbers/dist/index.browser.mjs
2.01KB -
codecs-numbers/dist/index.node.mjs
2.01KB -
rpc/dist/index.node.mjs
1.95KB -
rpc-transport-http/dist/index.browser.mjs
1.91KB -
rpc-transport-http/dist/index.native.mjs
1.9KB -
rpc/dist/index.native.mjs
1.8KB -
subscribable/dist/index.node.mjs
1.8KB -
rpc/dist/index.browser.mjs
1.8KB -
subscribable/dist/index.native.mjs
1.75KB -
subscribable/dist/index.browser.mjs
1.74KB -
rpc-transport-http/dist/index.node.mjs
1.72KB -
kit/dist/index.browser.mjs
1.68KB -
kit/dist/index.native.mjs
1.68KB -
kit/dist/index.node.mjs
1.67KB -
rpc-types/dist/index.browser.mjs
1.53KB -
rpc-types/dist/index.native.mjs
1.53KB -
rpc-types/dist/index.node.mjs
1.53KB -
rpc-subscriptions-channel-websocket/dist/inde
x.node.mjs
1.33KB -
rpc-subscriptions-channel-websocket/dist/inde
x.native.mjs
1.27KB -
rpc-subscriptions-channel-websocket/dist/inde
x.browser.mjs
1.26KB -
options/dist/index.browser.mjs
1.18KB -
options/dist/index.native.mjs
1.18KB -
options/dist/index.node.mjs
1.17KB -
accounts/dist/index.browser.mjs
1.13KB -
accounts/dist/index.native.mjs
1.12KB -
accounts/dist/index.node.mjs
1.12KB -
rpc-api/dist/index.browser.mjs
976B -
rpc-api/dist/index.native.mjs
975B -
rpc-api/dist/index.node.mjs
973B -
compat/dist/index.browser.mjs
969B -
compat/dist/index.native.mjs
968B -
compat/dist/index.node.mjs
966B -
rpc-spec-types/dist/index.browser.mjs
962B -
rpc-spec-types/dist/index.native.mjs
961B -
rpc-spec-types/dist/index.node.mjs
959B -
rpc-subscriptions-api/dist/index.native.mjs
870B -
rpc-subscriptions-api/dist/index.node.mjs
869B -
rpc-subscriptions-api/dist/index.browser.mjs
868B -
rpc-spec/dist/index.browser.mjs
852B -
rpc-spec/dist/index.native.mjs
851B -
rpc-spec/dist/index.node.mjs
850B -
promises/dist/index.browser.mjs
799B -
promises/dist/index.native.mjs
798B -
promises/dist/index.node.mjs
797B -
assertions/dist/index.browser.mjs
783B -
instructions/dist/index.browser.mjs
769B -
instructions/dist/index.native.mjs
768B -
instructions/dist/index.node.mjs
767B -
fast-stable-stringify/dist/index.browser.mjs
726B -
fast-stable-stringify/dist/index.native.mjs
725B -
assertions/dist/index.native.mjs
724B -
fast-stable-stringify/dist/index.node.mjs
724B -
assertions/dist/index.node.mjs
723B -
programs/dist/index.browser.mjs
329B -
programs/dist/index.native.mjs
327B -
programs/dist/index.node.mjs
325B -
event-target-impl/dist/index.node.mjs
230B -
functional/dist/index.browser.mjs
154B -
functional/dist/index.native.mjs
152B -
text-encoding-impl/dist/index.native.mjs
152B -
functional/dist/index.node.mjs
151B -
codecs/dist/index.browser.mjs
137B -
codecs/dist/index.native.mjs
136B -
codecs/dist/index.node.mjs
134B -
event-target-impl/dist/index.browser.mjs
133B -
ws-impl/dist/index.node.mjs
131B -
text-encoding-impl/dist/index.browser.mjs
122B -
text-encoding-impl/dist/index.node.mjs
119B -
ws-impl/dist/index.browser.mjs
113B -
crypto-impl/dist/index.node.mjs
111B -
crypto-impl/dist/index.browser.mjs
109B -
rpc-parsed-types/dist/index.browser.mjs
66B -
rpc-parsed-types/dist/index.native.mjs
65B -
rpc-parsed-types/dist/index.node.mjs
63B -

Total files change +699B +0.19%

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

@mcintyre94 mcintyre94 marked this pull request as ready for review October 1, 2025 15:22
@mcintyre94 mcintyre94 force-pushed the transaction-lifetime-narrow branch 3 times, most recently from d519278 to 0711961 Compare October 1, 2025 16:00
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Oct 1, 2025

Documentation Preview: https://kit-docs-6o3lsf30u-anza-tech.vercel.app

Copy link
Copy Markdown
Contributor

@steveluscher steveluscher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added via Giphy

Comment thread packages/transactions/src/__tests__/lifetime-test.ts Outdated
@mcintyre94 mcintyre94 changed the base branch from wallet-hook-lifetime to graphite-base/925 October 1, 2025 20:30
@mcintyre94 mcintyre94 force-pushed the transaction-lifetime-narrow branch from 0711961 to 5e33099 Compare October 1, 2025 20:38
@mcintyre94 mcintyre94 changed the base branch from graphite-base/925 to wallet-hook-lifetime October 1, 2025 20:38
@mcintyre94 mcintyre94 force-pushed the transaction-lifetime-narrow branch from 5e33099 to f5dc0b9 Compare October 1, 2025 20:42
Copy link
Copy Markdown
Member

@lorisleiva lorisleiva left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

@mcintyre94 mcintyre94 force-pushed the wallet-hook-lifetime branch from 8a6cc93 to 3536388 Compare October 2, 2025 10:07
@mcintyre94 mcintyre94 force-pushed the transaction-lifetime-narrow branch from f5dc0b9 to 52c3c6f Compare October 2, 2025 10:07
Copy link
Copy Markdown
Member Author

mcintyre94 commented Oct 3, 2025

Merge activity

  • Oct 3, 10:36 AM UTC: A user started a stack merge that includes this pull request via Graphite.
  • Oct 3, 10:41 AM UTC: Graphite rebased this pull request as part of a merge.
  • Oct 3, 10:42 AM UTC: @mcintyre94 merged this pull request with Graphite.

@mcintyre94 mcintyre94 changed the base branch from wallet-hook-lifetime to graphite-base/925 October 3, 2025 10:37
@mcintyre94 mcintyre94 changed the base branch from graphite-base/925 to main October 3, 2025 10:39
@mcintyre94 mcintyre94 force-pushed the transaction-lifetime-narrow branch from 52c3c6f to 5e14804 Compare October 3, 2025 10:40
@mcintyre94 mcintyre94 merged commit af01f27 into main Oct 3, 2025
13 checks passed
@mcintyre94 mcintyre94 deleted the transaction-lifetime-narrow branch October 3, 2025 10:42
@github-actions
Copy link
Copy Markdown
Contributor

Because there has been no activity on this PR for 14 days since it was merged, it has been automatically locked. Please open a new issue if it requires a follow up.

@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Oct 20, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants