Skip to content

Commit 69e9f28

Browse files
committed
chore(clerk-js): remove bs58 dependency from package.json and pnpm-lock.yaml
Signed-off-by: Kenton Duprey <kenton@clerk.dev>
1 parent 3bea296 commit 69e9f28

File tree

3 files changed

+30
-19
lines changed

3 files changed

+30
-19
lines changed

packages/clerk-js/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@
8080
"@zxcvbn-ts/language-common": "3.0.4",
8181
"alien-signals": "2.0.6",
8282
"browser-tabs-lock": "1.3.0",
83-
"bs58": "^6.0.0",
8483
"copy-to-clipboard": "3.3.3",
8584
"core-js": "3.41.0",
8685
"crypto-js": "^4.2.0",

packages/clerk-js/src/utils/web3.ts

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type { GenerateSignature, Web3Provider } from '@clerk/shared/types';
22
import type { SolanaWalletAdapterWallet } from '@solana/wallet-standard';
33

44
import { clerkUnsupportedEnvironmentWarning } from '@/core/errors';
5+
import { ClerkRuntimeError } from '@/index.headless';
56
import { errorThrower } from '@/utils/errorThrower';
67
import { getInjectedWeb3SolanaProviders } from '@/utils/injectedWeb3SolanaProviders';
78

@@ -51,21 +52,32 @@ export const generateWeb3Signature: GenerateSignature = async (params): Promise<
5152
}
5253

5354
if (provider === 'solana') {
54-
const bs58 = await import('bs58').then(mod => mod.default);
55-
const walletAccount = (wallet as SolanaWalletAdapterWallet).accounts.find(a => a.address === identifier);
56-
if (!walletAccount) {
57-
console.warn(`Wallet account with address ${identifier} not found`);
58-
return '';
59-
}
60-
const signedMessages = await (wallet as SolanaWalletAdapterWallet).features[SolanaSignMessage]?.signMessage({
61-
account: walletAccount,
62-
message: new TextEncoder().encode(nonce),
63-
});
64-
if (!signedMessages || signedMessages.length === 0) {
65-
console.warn('No signed messages returned from wallet');
66-
return '';
55+
try {
56+
const walletAccount = (wallet as SolanaWalletAdapterWallet).accounts.find(a => a.address === identifier);
57+
if (!walletAccount) {
58+
console.warn(`Wallet account with address ${identifier} not found`);
59+
return '';
60+
}
61+
const signedMessages = await (wallet as SolanaWalletAdapterWallet).features[SolanaSignMessage]?.signMessage({
62+
account: walletAccount,
63+
message: new TextEncoder().encode(nonce),
64+
});
65+
if (!signedMessages || signedMessages.length === 0) {
66+
console.warn('No signed messages returned from wallet');
67+
return '';
68+
}
69+
return Array.from(signedMessages[0].signature).toString();
70+
} catch (err) {
71+
if (err instanceof Error && err.message.includes('User rejected the request.')) {
72+
throw new ClerkRuntimeError('Web3 signature request was rejected by the user.', {
73+
code: 'web3_signature_request_rejected',
74+
});
75+
}
76+
throw new ClerkRuntimeError('An error occurred while generating the Solana signature.', {
77+
code: 'web3_solana_signature_error',
78+
cause: err,
79+
});
6780
}
68-
return bs58.encode(signedMessages[0].signature);
6981
}
7082

7183
return await wallet.request({
@@ -90,7 +102,10 @@ export async function getBaseIdentifier(): Promise<string> {
90102
return await getWeb3Identifier({ provider: 'base' });
91103
}
92104

93-
export async function getSolanaIdentifier(walletName: string): Promise<string> {
105+
export async function getSolanaIdentifier(walletName?: string): Promise<string> {
106+
if (!walletName) {
107+
throw new Error('walletName is required for solana web3 authentication');
108+
}
94109
return await getWeb3Identifier({ provider: 'solana', walletName });
95110
}
96111

pnpm-lock.yaml

Lines changed: 0 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)