@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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @thalalabs/surf
2
2
 
3
+ ## 2.0.3
4
+
5
+ ### Patch Changes
6
+
7
+ - Support BCS encoding Initia Move string arguments.
8
+
3
9
  ## 2.0.2
4
10
 
5
11
  ### Patch Changes
@@ -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
- if (!innerTypeMatch) {
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":"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"}
1
+ {"version":3,"file":"bcs.js","sourceRoot":"","sources":["../../../src/utils/bcs.ts"],"names":[],"mappings":"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"}
@@ -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
- if (!innerTypeMatch) {
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":"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"}
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: any, typeStr: string, target?: 'base64' | 'bytes'): string;
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":"AAEA;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,QAAQ,GAAG,OAAkB,GACpC,MAAM,CA0FR"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thalalabs/surf",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "description": "TypeScript Interfaces & React Hooks for interacting with Aptos Smart Contracts with type safety.",
5
5
  "main": "./build/cjs/index.js",
6
6
  "module": "./build/esm/index.js",
@@ -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: any,
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
- if (!innerTypeMatch) {
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())