@volr/react 0.1.125 → 0.1.127
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 +57 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +34 -3
- package/dist/index.d.ts +34 -3
- package/dist/index.js +58 -4
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -10053,6 +10053,19 @@ function useAutoRecover({
|
|
|
10053
10053
|
setAccessTokenState(client.getAccessToken());
|
|
10054
10054
|
setRefreshTokenState(client.getRefreshToken());
|
|
10055
10055
|
if (refreshedUser) {
|
|
10056
|
+
if (refreshedUser.keyStorageType === "passkey" && !refreshedUser.evmAddress) {
|
|
10057
|
+
console.error("[Provider] Invalid state: passkey user without evmAddress - clearing session");
|
|
10058
|
+
client.setAccessToken(null);
|
|
10059
|
+
client.setRefreshToken(null);
|
|
10060
|
+
setAccessTokenState(null);
|
|
10061
|
+
setRefreshTokenState(null);
|
|
10062
|
+
setUser(null);
|
|
10063
|
+
setProviderState(null);
|
|
10064
|
+
safeStorage.removeItem(STORAGE_KEYS.user);
|
|
10065
|
+
safeStorage.removeItem(STORAGE_KEYS.provider);
|
|
10066
|
+
setIsLoading(false);
|
|
10067
|
+
return;
|
|
10068
|
+
}
|
|
10056
10069
|
setUser(refreshedUser);
|
|
10057
10070
|
if (!REQUIRE_USER_GESTURE_TO_RESTORE) ; else if (refreshedUser.keyStorageType === "passkey") {
|
|
10058
10071
|
console.log("[Provider] TTL=0 mode: Provider restoration deferred");
|
|
@@ -10064,12 +10077,20 @@ function useAutoRecover({
|
|
|
10064
10077
|
const userStr = safeStorage.getItem(STORAGE_KEYS.user);
|
|
10065
10078
|
if (userStr) {
|
|
10066
10079
|
try {
|
|
10067
|
-
|
|
10080
|
+
const storedUser = JSON.parse(userStr);
|
|
10081
|
+
if (storedUser.keyStorageType === "passkey" && !storedUser.evmAddress) {
|
|
10082
|
+
console.error("[Provider] Invalid stored user: passkey user without evmAddress - clearing");
|
|
10083
|
+
safeStorage.removeItem(STORAGE_KEYS.user);
|
|
10084
|
+
safeStorage.removeItem(STORAGE_KEYS.provider);
|
|
10085
|
+
} else {
|
|
10086
|
+
setUser(storedUser);
|
|
10087
|
+
}
|
|
10068
10088
|
} catch {
|
|
10069
10089
|
safeStorage.removeItem(STORAGE_KEYS.user);
|
|
10070
10090
|
}
|
|
10071
10091
|
}
|
|
10072
10092
|
}
|
|
10093
|
+
setIsLoading(false);
|
|
10073
10094
|
} catch {
|
|
10074
10095
|
client.setAccessToken(null);
|
|
10075
10096
|
client.setRefreshToken(null);
|
|
@@ -10079,7 +10100,6 @@ function useAutoRecover({
|
|
|
10079
10100
|
setProviderState(null);
|
|
10080
10101
|
safeStorage.removeItem(STORAGE_KEYS.user);
|
|
10081
10102
|
safeStorage.removeItem(STORAGE_KEYS.provider);
|
|
10082
|
-
} finally {
|
|
10083
10103
|
setIsLoading(false);
|
|
10084
10104
|
}
|
|
10085
10105
|
};
|
|
@@ -20768,6 +20788,40 @@ function blobToBase642(blob) {
|
|
|
20768
20788
|
reader.readAsDataURL(blob);
|
|
20769
20789
|
});
|
|
20770
20790
|
}
|
|
20791
|
+
async function decryptEntropyForMigration(params) {
|
|
20792
|
+
const {
|
|
20793
|
+
client,
|
|
20794
|
+
userId,
|
|
20795
|
+
blobUrl,
|
|
20796
|
+
prfInput,
|
|
20797
|
+
credentialId,
|
|
20798
|
+
rpId = typeof window !== "undefined" ? window.location.hostname : "localhost",
|
|
20799
|
+
rpName = "Volr"
|
|
20800
|
+
} = params;
|
|
20801
|
+
const arrayBuffer = await client.postBinary("/blob/download", { key: blobUrl });
|
|
20802
|
+
const blobBytes = new Uint8Array(arrayBuffer);
|
|
20803
|
+
const nonceLength = 12;
|
|
20804
|
+
const cipherLength = blobBytes.length - nonceLength;
|
|
20805
|
+
if (cipherLength <= 0) {
|
|
20806
|
+
throw new Error("Invalid blob format: blob too small");
|
|
20807
|
+
}
|
|
20808
|
+
const cipher = blobBytes.slice(0, cipherLength);
|
|
20809
|
+
const nonce = blobBytes.slice(cipherLength);
|
|
20810
|
+
const keyStorageType = "passkey";
|
|
20811
|
+
const version5 = "v1";
|
|
20812
|
+
const aadBytes = new TextEncoder().encode(
|
|
20813
|
+
`volr/master-seed/v1|${userId}|${keyStorageType}|${version5}`
|
|
20814
|
+
);
|
|
20815
|
+
const prfSalt = sdkCore.deriveWrapKey(prfInput);
|
|
20816
|
+
const passkeyAdapter = createPasskeyAdapter({ rpId});
|
|
20817
|
+
const { prfOutput } = await passkeyAdapter.authenticate({
|
|
20818
|
+
salt: prfSalt,
|
|
20819
|
+
credentialId
|
|
20820
|
+
});
|
|
20821
|
+
const wrapKey = prfOutput;
|
|
20822
|
+
const entropy = await sdkCore.unsealMasterSeed(cipher, wrapKey, aadBytes, nonce);
|
|
20823
|
+
return entropy;
|
|
20824
|
+
}
|
|
20771
20825
|
async function requestMigration(params) {
|
|
20772
20826
|
const { client, targetOrigin } = params;
|
|
20773
20827
|
const response = await client.post("/wallet/migration/request", { targetOrigin });
|
|
@@ -21142,6 +21196,7 @@ exports.completeMigration = completeMigration;
|
|
|
21142
21196
|
exports.createGetNetworkInfo = createGetNetworkInfo;
|
|
21143
21197
|
exports.createPasskeyAdapter = createPasskeyAdapter;
|
|
21144
21198
|
exports.debugTransactionFailure = debugTransactionFailure;
|
|
21199
|
+
exports.decryptEntropyForMigration = decryptEntropyForMigration;
|
|
21145
21200
|
exports.defaultIdempotencyKey = defaultIdempotencyKey;
|
|
21146
21201
|
exports.detectWalletConnector = detectWalletConnector;
|
|
21147
21202
|
exports.diagnoseTransactionFailure = diagnoseTransactionFailure;
|