thirdweb 5.61.5-nightly-ccd4cd6f59423d417757e86bf04a5a07b061e2f9-20241010000335 → 5.61.5
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/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/wallets/in-app/native/helpers/constants.js +2 -1
- package/dist/cjs/wallets/in-app/native/helpers/constants.js.map +1 -1
- package/dist/cjs/wallets/in-app/native/helpers/storage/local.js +10 -0
- package/dist/cjs/wallets/in-app/native/helpers/storage/local.js.map +1 -1
- package/dist/cjs/wallets/in-app/native/helpers/wallet/retrieval.js +17 -2
- package/dist/cjs/wallets/in-app/native/helpers/wallet/retrieval.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/wallets/in-app/native/helpers/constants.js +1 -0
- package/dist/esm/wallets/in-app/native/helpers/constants.js.map +1 -1
- package/dist/esm/wallets/in-app/native/helpers/storage/local.js +9 -0
- package/dist/esm/wallets/in-app/native/helpers/storage/local.js.map +1 -1
- package/dist/esm/wallets/in-app/native/helpers/wallet/retrieval.js +19 -4
- package/dist/esm/wallets/in-app/native/helpers/wallet/retrieval.js.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/dist/types/wallets/in-app/native/helpers/constants.d.ts +1 -0
- package/dist/types/wallets/in-app/native/helpers/constants.d.ts.map +1 -1
- package/dist/types/wallets/in-app/native/helpers/storage/local.d.ts +3 -0
- package/dist/types/wallets/in-app/native/helpers/storage/local.d.ts.map +1 -1
- package/dist/types/wallets/in-app/native/helpers/wallet/retrieval.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/extensions/erc20/read/getCurrencyMetadata.test.ts +20 -0
- package/src/extensions/erc20/read/isERC20.test.ts +35 -0
- package/src/extensions/erc20/write/transferBatch.test.ts +81 -0
- package/src/version.ts +1 -1
- package/src/wallets/in-app/native/helpers/constants.ts +2 -0
- package/src/wallets/in-app/native/helpers/storage/local.ts +16 -0
- package/src/wallets/in-app/native/helpers/wallet/retrieval.ts +19 -3
package/dist/cjs/version.js
CHANGED
package/dist/cjs/version.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,QAAQ,CAAC"}
|
@@ -1,12 +1,13 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.ROUTE_AUTH_COGNITO_ID_TOKEN_V2 = exports.ROUTE_AUTH_COGNITO_ID_TOKEN_V1 = exports.ROUTE_AUTH_ENDPOINT_CALLBACK = exports.ROUTE_AUTH_JWT_CALLBACK = exports.ROUTE_VERIFY_THIRDWEB_CLIENT_ID = exports.ROUTE_GET_USER_SHARES = exports.ROUTE_STORE_USER_SHARES = exports.ROUTE_COGNITO_IDENTITY_POOL_URL = exports.ROUTE_EMBEDDED_WALLET_DETAILS = exports.GENERATE_RECOVERY_PASSWORD_LAMBDA_FUNCTION_V2 = exports.GENERATE_RECOVERY_PASSWORD_LAMBDA_FUNCTION_V1 = exports.COGNITO_IDENTITY_POOL_ID = exports.THIRDWEB_SESSION_NONCE_HEADER = exports.AWS_REGION = exports.RECOVERY_SHARE_INDEX = exports.DEVICE_SHARE_MISSING_MESSAGE = exports.DEVICE_SHARE_INDEX = exports.AUTH_SHARE_INDEX = void 0;
|
3
|
+
exports.ROUTE_AUTH_COGNITO_ID_TOKEN_V2 = exports.ROUTE_AUTH_COGNITO_ID_TOKEN_V1 = exports.ROUTE_AUTH_ENDPOINT_CALLBACK = exports.ROUTE_AUTH_JWT_CALLBACK = exports.ROUTE_VERIFY_THIRDWEB_CLIENT_ID = exports.ROUTE_GET_USER_SHARES = exports.ROUTE_STORE_USER_SHARES = exports.ROUTE_COGNITO_IDENTITY_POOL_URL = exports.ROUTE_EMBEDDED_WALLET_DETAILS = exports.GENERATE_RECOVERY_PASSWORD_LAMBDA_FUNCTION_V2 = exports.GENERATE_RECOVERY_PASSWORD_LAMBDA_FUNCTION_V1 = exports.COGNITO_IDENTITY_POOL_ID = exports.THIRDWEB_SESSION_NONCE_HEADER = exports.AWS_REGION = exports.RECOVERY_SHARE_INDEX = exports.INVALID_DEVICE_SHARE_MESSAGE = exports.DEVICE_SHARE_MISSING_MESSAGE = exports.DEVICE_SHARE_INDEX = exports.AUTH_SHARE_INDEX = void 0;
|
4
4
|
const domains_js_1 = require("../../../../utils/domains.js");
|
5
5
|
const AUTH_SHARE_ID = 3;
|
6
6
|
exports.AUTH_SHARE_INDEX = AUTH_SHARE_ID - 1;
|
7
7
|
const DEVICE_SHARE_ID = 1;
|
8
8
|
exports.DEVICE_SHARE_INDEX = DEVICE_SHARE_ID - 1;
|
9
9
|
exports.DEVICE_SHARE_MISSING_MESSAGE = "Missing device share.";
|
10
|
+
exports.INVALID_DEVICE_SHARE_MESSAGE = "Invalid private key reconstructed from shares";
|
10
11
|
const RECOVERY_SHARE_ID = 2;
|
11
12
|
exports.RECOVERY_SHARE_INDEX = RECOVERY_SHARE_ID - 1;
|
12
13
|
exports.AWS_REGION = "us-west-2";
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../src/wallets/in-app/native/helpers/constants.ts"],"names":[],"mappings":";;;AAAA,6DAAkE;AAElE,MAAM,aAAa,GAAG,CAAC,CAAC;AACX,QAAA,gBAAgB,GAAG,aAAa,GAAG,CAAC,CAAC;AAElD,MAAM,eAAe,GAAG,CAAC,CAAC;AACb,QAAA,kBAAkB,GAAG,eAAe,GAAG,CAAC,CAAC;AACzC,QAAA,4BAA4B,GAAG,uBAAuB,CAAC;
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../src/wallets/in-app/native/helpers/constants.ts"],"names":[],"mappings":";;;AAAA,6DAAkE;AAElE,MAAM,aAAa,GAAG,CAAC,CAAC;AACX,QAAA,gBAAgB,GAAG,aAAa,GAAG,CAAC,CAAC;AAElD,MAAM,eAAe,GAAG,CAAC,CAAC;AACb,QAAA,kBAAkB,GAAG,eAAe,GAAG,CAAC,CAAC;AACzC,QAAA,4BAA4B,GAAG,uBAAuB,CAAC;AACvD,QAAA,4BAA4B,GACvC,+CAA+C,CAAC;AAElD,MAAM,iBAAiB,GAAG,CAAC,CAAC;AACf,QAAA,oBAAoB,GAAG,iBAAiB,GAAG,CAAC,CAAC;AAE7C,QAAA,UAAU,GAAG,WAAW,CAAC;AAEzB,QAAA,6BAA6B,GAAG,iBAAiB,CAAC;AAC/D,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AACtC,QAAA,wBAAwB,GACnC,gDAAgD,CAAC;AACtC,QAAA,6CAA6C,GACxD,gHAAgH,CAAC;AACtG,QAAA,6CAA6C,GACxD,6GAA6G,CAAC;AAEhH,+BAA+B;AAC/B,MAAM,eAAe,GAAG,IAAA,+BAAkB,EAAC,aAAa,CAAC,CAAC;AAC1D,MAAM,aAAa,GAAG,GAAG,eAAe,GAAG,CAAC;AAC5C,MAAM,8BAA8B,GAAG,GAAG,aAAa,gBAAgB,CAAC;AACxE,MAAM,8BAA8B,GAAG,GAAG,aAAa,gBAAgB,CAAC;AAE3D,QAAA,6BAA6B,GAAG,GAAG,8BAA8B,+CAA+C,CAAC;AACjH,QAAA,+BAA+B,GAAG,eAAe,kBAAU,kBAAkB,oBAAoB,EAAE,CAAC;AAEpG,QAAA,uBAAuB,GAAG,GAAG,8BAA8B,yCAAyC,CAAC;AACrG,QAAA,qBAAqB,GAAG,GAAG,8BAA8B,yCAAyC,CAAC;AACnG,QAAA,+BAA+B,GAAG,GAAG,8BAA8B,4CAA4C,CAAC;AAChH,QAAA,uBAAuB,GAAG,GAAG,8BAA8B,sCAAsC,CAAC;AAClG,QAAA,4BAA4B,GAAG,GAAG,8BAA8B,gDAAgD,CAAC;AAEjH,QAAA,8BAA8B,GAAG,GAAG,8BAA8B,mCAAmC,CAAC;AACtG,QAAA,8BAA8B,GAAG,GAAG,8BAA8B,2BAA2B,CAAC"}
|
@@ -4,6 +4,7 @@ exports.setWallerUserDetails = setWallerUserDetails;
|
|
4
4
|
exports.getWalletUserDetails = getWalletUserDetails;
|
5
5
|
exports.removeLoggedInWalletUserId = removeLoggedInWalletUserId;
|
6
6
|
exports.setDeviceShare = setDeviceShare;
|
7
|
+
exports.removeDeviceShare = removeDeviceShare;
|
7
8
|
exports.getDeviceShare = getDeviceShare;
|
8
9
|
const async_storage_1 = require("@react-native-async-storage/async-storage");
|
9
10
|
const settings_js_1 = require("../../../core/constants/settings.js");
|
@@ -78,6 +79,15 @@ async function setDeviceShare({ clientId, deviceShare, }) {
|
|
78
79
|
await setItemInAsyncStorage(name, deviceShare);
|
79
80
|
return deviceShare;
|
80
81
|
}
|
82
|
+
async function removeDeviceShare({ clientId, }) {
|
83
|
+
const userDetails = await getWalletUserDetails(clientId);
|
84
|
+
if (!userDetails) {
|
85
|
+
throw new Error("Missing wallet user ID");
|
86
|
+
}
|
87
|
+
const name = (0, settings_js_1.DEVICE_SHARE_LOCAL_STORAGE_NAME)(clientId, userDetails.userId);
|
88
|
+
await removeItemInAsyncStorage(name);
|
89
|
+
return;
|
90
|
+
}
|
81
91
|
async function getDeviceShare(clientId) {
|
82
92
|
const cachedWalletUserId = await getWalletUserDetails(clientId);
|
83
93
|
if (!cachedWalletUserId) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/native/helpers/storage/local.ts"],"names":[],"mappings":";;AA8CA,oDAuBC;AAED,oDAeC;AAED,gEAKC;AAED,wCAiBC;AAED,wCAgBC;
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/native/helpers/storage/local.ts"],"names":[],"mappings":"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"}
|
@@ -35,16 +35,31 @@ async function getWalletPrivateKeyFromShares(shares) {
|
|
35
35
|
}
|
36
36
|
const prefixPrivateKey = (0, hex_js_1.hexToString)(privateKeyHex);
|
37
37
|
if (!prefixPrivateKey.startsWith("thirdweb_")) {
|
38
|
-
throw new Error(
|
38
|
+
throw new Error(constants_js_1.INVALID_DEVICE_SHARE_MESSAGE);
|
39
39
|
}
|
40
40
|
const privateKey = prefixPrivateKey.replace("thirdweb_", "");
|
41
41
|
return privateKey;
|
42
42
|
}
|
43
43
|
async function getAccountFromShares(args) {
|
44
44
|
const { client, shares } = args;
|
45
|
+
const privateKey = await (async () => {
|
46
|
+
try {
|
47
|
+
return await getWalletPrivateKeyFromShares(shares);
|
48
|
+
}
|
49
|
+
catch (e) {
|
50
|
+
// If the private key reconstruction fails, try to reset the device share and prompt the user to try again
|
51
|
+
// This can happen if a user's account has been migrated or otherwise modified in the backend to use a new wallet. In that case, we need to reset their device state to get a new share
|
52
|
+
if (e instanceof Error && e.message === constants_js_1.INVALID_DEVICE_SHARE_MESSAGE) {
|
53
|
+
await (0, local_js_1.removeDeviceShare)({ clientId: client.clientId });
|
54
|
+
throw new Error("Invalid device state, please try again.");
|
55
|
+
}
|
56
|
+
// Otherwise this is a legitimate error, throw it
|
57
|
+
throw e;
|
58
|
+
}
|
59
|
+
})();
|
45
60
|
return (0, private_key_js_1.privateKeyToAccount)({
|
46
61
|
client,
|
47
|
-
privateKey
|
62
|
+
privateKey,
|
48
63
|
});
|
49
64
|
}
|
50
65
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"retrieval.js","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/native/helpers/wallet/retrieval.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"retrieval.js","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/native/helpers/wallet/retrieval.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/version.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export const version = "5.61.5
|
1
|
+
export const version = "5.61.5";
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/dist/esm/version.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC"}
|
@@ -4,6 +4,7 @@ export const AUTH_SHARE_INDEX = AUTH_SHARE_ID - 1;
|
|
4
4
|
const DEVICE_SHARE_ID = 1;
|
5
5
|
export const DEVICE_SHARE_INDEX = DEVICE_SHARE_ID - 1;
|
6
6
|
export const DEVICE_SHARE_MISSING_MESSAGE = "Missing device share.";
|
7
|
+
export const INVALID_DEVICE_SHARE_MESSAGE = "Invalid private key reconstructed from shares";
|
7
8
|
const RECOVERY_SHARE_ID = 2;
|
8
9
|
export const RECOVERY_SHARE_INDEX = RECOVERY_SHARE_ID - 1;
|
9
10
|
export const AWS_REGION = "us-west-2";
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../src/wallets/in-app/native/helpers/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,GAAG,CAAC,CAAC;AAElD,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,GAAG,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAuB,CAAC;
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../src/wallets/in-app/native/helpers/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,GAAG,CAAC,CAAC;AAElD,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,GAAG,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,4BAA4B,GAAG,uBAAuB,CAAC;AACpE,MAAM,CAAC,MAAM,4BAA4B,GACvC,+CAA+C,CAAC;AAElD,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAC;AAEtC,MAAM,CAAC,MAAM,6BAA6B,GAAG,iBAAiB,CAAC;AAC/D,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AACnD,MAAM,CAAC,MAAM,wBAAwB,GACnC,gDAAgD,CAAC;AACnD,MAAM,CAAC,MAAM,6CAA6C,GACxD,gHAAgH,CAAC;AACnH,MAAM,CAAC,MAAM,6CAA6C,GACxD,6GAA6G,CAAC;AAEhH,+BAA+B;AAC/B,MAAM,eAAe,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC1D,MAAM,aAAa,GAAG,GAAG,eAAe,GAAG,CAAC;AAC5C,MAAM,8BAA8B,GAAG,GAAG,aAAa,gBAAgB,CAAC;AACxE,MAAM,8BAA8B,GAAG,GAAG,aAAa,gBAAgB,CAAC;AAExE,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,8BAA8B,+CAA+C,CAAC;AAC9H,MAAM,CAAC,MAAM,+BAA+B,GAAG,eAAe,UAAU,kBAAkB,oBAAoB,EAAE,CAAC;AAEjH,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,8BAA8B,yCAAyC,CAAC;AAClH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,8BAA8B,yCAAyC,CAAC;AAChH,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,8BAA8B,4CAA4C,CAAC;AAC7H,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,8BAA8B,sCAAsC,CAAC;AAC/G,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,8BAA8B,gDAAgD,CAAC;AAE9H,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,8BAA8B,mCAAmC,CAAC;AACnH,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,8BAA8B,2BAA2B,CAAC"}
|
@@ -71,6 +71,15 @@ export async function setDeviceShare({ clientId, deviceShare, }) {
|
|
71
71
|
await setItemInAsyncStorage(name, deviceShare);
|
72
72
|
return deviceShare;
|
73
73
|
}
|
74
|
+
export async function removeDeviceShare({ clientId, }) {
|
75
|
+
const userDetails = await getWalletUserDetails(clientId);
|
76
|
+
if (!userDetails) {
|
77
|
+
throw new Error("Missing wallet user ID");
|
78
|
+
}
|
79
|
+
const name = DEVICE_SHARE_LOCAL_STORAGE_NAME(clientId, userDetails.userId);
|
80
|
+
await removeItemInAsyncStorage(name);
|
81
|
+
return;
|
82
|
+
}
|
74
83
|
export async function getDeviceShare(clientId) {
|
75
84
|
const cachedWalletUserId = await getWalletUserDetails(clientId);
|
76
85
|
if (!cachedWalletUserId) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/native/helpers/storage/local.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/native/helpers/storage/local.ts"],"names":[],"mappings":"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"}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { hexToString, isHex, } from "../../../../../utils/encoding/hex.js";
|
2
2
|
import { privateKeyToAccount } from "../../../../private-key.js";
|
3
3
|
import { getUserShares } from "../api/fetchers.js";
|
4
|
-
import { DEVICE_SHARE_MISSING_MESSAGE, ROUTE_GET_USER_SHARES, } from "../constants.js";
|
5
|
-
import { getDeviceShare } from "../storage/local.js";
|
4
|
+
import { DEVICE_SHARE_MISSING_MESSAGE, INVALID_DEVICE_SHARE_MESSAGE, ROUTE_GET_USER_SHARES, } from "../constants.js";
|
5
|
+
import { getDeviceShare, removeDeviceShare } from "../storage/local.js";
|
6
6
|
import { storeShares } from "./creation.js";
|
7
7
|
import { decryptShareWeb } from "./encryption.js";
|
8
8
|
/**
|
@@ -31,16 +31,31 @@ async function getWalletPrivateKeyFromShares(shares) {
|
|
31
31
|
}
|
32
32
|
const prefixPrivateKey = hexToString(privateKeyHex);
|
33
33
|
if (!prefixPrivateKey.startsWith("thirdweb_")) {
|
34
|
-
throw new Error(
|
34
|
+
throw new Error(INVALID_DEVICE_SHARE_MESSAGE);
|
35
35
|
}
|
36
36
|
const privateKey = prefixPrivateKey.replace("thirdweb_", "");
|
37
37
|
return privateKey;
|
38
38
|
}
|
39
39
|
async function getAccountFromShares(args) {
|
40
40
|
const { client, shares } = args;
|
41
|
+
const privateKey = await (async () => {
|
42
|
+
try {
|
43
|
+
return await getWalletPrivateKeyFromShares(shares);
|
44
|
+
}
|
45
|
+
catch (e) {
|
46
|
+
// If the private key reconstruction fails, try to reset the device share and prompt the user to try again
|
47
|
+
// This can happen if a user's account has been migrated or otherwise modified in the backend to use a new wallet. In that case, we need to reset their device state to get a new share
|
48
|
+
if (e instanceof Error && e.message === INVALID_DEVICE_SHARE_MESSAGE) {
|
49
|
+
await removeDeviceShare({ clientId: client.clientId });
|
50
|
+
throw new Error("Invalid device state, please try again.");
|
51
|
+
}
|
52
|
+
// Otherwise this is a legitimate error, throw it
|
53
|
+
throw e;
|
54
|
+
}
|
55
|
+
})();
|
41
56
|
return privateKeyToAccount({
|
42
57
|
client,
|
43
|
-
privateKey
|
58
|
+
privateKey,
|
44
59
|
});
|
45
60
|
}
|
46
61
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"retrieval.js","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/native/helpers/wallet/retrieval.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EACX,KAAK,GACN,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
1
|
+
{"version":3,"file":"retrieval.js","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/native/helpers/wallet/retrieval.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EACX,KAAK,GACN,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAG5C;IACC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC;QACjD,MAAM;QACN,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;QAC/B,WAAW,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;QACjC,aAAa,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;QACpC,OAAO;KACR,CAAC,CAAC;IACH,OAAO,oBAAoB,CAAC;QAC1B,MAAM;QACN,MAAM,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;KACjC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,6BAA6B,CAAC,MAAgB;IAC3D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1B,aAAa,GAAG,KAAK,aAAa,EAAE,CAAC;IACvC,CAAC;IACD,MAAM,gBAAgB,GAAG,WAAW,CAAC,aAAoB,CAAC,CAAC;IAC3D,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC7D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAGnC;IACC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QACnC,IAAI,CAAC;YACH,OAAO,MAAM,6BAA6B,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,0GAA0G;YAC1G,uLAAuL;YACvL,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,4BAA4B,EAAE,CAAC;gBACrE,MAAM,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACvD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,CAAC;YACD,iDAAiD;YACjD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,mBAAmB,CAAC;QACzB,MAAM;QACN,UAAU;KACX,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,SAAS,CAItB,EACA,MAAM,EACN,SAAS,EACT,WAAW,EACX,aAAa,EACb,OAAO,GAcR;IAKC,MAAM,WAAW,GAA4B,EAAE,CAAC;IAChD,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACzB,WAAW,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,qBAAqB,GAAG,KAAK,CAAC;IAC5C,CAAC;IACD,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;QAC7B,WAAW,CAAC,yBAAyB,GAAG,IAAI,CAAC;QAC7C,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;YAChC,oGAAoG;YACpG,wFAAwF;YACxF,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,eAAe,GAAG,KAAK,CAAC;QACtC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,yBAAyB,GAAG,KAAK,CAAC;QAC9C,WAAW,CAAC,eAAe,GAAG,KAAK,CAAC;IACtC,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAChD,WAAW,CAAC,YAAY,CAAC,MAAM,CAC7B,QAAQ,EACR,WAAW,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CACxC,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;IACzE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,4BAA4B,EAAE,GAAG,UAAU,CAAC;IAE3E,IAAI,oBAAwC,CAAC;IAC7C,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC,4BAA4B,EAAE,MAAM,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,MAAM,2BAA2B,IAAI,4BAA4B,EAAE,CAAC;YACvE,IAAI,CAAC;gBACH,IAAI,aAAa,CAAC,YAAY,EAAE,CAAC;oBAC/B,yDAAyD;oBACzD,oBAAoB,GAAG,MAAM,eAAe,CAC1C,2BAA2B,IAAI,EAAE,EACjC,aAAa,CAAC,YAAY,IAAI,EAAE,CACjC,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,oBAAoB,GAAG,2BAA2B,CAAC;gBACrD,CAAC;gBACD,+DAA+D;gBAC/D,MAAM;YACR,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QACD,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,mBAAuC,CAAC;IAC5C,IAAI,CAAC;QACH,mBAAmB,GAAG,WAAW,CAAC,UAAU;YAC1C,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW;YACrD,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,0DAA0D;IAC1D,4DAA4D;IAC5D,4DAA4D;IAC5D,OAAO;QACL,yEAAyE;QACzE,SAAS,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,UAAU,IAAI,EAAE,CAAS,CAAC,CAAC,CAAC,SAAS;QACzE,yEAAyE;QACzE,WAAW,EAAE,mBAA0B;QACvC,yEAAyE;QACzE,aAAa,EAAE,oBAA2B;KAC3C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,2BAA2B,CAAC,IAG1C;IACC,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,YAAY,EACZ,MAAM,EACN,OAAO,GAKR;IACC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,MAAM,SAAS,CAAC;QACnD,MAAM;QACN,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;QAC/B,aAAa,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;QACjD,WAAW,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;QAClC,OAAO;KACR,CAAC,CAAC;IACH,wFAAwF;IACxF,MAAM,WAAW,GAAG,aAAa,CAAC;IAClC,MAAM,aAAa,GAAG,MAAM,2BAA2B,CAAC;QACtD,MAAM;QACN,MAAM,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC;KACnC,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC;QACzC,MAAM;QACN,aAAa;QACb,WAAW;QACX,OAAO;KACR,CAAC,CAAC;IAEH,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,OAAO;QACL,aAAa;QACb,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB;QACtD,sBAAsB,EAAE,KAAK;KAC9B,CAAC;AACJ,CAAC"}
|
package/dist/types/version.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const version = "5.61.5
|
1
|
+
export declare const version = "5.61.5";
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAC"}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
export declare const AUTH_SHARE_INDEX: number;
|
2
2
|
export declare const DEVICE_SHARE_INDEX: number;
|
3
3
|
export declare const DEVICE_SHARE_MISSING_MESSAGE = "Missing device share.";
|
4
|
+
export declare const INVALID_DEVICE_SHARE_MESSAGE = "Invalid private key reconstructed from shares";
|
4
5
|
export declare const RECOVERY_SHARE_INDEX: number;
|
5
6
|
export declare const AWS_REGION = "us-west-2";
|
6
7
|
export declare const THIRDWEB_SESSION_NONCE_HEADER = "x-session-nonce";
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/wallets/in-app/native/helpers/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,QAAoB,CAAC;AAGlD,eAAO,MAAM,kBAAkB,QAAsB,CAAC;AACtD,eAAO,MAAM,4BAA4B,0BAA0B,CAAC;
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/wallets/in-app/native/helpers/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,QAAoB,CAAC;AAGlD,eAAO,MAAM,kBAAkB,QAAsB,CAAC;AACtD,eAAO,MAAM,4BAA4B,0BAA0B,CAAC;AACpE,eAAO,MAAM,4BAA4B,kDACQ,CAAC;AAGlD,eAAO,MAAM,oBAAoB,QAAwB,CAAC;AAE1D,eAAO,MAAM,UAAU,cAAc,CAAC;AAEtC,eAAO,MAAM,6BAA6B,oBAAoB,CAAC;AAE/D,eAAO,MAAM,wBAAwB,mDACa,CAAC;AACnD,eAAO,MAAM,6CAA6C,mHACwD,CAAC;AACnH,eAAO,MAAM,6CAA6C,gHACqD,CAAC;AAQhH,eAAO,MAAM,6BAA6B,QAAmF,CAAC;AAC9H,eAAO,MAAM,+BAA+B,4DAAoE,CAAC;AAEjH,eAAO,MAAM,uBAAuB,QAA6E,CAAC;AAClH,eAAO,MAAM,qBAAqB,QAA6E,CAAC;AAChH,eAAO,MAAM,+BAA+B,QAAgF,CAAC;AAC7H,eAAO,MAAM,uBAAuB,QAA0E,CAAC;AAC/G,eAAO,MAAM,4BAA4B,QAAoF,CAAC;AAE9H,eAAO,MAAM,8BAA8B,QAAuE,CAAC;AACnH,eAAO,MAAM,8BAA8B,QAA+D,CAAC"}
|
@@ -12,6 +12,9 @@ export declare function setDeviceShare({ clientId, deviceShare, }: {
|
|
12
12
|
clientId: string;
|
13
13
|
deviceShare: string;
|
14
14
|
}): Promise<string>;
|
15
|
+
export declare function removeDeviceShare({ clientId, }: {
|
16
|
+
clientId: string;
|
17
|
+
}): Promise<void>;
|
15
18
|
export declare function getDeviceShare(clientId: string): Promise<{
|
16
19
|
deviceShare: string;
|
17
20
|
}>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/native/helpers/storage/local.ts"],"names":[],"mappings":"AA8CA,wBAAsB,oBAAoB,CAAC,EACzC,QAAQ,EACR,MAAM,EACN,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,iBAeA;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAazD;AAED,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,iBAKhE;AAED,wBAAsB,cAAc,CAAC,EACnC,QAAQ,EACR,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,CAAC,CAWlB;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM;;GAgBpD"}
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/native/helpers/storage/local.ts"],"names":[],"mappings":"AA8CA,wBAAsB,oBAAoB,CAAC,EACzC,QAAQ,EACR,MAAM,EACN,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,iBAeA;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAazD;AAED,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,iBAKhE;AAED,wBAAsB,cAAc,CAAC,EACnC,QAAQ,EACR,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,MAAM,CAAC,CAWlB;AAED,wBAAsB,iBAAiB,CAAC,EACtC,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhB;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM;;GAgBpD"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"retrieval.d.ts","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/native/helpers/wallet/retrieval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAMtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAEhE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAC;AACjG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;
|
1
|
+
{"version":3,"file":"retrieval.d.ts","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/native/helpers/wallet/retrieval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAMtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAEhE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAC;AACjG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAWtF;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,mBAAmB,CAAC;CAC9B,oBAaA;AAkKD,wBAAsB,sBAAsB,CAAC,EAC3C,YAAY,EACZ,MAAM,EACN,OAAO,GACR,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,mBAAmB,CAAC;CAC9B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA8BpC"}
|
package/package.json
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
2
|
+
import { DOODLES_CONTRACT, USDT_CONTRACT } from "~test/test-contracts.js";
|
3
|
+
import { getCurrencyMetadata } from "./getCurrencyMetadata.js";
|
4
|
+
|
5
|
+
describe("getCurrencyMetadata", () => {
|
6
|
+
it("should throw if not a valid ERC20 contract", async () => {
|
7
|
+
await expect(() =>
|
8
|
+
getCurrencyMetadata({ contract: DOODLES_CONTRACT }),
|
9
|
+
).rejects.toThrowError("Invalid currency token");
|
10
|
+
});
|
11
|
+
|
12
|
+
it("should return valid result if the contract is ERC20", async () => {
|
13
|
+
const result = await getCurrencyMetadata({ contract: USDT_CONTRACT });
|
14
|
+
expect(result).toStrictEqual({
|
15
|
+
name: "Tether USD",
|
16
|
+
symbol: "USDT",
|
17
|
+
decimals: 6,
|
18
|
+
});
|
19
|
+
});
|
20
|
+
});
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { type Abi, toFunctionSelector } from "viem";
|
2
|
+
import { describe, expect, it } from "vitest";
|
3
|
+
import {
|
4
|
+
BASE_USDC_PROXY_CONTRACT,
|
5
|
+
DOODLES_CONTRACT,
|
6
|
+
USDT_CONTRACT,
|
7
|
+
} from "~test/test-contracts.js";
|
8
|
+
import { resolveContractAbi } from "../../../contract/actions/resolve-abi.js";
|
9
|
+
import { isERC20 } from "./isERC20.js";
|
10
|
+
|
11
|
+
describe("isERC20", () => {
|
12
|
+
it("should detect USDT as a valid erc20 contract", async () => {
|
13
|
+
const abi = await resolveContractAbi<Abi>(USDT_CONTRACT);
|
14
|
+
const selectors = abi
|
15
|
+
.filter((f) => f.type === "function")
|
16
|
+
.map((f) => toFunctionSelector(f));
|
17
|
+
expect(isERC20(selectors)).toBe(true);
|
18
|
+
});
|
19
|
+
|
20
|
+
it("should detect USDC as a valid erc20 contract", async () => {
|
21
|
+
const abi = await resolveContractAbi<Abi>(BASE_USDC_PROXY_CONTRACT);
|
22
|
+
const selectors = abi
|
23
|
+
.filter((f) => f.type === "function")
|
24
|
+
.map((f) => toFunctionSelector(f));
|
25
|
+
expect(isERC20(selectors)).toBe(true);
|
26
|
+
});
|
27
|
+
|
28
|
+
it("should NOT detect any NFT contract as a valid erc20 contract", async () => {
|
29
|
+
const abi = await resolveContractAbi<Abi>(DOODLES_CONTRACT);
|
30
|
+
const selectors = abi
|
31
|
+
.filter((f) => f.type === "function")
|
32
|
+
.map((f) => toFunctionSelector(f));
|
33
|
+
expect(isERC20(selectors)).toBe(false);
|
34
|
+
});
|
35
|
+
});
|
@@ -0,0 +1,81 @@
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
2
|
+
import { ANVIL_CHAIN } from "~test/chains.js";
|
3
|
+
import { TEST_CONTRACT_URI } from "~test/ipfs-uris.js";
|
4
|
+
import { TEST_CLIENT } from "~test/test-clients.js";
|
5
|
+
import {
|
6
|
+
TEST_ACCOUNT_A,
|
7
|
+
TEST_ACCOUNT_B,
|
8
|
+
TEST_ACCOUNT_C,
|
9
|
+
TEST_ACCOUNT_D,
|
10
|
+
} from "~test/test-wallets.js";
|
11
|
+
import { getContract } from "../../../contract/contract.js";
|
12
|
+
import { deployERC20Contract } from "../../../extensions/prebuilts/deploy-erc20.js";
|
13
|
+
import { sendAndConfirmTransaction } from "../../../transaction/actions/send-and-confirm-transaction.js";
|
14
|
+
import { balanceOf } from "../__generated__/IERC20/read/balanceOf.js";
|
15
|
+
import { mintTo } from "./mintTo.js";
|
16
|
+
import { transferBatch } from "./transferBatch.js";
|
17
|
+
|
18
|
+
const chain = ANVIL_CHAIN;
|
19
|
+
const client = TEST_CLIENT;
|
20
|
+
const account = TEST_ACCOUNT_A;
|
21
|
+
|
22
|
+
describe("erc20: transferBatch", () => {
|
23
|
+
it("should transfer tokens to multiple recipients", async () => {
|
24
|
+
const address = await deployERC20Contract({
|
25
|
+
type: "TokenERC20",
|
26
|
+
account,
|
27
|
+
chain,
|
28
|
+
client,
|
29
|
+
params: {
|
30
|
+
name: "",
|
31
|
+
contractURI: TEST_CONTRACT_URI,
|
32
|
+
},
|
33
|
+
});
|
34
|
+
const contract = getContract({
|
35
|
+
address,
|
36
|
+
chain,
|
37
|
+
client,
|
38
|
+
});
|
39
|
+
|
40
|
+
// Mint 100 tokens
|
41
|
+
await sendAndConfirmTransaction({
|
42
|
+
transaction: mintTo({ contract, to: account.address, amount: 100 }),
|
43
|
+
account,
|
44
|
+
});
|
45
|
+
|
46
|
+
// Send 25 tokens to each account B, C and D
|
47
|
+
await sendAndConfirmTransaction({
|
48
|
+
account,
|
49
|
+
transaction: transferBatch({
|
50
|
+
contract,
|
51
|
+
batch: [
|
52
|
+
{
|
53
|
+
to: TEST_ACCOUNT_B.address,
|
54
|
+
amount: 25,
|
55
|
+
},
|
56
|
+
{
|
57
|
+
to: TEST_ACCOUNT_C.address,
|
58
|
+
amount: 25,
|
59
|
+
},
|
60
|
+
{
|
61
|
+
to: TEST_ACCOUNT_D.address,
|
62
|
+
amount: 25,
|
63
|
+
},
|
64
|
+
],
|
65
|
+
}),
|
66
|
+
});
|
67
|
+
|
68
|
+
// After that, each address A, B, C and D should have 25 tokens
|
69
|
+
const [balanceA, balanceB, balanceC, balanceD] = await Promise.all([
|
70
|
+
balanceOf({ contract, address: TEST_ACCOUNT_A.address }),
|
71
|
+
balanceOf({ contract, address: TEST_ACCOUNT_B.address }),
|
72
|
+
balanceOf({ contract, address: TEST_ACCOUNT_C.address }),
|
73
|
+
balanceOf({ contract, address: TEST_ACCOUNT_D.address }),
|
74
|
+
]);
|
75
|
+
|
76
|
+
expect(balanceA).toBe(25n * 10n ** 18n);
|
77
|
+
expect(balanceB).toBe(25n * 10n ** 18n);
|
78
|
+
expect(balanceC).toBe(25n * 10n ** 18n);
|
79
|
+
expect(balanceD).toBe(25n * 10n ** 18n);
|
80
|
+
});
|
81
|
+
});
|
package/src/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = "5.61.5
|
1
|
+
export const version = "5.61.5";
|
@@ -6,6 +6,8 @@ export const AUTH_SHARE_INDEX = AUTH_SHARE_ID - 1;
|
|
6
6
|
const DEVICE_SHARE_ID = 1;
|
7
7
|
export const DEVICE_SHARE_INDEX = DEVICE_SHARE_ID - 1;
|
8
8
|
export const DEVICE_SHARE_MISSING_MESSAGE = "Missing device share.";
|
9
|
+
export const INVALID_DEVICE_SHARE_MESSAGE =
|
10
|
+
"Invalid private key reconstructed from shares";
|
9
11
|
|
10
12
|
const RECOVERY_SHARE_ID = 2;
|
11
13
|
export const RECOVERY_SHARE_INDEX = RECOVERY_SHARE_ID - 1;
|
@@ -112,6 +112,22 @@ export async function setDeviceShare({
|
|
112
112
|
return deviceShare;
|
113
113
|
}
|
114
114
|
|
115
|
+
export async function removeDeviceShare({
|
116
|
+
clientId,
|
117
|
+
}: {
|
118
|
+
clientId: string;
|
119
|
+
}): Promise<void> {
|
120
|
+
const userDetails = await getWalletUserDetails(clientId);
|
121
|
+
|
122
|
+
if (!userDetails) {
|
123
|
+
throw new Error("Missing wallet user ID");
|
124
|
+
}
|
125
|
+
|
126
|
+
const name = DEVICE_SHARE_LOCAL_STORAGE_NAME(clientId, userDetails.userId);
|
127
|
+
await removeItemInAsyncStorage(name);
|
128
|
+
return;
|
129
|
+
}
|
130
|
+
|
115
131
|
export async function getDeviceShare(clientId: string) {
|
116
132
|
const cachedWalletUserId = await getWalletUserDetails(clientId);
|
117
133
|
if (!cachedWalletUserId) {
|
@@ -11,9 +11,10 @@ import type { SetUpWalletRpcReturnType } from "../../../core/authentication/type
|
|
11
11
|
import { getUserShares } from "../api/fetchers.js";
|
12
12
|
import {
|
13
13
|
DEVICE_SHARE_MISSING_MESSAGE,
|
14
|
+
INVALID_DEVICE_SHARE_MESSAGE,
|
14
15
|
ROUTE_GET_USER_SHARES,
|
15
16
|
} from "../constants.js";
|
16
|
-
import { getDeviceShare } from "../storage/local.js";
|
17
|
+
import { getDeviceShare, removeDeviceShare } from "../storage/local.js";
|
17
18
|
import { storeShares } from "./creation.js";
|
18
19
|
import { decryptShareWeb } from "./encryption.js";
|
19
20
|
|
@@ -47,7 +48,7 @@ async function getWalletPrivateKeyFromShares(shares: string[]) {
|
|
47
48
|
}
|
48
49
|
const prefixPrivateKey = hexToString(privateKeyHex as Hex);
|
49
50
|
if (!prefixPrivateKey.startsWith("thirdweb_")) {
|
50
|
-
throw new Error(
|
51
|
+
throw new Error(INVALID_DEVICE_SHARE_MESSAGE);
|
51
52
|
}
|
52
53
|
const privateKey = prefixPrivateKey.replace("thirdweb_", "");
|
53
54
|
return privateKey;
|
@@ -58,9 +59,24 @@ async function getAccountFromShares(args: {
|
|
58
59
|
shares: string[];
|
59
60
|
}): Promise<Account> {
|
60
61
|
const { client, shares } = args;
|
62
|
+
const privateKey = await (async () => {
|
63
|
+
try {
|
64
|
+
return await getWalletPrivateKeyFromShares(shares);
|
65
|
+
} catch (e) {
|
66
|
+
// If the private key reconstruction fails, try to reset the device share and prompt the user to try again
|
67
|
+
// This can happen if a user's account has been migrated or otherwise modified in the backend to use a new wallet. In that case, we need to reset their device state to get a new share
|
68
|
+
if (e instanceof Error && e.message === INVALID_DEVICE_SHARE_MESSAGE) {
|
69
|
+
await removeDeviceShare({ clientId: client.clientId });
|
70
|
+
throw new Error("Invalid device state, please try again.");
|
71
|
+
}
|
72
|
+
// Otherwise this is a legitimate error, throw it
|
73
|
+
throw e;
|
74
|
+
}
|
75
|
+
})();
|
76
|
+
|
61
77
|
return privateKeyToAccount({
|
62
78
|
client,
|
63
|
-
privateKey
|
79
|
+
privateKey,
|
64
80
|
});
|
65
81
|
}
|
66
82
|
|