@sentio/sdk 2.13.0-rc.2 → 2.13.0-rc.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/lib/aptos/aptos-chain-adapter.d.ts +11 -0
- package/lib/aptos/aptos-chain-adapter.js +56 -0
- package/lib/aptos/aptos-chain-adapter.js.map +1 -0
- package/lib/aptos/codegen/codegen.js +4 -45
- package/lib/aptos/codegen/codegen.js.map +1 -1
- package/lib/aptos/move-coder.d.ts +3 -3
- package/lib/aptos/move-coder.js +8 -6
- package/lib/aptos/move-coder.js.map +1 -1
- package/lib/move/abstract-codegen.d.ts +3 -4
- package/lib/move/abstract-codegen.js +10 -6
- package/lib/move/abstract-codegen.js.map +1 -1
- package/lib/move/abstract-move-coder.d.ts +5 -2
- package/lib/move/abstract-move-coder.js +7 -1
- package/lib/move/abstract-move-coder.js.map +1 -1
- package/lib/move/chain-adapter.d.ts +9 -0
- package/lib/move/chain-adapter.js +3 -0
- package/lib/move/chain-adapter.js.map +1 -0
- package/lib/move/index.d.ts +1 -0
- package/lib/move/index.js +1 -0
- package/lib/move/index.js.map +1 -1
- package/lib/sui/codegen/codegen.js +4 -34
- package/lib/sui/codegen/codegen.js.map +1 -1
- package/lib/sui/move-coder.d.ts +4 -3
- package/lib/sui/move-coder.js +8 -6
- package/lib/sui/move-coder.js.map +1 -1
- package/lib/sui/sui-chain-adapter.d.ts +11 -0
- package/lib/sui/sui-chain-adapter.js +43 -0
- package/lib/sui/sui-chain-adapter.js.map +1 -0
- package/lib/sui/utils.d.ts +0 -2
- package/lib/sui/utils.js +0 -6
- package/lib/sui/utils.js.map +1 -1
- package/package.json +4 -4
- package/src/aptos/aptos-chain-adapter.ts +65 -0
- package/src/aptos/codegen/codegen.ts +5 -54
- package/src/aptos/move-coder.ts +11 -10
- package/src/move/abstract-codegen.ts +12 -13
- package/src/move/abstract-move-coder.ts +10 -3
- package/src/move/chain-adapter.ts +14 -0
- package/src/move/index.ts +1 -0
- package/src/sui/codegen/codegen.ts +5 -40
- package/src/sui/move-coder.ts +12 -9
- package/src/sui/sui-chain-adapter.ts +50 -0
- package/src/sui/utils.ts +0 -8
- package/lib/aptos/utils.d.ts +0 -2
- package/lib/aptos/utils.js +0 -10
- package/lib/aptos/utils.js.map +0 -1
- package/src/aptos/utils.ts +0 -11
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"abstract-move-coder.js","sourceRoot":"","sources":["../../src/move/abstract-move-coder.ts"],"names":[],"mappings":"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","sourcesContent":["import { moduleQname, SPLITTER, VECTOR_STR } from './utils.js'\nimport { parseMoveType, TypeDescriptor } from './types.js'\nimport { InternalMoveFunction, InternalMoveModule, InternalMoveStruct } from './internal-models.js'\nimport { bytesToBigInt } from '../utils/index.js'\n\nexport type StructWithTag<Base> = {\n type: string\n data: Base\n}\n\nexport type DecodedStructWithTag<B, T> = StructWithTag<B> & {\n data_decoded: T\n type_arguments: string[]\n}\n\nexport abstract class AbstractMoveCoder<StructType> {\n private moduleMapping = new Map<string, InternalMoveModule>()\n private typeMapping = new Map<string, InternalMoveStruct>()\n private funcMapping = new Map<string, InternalMoveFunction>()\n\n contains(account: string, name: string) {\n return this.moduleMapping.has(account + '::' + name)\n }\n\n protected abstract getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[]\n\n protected toStructWithTag(val: StructType): StructWithTag<StructType> {\n return val as any\n }\n\n protected loadInternal(module: InternalMoveModule) {\n if (this.contains(module.address, module.name)) {\n return\n }\n this.moduleMapping.set(moduleQname(module), module)\n\n for (const struct of module.structs) {\n // TODO move to util\n const key = [module.address, module.name, struct.name].join(SPLITTER)\n this.typeMapping.set(key, struct)\n }\n\n for (const func of module.exposedFunctions) {\n // if (!func.isEntry) {\n // continue\n // }\n const key = [module.address, module.name, func.name].join(SPLITTER)\n this.funcMapping.set(key, func)\n }\n }\n\n protected decodeBigInt(data: any): bigint {\n if (Array.isArray(data)) {\n // Only sui function need this, strange\n const bytes = data as number[]\n return bytesToBigInt(new Uint8Array(bytes.slice().reverse()))\n } else {\n return BigInt(data)\n }\n }\n\n protected encodeBigInt(data: bigint): any {\n return '0x' + data.toString(16)\n }\n\n getMoveStruct(type: string): InternalMoveStruct {\n const struct = this.typeMapping.get(type)\n if (!struct) {\n throw new Error('Failed to load type' + type + ' type are not imported anywhere')\n }\n return struct\n }\n\n getMoveFunction(type: string): InternalMoveFunction {\n const func = this.funcMapping.get(type)\n if (!func) {\n throw new Error('Failed to load function ' + type + ' type are not imported anywhere')\n }\n return func\n }\n\n decode(data: any, type: TypeDescriptor): any {\n // process simple type\n if (type.reference) {\n return data\n }\n switch (type.qname) {\n case 'signer': // TODO check this, aptos only\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 return data\n case 'u64':\n case 'U64':\n case 'u128':\n case 'U128':\n return this.decodeBigInt(data)\n }\n\n // process vector\n if (type.qname === VECTOR_STR) {\n // vector<u8> as hex string\n if (type.typeArgs[0].qname === 'u8' || type.typeArgs[0].qname === 'U8') {\n return data\n }\n\n const res = []\n for (const entry of data) {\n res.push(this.decode(entry, type.typeArgs[0]))\n }\n return res\n }\n\n // Process complex type\n const struct = this.getMoveStruct(type.qname)\n\n const typeCtx = new Map<string, TypeDescriptor>()\n for (const [idx, typeArg] of type.typeArgs.entries()) {\n typeCtx.set('T' + idx, typeArg)\n }\n\n const typedData: any = {}\n\n for (const field of struct.fields) {\n let filedType = field.type\n filedType = filedType.applyTypeArgs(typeCtx)\n const value = this.decode(data[field.name], filedType)\n typedData[field.name] = value\n }\n return typedData\n }\n\n encode(data: any, type: TypeDescriptor): any {\n // process simple type\n if (type.reference) {\n return data\n }\n switch (type.qname) {\n case 'signer': // TODO check this, aptos only\n case 'address':\n case 'Address':\n case '0x2::object::ID':\n case '0x2::coin::Coin':\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 return data\n case 'u64':\n case 'U64':\n case 'u128':\n case 'U128':\n case 'u256':\n case 'U256':\n return this.encodeBigInt(data)\n }\n\n // process vector\n if (type.qname === VECTOR_STR) {\n // vector<u8> as hex string\n if (type.typeArgs[0].qname === 'u8' || type.typeArgs[0].qname === 'U8') {\n return data\n }\n\n const res = []\n for (const entry of data) {\n res.push(this.encode(entry, type.typeArgs[0]))\n }\n return res\n }\n\n // Process complex type\n const struct = this.getMoveStruct(type.qname)\n\n const typeCtx = new Map<string, TypeDescriptor>()\n for (const [idx, typeArg] of type.typeArgs.entries()) {\n typeCtx.set('T' + idx, typeArg)\n }\n\n const typedData: any = {}\n\n for (const field of struct.fields) {\n let filedType = field.type\n filedType = filedType.applyTypeArgs(typeCtx)\n const value = this.encode(data[field.name], filedType)\n typedData[field.name] = value\n }\n return typedData\n }\n\n decodeArray(entries: any[], types: TypeDescriptor[]): any[] {\n const entriesDecoded: any[] = []\n for (const [idx, arg] of entries.entries()) {\n // TODO consider apply payload.type_arguments, but this might be hard since we don't code gen for them\n const argType = types[idx]\n try {\n entriesDecoded.push(this.decode(arg, argType))\n } catch (e) {\n console.error(e, 'Decoding error for ', JSON.stringify(arg), 'using type', argType)\n return entries\n }\n }\n return entriesDecoded\n }\n\n encodeArray(entriesDecoded: any[], types: TypeDescriptor[]): any[] {\n const entries: any[] = []\n for (const [idx, arg] of entriesDecoded.entries()) {\n // TODO consider apply payload.type_arguments, but this might be hard since we don't code gen for them\n const argType = types[idx]\n try {\n entries.push(this.encode(arg, argType))\n } catch (e) {\n throw Error('Decoding error for ' + JSON.stringify(arg) + 'using type' + argType + e.toString())\n }\n }\n return entries\n }\n\n encodeCallArgs(args: any[], func: string): any[] {\n const f = this.getMoveFunction(func)\n return this.encodeArray(args, this.getMeaningfulFunctionParams(f.params))\n }\n\n decodeCallResult(res: any[], func: string): any[] {\n const f = this.getMoveFunction(func)\n return this.decodeArray(res, f.return)\n }\n\n protected filterAndDecodeStruct(typeQname: string, structs: StructType[]): any {\n if (!structs) {\n return []\n }\n const withTags = structs.map((s) => this.toStructWithTag(s))\n return this.filterAndDecodeStructWithTags(typeQname, withTags)\n }\n\n private filterAndDecodeStructWithTags<T>(\n typeQname: string,\n structsWithTags: StructWithTag<StructType>[]\n ): DecodedStructWithTag<StructType, T>[] {\n if (!structsWithTags) {\n return []\n }\n const results: DecodedStructWithTag<StructType, T>[] = []\n for (const resource of structsWithTags) {\n if (typeQname.includes('<')) {\n if (resource.type !== typeQname) {\n continue\n }\n } else if (resource.type.split('<')[0] !== typeQname) {\n continue\n }\n const result = this.decodedStructWithTag(resource)\n if (result) {\n results.push(result as DecodedStructWithTag<StructType, T>)\n }\n }\n return results\n }\n\n protected decodedStruct<T>(typeStruct: StructType): DecodedStructWithTag<StructType, T> | undefined {\n return this.decodedStructWithTag(this.toStructWithTag(typeStruct)) as any\n }\n\n private decodedStructWithTag<T>(\n typeStruct: StructWithTag<StructType>\n ): DecodedStructWithTag<StructType, T> | undefined {\n const typeDescriptor = parseMoveType(typeStruct.type)\n const typeArguments = typeDescriptor.typeArgs.map((t) => t.getSignature())\n\n let dataTyped = undefined\n try {\n dataTyped = this.decode(this.toStructWithTag(typeStruct.data), typeDescriptor)\n } catch (e) {\n console.error('Decoding error for ', JSON.stringify(typeStruct), e)\n return undefined\n }\n return {\n ...typeStruct,\n data_decoded: dataTyped,\n type_arguments: typeArguments,\n } as DecodedStructWithTag<StructType, T>\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"abstract-move-coder.js","sourceRoot":"","sources":["../../src/move/abstract-move-coder.ts"],"names":[],"mappings":"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","sourcesContent":["import { moduleQname, SPLITTER, VECTOR_STR } from './utils.js'\nimport { parseMoveType, TypeDescriptor } from './types.js'\nimport { InternalMoveFunction, InternalMoveModule, InternalMoveStruct } from './internal-models.js'\nimport { bytesToBigInt } from '../utils/index.js'\nimport { ChainAdapter } from './chain-adapter.js'\n\nexport type StructWithTag<Base> = {\n type: string\n data: Base\n}\n\nexport type DecodedStructWithTag<B, T> = StructWithTag<B> & {\n data_decoded: T\n type_arguments: string[]\n}\n\nexport abstract class AbstractMoveCoder<Network, ModuleTypes, StructType> {\n private moduleMapping = new Map<string, InternalMoveModule>()\n private typeMapping = new Map<string, InternalMoveStruct>()\n private funcMapping = new Map<string, InternalMoveFunction>()\n network: Network\n adapter: ChainAdapter<Network, ModuleTypes>\n\n protected constructor(network: Network) {\n this.network = network\n }\n\n contains(account: string, name: string) {\n return this.moduleMapping.has(account + '::' + name)\n }\n\n // protected abstract getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[]\n\n protected toStructWithTag(val: StructType): StructWithTag<StructType> {\n return val as any\n }\n\n protected loadInternal(module: InternalMoveModule) {\n if (this.contains(module.address, module.name)) {\n return\n }\n this.moduleMapping.set(moduleQname(module), module)\n\n for (const struct of module.structs) {\n // TODO move to util\n const key = [module.address, module.name, struct.name].join(SPLITTER)\n this.typeMapping.set(key, struct)\n }\n\n for (const func of module.exposedFunctions) {\n // if (!func.isEntry) {\n // continue\n // }\n const key = [module.address, module.name, func.name].join(SPLITTER)\n this.funcMapping.set(key, func)\n }\n }\n\n protected decodeBigInt(data: any): bigint {\n if (Array.isArray(data)) {\n // Only sui function need this, strange\n const bytes = data as number[]\n return bytesToBigInt(new Uint8Array(bytes.slice().reverse()))\n } else {\n return BigInt(data)\n }\n }\n\n protected encodeBigInt(data: bigint): any {\n return '0x' + data.toString(16)\n }\n\n getMoveStruct(type: string): InternalMoveStruct {\n const struct = this.typeMapping.get(type)\n if (!struct) {\n throw new Error('Failed to load type' + type + ' type are not imported anywhere')\n }\n return struct\n }\n\n getMoveFunction(type: string): InternalMoveFunction {\n const func = this.funcMapping.get(type)\n if (!func) {\n throw new Error('Failed to load function ' + type + ' type are not imported anywhere')\n }\n return func\n }\n\n decode(data: any, type: TypeDescriptor): any {\n // process simple type\n if (type.reference) {\n return data\n }\n switch (type.qname) {\n case 'signer': // TODO check this, aptos only\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 return data\n case 'u64':\n case 'U64':\n case 'u128':\n case 'U128':\n return this.decodeBigInt(data)\n }\n\n // process vector\n if (type.qname === VECTOR_STR) {\n // vector<u8> as hex string\n if (type.typeArgs[0].qname === 'u8' || type.typeArgs[0].qname === 'U8') {\n return data\n }\n\n const res = []\n for (const entry of data) {\n res.push(this.decode(entry, type.typeArgs[0]))\n }\n return res\n }\n\n // Process complex type\n const struct = this.getMoveStruct(type.qname)\n\n const typeCtx = new Map<string, TypeDescriptor>()\n for (const [idx, typeArg] of type.typeArgs.entries()) {\n typeCtx.set('T' + idx, typeArg)\n }\n\n const typedData: any = {}\n\n for (const field of struct.fields) {\n let filedType = field.type\n filedType = filedType.applyTypeArgs(typeCtx)\n const value = this.decode(data[field.name], filedType)\n typedData[field.name] = value\n }\n return typedData\n }\n\n encode(data: any, type: TypeDescriptor): any {\n // process simple type\n if (type.reference) {\n return data\n }\n switch (type.qname) {\n case 'signer': // TODO check this, aptos only\n case 'address':\n case 'Address':\n case '0x2::object::ID':\n case '0x2::coin::Coin':\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 return data\n case 'u64':\n case 'U64':\n case 'u128':\n case 'U128':\n case 'u256':\n case 'U256':\n return this.encodeBigInt(data)\n }\n\n // process vector\n if (type.qname === VECTOR_STR) {\n // vector<u8> as hex string\n if (type.typeArgs[0].qname === 'u8' || type.typeArgs[0].qname === 'U8') {\n return data\n }\n\n const res = []\n for (const entry of data) {\n res.push(this.encode(entry, type.typeArgs[0]))\n }\n return res\n }\n\n // Process complex type\n const struct = this.getMoveStruct(type.qname)\n\n const typeCtx = new Map<string, TypeDescriptor>()\n for (const [idx, typeArg] of type.typeArgs.entries()) {\n typeCtx.set('T' + idx, typeArg)\n }\n\n const typedData: any = {}\n\n for (const field of struct.fields) {\n let filedType = field.type\n filedType = filedType.applyTypeArgs(typeCtx)\n const value = this.encode(data[field.name], filedType)\n typedData[field.name] = value\n }\n return typedData\n }\n\n decodeArray(entries: any[], types: TypeDescriptor[]): any[] {\n const entriesDecoded: any[] = []\n for (const [idx, arg] of entries.entries()) {\n // TODO consider apply payload.type_arguments, but this might be hard since we don't code gen for them\n const argType = types[idx]\n try {\n entriesDecoded.push(this.decode(arg, argType))\n } catch (e) {\n console.error(e, 'Decoding error for ', JSON.stringify(arg), 'using type', argType)\n return entries\n }\n }\n return entriesDecoded\n }\n\n encodeArray(entriesDecoded: any[], types: TypeDescriptor[]): any[] {\n const entries: any[] = []\n for (const [idx, arg] of entriesDecoded.entries()) {\n // TODO consider apply payload.type_arguments, but this might be hard since we don't code gen for them\n const argType = types[idx]\n try {\n entries.push(this.encode(arg, argType))\n } catch (e) {\n throw Error('Decoding error for ' + JSON.stringify(arg) + 'using type' + argType + e.toString())\n }\n }\n return entries\n }\n\n encodeCallArgs(args: any[], func: string): any[] {\n const f = this.getMoveFunction(func)\n return this.encodeArray(args, this.adapter.getMeaningfulFunctionParams(f.params))\n }\n\n decodeCallResult(res: any[], func: string): any[] {\n const f = this.getMoveFunction(func)\n return this.decodeArray(res, f.return)\n }\n\n protected filterAndDecodeStruct(typeQname: string, structs: StructType[]): any {\n if (!structs) {\n return []\n }\n const withTags = structs.map((s) => this.toStructWithTag(s))\n return this.filterAndDecodeStructWithTags(typeQname, withTags)\n }\n\n private filterAndDecodeStructWithTags<T>(\n typeQname: string,\n structsWithTags: StructWithTag<StructType>[]\n ): DecodedStructWithTag<StructType, T>[] {\n if (!structsWithTags) {\n return []\n }\n const results: DecodedStructWithTag<StructType, T>[] = []\n for (const resource of structsWithTags) {\n if (typeQname.includes('<')) {\n if (resource.type !== typeQname) {\n continue\n }\n } else if (resource.type.split('<')[0] !== typeQname) {\n continue\n }\n const result = this.decodedStructWithTag(resource)\n if (result) {\n results.push(result as DecodedStructWithTag<StructType, T>)\n }\n }\n return results\n }\n\n protected decodedStruct<T>(typeStruct: StructType): DecodedStructWithTag<StructType, T> | undefined {\n return this.decodedStructWithTag(this.toStructWithTag(typeStruct)) as any\n }\n\n private decodedStructWithTag<T>(\n typeStruct: StructWithTag<StructType>\n ): DecodedStructWithTag<StructType, T> | undefined {\n const typeDescriptor = parseMoveType(typeStruct.type)\n const typeArguments = typeDescriptor.typeArgs.map((t) => t.getSignature())\n\n let dataTyped = undefined\n try {\n dataTyped = this.decode(this.toStructWithTag(typeStruct.data), typeDescriptor)\n } catch (e) {\n console.error('Decoding error for ', JSON.stringify(typeStruct), e)\n return undefined\n }\n return {\n ...typeStruct,\n data_decoded: dataTyped,\n type_arguments: typeArguments,\n } as DecodedStructWithTag<StructType, T>\n }\n}\n"]}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { InternalMoveModule, InternalMoveStruct } from './internal-models.js';
|
2
|
+
import { TypeDescriptor } from './types.js';
|
3
|
+
export declare abstract class ChainAdapter<NetworkType, ModuleTypes> {
|
4
|
+
abstract fetchModules(account: string, network: NetworkType): Promise<ModuleTypes>;
|
5
|
+
abstract fetchModules(account: string, network: NetworkType): Promise<ModuleTypes>;
|
6
|
+
abstract toInternalModules(modules: ModuleTypes): InternalMoveModule[];
|
7
|
+
abstract getEventStructs(module: InternalMoveModule): Map<string, InternalMoveStruct>;
|
8
|
+
abstract getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[];
|
9
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"chain-adapter.js","sourceRoot":"","sources":["../../src/move/chain-adapter.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,YAAY;CAUjC","sourcesContent":["import { InternalMoveModule, InternalMoveStruct } from './internal-models.js'\nimport { TypeDescriptor } from './types.js'\n\nexport abstract class ChainAdapter<NetworkType, ModuleTypes> {\n abstract fetchModules(account: string, network: NetworkType): Promise<ModuleTypes>\n\n abstract fetchModules(account: string, network: NetworkType): Promise<ModuleTypes>\n abstract toInternalModules(modules: ModuleTypes): InternalMoveModule[]\n // Get the structs that represent Events\n abstract getEventStructs(module: InternalMoveModule): Map<string, InternalMoveStruct>\n // Get the parameters that actually have arguments in runtime\n // Aptos first signer and Sui's last TxContext are no use\n abstract getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[]\n}\n"]}
|
package/lib/move/index.d.ts
CHANGED
package/lib/move/index.js
CHANGED
package/lib/move/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/move/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA","sourcesContent":["export * from './filter.js'\nexport * from './types.js'\nexport * from './utils.js'\nexport * from './account.js'\n"]}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/move/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA","sourcesContent":["export * from './filter.js'\nexport * from './types.js'\nexport * from './utils.js'\nexport * from './account.js'\nexport * from './chain-adapter.js'\n"]}
|
@@ -1,12 +1,10 @@
|
|
1
|
-
import { Connection, JsonRpcProvider } from '@mysten/sui.js';
|
2
1
|
import { SuiNetwork } from '../network.js';
|
3
2
|
import * as fs from 'fs';
|
4
3
|
import chalk from 'chalk';
|
5
4
|
import { AbstractCodegen } from '../../move/abstract-codegen.js';
|
6
|
-
import {
|
7
|
-
import { moduleQname, SPLITTER, structQname } from '../../move/index.js';
|
8
|
-
import { getMeaningfulFunctionParams } from '../utils.js';
|
5
|
+
import { structQname } from '../../move/index.js';
|
9
6
|
import { join } from 'path';
|
7
|
+
import { SuiChainAdapter } from '../sui-chain-adapter.js';
|
10
8
|
export async function codegen(abisDir, outDir = join('src', 'types', 'sui'), genExample = false) {
|
11
9
|
if (!fs.existsSync(abisDir)) {
|
12
10
|
return;
|
@@ -15,16 +13,6 @@ export async function codegen(abisDir, outDir = join('src', 'types', 'sui'), gen
|
|
15
13
|
const numFiles = await gen.generate(abisDir, outDir);
|
16
14
|
console.log(chalk.green(`Generated ${numFiles} for Sui`));
|
17
15
|
}
|
18
|
-
function getRpcEndpoint(network) {
|
19
|
-
switch (network) {
|
20
|
-
case SuiNetwork.TEST_NET:
|
21
|
-
return 'https://fullnode.testnet.sui.io/';
|
22
|
-
}
|
23
|
-
return 'https://fullnode.mainnet.sui.io/';
|
24
|
-
}
|
25
|
-
function getRpcClient(network) {
|
26
|
-
return new JsonRpcProvider(new Connection({ fullnode: getRpcEndpoint(network) }));
|
27
|
-
}
|
28
16
|
class SuiCodegen extends AbstractCodegen {
|
29
17
|
ADDRESS_TYPE = 'SuiAddress';
|
30
18
|
MAIN_NET = SuiNetwork.MAIN_NET;
|
@@ -33,26 +21,8 @@ class SuiCodegen extends AbstractCodegen {
|
|
33
21
|
// STRUCT_FIELD_NAME = 'fields'
|
34
22
|
// GENERATE_ON_ENTRY = true
|
35
23
|
PAYLOAD_OPTIONAL = true;
|
36
|
-
|
37
|
-
|
38
|
-
return await client.getNormalizedMoveModulesByPackage({ package: account });
|
39
|
-
}
|
40
|
-
getMeaningfulFunctionParams(params) {
|
41
|
-
return getMeaningfulFunctionParams(params);
|
42
|
-
}
|
43
|
-
toInternalModules(modules) {
|
44
|
-
return Object.values(modules).map(toInternalModule);
|
45
|
-
}
|
46
|
-
getEventStructs(module) {
|
47
|
-
const qname = moduleQname(module);
|
48
|
-
const eventMap = new Map();
|
49
|
-
for (const struct of module.structs) {
|
50
|
-
const abilities = new Set(struct.abilities);
|
51
|
-
if (abilities.has('Drop') && abilities.has('Copy')) {
|
52
|
-
eventMap.set(qname + SPLITTER + struct.name, struct);
|
53
|
-
}
|
54
|
-
}
|
55
|
-
return eventMap;
|
24
|
+
constructor() {
|
25
|
+
super(new SuiChainAdapter());
|
56
26
|
}
|
57
27
|
readModulesFile(fullPath) {
|
58
28
|
const res = super.readModulesFile(fullPath);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../../src/sui/codegen/codegen.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../../src/sui/codegen/codegen.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEzD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,KAAK;IACrG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC3B,OAAM;KACP;IACD,MAAM,GAAG,GAAG,IAAI,UAAU,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,QAAQ,UAAU,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED,MAAM,UAAW,SAAQ,eAAqD;IAC5E,YAAY,GAAG,YAAY,CAAA;IAC3B,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;IAC9B,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;IAC9B,MAAM,GAAG,KAAK,CAAA;IACd,+BAA+B;IAC/B,2BAA2B;IAC3B,gBAAgB,GAAG,IAAI,CAAA;IAEvB;QACE,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED,eAAe,CAAC,QAAgB;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAC3C,IAAI,GAAG,CAAC,MAAM,EAAE;YACd,OAAO,GAAG,CAAC,MAAM,CAAA;SAClB;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,eAAe,CAAC,MAA0B,EAAE,MAA0B,EAAE,MAAmB;QACzF,QAAQ,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;YACnC,KAAK,iBAAiB;gBACpB,OAAO,eAAe,MAAM,CAAC,IAAI,WAAW,CAAA;YAC9C,KAAK,iBAAiB;gBACpB,OAAO,eAAe,MAAM,CAAC,IAAI,cAAc,CAAA;YACjD,KAAK,qBAAqB;gBACxB,OAAO,uCAAuC,CAAA;SACjD;QACD,OAAO,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACtD,CAAC;IAED,gBAAgB,CAAC,MAA0B,EAAE,MAA0B;QACrE,QAAQ,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;YACnC,KAAK,iBAAiB,CAAC;YACvB,KAAK,iBAAiB,CAAC;YACvB,KAAK,qBAAqB;gBACxB,OAAO,EAAE,CAAA;SACZ;QACD,OAAO,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;CACF","sourcesContent":["import { SuiMoveNormalizedModules } from '@mysten/sui.js'\n\nimport { SuiNetwork } from '../network.js'\nimport * as fs from 'fs'\nimport chalk from 'chalk'\nimport { InternalMoveModule, InternalMoveStruct } from '../../move/internal-models.js'\nimport { AbstractCodegen } from '../../move/abstract-codegen.js'\nimport { structQname } from '../../move/index.js'\nimport { join } from 'path'\nimport { SuiChainAdapter } from '../sui-chain-adapter.js'\n\nexport async function codegen(abisDir: string, outDir = join('src', 'types', 'sui'), genExample = false) {\n if (!fs.existsSync(abisDir)) {\n return\n }\n const gen = new SuiCodegen()\n const numFiles = await gen.generate(abisDir, outDir)\n console.log(chalk.green(`Generated ${numFiles} for Sui`))\n}\n\nclass SuiCodegen extends AbstractCodegen<SuiMoveNormalizedModules, SuiNetwork> {\n ADDRESS_TYPE = 'SuiAddress'\n MAIN_NET = SuiNetwork.MAIN_NET\n TEST_NET = SuiNetwork.TEST_NET\n PREFIX = 'Sui'\n // STRUCT_FIELD_NAME = 'fields'\n // GENERATE_ON_ENTRY = true\n PAYLOAD_OPTIONAL = true\n\n constructor() {\n super(new SuiChainAdapter())\n }\n\n readModulesFile(fullPath: string) {\n const res = super.readModulesFile(fullPath)\n if (res.result) {\n return res.result\n }\n return res\n }\n\n generateStructs(module: InternalMoveModule, struct: InternalMoveStruct, events: Set<string>): string {\n switch (structQname(module, struct)) {\n case '0x2::object::ID':\n return `export type ${struct.name} = string`\n case '0x2::coin::Coin':\n return `export type ${struct.name}<T> = string`\n case '0x1::option::Option':\n return `export type Option<T> = T | undefined`\n }\n return super.generateStructs(module, struct, events)\n }\n\n generateOnEvents(module: InternalMoveModule, struct: InternalMoveStruct): string {\n switch (structQname(module, struct)) {\n case '0x2::object::ID':\n case '0x2::coin::Coin':\n case '0x1::option::Option':\n return ''\n }\n return super.generateOnEvents(module, struct)\n }\n}\n"]}
|
package/lib/sui/move-coder.d.ts
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
import { TypedEventInstance, TypedSuiMoveObject } from './models.js';
|
2
2
|
import { AbstractMoveCoder, StructWithTag } from '../move/abstract-move-coder.js';
|
3
|
-
import { MoveCallSuiTransaction, SuiEvent, SuiMoveNormalizedModule,
|
3
|
+
import { MoveCallSuiTransaction, SuiCallArg, SuiEvent, SuiMoveNormalizedModule, SuiMoveObject, SuiMoveNormalizedModules } from '@mysten/sui.js';
|
4
4
|
import { TypeDescriptor } from '../move/index.js';
|
5
5
|
import { dynamic_field } from './builtin/0x2.js';
|
6
|
-
|
6
|
+
import { SuiNetwork } from './network.js';
|
7
|
+
export declare class MoveCoder extends AbstractMoveCoder<SuiNetwork, SuiMoveNormalizedModules, SuiEvent | SuiMoveObject> {
|
8
|
+
constructor(network: SuiNetwork);
|
7
9
|
load(module: SuiMoveNormalizedModule): void;
|
8
10
|
decode(data: any, type: TypeDescriptor): any;
|
9
11
|
toStructWithTag(val: SuiEvent | SuiMoveObject): StructWithTag<SuiEvent>;
|
@@ -11,7 +13,6 @@ export declare class MoveCoder extends AbstractMoveCoder<SuiEvent | SuiMoveObjec
|
|
11
13
|
filterAndDecodeEvents<T>(typeQname: string, resources: SuiEvent[]): TypedEventInstance<T>[];
|
12
14
|
getObjectsFromDynamicFields<Name, Value>(objects: SuiMoveObject[]): dynamic_field.Field<Name, Value>[];
|
13
15
|
filterAndDecodeObjects<T>(typeQname: string, objects: SuiMoveObject[]): TypedSuiMoveObject<T>[];
|
14
|
-
getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[];
|
15
16
|
decodeFunctionPayload(payload: MoveCallSuiTransaction, inputs: SuiCallArg[]): MoveCallSuiTransaction;
|
16
17
|
}
|
17
18
|
export declare const MOVE_CODER: MoveCoder;
|
package/lib/sui/move-coder.js
CHANGED
@@ -2,8 +2,13 @@ import { AbstractMoveCoder } from '../move/abstract-move-coder.js';
|
|
2
2
|
import { SuiEvent, SuiRawData, } from '@mysten/sui.js';
|
3
3
|
import { toInternalModule } from './move-types.js';
|
4
4
|
import { SPLITTER } from '../move/index.js';
|
5
|
-
import {
|
5
|
+
import { SuiNetwork } from './network.js';
|
6
|
+
import { SuiChainAdapter } from './sui-chain-adapter.js';
|
6
7
|
export class MoveCoder extends AbstractMoveCoder {
|
8
|
+
constructor(network) {
|
9
|
+
super(network);
|
10
|
+
this.adapter = new SuiChainAdapter();
|
11
|
+
}
|
7
12
|
load(module) {
|
8
13
|
if (this.contains(module.address, module.name)) {
|
9
14
|
return;
|
@@ -49,13 +54,10 @@ export class MoveCoder extends AbstractMoveCoder {
|
|
49
54
|
filterAndDecodeObjects(typeQname, objects) {
|
50
55
|
return this.filterAndDecodeStruct(typeQname, objects);
|
51
56
|
}
|
52
|
-
getMeaningfulFunctionParams(params) {
|
53
|
-
return getMeaningfulFunctionParams(params);
|
54
|
-
}
|
55
57
|
decodeFunctionPayload(payload, inputs) {
|
56
58
|
const functionType = [payload.package, payload.module, payload.function].join(SPLITTER);
|
57
59
|
const func = this.getMoveFunction(functionType);
|
58
|
-
const params = getMeaningfulFunctionParams(func.params);
|
60
|
+
const params = this.adapter.getMeaningfulFunctionParams(func.params);
|
59
61
|
const args = [];
|
60
62
|
for (const value of payload.arguments || []) {
|
61
63
|
const argValue = value;
|
@@ -85,7 +87,7 @@ export class MoveCoder extends AbstractMoveCoder {
|
|
85
87
|
};
|
86
88
|
}
|
87
89
|
}
|
88
|
-
export const MOVE_CODER = new MoveCoder();
|
90
|
+
export const MOVE_CODER = new MoveCoder(SuiNetwork.MAIN_NET);
|
89
91
|
export function defaultMoveCoder() {
|
90
92
|
return MOVE_CODER;
|
91
93
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"move-coder.js","sourceRoot":"","sources":["../../src/sui/move-coder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAiB,MAAM,gCAAgC,CAAA;AACjF,OAAO,
|
1
|
+
{"version":3,"file":"move-coder.js","sourceRoot":"","sources":["../../src/sui/move-coder.ts"],"names":[],"mappings":"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","sourcesContent":["import { TypedEventInstance, TypedFunctionPayload, TypedSuiMoveObject } from './models.js'\nimport { AbstractMoveCoder, StructWithTag } from '../move/abstract-move-coder.js'\nimport {\n MoveCallSuiTransaction,\n SuiCallArg,\n SuiEvent,\n SuiMoveNormalizedModule,\n SuiMoveObject,\n SuiRawData,\n SuiMoveNormalizedModules,\n} from '@mysten/sui.js'\nimport { toInternalModule } from './move-types.js'\nimport { SPLITTER, TypeDescriptor } from '../move/index.js'\nimport { dynamic_field } from './builtin/0x2.js'\nimport { SuiNetwork } from './network.js'\nimport { SuiChainAdapter } from './sui-chain-adapter.js'\n\nexport class MoveCoder extends AbstractMoveCoder<SuiNetwork, SuiMoveNormalizedModules, SuiEvent | SuiMoveObject> {\n constructor(network: SuiNetwork) {\n super(network)\n this.adapter = new SuiChainAdapter()\n }\n\n load(module: SuiMoveNormalizedModule) {\n if (this.contains(module.address, module.name)) {\n return\n }\n this.loadInternal(toInternalModule(module))\n }\n\n decode(data: any, type: TypeDescriptor): any {\n switch (type.qname) {\n case '0x2::object::ID':\n case '0x2::coin::Coin':\n return data\n case '0x1::option::Option':\n // return this.decode(data, type.typeArgs[0])\n return data\n default:\n return super.decode(data, type)\n }\n }\n\n toStructWithTag(val: SuiEvent | SuiMoveObject): StructWithTag<SuiEvent> {\n if (SuiEvent.is(val)) {\n return {\n ...val,\n data: val.parsedJson as any,\n }\n }\n if (SuiRawData.is(val)) {\n return {\n ...val,\n data: val.fields as any,\n }\n }\n return val as any\n }\n\n decodeEvent<T>(event: SuiEvent): TypedEventInstance<T> | undefined {\n return this.decodedStruct<T>(event) as any\n }\n filterAndDecodeEvents<T>(typeQname: string, resources: SuiEvent[]): TypedEventInstance<T>[] {\n return this.filterAndDecodeStruct(typeQname, resources)\n }\n\n getObjectsFromDynamicFields<Name, Value>(objects: SuiMoveObject[]): dynamic_field.Field<Name, Value>[] {\n return this.filterAndDecodeObjects(`0x2::dynamic_field::Field`, objects).map((o) => o.data_decoded) as any\n }\n\n filterAndDecodeObjects<T>(typeQname: string, objects: SuiMoveObject[]): TypedSuiMoveObject<T>[] {\n return this.filterAndDecodeStruct(typeQname, objects)\n }\n\n decodeFunctionPayload(payload: MoveCallSuiTransaction, inputs: SuiCallArg[]): MoveCallSuiTransaction {\n const functionType = [payload.package, payload.module, payload.function].join(SPLITTER)\n const func = this.getMoveFunction(functionType)\n const params = this.adapter.getMeaningfulFunctionParams(func.params)\n const args = []\n for (const value of payload.arguments || []) {\n const argValue = value as any\n if ('Input' in (argValue as any)) {\n const idx = argValue.Input\n const arg = inputs[idx]\n if (arg.type === 'pure') {\n args.push(arg.value)\n } else if (arg.type === 'object') {\n args.push(arg.objectId)\n } else {\n console.error('unexpected function arg value')\n args.push(undefined)\n }\n // args.push(arg) // TODO check why ts not work using arg.push(arg)\n } else {\n args.push(undefined)\n }\n }\n\n const argumentsTyped = this.decodeArray(args, params)\n return {\n ...payload,\n arguments_decoded: argumentsTyped,\n } as TypedFunctionPayload<any>\n }\n}\n\nexport const MOVE_CODER = new MoveCoder(SuiNetwork.MAIN_NET)\n\nexport function defaultMoveCoder(): MoveCoder {\n return MOVE_CODER\n}\n"]}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { ChainAdapter, TypeDescriptor } from '../move/index.js';
|
2
|
+
import { SuiNetwork } from './network.js';
|
3
|
+
import { InternalMoveModule, InternalMoveStruct } from '../move/internal-models.js';
|
4
|
+
import { SuiMoveNormalizedModules } from '@mysten/sui.js';
|
5
|
+
export declare class SuiChainAdapter extends ChainAdapter<SuiNetwork, SuiMoveNormalizedModules> {
|
6
|
+
static INSTANCE: SuiChainAdapter;
|
7
|
+
fetchModules(account: string, network: SuiNetwork): Promise<SuiMoveNormalizedModules>;
|
8
|
+
getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[];
|
9
|
+
toInternalModules(modules: SuiMoveNormalizedModules): InternalMoveModule[];
|
10
|
+
getEventStructs(module: InternalMoveModule): Map<string, InternalMoveStruct>;
|
11
|
+
}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import { ChainAdapter, moduleQname, SPLITTER } from '../move/index.js';
|
2
|
+
import { toInternalModule } from './move-types.js';
|
3
|
+
import { SuiNetwork } from './network.js';
|
4
|
+
import { Connection, JsonRpcProvider } from '@mysten/sui.js';
|
5
|
+
class SuiChainAdapter extends ChainAdapter {
|
6
|
+
static INSTANCE = new SuiChainAdapter();
|
7
|
+
async fetchModules(account, network) {
|
8
|
+
const client = getRpcClient(network);
|
9
|
+
return await client.getNormalizedMoveModulesByPackage({ package: account });
|
10
|
+
}
|
11
|
+
getMeaningfulFunctionParams(params) {
|
12
|
+
if (params.length === 0) {
|
13
|
+
return params;
|
14
|
+
}
|
15
|
+
return params.slice(0, params.length - 1);
|
16
|
+
}
|
17
|
+
toInternalModules(modules) {
|
18
|
+
return Object.values(modules).map(toInternalModule);
|
19
|
+
}
|
20
|
+
getEventStructs(module) {
|
21
|
+
const qname = moduleQname(module);
|
22
|
+
const eventMap = new Map();
|
23
|
+
for (const struct of module.structs) {
|
24
|
+
const abilities = new Set(struct.abilities);
|
25
|
+
if (abilities.has('Drop') && abilities.has('Copy')) {
|
26
|
+
eventMap.set(qname + SPLITTER + struct.name, struct);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
return eventMap;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
export { SuiChainAdapter };
|
33
|
+
function getRpcEndpoint(network) {
|
34
|
+
switch (network) {
|
35
|
+
case SuiNetwork.TEST_NET:
|
36
|
+
return 'https://fullnode.testnet.sui.io/';
|
37
|
+
}
|
38
|
+
return 'https://fullnode.mainnet.sui.io/';
|
39
|
+
}
|
40
|
+
function getRpcClient(network) {
|
41
|
+
return new JsonRpcProvider(new Connection({ fullnode: getRpcEndpoint(network) }));
|
42
|
+
}
|
43
|
+
//# sourceMappingURL=sui-chain-adapter.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"sui-chain-adapter.js","sourceRoot":"","sources":["../../src/sui/sui-chain-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAA;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,eAAe,EAA4B,MAAM,gBAAgB,CAAA;AAEtF,MAAa,eAAgB,SAAQ,YAAkD;IACrF,MAAM,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAA;IAEvC,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,OAAmB;QACrD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QACpC,OAAO,MAAM,MAAM,CAAC,iCAAiC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7E,CAAC;IAED,2BAA2B,CAAC,MAAwB;QAClD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO,MAAM,CAAA;SACd;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,iBAAiB,CAAC,OAAiC;QACjD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IACrD,CAAC;IAED,eAAe,CAAC,MAA0B;QACxC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAA;QAEtD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;YACnC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YAC3C,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBAClD,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;aACrD;SACF;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;;SA9BU,eAAe;AAiC5B,SAAS,cAAc,CAAC,OAAmB;IACzC,QAAQ,OAAO,EAAE;QACf,KAAK,UAAU,CAAC,QAAQ;YACtB,OAAO,kCAAkC,CAAA;KAC5C;IACD,OAAO,kCAAkC,CAAA;AAC3C,CAAC;AAED,SAAS,YAAY,CAAC,OAAmB;IACvC,OAAO,IAAI,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;AACnF,CAAC","sourcesContent":["import { ChainAdapter, moduleQname, SPLITTER, TypeDescriptor } from '../move/index.js'\nimport { toInternalModule } from './move-types.js'\nimport { SuiNetwork } from './network.js'\nimport { InternalMoveModule, InternalMoveStruct } from '../move/internal-models.js'\nimport { Connection, JsonRpcProvider, SuiMoveNormalizedModules } from '@mysten/sui.js'\n\nexport class SuiChainAdapter extends ChainAdapter<SuiNetwork, SuiMoveNormalizedModules> {\n static INSTANCE = new SuiChainAdapter()\n\n async fetchModules(account: string, network: SuiNetwork): Promise<SuiMoveNormalizedModules> {\n const client = getRpcClient(network)\n return await client.getNormalizedMoveModulesByPackage({ package: account })\n }\n\n getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[] {\n if (params.length === 0) {\n return params\n }\n return params.slice(0, params.length - 1)\n }\n\n toInternalModules(modules: SuiMoveNormalizedModules): InternalMoveModule[] {\n return Object.values(modules).map(toInternalModule)\n }\n\n getEventStructs(module: InternalMoveModule) {\n const qname = moduleQname(module)\n const eventMap = new Map<string, InternalMoveStruct>()\n\n for (const struct of module.structs) {\n const abilities = new Set(struct.abilities)\n if (abilities.has('Drop') && abilities.has('Copy')) {\n eventMap.set(qname + SPLITTER + struct.name, struct)\n }\n }\n return eventMap\n }\n}\n\nfunction getRpcEndpoint(network: SuiNetwork): string {\n switch (network) {\n case SuiNetwork.TEST_NET:\n return 'https://fullnode.testnet.sui.io/'\n }\n return 'https://fullnode.mainnet.sui.io/'\n}\n\nfunction getRpcClient(network: SuiNetwork): JsonRpcProvider {\n return new JsonRpcProvider(new Connection({ fullnode: getRpcEndpoint(network) }))\n}\n"]}
|
package/lib/sui/utils.d.ts
CHANGED
@@ -1,4 +1,2 @@
|
|
1
1
|
import { SuiTransactionBlockResponse } from '@mysten/sui.js';
|
2
|
-
import { TypeDescriptor } from '../move/index.js';
|
3
2
|
export declare function getMoveCalls(txBlock: SuiTransactionBlockResponse): any;
|
4
|
-
export declare function getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[];
|
package/lib/sui/utils.js
CHANGED
@@ -21,10 +21,4 @@ export function getMoveCalls(txBlock) {
|
|
21
21
|
return [];
|
22
22
|
});
|
23
23
|
}
|
24
|
-
export function getMeaningfulFunctionParams(params) {
|
25
|
-
if (params.length === 0) {
|
26
|
-
return params;
|
27
|
-
}
|
28
|
-
return params.slice(0, params.length - 1);
|
29
|
-
}
|
30
24
|
//# sourceMappingURL=utils.js.map
|
package/lib/sui/utils.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/sui/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAClB,0BAA0B,GAG3B,MAAM,gBAAgB,CAAA;
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/sui/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAClB,0BAA0B,GAG3B,MAAM,gBAAgB,CAAA;AAEvB,MAAM,UAAU,YAAY,CAAC,OAAoC;IAC/D,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC1C,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,EAAE,CAAA;KACV;IACD,MAAM,cAAc,GAAwC,0BAA0B,CAAC,MAAM,CAAC,CAAA;IAC9F,IAAI,CAAC,cAAc,EAAE;QACnB,OAAO,EAAE,CAAA;KACV;IAED,OAAO,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAkB,EAAE,EAAE;QAChE,IAAI,UAAU,IAAI,EAAE,EAAE;YACpB,MAAM,IAAI,GAAG,EAAE,CAAC,QAAkC,CAAA;YAElD,IAAI,GAAG,GAAW,IAAI,CAAC,OAAO,CAAA;YAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,mEAAmE,CAAC,EAAE;gBAChG,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;aACjC;YACD,IAAI,CAAC,OAAO,GAAG,GAAG,CAAA;YAElB,OAAO,CAAC,IAAI,CAAC,CAAA;SACd;QACD,OAAO,EAAE,CAAA;IACX,CAAC,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import {\n SuiTransactionBlockResponse,\n MoveCallSuiTransaction,\n getTransactionKind,\n getProgrammableTransaction,\n ProgrammableTransaction,\n SuiTransaction,\n} from '@mysten/sui.js'\n\nexport function getMoveCalls(txBlock: SuiTransactionBlockResponse) {\n const txKind = getTransactionKind(txBlock)\n if (!txKind) {\n return []\n }\n const programmableTx: ProgrammableTransaction | undefined = getProgrammableTransaction(txKind)\n if (!programmableTx) {\n return []\n }\n\n return programmableTx.transactions.flatMap((tx: SuiTransaction) => {\n if ('MoveCall' in tx) {\n const call = tx.MoveCall as MoveCallSuiTransaction\n\n let pkg: string = call.package\n if (call.package.startsWith('0x000000000000000000000000000000000000000000000000000000000000000')) {\n pkg = '0x' + pkg[pkg.length - 1]\n }\n call.package = pkg\n\n return [call]\n }\n return []\n })\n}\n"]}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sentio/sdk",
|
3
3
|
"license": "Apache-2.0",
|
4
|
-
"version": "2.13.0-rc.
|
4
|
+
"version": "2.13.0-rc.3",
|
5
5
|
"type": "module",
|
6
6
|
"scripts": {
|
7
7
|
"compile": "tsc && cp src/utils/*.csv lib/utils && cp src/tsup.config.ts lib",
|
@@ -23,8 +23,8 @@
|
|
23
23
|
"@project-serum/anchor": "^0.26.0",
|
24
24
|
"@sentio/bigdecimal": "^9.1.1-patch.3",
|
25
25
|
"@sentio/ethers-v6": "^1.0.28",
|
26
|
-
"@sentio/protos": "^2.13.0-rc.
|
27
|
-
"@sentio/runtime": "^2.13.0-rc.
|
26
|
+
"@sentio/protos": "^2.13.0-rc.3",
|
27
|
+
"@sentio/runtime": "^2.13.0-rc.3",
|
28
28
|
"@solana/web3.js": "^1.74.0",
|
29
29
|
"@types/prettier": "^2.7.2",
|
30
30
|
"aptos-sdk": "npm:aptos@^1.8.3",
|
@@ -88,5 +88,5 @@
|
|
88
88
|
"engines": {
|
89
89
|
"node": ">=16"
|
90
90
|
},
|
91
|
-
"gitHead": "
|
91
|
+
"gitHead": "3ec3237660afedc8ef282fdc121606070a4070b6"
|
92
92
|
}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
import { ChainAdapter, moduleQname, SPLITTER, TypeDescriptor } from '../move/index.js'
|
2
|
+
import { MoveModuleBytecode, toInternalModule } from './move-types.js'
|
3
|
+
import { AptosNetwork } from './network.js'
|
4
|
+
import { InternalMoveModule, InternalMoveStruct } from '../move/internal-models.js'
|
5
|
+
import { AptosClient } from 'aptos-sdk'
|
6
|
+
|
7
|
+
export class AptosChainAdapter extends ChainAdapter<AptosNetwork, MoveModuleBytecode[]> {
|
8
|
+
static INSTANCE = new AptosChainAdapter()
|
9
|
+
|
10
|
+
async fetchModules(account: string, network: AptosNetwork): Promise<MoveModuleBytecode[]> {
|
11
|
+
const client = getRpcClient(network)
|
12
|
+
return await client.getAccountModules(account)
|
13
|
+
}
|
14
|
+
|
15
|
+
toInternalModules(modules: MoveModuleBytecode[]): InternalMoveModule[] {
|
16
|
+
return modules.flatMap((m) => (m.abi ? [toInternalModule(m)] : []))
|
17
|
+
}
|
18
|
+
|
19
|
+
getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[] {
|
20
|
+
if (params.length === 0) {
|
21
|
+
return params
|
22
|
+
}
|
23
|
+
if (params[0].qname === 'signer' && params[0].reference) {
|
24
|
+
params = params.slice(1)
|
25
|
+
}
|
26
|
+
return params
|
27
|
+
}
|
28
|
+
|
29
|
+
getEventStructs(module: InternalMoveModule) {
|
30
|
+
const qname = moduleQname(module)
|
31
|
+
const structMap = new Map<string, InternalMoveStruct>()
|
32
|
+
const eventMap = new Map<string, InternalMoveStruct>()
|
33
|
+
|
34
|
+
for (const struct of module.structs) {
|
35
|
+
structMap.set(qname + SPLITTER + struct.name, struct)
|
36
|
+
}
|
37
|
+
|
38
|
+
for (const struct of module.structs) {
|
39
|
+
for (const field of struct.fields) {
|
40
|
+
const t = field.type
|
41
|
+
if (t.qname === '0x1::event::EventHandle') {
|
42
|
+
const event = t.typeArgs[0].qname
|
43
|
+
const eventStruct = structMap.get(event)
|
44
|
+
if (eventStruct) {
|
45
|
+
eventMap.set(event, eventStruct)
|
46
|
+
}
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
return eventMap
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
function getRpcClient(network: AptosNetwork): AptosClient {
|
56
|
+
return new AptosClient(getRpcEndpoint(network))
|
57
|
+
}
|
58
|
+
|
59
|
+
function getRpcEndpoint(network: AptosNetwork): string {
|
60
|
+
switch (network) {
|
61
|
+
case AptosNetwork.TEST_NET:
|
62
|
+
return 'https://testnet.aptoslabs.com/'
|
63
|
+
}
|
64
|
+
return 'https://mainnet.aptoslabs.com/'
|
65
|
+
}
|
@@ -1,13 +1,10 @@
|
|
1
1
|
import * as fs from 'fs'
|
2
|
-
import { MoveModuleBytecode
|
3
|
-
import { moduleQname, SPLITTER, TypeDescriptor } from '../../move/index.js'
|
2
|
+
import { MoveModuleBytecode } from '../move-types.js'
|
4
3
|
import chalk from 'chalk'
|
5
4
|
import { AptosNetwork } from '../network.js'
|
6
|
-
import {
|
7
|
-
import {
|
8
|
-
import { InternalMoveModule, InternalMoveStruct } from '../../move/internal-models.js'
|
5
|
+
import { join } from 'path'
|
6
|
+
import { AptosChainAdapter } from '../aptos-chain-adapter.js'
|
9
7
|
import { AbstractCodegen } from '../../move/abstract-codegen.js'
|
10
|
-
import {join} from "path";
|
11
8
|
|
12
9
|
export async function codegen(abisDir: string, outDir = join('src', 'types', 'aptos'), genExample = false) {
|
13
10
|
if (!fs.existsSync(abisDir)) {
|
@@ -18,59 +15,13 @@ export async function codegen(abisDir: string, outDir = join('src', 'types', 'ap
|
|
18
15
|
console.log(chalk.green(`Generated ${numFiles} for Aptos`))
|
19
16
|
}
|
20
17
|
|
21
|
-
function getRpcEndpoint(network: AptosNetwork): string {
|
22
|
-
switch (network) {
|
23
|
-
case AptosNetwork.TEST_NET:
|
24
|
-
return 'https://testnet.aptoslabs.com/'
|
25
|
-
}
|
26
|
-
return 'https://mainnet.aptoslabs.com/'
|
27
|
-
}
|
28
|
-
|
29
|
-
function getRpcClient(network: AptosNetwork): AptosClient {
|
30
|
-
return new AptosClient(getRpcEndpoint(network))
|
31
|
-
}
|
32
|
-
|
33
18
|
class AptosCodegen extends AbstractCodegen<MoveModuleBytecode[], AptosNetwork> {
|
34
19
|
ADDRESS_TYPE = 'Address'
|
35
20
|
MAIN_NET = AptosNetwork.MAIN_NET
|
36
21
|
TEST_NET = AptosNetwork.TEST_NET
|
37
22
|
PREFIX = 'Aptos'
|
38
23
|
|
39
|
-
|
40
|
-
|
41
|
-
return await client.getAccountModules(account)
|
42
|
-
}
|
43
|
-
|
44
|
-
toInternalModules(modules: MoveModuleBytecode[]): InternalMoveModule[] {
|
45
|
-
return modules.flatMap((m) => (m.abi ? [toInternalModule(m)] : []))
|
46
|
-
}
|
47
|
-
|
48
|
-
getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[] {
|
49
|
-
return getMeaningfulFunctionParams(params)
|
50
|
-
}
|
51
|
-
|
52
|
-
getEventStructs(module: InternalMoveModule) {
|
53
|
-
const qname = moduleQname(module)
|
54
|
-
const structMap = new Map<string, InternalMoveStruct>()
|
55
|
-
const eventMap = new Map<string, InternalMoveStruct>()
|
56
|
-
|
57
|
-
for (const struct of module.structs) {
|
58
|
-
structMap.set(qname + SPLITTER + struct.name, struct)
|
59
|
-
}
|
60
|
-
|
61
|
-
for (const struct of module.structs) {
|
62
|
-
for (const field of struct.fields) {
|
63
|
-
const t = field.type
|
64
|
-
if (t.qname === '0x1::event::EventHandle') {
|
65
|
-
const event = t.typeArgs[0].qname
|
66
|
-
const eventStruct = structMap.get(event)
|
67
|
-
if (eventStruct) {
|
68
|
-
eventMap.set(event, eventStruct)
|
69
|
-
}
|
70
|
-
}
|
71
|
-
}
|
72
|
-
}
|
73
|
-
|
74
|
-
return eventMap
|
24
|
+
constructor() {
|
25
|
+
super(AptosChainAdapter.INSTANCE)
|
75
26
|
}
|
76
27
|
}
|
package/src/aptos/move-coder.ts
CHANGED
@@ -6,12 +6,17 @@ import {
|
|
6
6
|
TransactionPayload_EntryFunctionPayload,
|
7
7
|
} from './move-types.js'
|
8
8
|
|
9
|
-
import { TypedEventInstance,
|
10
|
-
import { getMeaningfulFunctionParams } from './utils.js'
|
9
|
+
import { TypedEventInstance, TypedFunctionPayload, TypedMoveResource } from './models.js'
|
11
10
|
import { AbstractMoveCoder } from '../move/abstract-move-coder.js'
|
12
|
-
import {
|
11
|
+
import { AptosNetwork } from './network.js'
|
12
|
+
import { AptosChainAdapter } from './aptos-chain-adapter.js'
|
13
|
+
|
14
|
+
export class MoveCoder extends AbstractMoveCoder<AptosNetwork, MoveModuleBytecode[], Event | MoveResource> {
|
15
|
+
constructor(network: AptosNetwork) {
|
16
|
+
super(network)
|
17
|
+
this.adapter = new AptosChainAdapter()
|
18
|
+
}
|
13
19
|
|
14
|
-
export class MoveCoder extends AbstractMoveCoder<Event | MoveResource> {
|
15
20
|
load(module: MoveModuleBytecode) {
|
16
21
|
if (!module.abi) {
|
17
22
|
throw Error('Module without abi')
|
@@ -35,13 +40,9 @@ export class MoveCoder extends AbstractMoveCoder<Event | MoveResource> {
|
|
35
40
|
return this.filterAndDecodeStruct(typeQname, resources) as any
|
36
41
|
}
|
37
42
|
|
38
|
-
getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[] {
|
39
|
-
return getMeaningfulFunctionParams(params)
|
40
|
-
}
|
41
|
-
|
42
43
|
decodeFunctionPayload(payload: TransactionPayload_EntryFunctionPayload): TransactionPayload_EntryFunctionPayload {
|
43
44
|
const func = this.getMoveFunction(payload.function)
|
44
|
-
const params = getMeaningfulFunctionParams(func.params)
|
45
|
+
const params = this.adapter.getMeaningfulFunctionParams(func.params)
|
45
46
|
const argumentsDecoded = this.decodeArray(payload.arguments, params)
|
46
47
|
|
47
48
|
return {
|
@@ -51,7 +52,7 @@ export class MoveCoder extends AbstractMoveCoder<Event | MoveResource> {
|
|
51
52
|
}
|
52
53
|
}
|
53
54
|
|
54
|
-
export const MOVE_CODER = new MoveCoder()
|
55
|
+
export const MOVE_CODER = new MoveCoder(AptosNetwork.MAIN_NET)
|
55
56
|
|
56
57
|
export function defaultMoveCoder(): MoveCoder {
|
57
58
|
return MOVE_CODER
|