@abstraxn/signer-react 3.3.0 → 3.3.1
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.
- package/CHANGELOG.md +1 -1
- package/README.md +1 -3
- package/dist/src/hooks.d.ts +1 -4
- package/dist/src/hooks.js +4 -25
- package/dist/src/types.d.ts +3 -10
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -10,7 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
10
10
|
### Added
|
|
11
11
|
|
|
12
12
|
- **Solana gasless relayer hooks** – Added `useSolanaGasless()` and `useSignAndSendSolanaGaslessTxn()` to support build/sign/send gasless flow from React apps.
|
|
13
|
-
- **Solana gasless provider config** – Added `solanaGasless` in `AbstraxnProviderConfig` for relayer settings (`enabled`, `
|
|
13
|
+
- **Solana gasless provider config** – Added `solanaGasless` in `AbstraxnProviderConfig` for relayer settings (`enabled`, `relayerUrl`, and optional polling defaults).
|
|
14
14
|
|
|
15
15
|
### Changed
|
|
16
16
|
|
package/README.md
CHANGED
|
@@ -29,9 +29,7 @@ const providerConfig: AbstraxnProviderConfig = {
|
|
|
29
29
|
apiKey: 'your-api-key-here',
|
|
30
30
|
solanaGasless: {
|
|
31
31
|
enabled: true,
|
|
32
|
-
|
|
33
|
-
apiKey: 'your-solana-relayer-api-key',
|
|
34
|
-
networkChainId: 101, // Solana mainnet
|
|
32
|
+
relayerUrl: 'https://dev-solana-relayer-api.abstraxn.com/api/v1/103?apikey=your-solana-relayer-api-key',
|
|
35
33
|
},
|
|
36
34
|
};
|
|
37
35
|
|
package/dist/src/hooks.d.ts
CHANGED
|
@@ -8622,12 +8622,9 @@ export type SolanaGaslessBuildParams = Omit<SolanaGaslessBuildTxParams, 'connect
|
|
|
8622
8622
|
};
|
|
8623
8623
|
export interface SolanaGaslessConfigResolved {
|
|
8624
8624
|
enabled: boolean;
|
|
8625
|
-
|
|
8626
|
-
apiKey: string;
|
|
8627
|
-
networkChainId: number;
|
|
8625
|
+
relayerUrl: string;
|
|
8628
8626
|
defaultPollMs?: number;
|
|
8629
8627
|
defaultTimeoutMs?: number;
|
|
8630
|
-
relayerUrl: string;
|
|
8631
8628
|
}
|
|
8632
8629
|
export declare function useSolanaGasless(): {
|
|
8633
8630
|
isEnabled: boolean;
|
package/dist/src/hooks.js
CHANGED
|
@@ -1518,20 +1518,6 @@ export function useSignAndSendSolanaTxn(connection) {
|
|
|
1518
1518
|
}, [connection, isConnected, whoami, signSolanaTransactionViaAPI, verifySignMfa]);
|
|
1519
1519
|
return { signAndSendSolanaTxn, isConnected, solanaAddress: whoami?.solanaAddress ?? null };
|
|
1520
1520
|
}
|
|
1521
|
-
function buildSolanaRelayerUrl(relayerBaseUrl, networkChainId, apiKey) {
|
|
1522
|
-
const parsed = new URL(relayerBaseUrl);
|
|
1523
|
-
const hasTxPath = /\/tx\/\d+\/?$/.test(parsed.pathname);
|
|
1524
|
-
const hasChainOnlyPath = /\/\d+\/?$/.test(parsed.pathname);
|
|
1525
|
-
if (!hasTxPath && !hasChainOnlyPath) {
|
|
1526
|
-
const basePath = parsed.pathname.replace(/\/$/, "");
|
|
1527
|
-
const withApiV1 = /\/api\/v1$/.test(basePath)
|
|
1528
|
-
? basePath
|
|
1529
|
-
: `${basePath}/api/v1`;
|
|
1530
|
-
parsed.pathname = `${withApiV1}/tx/${networkChainId}/`;
|
|
1531
|
-
}
|
|
1532
|
-
parsed.searchParams.set("apikey", apiKey);
|
|
1533
|
-
return parsed.toString();
|
|
1534
|
-
}
|
|
1535
1521
|
function hexToBase64SignedTransaction(signedHex) {
|
|
1536
1522
|
const hex = signedHex.startsWith('0x') ? signedHex.slice(2) : signedHex;
|
|
1537
1523
|
const bytes = new Uint8Array(hex.match(/.{1,2}/g)?.map((byte) => parseInt(byte, 16)) ?? []);
|
|
@@ -1549,21 +1535,14 @@ export function useSolanaGasless() {
|
|
|
1549
1535
|
const resolvedConfig = useMemo(() => {
|
|
1550
1536
|
if (!solanaGaslessConfig?.enabled)
|
|
1551
1537
|
return null;
|
|
1552
|
-
const
|
|
1553
|
-
|
|
1554
|
-
const networkChainId = solanaGaslessConfig.networkChainId;
|
|
1555
|
-
if (!relayerBaseUrl || !apiKey || !networkChainId)
|
|
1538
|
+
const relayerUrl = solanaGaslessConfig.relayerUrl?.trim();
|
|
1539
|
+
if (!relayerUrl)
|
|
1556
1540
|
return null;
|
|
1557
|
-
const base = relayerBaseUrl.replace(/\/$/, '');
|
|
1558
|
-
const relayerUrl = buildSolanaRelayerUrl(base, networkChainId, apiKey);
|
|
1559
1541
|
return {
|
|
1560
1542
|
enabled: true,
|
|
1561
|
-
|
|
1562
|
-
apiKey,
|
|
1563
|
-
networkChainId,
|
|
1543
|
+
relayerUrl,
|
|
1564
1544
|
defaultPollMs: solanaGaslessConfig.defaultPollMs,
|
|
1565
1545
|
defaultTimeoutMs: solanaGaslessConfig.defaultTimeoutMs,
|
|
1566
|
-
relayerUrl,
|
|
1567
1546
|
};
|
|
1568
1547
|
}, [solanaGaslessConfig]);
|
|
1569
1548
|
const relayerClient = useMemo(() => {
|
|
@@ -1579,7 +1558,7 @@ export function useSolanaGasless() {
|
|
|
1579
1558
|
if (!isConnected)
|
|
1580
1559
|
throw new Error('Wallet is not connected');
|
|
1581
1560
|
if (!resolvedConfig) {
|
|
1582
|
-
throw new Error('Solana gasless is not configured. Set config.solanaGasless with enabled
|
|
1561
|
+
throw new Error('Solana gasless is not configured. Set config.solanaGasless with enabled and relayerUrl.');
|
|
1583
1562
|
}
|
|
1584
1563
|
if (!relayerClient)
|
|
1585
1564
|
throw new Error('Failed to initialize Solana relayer client');
|
package/dist/src/types.d.ts
CHANGED
|
@@ -153,17 +153,10 @@ export interface SolanaGaslessConfig {
|
|
|
153
153
|
*/
|
|
154
154
|
enabled?: boolean;
|
|
155
155
|
/**
|
|
156
|
-
*
|
|
156
|
+
* Full relayer URL including chain id and apikey query param.
|
|
157
|
+
* Example: https://dev-solana-relayer-api.abstraxn.com/api/v1/103?apikey=your_api_key
|
|
157
158
|
*/
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* API key used by relayer endpoints.
|
|
161
|
-
*/
|
|
162
|
-
apiKey?: string;
|
|
163
|
-
/**
|
|
164
|
-
* Solana chain/network id used in relayer path (/tx/:chainId).
|
|
165
|
-
*/
|
|
166
|
-
networkChainId?: number;
|
|
159
|
+
relayerUrl?: string;
|
|
167
160
|
/**
|
|
168
161
|
* Optional default polling interval in ms for status checks.
|
|
169
162
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abstraxn/signer-react",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.1",
|
|
4
4
|
"description": "React SDK for Abstraxn Wallet - React components, hooks, and providers for seamless Web3 wallet integration",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"module": "./dist/src/index.js",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@abstraxn/signer-core": "2.1.2",
|
|
44
|
-
"@abstraxn/solana-relayer": "^0.0
|
|
44
|
+
"@abstraxn/solana-relayer": "^1.0.0",
|
|
45
45
|
"@solana/wallet-adapter-base": "^0.9.27",
|
|
46
46
|
"@solana/wallet-adapter-react": "^0.15.39",
|
|
47
47
|
"@solana/wallet-adapter-react-ui": "^0.9.39",
|