@thalalabs/surf 1.7.1 → 1.7.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 +13 -0
- package/build/types/types/convertor/returnConvertor.d.ts +5 -1
- package/build/types/types/convertor/returnConvertor.d.ts.map +1 -1
- package/build/types/types/convertor/structConvertor.d.ts +4 -2
- package/build/types/types/convertor/structConvertor.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/core/__tests__/accountResource.test.ts +23 -0
- package/src/core/__tests__/view.test.ts +77 -11
- package/src/types/convertor/returnConvertor.ts +24 -18
- package/src/types/convertor/structConvertor.ts +6 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @thalalabs/surf
|
|
2
2
|
|
|
3
|
+
## 1.7.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 00e316b: bump ts-sdk packages
|
|
8
|
+
|
|
9
|
+
## 1.7.2
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- fa03792: support 0x1::object::Object and 0x1::option::Option for view function returns
|
|
14
|
+
- 6113067: support 0x1::object::Object type in struct
|
|
15
|
+
|
|
3
16
|
## 1.7.1
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
* for return value of view functions.
|
|
4
4
|
*/
|
|
5
5
|
import { UnknownStruct } from '../common.js';
|
|
6
|
+
import { DefaultABITable } from '../defaultABITable.js';
|
|
6
7
|
import { MoveNonStructTypes, MovePrimitive } from '../moveTypes.js';
|
|
8
|
+
import { ConvertStructFieldOptionType } from './structConvertor.js';
|
|
7
9
|
/**
|
|
8
10
|
* Convert an array of return types.
|
|
9
11
|
*/
|
|
@@ -16,6 +18,8 @@ export type ConvertReturns<T extends readonly string[]> = T extends readonly [
|
|
|
16
18
|
*/
|
|
17
19
|
type ConvertReturnType<TMoveType extends string> = TMoveType extends MoveNonStructTypes ? ConvertNonStructReturnType<TMoveType> : UnknownStruct<TMoveType>;
|
|
18
20
|
type ConvertPrimitiveReturnType<TMoveType extends MovePrimitive> = TMoveType extends 'bool' ? boolean : TMoveType extends 'u8' ? number : TMoveType extends 'u16' ? number : TMoveType extends 'u32' ? number : TMoveType extends 'u64' ? string : TMoveType extends 'u128' ? string : TMoveType extends 'u256' ? string : TMoveType extends 'address' ? `0x${string}` : TMoveType extends '0x1::string::String' ? string : never;
|
|
19
|
-
type ConvertNonStructReturnType<TMoveType extends MoveNonStructTypes> = TMoveType extends MovePrimitive ? ConvertPrimitiveReturnType<TMoveType> : TMoveType extends `vector<${infer TInner}>` ? ConvertReturnType<TInner>[] :
|
|
21
|
+
type ConvertNonStructReturnType<TMoveType extends MoveNonStructTypes> = TMoveType extends MovePrimitive ? ConvertPrimitiveReturnType<TMoveType> : TMoveType extends `vector<${infer TInner}>` ? ConvertReturnType<TInner>[] : TMoveType extends `0x1::object::Object<${string}>` ? {
|
|
22
|
+
inner: `0x${string}`;
|
|
23
|
+
} : TMoveType extends `0x1::option::Option<${infer TInner}>` ? ConvertStructFieldOptionType<DefaultABITable, TInner> : UnknownStruct<TMoveType>;
|
|
20
24
|
export {};
|
|
21
25
|
//# sourceMappingURL=returnConvertor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"returnConvertor.d.ts","sourceRoot":"","sources":["../../../../src/types/convertor/returnConvertor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,IAAI,CAAC,SAAS,SAAS;IAC3E,MAAM,IAAI,SAAS,MAAM;IACzB,GAAG,MAAM,KAAK,SAAS,MAAM,EAAE;CAChC,GACG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,GACnD,EAAE,CAAC;AAEP;;GAEG;AACH,KAAK,iBAAiB,CAAC,SAAS,SAAS,MAAM,IAC7C,SAAS,SAAS,kBAAkB,GAEhC,0BAA0B,CAAC,SAAS,CAAC,GAErC,aAAa,CAAC,SAAS,CAAC,CAAC;AAE/B,KAAK,0BAA0B,CAAC,SAAS,SAAS,aAAa,IAC7D,SAAS,SAAS,MAAM,GACpB,OAAO,GACP,SAAS,SAAS,IAAI,
|
|
1
|
+
{"version":3,"file":"returnConvertor.d.ts","sourceRoot":"","sources":["../../../../src/types/convertor/returnConvertor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,SAAS,MAAM,EAAE,IAAI,CAAC,SAAS,SAAS;IAC3E,MAAM,IAAI,SAAS,MAAM;IACzB,GAAG,MAAM,KAAK,SAAS,MAAM,EAAE;CAChC,GACG,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,GACnD,EAAE,CAAC;AAEP;;GAEG;AACH,KAAK,iBAAiB,CAAC,SAAS,SAAS,MAAM,IAC7C,SAAS,SAAS,kBAAkB,GAEhC,0BAA0B,CAAC,SAAS,CAAC,GAErC,aAAa,CAAC,SAAS,CAAC,CAAC;AAE/B,KAAK,0BAA0B,CAAC,SAAS,SAAS,aAAa,IAC7D,SAAS,SAAS,MAAM,GACpB,OAAO,GACP,SAAS,SAAS,IAAI,GACpB,MAAM,GACN,SAAS,SAAS,KAAK,GACrB,MAAM,GACN,SAAS,SAAS,KAAK,GACrB,MAAM,GACN,SAAS,SAAS,KAAK,GACrB,MAAM,GACN,SAAS,SAAS,MAAM,GACtB,MAAM,GACN,SAAS,SAAS,MAAM,GACtB,MAAM,GACN,SAAS,SAAS,SAAS,GACzB,KAAK,MAAM,EAAE,GACb,SAAS,SAAS,qBAAqB,GACrC,MAAM,GACN,KAAK,CAAC;AAE5B,KAAK,0BAA0B,CAAC,SAAS,SAAS,kBAAkB,IAClE,SAAS,SAAS,aAAa,GAC3B,0BAA0B,CAAC,SAAS,CAAC,GACrC,SAAS,SAAS,UAAU,MAAM,MAAM,GAAG,GACzC,iBAAiB,CAAC,MAAM,CAAC,EAAE,GAC3B,SAAS,SAAS,uBAAuB,MAAM,GAAG,GAChD;IAAE,KAAK,EAAE,KAAK,MAAM,EAAE,CAAA;CAAE,GACxB,SAAS,SAAS,uBAAuB,MAAM,MAAM,GAAG,GACtD,4BAA4B,CAAC,eAAe,EAAE,MAAM,CAAC,GACrD,aAAa,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -10,8 +10,10 @@ export type ConvertStructFieldType<TABITable extends ABITable, TMoveType extends
|
|
|
10
10
|
* Internal
|
|
11
11
|
*/
|
|
12
12
|
type ConvertPrimitiveStructField<T extends MovePrimitive> = T extends 'bool' ? boolean : T extends 'u8' ? number : T extends 'u16' ? number : T extends 'u32' ? number : T extends 'u64' ? string : T extends 'u128' ? string : T extends 'u256' ? string : T extends 'address' ? `0x${string}` : T extends '0x1::string::String' ? string : never;
|
|
13
|
-
type ConvertStructFieldNonStructType<TABITable extends ABITable, TMoveType extends MoveNonStructTypes> = TMoveType extends MovePrimitive ? ConvertPrimitiveStructField<TMoveType> : TMoveType extends `vector<${infer TInner}>` ? ConvertStructFieldType<TABITable, TInner>[] : TMoveType extends `0x1::
|
|
14
|
-
|
|
13
|
+
type ConvertStructFieldNonStructType<TABITable extends ABITable, TMoveType extends MoveNonStructTypes> = TMoveType extends MovePrimitive ? ConvertPrimitiveStructField<TMoveType> : TMoveType extends `vector<${infer TInner}>` ? ConvertStructFieldType<TABITable, TInner>[] : TMoveType extends `0x1::object::Object<${string}>` ? {
|
|
14
|
+
inner: `0x${string}`;
|
|
15
|
+
} : TMoveType extends `0x1::option::Option<${infer TInner}>` ? ConvertStructFieldOptionType<TABITable, TInner> : UnknownStruct<TMoveType>;
|
|
16
|
+
export type ConvertStructFieldOptionType<TABITable extends ABITable, TMoveType extends string> = {
|
|
15
17
|
vec: [ConvertStructFieldType<TABITable, TMoveType>] | [];
|
|
16
18
|
};
|
|
17
19
|
type ConvertStructFieldStructType<TABITable extends ABITable, TMoveType extends string> = TMoveType extends `${infer TAccountAddress}::${infer TModuleName}::${infer TStructName}${'' | `<${infer _TInnerType}>`}` ? OmitInner<TStructName> extends ResourceStructName<Extract<TABITable[number], {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structConvertor.d.ts","sourceRoot":"","sources":["../../../../src/types/convertor/structConvertor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGpE,MAAM,MAAM,sBAAsB,CAChC,SAAS,SAAS,QAAQ,EAC1B,SAAS,SAAS,MAAM,IACtB,SAAS,SAAS,kBAAkB,GAEpC,+BAA+B,CAAC,SAAS,EAAE,SAAS,CAAC,GAErD,4BAA4B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAEvD;;GAEG;AACH,KAAK,2BAA2B,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS,MAAM,GACxE,OAAO,GACP,CAAC,SAAS,IAAI,GACZ,MAAM,GACN,CAAC,SAAS,KAAK,GACb,MAAM,GACN,CAAC,SAAS,KAAK,GACb,MAAM,GACN,CAAC,SAAS,KAAK,GACb,MAAM,GACN,CAAC,SAAS,MAAM,GACd,MAAM,GACN,CAAC,SAAS,MAAM,GACd,MAAM,GACN,CAAC,SAAS,SAAS,GACjB,KAAK,MAAM,EAAE,GACb,CAAC,SAAS,qBAAqB,GAC7B,MAAM,GACN,KAAK,CAAC;AAG1B,KAAK,+BAA+B,CAClC,SAAS,SAAS,QAAQ,EAC1B,SAAS,SAAS,kBAAkB,IAClC,SAAS,SAAS,aAAa,GAC/B,2BAA2B,CAAC,SAAS,CAAC,GACtC,SAAS,SAAS,UAAU,MAAM,MAAM,GAAG,GACzC,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,GAC3C,SAAS,SAAS,uBAAuB,MAAM,MAAM,GAAG,GACtD,4BAA4B,CAAC,SAAS,EAAE,MAAM,CAAC,GAC/C,aAAa,CAAC,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"structConvertor.d.ts","sourceRoot":"","sources":["../../../../src/types/convertor/structConvertor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGpE,MAAM,MAAM,sBAAsB,CAChC,SAAS,SAAS,QAAQ,EAC1B,SAAS,SAAS,MAAM,IACtB,SAAS,SAAS,kBAAkB,GAEpC,+BAA+B,CAAC,SAAS,EAAE,SAAS,CAAC,GAErD,4BAA4B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAEvD;;GAEG;AACH,KAAK,2BAA2B,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS,MAAM,GACxE,OAAO,GACP,CAAC,SAAS,IAAI,GACZ,MAAM,GACN,CAAC,SAAS,KAAK,GACb,MAAM,GACN,CAAC,SAAS,KAAK,GACb,MAAM,GACN,CAAC,SAAS,KAAK,GACb,MAAM,GACN,CAAC,SAAS,MAAM,GACd,MAAM,GACN,CAAC,SAAS,MAAM,GACd,MAAM,GACN,CAAC,SAAS,SAAS,GACjB,KAAK,MAAM,EAAE,GACb,CAAC,SAAS,qBAAqB,GAC7B,MAAM,GACN,KAAK,CAAC;AAG1B,KAAK,+BAA+B,CAClC,SAAS,SAAS,QAAQ,EAC1B,SAAS,SAAS,kBAAkB,IAClC,SAAS,SAAS,aAAa,GAC/B,2BAA2B,CAAC,SAAS,CAAC,GACtC,SAAS,SAAS,UAAU,MAAM,MAAM,GAAG,GACzC,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,GAC3C,SAAS,SAAS,uBAAuB,MAAM,GAAG,GAChD;IAAE,KAAK,EAAE,KAAK,MAAM,EAAE,CAAA;CAAE,GACxB,SAAS,SAAS,uBAAuB,MAAM,MAAM,GAAG,GACtD,4BAA4B,CAAC,SAAS,EAAE,MAAM,CAAC,GAC/C,aAAa,CAAC,SAAS,CAAC,CAAC;AAEnC,MAAM,MAAM,4BAA4B,CACtC,SAAS,SAAS,QAAQ,EAC1B,SAAS,SAAS,MAAM,IACtB;IACF,GAAG,EAAE,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;CAC1D,CAAC;AAGF,KAAK,4BAA4B,CAC/B,SAAS,SAAS,QAAQ,EAC1B,SAAS,SAAS,MAAM,IACtB,SAAS,SAAS,GAAG,MAAM,eAAe,KAAK,MAAM,WAAW,KAAK,MAAM,WAAW,GACtF,EAAE,GACF,IAAI,MAAM,WAAW,GAAG,EAAE,GAC1B,SAAS,CAAC,WAAW,CAAC,SAAS,kBAAkB,CAC/C,OAAO,CACL,SAAS,CAAC,MAAM,CAAC,EACjB;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAChD,CACF,GACC,iBAAiB,CACf,SAAS,EACT,OAAO,CACL,SAAS,CAAC,MAAM,CAAC,EACjB;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAChD,EACD,SAAS,CAAC,WAAW,CAAC,CACvB,GAED,aAAa,CAAC,SAAS,CAAC,GAC1B,aAAa,CAAC,SAAS,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thalalabs/surf",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.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",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@aptos-labs/ts-sdk": "^1.
|
|
37
|
-
"@aptos-labs/wallet-adapter-react": "^3.
|
|
36
|
+
"@aptos-labs/ts-sdk": "^1.26.0",
|
|
37
|
+
"@aptos-labs/wallet-adapter-react": "^3.5.9",
|
|
38
38
|
"@changesets/cli": "^2.26.1",
|
|
39
39
|
"@types/jest": "~29.5",
|
|
40
40
|
"@types/node": "~18",
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
"typescript": "~5.1"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
|
-
"@aptos-labs/ts-sdk": "^1.
|
|
60
|
-
"@aptos-labs/wallet-adapter-react": "^3.
|
|
59
|
+
"@aptos-labs/ts-sdk": "^1.26.0",
|
|
60
|
+
"@aptos-labs/wallet-adapter-react": "^3.5.9",
|
|
61
61
|
"react": "^18.2.0"
|
|
62
62
|
},
|
|
63
63
|
"peerDependenciesMeta": {
|
|
@@ -120,6 +120,17 @@ describe('get account resource', () => {
|
|
|
120
120
|
// @ts-expect-error out of index, option only has 0 or 1 item
|
|
121
121
|
expect(data.supply.vec[1]).toBeUndefined();
|
|
122
122
|
}, 60000);
|
|
123
|
+
|
|
124
|
+
it('object type', async () => {
|
|
125
|
+
async () => {
|
|
126
|
+
const data = await client.useABI(TEST_ABI).resource.TestObjectStruct({
|
|
127
|
+
typeArguments: [],
|
|
128
|
+
account: '0x1',
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
expect(data.objects[0]!.inner).toBeDefined();
|
|
132
|
+
};
|
|
133
|
+
}, 60000);
|
|
123
134
|
});
|
|
124
135
|
|
|
125
136
|
const TEST_ABI = {
|
|
@@ -156,5 +167,17 @@ const TEST_ABI = {
|
|
|
156
167
|
},
|
|
157
168
|
],
|
|
158
169
|
},
|
|
170
|
+
{
|
|
171
|
+
name: 'TestObjectStruct',
|
|
172
|
+
is_native: false,
|
|
173
|
+
abilities: ['key'],
|
|
174
|
+
generic_type_params: [],
|
|
175
|
+
fields: [
|
|
176
|
+
{
|
|
177
|
+
name: 'objects',
|
|
178
|
+
type: 'vector<0x1::object::Object<0x123::abc::Abc>>',
|
|
179
|
+
},
|
|
180
|
+
],
|
|
181
|
+
},
|
|
159
182
|
],
|
|
160
183
|
} as const;
|
|
@@ -9,21 +9,17 @@ import { createViewPayload } from '../createViewPayload.js';
|
|
|
9
9
|
|
|
10
10
|
describe('call view functions', () => {
|
|
11
11
|
const client = createSurfClient(
|
|
12
|
-
new Aptos(
|
|
13
|
-
new AptosConfig({ network: Network.TESTNET })
|
|
14
|
-
)
|
|
12
|
+
new Aptos(new AptosConfig({ network: Network.TESTNET })),
|
|
15
13
|
);
|
|
16
|
-
|
|
14
|
+
|
|
17
15
|
const clientMain = createSurfClient(
|
|
18
|
-
new Aptos(
|
|
19
|
-
new AptosConfig({ network: Network.MAINNET })
|
|
20
|
-
)
|
|
16
|
+
new Aptos(new AptosConfig({ network: Network.MAINNET })),
|
|
21
17
|
);
|
|
22
18
|
// Act before assertions
|
|
23
|
-
beforeAll(async () => {
|
|
19
|
+
beforeAll(async () => {});
|
|
24
20
|
|
|
25
21
|
// Teardown (cleanup) after assertions
|
|
26
|
-
afterAll(() => {
|
|
22
|
+
afterAll(() => {});
|
|
27
23
|
|
|
28
24
|
it('basic', async () => {
|
|
29
25
|
const viewPayload = createViewPayload(COIN_ABI, {
|
|
@@ -58,9 +54,10 @@ describe('call view functions', () => {
|
|
|
58
54
|
typeArguments: ['0x1::aptos_coin::AptosCoin'],
|
|
59
55
|
});
|
|
60
56
|
const result = await client.view({
|
|
61
|
-
payload: viewPayload,
|
|
57
|
+
payload: viewPayload,
|
|
58
|
+
options: {
|
|
62
59
|
ledgerVersion: 562606728,
|
|
63
|
-
}
|
|
60
|
+
},
|
|
64
61
|
});
|
|
65
62
|
expect(result).toMatchInlineSnapshot(`
|
|
66
63
|
[
|
|
@@ -83,6 +80,49 @@ describe('call view functions', () => {
|
|
|
83
80
|
expect((result[0] as any).v).toBeDefined();
|
|
84
81
|
expect(typeof (result[0] as any).v).toEqual('string');
|
|
85
82
|
}, 60000);
|
|
83
|
+
|
|
84
|
+
it('return objects', async () => {
|
|
85
|
+
// no need to run, type check only.
|
|
86
|
+
async () => {
|
|
87
|
+
const viewPayload = createViewPayload(TIERED_ORACLE_ABI, {
|
|
88
|
+
function: 'get_objects',
|
|
89
|
+
functionArguments: [],
|
|
90
|
+
typeArguments: ['0x1::aptos_coin::AptosCoin'],
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// The declaration in Move:
|
|
94
|
+
// struct FixedPoint64 has copy, drop, store { value: u128 }
|
|
95
|
+
const result = await clientMain.view({ payload: viewPayload });
|
|
96
|
+
|
|
97
|
+
result[0][0]!.inner;
|
|
98
|
+
|
|
99
|
+
// @ts-expect-error
|
|
100
|
+
result[0][0].abc;
|
|
101
|
+
};
|
|
102
|
+
}, 60000);
|
|
103
|
+
|
|
104
|
+
it('return options', async () => {
|
|
105
|
+
// no need to run, type check only.
|
|
106
|
+
async () => {
|
|
107
|
+
const viewPayload = createViewPayload(TIERED_ORACLE_ABI, {
|
|
108
|
+
function: 'get_options',
|
|
109
|
+
functionArguments: [],
|
|
110
|
+
typeArguments: ['0x1::aptos_coin::AptosCoin'],
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
// The declaration in Move:
|
|
114
|
+
// struct FixedPoint64 has copy, drop, store { value: u128 }
|
|
115
|
+
const result = await clientMain.view({ payload: viewPayload });
|
|
116
|
+
|
|
117
|
+
result[0][0]!.vec[0];
|
|
118
|
+
|
|
119
|
+
// @ts-expect-error out of range, option only has 0 or 1 item
|
|
120
|
+
result[0][0]!.vec[1];
|
|
121
|
+
|
|
122
|
+
// @ts-expect-error
|
|
123
|
+
result[0][0].abc;
|
|
124
|
+
};
|
|
125
|
+
}, 60000);
|
|
86
126
|
});
|
|
87
127
|
|
|
88
128
|
const TIERED_ORACLE_ABI = {
|
|
@@ -107,6 +147,32 @@ const TIERED_ORACLE_ABI = {
|
|
|
107
147
|
'0x4dcae85fc5559071906cd5c76b7420fcbb4b0a92f00ab40ffc394aadbbff5ee9::fixed_point64::FixedPoint64',
|
|
108
148
|
],
|
|
109
149
|
},
|
|
150
|
+
{
|
|
151
|
+
name: 'get_objects',
|
|
152
|
+
visibility: 'public',
|
|
153
|
+
is_entry: false,
|
|
154
|
+
is_view: true,
|
|
155
|
+
generic_type_params: [
|
|
156
|
+
{
|
|
157
|
+
constraints: [],
|
|
158
|
+
},
|
|
159
|
+
],
|
|
160
|
+
params: [],
|
|
161
|
+
return: ['vector<0x1::object::Object<0x123::abc::Abc>>'],
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
name: 'get_options',
|
|
165
|
+
visibility: 'public',
|
|
166
|
+
is_entry: false,
|
|
167
|
+
is_view: true,
|
|
168
|
+
generic_type_params: [
|
|
169
|
+
{
|
|
170
|
+
constraints: [],
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
params: [],
|
|
174
|
+
return: ['vector<0x1::option::Option<0x123::abc::Abc>>'],
|
|
175
|
+
},
|
|
110
176
|
],
|
|
111
177
|
structs: [],
|
|
112
178
|
} as const;
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { UnknownStruct } from '../common.js';
|
|
7
|
+
import { DefaultABITable } from '../defaultABITable.js';
|
|
7
8
|
import { MoveNonStructTypes, MovePrimitive } from '../moveTypes.js';
|
|
9
|
+
import { ConvertStructFieldOptionType } from './structConvertor.js';
|
|
8
10
|
|
|
9
11
|
/**
|
|
10
12
|
* Convert an array of return types.
|
|
@@ -30,26 +32,30 @@ type ConvertPrimitiveReturnType<TMoveType extends MovePrimitive> =
|
|
|
30
32
|
TMoveType extends 'bool'
|
|
31
33
|
? boolean
|
|
32
34
|
: TMoveType extends 'u8'
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
35
|
+
? number
|
|
36
|
+
: TMoveType extends 'u16'
|
|
37
|
+
? number
|
|
38
|
+
: TMoveType extends 'u32'
|
|
39
|
+
? number
|
|
40
|
+
: TMoveType extends 'u64'
|
|
41
|
+
? string
|
|
42
|
+
: TMoveType extends 'u128'
|
|
43
|
+
? string
|
|
44
|
+
: TMoveType extends 'u256'
|
|
45
|
+
? string
|
|
46
|
+
: TMoveType extends 'address'
|
|
47
|
+
? `0x${string}`
|
|
48
|
+
: TMoveType extends '0x1::string::String'
|
|
49
|
+
? string
|
|
50
|
+
: never;
|
|
49
51
|
|
|
50
52
|
type ConvertNonStructReturnType<TMoveType extends MoveNonStructTypes> =
|
|
51
53
|
TMoveType extends MovePrimitive
|
|
52
54
|
? ConvertPrimitiveReturnType<TMoveType>
|
|
53
55
|
: TMoveType extends `vector<${infer TInner}>`
|
|
54
|
-
|
|
55
|
-
|
|
56
|
+
? ConvertReturnType<TInner>[]
|
|
57
|
+
: TMoveType extends `0x1::object::Object<${string}>`
|
|
58
|
+
? { inner: `0x${string}` }
|
|
59
|
+
: TMoveType extends `0x1::option::Option<${infer TInner}>`
|
|
60
|
+
? ConvertStructFieldOptionType<DefaultABITable, TInner>
|
|
61
|
+
: UnknownStruct<TMoveType>;
|
|
@@ -50,11 +50,13 @@ type ConvertStructFieldNonStructType<
|
|
|
50
50
|
? ConvertPrimitiveStructField<TMoveType>
|
|
51
51
|
: TMoveType extends `vector<${infer TInner}>`
|
|
52
52
|
? ConvertStructFieldType<TABITable, TInner>[]
|
|
53
|
-
: TMoveType extends `0x1::
|
|
54
|
-
?
|
|
55
|
-
:
|
|
53
|
+
: TMoveType extends `0x1::object::Object<${string}>`
|
|
54
|
+
? { inner: `0x${string}` }
|
|
55
|
+
: TMoveType extends `0x1::option::Option<${infer TInner}>`
|
|
56
|
+
? ConvertStructFieldOptionType<TABITable, TInner>
|
|
57
|
+
: UnknownStruct<TMoveType>;
|
|
56
58
|
|
|
57
|
-
type ConvertStructFieldOptionType<
|
|
59
|
+
export type ConvertStructFieldOptionType<
|
|
58
60
|
TABITable extends ABITable,
|
|
59
61
|
TMoveType extends string,
|
|
60
62
|
> = {
|