@volr/react 0.1.15 → 0.1.18
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/dist/index.cjs +47 -87
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -2
- package/dist/index.d.ts +1 -2
- package/dist/index.js +47 -87
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/dist/index.d.cts
CHANGED
|
@@ -2,8 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import { KeyStorageType as KeyStorageType$1, WalletProviderPort, PrecheckInput, PrecheckQuote, RelayInput, RelayResult, SignerPort, ExtendedRPCClient, Call, PasskeyProviderPort } from '@volr/sdk-core';
|
|
4
4
|
export { AuthorizationTuple, Call, MpcTransport, PrecheckInput, PrecheckQuote, PrfInput, RelayInput, RelayMode, RelayResult, SessionAuth, UploadBlobOptions, createMasterKeyProvider, createMpcProvider, createPasskeyProvider, deriveEvmKey, deriveWrapKey, sealMasterSeed, uploadBlob } from '@volr/sdk-core';
|
|
5
|
-
import { PublicClient } from '
|
|
6
|
-
import { Address, Abi } from '../abi.js';
|
|
5
|
+
import { Address, Abi, PublicClient } from 'viem';
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* API client with automatic token refresh
|
package/dist/index.d.ts
CHANGED
|
@@ -2,8 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import { KeyStorageType as KeyStorageType$1, WalletProviderPort, PrecheckInput, PrecheckQuote, RelayInput, RelayResult, SignerPort, ExtendedRPCClient, Call, PasskeyProviderPort } from '@volr/sdk-core';
|
|
4
4
|
export { AuthorizationTuple, Call, MpcTransport, PrecheckInput, PrecheckQuote, PrfInput, RelayInput, RelayMode, RelayResult, SessionAuth, UploadBlobOptions, createMasterKeyProvider, createMpcProvider, createPasskeyProvider, deriveEvmKey, deriveWrapKey, sealMasterSeed, uploadBlob } from '@volr/sdk-core';
|
|
5
|
-
import { PublicClient } from '
|
|
6
|
-
import { Address, Abi } from '../abi.js';
|
|
5
|
+
import { Address, Abi, PublicClient } from 'viem';
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* API client with automatic token refresh
|
package/dist/index.js
CHANGED
|
@@ -9006,7 +9006,7 @@ var safeStorage = {
|
|
|
9006
9006
|
}
|
|
9007
9007
|
};
|
|
9008
9008
|
|
|
9009
|
-
// ../shared/
|
|
9009
|
+
// ../shared/dist/constants/storage.js
|
|
9010
9010
|
var STORAGE_KEYS = {
|
|
9011
9011
|
accessToken: "volr:accessToken",
|
|
9012
9012
|
refreshToken: "volr:refreshToken",
|
|
@@ -18485,41 +18485,9 @@ function useVolrWallet() {
|
|
|
18485
18485
|
);
|
|
18486
18486
|
return { evm };
|
|
18487
18487
|
}
|
|
18488
|
-
function createAxiosInstance(baseUrl, apiKey) {
|
|
18489
|
-
const instance = axios.create({
|
|
18490
|
-
baseURL: baseUrl.replace(/\/+$/, ""),
|
|
18491
|
-
// Remove trailing slashes
|
|
18492
|
-
withCredentials: true,
|
|
18493
|
-
// Include cookies
|
|
18494
|
-
headers: {
|
|
18495
|
-
"Content-Type": "application/json"
|
|
18496
|
-
}
|
|
18497
|
-
});
|
|
18498
|
-
instance.interceptors.request.use((config) => {
|
|
18499
|
-
if (apiKey) {
|
|
18500
|
-
config.headers["X-API-Key"] = apiKey;
|
|
18501
|
-
}
|
|
18502
|
-
return config;
|
|
18503
|
-
});
|
|
18504
|
-
instance.interceptors.response.use(
|
|
18505
|
-
(response) => response,
|
|
18506
|
-
(error) => {
|
|
18507
|
-
if (error.response?.data) {
|
|
18508
|
-
const errorData = error.response.data;
|
|
18509
|
-
if (errorData.error?.message) {
|
|
18510
|
-
error.message = errorData.error.message;
|
|
18511
|
-
}
|
|
18512
|
-
}
|
|
18513
|
-
return Promise.reject(error);
|
|
18514
|
-
}
|
|
18515
|
-
);
|
|
18516
|
-
return instance;
|
|
18517
|
-
}
|
|
18518
|
-
|
|
18519
|
-
// src/hooks/useVolrLogin.ts
|
|
18520
18488
|
function useVolrLogin() {
|
|
18521
18489
|
const { config, setUser } = useVolr();
|
|
18522
|
-
const { setAccessToken, setRefreshToken } = useInternalAuth();
|
|
18490
|
+
const { setAccessToken, setRefreshToken, client } = useInternalAuth();
|
|
18523
18491
|
const toVolrUser = useCallback((u) => {
|
|
18524
18492
|
return {
|
|
18525
18493
|
id: u.id,
|
|
@@ -18536,27 +18504,18 @@ function useVolrLogin() {
|
|
|
18536
18504
|
};
|
|
18537
18505
|
}, []);
|
|
18538
18506
|
const apiBaseUrl = resolveApiBaseUrl(config);
|
|
18539
|
-
const api = useMemo(
|
|
18540
|
-
() => createAxiosInstance(apiBaseUrl, config.projectApiKey),
|
|
18541
|
-
[apiBaseUrl, config.projectApiKey]
|
|
18542
|
-
);
|
|
18543
18507
|
const requestEmailCode = useCallback(
|
|
18544
18508
|
async (email) => {
|
|
18545
18509
|
const normalizedEmail = email.trim().toLowerCase();
|
|
18546
18510
|
if (!normalizedEmail || !normalizedEmail.includes("@")) {
|
|
18547
18511
|
throw new Error("Invalid email address");
|
|
18548
18512
|
}
|
|
18549
|
-
|
|
18513
|
+
await client.post("/auth/email/send", {
|
|
18550
18514
|
email: normalizedEmail
|
|
18551
18515
|
});
|
|
18552
|
-
if (!response.data?.ok) {
|
|
18553
|
-
throw new Error(
|
|
18554
|
-
response.data?.error?.message || "Failed to send verification code"
|
|
18555
|
-
);
|
|
18556
|
-
}
|
|
18557
18516
|
safeStorage.setItem(STORAGE_KEYS.lastEmail, normalizedEmail);
|
|
18558
18517
|
},
|
|
18559
|
-
[
|
|
18518
|
+
[client]
|
|
18560
18519
|
);
|
|
18561
18520
|
const verifyEmailCode = useCallback(
|
|
18562
18521
|
async (email, code) => {
|
|
@@ -18568,24 +18527,13 @@ function useVolrLogin() {
|
|
|
18568
18527
|
if (!/^\d{6}$/.test(normalizedCode)) {
|
|
18569
18528
|
throw new Error("Invalid code format");
|
|
18570
18529
|
}
|
|
18571
|
-
const response = await
|
|
18530
|
+
const response = await client.post("/auth/email/verify", {
|
|
18572
18531
|
email: normalizedEmail,
|
|
18573
18532
|
code: normalizedCode
|
|
18574
18533
|
});
|
|
18575
|
-
|
|
18576
|
-
throw new Error(
|
|
18577
|
-
response.data?.error?.message || "Invalid verification code"
|
|
18578
|
-
);
|
|
18579
|
-
}
|
|
18580
|
-
const verifyData = response.data;
|
|
18581
|
-
const userFromServer = verifyData?.data?.user;
|
|
18582
|
-
const isNewUser = !!verifyData?.data?.isNewUser;
|
|
18583
|
-
const accessToken = verifyData?.data?.accessToken || "";
|
|
18584
|
-
const refreshToken = verifyData?.data?.refreshToken || "";
|
|
18534
|
+
const { user: userFromServer, isNewUser, accessToken, refreshToken } = response;
|
|
18585
18535
|
if (!accessToken) {
|
|
18586
|
-
throw new Error(
|
|
18587
|
-
"Access token is required but was not provided by the server"
|
|
18588
|
-
);
|
|
18536
|
+
throw new Error("Access token is required but was not provided by the server");
|
|
18589
18537
|
}
|
|
18590
18538
|
setAccessToken(accessToken);
|
|
18591
18539
|
if (refreshToken) {
|
|
@@ -18604,7 +18552,7 @@ function useVolrLogin() {
|
|
|
18604
18552
|
accessToken
|
|
18605
18553
|
};
|
|
18606
18554
|
},
|
|
18607
|
-
[
|
|
18555
|
+
[client, setAccessToken, setRefreshToken, setUser, toVolrUser]
|
|
18608
18556
|
);
|
|
18609
18557
|
const handleSocialLogin = useCallback(
|
|
18610
18558
|
async (provider) => {
|
|
@@ -18616,41 +18564,21 @@ function useVolrLogin() {
|
|
|
18616
18564
|
[apiBaseUrl, config.projectApiKey]
|
|
18617
18565
|
);
|
|
18618
18566
|
const requestSiweNonce = useCallback(async () => {
|
|
18619
|
-
const response = await
|
|
18620
|
-
|
|
18621
|
-
|
|
18622
|
-
response.data?.error?.message || "Failed to generate nonce"
|
|
18623
|
-
);
|
|
18624
|
-
}
|
|
18625
|
-
return response.data.data.nonce;
|
|
18626
|
-
}, [api]);
|
|
18567
|
+
const response = await client.get("/auth/siwe/nonce");
|
|
18568
|
+
return response.nonce;
|
|
18569
|
+
}, [client]);
|
|
18627
18570
|
const verifySiweSignature = useCallback(
|
|
18628
18571
|
async (message, signature, options) => {
|
|
18629
18572
|
try {
|
|
18630
|
-
const response = await
|
|
18573
|
+
const response = await client.post("/auth/siwe/verify", {
|
|
18631
18574
|
message,
|
|
18632
18575
|
signature,
|
|
18633
18576
|
walletConnector: options?.walletConnector,
|
|
18634
18577
|
chainId: options?.chainId
|
|
18635
18578
|
});
|
|
18636
|
-
|
|
18637
|
-
console.error(
|
|
18638
|
-
"[verifySiweSignature] Backend returned error:",
|
|
18639
|
-
response.data
|
|
18640
|
-
);
|
|
18641
|
-
throw new Error(
|
|
18642
|
-
response.data?.error?.message || "Invalid SIWE signature"
|
|
18643
|
-
);
|
|
18644
|
-
}
|
|
18645
|
-
const verifyData = response.data;
|
|
18646
|
-
const userFromServer = verifyData?.data?.user;
|
|
18647
|
-
const isNewUser = !!verifyData?.data?.isNewUser;
|
|
18648
|
-
const accessToken = verifyData?.data?.accessToken || "";
|
|
18649
|
-
const refreshToken = verifyData?.data?.refreshToken || "";
|
|
18579
|
+
const { user: userFromServer, isNewUser, accessToken, refreshToken } = response;
|
|
18650
18580
|
if (!accessToken) {
|
|
18651
|
-
throw new Error(
|
|
18652
|
-
"Access token is required but was not provided by the server"
|
|
18653
|
-
);
|
|
18581
|
+
throw new Error("Access token is required but was not provided by the server");
|
|
18654
18582
|
}
|
|
18655
18583
|
setAccessToken(accessToken);
|
|
18656
18584
|
if (refreshToken) {
|
|
@@ -18675,7 +18603,7 @@ function useVolrLogin() {
|
|
|
18675
18603
|
throw error;
|
|
18676
18604
|
}
|
|
18677
18605
|
},
|
|
18678
|
-
[
|
|
18606
|
+
[client, setAccessToken, setRefreshToken, setUser, toVolrUser]
|
|
18679
18607
|
);
|
|
18680
18608
|
const handlePasskeyComplete = useCallback(async () => {
|
|
18681
18609
|
}, []);
|
|
@@ -18688,6 +18616,38 @@ function useVolrLogin() {
|
|
|
18688
18616
|
handlePasskeyComplete
|
|
18689
18617
|
};
|
|
18690
18618
|
}
|
|
18619
|
+
function createAxiosInstance(baseUrl, apiKey) {
|
|
18620
|
+
const instance = axios.create({
|
|
18621
|
+
baseURL: baseUrl.replace(/\/+$/, ""),
|
|
18622
|
+
// Remove trailing slashes
|
|
18623
|
+
withCredentials: true,
|
|
18624
|
+
// Include cookies
|
|
18625
|
+
headers: {
|
|
18626
|
+
"Content-Type": "application/json"
|
|
18627
|
+
}
|
|
18628
|
+
});
|
|
18629
|
+
instance.interceptors.request.use((config) => {
|
|
18630
|
+
if (apiKey) {
|
|
18631
|
+
config.headers["X-API-Key"] = apiKey;
|
|
18632
|
+
}
|
|
18633
|
+
return config;
|
|
18634
|
+
});
|
|
18635
|
+
instance.interceptors.response.use(
|
|
18636
|
+
(response) => response,
|
|
18637
|
+
(error) => {
|
|
18638
|
+
if (error.response?.data) {
|
|
18639
|
+
const errorData = error.response.data;
|
|
18640
|
+
if (errorData.error?.message) {
|
|
18641
|
+
error.message = errorData.error.message;
|
|
18642
|
+
}
|
|
18643
|
+
}
|
|
18644
|
+
return Promise.reject(error);
|
|
18645
|
+
}
|
|
18646
|
+
);
|
|
18647
|
+
return instance;
|
|
18648
|
+
}
|
|
18649
|
+
|
|
18650
|
+
// src/hooks/useVolrAuthCallback.ts
|
|
18691
18651
|
function useVolrAuthCallback(options = {}) {
|
|
18692
18652
|
const { config, setUser } = useVolr();
|
|
18693
18653
|
const { refreshAccessToken, setAccessToken, setRefreshToken, client } = useInternalAuth();
|