@funkit/core 2.0.1 → 2.1.0
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/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 +52 -74
- 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.js +184 -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.d.ts +16 -16
- 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.d.ts +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 +3 -2
|
@@ -1,65 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exports.getUserAuthIdByAddr = getUserAuthIdByAddr;
|
|
8
|
-
exports.addUserToWallet = addUserToWallet;
|
|
9
|
-
exports.getUserWalletIdentities = getUserWalletIdentities;
|
|
10
|
-
const viem_1 = require("viem");
|
|
11
|
-
const constants_1 = require("../common/constants");
|
|
12
|
-
const errors_1 = require("../errors");
|
|
13
|
-
const ApiUtils_1 = require("../utils/ApiUtils");
|
|
14
|
-
async function createUser(authId, addr, method, userUniqueId) {
|
|
15
|
-
await (0, ApiUtils_1.sendPostRequest)(constants_1.API_URL, 'user', {
|
|
1
|
+
import { InvalidParameterError } from 'viem';
|
|
2
|
+
import { API_URL } from '../common/constants';
|
|
3
|
+
import { ResourceNotFoundError } from '../errors';
|
|
4
|
+
import { sendGetRequest, sendPostRequest } from '../utils/ApiUtils';
|
|
5
|
+
export async function createUser(authId, addr, method, userUniqueId) {
|
|
6
|
+
await sendPostRequest(API_URL, 'user', {
|
|
16
7
|
authId,
|
|
17
8
|
addr,
|
|
18
9
|
method,
|
|
19
10
|
userUniqueId,
|
|
20
11
|
});
|
|
21
12
|
}
|
|
22
|
-
async function getUserUniqueId(authId) {
|
|
13
|
+
export async function getUserUniqueId(authId) {
|
|
23
14
|
try {
|
|
24
|
-
return (await
|
|
15
|
+
return (await sendGetRequest(API_URL, `user/auth/${authId}/unique-id`))
|
|
25
16
|
.userUniqueId;
|
|
26
17
|
}
|
|
27
18
|
catch (err) {
|
|
28
|
-
if (err instanceof
|
|
19
|
+
if (err instanceof ResourceNotFoundError) {
|
|
29
20
|
return '';
|
|
30
21
|
}
|
|
31
22
|
throw err;
|
|
32
23
|
}
|
|
33
24
|
}
|
|
34
|
-
async function getUserAddr(authId) {
|
|
35
|
-
return (await
|
|
25
|
+
export async function getUserAddr(authId) {
|
|
26
|
+
return (await sendGetRequest(API_URL, `user/auth/${authId}/addr`)).addr;
|
|
36
27
|
}
|
|
37
|
-
async function getUserWalletsByAddr(addr, chainId) {
|
|
28
|
+
export async function getUserWalletsByAddr(addr, chainId) {
|
|
38
29
|
const endpoint = chainId
|
|
39
30
|
? `user/addr/${addr}/wallets?chainId=${chainId}`
|
|
40
31
|
: `user/addr/${addr}/wallets`;
|
|
41
|
-
return (await
|
|
32
|
+
return (await sendGetRequest(API_URL, endpoint)).wallets;
|
|
42
33
|
}
|
|
43
|
-
async function getUserAuthIdByAddr(addr) {
|
|
44
|
-
return (await
|
|
34
|
+
export async function getUserAuthIdByAddr(addr) {
|
|
35
|
+
return (await sendGetRequest(API_URL, `user/addr/${addr}/authId`)).authId;
|
|
45
36
|
}
|
|
46
|
-
async function addUserToWallet(authId, chainId, walletAddr, userIds, walletUniqueId) {
|
|
37
|
+
export async function addUserToWallet(authId, chainId, walletAddr, userIds, walletUniqueId) {
|
|
47
38
|
try {
|
|
48
|
-
await
|
|
39
|
+
await sendPostRequest(API_URL, `user/auth/${authId}/chain/${chainId}/wallet`, {
|
|
49
40
|
walletAddr,
|
|
50
41
|
userIds,
|
|
51
42
|
walletUniqueId,
|
|
52
43
|
});
|
|
53
44
|
}
|
|
54
45
|
catch (err) {
|
|
55
|
-
if (err instanceof
|
|
46
|
+
if (err instanceof InvalidParameterError) {
|
|
56
47
|
// swallow the error if the wallet already exists.
|
|
57
48
|
return;
|
|
58
49
|
}
|
|
59
50
|
}
|
|
60
51
|
}
|
|
61
52
|
// return userIds of the specificed Wallet.
|
|
62
|
-
async function getUserWalletIdentities(authId, chainId, walletAddr) {
|
|
63
|
-
return ((await
|
|
53
|
+
export async function getUserWalletIdentities(authId, chainId, walletAddr) {
|
|
54
|
+
return ((await sendGetRequest(API_URL, `user/auth/${authId}/chain/${chainId}/wallet/${walletAddr}/identities`)).ids ?? []);
|
|
64
55
|
}
|
|
65
56
|
//# sourceMappingURL=UserApis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserApis.js","sourceRoot":"","sources":["../../../src/apis/UserApis.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UserApis.js","sourceRoot":"","sources":["../../../src/apis/UserApis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,qBAAqB,EAAE,MAAM,MAAM,CAAA;AAE1D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGnE,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAc,EACd,IAAY,EACZ,MAAc,EACd,YAAoB;IAEpB,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE;QACrC,MAAM;QACN,IAAI;QACJ,MAAM;QACN,YAAY;KACb,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc;IAClD,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,aAAa,MAAM,YAAY,CAAC,CAAC;aACpE,YAAY,CAAA;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;YACzC,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAc;IAC9C,OAAO,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,aAAa,MAAM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAY,EACZ,OAAgB;IAEhB,MAAM,QAAQ,GAAG,OAAO;QACtB,CAAC,CAAC,aAAa,IAAI,oBAAoB,OAAO,EAAE;QAChD,CAAC,CAAC,aAAa,IAAI,UAAU,CAAA;IAC/B,OAAO,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAA;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY;IACpD,OAAO,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,aAAa,IAAI,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;AAC3E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,OAAe,EACf,UAAmB,EACnB,OAAc,EACd,cAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,eAAe,CACnB,OAAO,EACP,aAAa,MAAM,UAAU,OAAO,SAAS,EAC7C;YACE,UAAU;YACV,OAAO;YACP,cAAc;SACf,CACF,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;YACzC,kDAAkD;YAClD,OAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,2CAA2C;AAC3C,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAc,EACd,OAAe,EACf,UAAmB;IAEnB,OAAO,CACL,CACE,MAAM,cAAc,CAClB,OAAO,EACP,aAAa,MAAM,UAAU,OAAO,WAAW,UAAU,aAAa,CACvE,CACF,CAAC,GAAG,IAAI,EAAE,CACZ,CAAA;AACH,CAAC"}
|
package/dist/src/apis/index.js
CHANGED
|
@@ -1,25 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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("./ContractApis"), exports);
|
|
18
|
-
__exportStar(require("./GroupApis"), exports);
|
|
19
|
-
__exportStar(require("./InfoApis"), exports);
|
|
20
|
-
__exportStar(require("./NFTApis"), exports);
|
|
21
|
-
__exportStar(require("./OperationApis"), exports);
|
|
22
|
-
__exportStar(require("./PaymasterApis"), exports);
|
|
23
|
-
__exportStar(require("./types"), exports);
|
|
24
|
-
__exportStar(require("./UserApis"), exports);
|
|
1
|
+
export * from './ContractApis';
|
|
2
|
+
export * from './GroupApis';
|
|
3
|
+
export * from './InfoApis';
|
|
4
|
+
export * from './NFTApis';
|
|
5
|
+
export * from './OperationApis';
|
|
6
|
+
export * from './PaymasterApis';
|
|
7
|
+
export * from './types';
|
|
8
|
+
export * from './UserApis';
|
|
25
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/apis/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/apis/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA"}
|
package/dist/src/apis/types.js
CHANGED
package/dist/src/auth/Auth.js
CHANGED
|
@@ -1,43 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.Auth = void 0;
|
|
27
|
-
const viem_1 = require("viem");
|
|
1
|
+
import { createWalletClient, custom, http, isHex, keccak256, pad, toBytes, } from 'viem';
|
|
28
2
|
// @ts-ignore
|
|
29
3
|
// eslint-disable-next-line
|
|
30
|
-
|
|
4
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
31
5
|
// @ts-ignore
|
|
32
6
|
// eslint-disable-next-line
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
7
|
+
import * as viemChains from "viem/chains";
|
|
8
|
+
import { getUserWalletIdentities, getUserWalletsByAddr } from '../apis/UserApis';
|
|
9
|
+
import { VALID_PRIVATE_KEY_LENGTH, } from '../common';
|
|
10
|
+
import { Chain, encodeWalletSignature, } from '../data';
|
|
11
|
+
import { ErrorCode, InvalidParameterError, ResourceNotFoundError, } from '../errors';
|
|
12
|
+
import { getAuthUniqueId, getGasStation } from '../utils';
|
|
13
|
+
import { isBytes32 } from '../utils/TypeUtils';
|
|
14
|
+
import { convertProviderToClient, convertSignerToClient } from '../viem';
|
|
41
15
|
const gasSpecificChain = {
|
|
42
16
|
'137': {
|
|
43
17
|
gasStationUrl: 'https://gasstation.polygon.technology/v2',
|
|
@@ -46,11 +20,12 @@ const gasSpecificChain = {
|
|
|
46
20
|
},
|
|
47
21
|
};
|
|
48
22
|
const preProcessesChains = {};
|
|
49
|
-
for (const key in
|
|
50
|
-
const chain =
|
|
23
|
+
for (const key in viemChains) {
|
|
24
|
+
const chain = viemChains[key];
|
|
51
25
|
preProcessesChains[chain.id] = key;
|
|
52
26
|
}
|
|
53
27
|
preProcessesChains['36865'] = 'funtestnet';
|
|
28
|
+
const chains = { ...viemChains };
|
|
54
29
|
chains['funtestnet'] = {
|
|
55
30
|
id: 36865,
|
|
56
31
|
name: 'Fun Testnet',
|
|
@@ -58,9 +33,13 @@ chains['funtestnet'] = {
|
|
|
58
33
|
nativeCurrency: { name: 'ethereum', symbol: 'ETH', decimals: 18 },
|
|
59
34
|
rpcUrls: { default: { http: [Array] }, public: { http: [Array] } },
|
|
60
35
|
};
|
|
61
|
-
class Auth {
|
|
36
|
+
export class Auth {
|
|
37
|
+
authId;
|
|
38
|
+
signer;
|
|
39
|
+
client;
|
|
40
|
+
inited = false;
|
|
41
|
+
account;
|
|
62
42
|
constructor(authInput) {
|
|
63
|
-
this.inited = false;
|
|
64
43
|
if (authInput.web2AuthId) {
|
|
65
44
|
this.authId = authInput.web2AuthId;
|
|
66
45
|
}
|
|
@@ -68,37 +47,37 @@ class Auth {
|
|
|
68
47
|
this.client = authInput.client;
|
|
69
48
|
}
|
|
70
49
|
else if (authInput.windowEth) {
|
|
71
|
-
this.client =
|
|
72
|
-
transport:
|
|
50
|
+
this.client = createWalletClient({
|
|
51
|
+
transport: custom(authInput.windowEth),
|
|
73
52
|
});
|
|
74
53
|
}
|
|
75
54
|
else if (authInput.rpc) {
|
|
76
|
-
this.client =
|
|
77
|
-
transport:
|
|
55
|
+
this.client = createWalletClient({
|
|
56
|
+
transport: http(authInput.rpc),
|
|
78
57
|
});
|
|
79
58
|
}
|
|
80
59
|
else if (authInput.provider) {
|
|
81
|
-
this.client =
|
|
60
|
+
this.client = convertProviderToClient({ provider: authInput.provider });
|
|
82
61
|
}
|
|
83
62
|
else if (authInput.signer) {
|
|
84
|
-
this.client =
|
|
63
|
+
this.client = convertSignerToClient({ signer: authInput.signer });
|
|
85
64
|
}
|
|
86
65
|
else if (authInput.privateKey) {
|
|
87
66
|
let privateKey;
|
|
88
|
-
if (
|
|
67
|
+
if (isBytes32(authInput.privateKey)) {
|
|
89
68
|
privateKey = authInput.privateKey;
|
|
90
69
|
}
|
|
91
|
-
else if (!
|
|
92
|
-
authInput.privateKey.length ===
|
|
70
|
+
else if (!isHex(authInput.privateKey) &&
|
|
71
|
+
authInput.privateKey.length === VALID_PRIVATE_KEY_LENGTH) {
|
|
93
72
|
privateKey = `0x${authInput.privateKey}`;
|
|
94
73
|
}
|
|
95
74
|
else {
|
|
96
|
-
throw new
|
|
75
|
+
throw new InvalidParameterError(ErrorCode.InvalidParameter, 'privateKey is not a valid one', authInput.privateKey, 'Provide valid privateKey string', 'https://docs.fun.xyz/how-to-guides/configure-account');
|
|
97
76
|
}
|
|
98
|
-
this.signer =
|
|
77
|
+
this.signer = privateKeyToAccount(privateKey);
|
|
99
78
|
}
|
|
100
79
|
else {
|
|
101
|
-
throw new
|
|
80
|
+
throw new InvalidParameterError(ErrorCode.MissingParameter, 'valid authInput is required', authInput, 'Provide viem client, privateKey, window eth (check viem.sh), rpc signer, provider, or signer when constructing Auth', 'https://docs.fun.xyz/how-to-guides/configure-account');
|
|
102
81
|
}
|
|
103
82
|
}
|
|
104
83
|
async init() {
|
|
@@ -111,7 +90,7 @@ class Auth {
|
|
|
111
90
|
else if (this.signer) {
|
|
112
91
|
this.account = this.signer.address;
|
|
113
92
|
}
|
|
114
|
-
this.authId
|
|
93
|
+
this.authId ??= this.account;
|
|
115
94
|
this.inited = true;
|
|
116
95
|
}
|
|
117
96
|
/**
|
|
@@ -125,13 +104,13 @@ class Auth {
|
|
|
125
104
|
let signature;
|
|
126
105
|
if (this.signer?.type === 'local') {
|
|
127
106
|
signature = await this.signer.signMessage({
|
|
128
|
-
message: { raw:
|
|
107
|
+
message: { raw: toBytes(hash) },
|
|
129
108
|
});
|
|
130
109
|
}
|
|
131
110
|
else if (this.client && this.account) {
|
|
132
111
|
signature = await this.client.signMessage({
|
|
133
112
|
account: this.account,
|
|
134
|
-
message: { raw:
|
|
113
|
+
message: { raw: toBytes(hash) },
|
|
135
114
|
});
|
|
136
115
|
}
|
|
137
116
|
else {
|
|
@@ -145,7 +124,7 @@ class Auth {
|
|
|
145
124
|
userId: await this.getUserId(),
|
|
146
125
|
signature,
|
|
147
126
|
};
|
|
148
|
-
return
|
|
127
|
+
return encodeWalletSignature(walletSignature);
|
|
149
128
|
}
|
|
150
129
|
}
|
|
151
130
|
/**
|
|
@@ -176,7 +155,7 @@ class Auth {
|
|
|
176
155
|
* @returns {Promise<Hex>} The padded user ID.
|
|
177
156
|
*/
|
|
178
157
|
async getUserId() {
|
|
179
|
-
return
|
|
158
|
+
return pad(await this.getAddress(), { size: 32 }).toLowerCase();
|
|
180
159
|
}
|
|
181
160
|
/**
|
|
182
161
|
* Generates an estimate gas signature for an operation using the provided user ID.
|
|
@@ -189,10 +168,10 @@ class Auth {
|
|
|
189
168
|
async getEstimateGasSignature(userId, _) {
|
|
190
169
|
await this.init();
|
|
191
170
|
const walletSignature = {
|
|
192
|
-
userId:
|
|
193
|
-
signature:
|
|
171
|
+
userId: pad(userId, { size: 32 }),
|
|
172
|
+
signature: pad('0x', { size: 65 }),
|
|
194
173
|
};
|
|
195
|
-
return
|
|
174
|
+
return encodeWalletSignature(walletSignature);
|
|
196
175
|
}
|
|
197
176
|
/**
|
|
198
177
|
* Retrieves a unique ID for the wallet based on an index and optional skipDBActions flag.
|
|
@@ -202,8 +181,8 @@ class Auth {
|
|
|
202
181
|
*/
|
|
203
182
|
async getWalletUniqueId(index = 0, skipDBActions = false) {
|
|
204
183
|
await this.init();
|
|
205
|
-
const authUniqueId = await
|
|
206
|
-
return
|
|
184
|
+
const authUniqueId = await getAuthUniqueId(this.authId, await this.getAddress(), skipDBActions);
|
|
185
|
+
return keccak256(toBytes(`${authUniqueId}-${index}`));
|
|
207
186
|
}
|
|
208
187
|
/**
|
|
209
188
|
* Sends a transaction with the provided transaction data and options.
|
|
@@ -213,30 +192,30 @@ class Auth {
|
|
|
213
192
|
*/
|
|
214
193
|
async sendTx(txData, options = globalThis.globalEnvOption) {
|
|
215
194
|
await this.init();
|
|
216
|
-
const chain = await
|
|
195
|
+
const chain = await Chain.getChain({ chainIdentifier: options.chain });
|
|
217
196
|
const chainId = await chain.getChainId();
|
|
218
197
|
const { to, data } = txData;
|
|
219
198
|
let { value } = txData;
|
|
220
199
|
if (!chain || !chainId) {
|
|
221
|
-
throw new
|
|
200
|
+
throw new InvalidParameterError(ErrorCode.MissingParameter, 'chain object is missing or incorrect', { options, chainId }, 'Provide proper chain information from options field', 'https://docs.fun.xyz');
|
|
222
201
|
}
|
|
223
202
|
const client = await chain.getClient();
|
|
224
203
|
let tx;
|
|
225
|
-
value
|
|
204
|
+
value ??= 0n;
|
|
226
205
|
let txClient;
|
|
227
206
|
if (this.client)
|
|
228
207
|
txClient = this.client;
|
|
229
208
|
else {
|
|
230
|
-
txClient =
|
|
209
|
+
txClient = createWalletClient({
|
|
231
210
|
account: this.signer,
|
|
232
|
-
transport:
|
|
211
|
+
transport: http(client.transport.url),
|
|
233
212
|
chain: chains[preProcessesChains[await chain.getChainId()]],
|
|
234
213
|
});
|
|
235
214
|
}
|
|
236
215
|
let maxPriorityFee, maxFee;
|
|
237
216
|
if (gasSpecificChain[chainId]) {
|
|
238
217
|
try {
|
|
239
|
-
const { standard: { maxPriorityFee: maxPriorityFee1, maxFee: maxFee1 }, } = await
|
|
218
|
+
const { standard: { maxPriorityFee: maxPriorityFee1, maxFee: maxFee1 }, } = await getGasStation(gasSpecificChain[chainId].gasStationUrl);
|
|
240
219
|
maxPriorityFee = maxPriorityFee1;
|
|
241
220
|
maxFee = maxFee1;
|
|
242
221
|
}
|
|
@@ -265,7 +244,7 @@ class Auth {
|
|
|
265
244
|
if (chainId !== '1' && chainId !== '5') {
|
|
266
245
|
receipt = await client.waitForTransactionReceipt({
|
|
267
246
|
hash,
|
|
268
|
-
timeout:
|
|
247
|
+
timeout: 30_000,
|
|
269
248
|
});
|
|
270
249
|
}
|
|
271
250
|
else {
|
|
@@ -276,7 +255,7 @@ class Auth {
|
|
|
276
255
|
try {
|
|
277
256
|
receipt = await client.waitForTransactionReceipt({
|
|
278
257
|
hash,
|
|
279
|
-
timeout:
|
|
258
|
+
timeout: 30_000,
|
|
280
259
|
});
|
|
281
260
|
break;
|
|
282
261
|
}
|
|
@@ -313,7 +292,7 @@ class Auth {
|
|
|
313
292
|
*/
|
|
314
293
|
async getUserIds(wallet, chainId) {
|
|
315
294
|
await this.init();
|
|
316
|
-
return await
|
|
295
|
+
return await getUserWalletIdentities(this.authId, chainId, wallet);
|
|
317
296
|
}
|
|
318
297
|
/**
|
|
319
298
|
* Retrieves the wallets associated with the current auth object.
|
|
@@ -323,15 +302,14 @@ class Auth {
|
|
|
323
302
|
async getWallets(chainId) {
|
|
324
303
|
await this.init();
|
|
325
304
|
try {
|
|
326
|
-
return await
|
|
305
|
+
return await getUserWalletsByAddr(await this.getAddress(), chainId);
|
|
327
306
|
}
|
|
328
307
|
catch (err) {
|
|
329
|
-
if (err instanceof
|
|
308
|
+
if (err instanceof ResourceNotFoundError) {
|
|
330
309
|
return [];
|
|
331
310
|
}
|
|
332
311
|
throw err;
|
|
333
312
|
}
|
|
334
313
|
}
|
|
335
314
|
}
|
|
336
|
-
exports.Auth = Auth;
|
|
337
315
|
//# sourceMappingURL=Auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Auth.js","sourceRoot":"","sources":["../../../src/auth/Auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Auth.js","sourceRoot":"","sources":["../../../src/auth/Auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const data_1 = require("../data");
|
|
7
|
-
const ViemUtils_1 = require("../utils/ViemUtils");
|
|
8
|
-
const Auth_1 = require("./Auth");
|
|
1
|
+
import { decodeAbiParameters, pad, toBytes } from 'viem';
|
|
2
|
+
import { ETH_TRANSFER_SELECTOR, WALLET_ABI } from '../common';
|
|
3
|
+
import { encodeWalletSignature, } from '../data';
|
|
4
|
+
import { getSigHash } from '../utils/ViemUtils';
|
|
5
|
+
import { Auth } from './Auth';
|
|
9
6
|
const SELECTOR_LENGTH = 10;
|
|
10
|
-
class SessionKeyAuth extends
|
|
7
|
+
export class SessionKeyAuth extends Auth {
|
|
8
|
+
ruleId;
|
|
9
|
+
roleId;
|
|
10
|
+
targetSelectorMerkleTree;
|
|
11
|
+
feeRecipientMerkleTree;
|
|
11
12
|
constructor(authInput, ruleId, roleId, targetSelectorMerkleTree, feeRecipientMerkleTree) {
|
|
12
13
|
super(authInput);
|
|
13
14
|
this.ruleId = ruleId;
|
|
@@ -24,20 +25,20 @@ class SessionKeyAuth extends Auth_1.Auth {
|
|
|
24
25
|
let signature;
|
|
25
26
|
if (this.signer?.type === 'local') {
|
|
26
27
|
signature = await this.signer.signMessage({
|
|
27
|
-
message: { raw:
|
|
28
|
+
message: { raw: toBytes(opHash) },
|
|
28
29
|
});
|
|
29
30
|
}
|
|
30
31
|
else if (this.client && this.account) {
|
|
31
32
|
signature = await this.client.signMessage({
|
|
32
33
|
account: this.account,
|
|
33
|
-
message: { raw:
|
|
34
|
+
message: { raw: toBytes(opHash) },
|
|
34
35
|
});
|
|
35
36
|
}
|
|
36
37
|
else {
|
|
37
38
|
throw new Error('No signer or client');
|
|
38
39
|
}
|
|
39
|
-
const target =
|
|
40
|
-
const selector =
|
|
40
|
+
const target = getTargetFromCall(operation.userOp.callData);
|
|
41
|
+
const selector = getSelectorFromCall(operation.userOp.callData);
|
|
41
42
|
const walletSignature = {
|
|
42
43
|
userId: await this.getUserId(),
|
|
43
44
|
signature,
|
|
@@ -48,19 +49,19 @@ class SessionKeyAuth extends Auth_1.Auth {
|
|
|
48
49
|
selectorPath: this.targetSelectorMerkleTree.getPathForItem(selector),
|
|
49
50
|
},
|
|
50
51
|
};
|
|
51
|
-
return
|
|
52
|
+
return encodeWalletSignature(walletSignature);
|
|
52
53
|
}
|
|
53
54
|
async getEstimateGasSignature(userId, operation) {
|
|
54
55
|
if (!this.targetSelectorMerkleTree) {
|
|
55
56
|
throw new Error('SessionKeyAuth not connected to wallet');
|
|
56
57
|
}
|
|
57
58
|
await this.init();
|
|
58
|
-
const target =
|
|
59
|
-
const selector =
|
|
59
|
+
const target = getTargetFromCall(operation.userOp.callData);
|
|
60
|
+
const selector = getSelectorFromCall(operation.userOp.callData);
|
|
60
61
|
try {
|
|
61
62
|
const walletSignature = {
|
|
62
|
-
userId:
|
|
63
|
-
signature:
|
|
63
|
+
userId: pad(userId, { size: 32 }),
|
|
64
|
+
signature: pad('0x', { size: 65 }),
|
|
64
65
|
roleId: this.roleId,
|
|
65
66
|
ruleId: this.ruleId,
|
|
66
67
|
extraData: {
|
|
@@ -68,26 +69,23 @@ class SessionKeyAuth extends Auth_1.Auth {
|
|
|
68
69
|
selectorPath: this.targetSelectorMerkleTree.getPathForItem(selector),
|
|
69
70
|
},
|
|
70
71
|
};
|
|
71
|
-
return
|
|
72
|
+
return encodeWalletSignature(walletSignature);
|
|
72
73
|
}
|
|
73
74
|
catch {
|
|
74
75
|
throw new Error('Function or target is not allowed in session key');
|
|
75
76
|
}
|
|
76
77
|
}
|
|
77
78
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return (0, exports.decodeCalldata)(callData).target;
|
|
79
|
+
export const getTargetFromCall = (callData) => {
|
|
80
|
+
return decodeCalldata(callData).target;
|
|
81
81
|
};
|
|
82
|
-
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
return out === '0x' ? common_1.ETH_TRANSFER_SELECTOR : out;
|
|
82
|
+
export const getSelectorFromCall = (callData) => {
|
|
83
|
+
const out = decodeCalldata(callData).calldata.slice(0, SELECTOR_LENGTH);
|
|
84
|
+
return out === '0x' ? ETH_TRANSFER_SELECTOR : out;
|
|
86
85
|
};
|
|
87
|
-
|
|
88
|
-
const
|
|
89
|
-
const
|
|
90
|
-
const execFromEntryPointSelector = (0, ViemUtils_1.getSigHash)(common_1.WALLET_ABI, 'execFromEntryPoint');
|
|
86
|
+
export const decodeCalldata = (callData) => {
|
|
87
|
+
const execFromEntryPointFeeSelector = getSigHash(WALLET_ABI, 'execFromEntryPointWithFee');
|
|
88
|
+
const execFromEntryPointSelector = getSigHash(WALLET_ABI, 'execFromEntryPoint');
|
|
91
89
|
if (callData.includes(execFromEntryPointFeeSelector)) {
|
|
92
90
|
return _decodeExecWithFee(callData);
|
|
93
91
|
}
|
|
@@ -96,10 +94,9 @@ const decodeCalldata = (callData) => {
|
|
|
96
94
|
}
|
|
97
95
|
throw new Error('invalid call data. must be execFromEntryPoint or execFromEntryPointWithFee');
|
|
98
96
|
};
|
|
99
|
-
exports.decodeCalldata = decodeCalldata;
|
|
100
97
|
const _decodeExecWithFee = (callData) => {
|
|
101
98
|
const walletcalldata = ('0x' + callData.slice(SELECTOR_LENGTH));
|
|
102
|
-
const [target, value, calldata] =
|
|
99
|
+
const [target, value, calldata] = decodeAbiParameters([{ type: 'address' }, { type: 'uint256' }, { type: 'bytes' }], walletcalldata);
|
|
103
100
|
return {
|
|
104
101
|
target: target,
|
|
105
102
|
value: value,
|
|
@@ -108,7 +105,7 @@ const _decodeExecWithFee = (callData) => {
|
|
|
108
105
|
};
|
|
109
106
|
const _decodeExec = (callData) => {
|
|
110
107
|
const walletcalldata = ('0x' + callData.slice(SELECTOR_LENGTH));
|
|
111
|
-
const [target, value, calldata] =
|
|
108
|
+
const [target, value, calldata] = decodeAbiParameters([{ type: 'address' }, { type: 'uint256' }, { type: 'bytes' }], walletcalldata);
|
|
112
109
|
return {
|
|
113
110
|
target: target,
|
|
114
111
|
value: value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionKeyAuth.js","sourceRoot":"","sources":["../../../src/auth/SessionKeyAuth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SessionKeyAuth.js","sourceRoot":"","sources":["../../../src/auth/SessionKeyAuth.ts"],"names":[],"mappings":"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"}
|