@thalalabs/surf 2.0.1 → 2.0.3
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/CHANGELOG.md +12 -0
- package/build/cjs/hooks/useInitiaSubmitTransaction.js +1 -1
- package/build/cjs/hooks/useInitiaSubmitTransaction.js.map +1 -1
- package/build/cjs/utils/bcs.js +15 -2
- package/build/cjs/utils/bcs.js.map +1 -1
- package/build/esm/hooks/useInitiaSubmitTransaction.js +1 -1
- package/build/esm/hooks/useInitiaSubmitTransaction.js.map +1 -1
- package/build/esm/utils/bcs.js +15 -2
- package/build/esm/utils/bcs.js.map +1 -1
- package/build/types/utils/bcs.d.ts +1 -1
- package/build/types/utils/bcs.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/hooks/useInitiaSubmitTransaction.ts +1 -1
- package/src/utils/__tests__/bcs.test.ts +21 -0
- package/src/utils/bcs.ts +17 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @thalalabs/surf
|
|
2
2
|
|
|
3
|
+
## 2.0.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Support BCS encoding Initia Move string arguments.
|
|
8
|
+
|
|
9
|
+
## 2.0.2
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 87ea343: use hex address for initia network, instead of init address
|
|
14
|
+
|
|
3
15
|
## 2.0.1
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -6,7 +6,7 @@ const interwovenkit_react_1 = require("@initia/interwovenkit-react");
|
|
|
6
6
|
const initia_js_1 = require("@initia/initia.js");
|
|
7
7
|
const bcs_js_1 = require("../utils/bcs.js");
|
|
8
8
|
const useInitiaSubmitTransaction = () => {
|
|
9
|
-
const { address, requestTxBlock } = (0, interwovenkit_react_1.useInterwovenKit)();
|
|
9
|
+
const { hexAddress: address, requestTxBlock } = (0, interwovenkit_react_1.useInterwovenKit)();
|
|
10
10
|
const [isIdle, setIsIdle] = (0, react_1.useState)(true);
|
|
11
11
|
const [isLoading, setIsLoading] = (0, react_1.useState)(false);
|
|
12
12
|
const [data, setResult] = (0, react_1.useState)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInitiaSubmitTransaction.js","sourceRoot":"","sources":["../../../src/hooks/useInitiaSubmitTransaction.ts"],"names":[],"mappings":";;;AAAA,iCAAyC;AAEzC,qEAA+D;AAC/D,iDAA+C;AAC/C,4CAA8C;AAEvC,MAAM,0BAA0B,GAAG,GAAG,EAAE;IAC7C,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,IAAA,sCAAgB,GAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"useInitiaSubmitTransaction.js","sourceRoot":"","sources":["../../../src/hooks/useInitiaSubmitTransaction.ts"],"names":[],"mappings":"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"}
|
package/build/cjs/utils/bcs.js
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.bcsEncoding = void 0;
|
|
4
4
|
const initia_js_1 = require("@initia/initia.js");
|
|
5
|
+
function isStringType(typeStr) {
|
|
6
|
+
return typeStr === '0x1::string::String' || typeStr === 'string';
|
|
7
|
+
}
|
|
5
8
|
function bcsEncoding(arg, typeStr, target = 'base64') {
|
|
6
9
|
const serializer = target === 'base64' ? 'toBase64' : 'toBytes';
|
|
7
10
|
if (typeStr === 'address' || typeStr.startsWith('0x1::object::Object')) {
|
|
@@ -44,6 +47,11 @@ function bcsEncoding(arg, typeStr, target = 'base64') {
|
|
|
44
47
|
.u256()
|
|
45
48
|
.serialize(arg)[serializer]();
|
|
46
49
|
}
|
|
50
|
+
else if (isStringType(typeStr)) {
|
|
51
|
+
return initia_js_1.bcs
|
|
52
|
+
.string()
|
|
53
|
+
.serialize(arg)[serializer]();
|
|
54
|
+
}
|
|
47
55
|
else if (typeStr.startsWith('vector<u8>')) {
|
|
48
56
|
return initia_js_1.bcs
|
|
49
57
|
.vector(initia_js_1.bcs.u8())
|
|
@@ -51,15 +59,20 @@ function bcsEncoding(arg, typeStr, target = 'base64') {
|
|
|
51
59
|
}
|
|
52
60
|
else if (typeStr.startsWith('vector<')) {
|
|
53
61
|
const innerTypeMatch = typeStr.match(/vector<([^>]+)>/);
|
|
54
|
-
|
|
62
|
+
const innerType = innerTypeMatch?.[1];
|
|
63
|
+
if (!innerType) {
|
|
55
64
|
throw new Error(`Unsupported vector type: ${typeStr}`);
|
|
56
65
|
}
|
|
57
|
-
const innerType = innerTypeMatch[1];
|
|
58
66
|
if (innerType === 'address') {
|
|
59
67
|
return initia_js_1.bcs
|
|
60
68
|
.vector(initia_js_1.bcs.address())
|
|
61
69
|
.serialize(arg)[serializer]();
|
|
62
70
|
}
|
|
71
|
+
else if (isStringType(innerType)) {
|
|
72
|
+
return initia_js_1.bcs
|
|
73
|
+
.vector(initia_js_1.bcs.string())
|
|
74
|
+
.serialize(arg)[serializer]();
|
|
75
|
+
}
|
|
63
76
|
else if (innerType === 'bool') {
|
|
64
77
|
return initia_js_1.bcs
|
|
65
78
|
.vector(initia_js_1.bcs.bool())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bcs.js","sourceRoot":"","sources":["../../../src/utils/bcs.ts"],"names":[],"mappings":";;;AAAA,iDAAwC;
|
|
1
|
+
{"version":3,"file":"bcs.js","sourceRoot":"","sources":["../../../src/utils/bcs.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { useInterwovenKit } from '@initia/interwovenkit-react';
|
|
|
3
3
|
import { MsgExecute } from '@initia/initia.js';
|
|
4
4
|
import { bcsEncoding } from '../utils/bcs.js';
|
|
5
5
|
export const useInitiaSubmitTransaction = () => {
|
|
6
|
-
const { address, requestTxBlock } = useInterwovenKit();
|
|
6
|
+
const { hexAddress: address, requestTxBlock } = useInterwovenKit();
|
|
7
7
|
const [isIdle, setIsIdle] = useState(true);
|
|
8
8
|
const [isLoading, setIsLoading] = useState(false);
|
|
9
9
|
const [data, setResult] = useState();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInitiaSubmitTransaction.js","sourceRoot":"","sources":["../../../src/hooks/useInitiaSubmitTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,EAAE;IAC7C,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,gBAAgB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"useInitiaSubmitTransaction.js","sourceRoot":"","sources":["../../../src/hooks/useInitiaSubmitTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,EAAE;IAC7C,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAEnE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,QAAQ,EAAO,CAAC;IAC1C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAS,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;IAEhC,SAAS,KAAK;QACZ,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,SAAS,CAAC,SAAS,CAAC,CAAC;QACrB,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,UAAU,iBAAiB,CAC9B,OAAqB;QAIrB,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;QAEzB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACvD;QACD,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,SAAS,CAAC,KAAK,CAAC,CAAC;QAEjB,IAAI,MAAM,CAAC;QACX,IAAI;YACF,IAAI,OAAO,IAAI,cAAc,EAAE;gBAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;oBAChB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;iBAC5D;gBACD,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,YAAY,CAAC,GAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;gBAC1B,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC1D,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;gBACH,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACzD,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;oBACzC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;oBACvD,IAAI,CAAC,SAAS,EAAE;wBACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;qBAC7C;oBAED,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;iBACtD;gBAED,MAAM,GAAG,GAAG,IAAI,UAAU,CACxB,OAAO,EACP,aAAuB,EACvB,UAAoB,EACpB,YAAsB,EACtB,OAAO,CAAC,aAAa,EACrB,OAAO,CACR,CAAC;gBAEF,MAAM,GAAG,MAAM,cAAc,CAAC;oBAC5B,QAAQ,EAAE;wBACR;4BACE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC;4BAC9B,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE;yBACrB;qBACF;iBACF,CAAC,CAAC;aACJ;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;aAC5C;YAGD,IAAI,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE;gBACxB,SAAS,CAAC,MAAM,CAAC,CAAC;gBAClB,YAAY,CAAC,KAAK,CAAC,CAAC;aACrB;SACF;QAAC,OAAO,CAAC,EAAE;YACV,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,CAAC;SACT;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACtE,CAAC,CAAC"}
|
package/build/esm/utils/bcs.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { bcs } from '@initia/initia.js';
|
|
2
|
+
function isStringType(typeStr) {
|
|
3
|
+
return typeStr === '0x1::string::String' || typeStr === 'string';
|
|
4
|
+
}
|
|
2
5
|
export function bcsEncoding(arg, typeStr, target = 'base64') {
|
|
3
6
|
const serializer = target === 'base64' ? 'toBase64' : 'toBytes';
|
|
4
7
|
if (typeStr === 'address' || typeStr.startsWith('0x1::object::Object')) {
|
|
@@ -41,6 +44,11 @@ export function bcsEncoding(arg, typeStr, target = 'base64') {
|
|
|
41
44
|
.u256()
|
|
42
45
|
.serialize(arg)[serializer]();
|
|
43
46
|
}
|
|
47
|
+
else if (isStringType(typeStr)) {
|
|
48
|
+
return bcs
|
|
49
|
+
.string()
|
|
50
|
+
.serialize(arg)[serializer]();
|
|
51
|
+
}
|
|
44
52
|
else if (typeStr.startsWith('vector<u8>')) {
|
|
45
53
|
return bcs
|
|
46
54
|
.vector(bcs.u8())
|
|
@@ -48,15 +56,20 @@ export function bcsEncoding(arg, typeStr, target = 'base64') {
|
|
|
48
56
|
}
|
|
49
57
|
else if (typeStr.startsWith('vector<')) {
|
|
50
58
|
const innerTypeMatch = typeStr.match(/vector<([^>]+)>/);
|
|
51
|
-
|
|
59
|
+
const innerType = innerTypeMatch?.[1];
|
|
60
|
+
if (!innerType) {
|
|
52
61
|
throw new Error(`Unsupported vector type: ${typeStr}`);
|
|
53
62
|
}
|
|
54
|
-
const innerType = innerTypeMatch[1];
|
|
55
63
|
if (innerType === 'address') {
|
|
56
64
|
return bcs
|
|
57
65
|
.vector(bcs.address())
|
|
58
66
|
.serialize(arg)[serializer]();
|
|
59
67
|
}
|
|
68
|
+
else if (isStringType(innerType)) {
|
|
69
|
+
return bcs
|
|
70
|
+
.vector(bcs.string())
|
|
71
|
+
.serialize(arg)[serializer]();
|
|
72
|
+
}
|
|
60
73
|
else if (innerType === 'bool') {
|
|
61
74
|
return bcs
|
|
62
75
|
.vector(bcs.bool())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bcs.js","sourceRoot":"","sources":["../../../src/utils/bcs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"bcs.js","sourceRoot":"","sources":["../../../src/utils/bcs.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* @param typeStr The type of the argument as a string
|
|
6
6
|
* @returns Base64 encoded BCS serialized value
|
|
7
7
|
*/
|
|
8
|
-
export declare function bcsEncoding(arg:
|
|
8
|
+
export declare function bcsEncoding(arg: unknown, typeStr: string, target?: 'base64' | 'bytes'): string;
|
|
9
9
|
//# sourceMappingURL=bcs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bcs.d.ts","sourceRoot":"","sources":["../../../src/utils/bcs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bcs.d.ts","sourceRoot":"","sources":["../../../src/utils/bcs.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,QAAQ,GAAG,OAAkB,GACpC,MAAM,CAoGR"}
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@ import { MsgExecute } from '@initia/initia.js';
|
|
|
5
5
|
import { bcsEncoding } from '../utils/bcs.js';
|
|
6
6
|
|
|
7
7
|
export const useInitiaSubmitTransaction = () => {
|
|
8
|
-
const { address, requestTxBlock } = useInterwovenKit();
|
|
8
|
+
const { hexAddress: address, requestTxBlock } = useInterwovenKit();
|
|
9
9
|
|
|
10
10
|
const [isIdle, setIsIdle] = useState(true);
|
|
11
11
|
const [isLoading, setIsLoading] = useState(false);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { bcs } from '@initia/initia.js';
|
|
2
|
+
|
|
3
|
+
import { bcsEncoding } from '../bcs.js';
|
|
4
|
+
|
|
5
|
+
describe('bcsEncoding', () => {
|
|
6
|
+
it('encodes Move string arguments', () => {
|
|
7
|
+
expect(bcsEncoding('Initia USD', '0x1::string::String')).toEqual(
|
|
8
|
+
bcs.string().serialize('Initia USD').toBase64(),
|
|
9
|
+
);
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it('encodes vector<0x1::string::String> arguments', () => {
|
|
13
|
+
const farmingIds = [
|
|
14
|
+
'@0x83a760b720dfe9008015ed2c9cf664f353f441a3fe7b20141876721115faf934201',
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
expect(bcsEncoding(farmingIds, 'vector<0x1::string::String>')).toEqual(
|
|
18
|
+
bcs.vector(bcs.string()).serialize(farmingIds).toBase64(),
|
|
19
|
+
);
|
|
20
|
+
});
|
|
21
|
+
});
|
package/src/utils/bcs.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { bcs } from '@initia/initia.js';
|
|
2
2
|
|
|
3
|
+
function isStringType(typeStr: string): boolean {
|
|
4
|
+
return typeStr === '0x1::string::String' || typeStr === 'string';
|
|
5
|
+
}
|
|
6
|
+
|
|
3
7
|
/**
|
|
4
8
|
* Helper function to encode arguments using BCS based on their type
|
|
5
9
|
*
|
|
@@ -8,7 +12,7 @@ import { bcs } from '@initia/initia.js';
|
|
|
8
12
|
* @returns Base64 encoded BCS serialized value
|
|
9
13
|
*/
|
|
10
14
|
export function bcsEncoding(
|
|
11
|
-
arg:
|
|
15
|
+
arg: unknown,
|
|
12
16
|
typeStr: string,
|
|
13
17
|
target: 'base64' | 'bytes' = 'base64',
|
|
14
18
|
): string {
|
|
@@ -53,6 +57,11 @@ export function bcsEncoding(
|
|
|
53
57
|
.u256()
|
|
54
58
|
.serialize(arg as string | number | bigint)
|
|
55
59
|
[serializer]();
|
|
60
|
+
} else if (isStringType(typeStr)) {
|
|
61
|
+
return bcs
|
|
62
|
+
.string()
|
|
63
|
+
.serialize(arg as string)
|
|
64
|
+
[serializer]();
|
|
56
65
|
} else if (typeStr.startsWith('vector<u8>')) {
|
|
57
66
|
return bcs
|
|
58
67
|
.vector(bcs.u8())
|
|
@@ -60,16 +69,21 @@ export function bcsEncoding(
|
|
|
60
69
|
[serializer]();
|
|
61
70
|
} else if (typeStr.startsWith('vector<')) {
|
|
62
71
|
const innerTypeMatch = typeStr.match(/vector<([^>]+)>/);
|
|
63
|
-
|
|
72
|
+
const innerType = innerTypeMatch?.[1];
|
|
73
|
+
if (!innerType) {
|
|
64
74
|
throw new Error(`Unsupported vector type: ${typeStr}`);
|
|
65
75
|
}
|
|
66
76
|
|
|
67
|
-
const innerType = innerTypeMatch[1];
|
|
68
77
|
if (innerType === 'address') {
|
|
69
78
|
return bcs
|
|
70
79
|
.vector(bcs.address())
|
|
71
80
|
.serialize(arg as string[])
|
|
72
81
|
[serializer]();
|
|
82
|
+
} else if (isStringType(innerType)) {
|
|
83
|
+
return bcs
|
|
84
|
+
.vector(bcs.string())
|
|
85
|
+
.serialize(arg as string[])
|
|
86
|
+
[serializer]();
|
|
73
87
|
} else if (innerType === 'bool') {
|
|
74
88
|
return bcs
|
|
75
89
|
.vector(bcs.bool())
|