@funkit/core 2.0.1 → 2.1.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/dist/index.js +11 -27
- package/dist/index.js.map +1 -1
- package/dist/src/abis/ApproveAndExec.json +45 -9
- package/dist/src/abis/ApproveAndSwap.json +141 -1
- package/dist/src/abis/CheckoutPaymaster.json +3358 -1
- package/dist/src/abis/EntryPoint.json +590 -113
- package/dist/src/abis/EstimationPaymaster.json +134 -24
- package/dist/src/abis/FeePercentOracle.json +94 -18
- package/dist/src/abis/FunWallet.json +280 -56
- package/dist/src/abis/FunWalletFactory.json +112 -21
- package/dist/src/abis/GaslessPaymaster.json +279 -50
- package/dist/src/abis/RoleBasedAccessControl.json +2 -1
- package/dist/src/abis/TestNFT.json +71 -15
- package/dist/src/abis/TokenPriceOracle.json +17 -4
- package/dist/src/abis/UserAuthentication.json +147 -32
- package/dist/src/actions/AccessControl.js +39 -48
- package/dist/src/actions/AccessControl.js.map +1 -1
- package/dist/src/actions/BatchActions.js +3 -7
- package/dist/src/actions/BatchActions.js.map +1 -1
- package/dist/src/actions/Bridge.js +16 -20
- package/dist/src/actions/Bridge.js.map +1 -1
- package/dist/src/actions/FirstClassActions.js +74 -77
- package/dist/src/actions/FirstClassActions.js.map +1 -1
- package/dist/src/actions/Group.js +14 -20
- package/dist/src/actions/Group.js.map +1 -1
- package/dist/src/actions/LimitOrder.js +18 -22
- package/dist/src/actions/LimitOrder.js.map +1 -1
- package/dist/src/actions/Stake.js +40 -43
- package/dist/src/actions/Stake.js.map +1 -1
- package/dist/src/actions/Swap.js +40 -46
- package/dist/src/actions/Swap.js.map +1 -1
- package/dist/src/actions/Token.js +41 -53
- package/dist/src/actions/Token.js.map +1 -1
- package/dist/src/actions/index.js +7 -23
- package/dist/src/actions/index.js.map +1 -1
- package/dist/src/actions/types.js +4 -7
- package/dist/src/actions/types.js.map +1 -1
- package/dist/src/apis/AccessControlApis.js +10 -16
- package/dist/src/apis/AccessControlApis.js.map +1 -1
- package/dist/src/apis/BridgeApis.js +14 -20
- package/dist/src/apis/BridgeApis.js.map +1 -1
- package/dist/src/apis/ContractApis.js +4 -7
- package/dist/src/apis/ContractApis.js.map +1 -1
- package/dist/src/apis/GroupApis.js +6 -10
- package/dist/src/apis/GroupApis.js.map +1 -1
- package/dist/src/apis/InfoApis.js +16 -23
- package/dist/src/apis/InfoApis.js.map +1 -1
- package/dist/src/apis/ListenerApis.js +9 -13
- package/dist/src/apis/ListenerApis.js.map +1 -1
- package/dist/src/apis/NFTApis.js +6 -10
- package/dist/src/apis/NFTApis.js.map +1 -1
- package/dist/src/apis/OperationApis.js +26 -40
- package/dist/src/apis/OperationApis.js.map +1 -1
- package/dist/src/apis/PaymasterApis.js +4 -7
- package/dist/src/apis/PaymasterApis.js.map +1 -1
- package/dist/src/apis/SwapApis.js +8 -13
- package/dist/src/apis/SwapApis.js.map +1 -1
- package/dist/src/apis/UserApis.js +20 -29
- package/dist/src/apis/UserApis.js.map +1 -1
- package/dist/src/apis/index.js +8 -24
- package/dist/src/apis/index.js.map +1 -1
- package/dist/src/apis/types.js +1 -2
- package/dist/src/auth/Auth.js +60 -76
- package/dist/src/auth/Auth.js.map +1 -1
- package/dist/src/auth/SessionKeyAuth.js +30 -33
- package/dist/src/auth/SessionKeyAuth.js.map +1 -1
- package/dist/src/auth/index.js +2 -18
- package/dist/src/auth/index.js.map +1 -1
- package/dist/src/auth/types.js +1 -2
- package/dist/src/common/constants.d.ts +141 -3
- package/dist/src/common/constants.js +211 -191
- package/dist/src/common/constants.js.map +1 -1
- package/dist/src/common/index.js +2 -18
- package/dist/src/common/index.js.map +1 -1
- package/dist/src/common/types.js +1 -2
- package/dist/src/config/Config.js +8 -13
- package/dist/src/config/Config.js.map +1 -1
- package/dist/src/config/index.js +2 -18
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/config/types.js +1 -2
- package/dist/src/data/Chain.js +35 -33
- package/dist/src/data/Chain.js.map +1 -1
- package/dist/src/data/NFT.js +28 -31
- package/dist/src/data/NFT.js.map +1 -1
- package/dist/src/data/Operation.js +28 -11
- package/dist/src/data/Operation.js.map +1 -1
- package/dist/src/data/SolidityData.js +23 -30
- package/dist/src/data/SolidityData.js.map +1 -1
- package/dist/src/data/Token.js +21 -23
- package/dist/src/data/Token.js.map +1 -1
- package/dist/src/data/index.js +6 -22
- package/dist/src/data/index.js.map +1 -1
- package/dist/src/data/types.js +6 -9
- package/dist/src/data/types.js.map +1 -1
- package/dist/src/errors/BaseError.js +6 -5
- package/dist/src/errors/BaseError.js.map +1 -1
- package/dist/src/errors/ClientError.js +21 -34
- package/dist/src/errors/ClientError.js.map +1 -1
- package/dist/src/errors/ServerError.js +6 -11
- package/dist/src/errors/ServerError.js.map +1 -1
- package/dist/src/errors/index.js +4 -20
- package/dist/src/errors/index.js.map +1 -1
- package/dist/src/errors/types.js +6 -9
- package/dist/src/errors/types.js.map +1 -1
- package/dist/src/sponsors/CheckoutSponsor.js +10 -14
- package/dist/src/sponsors/CheckoutSponsor.js.map +1 -1
- package/dist/src/sponsors/GaslessSponsor.js +23 -27
- package/dist/src/sponsors/GaslessSponsor.js.map +1 -1
- package/dist/src/sponsors/Sponsor.js +10 -8
- package/dist/src/sponsors/Sponsor.js.map +1 -1
- package/dist/src/sponsors/TokenSponsor.js +79 -82
- package/dist/src/sponsors/TokenSponsor.js.map +1 -1
- package/dist/src/sponsors/index.js +4 -20
- package/dist/src/sponsors/index.js.map +1 -1
- package/dist/src/sponsors/types.js +2 -5
- package/dist/src/sponsors/types.js.map +1 -1
- package/dist/src/utils/ApiUtils.js +30 -38
- package/dist/src/utils/ApiUtils.js.map +1 -1
- package/dist/src/utils/AuthUtils.js +9 -14
- package/dist/src/utils/AuthUtils.js.map +1 -1
- package/dist/src/utils/ChainUtils.js +38 -49
- package/dist/src/utils/ChainUtils.js.map +1 -1
- package/dist/src/utils/CheckoutUtils.js +13 -18
- package/dist/src/utils/CheckoutUtils.js.map +1 -1
- package/dist/src/utils/GroupUtils.js +6 -9
- package/dist/src/utils/GroupUtils.js.map +1 -1
- package/dist/src/utils/MerkleUtils.js +34 -47
- package/dist/src/utils/MerkleUtils.js.map +1 -1
- package/dist/src/utils/PaymasterUtils.js +5 -9
- package/dist/src/utils/PaymasterUtils.js.map +1 -1
- package/dist/src/utils/SwapUtils.js +44 -43
- package/dist/src/utils/SwapUtils.js.map +1 -1
- package/dist/src/utils/TypeUtils.js +5 -9
- package/dist/src/utils/TypeUtils.js.map +1 -1
- package/dist/src/utils/UserOpUtils.js +20 -29
- package/dist/src/utils/UserOpUtils.js.map +1 -1
- package/dist/src/utils/ViemUtils.js +6 -12
- package/dist/src/utils/ViemUtils.js.map +1 -1
- package/dist/src/utils/WalletUtils.js +28 -42
- package/dist/src/utils/WalletUtils.js.map +1 -1
- package/dist/src/utils/index.js +8 -24
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/viem/ContractInterface.js +14 -18
- package/dist/src/viem/ContractInterface.js.map +1 -1
- package/dist/src/viem/Converter.js +15 -20
- package/dist/src/viem/Converter.js.map +1 -1
- package/dist/src/viem/index.js +2 -18
- package/dist/src/viem/index.js.map +1 -1
- package/dist/src/wallet/FunWallet.js +141 -142
- package/dist/src/wallet/FunWallet.js.map +1 -1
- package/dist/src/wallet/index.js +2 -18
- package/dist/src/wallet/index.js.map +1 -1
- package/dist/src/wallet/types.js +1 -2
- package/package.json +4 -2
|
@@ -1,21 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./CheckoutSponsor"), exports);
|
|
18
|
-
__exportStar(require("./GaslessSponsor"), exports);
|
|
19
|
-
__exportStar(require("./Sponsor"), exports);
|
|
20
|
-
__exportStar(require("./TokenSponsor"), exports);
|
|
1
|
+
export * from './CheckoutSponsor';
|
|
2
|
+
export * from './GaslessSponsor';
|
|
3
|
+
export * from './Sponsor';
|
|
4
|
+
export * from './TokenSponsor';
|
|
21
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sponsors/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sponsors/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA"}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PaymasterType = void 0;
|
|
4
|
-
var PaymasterType;
|
|
1
|
+
export var PaymasterType;
|
|
5
2
|
(function (PaymasterType) {
|
|
6
3
|
PaymasterType["BaseSponsor"] = "base";
|
|
7
4
|
PaymasterType["GaslessSponsor"] = "gasless";
|
|
8
5
|
PaymasterType["TokenSponsor"] = "token";
|
|
9
6
|
PaymasterType["CheckoutSponsor"] = "checkout";
|
|
10
|
-
})(PaymasterType || (
|
|
7
|
+
})(PaymasterType || (PaymasterType = {}));
|
|
11
8
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/sponsors/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/sponsors/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,qCAAoB,CAAA;IACpB,2CAA0B,CAAA;IAC1B,uCAAsB,CAAA;IACtB,6CAA4B,CAAA;AAC9B,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB"}
|
|
@@ -1,22 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exports.sendPostRequest = sendPostRequest;
|
|
6
|
-
exports.sendDeleteRequest = sendDeleteRequest;
|
|
7
|
-
exports.sendPutRequest = sendPutRequest;
|
|
8
|
-
const attempt_1 = require("@lifeomic/attempt");
|
|
9
|
-
const constants_1 = require("../common/constants");
|
|
10
|
-
const errors_1 = require("../errors");
|
|
11
|
-
const index_1 = require("./index");
|
|
1
|
+
import { retry } from '@lifeomic/attempt';
|
|
2
|
+
import { API_URL } from '../common/constants';
|
|
3
|
+
import { AccessDeniedError, ErrorCode, InternalFailureError, InvalidParameterError, ResourceNotFoundError, ThrottlingError, UserOpFailureError, } from '../errors';
|
|
4
|
+
import { stringify } from './index';
|
|
12
5
|
const errorHandler = (err, context) => {
|
|
13
|
-
if (err instanceof
|
|
14
|
-
err instanceof
|
|
15
|
-
err instanceof
|
|
6
|
+
if (err instanceof ResourceNotFoundError ||
|
|
7
|
+
err instanceof InvalidParameterError ||
|
|
8
|
+
err instanceof UserOpFailureError) {
|
|
16
9
|
context.abort();
|
|
17
10
|
}
|
|
18
11
|
};
|
|
19
|
-
|
|
12
|
+
export const DEFAULT_RETRY_OPTIONS = {
|
|
20
13
|
delay: 100,
|
|
21
14
|
initialDelay: 0,
|
|
22
15
|
maxDelay: 3000,
|
|
@@ -30,7 +23,7 @@ exports.DEFAULT_RETRY_OPTIONS = {
|
|
|
30
23
|
beforeAttempt: null,
|
|
31
24
|
calculateDelay: null,
|
|
32
25
|
};
|
|
33
|
-
const sendRequest = async (uri, method, apiKey, body, retryOptions) => {
|
|
26
|
+
export const sendRequest = async (uri, method, apiKey, body, retryOptions) => {
|
|
34
27
|
try {
|
|
35
28
|
const headers = {
|
|
36
29
|
'Content-Type': 'application/json',
|
|
@@ -39,64 +32,63 @@ const sendRequest = async (uri, method, apiKey, body, retryOptions) => {
|
|
|
39
32
|
headers['X-Api-Key'] = apiKey;
|
|
40
33
|
}
|
|
41
34
|
const finalRetryOptions = {
|
|
42
|
-
...
|
|
35
|
+
...DEFAULT_RETRY_OPTIONS,
|
|
43
36
|
...(retryOptions || {}),
|
|
44
37
|
};
|
|
45
|
-
return
|
|
38
|
+
return retry(async function () {
|
|
46
39
|
const response = await fetch(uri, {
|
|
47
40
|
method,
|
|
48
41
|
headers,
|
|
49
42
|
redirect: 'follow',
|
|
50
|
-
body: method !== 'GET' ?
|
|
43
|
+
body: method !== 'GET' ? stringify(body) : undefined,
|
|
51
44
|
});
|
|
52
45
|
const json = await response.json();
|
|
53
46
|
if (response.ok) {
|
|
54
47
|
return json;
|
|
55
48
|
}
|
|
56
49
|
else if (response.status === 400) {
|
|
57
|
-
throw new
|
|
50
|
+
throw new InvalidParameterError(ErrorCode.InvalidParameter, `bad request ${JSON.stringify(json)}`, { body }, 'check the api call parameters. its mostly because some call parameters are wrong', 'https://docs.fun.xyz');
|
|
58
51
|
}
|
|
59
52
|
else if (response.status === 403) {
|
|
60
|
-
throw new
|
|
53
|
+
throw new AccessDeniedError(ErrorCode.Unauthorized, 'Invalid API key or insufficient access.', { apiKey }, 'Check your api key at https://app.fun.xyz and check with fun team if you believe something is off', 'https://docs.fun.xyz');
|
|
61
54
|
}
|
|
62
55
|
else if (response.status === 404) {
|
|
63
|
-
throw new
|
|
56
|
+
throw new ResourceNotFoundError(ErrorCode.ServerMissingData, JSON.stringify(json), { body }, 'check the api call parameters. its mostly because some call parameters are wrong', 'https://docs.fun.xyz');
|
|
64
57
|
}
|
|
65
58
|
else if (response.status === 429) {
|
|
66
|
-
throw new
|
|
59
|
+
throw new ThrottlingError(ErrorCode.RequestLimitExceeded, `too many requests ${JSON.stringify(json)}`, { body }, 'you are making too many requests. please slow down. Reach out to fun team if you need more quota', 'https://docs.fun.xyz');
|
|
67
60
|
}
|
|
68
61
|
else if (response.status === 500) {
|
|
69
|
-
if (json.errorCode ===
|
|
70
|
-
throw new
|
|
62
|
+
if (json.errorCode === ErrorCode.UserOpFailureError) {
|
|
63
|
+
throw new UserOpFailureError(ErrorCode.UserOpFailureError, JSON.stringify(json), { body }, 'fix user op failure. Most of the time this is due to invalid parameters', 'https://docs.fun.xyz');
|
|
71
64
|
}
|
|
72
65
|
else {
|
|
73
|
-
throw new
|
|
66
|
+
throw new InternalFailureError(ErrorCode.ServerFailure, `server failure ${JSON.stringify(json)}`, { body }, 'retry later. if it still fails, please contact us.', 'https://docs.fun.xyz');
|
|
74
67
|
}
|
|
75
68
|
}
|
|
76
69
|
else if (response.status === 504) {
|
|
77
|
-
throw new
|
|
70
|
+
throw new InternalFailureError(ErrorCode.ServerTimeout, `server timeout failure ${JSON.stringify(json)}`, { body }, 'retry later. if it still fails, please contact us.', 'https://docs.fun.xyz');
|
|
78
71
|
}
|
|
79
72
|
else if (!response.ok) {
|
|
80
|
-
throw new
|
|
73
|
+
throw new InternalFailureError(ErrorCode.UnknownServerError, `unknown server failure ${JSON.stringify(json)}`, { body }, 'retry later. if it still fails, please contact us.', 'https://docs.fun.xyz');
|
|
81
74
|
}
|
|
82
75
|
return {};
|
|
83
76
|
}, finalRetryOptions);
|
|
84
77
|
}
|
|
85
78
|
catch (err) {
|
|
86
|
-
throw new
|
|
79
|
+
throw new InternalFailureError(ErrorCode.ServerConnectionError, `Cannot connect to Fun API Service ${err}`, { body }, 'retry later. if it still fails, please contact us.', 'https://docs.fun.xyz');
|
|
87
80
|
}
|
|
88
81
|
};
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return await (0, exports.sendRequest)(`${uri}/${endpoint}`, 'GET', apiKey, undefined, retryOptions);
|
|
82
|
+
export async function sendGetRequest(uri = API_URL, endpoint, apiKey = globalThis.globalEnvOption?.apiKey, retryOptions = {}) {
|
|
83
|
+
return await sendRequest(`${uri}/${endpoint}`, 'GET', apiKey, undefined, retryOptions);
|
|
92
84
|
}
|
|
93
|
-
async function sendPostRequest(uri =
|
|
94
|
-
return await
|
|
85
|
+
export async function sendPostRequest(uri = API_URL, endpoint, body, apiKey = globalThis.globalEnvOption?.apiKey, retryOptions = {}) {
|
|
86
|
+
return await sendRequest(`${uri}/${endpoint}`, 'POST', apiKey, body, retryOptions);
|
|
95
87
|
}
|
|
96
|
-
async function sendDeleteRequest(uri =
|
|
97
|
-
await
|
|
88
|
+
export async function sendDeleteRequest(uri = API_URL, endpoint, apiKey = globalThis.globalEnvOption.apiKey) {
|
|
89
|
+
await sendRequest(`${uri}/${endpoint}`, 'DELETE', apiKey);
|
|
98
90
|
}
|
|
99
|
-
async function sendPutRequest(uri =
|
|
100
|
-
await
|
|
91
|
+
export async function sendPutRequest(uri = API_URL, endpoint, body, apiKey = globalThis.globalEnvOption.apiKey) {
|
|
92
|
+
await sendRequest(`${uri}/${endpoint}`, 'PUT', apiKey, body);
|
|
101
93
|
}
|
|
102
94
|
//# sourceMappingURL=ApiUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiUtils.js","sourceRoot":"","sources":["../../../src/utils/ApiUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ApiUtils.js","sourceRoot":"","sources":["../../../src/utils/ApiUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generatePrivateKey = exports.getAuthUniqueId = void 0;
|
|
4
|
-
const uuid_1 = require("uuid");
|
|
1
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
5
2
|
// @ts-ignore
|
|
6
3
|
// eslint-disable-next-line
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const getAuthUniqueId = async (authId, addr = 'NO_ADDRESS', skipDBActions = false) => {
|
|
4
|
+
import { generatePrivateKey as generateRandomPrivateKey } from "viem/accounts";
|
|
5
|
+
import { createUser, getUserUniqueId } from '../apis/UserApis';
|
|
6
|
+
export const getAuthUniqueId = async (authId, addr = 'NO_ADDRESS', skipDBActions = false) => {
|
|
10
7
|
let authUniqueId;
|
|
11
8
|
if (skipDBActions) {
|
|
12
9
|
authUniqueId = addr;
|
|
13
10
|
}
|
|
14
11
|
else {
|
|
15
|
-
authUniqueId = await
|
|
12
|
+
authUniqueId = await getUserUniqueId(authId);
|
|
16
13
|
}
|
|
17
14
|
if (!authUniqueId) {
|
|
18
|
-
authUniqueId = (
|
|
15
|
+
authUniqueId = uuidv4();
|
|
19
16
|
}
|
|
20
17
|
const words = authId.split('###');
|
|
21
18
|
let method;
|
|
@@ -25,12 +22,10 @@ const getAuthUniqueId = async (authId, addr = 'NO_ADDRESS', skipDBActions = fals
|
|
|
25
22
|
else {
|
|
26
23
|
method = words[0];
|
|
27
24
|
}
|
|
28
|
-
await
|
|
25
|
+
await createUser(authId, addr, method, authUniqueId);
|
|
29
26
|
return authUniqueId;
|
|
30
27
|
};
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return (0, accounts_1.generatePrivateKey)();
|
|
28
|
+
export const generatePrivateKey = () => {
|
|
29
|
+
return generateRandomPrivateKey();
|
|
34
30
|
};
|
|
35
|
-
exports.generatePrivateKey = generatePrivateKey;
|
|
36
31
|
//# sourceMappingURL=AuthUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthUtils.js","sourceRoot":"","sources":["../../../src/utils/AuthUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AuthUtils.js","sourceRoot":"","sources":["../../../src/utils/AuthUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AAEnC,aAAa;AACb,2BAA2B;AAC3B,OAAO,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,MAAM,eAAe,CAAA;AAE9E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAE9D,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,MAAc,EACd,IAAI,GAAG,YAAY,EACnB,aAAa,GAAG,KAAK,EACrB,EAAE;IACF,IAAI,YAAY,CAAA;IAChB,IAAI,aAAa,EAAE,CAAC;QAClB,YAAY,GAAG,IAAI,CAAA;IACrB,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAA;IAC9C,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,MAAM,EAAE,CAAA;IACzB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACjC,IAAI,MAAM,CAAA;IACV,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,KAAK,CAAA;IAChB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IACD,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA;IAEpD,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAQ,EAAE;IAC1C,OAAO,wBAAwB,EAAE,CAAA;AACnC,CAAC,CAAA"}
|
|
@@ -1,54 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const errors_1 = require("../errors");
|
|
9
|
-
const ApiUtils_1 = require("./ApiUtils");
|
|
10
|
-
const isAddress = (address) => {
|
|
1
|
+
import { getAssetFromFaucet } from '@funkit/api-base';
|
|
2
|
+
import { concat, decodeAbiParameters, encodeAbiParameters, isAddress as isAddressViem, keccak256, pad, parseEther, toBytes, toHex, } from 'viem';
|
|
3
|
+
import { gasSpecificChain, WALLET_CONTRACT_INTERFACE } from '../common';
|
|
4
|
+
import { Chain } from '../data';
|
|
5
|
+
import { ErrorCode, InvalidParameterError } from '../errors';
|
|
6
|
+
import { sendRequest } from './ApiUtils';
|
|
7
|
+
export const isAddress = (address) => {
|
|
11
8
|
try {
|
|
12
|
-
const [decodedAddr] =
|
|
13
|
-
return (
|
|
9
|
+
const [decodedAddr] = decodeAbiParameters([{ type: 'address' }], pad(address, { size: 32 }));
|
|
10
|
+
return isAddressViem(decodedAddr);
|
|
14
11
|
}
|
|
15
12
|
catch (err) {
|
|
16
13
|
return false;
|
|
17
14
|
}
|
|
18
15
|
};
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
const chain = await data_1.Chain.getChain({ chainIdentifier: txOptions.chain });
|
|
16
|
+
export const fundWallet = async (auth, wallet, value, txOptions = globalThis.globalEnvOption) => {
|
|
17
|
+
const chain = await Chain.getChain({ chainIdentifier: txOptions.chain });
|
|
22
18
|
const chainId = await chain.getChainId();
|
|
23
19
|
const to = await wallet.getAddress();
|
|
24
20
|
let txData;
|
|
25
|
-
if (
|
|
21
|
+
if (gasSpecificChain[chainId]) {
|
|
26
22
|
let maxPriorityFee, maxFee;
|
|
27
23
|
try {
|
|
28
|
-
const { standard: { maxPriorityFee: maxPriorityFee1, maxFee: maxFee1 }, } = await
|
|
24
|
+
const { standard: { maxPriorityFee: maxPriorityFee1, maxFee: maxFee1 }, } = await getGasStation(gasSpecificChain[chainId].gasStationUrl);
|
|
29
25
|
maxPriorityFee = maxPriorityFee1;
|
|
30
26
|
maxFee = maxFee1;
|
|
31
27
|
}
|
|
32
28
|
catch (e) {
|
|
33
|
-
maxPriorityFee = BigInt(
|
|
34
|
-
maxFee = BigInt(
|
|
29
|
+
maxPriorityFee = BigInt(gasSpecificChain[chainId].backupPriorityFee);
|
|
30
|
+
maxFee = BigInt(gasSpecificChain[chainId].backupFee);
|
|
35
31
|
}
|
|
36
32
|
txData = {
|
|
37
33
|
to,
|
|
38
34
|
data: '0x',
|
|
39
|
-
value:
|
|
35
|
+
value: parseEther(`${value}`),
|
|
40
36
|
maxFeePerGas: BigInt(Math.floor(maxPriorityFee * 1e9)),
|
|
41
37
|
maxPriorityFeePerGas: BigInt(Math.floor(maxFee * 1e9)),
|
|
42
38
|
};
|
|
43
39
|
}
|
|
44
40
|
else {
|
|
45
|
-
txData = { to, data: '0x', value:
|
|
41
|
+
txData = { to, data: '0x', value: parseEther(`${value}`) };
|
|
46
42
|
}
|
|
47
43
|
const receipt = await auth.sendTx({ ...txData });
|
|
48
44
|
return await receipt;
|
|
49
45
|
};
|
|
50
|
-
|
|
51
|
-
const isContract = async (address, client) => {
|
|
46
|
+
export const isContract = async (address, client) => {
|
|
52
47
|
try {
|
|
53
48
|
const code = await client.getBytecode({ address });
|
|
54
49
|
return !!code;
|
|
@@ -57,79 +52,74 @@ const isContract = async (address, client) => {
|
|
|
57
52
|
return false;
|
|
58
53
|
}
|
|
59
54
|
};
|
|
60
|
-
|
|
61
|
-
const randomBytes = (length) => {
|
|
55
|
+
export const randomBytes = (length) => {
|
|
62
56
|
const bytes = new Uint8Array(length);
|
|
63
57
|
for (let i = 0; i < length; i++) {
|
|
64
58
|
bytes[i] = Math.floor(Math.random() * 256);
|
|
65
59
|
}
|
|
66
|
-
return
|
|
60
|
+
return toHex(bytes);
|
|
67
61
|
};
|
|
68
|
-
|
|
69
|
-
const getWalletPermitNonce = async (walletAddr, chain, nonceKey = 0) => {
|
|
62
|
+
export const getWalletPermitNonce = async (walletAddr, chain, nonceKey = 0) => {
|
|
70
63
|
try {
|
|
71
|
-
return await
|
|
64
|
+
return await WALLET_CONTRACT_INTERFACE.readFromChain(walletAddr, 'getNonce', [nonceKey], chain);
|
|
72
65
|
}
|
|
73
66
|
catch (e) {
|
|
74
67
|
return 0;
|
|
75
68
|
}
|
|
76
69
|
};
|
|
77
|
-
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
const EIP712_DOMAIN = (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([{ type: 'string' }], [
|
|
70
|
+
export const getPermitHash = (token, to, amount, nonce, walletAddr, chainId) => {
|
|
71
|
+
const salt = keccak256(toBytes('Create3Deployer.deployers()'));
|
|
72
|
+
const EIP712_DOMAIN = keccak256(encodeAbiParameters([{ type: 'string' }], [
|
|
81
73
|
'EIP712Domain(string name,string version,uint256 chainId,address verifyingContract,bytes32 salt)',
|
|
82
74
|
]));
|
|
83
75
|
const PERMIT_TYPEHASH = 'PermitTransferStruct(address token, address to, uint256 amount, uint256 nonce)';
|
|
84
|
-
const DOMAIN_SEPARATOR =
|
|
76
|
+
const DOMAIN_SEPARATOR = keccak256(encodeAbiParameters([
|
|
85
77
|
{ type: 'bytes32' },
|
|
86
78
|
{ type: 'bytes32' },
|
|
87
79
|
{ type: 'bytes32' },
|
|
88
80
|
{ type: 'uint256' },
|
|
89
81
|
{ type: 'address' },
|
|
90
82
|
{ type: 'bytes32' },
|
|
91
|
-
], [EIP712_DOMAIN, salt,
|
|
92
|
-
const PERMIT_HASH =
|
|
83
|
+
], [EIP712_DOMAIN, salt, keccak256(toBytes('1')), chainId, walletAddr, salt]));
|
|
84
|
+
const PERMIT_HASH = keccak256(encodeAbiParameters([
|
|
93
85
|
{ type: 'string' },
|
|
94
86
|
{ type: 'address' },
|
|
95
87
|
{ type: 'address' },
|
|
96
88
|
{ type: 'uint256' },
|
|
97
89
|
{ type: 'uint256' },
|
|
98
90
|
], [PERMIT_TYPEHASH, token, to, amount, nonce]));
|
|
99
|
-
return
|
|
91
|
+
return keccak256(concat([DOMAIN_SEPARATOR, PERMIT_HASH]));
|
|
100
92
|
};
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
return await (0, ApiUtils_1.sendRequest)(gasStationUrl, 'GET', '');
|
|
93
|
+
export const getGasStation = async (gasStationUrl) => {
|
|
94
|
+
return await sendRequest(gasStationUrl, 'GET', '');
|
|
104
95
|
};
|
|
105
|
-
|
|
106
|
-
const
|
|
107
|
-
const chain = await data_1.Chain.getChain({ chainIdentifier });
|
|
96
|
+
export const useFaucet = async (chainIdentifier, wallet) => {
|
|
97
|
+
const chain = await Chain.getChain({ chainIdentifier });
|
|
108
98
|
const chainName = await chain.getChainName();
|
|
109
99
|
if (chainName !== 'goerli') {
|
|
110
|
-
throw new
|
|
100
|
+
throw new InvalidParameterError(ErrorCode.InvalidChainIdentifier, 'Only Goerli is supported', chainIdentifier, 'Provide the goerli chain, 5, or goerli as the chain identifier', 'https://docs.fun.xyz/');
|
|
111
101
|
}
|
|
112
102
|
const walletAddress = await wallet.getAddress();
|
|
113
103
|
const [ethRequest, usdcRequest, usdtRequest, daiRequest] = await Promise.all([
|
|
114
|
-
|
|
104
|
+
getAssetFromFaucet({
|
|
115
105
|
token: 'eth',
|
|
116
106
|
chain: chainName,
|
|
117
107
|
walletAddress,
|
|
118
108
|
apiKey: globalThis.globalEnvOption.apiKey,
|
|
119
109
|
}),
|
|
120
|
-
|
|
110
|
+
getAssetFromFaucet({
|
|
121
111
|
token: 'usdc',
|
|
122
112
|
chain: chainName,
|
|
123
113
|
walletAddress,
|
|
124
114
|
apiKey: globalThis.globalEnvOption.apiKey,
|
|
125
115
|
}),
|
|
126
|
-
|
|
116
|
+
getAssetFromFaucet({
|
|
127
117
|
token: 'usdt',
|
|
128
118
|
chain: chainName,
|
|
129
119
|
walletAddress,
|
|
130
120
|
apiKey: globalThis.globalEnvOption.apiKey,
|
|
131
121
|
}),
|
|
132
|
-
|
|
122
|
+
getAssetFromFaucet({
|
|
133
123
|
token: 'dai',
|
|
134
124
|
chain: chainName,
|
|
135
125
|
walletAddress,
|
|
@@ -138,5 +128,4 @@ const useFaucet = async (chainIdentifier, wallet) => {
|
|
|
138
128
|
]);
|
|
139
129
|
return [ethRequest, usdcRequest, usdtRequest, daiRequest];
|
|
140
130
|
};
|
|
141
|
-
exports.useFaucet = useFaucet;
|
|
142
131
|
//# sourceMappingURL=ChainUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChainUtils.js","sourceRoot":"","sources":["../../../src/utils/ChainUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChainUtils.js","sourceRoot":"","sources":["../../../src/utils/ChainUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exports.roundToNearestBottomTenth = roundToNearestBottomTenth;
|
|
6
|
-
const common_1 = require("../common");
|
|
7
|
-
const data_1 = require("../data");
|
|
8
|
-
const ChainUtils_1 = require("./ChainUtils");
|
|
9
|
-
async function getDecimals({ chainId, tokenAddress, }) {
|
|
1
|
+
import { dydxChain, FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS, FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO, } from '../common';
|
|
2
|
+
import { Chain, Token } from '../data';
|
|
3
|
+
import { randomBytes } from './ChainUtils';
|
|
4
|
+
export async function getDecimals({ chainId, tokenAddress, }) {
|
|
10
5
|
// If tokenAddress is a known native currency address, check against funkitconnect supported chains mapping
|
|
11
|
-
if (tokenAddress ===
|
|
6
|
+
if (tokenAddress === FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS) {
|
|
12
7
|
// Assumption here is the chainId is some supported chainId in FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO already
|
|
13
8
|
// TODO: Validation / error handling
|
|
14
|
-
return
|
|
9
|
+
return FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO[chainId].nativeCurrency.decimals;
|
|
15
10
|
}
|
|
16
11
|
// Dydx handling - we only support noble usdc
|
|
17
|
-
if (chainId ===
|
|
18
|
-
|
|
12
|
+
if (chainId === dydxChain.id.toString() &&
|
|
13
|
+
FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO[chainId]
|
|
19
14
|
.checkoutAssetWhitelist?.[0] === tokenAddress.toLowerCase()) {
|
|
20
15
|
return 6;
|
|
21
16
|
}
|
|
22
17
|
// Find ERC-20 tokenAddress
|
|
23
|
-
const chain = await
|
|
24
|
-
const token = new
|
|
18
|
+
const chain = await Chain.getChain({ chainIdentifier: chainId });
|
|
19
|
+
const token = new Token(tokenAddress, chain);
|
|
25
20
|
return Number(await token.getDecimals());
|
|
26
21
|
}
|
|
27
|
-
function generateRandomCheckoutSalt() {
|
|
28
|
-
return BigInt(
|
|
22
|
+
export function generateRandomCheckoutSalt() {
|
|
23
|
+
return BigInt(randomBytes(32));
|
|
29
24
|
}
|
|
30
|
-
function roundToNearestBottomTenth(n) {
|
|
25
|
+
export function roundToNearestBottomTenth(n) {
|
|
31
26
|
return Math.floor(n / 10) * 10;
|
|
32
27
|
}
|
|
33
28
|
//# sourceMappingURL=CheckoutUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckoutUtils.js","sourceRoot":"","sources":["../../../src/utils/CheckoutUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CheckoutUtils.js","sourceRoot":"","sources":["../../../src/utils/CheckoutUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,+CAA+C,EAC/C,oCAAoC,GACrC,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAChC,OAAO,EACP,YAAY,GAIb;IACC,2GAA2G;IAC3G,IAAI,YAAY,KAAK,+CAA+C,EAAE,CAAC;QACrE,2GAA2G;QAC3G,oCAAoC;QACpC,OAAO,oCAAoC,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAA;IAC9E,CAAC;IAED,6CAA6C;IAC7C,IACE,OAAO,KAAK,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE;QACnC,oCAAoC,CAAC,OAAO,CAAC;aAC1C,sBAAsB,EAAE,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,WAAW,EAAE,EAC7D,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,2BAA2B;IAC3B,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,CAAA;IAChE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;IAC5C,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,CAAS;IACjD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;AAChC,CAAC"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const viem_1 = require("viem");
|
|
5
|
-
const common_1 = require("../common");
|
|
6
|
-
async function getOnChainGroupData(groupId, chain, walletAddr) {
|
|
1
|
+
import { concat, decodeAbiParameters, keccak256 } from 'viem';
|
|
2
|
+
import { WALLET_CONTRACT_INTERFACE } from '../common';
|
|
3
|
+
export async function getOnChainGroupData(groupId, chain, walletAddr) {
|
|
7
4
|
const userAuthContractAddr = await chain.getAddress('userAuthAddress');
|
|
8
|
-
const groupKey =
|
|
9
|
-
const storedGroupData = await
|
|
5
|
+
const groupKey = keccak256(concat([groupId, userAuthContractAddr]));
|
|
6
|
+
const storedGroupData = await WALLET_CONTRACT_INTERFACE.readFromChain(walletAddr, 'getState', [groupKey], chain);
|
|
10
7
|
if (storedGroupData === '0x') {
|
|
11
8
|
return {
|
|
12
9
|
memberIds: [],
|
|
@@ -14,7 +11,7 @@ async function getOnChainGroupData(groupId, chain, walletAddr) {
|
|
|
14
11
|
};
|
|
15
12
|
}
|
|
16
13
|
else {
|
|
17
|
-
const [storedGroup] =
|
|
14
|
+
const [storedGroup] = decodeAbiParameters([
|
|
18
15
|
{
|
|
19
16
|
type: 'tuple',
|
|
20
17
|
components: [{ type: 'bytes32[]' }, { type: 'uint256' }],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupUtils.js","sourceRoot":"","sources":["../../../src/utils/GroupUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GroupUtils.js","sourceRoot":"","sources":["../../../src/utils/GroupUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,mBAAmB,EAAO,SAAS,EAAE,MAAM,MAAM,CAAA;AAE3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AAIrD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAY,EACZ,KAAY,EACZ,UAAmB;IAEnB,MAAM,oBAAoB,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACtE,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAA;IACnE,MAAM,eAAe,GAAQ,MAAM,yBAAyB,CAAC,aAAa,CACxE,UAAU,EACV,UAAU,EACV,CAAC,QAAQ,CAAC,EACV,KAAK,CACN,CAAA;IACD,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO;YACL,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,CAAC;SACb,CAAA;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,WAAW,CAAC,GAAG,mBAAmB,CACvC;YACE;gBACE,IAAI,EAAE,OAAO;gBACb,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;aACzD;SACF,EACD,eAAe,CAChB,CAAA;QACD,OAAO;YACL,SAAS,EAAE,WAAW,CAAC,CAAC,CAAU;YAClC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SAClC,CAAA;IACH,CAAC;AACH,CAAC"}
|