@sentio/sdk 2.4.0-rc.1 → 2.5.0-rc.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/lib/aptos/aptos-processor.d.ts +1 -1
- package/lib/aptos/aptos-processor.js +1 -1
- package/lib/aptos/aptos-processor.js.map +1 -1
- package/lib/aptos/builtin/0x1.d.ts +16 -177
- package/lib/aptos/builtin/0x1.js +56 -538
- package/lib/aptos/builtin/0x1.js.map +1 -1
- package/lib/aptos/builtin/0x3.d.ts +2 -13
- package/lib/aptos/builtin/0x3.js +20 -48
- package/lib/aptos/builtin/0x3.js.map +1 -1
- package/lib/aptos/codegen/codegen.d.ts +0 -20
- package/lib/aptos/codegen/codegen.js +37 -357
- package/lib/aptos/codegen/codegen.js.map +1 -1
- package/lib/aptos/{types.test.d.ts → codegen/types.test.d.ts} +0 -0
- package/lib/aptos/codegen/types.test.js.map +1 -0
- package/lib/aptos/models.d.ts +0 -8
- package/lib/aptos/models.js.map +1 -1
- package/lib/aptos/move-coder.d.ts +4 -13
- package/lib/aptos/move-coder.js +13 -124
- package/lib/aptos/move-coder.js.map +1 -1
- package/lib/aptos/move-types.d.ts +6 -0
- package/lib/aptos/move-types.js +52 -1
- package/lib/aptos/move-types.js.map +1 -1
- package/lib/aptos/tests/souffl3.js +1 -1
- package/lib/aptos/tests/souffl3.js.map +1 -1
- package/lib/aptos/tests/types/reserved.d.ts +2 -8
- package/lib/aptos/tests/types/reserved.js +11 -24
- package/lib/aptos/tests/types/reserved.js.map +1 -1
- package/lib/aptos/tests/types/soffl3.d.ts +2 -14
- package/lib/aptos/tests/types/soffl3.js +15 -48
- package/lib/aptos/tests/types/soffl3.js.map +1 -1
- package/lib/aptos/tests/types/souffle.d.ts +2 -8
- package/lib/aptos/tests/types/souffle.js +11 -24
- package/lib/aptos/tests/types/souffle.js.map +1 -1
- package/lib/aptos/utils.d.ts +2 -7
- package/lib/aptos/utils.js +2 -15
- package/lib/aptos/utils.js.map +1 -1
- package/lib/eth/tests/codegen.test.js.map +1 -1
- package/lib/eth/tests/erc20.js +1 -1
- package/lib/eth/tests/erc20.js.map +1 -1
- package/lib/eth/tests/logger.test.js.map +1 -1
- package/lib/move/abstract-codegen.d.ts +44 -0
- package/lib/move/abstract-codegen.js +341 -0
- package/lib/move/abstract-codegen.js.map +1 -0
- package/lib/move/abstract-move-coder.d.ts +24 -0
- package/lib/move/abstract-move-coder.js +141 -0
- package/lib/move/abstract-move-coder.js.map +1 -0
- package/lib/move/account.d.ts +18 -0
- package/lib/{aptos/codegen/typegen.js → move/account.js} +20 -82
- package/lib/move/account.js.map +1 -0
- package/lib/move/filter.d.ts +25 -0
- package/lib/move/filter.js +11 -0
- package/lib/move/filter.js.map +1 -0
- package/lib/move/index.d.ts +5 -25
- package/lib/move/index.js +5 -10
- package/lib/move/index.js.map +1 -1
- package/lib/move/neutral-models.d.ts +34 -0
- package/lib/move/neutral-models.js +7 -0
- package/lib/move/neutral-models.js.map +1 -0
- package/lib/move/ts-type.d.ts +2 -0
- package/lib/move/ts-type.js +77 -0
- package/lib/move/ts-type.js.map +1 -0
- package/lib/{aptos/codegen/typegen.test.d.ts → move/ts-type.test.d.ts} +0 -0
- package/lib/move/ts-type.test.js.map +1 -0
- package/lib/{aptos → move}/types.d.ts +1 -0
- package/lib/{aptos → move}/types.js +26 -3
- package/lib/move/types.js.map +1 -0
- package/lib/move/utils.d.ts +9 -0
- package/lib/move/utils.js +20 -0
- package/lib/move/utils.js.map +1 -0
- package/lib/sui/builtin/0x1.d.ts +114 -0
- package/lib/sui/builtin/0x1.js +174 -0
- package/lib/sui/builtin/0x1.js.map +1 -0
- package/lib/sui/builtin/0x2.d.ts +1047 -0
- package/lib/sui/builtin/0x2.js +1295 -0
- package/lib/sui/builtin/0x2.js.map +1 -0
- package/lib/sui/builtin/index.d.ts +2 -0
- package/lib/sui/builtin/index.js +6 -0
- package/lib/sui/builtin/index.js.map +1 -0
- package/lib/sui/codegen/codegen.d.ts +1 -0
- package/lib/sui/codegen/codegen.js +61 -0
- package/lib/sui/codegen/codegen.js.map +1 -0
- package/lib/sui/codegen/index.d.ts +1 -0
- package/lib/sui/codegen/index.js +2 -0
- package/lib/sui/codegen/index.js.map +1 -0
- package/lib/sui/codegen/run.d.ts +1 -0
- package/lib/sui/codegen/run.js +12 -0
- package/lib/sui/codegen/run.js.map +1 -0
- package/lib/sui/index.d.ts +2 -0
- package/lib/sui/index.js +1 -0
- package/lib/sui/index.js.map +1 -1
- package/lib/sui/models.d.ts +7 -1
- package/lib/sui/models.js +0 -23
- package/lib/sui/models.js.map +1 -1
- package/lib/sui/move-coder.d.ts +11 -0
- package/lib/sui/move-coder.js +53 -0
- package/lib/sui/move-coder.js.map +1 -0
- package/lib/sui/move-types.d.ts +9 -0
- package/lib/sui/move-types.js +81 -0
- package/lib/sui/move-types.js.map +1 -0
- package/lib/sui/sui-processor.js +3 -3
- package/lib/sui/sui-processor.js.map +1 -1
- package/lib/sui/tests/sui.test.js.map +1 -1
- package/lib/sui/tests/types/index.d.ts +1 -0
- package/lib/sui/tests/types/index.js +5 -0
- package/lib/sui/tests/types/index.js.map +1 -0
- package/lib/sui/tests/types/testnet/index.d.ts +1 -0
- package/lib/sui/tests/types/testnet/index.js +5 -0
- package/lib/sui/tests/types/testnet/index.js.map +1 -0
- package/lib/sui/tests/types/testnet/swap.d.ts +249 -0
- package/lib/sui/tests/types/testnet/swap.js +310 -0
- package/lib/sui/tests/types/testnet/swap.js.map +1 -0
- package/lib/testing/aptos-facet.js +1 -1
- package/lib/testing/aptos-facet.js.map +1 -1
- package/lib/testing/sui-facet.js +3 -2
- package/lib/testing/sui-facet.js.map +1 -1
- package/package.json +8 -5
- package/src/aptos/aptos-processor.ts +1 -1
- package/src/aptos/builtin/0x1.ts +70 -652
- package/src/aptos/builtin/0x3.ts +24 -59
- package/src/aptos/codegen/codegen.ts +35 -421
- package/src/aptos/models.ts +0 -10
- package/src/aptos/move-coder.ts +16 -150
- package/src/aptos/move-types.ts +62 -0
- package/src/aptos/tests/souffl3.ts +1 -1
- package/src/aptos/tests/types/reserved.ts +15 -30
- package/src/aptos/tests/types/soffl3.ts +19 -58
- package/src/aptos/tests/types/souffle.ts +15 -30
- package/src/aptos/utils.ts +3 -21
- package/src/eth/tests/erc20.ts +1 -1
- package/src/move/abstract-codegen.ts +426 -0
- package/src/move/abstract-move-coder.ts +170 -0
- package/src/move/account.ts +96 -0
- package/src/move/filter.ts +33 -0
- package/src/move/index.ts +5 -33
- package/src/move/neutral-models.ts +45 -0
- package/src/move/ts-type.ts +86 -0
- package/src/{aptos → move}/types.ts +28 -3
- package/src/move/utils.ts +25 -0
- package/src/sui/abis/0x1.json +1729 -1733
- package/src/sui/abis/0x2.json +13279 -13283
- package/src/sui/builtin/0x1.ts +307 -0
- package/src/sui/builtin/0x2.ts +2578 -0
- package/src/sui/builtin/index.ts +5 -0
- package/src/sui/codegen/codegen.ts +71 -0
- package/src/sui/codegen/index.ts +1 -0
- package/src/sui/codegen/run.ts +13 -0
- package/src/sui/index.ts +4 -0
- package/src/sui/models.ts +7 -28
- package/src/sui/move-coder.ts +63 -0
- package/src/sui/move-types.ts +109 -0
- package/src/sui/sui-processor.ts +3 -3
- package/src/sui/tests/abis/testnet/swap.json +1752 -0
- package/src/sui/tests/types/index.ts +3 -0
- package/src/sui/tests/types/testnet/index.ts +4 -0
- package/src/sui/tests/types/testnet/swap.ts +698 -0
- package/src/testing/aptos-facet.ts +1 -1
- package/src/testing/sui-facet.ts +3 -2
- package/lib/aptos/codegen/typegen.d.ts +0 -18
- package/lib/aptos/codegen/typegen.js.map +0 -1
- package/lib/aptos/codegen/typegen.test.js.map +0 -1
- package/lib/aptos/types.js.map +0 -1
- package/lib/aptos/types.test.js.map +0 -1
- package/lib/jest.config.d.ts +0 -9
- package/lib/jest.config.js +0 -9
- package/lib/jest.config.js.map +0 -1
- package/src/aptos/codegen/typegen.ts +0 -165
- package/src/jest.config.ts +0 -8
|
@@ -1,67 +1,5 @@
|
|
|
1
|
-
import { parseMoveType } from '
|
|
2
|
-
import { moduleQname, moduleQnameForType
|
|
3
|
-
function generateTypeForDescriptor(type, currentAddress) {
|
|
4
|
-
// TODO &signer is defintely an address, but what if &OTHER_TYPE?
|
|
5
|
-
if (type.qname.startsWith('&')) {
|
|
6
|
-
return 'Address';
|
|
7
|
-
}
|
|
8
|
-
switch (type.qname) {
|
|
9
|
-
case 'signer': // TODO check this
|
|
10
|
-
case 'address':
|
|
11
|
-
return 'Address';
|
|
12
|
-
case '0x1::string::String':
|
|
13
|
-
return 'string';
|
|
14
|
-
case 'bool':
|
|
15
|
-
return 'Boolean';
|
|
16
|
-
case 'u8':
|
|
17
|
-
case 'u16':
|
|
18
|
-
case 'u32':
|
|
19
|
-
return 'number';
|
|
20
|
-
case 'u64':
|
|
21
|
-
case 'u128':
|
|
22
|
-
return 'bigint';
|
|
23
|
-
}
|
|
24
|
-
if (type.qname === VECTOR_STR) {
|
|
25
|
-
// vector<u8> as hex string
|
|
26
|
-
const elementTypeQname = type.typeArgs[0].qname;
|
|
27
|
-
if (elementTypeQname === 'u8') {
|
|
28
|
-
return 'string';
|
|
29
|
-
}
|
|
30
|
-
if (elementTypeQname.startsWith('T') && !elementTypeQname.includes(SPLITTER)) {
|
|
31
|
-
return `${elementTypeQname}[] | string`;
|
|
32
|
-
}
|
|
33
|
-
return generateTypeForDescriptor(type.typeArgs[0], currentAddress) + '[]';
|
|
34
|
-
}
|
|
35
|
-
const simpleName = generateSimpleType(type.qname, currentAddress);
|
|
36
|
-
if (simpleName.length === 0) {
|
|
37
|
-
console.error('unexpected error');
|
|
38
|
-
}
|
|
39
|
-
if (simpleName.includes('vector')) {
|
|
40
|
-
console.error('unexpected error');
|
|
41
|
-
}
|
|
42
|
-
if (type.typeArgs.length > 0) {
|
|
43
|
-
// return simpleName
|
|
44
|
-
return simpleName + '<' + type.typeArgs.map((t) => generateTypeForDescriptor(t, currentAddress)).join(',') + '>';
|
|
45
|
-
}
|
|
46
|
-
return simpleName;
|
|
47
|
-
}
|
|
48
|
-
function generateSimpleType(type, currentAddress) {
|
|
49
|
-
const parts = type.split(SPLITTER);
|
|
50
|
-
for (let i = 0; i < parts.length; i++) {
|
|
51
|
-
parts[i] = normalizeToJSName(parts[i]);
|
|
52
|
-
}
|
|
53
|
-
if (parts.length < 2) {
|
|
54
|
-
return parts[0];
|
|
55
|
-
}
|
|
56
|
-
if (parts[0] === currentAddress) {
|
|
57
|
-
return parts.slice(1).join('.');
|
|
58
|
-
}
|
|
59
|
-
return '_' + parts.join('.');
|
|
60
|
-
}
|
|
61
|
-
// TODO ctx need to have type parameters
|
|
62
|
-
export function generateType(type, currentAddress) {
|
|
63
|
-
return generateTypeForDescriptor(parseMoveType(type), currentAddress);
|
|
64
|
-
}
|
|
1
|
+
import { parseMoveType } from './types.js';
|
|
2
|
+
import { moduleQname, moduleQnameForType } from './utils.js';
|
|
65
3
|
export class AccountModulesImportInfo {
|
|
66
4
|
// account to module
|
|
67
5
|
imports;
|
|
@@ -107,9 +45,18 @@ export class AccountRegister {
|
|
|
107
45
|
// the account has already be processed, delete pending task
|
|
108
46
|
this.pendingAccounts.delete(module.address);
|
|
109
47
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
48
|
+
this.registerStruct(module, accountModuleImports);
|
|
49
|
+
this.registerFunctions(module, accountModuleImports);
|
|
50
|
+
this.accountImports.set(currentModuleFqn, accountModuleImports);
|
|
51
|
+
return accountModuleImports;
|
|
52
|
+
}
|
|
53
|
+
registerFunctions(module, accountModuleImports) {
|
|
54
|
+
for (const func of module.exposed_functions) {
|
|
55
|
+
if (!func.is_entry) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
for (const param of func.params) {
|
|
59
|
+
for (const type of param.dependedTypes()) {
|
|
113
60
|
const [account, module] = moduleQnameForType(type);
|
|
114
61
|
accountModuleImports.addImport(account, module);
|
|
115
62
|
if (!this.accountImports.has(account)) {
|
|
@@ -118,12 +65,11 @@ export class AccountRegister {
|
|
|
118
65
|
}
|
|
119
66
|
}
|
|
120
67
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
for (const type of this.loadTypeDescriptor(param).dependedTypes()) {
|
|
68
|
+
}
|
|
69
|
+
registerStruct(module, accountModuleImports) {
|
|
70
|
+
for (const struct of module.structs) {
|
|
71
|
+
for (const field of struct.fields) {
|
|
72
|
+
for (const type of field.type.dependedTypes()) {
|
|
127
73
|
const [account, module] = moduleQnameForType(type);
|
|
128
74
|
accountModuleImports.addImport(account, module);
|
|
129
75
|
if (!this.accountImports.has(account)) {
|
|
@@ -132,14 +78,6 @@ export class AccountRegister {
|
|
|
132
78
|
}
|
|
133
79
|
}
|
|
134
80
|
}
|
|
135
|
-
this.accountImports.set(currentModuleFqn, accountModuleImports);
|
|
136
|
-
return accountModuleImports;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
export function normalizeToJSName(name) {
|
|
140
|
-
if (name === 'package' || name === 'volatile') {
|
|
141
|
-
return name + '_';
|
|
142
81
|
}
|
|
143
|
-
return name;
|
|
144
82
|
}
|
|
145
|
-
//# sourceMappingURL=
|
|
83
|
+
//# sourceMappingURL=account.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/move/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,YAAY,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAG5D,MAAM,OAAO,wBAAwB;IACnC,oBAAoB;IACpB,OAAO,CAA0B;IACjC,OAAO,CAAQ;IACf,UAAU,CAAQ;IAElB,YAAY,OAAe,EAAE,YAAoB;QAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,YAAY,CAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC/C,CAAC;IAED,SAAS,CAAC,OAAe,EAAE,MAAc;QACvC,IAAI,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;YAC5B,OAAM;SACP;QACD,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAC9C,IAAI,CAAC,cAAc,EAAE;YACnB,cAAc,GAAG,IAAI,GAAG,EAAU,CAAA;YAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;SAC1C;QACD,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,eAAe;IAC1B,cAAc,GAAG,IAAI,GAAG,EAAoC,CAAA;IAC5D,eAAe,GAAG,IAAI,GAAG,EAAU,CAAA;IAEnC,oCAAoC;IACpC,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAA;IAEzC,kBAAkB,CAAC,IAAY;QACvC,IAAI,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAE/C,oCAAoC;QACpC,IAAI,CAAC,UAAU,EAAE;YACf,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;YAChC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;SAC3C;QACD,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,QAAQ,CAAC,MAAyB,EAAE,YAAoB;QACtD,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;QAE5C,IAAI,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAClE,IAAI,CAAC,oBAAoB,EAAE;YACzB,oBAAoB,GAAG,IAAI,wBAAwB,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;YACjF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAA;YAC7D,4DAA4D;YAC5D,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;SAC5C;QAED,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;QACjD,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;QAEpD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAA;QAC/D,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IAED,iBAAiB,CAAC,MAAyB,EAAE,oBAA8C;QACzF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,iBAAiB,EAAE;YAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,SAAQ;aACT;YACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,aAAa,EAAE,EAAE;oBACxC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;oBAClD,oBAAoB,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;oBAC/C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;wBACrC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;qBAClC;iBACF;aACF;SACF;IACH,CAAC;IAED,cAAc,CAAC,MAAyB,EAAE,oBAA8C;QACtF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;YACnC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;gBACjC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;oBAC7C,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;oBAClD,oBAAoB,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;oBAC/C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;wBACrC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;qBAClC;iBACF;aACF;SACF;IACH,CAAC;CACF","sourcesContent":["import { parseMoveType, TypeDescriptor } from './types.js'\nimport { moduleQname, moduleQnameForType } from './utils.js'\nimport { NeutralMoveModule } from './neutral-models.js'\n\nexport class AccountModulesImportInfo {\n // account to module\n imports: Map<string, Set<string>>\n account: string\n moduleName: string\n\n constructor(account: string, tsModuleName: string) {\n this.account = account\n this.moduleName = tsModuleName\n this.imports = new Map<string, Set<string>>()\n }\n\n addImport(account: string, module: string) {\n if (account === this.account) {\n return\n }\n let accountModules = this.imports.get(account)\n if (!accountModules) {\n accountModules = new Set<string>()\n this.imports.set(account, accountModules)\n }\n accountModules.add(module)\n }\n}\n\nexport class AccountRegister {\n accountImports = new Map<string, AccountModulesImportInfo>()\n pendingAccounts = new Set<string>()\n\n // loadedAccount = new Set<string>()\n typeDescriptors = new Map<string, TypeDescriptor>()\n\n protected loadTypeDescriptor(type: string) {\n let descriptor = this.typeDescriptors.get(type)\n\n // const descriptparseMoveType(type)\n if (!descriptor) {\n descriptor = parseMoveType(type)\n this.typeDescriptors.set(type, descriptor)\n }\n return descriptor\n }\n\n register(module: NeutralMoveModule, tsModuleName: string): AccountModulesImportInfo {\n const currentModuleFqn = moduleQname(module)\n\n let accountModuleImports = this.accountImports.get(module.address)\n if (!accountModuleImports) {\n accountModuleImports = new AccountModulesImportInfo(module.address, tsModuleName)\n this.accountImports.set(module.address, accountModuleImports)\n // the account has already be processed, delete pending task\n this.pendingAccounts.delete(module.address)\n }\n\n this.registerStruct(module, accountModuleImports)\n this.registerFunctions(module, accountModuleImports)\n\n this.accountImports.set(currentModuleFqn, accountModuleImports)\n return accountModuleImports\n }\n\n registerFunctions(module: NeutralMoveModule, accountModuleImports: AccountModulesImportInfo): void {\n for (const func of module.exposed_functions) {\n if (!func.is_entry) {\n continue\n }\n for (const param of func.params) {\n for (const type of param.dependedTypes()) {\n const [account, module] = moduleQnameForType(type)\n accountModuleImports.addImport(account, module)\n if (!this.accountImports.has(account)) {\n this.pendingAccounts.add(account)\n }\n }\n }\n }\n }\n\n registerStruct(module: NeutralMoveModule, accountModuleImports: AccountModulesImportInfo): void {\n for (const struct of module.structs) {\n for (const field of struct.fields) {\n for (const type of field.type.dependedTypes()) {\n const [account, module] = moduleQnameForType(type)\n accountModuleImports.addImport(account, module)\n if (!this.accountImports.has(account)) {\n this.pendingAccounts.add(account)\n }\n }\n }\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { MoveFetchConfig, ProcessResult } from '@sentio/protos';
|
|
2
|
+
export interface EventFilter {
|
|
3
|
+
type: string;
|
|
4
|
+
account?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface FunctionNameAndCallFilter extends CallFilter {
|
|
7
|
+
function: string;
|
|
8
|
+
}
|
|
9
|
+
export interface CallFilter {
|
|
10
|
+
includeFailed?: boolean;
|
|
11
|
+
typeArguments?: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface ArgumentsFilter {
|
|
14
|
+
arguments?: string[];
|
|
15
|
+
}
|
|
16
|
+
export declare class EventHandler<T> {
|
|
17
|
+
filters: EventFilter[];
|
|
18
|
+
handler: (event: T) => Promise<ProcessResult>;
|
|
19
|
+
fetchConfig: MoveFetchConfig;
|
|
20
|
+
}
|
|
21
|
+
export declare class CallHandler<T> {
|
|
22
|
+
filters: FunctionNameAndCallFilter[];
|
|
23
|
+
handler: (call: T) => Promise<ProcessResult>;
|
|
24
|
+
fetchConfig: MoveFetchConfig;
|
|
25
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/move/filter.ts"],"names":[],"mappings":"AAsBA,MAAM,OAAO,YAAY;IACvB,OAAO,CAAe;IACtB,OAAO,CAAsC;IAC7C,WAAW,CAAiB;CAC7B;AAED,MAAM,OAAO,WAAW;IACtB,OAAO,CAA6B;IACpC,OAAO,CAAqC;IAC5C,WAAW,CAAiB;CAC7B","sourcesContent":["// TODO extends ArgumentsFilter\nimport { MoveFetchConfig, ProcessResult } from '@sentio/protos'\n\nexport interface EventFilter {\n type: string\n account?: string\n}\n\nexport interface FunctionNameAndCallFilter extends CallFilter {\n function: string\n}\n\n// TODO extends ArgumentsFilter\nexport interface CallFilter {\n includeFailed?: boolean\n typeArguments?: string[]\n}\n\nexport interface ArgumentsFilter {\n arguments?: string[]\n}\n\nexport class EventHandler<T> {\n filters: EventFilter[]\n handler: (event: T) => Promise<ProcessResult>\n fetchConfig: MoveFetchConfig\n}\n\nexport class CallHandler<T> {\n filters: FunctionNameAndCallFilter[]\n handler: (call: T) => Promise<ProcessResult>\n fetchConfig: MoveFetchConfig\n}\n"]}
|
package/lib/move/index.d.ts
CHANGED
|
@@ -1,25 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export interface FunctionNameAndCallFilter extends CallFilter {
|
|
7
|
-
function: string;
|
|
8
|
-
}
|
|
9
|
-
export interface CallFilter {
|
|
10
|
-
includeFailed?: boolean;
|
|
11
|
-
typeArguments?: string[];
|
|
12
|
-
}
|
|
13
|
-
export interface ArgumentsFilter {
|
|
14
|
-
arguments?: string[];
|
|
15
|
-
}
|
|
16
|
-
export declare class EventHandler<T> {
|
|
17
|
-
filters: EventFilter[];
|
|
18
|
-
handler: (event: T) => Promise<ProcessResult>;
|
|
19
|
-
fetchConfig: MoveFetchConfig;
|
|
20
|
-
}
|
|
21
|
-
export declare class CallHandler<T> {
|
|
22
|
-
filters: FunctionNameAndCallFilter[];
|
|
23
|
-
handler: (call: T) => Promise<ProcessResult>;
|
|
24
|
-
fetchConfig: MoveFetchConfig;
|
|
25
|
-
}
|
|
1
|
+
export * from './filter.js';
|
|
2
|
+
export * from './types.js';
|
|
3
|
+
export * from './ts-type.js';
|
|
4
|
+
export * from './utils.js';
|
|
5
|
+
export * from './account.js';
|
package/lib/move/index.js
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export class CallHandler {
|
|
7
|
-
filters;
|
|
8
|
-
handler;
|
|
9
|
-
fetchConfig;
|
|
10
|
-
}
|
|
1
|
+
export * from './filter.js';
|
|
2
|
+
export * from './types.js';
|
|
3
|
+
export * from './ts-type.js';
|
|
4
|
+
export * from './utils.js';
|
|
5
|
+
export * from './account.js';
|
|
11
6
|
//# sourceMappingURL=index.js.map
|
package/lib/move/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/move/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/move/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA","sourcesContent":["export * from './filter.js'\nexport * from './types.js'\nexport * from './ts-type.js'\nexport * from './utils.js'\nexport * from './account.js'\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { TypeDescriptor } from './types.js';
|
|
2
|
+
export interface NeutralMoveModule {
|
|
3
|
+
address: string;
|
|
4
|
+
name: string;
|
|
5
|
+
exposed_functions: Array<NeutralMoveFunction>;
|
|
6
|
+
structs: Array<NeutralMoveStruct>;
|
|
7
|
+
}
|
|
8
|
+
export interface NeutralMoveFunction {
|
|
9
|
+
name: string;
|
|
10
|
+
visibility: NeutralMoveFunctionVisibility;
|
|
11
|
+
is_entry: boolean;
|
|
12
|
+
generic_type_params: Array<NeutralMoveGenericTypeParam>;
|
|
13
|
+
params: Array<TypeDescriptor>;
|
|
14
|
+
return: Array<TypeDescriptor>;
|
|
15
|
+
}
|
|
16
|
+
export interface NeutralMoveStruct {
|
|
17
|
+
name: string;
|
|
18
|
+
is_native: boolean;
|
|
19
|
+
abilities: Array<string>;
|
|
20
|
+
generic_type_params: Array<NeutralMoveGenericTypeParam>;
|
|
21
|
+
fields: Array<NeutralMoveStructField>;
|
|
22
|
+
}
|
|
23
|
+
export interface NeutralMoveStructField {
|
|
24
|
+
name: string;
|
|
25
|
+
type: TypeDescriptor;
|
|
26
|
+
}
|
|
27
|
+
export declare enum NeutralMoveFunctionVisibility {
|
|
28
|
+
PRIVATE = "private",
|
|
29
|
+
PUBLIC = "public",
|
|
30
|
+
FRIEND = "friend"
|
|
31
|
+
}
|
|
32
|
+
export type NeutralMoveGenericTypeParam = {
|
|
33
|
+
constraints: Array<string>;
|
|
34
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export var NeutralMoveFunctionVisibility;
|
|
2
|
+
(function (NeutralMoveFunctionVisibility) {
|
|
3
|
+
NeutralMoveFunctionVisibility["PRIVATE"] = "private";
|
|
4
|
+
NeutralMoveFunctionVisibility["PUBLIC"] = "public";
|
|
5
|
+
NeutralMoveFunctionVisibility["FRIEND"] = "friend";
|
|
6
|
+
})(NeutralMoveFunctionVisibility || (NeutralMoveFunctionVisibility = {}));
|
|
7
|
+
//# sourceMappingURL=neutral-models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"neutral-models.js","sourceRoot":"","sources":["../../src/move/neutral-models.ts"],"names":[],"mappings":"AAoCA,MAAM,CAAN,IAAY,6BAIX;AAJD,WAAY,6BAA6B;IACvC,oDAAmB,CAAA;IACnB,kDAAiB,CAAA;IACjB,kDAAiB,CAAA;AACnB,CAAC,EAJW,6BAA6B,KAA7B,6BAA6B,QAIxC","sourcesContent":["import { TypeDescriptor } from './types.js'\n\nexport interface NeutralMoveModule {\n address: string\n name: string\n\n exposed_functions: Array<NeutralMoveFunction>\n structs: Array<NeutralMoveStruct>\n}\n\nexport interface NeutralMoveFunction {\n name: string\n visibility: NeutralMoveFunctionVisibility\n is_entry: boolean\n generic_type_params: Array<NeutralMoveGenericTypeParam>\n params: Array<TypeDescriptor>\n return: Array<TypeDescriptor>\n}\n\nexport interface NeutralMoveStruct {\n name: string\n\n is_native: boolean\n\n abilities: Array<string>\n\n generic_type_params: Array<NeutralMoveGenericTypeParam>\n\n fields: Array<NeutralMoveStructField>\n}\n\nexport interface NeutralMoveStructField {\n name: string\n type: TypeDescriptor\n}\n\nexport enum NeutralMoveFunctionVisibility {\n PRIVATE = 'private',\n PUBLIC = 'public',\n FRIEND = 'friend',\n}\n\nexport type NeutralMoveGenericTypeParam = {\n constraints: Array<string>\n}\n"]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { normalizeToJSName, SPLITTER, VECTOR_STR } from './utils.js';
|
|
2
|
+
export function generateTypeForDescriptor(type, currentAddress, addressType) {
|
|
3
|
+
// TODO &signer is defintely an address, but what if &OTHER_TYPE?
|
|
4
|
+
if (type.qname.startsWith('&')) {
|
|
5
|
+
console.error('Unexpected &');
|
|
6
|
+
return addressType;
|
|
7
|
+
}
|
|
8
|
+
if (type.reference) {
|
|
9
|
+
return addressType;
|
|
10
|
+
}
|
|
11
|
+
switch (type.qname) {
|
|
12
|
+
case 'signer': // TODO check this
|
|
13
|
+
case 'address':
|
|
14
|
+
case 'Address':
|
|
15
|
+
return addressType;
|
|
16
|
+
case '0x2::object::ID':
|
|
17
|
+
case '0x2::coin::Coin':
|
|
18
|
+
return 'string';
|
|
19
|
+
case '0x1::string::String':
|
|
20
|
+
return 'string';
|
|
21
|
+
case 'bool':
|
|
22
|
+
case 'Bool':
|
|
23
|
+
return 'Boolean';
|
|
24
|
+
case 'u8':
|
|
25
|
+
case 'U8':
|
|
26
|
+
case 'u16':
|
|
27
|
+
case 'U16':
|
|
28
|
+
case 'u32':
|
|
29
|
+
case 'U32':
|
|
30
|
+
return 'number';
|
|
31
|
+
case 'u64':
|
|
32
|
+
case 'U64':
|
|
33
|
+
case 'u128':
|
|
34
|
+
case 'U128':
|
|
35
|
+
return 'bigint';
|
|
36
|
+
}
|
|
37
|
+
if (type.qname.toLowerCase() === VECTOR_STR) {
|
|
38
|
+
// vector<u8> as hex string
|
|
39
|
+
const elementTypeQname = type.typeArgs[0].qname;
|
|
40
|
+
if (elementTypeQname === 'u8' || elementTypeQname === 'U8') {
|
|
41
|
+
return 'string';
|
|
42
|
+
}
|
|
43
|
+
if (elementTypeQname.startsWith('T') && !elementTypeQname.includes(SPLITTER)) {
|
|
44
|
+
return `${elementTypeQname}[] | string`;
|
|
45
|
+
}
|
|
46
|
+
return generateTypeForDescriptor(type.typeArgs[0], currentAddress, addressType) + '[]';
|
|
47
|
+
}
|
|
48
|
+
const simpleName = generateSimpleType(type.qname, currentAddress);
|
|
49
|
+
if (simpleName.length === 0) {
|
|
50
|
+
console.error('unexpected error');
|
|
51
|
+
}
|
|
52
|
+
if (simpleName.toLowerCase().includes(VECTOR_STR)) {
|
|
53
|
+
console.error('unexpected vector type error');
|
|
54
|
+
}
|
|
55
|
+
if (type.typeArgs.length > 0) {
|
|
56
|
+
// return simpleName
|
|
57
|
+
return (simpleName +
|
|
58
|
+
'<' +
|
|
59
|
+
type.typeArgs.map((t) => generateTypeForDescriptor(t, currentAddress, addressType)).join(',') +
|
|
60
|
+
'>');
|
|
61
|
+
}
|
|
62
|
+
return simpleName;
|
|
63
|
+
}
|
|
64
|
+
function generateSimpleType(type, currentAddress) {
|
|
65
|
+
const parts = type.split(SPLITTER);
|
|
66
|
+
for (let i = 0; i < parts.length; i++) {
|
|
67
|
+
parts[i] = normalizeToJSName(parts[i]);
|
|
68
|
+
}
|
|
69
|
+
if (parts.length < 2) {
|
|
70
|
+
return parts[0];
|
|
71
|
+
}
|
|
72
|
+
if (parts[0] === currentAddress) {
|
|
73
|
+
return parts.slice(1).join('.');
|
|
74
|
+
}
|
|
75
|
+
return '_' + parts.join('.');
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=ts-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-type.js","sourceRoot":"","sources":["../../src/move/ts-type.ts"],"names":[],"mappings":"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","sourcesContent":["import { TypeDescriptor } from './types.js'\nimport { normalizeToJSName, SPLITTER, VECTOR_STR } from './utils.js'\n\nexport function generateTypeForDescriptor(type: TypeDescriptor, currentAddress: string, addressType: string): string {\n // TODO &signer is defintely an address, but what if &OTHER_TYPE?\n if (type.qname.startsWith('&')) {\n console.error('Unexpected &')\n return addressType\n }\n if (type.reference) {\n return addressType\n }\n\n switch (type.qname) {\n case 'signer': // TODO check this\n case 'address':\n case 'Address':\n return addressType\n case '0x2::object::ID':\n case '0x2::coin::Coin':\n return 'string'\n case '0x1::string::String':\n return 'string'\n case 'bool':\n case 'Bool':\n return 'Boolean'\n case 'u8':\n case 'U8':\n case 'u16':\n case 'U16':\n case 'u32':\n case 'U32':\n return 'number'\n case 'u64':\n case 'U64':\n case 'u128':\n case 'U128':\n return 'bigint'\n }\n\n if (type.qname.toLowerCase() === VECTOR_STR) {\n // vector<u8> as hex string\n const elementTypeQname = type.typeArgs[0].qname\n if (elementTypeQname === 'u8' || elementTypeQname === 'U8') {\n return 'string'\n }\n if (elementTypeQname.startsWith('T') && !elementTypeQname.includes(SPLITTER)) {\n return `${elementTypeQname}[] | string`\n }\n return generateTypeForDescriptor(type.typeArgs[0], currentAddress, addressType) + '[]'\n }\n\n const simpleName = generateSimpleType(type.qname, currentAddress)\n if (simpleName.length === 0) {\n console.error('unexpected error')\n }\n if (simpleName.toLowerCase().includes(VECTOR_STR)) {\n console.error('unexpected vector type error')\n }\n if (type.typeArgs.length > 0) {\n // return simpleName\n return (\n simpleName +\n '<' +\n type.typeArgs.map((t) => generateTypeForDescriptor(t, currentAddress, addressType)).join(',') +\n '>'\n )\n }\n return simpleName\n}\n\nfunction generateSimpleType(type: string, currentAddress: string): string {\n const parts = type.split(SPLITTER)\n\n for (let i = 0; i < parts.length; i++) {\n parts[i] = normalizeToJSName(parts[i])\n }\n\n if (parts.length < 2) {\n return parts[0]\n }\n if (parts[0] === currentAddress) {\n return parts.slice(1).join('.')\n }\n return '_' + parts.join('.')\n}\n"]}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-type.test.js","sourceRoot":"","sources":["../../src/move/ts-type.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,GAAG,GAAG,aAAa,CAAC,8BAA8B,CAAC,CAAA;QAEzD,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,CAAA;QACzB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAA;QAClD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;QAEhC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;QAC3B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,UAAU,GACd,wJAAwJ,CAAA;QAC1J,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;QAErC,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;QAChC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;QACzB,MAAM,CACJ,IAAI,CAAC,CAAC,CAAC,KAAK,mGAAmG,CAChH,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,yCAAyC,CAAC,CAAA;QAE7D,MAAM,kBAAkB,GAAG,GAAG,CAAC,YAAY,EAAE,CAAA;QAC7C,MAAM,CAAC,kBAAkB,KAAK,UAAU,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IACF,sCAAsC;IACtC,EAAE;IACF,iEAAiE;IACjE,qBAAqB;IACrB,EAAE;IACF,+BAA+B;IAC/B,4DAA4D;IAC5D,yEAAyE;IACzE,KAAK;AACP,CAAC,CAAC,CAAA","sourcesContent":["import { assert } from 'chai'\nimport { parseMoveType } from './types.js'\n\ndescribe('type gen', () => {\n test('type gen for generic', async () => {\n const res = parseMoveType('x<g1<a,g2<c,d>>,b,g3<a,b>,e>')\n\n assert(res.qname === 'x')\n assert(res.typeArgs[0].typeArgs[1].qname === 'g2')\n assert(res.typeArgs[0].typeArgs[1].typeArgs[1].qname === 'd')\n })\n\n test('type gen for non generic', async () => {\n const res = parseMoveType('xyz')\n\n assert(res.qname === 'xyz')\n assert(res.typeArgs.length === 0)\n })\n\n test('test depended types', async () => {\n const typeString =\n '0x1::table_with_length::TableWithLength<T0, 0xd5f9f2b1c24faee8f07b790e570c75dfa1b7d8c1e9a60162fbd92ade03ea29e4::iterable_table::IterableValue<T0, T1>>'\n const res = parseMoveType(typeString)\n\n const deps = res.dependedTypes()\n assert(deps.length === 2)\n assert(\n deps[0] === '0xd5f9f2b1c24faee8f07b790e570c75dfa1b7d8c1e9a60162fbd92ade03ea29e4::iterable_table::IterableValue'\n )\n assert(deps[1] === '0x1::table_with_length::TableWithLength')\n\n const computedTypeString = res.getSignature()\n assert(computedTypeString === typeString)\n })\n // test('type type gen', async () => {\n //\n // const res = parseGenericType('x<g1<a,g2<c,d>>,b,g3<a,b>,e>')\n // console.log(res)\n //\n // assert(res.symbol === 'x')\n // assert(res.typeParams[0].typeParams[1].symbol === \"g2\")\n // assert(res.typeParams[0].typeParams[1].typeParams[1].symbol === \"d\")\n // })\n})\n"]}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { SPLITTER, VECTOR_STR } from './utils.js';
|
|
2
2
|
export class TypeDescriptor {
|
|
3
3
|
// type: string
|
|
4
|
+
// TODO add reference flag
|
|
4
5
|
// qualified name without type parameters
|
|
5
6
|
qname;
|
|
7
|
+
reference;
|
|
6
8
|
// account?: string
|
|
7
9
|
// module?: string
|
|
8
10
|
typeArgs;
|
|
@@ -40,18 +42,29 @@ export class TypeDescriptor {
|
|
|
40
42
|
// all depended types including itself, not include system type
|
|
41
43
|
dependedTypes() {
|
|
42
44
|
if (this.qname.startsWith('&')) {
|
|
45
|
+
console.error('Not expected &');
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
if (this.reference) {
|
|
43
49
|
return [];
|
|
44
50
|
}
|
|
45
51
|
switch (this.qname) {
|
|
46
52
|
case 'signer':
|
|
47
53
|
case 'address':
|
|
54
|
+
case 'Address':
|
|
48
55
|
case '0x1::string::String':
|
|
49
56
|
case 'bool':
|
|
57
|
+
case 'Bool':
|
|
50
58
|
case 'u8':
|
|
59
|
+
case 'U8':
|
|
51
60
|
case 'u16':
|
|
61
|
+
case 'U16':
|
|
52
62
|
case 'u32':
|
|
63
|
+
case 'U32':
|
|
53
64
|
case 'u64':
|
|
65
|
+
case 'U64':
|
|
54
66
|
case 'u128':
|
|
67
|
+
case 'U128':
|
|
55
68
|
return [];
|
|
56
69
|
}
|
|
57
70
|
// Type parameters are not depended
|
|
@@ -87,30 +100,33 @@ export function parseMoveType(type) {
|
|
|
87
100
|
const symbol = buffer.join('');
|
|
88
101
|
buffer = [];
|
|
89
102
|
stack[stack.length - 1].qname = symbol;
|
|
103
|
+
adjustType(stack[stack.length - 1]);
|
|
90
104
|
stack.push(new TypeDescriptor(''));
|
|
91
105
|
continue;
|
|
92
106
|
}
|
|
93
107
|
if (ch === '>') {
|
|
94
108
|
const typeParam = stack.pop();
|
|
95
109
|
if (!typeParam) {
|
|
96
|
-
throw Error('
|
|
110
|
+
throw Error('Unexpected stack size');
|
|
97
111
|
}
|
|
98
112
|
if (buffer.length > 0) {
|
|
99
113
|
typeParam.qname = buffer.join('');
|
|
100
114
|
buffer = [];
|
|
101
115
|
}
|
|
116
|
+
adjustType(typeParam);
|
|
102
117
|
stack[stack.length - 1].typeArgs.push(typeParam);
|
|
103
118
|
continue;
|
|
104
119
|
}
|
|
105
120
|
if (ch === ',') {
|
|
106
121
|
const typeParam = stack.pop();
|
|
107
122
|
if (!typeParam) {
|
|
108
|
-
throw Error('
|
|
123
|
+
throw Error('Unexpected stack size');
|
|
109
124
|
}
|
|
110
125
|
if (buffer.length > 0) {
|
|
111
126
|
typeParam.qname = buffer.join('');
|
|
112
127
|
buffer = [];
|
|
113
128
|
}
|
|
129
|
+
adjustType(typeParam);
|
|
114
130
|
stack[stack.length - 1].typeArgs.push(typeParam);
|
|
115
131
|
// continue parse next param
|
|
116
132
|
stack.push(new TypeDescriptor(''));
|
|
@@ -121,10 +137,17 @@ export function parseMoveType(type) {
|
|
|
121
137
|
if (buffer.length > 0) {
|
|
122
138
|
stack[stack.length - 1].qname = buffer.join('');
|
|
123
139
|
}
|
|
140
|
+
adjustType(stack[stack.length - 1]);
|
|
124
141
|
const res = stack.pop();
|
|
125
142
|
if (!res || stack.length > 0) {
|
|
126
|
-
throw Error('
|
|
143
|
+
throw Error('Unexpected stack size');
|
|
127
144
|
}
|
|
128
145
|
return res;
|
|
129
146
|
}
|
|
147
|
+
function adjustType(type) {
|
|
148
|
+
if (type.qname.startsWith('&')) {
|
|
149
|
+
type.reference = true;
|
|
150
|
+
type.qname = type.qname.slice(1);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
130
153
|
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/move/types.ts"],"names":[],"mappings":"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","sourcesContent":["import { SPLITTER, VECTOR_STR } from './utils.js'\n\nexport class TypeDescriptor {\n // type: string\n\n // TODO add reference flag\n\n // qualified name without type parameters\n qname: string\n reference: boolean\n // account?: string\n // module?: string\n\n typeArgs: TypeDescriptor[]\n\n constructor(symbol: string, typeParams?: TypeDescriptor[]) {\n this.qname = symbol\n this.typeArgs = typeParams || []\n }\n\n getSignature(): string {\n if (this.typeArgs.length > 0) {\n return this.qname + '<' + this.typeArgs.map((t) => t.getSignature()).join(', ') + '>'\n }\n return this.qname\n }\n\n // Replace T0, T1 with more concrete type\n applyTypeArgs(ctx: Map<string, TypeDescriptor>): TypeDescriptor {\n const replace = ctx.get(this.qname)\n if (replace) {\n return replace\n }\n if (ctx.size === 0 || this.typeArgs.length === 0) {\n return this\n }\n\n const typeArgs: TypeDescriptor[] = []\n for (const arg of this.typeArgs) {\n const replace = ctx.get(arg.qname)\n if (replace) {\n typeArgs.push(replace)\n } else {\n typeArgs.push(arg.applyTypeArgs(ctx))\n }\n }\n return new TypeDescriptor(this.qname, typeArgs)\n }\n\n // all depended types including itself, not include system type\n dependedTypes(): string[] {\n if (this.qname.startsWith('&')) {\n console.error('Not expected &')\n return []\n }\n if (this.reference) {\n return []\n }\n switch (this.qname) {\n case 'signer':\n case 'address':\n case 'Address':\n case '0x1::string::String':\n case 'bool':\n case 'Bool':\n case 'u8':\n case 'U8':\n case 'u16':\n case 'U16':\n case 'u32':\n case 'U32':\n case 'u64':\n case 'U64':\n case 'u128':\n case 'U128':\n return []\n }\n\n // Type parameters are not depended\n if (this.qname.indexOf(SPLITTER) == -1) {\n if (this.qname.startsWith('T')) {\n return []\n }\n }\n\n const types = new Set<string>()\n for (const param of this.typeArgs) {\n param.dependedTypes().forEach((t) => types.add(t))\n }\n\n if (this.qname !== VECTOR_STR) {\n types.add(this.qname)\n }\n\n return Array.from(types)\n }\n}\n\nexport function parseMoveType(type: string): TypeDescriptor {\n // type = type.replace('&', '')\n\n type = type.replaceAll('&mut ', '&')\n type = type.replaceAll('mut ', '')\n\n // TODO replace ' ' is not exactly safe, need to double check this\n type = type.replaceAll(' ', '')\n\n const stack: TypeDescriptor[] = [new TypeDescriptor('')]\n let buffer = []\n\n // xxx:asdf<g1<a,<c,d>>, b, g2<a,b>, e>\n for (let i = 0; i < type.length; i++) {\n const ch = type[i]\n if (ch === '<') {\n // const symbol = type.slice(symbolStart, i)\n // symbolStart =\n const symbol = buffer.join('')\n buffer = []\n stack[stack.length - 1].qname = symbol\n adjustType(stack[stack.length - 1])\n stack.push(new TypeDescriptor(''))\n continue\n }\n if (ch === '>') {\n const typeParam = stack.pop()\n if (!typeParam) {\n throw Error('Unexpected stack size')\n }\n if (buffer.length > 0) {\n typeParam.qname = buffer.join('')\n buffer = []\n }\n adjustType(typeParam)\n stack[stack.length - 1].typeArgs.push(typeParam)\n continue\n }\n if (ch === ',') {\n const typeParam = stack.pop()\n if (!typeParam) {\n throw Error('Unexpected stack size')\n }\n if (buffer.length > 0) {\n typeParam.qname = buffer.join('')\n buffer = []\n }\n adjustType(typeParam)\n\n stack[stack.length - 1].typeArgs.push(typeParam)\n // continue parse next param\n stack.push(new TypeDescriptor(''))\n continue\n }\n\n buffer.push(ch)\n }\n\n if (buffer.length > 0) {\n stack[stack.length - 1].qname = buffer.join('')\n }\n adjustType(stack[stack.length - 1])\n\n const res = stack.pop()\n if (!res || stack.length > 0) {\n throw Error('Unexpected stack size')\n }\n return res\n}\n\nfunction adjustType(type: TypeDescriptor) {\n if (type.qname.startsWith('&')) {\n type.reference = true\n type.qname = type.qname.slice(1)\n }\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const SPLITTER = "::";
|
|
2
|
+
export declare const VECTOR_STR = "vector";
|
|
3
|
+
export declare function isFrameworkAccount(account: string): boolean;
|
|
4
|
+
export declare function normalizeToJSName(name: string): string;
|
|
5
|
+
export declare function moduleQnameForType(type: string): [string, string];
|
|
6
|
+
export declare function moduleQname(module: {
|
|
7
|
+
address: string;
|
|
8
|
+
name: string;
|
|
9
|
+
}): string;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const SPLITTER = '::';
|
|
2
|
+
export const VECTOR_STR = 'vector';
|
|
3
|
+
export function isFrameworkAccount(account) {
|
|
4
|
+
return account === '0x1' || account === '0x2' || account === '0x3';
|
|
5
|
+
}
|
|
6
|
+
const KEYWORDS = new Set(['package', 'namespace', 'volatile', 'object', 'string', 'number', 'bigint']);
|
|
7
|
+
export function normalizeToJSName(name) {
|
|
8
|
+
if (KEYWORDS.has(name)) {
|
|
9
|
+
return name + '_';
|
|
10
|
+
}
|
|
11
|
+
return name;
|
|
12
|
+
}
|
|
13
|
+
export function moduleQnameForType(type) {
|
|
14
|
+
const parts = type.split(SPLITTER).slice(0, 2);
|
|
15
|
+
return [parts[0], parts[1]];
|
|
16
|
+
}
|
|
17
|
+
export function moduleQname(module) {
|
|
18
|
+
return module.address.toLowerCase() + SPLITTER + module.name;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/move/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAA;AAE5B,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAA;AAElC,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,CAAA;AACpE,CAAC;AAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AAEtG,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACtB,OAAO,IAAI,GAAG,GAAG,CAAA;KAClB;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAyC;IACnE,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAA;AAC9D,CAAC","sourcesContent":["export const SPLITTER = '::'\n\nexport const VECTOR_STR = 'vector'\n\nexport function isFrameworkAccount(account: string) {\n return account === '0x1' || account === '0x2' || account === '0x3'\n}\n\nconst KEYWORDS = new Set(['package', 'namespace', 'volatile', 'object', 'string', 'number', 'bigint'])\n\nexport function normalizeToJSName(name: string) {\n if (KEYWORDS.has(name)) {\n return name + '_'\n }\n return name\n}\n\nexport function moduleQnameForType(type: string): [string, string] {\n const parts = type.split(SPLITTER).slice(0, 2)\n return [parts[0], parts[1]]\n}\n\nexport function moduleQname(module: { address: string; name: string }): string {\n return module.address.toLowerCase() + SPLITTER + module.name\n}\n"]}
|