Skip to content

Correct the type of the polyfilled exportKey and sign methods#806

Merged
steveluscher merged 1 commit into
mainfrom
08-29-correct_the_type_of_the_polyfilled_exportkey_and_sign_methods
Sep 2, 2025
Merged

Correct the type of the polyfilled exportKey and sign methods#806
steveluscher merged 1 commit into
mainfrom
08-29-correct_the_type_of_the_polyfilled_exportkey_and_sign_methods

Conversation

@steveluscher
Copy link
Copy Markdown
Contributor

@steveluscher steveluscher commented Aug 29, 2025

Problem

The return type of exportKey and sign is ArrayBuffer but we're returning Uint8Array. This wasn't caught until an upgrade to TypeScript 5.9 where this became a type error.

Summary of Changes

Return ArrayBuffer instead.

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Aug 29, 2025

🦋 Changeset detected

Latest commit: 7e29bd6

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

This PR includes changesets to release 41 packages
Name Type
@solana/webcrypto-ed25519-polyfill 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/compat Patch
@solana/errors Patch
@solana/fast-stable-stringify Patch
@solana/functional Patch
@solana/instruction-plans Patch
@solana/instructions Patch
@solana/keys Patch
@solana/kit Patch
@solana/nominal-types Patch
@solana/options Patch
@solana/programs Patch
@solana/promises Patch
@solana/react Patch
@solana/rpc-api Patch
@solana/rpc-graphql Patch
@solana/rpc-parsed-types Patch
@solana/rpc-spec-types Patch
@solana/rpc-spec Patch
@solana/rpc-subscriptions-api Patch
@solana/rpc-subscriptions-channel-websocket Patch
@solana/rpc-subscriptions-spec Patch
@solana/rpc-subscriptions Patch
@solana/rpc-transformers Patch
@solana/rpc-transport-http Patch
@solana/rpc-types Patch
@solana/rpc Patch
@solana/signers Patch
@solana/subscribable Patch
@solana/sysvars Patch
@solana/transaction-confirmation Patch
@solana/transaction-messages Patch
@solana/transactions 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

Copy link
Copy Markdown
Contributor Author

steveluscher commented Aug 29, 2025

@bundlemon
Copy link
Copy Markdown

bundlemon Bot commented Aug 29, 2025

BundleMon

Files updated (3)
Status Path Size Limits
webcrypto-ed25519-polyfill/dist/index.node.mj
s
3.6KB (+33B +0.9%) -
webcrypto-ed25519-polyfill/dist/index.browser
.mjs
3.59KB (+32B +0.88%) -
webcrypto-ed25519-polyfill/dist/index.native.
mjs
3.57KB (+32B +0.88%) -
Unchanged files (127)
Status Path Size Limits
@solana/kit production bundle
kit/dist/index.production.min.js
35.62KB -
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.32KB -
errors/dist/index.browser.mjs
15.29KB -
errors/dist/index.native.mjs
15.29KB -
transaction-messages/dist/index.browser.mjs
7.16KB -
transaction-messages/dist/index.native.mjs
7.15KB -
transaction-messages/dist/index.node.mjs
7.15KB -
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 -
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 -
codecs-core/dist/index.browser.mjs
3.31KB -
codecs-core/dist/index.native.mjs
3.31KB -
codecs-core/dist/index.node.mjs
3.31KB -
rpc-subscriptions/dist/index.native.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 -
transactions/dist/index.browser.mjs
2.31KB -
transactions/dist/index.native.mjs
2.31KB -
transactions/dist/index.node.mjs
2.3KB -
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.02KB -
keys/dist/index.native.mjs
2.02KB -
keys/dist/index.node.mjs
2.02KB -
codecs-numbers/dist/index.native.mjs
2.01KB -
codecs-numbers/dist/index.browser.mjs
2.01KB -
codecs-numbers/dist/index.node.mjs
2.01KB -
react/dist/index.native.mjs
1.99KB -
react/dist/index.browser.mjs
1.99KB -
react/dist/index.node.mjs
1.99KB -
rpc/dist/index.node.mjs
1.95KB -
rpc-transport-http/dist/index.browser.mjs
1.9KB -
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
971B -
compat/dist/index.native.mjs
970B -
compat/dist/index.node.mjs
968B -
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 +97B +0.03%

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

@steveluscher steveluscher force-pushed the 08-29-correct_the_type_of_the_polyfilled_exportkey_and_sign_methods branch from 7fd15a9 to 43f571d Compare August 29, 2025 18:36
Copy link
Copy Markdown
Contributor Author

I deemed this not a breaking change, since the API was already typed ArrayBuffer and Uint8Array offers everything that ArrayBuffer offers, and more.

Comment on lines +171 to +173
const result = new Uint8Array(ED25519_PKCS8_HEADER.length + secretKeyBytes.length);
result.set(ED25519_PKCS8_HEADER, 0);
result.set(secretKeyBytes, ED25519_PKCS8_HEADER.length);
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

More efficient way of building this that doesn't involve constructing two arrays.

@steveluscher steveluscher force-pushed the 08-29-correct_the_type_of_the_polyfilled_exportkey_and_sign_methods branch from 43f571d to e43f311 Compare August 29, 2025 18:46
@steveluscher steveluscher force-pushed the 08-29-a_jest_matcher_that_lets_you_write_expectations_about_the_equality_of_arraybuffers_ branch from 75753c2 to 430391b Compare August 29, 2025 18:46
@steveluscher steveluscher force-pushed the 08-29-correct_the_type_of_the_polyfilled_exportkey_and_sign_methods branch from 6091483 to e43f311 Compare August 29, 2025 18:50
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Aug 29, 2025

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

Copy link
Copy Markdown
Contributor Author

steveluscher commented Sep 2, 2025

Merge activity

  • Sep 2, 8:27 PM UTC: A user started a stack merge that includes this pull request via Graphite.
  • Sep 2, 8:29 PM UTC: Graphite rebased this pull request as part of a merge.
  • Sep 2, 8:30 PM UTC: @steveluscher merged this pull request with Graphite.

@steveluscher steveluscher changed the base branch from 08-29-a_jest_matcher_that_lets_you_write_expectations_about_the_equality_of_arraybuffers_ to graphite-base/806 September 2, 2025 20:27
@steveluscher steveluscher changed the base branch from graphite-base/806 to main September 2, 2025 20:27
@steveluscher steveluscher force-pushed the 08-29-correct_the_type_of_the_polyfilled_exportkey_and_sign_methods branch from e43f311 to 7e29bd6 Compare September 2, 2025 20:28
@steveluscher steveluscher merged commit f254415 into main Sep 2, 2025
12 of 13 checks passed
@steveluscher steveluscher deleted the 08-29-correct_the_type_of_the_polyfilled_exportkey_and_sign_methods branch September 2, 2025 20:30
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Sep 2, 2025

🔎💬 Inkeep AI search and chat service is syncing content for source 'Solana Kit Docs'

@github-actions github-actions Bot mentioned this pull request Sep 3, 2025
@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 Sep 17, 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.

2 participants