@thalalabs/surf 2.0.2 → 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 +6 -0
- package/build/cjs/utils/bcs.js +15 -2
- package/build/cjs/utils/bcs.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/utils/__tests__/bcs.test.ts +21 -0
- package/src/utils/bcs.ts +17 -3
package/CHANGELOG.md
CHANGED
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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"}
|
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
|
@@ -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())
|