@thalalabs/surf 0.0.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/LICENSE +21 -0
- package/README.md +196 -0
- package/build/cjs/core/Client.js +80 -0
- package/build/cjs/core/Client.js.map +1 -0
- package/build/cjs/core/WalletClient.js +52 -0
- package/build/cjs/core/WalletClient.js.map +1 -0
- package/build/cjs/core/createEntryPayload.js +91 -0
- package/build/cjs/core/createEntryPayload.js.map +1 -0
- package/build/cjs/core/createViewPayload.js +78 -0
- package/build/cjs/core/createViewPayload.js.map +1 -0
- package/build/cjs/core/index.js +13 -0
- package/build/cjs/core/index.js.map +1 -0
- package/build/cjs/ensureTypes.js +40 -0
- package/build/cjs/ensureTypes.js.map +1 -0
- package/build/cjs/hooks/index.js +8 -0
- package/build/cjs/hooks/index.js.map +1 -0
- package/build/cjs/hooks/useSubmitTransaction.js +88 -0
- package/build/cjs/hooks/useSubmitTransaction.js.map +1 -0
- package/build/cjs/hooks/useWalletClient.js +14 -0
- package/build/cjs/hooks/useWalletClient.js.map +1 -0
- package/build/cjs/index.js +8 -0
- package/build/cjs/index.js.map +1 -0
- package/build/cjs/package.json +1 -0
- package/build/cjs/types/abi.js +3 -0
- package/build/cjs/types/abi.js.map +1 -0
- package/build/cjs/types/abiClient.js +3 -0
- package/build/cjs/types/abiClient.js.map +1 -0
- package/build/cjs/types/client.js +3 -0
- package/build/cjs/types/client.js.map +1 -0
- package/build/cjs/types/common.js +3 -0
- package/build/cjs/types/common.js.map +1 -0
- package/build/cjs/types/index.js +3 -0
- package/build/cjs/types/index.js.map +1 -0
- package/build/cjs/types/walletClient.js +3 -0
- package/build/cjs/types/walletClient.js.map +1 -0
- package/build/esm/core/Client.js +75 -0
- package/build/esm/core/Client.js.map +1 -0
- package/build/esm/core/WalletClient.js +48 -0
- package/build/esm/core/WalletClient.js.map +1 -0
- package/build/esm/core/createEntryPayload.js +87 -0
- package/build/esm/core/createEntryPayload.js.map +1 -0
- package/build/esm/core/createViewPayload.js +74 -0
- package/build/esm/core/createViewPayload.js.map +1 -0
- package/build/esm/core/index.js +5 -0
- package/build/esm/core/index.js.map +1 -0
- package/build/esm/ensureTypes.js +34 -0
- package/build/esm/ensureTypes.js.map +1 -0
- package/build/esm/hooks/index.js +3 -0
- package/build/esm/hooks/index.js.map +1 -0
- package/build/esm/hooks/useSubmitTransaction.js +84 -0
- package/build/esm/hooks/useSubmitTransaction.js.map +1 -0
- package/build/esm/hooks/useWalletClient.js +10 -0
- package/build/esm/hooks/useWalletClient.js.map +1 -0
- package/build/esm/index.js +2 -0
- package/build/esm/index.js.map +1 -0
- package/build/esm/package.json +1 -0
- package/build/esm/types/abi.js +2 -0
- package/build/esm/types/abi.js.map +1 -0
- package/build/esm/types/abiClient.js +2 -0
- package/build/esm/types/abiClient.js.map +1 -0
- package/build/esm/types/client.js +2 -0
- package/build/esm/types/client.js.map +1 -0
- package/build/esm/types/common.js +2 -0
- package/build/esm/types/common.js.map +1 -0
- package/build/esm/types/index.js +2 -0
- package/build/esm/types/index.js.map +1 -0
- package/build/esm/types/walletClient.js +2 -0
- package/build/esm/types/walletClient.js.map +1 -0
- package/build/types/core/Client.d.ts +20 -0
- package/build/types/core/Client.d.ts.map +1 -0
- package/build/types/core/WalletClient.d.ts +17 -0
- package/build/types/core/WalletClient.d.ts.map +1 -0
- package/build/types/core/createEntryPayload.d.ts +4 -0
- package/build/types/core/createEntryPayload.d.ts.map +1 -0
- package/build/types/core/createViewPayload.d.ts +4 -0
- package/build/types/core/createViewPayload.d.ts.map +1 -0
- package/build/types/core/index.d.ts +5 -0
- package/build/types/core/index.d.ts.map +1 -0
- package/build/types/ensureTypes.d.ts +4 -0
- package/build/types/ensureTypes.d.ts.map +1 -0
- package/build/types/hooks/index.d.ts +3 -0
- package/build/types/hooks/index.d.ts.map +1 -0
- package/build/types/hooks/useSubmitTransaction.d.ts +19 -0
- package/build/types/hooks/useSubmitTransaction.d.ts.map +1 -0
- package/build/types/hooks/useWalletClient.d.ts +8 -0
- package/build/types/hooks/useWalletClient.d.ts.map +1 -0
- package/build/types/index.d.ts +3 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/types/abi.d.ts +31 -0
- package/build/types/types/abi.d.ts.map +1 -0
- package/build/types/types/abiClient.d.ts +18 -0
- package/build/types/types/abiClient.d.ts.map +1 -0
- package/build/types/types/client.d.ts +24 -0
- package/build/types/types/client.d.ts.map +1 -0
- package/build/types/types/common.d.ts +60 -0
- package/build/types/types/common.d.ts.map +1 -0
- package/build/types/types/index.d.ts +5 -0
- package/build/types/types/index.d.ts.map +1 -0
- package/build/types/types/walletClient.d.ts +9 -0
- package/build/types/types/walletClient.d.ts.map +1 -0
- package/package.json +78 -0
- package/src/core/Client.ts +120 -0
- package/src/core/WalletClient.ts +64 -0
- package/src/core/__tests__/createEntryPayload.test.ts +262 -0
- package/src/core/__tests__/createViewPayload.test.ts +297 -0
- package/src/core/__tests__/submitTransaction.test.ts +112 -0
- package/src/core/__tests__/useABI.test.ts +139 -0
- package/src/core/__tests__/view.test.ts +145 -0
- package/src/core/createEntryPayload.ts +128 -0
- package/src/core/createViewPayload.ts +100 -0
- package/src/core/index.ts +4 -0
- package/src/ensureTypes.ts +42 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useSubmitTransaction.ts +117 -0
- package/src/hooks/useWalletClient.ts +10 -0
- package/src/index.ts +10 -0
- package/src/types/abi.ts +35 -0
- package/src/types/abiClient.ts +19 -0
- package/src/types/client.ts +32 -0
- package/src/types/common.ts +157 -0
- package/src/types/index.ts +9 -0
- package/src/types/walletClient.ts +10 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useSubmitTransaction = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const wallet_adapter_react_1 = require("@aptos-labs/wallet-adapter-react");
|
|
6
|
+
const aptos_1 = require("aptos");
|
|
7
|
+
function isRawPayload(payload) {
|
|
8
|
+
return payload.rawPayload !== undefined;
|
|
9
|
+
}
|
|
10
|
+
const useSubmitTransaction = () => {
|
|
11
|
+
const { signAndSubmitTransaction } = (0, wallet_adapter_react_1.useWallet)();
|
|
12
|
+
const [isIdle, setIsIdle] = (0, react_1.useState)(true);
|
|
13
|
+
const [isLoading, setIsLoading] = (0, react_1.useState)(false);
|
|
14
|
+
const [data, setResult] = (0, react_1.useState)();
|
|
15
|
+
const [error, setError] = (0, react_1.useState)();
|
|
16
|
+
const idRef = (0, react_1.useRef)(0);
|
|
17
|
+
function reset() {
|
|
18
|
+
setIsIdle(true);
|
|
19
|
+
setIsLoading(false);
|
|
20
|
+
setResult(undefined);
|
|
21
|
+
setError(undefined);
|
|
22
|
+
idRef.current = idRef.current + 1;
|
|
23
|
+
}
|
|
24
|
+
async function submitTransaction(payload, { nodeUrl, onSuccess, onFailed, max_gas_amount }) {
|
|
25
|
+
if (signAndSubmitTransaction === undefined) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const id = idRef.current;
|
|
29
|
+
if (!isIdle) {
|
|
30
|
+
throw new Error("Transaction is already in progress");
|
|
31
|
+
}
|
|
32
|
+
setIsLoading(true);
|
|
33
|
+
setIsIdle(false);
|
|
34
|
+
const request = isRawPayload(payload) ? payload.rawPayload : payload;
|
|
35
|
+
try {
|
|
36
|
+
const { hash } = await signAndSubmitTransaction({
|
|
37
|
+
type: "entry_function_payload",
|
|
38
|
+
...request,
|
|
39
|
+
arguments: request.arguments.map((arg) => {
|
|
40
|
+
if (Array.isArray(arg)) {
|
|
41
|
+
return arg.map((item) => item.toString());
|
|
42
|
+
}
|
|
43
|
+
else if (typeof arg === "object") {
|
|
44
|
+
throw new Error(`a value of struct type: ${arg} is not supported`);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return arg.toString();
|
|
48
|
+
}
|
|
49
|
+
}),
|
|
50
|
+
}, { max_gas_amount });
|
|
51
|
+
const client = new aptos_1.AptosClient(nodeUrl);
|
|
52
|
+
const result = (await client.waitForTransactionWithResult(hash, {
|
|
53
|
+
checkSuccess: true,
|
|
54
|
+
}));
|
|
55
|
+
if (id === idRef.current) {
|
|
56
|
+
try {
|
|
57
|
+
onSuccess?.(result);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
console.error(e);
|
|
61
|
+
}
|
|
62
|
+
setResult(result);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
if (id === idRef.current) {
|
|
67
|
+
const error = e instanceof Error ? e :
|
|
68
|
+
e ? new Error(String(e)) :
|
|
69
|
+
new Error("unknown error");
|
|
70
|
+
try {
|
|
71
|
+
onFailed?.(error);
|
|
72
|
+
}
|
|
73
|
+
catch (e2) {
|
|
74
|
+
console.error(e2);
|
|
75
|
+
}
|
|
76
|
+
setError(error);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
if (id === idRef.current) {
|
|
81
|
+
setIsLoading(false);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return { submitTransaction, reset, isLoading, isIdle, data, error };
|
|
86
|
+
};
|
|
87
|
+
exports.useSubmitTransaction = useSubmitTransaction;
|
|
88
|
+
//# sourceMappingURL=useSubmitTransaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSubmitTransaction.js","sourceRoot":"","sources":["../../../src/hooks/useSubmitTransaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useWalletClient = void 0;
|
|
4
|
+
const wallet_adapter_react_1 = require("@aptos-labs/wallet-adapter-react");
|
|
5
|
+
const core_1 = require("../core");
|
|
6
|
+
const useWalletClient = ({ nodeUrl }) => {
|
|
7
|
+
const wallet = (0, wallet_adapter_react_1.useWallet)();
|
|
8
|
+
return {
|
|
9
|
+
connected: wallet.connected,
|
|
10
|
+
client: wallet.connected ? new core_1.MoveTsWalletClient({ wallet, nodeUrl }) : undefined
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
exports.useWalletClient = useWalletClient;
|
|
14
|
+
//# sourceMappingURL=useWalletClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWalletClient.js","sourceRoot":"","sources":["../../../src/hooks/useWalletClient.ts"],"names":[],"mappings":";;;AAAA,2EAA6D;AAC7D,kCAA6C;AAEtC,MAAM,eAAe,GAAG,CAAC,EAAE,OAAO,EAAuB,EAAE,EAAE;IAChE,MAAM,MAAM,GAAG,IAAA,gCAAS,GAAE,CAAC;IAC3B,OAAO;QACH,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,yBAAkB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;KACrF,CAAC;AACN,CAAC,CAAA;AANY,QAAA,eAAe,mBAM3B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createClient = exports.createEntryPayload = exports.createViewPayload = void 0;
|
|
4
|
+
var core_1 = require("./core");
|
|
5
|
+
Object.defineProperty(exports, "createViewPayload", { enumerable: true, get: function () { return core_1.createViewPayload; } });
|
|
6
|
+
Object.defineProperty(exports, "createEntryPayload", { enumerable: true, get: function () { return core_1.createEntryPayload; } });
|
|
7
|
+
Object.defineProperty(exports, "createClient", { enumerable: true, get: function () { return core_1.createClient; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,+BAIgB;AAHZ,yGAAA,iBAAiB,OAAA;AACjB,0GAAA,kBAAkB,OAAA;AAClB,oGAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abi.js","sourceRoot":"","sources":["../../../src/types/abi.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abiClient.js","sourceRoot":"","sources":["../../../src/types/abiClient.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/types/client.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/types/common.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walletClient.js","sourceRoot":"","sources":["../../../src/types/walletClient.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { AptosClient, TxnBuilderTypes } from "aptos";
|
|
2
|
+
import { createViewPayload } from "./createViewPayload";
|
|
3
|
+
import { createEntryPayload } from "./createEntryPayload";
|
|
4
|
+
export function createClient(options) {
|
|
5
|
+
return new Client(new AptosClient(options.nodeUrl));
|
|
6
|
+
}
|
|
7
|
+
export class Client {
|
|
8
|
+
client;
|
|
9
|
+
constructor(client) {
|
|
10
|
+
this.client = client;
|
|
11
|
+
}
|
|
12
|
+
async view(payload, options) {
|
|
13
|
+
const result = await this.client.view(payload.viewRequest, options?.ledger_version);
|
|
14
|
+
return result.map((value, i) => payload.decoders[i] ?
|
|
15
|
+
payload.decoders[i](value) :
|
|
16
|
+
value);
|
|
17
|
+
}
|
|
18
|
+
async submitTransaction(payload, options) {
|
|
19
|
+
const rawTxn = await this.generateRawTxn(payload, options);
|
|
20
|
+
const bcsTxn = AptosClient.generateBCSTransaction(options.account, rawTxn);
|
|
21
|
+
const transactionRes = await this.client.submitSignedBCSTransaction(bcsTxn);
|
|
22
|
+
await this.client.waitForTransaction(transactionRes.hash, {
|
|
23
|
+
timeoutSecs: 120,
|
|
24
|
+
checkSuccess: true,
|
|
25
|
+
});
|
|
26
|
+
return transactionRes;
|
|
27
|
+
}
|
|
28
|
+
async simulateTransaction(payload, options) {
|
|
29
|
+
const rawTxn = await this.generateRawTxn(payload, options);
|
|
30
|
+
const transactionRes = (await this.client.simulateTransaction(options.account, rawTxn))[0];
|
|
31
|
+
if (!transactionRes) {
|
|
32
|
+
throw new Error("Failed to simulate transaction");
|
|
33
|
+
}
|
|
34
|
+
return transactionRes;
|
|
35
|
+
}
|
|
36
|
+
useABI(abi) {
|
|
37
|
+
return {
|
|
38
|
+
view: new Proxy({}, {
|
|
39
|
+
get: (_, prop) => {
|
|
40
|
+
const functionName = prop.toString();
|
|
41
|
+
return (...args) => {
|
|
42
|
+
const payload = createViewPayload(abi, {
|
|
43
|
+
function: functionName,
|
|
44
|
+
type_arguments: args[0].type_arguments,
|
|
45
|
+
arguments: args[0].arguments,
|
|
46
|
+
});
|
|
47
|
+
return this.view(payload);
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}),
|
|
51
|
+
entry: new Proxy({}, {
|
|
52
|
+
get: (_, prop) => {
|
|
53
|
+
const functionName = prop.toString();
|
|
54
|
+
return (...args) => {
|
|
55
|
+
const payload = createEntryPayload(abi, {
|
|
56
|
+
function: functionName,
|
|
57
|
+
type_arguments: args[0].type_arguments,
|
|
58
|
+
arguments: args[0].arguments,
|
|
59
|
+
});
|
|
60
|
+
return args[0].isSimulation ?
|
|
61
|
+
this.simulateTransaction(payload, { account: args[0].account }) :
|
|
62
|
+
this.submitTransaction(payload, { account: args[0].account });
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
})
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
async generateRawTxn(payload, options) {
|
|
69
|
+
const { account } = options;
|
|
70
|
+
const entryFunctionPayload = new TxnBuilderTypes.TransactionPayloadEntryFunction(payload.entryRequest);
|
|
71
|
+
const rawTxn = await this.client.generateRawTransaction(account.address(), entryFunctionPayload);
|
|
72
|
+
return rawTxn;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=Client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../src/core/Client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { AptosClient } from "aptos";
|
|
2
|
+
import { createEntryPayload } from "./createEntryPayload";
|
|
3
|
+
export class WalletClient {
|
|
4
|
+
wallet;
|
|
5
|
+
client;
|
|
6
|
+
constructor({ wallet, nodeUrl }) {
|
|
7
|
+
this.wallet = wallet;
|
|
8
|
+
this.client = new AptosClient(nodeUrl);
|
|
9
|
+
}
|
|
10
|
+
async submitTransaction(payload, _ = undefined) {
|
|
11
|
+
const request = payload.rawPayload;
|
|
12
|
+
const { hash } = await this.wallet.signAndSubmitTransaction({
|
|
13
|
+
type: "entry_function_payload",
|
|
14
|
+
...request,
|
|
15
|
+
arguments: request.arguments.map((arg) => {
|
|
16
|
+
if (Array.isArray(arg)) {
|
|
17
|
+
return arg.map((item) => item.toString());
|
|
18
|
+
}
|
|
19
|
+
else if (typeof arg === "object") {
|
|
20
|
+
throw new Error(`a value of struct type: ${arg} is not supported`);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
return arg.toString();
|
|
24
|
+
}
|
|
25
|
+
}),
|
|
26
|
+
});
|
|
27
|
+
const result = (await this.client.waitForTransactionWithResult(hash, {
|
|
28
|
+
checkSuccess: true,
|
|
29
|
+
}));
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
useABI(abi) {
|
|
33
|
+
return new Proxy({}, {
|
|
34
|
+
get: (_, prop) => {
|
|
35
|
+
const functionName = prop.toString();
|
|
36
|
+
return (...args) => {
|
|
37
|
+
const payload = createEntryPayload(abi, {
|
|
38
|
+
function: functionName,
|
|
39
|
+
type_arguments: args[0].type_arguments,
|
|
40
|
+
arguments: args[0].arguments,
|
|
41
|
+
});
|
|
42
|
+
return this.submitTransaction(payload);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=WalletClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletClient.js","sourceRoot":"","sources":["../../../src/core/WalletClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAS,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK1D,MAAM,OAAO,YAAY;IACb,MAAM,CAAS;IACf,MAAM,CAAc;IAE5B,YAAY,EAAE,MAAM,EAAE,OAAO,EAG5B;QACG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAC1B,OAAqB,EACrB,IAA8B,SAAS;QAEvC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;QAGnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;YACxD,IAAI,EAAE,wBAAwB;YAC9B,GAAG,OAAO;YACV,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE;gBAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBAEpB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;iBAClD;qBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;oBAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,mBAAmB,CAAC,CAAC;iBACtE;qBAAM;oBACH,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;iBACzB;YACL,CAAC,CAAC;SACL,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,IAAI,EAAE;YACjE,YAAY,EAAE,IAAI;SACrB,CAAC,CAAsC,CAAC;QAEzC,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,MAAM,CAAoB,GAAM;QACnC,OAAO,IAAI,KAAK,CAAC,EAAwB,EAAE;YACvC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;gBACb,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrC,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE;oBACf,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE;wBACpC,QAAQ,EAAE,YAAY;wBACtB,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc;wBACtC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;qBAC/B,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAC3C,CAAC,CAAC;YACN,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { BCS, TxnBuilderTypes, TypeTagParser } from "aptos";
|
|
2
|
+
import { ensureBigInt, ensureBoolean, ensureNumber } from "../ensureTypes";
|
|
3
|
+
export function createEntryPayload(abi, payload) {
|
|
4
|
+
const fnAbi = abi.exposed_functions.filter(f => f.name === payload.function)[0];
|
|
5
|
+
const typeArguments = payload.type_arguments;
|
|
6
|
+
const valArguments = payload.arguments;
|
|
7
|
+
const abiArgs = fnAbi.params[0] === '&signer'
|
|
8
|
+
? fnAbi.params.slice(1)
|
|
9
|
+
: fnAbi.params;
|
|
10
|
+
if (fnAbi === undefined)
|
|
11
|
+
throw new Error(`Function ${payload.function} not found in ABI`);
|
|
12
|
+
if (abiArgs.length !== valArguments.length)
|
|
13
|
+
throw new Error(`Function ${payload.function} expects ${fnAbi.params.length} arguments, but ${payload.arguments.length} were provided`);
|
|
14
|
+
if (fnAbi.generic_type_params.length !== typeArguments.length)
|
|
15
|
+
throw new Error(`Function ${payload.function} expects ${fnAbi.generic_type_params.length} type arguments, but ${payload.type_arguments.length} were provided`);
|
|
16
|
+
return {
|
|
17
|
+
rawPayload: {
|
|
18
|
+
...payload,
|
|
19
|
+
function: `${abi.address}::${abi.name}::${payload.function}`,
|
|
20
|
+
},
|
|
21
|
+
entryRequest: TxnBuilderTypes.EntryFunction.natural(`${abi.address}::${abi.name}`, payload.function, typeArguments
|
|
22
|
+
.map((arg) => {
|
|
23
|
+
const typeTagStruct = new TypeTagParser(arg).parseTypeTag();
|
|
24
|
+
return new TxnBuilderTypes.TypeTagStruct(new TxnBuilderTypes.StructTag(typeTagStruct.value.address, typeTagStruct.value.module_name, typeTagStruct.value.name, typeTagStruct.value.type_args));
|
|
25
|
+
}), valArguments.map((arg, i) => {
|
|
26
|
+
const type = abiArgs[i];
|
|
27
|
+
const serializer = new BCS.Serializer();
|
|
28
|
+
argToBCS(type, arg, serializer);
|
|
29
|
+
return serializer.getBytes();
|
|
30
|
+
}))
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function argToBCS(type, arg, serializer) {
|
|
34
|
+
const regex = /vector<([^]+)>/;
|
|
35
|
+
const match = type.match(regex);
|
|
36
|
+
if (match) {
|
|
37
|
+
const innerType = match[1];
|
|
38
|
+
if (innerType === 'u8') {
|
|
39
|
+
if (arg instanceof Uint8Array) {
|
|
40
|
+
serializer.serializeBytes(arg);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (typeof arg === "string") {
|
|
44
|
+
serializer.serializeStr(arg);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (!Array.isArray(arg)) {
|
|
49
|
+
throw new Error("Invalid vector args.");
|
|
50
|
+
}
|
|
51
|
+
serializer.serializeU32AsUleb128(arg.length);
|
|
52
|
+
arg.forEach((arg) => argToBCS(innerType, arg, serializer));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
switch (type) {
|
|
56
|
+
case 'bool':
|
|
57
|
+
serializer.serializeBool(ensureBoolean(arg));
|
|
58
|
+
break;
|
|
59
|
+
case 'address':
|
|
60
|
+
TxnBuilderTypes.AccountAddress.fromHex(arg).serialize(serializer);
|
|
61
|
+
break;
|
|
62
|
+
case 'u8':
|
|
63
|
+
serializer.serializeU8(ensureNumber(arg));
|
|
64
|
+
break;
|
|
65
|
+
case 'u16':
|
|
66
|
+
serializer.serializeU16(ensureNumber(arg));
|
|
67
|
+
break;
|
|
68
|
+
case 'u32':
|
|
69
|
+
serializer.serializeU32(ensureNumber(arg));
|
|
70
|
+
break;
|
|
71
|
+
case 'u64':
|
|
72
|
+
serializer.serializeU64(ensureBigInt(arg));
|
|
73
|
+
break;
|
|
74
|
+
case 'u128':
|
|
75
|
+
serializer.serializeU128(ensureBigInt(arg));
|
|
76
|
+
break;
|
|
77
|
+
case 'u256':
|
|
78
|
+
serializer.serializeU256(ensureBigInt(arg));
|
|
79
|
+
break;
|
|
80
|
+
case '0x1::string::String':
|
|
81
|
+
serializer.serializeStr(arg);
|
|
82
|
+
break;
|
|
83
|
+
default:
|
|
84
|
+
throw new Error(`type "${type}" not supported`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=createEntryPayload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createEntryPayload.js","sourceRoot":"","sources":["../../../src/core/createEntryPayload.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { HexString } from "aptos";
|
|
2
|
+
import { ensureNumber } from "../ensureTypes";
|
|
3
|
+
export function createViewPayload(abi, payload) {
|
|
4
|
+
const fnAbi = abi.exposed_functions.filter(f => f.name === payload.function)[0];
|
|
5
|
+
const type_arguments = payload.type_arguments;
|
|
6
|
+
const val_arguments = payload.arguments;
|
|
7
|
+
if (fnAbi === undefined)
|
|
8
|
+
throw new Error(`Function ${payload.function} not found in ABI`);
|
|
9
|
+
if (fnAbi.params.length !== val_arguments.length)
|
|
10
|
+
throw new Error(`Function ${payload.function} expects ${fnAbi.params.length} arguments, but ${payload.arguments.length} were provided`);
|
|
11
|
+
if (fnAbi.generic_type_params.length !== type_arguments.length)
|
|
12
|
+
throw new Error(`Function ${payload.function} expects ${fnAbi.generic_type_params.length} type arguments, but ${payload.type_arguments.length} were provided`);
|
|
13
|
+
const args = fnAbi.params.map((type, i) => {
|
|
14
|
+
if (['u8', 'u16', 'u32'].includes(type)) {
|
|
15
|
+
return ensureNumber(payload.arguments[i]);
|
|
16
|
+
}
|
|
17
|
+
else if (['u64', 'u128', 'u256'].includes(type)) {
|
|
18
|
+
return payload.arguments[i].toString();
|
|
19
|
+
}
|
|
20
|
+
else if (type.includes("vector")) {
|
|
21
|
+
return encodeVector(type, payload.arguments[i]);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
return payload.arguments[i];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
const decoders = fnAbi.return.map((type) => {
|
|
28
|
+
if (['u64', 'u128', 'u256'].includes(type)) {
|
|
29
|
+
return decodeBigint;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return {
|
|
36
|
+
viewRequest: {
|
|
37
|
+
function: `${abi.address}::${abi.name}::${payload.function}`,
|
|
38
|
+
arguments: args,
|
|
39
|
+
type_arguments: payload.type_arguments,
|
|
40
|
+
},
|
|
41
|
+
decoders,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function decodeBigint(value) {
|
|
45
|
+
return BigInt(value);
|
|
46
|
+
}
|
|
47
|
+
function encodeVector(type, value) {
|
|
48
|
+
const regex = /vector<([^]+)>/;
|
|
49
|
+
const match = type.match(regex);
|
|
50
|
+
if (!match) {
|
|
51
|
+
throw new Error(`Unsupported type: ${type}`);
|
|
52
|
+
}
|
|
53
|
+
if (match[1] === "u8") {
|
|
54
|
+
return HexString.fromUint8Array(new Uint8Array(value.map((v) => {
|
|
55
|
+
const result = ensureNumber(v);
|
|
56
|
+
if (result < 0 || result > 255)
|
|
57
|
+
throw new Error(`Invalid u8 value: ${result}`);
|
|
58
|
+
return result;
|
|
59
|
+
}))).hexString;
|
|
60
|
+
}
|
|
61
|
+
else if (["u16", "u32"].includes(match[1])) {
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
else if (["u64", "u128", "u256"].includes(match[1])) {
|
|
65
|
+
return value.map((v) => v.toString());
|
|
66
|
+
}
|
|
67
|
+
else if (match[1] === "bool") {
|
|
68
|
+
return value;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
return value;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=createViewPayload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createViewPayload.js","sourceRoot":"","sources":["../../../src/core/createViewPayload.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { WalletClient as MoveTsWalletClient } from "./WalletClient";
|
|
2
|
+
export { Client as MoveTsClient, createClient } from "./Client";
|
|
3
|
+
export { createViewPayload } from "./createViewPayload";
|
|
4
|
+
export { createEntryPayload } from "./createEntryPayload";
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
function assertType(val, types, message) {
|
|
2
|
+
if (!types?.includes(typeof val)) {
|
|
3
|
+
throw new Error(message || `Invalid arg: ${val} type should be ${types instanceof Array ? types.join(" or ") : types}`);
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
export function ensureBoolean(val) {
|
|
7
|
+
assertType(val, ["boolean", "string"]);
|
|
8
|
+
if (typeof val === "boolean") {
|
|
9
|
+
return val;
|
|
10
|
+
}
|
|
11
|
+
if (val === "true") {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
if (val === "false") {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
throw new Error("Invalid boolean string.");
|
|
18
|
+
}
|
|
19
|
+
export function ensureNumber(val) {
|
|
20
|
+
assertType(val, ["number", "string"]);
|
|
21
|
+
if (typeof val === "number") {
|
|
22
|
+
return val;
|
|
23
|
+
}
|
|
24
|
+
const res = Number.parseInt(val, 10);
|
|
25
|
+
if (Number.isNaN(res)) {
|
|
26
|
+
throw new Error("Invalid number string.");
|
|
27
|
+
}
|
|
28
|
+
return res;
|
|
29
|
+
}
|
|
30
|
+
export function ensureBigInt(val) {
|
|
31
|
+
assertType(val, ["number", "bigint", "string"]);
|
|
32
|
+
return BigInt(val);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=ensureTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensureTypes.js","sourceRoot":"","sources":["../../src/ensureTypes.ts"],"names":[],"mappings":"AAAA,SAAS,UAAU,CAAC,GAAQ,EAAE,KAAwB,EAAE,OAAgB;IACpE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE;QAC9B,MAAM,IAAI,KAAK,CACX,OAAO,IAAI,gBAAgB,GAAG,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CACzG,CAAC;KACL;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAqB;IAC/C,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvC,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE;QAC1B,OAAO,GAAG,CAAC;KACd;IAED,IAAI,GAAG,KAAK,MAAM,EAAE;QAChB,OAAO,IAAI,CAAC;KACf;IACD,IAAI,GAAG,KAAK,OAAO,EAAE;QACjB,OAAO,KAAK,CAAC;KAChB;IAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAoB;IAC7C,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACtC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QACzB,OAAO,GAAG,CAAC;KACd;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACnB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC7C;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAA6B;IACtD,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { useState, useRef } from "react";
|
|
2
|
+
import { useWallet } from "@aptos-labs/wallet-adapter-react";
|
|
3
|
+
import { AptosClient } from "aptos";
|
|
4
|
+
function isRawPayload(payload) {
|
|
5
|
+
return payload.rawPayload !== undefined;
|
|
6
|
+
}
|
|
7
|
+
export const useSubmitTransaction = () => {
|
|
8
|
+
const { signAndSubmitTransaction } = useWallet();
|
|
9
|
+
const [isIdle, setIsIdle] = useState(true);
|
|
10
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
11
|
+
const [data, setResult] = useState();
|
|
12
|
+
const [error, setError] = useState();
|
|
13
|
+
const idRef = useRef(0);
|
|
14
|
+
function reset() {
|
|
15
|
+
setIsIdle(true);
|
|
16
|
+
setIsLoading(false);
|
|
17
|
+
setResult(undefined);
|
|
18
|
+
setError(undefined);
|
|
19
|
+
idRef.current = idRef.current + 1;
|
|
20
|
+
}
|
|
21
|
+
async function submitTransaction(payload, { nodeUrl, onSuccess, onFailed, max_gas_amount }) {
|
|
22
|
+
if (signAndSubmitTransaction === undefined) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const id = idRef.current;
|
|
26
|
+
if (!isIdle) {
|
|
27
|
+
throw new Error("Transaction is already in progress");
|
|
28
|
+
}
|
|
29
|
+
setIsLoading(true);
|
|
30
|
+
setIsIdle(false);
|
|
31
|
+
const request = isRawPayload(payload) ? payload.rawPayload : payload;
|
|
32
|
+
try {
|
|
33
|
+
const { hash } = await signAndSubmitTransaction({
|
|
34
|
+
type: "entry_function_payload",
|
|
35
|
+
...request,
|
|
36
|
+
arguments: request.arguments.map((arg) => {
|
|
37
|
+
if (Array.isArray(arg)) {
|
|
38
|
+
return arg.map((item) => item.toString());
|
|
39
|
+
}
|
|
40
|
+
else if (typeof arg === "object") {
|
|
41
|
+
throw new Error(`a value of struct type: ${arg} is not supported`);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return arg.toString();
|
|
45
|
+
}
|
|
46
|
+
}),
|
|
47
|
+
}, { max_gas_amount });
|
|
48
|
+
const client = new AptosClient(nodeUrl);
|
|
49
|
+
const result = (await client.waitForTransactionWithResult(hash, {
|
|
50
|
+
checkSuccess: true,
|
|
51
|
+
}));
|
|
52
|
+
if (id === idRef.current) {
|
|
53
|
+
try {
|
|
54
|
+
onSuccess?.(result);
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
console.error(e);
|
|
58
|
+
}
|
|
59
|
+
setResult(result);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
if (id === idRef.current) {
|
|
64
|
+
const error = e instanceof Error ? e :
|
|
65
|
+
e ? new Error(String(e)) :
|
|
66
|
+
new Error("unknown error");
|
|
67
|
+
try {
|
|
68
|
+
onFailed?.(error);
|
|
69
|
+
}
|
|
70
|
+
catch (e2) {
|
|
71
|
+
console.error(e2);
|
|
72
|
+
}
|
|
73
|
+
setError(error);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
if (id === idRef.current) {
|
|
78
|
+
setIsLoading(false);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return { submitTransaction, reset, isLoading, isIdle, data, error };
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=useSubmitTransaction.js.map
|