@reown/appkit-utils 1.7.14-wallet-button-fix.0 → 1.7.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
1
  export * from '../src/solana/SolanaConstantsUtil.js';
2
2
  export * from '../src/solana/SolanaHelpersUtils.js';
3
+ export * from '../src/solana/SolanaTransactionUtil.js';
3
4
  //# sourceMappingURL=solana.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../exports/solana.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAA;AACpD,cAAc,qCAAqC,CAAA"}
1
+ {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../exports/solana.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAA;AACpD,cAAc,qCAAqC,CAAA;AACnD,cAAc,wCAAwC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reown/appkit-utils",
3
- "version": "1.7.14-wallet-button-fix.0",
3
+ "version": "1.7.14",
4
4
  "sideEffects": false,
5
5
  "type": "module",
6
6
  "main": "./dist/esm/exports/index.js",
@@ -77,7 +77,8 @@
77
77
  "@solana/wallet-adapter-base": "0.9.26",
78
78
  "@vitest/coverage-v8": "2.1.9",
79
79
  "vitest": "3.1.3",
80
- "@walletconnect/types": "2.21.2"
80
+ "@walletconnect/types": "2.21.2",
81
+ "@solana/spl-token": "0.4.13"
81
82
  },
82
83
  "peerDependencies": {
83
84
  "valtio": "2.1.5"
@@ -4,7 +4,7 @@ export const ErrorUtil = {
4
4
  UniversalProviderErrors: {
5
5
  UNAUTHORIZED_DOMAIN_NOT_ALLOWED: {
6
6
  message: 'Unauthorized: origin not allowed',
7
- alertErrorKey: 'INVALID_APP_CONFIGURATION'
7
+ alertErrorKey: 'ORIGIN_NOT_ALLOWED'
8
8
  },
9
9
  JWT_VALIDATION_ERROR: {
10
10
  message: 'JWT validation error: JWT Token is not yet valid',
@@ -18,11 +18,11 @@ export const ErrorUtil = {
18
18
  ALERT_ERRORS: {
19
19
  SWITCH_NETWORK_NOT_FOUND: {
20
20
  shortMessage: 'Network Not Found',
21
- longMessage: "Network not found - please make sure it is included in 'networks' array in createAppKit function"
21
+ longMessage: "Network not found. Please make sure it is included in 'networks' array in createAppKit function."
22
22
  },
23
- INVALID_APP_CONFIGURATION: {
24
- shortMessage: 'Invalid App Configuration',
25
- longMessage: () => `Origin ${isSafe() ? window.origin : 'unknown'} not found on Allowlist - update configuration on cloud.reown.com`
23
+ ORIGIN_NOT_ALLOWED: {
24
+ shortMessage: 'Origin Not Allowed',
25
+ longMessage: () => `🔧 Origin ${isSafe() ? window.origin : 'unknown'} not found on allow list. Please update your project configurations on dashboard.reown.com.`
26
26
  },
27
27
  IFRAME_LOAD_FAILED: {
28
28
  shortMessage: 'Network Error - Could not load embedded wallet',
@@ -33,20 +33,20 @@ export const ErrorUtil = {
33
33
  longMessage: () => 'There was an issue doing the request to the embedded wallet. Please try again later.'
34
34
  },
35
35
  UNVERIFIED_DOMAIN: {
36
- shortMessage: 'Invalid App Configuration',
37
- longMessage: () => 'There was an issue loading the embedded wallet. Please verify that your domain is allowed at cloud.reown.com'
36
+ shortMessage: 'Unverified Domain',
37
+ longMessage: () => 'There was an issue loading the embedded wallet. Please verify that your domain is allowed at dashboard.reown.com.'
38
38
  },
39
39
  JWT_TOKEN_NOT_VALID: {
40
40
  shortMessage: 'Session Expired',
41
- longMessage: 'Invalid session found on UniversalProvider - please check your time settings and connect again'
41
+ longMessage: 'Invalid session found on UniversalProvider. Please check your time settings and connect again.'
42
42
  },
43
43
  INVALID_PROJECT_ID: {
44
- shortMessage: 'Invalid App Configuration',
45
- longMessage: 'Invalid Project ID - update configuration'
44
+ shortMessage: 'Invalid Project ID',
45
+ longMessage: 'The project ID is invalid. Visit dashboard.reown.com to get a new one.'
46
46
  },
47
47
  PROJECT_ID_NOT_CONFIGURED: {
48
48
  shortMessage: 'Project ID Not Configured',
49
- longMessage: 'Project ID Not Configured - update configuration on cloud.reown.com'
49
+ longMessage: 'Project ID Not Configured. Please update your project configurations on dashboard.reown.com.'
50
50
  },
51
51
  SERVER_ERROR_APP_CONFIGURATION: {
52
52
  shortMessage: 'Server Error',
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorUtil.js","sourceRoot":"","sources":["../../../src/ErrorUtil.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;AAE7C,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,6BAA6B,EAAE,eAAe;IAC9C,uBAAuB,EAAE;QACvB,+BAA+B,EAAE;YAC/B,OAAO,EAAE,kCAAkC;YAC3C,aAAa,EAAE,2BAA2B;SAC3C;QACD,oBAAoB,EAAE;YACpB,OAAO,EAAE,kDAAkD;YAC3D,aAAa,EAAE,qBAAqB;SACrC;QACD,WAAW,EAAE;YACX,OAAO,EAAE,2BAA2B;YACpC,aAAa,EAAE,oBAAoB;SACpC;KACF;IACD,YAAY,EAAE;QACZ,wBAAwB,EAAE;YACxB,YAAY,EAAE,mBAAmB;YACjC,WAAW,EACT,kGAAkG;SACrG;QACD,yBAAyB,EAAE;YACzB,YAAY,EAAE,2BAA2B;YACzC,WAAW,EAAE,GAAG,EAAE,CAChB,UACE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAC7B,mEAAmE;SACtE;QACD,kBAAkB,EAAE;YAClB,YAAY,EAAE,gDAAgD;YAC9D,WAAW,EAAE,GAAG,EAAE,CAAC,yEAAyE;SAC7F;QACD,sBAAsB,EAAE;YACtB,YAAY,EAAE,mCAAmC;YACjD,WAAW,EAAE,GAAG,EAAE,CAChB,sFAAsF;SACzF;QACD,iBAAiB,EAAE;YACjB,YAAY,EAAE,2BAA2B;YACzC,WAAW,EAAE,GAAG,EAAE,CAChB,8GAA8G;SACjH;QAED,mBAAmB,EAAE;YACnB,YAAY,EAAE,iBAAiB;YAC/B,WAAW,EACT,gGAAgG;SACnG;QACD,kBAAkB,EAAE;YAClB,YAAY,EAAE,2BAA2B;YACzC,WAAW,EAAE,2CAA2C;SACzD;QACD,yBAAyB,EAAE;YACzB,YAAY,EAAE,2BAA2B;YACzC,WAAW,EAAE,qEAAqE;SACnF;QACD,8BAA8B,EAAE;YAC9B,YAAY,EAAE,cAAc;YAC5B,WAAW,EAAE,CAAC,YAAqB,EAAE,EAAE,CACrC,mCAAmC,YAAY,IAAI,EAAE,EAAE;SAC1D;QACD,8BAA8B,EAAE;YAC9B,YAAY,EAAE,cAAc;YAC5B,WAAW,EAAE,uDAAuD;SACrE;KACF;CACF,CAAA;AAED,SAAS,MAAM;IACb,OAAO,OAAO,MAAM,KAAK,WAAW,CAAA;AACtC,CAAC"}
1
+ {"version":3,"file":"ErrorUtil.js","sourceRoot":"","sources":["../../../src/ErrorUtil.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;AAE7C,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,6BAA6B,EAAE,eAAe;IAC9C,uBAAuB,EAAE;QACvB,+BAA+B,EAAE;YAC/B,OAAO,EAAE,kCAAkC;YAC3C,aAAa,EAAE,oBAAoB;SACpC;QACD,oBAAoB,EAAE;YACpB,OAAO,EAAE,kDAAkD;YAC3D,aAAa,EAAE,qBAAqB;SACrC;QACD,WAAW,EAAE;YACX,OAAO,EAAE,2BAA2B;YACpC,aAAa,EAAE,oBAAoB;SACpC;KACF;IACD,YAAY,EAAE;QACZ,wBAAwB,EAAE;YACxB,YAAY,EAAE,mBAAmB;YACjC,WAAW,EACT,kGAAkG;SACrG;QACD,kBAAkB,EAAE;YAClB,YAAY,EAAE,oBAAoB;YAClC,WAAW,EAAE,GAAG,EAAE,CAChB,aACE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAC7B,6FAA6F;SAChG;QACD,kBAAkB,EAAE;YAClB,YAAY,EAAE,gDAAgD;YAC9D,WAAW,EAAE,GAAG,EAAE,CAAC,yEAAyE;SAC7F;QACD,sBAAsB,EAAE;YACtB,YAAY,EAAE,mCAAmC;YACjD,WAAW,EAAE,GAAG,EAAE,CAChB,sFAAsF;SACzF;QACD,iBAAiB,EAAE;YACjB,YAAY,EAAE,mBAAmB;YACjC,WAAW,EAAE,GAAG,EAAE,CAChB,mHAAmH;SACtH;QAED,mBAAmB,EAAE;YACnB,YAAY,EAAE,iBAAiB;YAC/B,WAAW,EACT,gGAAgG;SACnG;QACD,kBAAkB,EAAE;YAClB,YAAY,EAAE,oBAAoB;YAClC,WAAW,EAAE,wEAAwE;SACtF;QACD,yBAAyB,EAAE;YACzB,YAAY,EAAE,2BAA2B;YACzC,WAAW,EACT,8FAA8F;SACjG;QACD,8BAA8B,EAAE;YAC9B,YAAY,EAAE,cAAc;YAC5B,WAAW,EAAE,CAAC,YAAqB,EAAE,EAAE,CACrC,mCAAmC,YAAY,IAAI,EAAE,EAAE;SAC1D;QACD,8BAA8B,EAAE;YAC9B,YAAY,EAAE,cAAc;YAC5B,WAAW,EAAE,uDAAuD;SACrE;KACF;CACF,CAAA;AAED,SAAS,MAAM;IACb,OAAO,OAAO,MAAM,KAAK,WAAW,CAAA;AACtC,CAAC"}
@@ -37,4 +37,9 @@ export const SolConstantsUtil = {
37
37
  },
38
38
  LAMPORTS_PER_SOL: 1_000_000_000
39
39
  };
40
+ export const SPL_COMPUTE_BUDGET_CONSTANTS = {
41
+ UNIT_PRICE_MICRO_LAMPORTS: 20000000,
42
+ UNIT_LIMIT_TRANSFER_ONLY: 300000,
43
+ UNIT_LIMIT_WITH_ATA_CREATION: 400000
44
+ };
40
45
  //# sourceMappingURL=SolanaConstantsUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolanaConstantsUtil.js","sourceRoot":"","sources":["../../../../src/solana/SolanaConstantsUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAAoB,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEtE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,4BAA4B,EAAE,+BAA+B;IAC7D,WAAW,EAAE,kBAAkB;IAI/B,mBAAmB,EAAE,IAAI,SAAS,CAAC,8CAA8C,CAAC;IAIlF,eAAe,EAAE,IAAI,SAAS,CAAC,6CAA6C,CAAC;IAI7E,oBAAoB,EAAE,IAAI,SAAS,CAAC,8CAA8C,CAAC;IAInF,aAAa,EAAE;QACb,EAAE,EAAE,kCAAkC;QACtC,aAAa,EAAE,yCAAyC;QACxD,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM;QAC1C,cAAc,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,KAAK;SACd;QACD,cAAc,EAAE;YACd,OAAO,EAAE;gBACP,IAAI,EAAE,SAAS;gBACf,GAAG,EAAE,oBAAoB;aAC1B;SACF;QACD,OAAO,EAAE;YACP,OAAO,EAAE;gBACP,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC,sBAAsB,KAAK,CAAC;aACrD;SACF;KACa;IAChB,SAAS,EAAE;QACT,OAAO,EAAE,yCAAyC;QAClD,MAAM,EAAE,yCAAyC;QACjD,OAAO,EAAE,yCAAyC;QAClD,kBAAkB,EAAE,yCAAyC;QAC7D,iBAAiB,EAAE,yCAAyC;KAC7D;IACD,gBAAgB,EAAE,aAAa;CACvB,CAAA"}
1
+ {"version":3,"file":"SolanaConstantsUtil.js","sourceRoot":"","sources":["../../../../src/solana/SolanaConstantsUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAAoB,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEtE,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,4BAA4B,EAAE,+BAA+B;IAC7D,WAAW,EAAE,kBAAkB;IAI/B,mBAAmB,EAAE,IAAI,SAAS,CAAC,8CAA8C,CAAC;IAIlF,eAAe,EAAE,IAAI,SAAS,CAAC,6CAA6C,CAAC;IAI7E,oBAAoB,EAAE,IAAI,SAAS,CAAC,8CAA8C,CAAC;IAInF,aAAa,EAAE;QACb,EAAE,EAAE,kCAAkC;QACtC,aAAa,EAAE,yCAAyC;QACxD,IAAI,EAAE,QAAQ;QACd,cAAc,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM;QAC1C,cAAc,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,KAAK;SACd;QACD,cAAc,EAAE;YACd,OAAO,EAAE;gBACP,IAAI,EAAE,SAAS;gBACf,GAAG,EAAE,oBAAoB;aAC1B;SACF;QACD,OAAO,EAAE;YACP,OAAO,EAAE;gBACP,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC,sBAAsB,KAAK,CAAC;aACrD;SACF;KACa;IAChB,SAAS,EAAE;QACT,OAAO,EAAE,yCAAyC;QAClD,MAAM,EAAE,yCAAyC;QACjD,OAAO,EAAE,yCAAyC;QAClD,kBAAkB,EAAE,yCAAyC;QAC7D,iBAAiB,EAAE,yCAAyC;KAC7D;IACD,gBAAgB,EAAE,aAAa;CACvB,CAAA;AAEV,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,yBAAyB,EAAE,QAAQ;IACnC,wBAAwB,EAAE,MAAM;IAChC,4BAA4B,EAAE,MAAM;CAC5B,CAAA"}
@@ -0,0 +1,69 @@
1
+ import { TOKEN_PROGRAM_ID, TokenAccountNotFoundError, createAssociatedTokenAccountInstruction, createTransferInstruction, getAccount, getAssociatedTokenAddressSync, getMint } from '@solana/spl-token';
2
+ import { ComputeBudgetProgram, PublicKey, Transaction } from '@solana/web3.js';
3
+ import { SPL_COMPUTE_BUDGET_CONSTANTS } from './SolanaConstantsUtil.js';
4
+ export async function createSPLTokenTransaction({ provider, to, amount, tokenMint, connection }) {
5
+ if (!provider.publicKey) {
6
+ throw new Error('No public key found');
7
+ }
8
+ if (amount <= 0) {
9
+ throw new Error('Amount must be greater than 0');
10
+ }
11
+ try {
12
+ const fromPubkey = provider.publicKey;
13
+ const toPubkey = new PublicKey(to);
14
+ const mintPubkey = new PublicKey(tokenMint);
15
+ const mintInfo = await getMint(connection, mintPubkey);
16
+ const decimals = mintInfo.decimals;
17
+ if (decimals < 0) {
18
+ throw new Error('Invalid token decimals');
19
+ }
20
+ const tokenAmount = Math.floor(amount * 10 ** decimals);
21
+ const fromTokenAccount = getAssociatedTokenAddressSync(mintPubkey, fromPubkey);
22
+ const toTokenAccount = getAssociatedTokenAddressSync(mintPubkey, toPubkey);
23
+ try {
24
+ const fromAccount = await getAccount(connection, fromTokenAccount);
25
+ if (fromAccount.amount < BigInt(tokenAmount)) {
26
+ throw new Error('Insufficient token balance');
27
+ }
28
+ }
29
+ catch (error) {
30
+ if (error instanceof TokenAccountNotFoundError) {
31
+ throw new Error('Sender does not have a token account for this mint');
32
+ }
33
+ throw error;
34
+ }
35
+ let shouldCreateATA = false;
36
+ try {
37
+ await getAccount(connection, toTokenAccount);
38
+ }
39
+ catch (error) {
40
+ if (error instanceof TokenAccountNotFoundError) {
41
+ shouldCreateATA = true;
42
+ }
43
+ else {
44
+ throw error;
45
+ }
46
+ }
47
+ const instructions = [];
48
+ const computeUnitLimit = shouldCreateATA
49
+ ? SPL_COMPUTE_BUDGET_CONSTANTS.UNIT_LIMIT_WITH_ATA_CREATION
50
+ : SPL_COMPUTE_BUDGET_CONSTANTS.UNIT_LIMIT_TRANSFER_ONLY;
51
+ instructions.push(ComputeBudgetProgram.setComputeUnitPrice({
52
+ microLamports: SPL_COMPUTE_BUDGET_CONSTANTS.UNIT_PRICE_MICRO_LAMPORTS
53
+ }), ComputeBudgetProgram.setComputeUnitLimit({ units: computeUnitLimit }));
54
+ if (shouldCreateATA) {
55
+ instructions.push(createAssociatedTokenAccountInstruction(fromPubkey, toTokenAccount, toPubkey, mintPubkey));
56
+ }
57
+ instructions.push(createTransferInstruction(fromTokenAccount, toTokenAccount, fromPubkey, tokenAmount, [], TOKEN_PROGRAM_ID));
58
+ const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash();
59
+ return new Transaction({
60
+ feePayer: fromPubkey,
61
+ blockhash,
62
+ lastValidBlockHeight
63
+ }).add(...instructions);
64
+ }
65
+ catch (error) {
66
+ throw new Error(`Failed to create SPL token transaction: ${error instanceof Error ? error.message : 'Unknown error'}`);
67
+ }
68
+ }
69
+ //# sourceMappingURL=SolanaTransactionUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolanaTransactionUtil.js","sourceRoot":"","sources":["../../../../src/solana/SolanaTransactionUtil.ts"],"names":[],"mappings":"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"}