@sentio/sdk 2.5.5 → 2.6.0-rc.2

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.
Files changed (41) hide show
  1. package/lib/eth/eth.js +3 -1
  2. package/lib/eth/eth.js.map +1 -1
  3. package/lib/eth/provider.js +9 -5
  4. package/lib/eth/provider.js.map +1 -1
  5. package/lib/move/abstract-codegen.d.ts +2 -0
  6. package/lib/move/abstract-codegen.js +71 -6
  7. package/lib/move/abstract-codegen.js.map +1 -1
  8. package/lib/move/abstract-move-coder.js +0 -2
  9. package/lib/move/abstract-move-coder.js.map +1 -1
  10. package/lib/move/index.d.ts +0 -1
  11. package/lib/move/index.js +0 -1
  12. package/lib/move/index.js.map +1 -1
  13. package/lib/move/utils.d.ts +2 -0
  14. package/lib/move/utils.js +3 -0
  15. package/lib/move/utils.js.map +1 -1
  16. package/lib/sui/builtin/0x1.d.ts +1 -14
  17. package/lib/sui/builtin/0x1.js +0 -25
  18. package/lib/sui/builtin/0x1.js.map +1 -1
  19. package/lib/sui/builtin/0x2.d.ts +26 -43
  20. package/lib/sui/builtin/0x2.js +1 -29
  21. package/lib/sui/builtin/0x2.js.map +1 -1
  22. package/lib/sui/codegen/codegen.js +21 -1
  23. package/lib/sui/codegen/codegen.js.map +1 -1
  24. package/lib/sui/move-coder.d.ts +1 -0
  25. package/lib/sui/move-coder.js +11 -0
  26. package/lib/sui/move-coder.js.map +1 -1
  27. package/package.json +4 -4
  28. package/src/eth/eth.ts +5 -1
  29. package/src/eth/provider.ts +9 -6
  30. package/src/move/abstract-codegen.ts +80 -6
  31. package/src/move/abstract-move-coder.ts +0 -2
  32. package/src/move/index.ts +0 -1
  33. package/src/move/utils.ts +6 -0
  34. package/src/sui/builtin/0x1.ts +1 -37
  35. package/src/sui/builtin/0x2.ts +27 -66
  36. package/src/sui/codegen/codegen.ts +23 -1
  37. package/src/sui/move-coder.ts +12 -0
  38. package/lib/move/ts-type.d.ts +0 -2
  39. package/lib/move/ts-type.js +0 -77
  40. package/lib/move/ts-type.js.map +0 -1
  41. package/src/move/ts-type.ts +0 -86
package/lib/eth/eth.js CHANGED
@@ -24,6 +24,7 @@ export function transformEtherError(e, ctx) {
24
24
  if (e instanceof SimpleEthersError) {
25
25
  return e;
26
26
  }
27
+ const checkPage = 'Check here for possible cause and fix: https://docs.sentio.xyz/best-practices/handling-errors#ethers-error';
27
28
  let msg = '';
28
29
  const err = e;
29
30
  if (err.code === 'CALL_EXCEPTION') {
@@ -38,10 +39,11 @@ export function transformEtherError(e, ctx) {
38
39
  else {
39
40
  msg = "jsonrpc eth_call return '0x' (likely contract not existed): " + JSON.stringify(err);
40
41
  }
42
+ msg += '\n' + checkPage;
41
43
  return new SimpleEthersError(msg, err);
42
44
  }
43
45
  }
44
- msg = 'ethers call error\n' + JSON.stringify(e) + '\n' + e.stack?.toString();
46
+ msg = 'ethers call error\n' + JSON.stringify(e) + '\n' + e.stack?.toString() + '\n' + checkPage;
45
47
  return new Error(msg);
46
48
  }
47
49
  export function decodeResult(result) {
@@ -1 +1 @@
1
- {"version":3,"file":"eth.js","sourceRoot":"","sources":["../../src/eth/eth.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BlockTag,\n LogParams,\n formatBlock,\n formatLog,\n TransactionReceiptParams,\n formatTransactionResponse,\n allowNull,\n arrayOf,\n formatHash,\n formatReceiptLog,\n object,\n formatData,\n} from 'ethers/providers'\nimport { CallExceptionError, Result, LogDescription } from 'ethers'\nimport { ContractContext } from './context.js'\nimport { Trace } from './trace.js'\nimport { getAddress } from 'ethers/address'\nimport { getBigInt, getNumber, hexlify } from 'ethers/utils'\n\nexport interface EthEvent<TArgsArray extends Array<any> = any, TArgsObject = any> extends LogParams {\n args: TArgsArray & TArgsObject & Result\n name: string\n}\n\nexport function toBlockTag(a: number | bigint): BlockTag {\n if (typeof a === 'number') {\n return a\n }\n if (a > Number.MAX_SAFE_INTEGER) {\n return '0x' + a.toString(16)\n }\n return Number(a)\n}\n\nexport class SimpleEthersError extends Error {\n e: Error\n\n constructor(message: string, e: Error) {\n super(message)\n this.stack = e.stack\n }\n\n toString() {\n return this.message + '\\n' + this.stack?.toString()\n }\n}\n\nexport function transformEtherError(e: Error, ctx: ContractContext<any, any> | undefined): Error {\n if (e instanceof SimpleEthersError) {\n return e\n }\n\n let msg = ''\n const err = e as CallExceptionError\n if (err.code === 'CALL_EXCEPTION') {\n if (err.data === '0x') {\n if (ctx) {\n msg =\n \"jsonrpc eth_call return '0x' (likely contract not existed) at chain \" +\n ctx.chainId +\n ': ' +\n JSON.stringify(e)\n } else {\n msg = \"jsonrpc eth_call return '0x' (likely contract not existed): \" + JSON.stringify(err)\n }\n return new SimpleEthersError(msg, err)\n }\n }\n\n msg = 'ethers call error\\n' + JSON.stringify(e) + '\\n' + e.stack?.toString()\n return new Error(msg)\n}\n\nexport function decodeResult(result: LogDescription): any {\n const decoded = [] as any\n for (const [i, arg] of result.fragment.inputs.entries()) {\n if (arg.name === '') {\n decoded['arg' + i] = result.args[i]\n } else {\n decoded[arg.name] = result.args[i]\n }\n decoded.push(result.args[i])\n }\n return decoded\n}\n\nconst _formatTransactionReceipt = object(\n {\n to: allowNull(getAddress, null),\n from: allowNull(getAddress, null),\n contractAddress: allowNull(getAddress, null),\n // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n index: getNumber,\n root: allowNull(hexlify),\n gasUsed: getBigInt,\n logsBloom: allowNull(formatData),\n blockHash: formatHash,\n hash: formatHash,\n logs: allowNull(arrayOf(formatReceiptLog)), // Only thing that different\n blockNumber: getNumber,\n //confirmations: allowNull(getNumber, null),\n cumulativeGasUsed: getBigInt,\n effectiveGasPrice: allowNull(getBigInt),\n status: allowNull(getNumber),\n type: allowNull(getNumber, 0),\n },\n {\n effectiveGasPrice: ['gasPrice'],\n hash: ['transactionHash'],\n index: ['transactionIndex'],\n }\n)\n\nfunction formatTransactionReceipt(value: any): TransactionReceiptParams {\n return _formatTransactionReceipt(value)\n}\n\nexport function formatEthData(data: {\n log?: any\n block?: any\n trace?: any\n transaction?: any\n transactionReceipt?: any\n}) {\n const log = data.log ? formatLog(data.log) : undefined\n if (data.block && !data.block.transactions) {\n data.block.transactions = []\n }\n const block = data.block ? formatBlock(data.block) : undefined\n const trace = data.trace ? (data.trace as Trace) : undefined\n const transaction = data.transaction ? formatTransactionResponse(data.transaction) : undefined\n const transactionReceipt = data.transactionReceipt ? formatTransactionReceipt(data.transactionReceipt) : undefined\n return {\n log,\n block,\n trace,\n transaction,\n transactionReceipt,\n }\n}\n"]}
1
+ {"version":3,"file":"eth.js","sourceRoot":"","sources":["../../src/eth/eth.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BlockTag,\n LogParams,\n formatBlock,\n formatLog,\n TransactionReceiptParams,\n formatTransactionResponse,\n allowNull,\n arrayOf,\n formatHash,\n formatReceiptLog,\n object,\n formatData,\n} from 'ethers/providers'\nimport { CallExceptionError, Result, LogDescription } from 'ethers'\nimport { ContractContext } from './context.js'\nimport { Trace } from './trace.js'\nimport { getAddress } from 'ethers/address'\nimport { getBigInt, getNumber, hexlify } from 'ethers/utils'\n\nexport interface EthEvent<TArgsArray extends Array<any> = any, TArgsObject = any> extends LogParams {\n args: TArgsArray & TArgsObject & Result\n name: string\n}\n\nexport function toBlockTag(a: number | bigint): BlockTag {\n if (typeof a === 'number') {\n return a\n }\n if (a > Number.MAX_SAFE_INTEGER) {\n return '0x' + a.toString(16)\n }\n return Number(a)\n}\n\nexport class SimpleEthersError extends Error {\n e: Error\n\n constructor(message: string, e: Error) {\n super(message)\n this.stack = e.stack\n }\n\n toString() {\n return this.message + '\\n' + this.stack?.toString()\n }\n}\n\nexport function transformEtherError(e: Error, ctx: ContractContext<any, any> | undefined): Error {\n if (e instanceof SimpleEthersError) {\n return e\n }\n\n const checkPage =\n 'Check here for possible cause and fix: https://docs.sentio.xyz/best-practices/handling-errors#ethers-error'\n\n let msg = ''\n const err = e as CallExceptionError\n if (err.code === 'CALL_EXCEPTION') {\n if (err.data === '0x') {\n if (ctx) {\n msg =\n \"jsonrpc eth_call return '0x' (likely contract not existed) at chain \" +\n ctx.chainId +\n ': ' +\n JSON.stringify(e)\n } else {\n msg = \"jsonrpc eth_call return '0x' (likely contract not existed): \" + JSON.stringify(err)\n }\n msg += '\\n' + checkPage\n return new SimpleEthersError(msg, err)\n }\n }\n\n msg = 'ethers call error\\n' + JSON.stringify(e) + '\\n' + e.stack?.toString() + '\\n' + checkPage\n return new Error(msg)\n}\n\nexport function decodeResult(result: LogDescription): any {\n const decoded = [] as any\n for (const [i, arg] of result.fragment.inputs.entries()) {\n if (arg.name === '') {\n decoded['arg' + i] = result.args[i]\n } else {\n decoded[arg.name] = result.args[i]\n }\n decoded.push(result.args[i])\n }\n return decoded\n}\n\nconst _formatTransactionReceipt = object(\n {\n to: allowNull(getAddress, null),\n from: allowNull(getAddress, null),\n contractAddress: allowNull(getAddress, null),\n // should be allowNull(hash), but broken-EIP-658 support is handled in receipt\n index: getNumber,\n root: allowNull(hexlify),\n gasUsed: getBigInt,\n logsBloom: allowNull(formatData),\n blockHash: formatHash,\n hash: formatHash,\n logs: allowNull(arrayOf(formatReceiptLog)), // Only thing that different\n blockNumber: getNumber,\n //confirmations: allowNull(getNumber, null),\n cumulativeGasUsed: getBigInt,\n effectiveGasPrice: allowNull(getBigInt),\n status: allowNull(getNumber),\n type: allowNull(getNumber, 0),\n },\n {\n effectiveGasPrice: ['gasPrice'],\n hash: ['transactionHash'],\n index: ['transactionIndex'],\n }\n)\n\nfunction formatTransactionReceipt(value: any): TransactionReceiptParams {\n return _formatTransactionReceipt(value)\n}\n\nexport function formatEthData(data: {\n log?: any\n block?: any\n trace?: any\n transaction?: any\n transactionReceipt?: any\n}) {\n const log = data.log ? formatLog(data.log) : undefined\n if (data.block && !data.block.transactions) {\n data.block.transactions = []\n }\n const block = data.block ? formatBlock(data.block) : undefined\n const trace = data.trace ? (data.trace as Trace) : undefined\n const transaction = data.transaction ? formatTransactionResponse(data.transaction) : undefined\n const transactionReceipt = data.transactionReceipt ? formatTransactionReceipt(data.transactionReceipt) : undefined\n return {\n log,\n block,\n trace,\n transaction,\n transactionReceipt,\n }\n}\n"]}
@@ -66,15 +66,19 @@ class QueuedStaticJsonRpcProvider extends JsonRpcProvider {
66
66
  }
67
67
  async send(method, params) {
68
68
  const tag = getTag(method, params);
69
+ const block = params[params.length - 1];
69
70
  let perform = this.#performCache.get(tag);
70
71
  if (!perform) {
71
72
  perform = this.executor.add(() => super.send(method, params));
72
73
  this.#performCache.set(tag, perform);
73
- setTimeout(() => {
74
- if (this.#performCache.get(tag) === perform) {
75
- this.#performCache.delete(tag);
76
- }
77
- }, 500);
74
+ // For non latest block call, we cache permanently, otherwise we cache for one minute
75
+ if (block === 'latest') {
76
+ setTimeout(() => {
77
+ if (this.#performCache.get(tag) === perform) {
78
+ this.#performCache.delete(tag);
79
+ }
80
+ }, 60 * 1000);
81
+ }
78
82
  }
79
83
  const result = await perform;
80
84
  if (!result) {
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/eth/provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { Provider, Network, JsonRpcProvider } from 'ethers'\nimport { Networkish } from 'ethers/providers'\n\nimport PQueue from 'p-queue'\nimport { Endpoints } from '@sentio/runtime'\n\nexport const DummyProvider = new JsonRpcProvider('', Network.from(1))\n\nconst providers = new Map<string, JsonRpcProvider>()\n\nexport function getProvider(networkish?: Networkish): Provider {\n if (!networkish) {\n networkish = 1\n }\n if (typeof networkish === 'string') {\n const id = parseInt(networkish)\n if (!isNaN(id)) {\n networkish = 1\n }\n }\n const network = Network.from(networkish)\n // TODO check if other key needed\n\n const address = Endpoints.INSTANCE.chainServer.get(network.chainId.toString())\n const key = network.chainId.toString() + '-' + address\n let provider = providers.get(key)\n\n if (provider) {\n return provider\n }\n\n if (address === undefined) {\n throw Error(\n 'Provider not found for chain ' +\n network.chainId +\n ', configured chains: ' +\n [...Endpoints.INSTANCE.chainServer.keys()].join(' ')\n )\n }\n provider = new QueuedStaticJsonRpcProvider(address, Network.from(network), Endpoints.INSTANCE.concurrency)\n providers.set(network.chainId.toString(), provider)\n return provider\n}\n\nfunction getTag(prefix: string, value: any): string {\n return (\n prefix +\n ':' +\n JSON.stringify(value, (k, v) => {\n if (v == null) {\n return 'null'\n }\n if (typeof v === 'bigint') {\n return `bigint:${v.toString()}`\n }\n if (typeof v === 'string') {\n return v.toLowerCase()\n }\n\n // Sort object keys\n if (typeof v === 'object' && !Array.isArray(v)) {\n const keys = Object.keys(v)\n keys.sort()\n return keys.reduce((accum, key) => {\n accum[key] = v[key]\n return accum\n }, <any>{})\n }\n\n return v\n })\n )\n}\n\nclass QueuedStaticJsonRpcProvider extends JsonRpcProvider {\n executor: PQueue\n #performCache = new Map<string, Promise<any>>()\n\n constructor(url: string, network: Network, concurrency: number) {\n // TODO re-enable match when possible\n super(url, network, { staticNetwork: network, batchMaxCount: 1 })\n this.executor = new PQueue({ concurrency: concurrency })\n }\n\n async send(method: string, params: Array<any>): Promise<any> {\n const tag = getTag(method, params)\n let perform = this.#performCache.get(tag)\n if (!perform) {\n perform = this.executor.add(() => super.send(method, params))\n this.#performCache.set(tag, perform)\n\n setTimeout(() => {\n if (this.#performCache.get(tag) === perform) {\n this.#performCache.delete(tag)\n }\n }, 500)\n }\n\n const result = await perform\n if (!result) {\n throw Error('Unexpected null response')\n }\n return result\n }\n}\n"]}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/eth/provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { Provider, Network, JsonRpcProvider } from 'ethers'\nimport { Networkish } from 'ethers/providers'\n\nimport PQueue from 'p-queue'\nimport { Endpoints } from '@sentio/runtime'\n\nexport const DummyProvider = new JsonRpcProvider('', Network.from(1))\n\nconst providers = new Map<string, JsonRpcProvider>()\n\nexport function getProvider(networkish?: Networkish): Provider {\n if (!networkish) {\n networkish = 1\n }\n if (typeof networkish === 'string') {\n const id = parseInt(networkish)\n if (!isNaN(id)) {\n networkish = 1\n }\n }\n const network = Network.from(networkish)\n // TODO check if other key needed\n\n const address = Endpoints.INSTANCE.chainServer.get(network.chainId.toString())\n const key = network.chainId.toString() + '-' + address\n let provider = providers.get(key)\n\n if (provider) {\n return provider\n }\n\n if (address === undefined) {\n throw Error(\n 'Provider not found for chain ' +\n network.chainId +\n ', configured chains: ' +\n [...Endpoints.INSTANCE.chainServer.keys()].join(' ')\n )\n }\n provider = new QueuedStaticJsonRpcProvider(address, Network.from(network), Endpoints.INSTANCE.concurrency)\n providers.set(network.chainId.toString(), provider)\n return provider\n}\n\nfunction getTag(prefix: string, value: any): string {\n return (\n prefix +\n ':' +\n JSON.stringify(value, (k, v) => {\n if (v == null) {\n return 'null'\n }\n if (typeof v === 'bigint') {\n return `bigint:${v.toString()}`\n }\n if (typeof v === 'string') {\n return v.toLowerCase()\n }\n\n // Sort object keys\n if (typeof v === 'object' && !Array.isArray(v)) {\n const keys = Object.keys(v)\n keys.sort()\n return keys.reduce((accum, key) => {\n accum[key] = v[key]\n return accum\n }, <any>{})\n }\n\n return v\n })\n )\n}\n\nclass QueuedStaticJsonRpcProvider extends JsonRpcProvider {\n executor: PQueue\n #performCache = new Map<string, Promise<any>>()\n\n constructor(url: string, network: Network, concurrency: number) {\n // TODO re-enable match when possible\n super(url, network, { staticNetwork: network, batchMaxCount: 1 })\n this.executor = new PQueue({ concurrency: concurrency })\n }\n\n async send(method: string, params: Array<any>): Promise<any> {\n const tag = getTag(method, params)\n const block = params[params.length - 1]\n let perform = this.#performCache.get(tag)\n if (!perform) {\n perform = this.executor.add(() => super.send(method, params))\n this.#performCache.set(tag, perform)\n // For non latest block call, we cache permanently, otherwise we cache for one minute\n if (block === 'latest') {\n setTimeout(() => {\n if (this.#performCache.get(tag) === perform) {\n this.#performCache.delete(tag)\n }\n }, 60 * 1000)\n }\n }\n\n const result = await perform\n if (!result) {\n throw Error('Unexpected null response')\n }\n return result\n }\n}\n"]}
@@ -33,6 +33,8 @@ export declare abstract class AbstractCodegen<ModuleTypes, NetworkType> {
33
33
  generateClientFunctions(module: InternalMoveModule, func: InternalMoveFunction): string;
34
34
  generateOnEntryFunctions(module: InternalMoveModule, func: InternalMoveFunction): string;
35
35
  generateOnEvents(module: InternalMoveModule, struct: InternalMoveStruct): string;
36
+ generateTypeForDescriptor(type: TypeDescriptor, currentAddress: string): string;
37
+ generateSimpleType(type: string, currentAddress: string): string;
36
38
  }
37
39
  export declare class AccountCodegen<ModuleType, NetworkType> {
38
40
  modules: InternalMoveModule[];
@@ -4,8 +4,7 @@ import fs from 'fs';
4
4
  import { AccountModulesImportInfo, AccountRegister } from './account.js';
5
5
  import chalk from 'chalk';
6
6
  import { format } from 'prettier';
7
- import { isFrameworkAccount, moduleQname, normalizeToJSName, SPLITTER } from './utils.js';
8
- import { generateTypeForDescriptor } from './ts-type.js';
7
+ import { isFrameworkAccount, moduleQname, normalizeToJSName, SPLITTER, VECTOR_STR } from './utils.js';
9
8
  import { camelCase, upperFirst } from 'lodash-es';
10
9
  export class AbstractCodegen {
11
10
  TEST_NET;
@@ -161,7 +160,7 @@ export class AbstractCodegen {
161
160
  const genericStringAny = this.generateStructTypeParameters(struct, true);
162
161
  const structName = normalizeToJSName(struct.name);
163
162
  const fields = struct.fields.map((field) => {
164
- const type = generateTypeForDescriptor(field.type, module.address, this.ADDRESS_TYPE);
163
+ const type = this.generateTypeForDescriptor(field.type, module.address);
165
164
  return `${field.name}: ${type}`;
166
165
  });
167
166
  let eventPayload = '';
@@ -212,7 +211,7 @@ export class AbstractCodegen {
212
211
  return;
213
212
  }
214
213
  const fields = this.getMeaningfulFunctionParams(func.params).map((param) => {
215
- return generateTypeForDescriptor(param, module.address, this.ADDRESS_TYPE);
214
+ return this.generateTypeForDescriptor(param, module.address);
216
215
  });
217
216
  const camelFuncName = upperFirst(camelCase(func.name));
218
217
  const genericString = this.generateFunctionTypeParameters(func);
@@ -234,11 +233,11 @@ export class AbstractCodegen {
234
233
  // const moduleName = normalizeToJSName(module.name)
235
234
  const funcName = camelCase(func.name);
236
235
  const fields = this.getMeaningfulFunctionParams(func.params).map((param) => {
237
- return generateTypeForDescriptor(param, module.address, this.ADDRESS_TYPE);
236
+ return this.generateTypeForDescriptor(param, module.address);
238
237
  });
239
238
  const genericString = this.generateFunctionTypeParameters(func);
240
239
  const returns = func.return.map((param) => {
241
- return generateTypeForDescriptor(param, module.address, this.ADDRESS_TYPE);
240
+ return this.generateTypeForDescriptor(param, module.address);
242
241
  });
243
242
  const source = `
244
243
  ${funcName}${genericString}(type_arguments: [${func.typeParams
@@ -284,6 +283,72 @@ export class AbstractCodegen {
284
283
  `;
285
284
  return source;
286
285
  }
286
+ generateTypeForDescriptor(type, currentAddress) {
287
+ if (type.reference) {
288
+ return this.ADDRESS_TYPE;
289
+ }
290
+ switch (type.qname) {
291
+ case 'signer': // TODO check this
292
+ case 'address':
293
+ case 'Address':
294
+ return this.ADDRESS_TYPE;
295
+ case '0x1::string::String':
296
+ return 'string';
297
+ case 'bool':
298
+ case 'Bool':
299
+ return 'Boolean';
300
+ case 'u8':
301
+ case 'U8':
302
+ case 'u16':
303
+ case 'U16':
304
+ case 'u32':
305
+ case 'U32':
306
+ return 'number';
307
+ case 'u64':
308
+ case 'U64':
309
+ case 'u128':
310
+ case 'U128':
311
+ case 'u256':
312
+ case 'U256':
313
+ return 'bigint';
314
+ }
315
+ if (type.qname.toLowerCase() === VECTOR_STR) {
316
+ // vector<u8> as hex string
317
+ const elementTypeQname = type.typeArgs[0].qname;
318
+ if (elementTypeQname === 'u8' || elementTypeQname === 'U8') {
319
+ return 'string';
320
+ }
321
+ if (elementTypeQname.startsWith('T') && !elementTypeQname.includes(SPLITTER)) {
322
+ return `${elementTypeQname}[] | string`;
323
+ }
324
+ return this.generateTypeForDescriptor(type.typeArgs[0], currentAddress) + '[]';
325
+ }
326
+ const simpleName = this.generateSimpleType(type.qname, currentAddress);
327
+ if (simpleName.length === 0) {
328
+ console.error('unexpected error');
329
+ }
330
+ if (simpleName.toLowerCase() === VECTOR_STR || simpleName.toLowerCase().startsWith(VECTOR_STR + SPLITTER)) {
331
+ console.error('unexpected vector type error');
332
+ }
333
+ if (type.typeArgs.length > 0) {
334
+ // return simpleName
335
+ return (simpleName + '<' + type.typeArgs.map((t) => this.generateTypeForDescriptor(t, currentAddress)).join(',') + '>');
336
+ }
337
+ return simpleName;
338
+ }
339
+ generateSimpleType(type, currentAddress) {
340
+ const parts = type.split(SPLITTER);
341
+ for (let i = 0; i < parts.length; i++) {
342
+ parts[i] = normalizeToJSName(parts[i]);
343
+ }
344
+ if (parts.length < 2) {
345
+ return parts[0];
346
+ }
347
+ if (parts[0] === currentAddress) {
348
+ return parts.slice(1).join('.');
349
+ }
350
+ return '_' + parts.join('.');
351
+ }
287
352
  }
288
353
  export class AccountCodegen {
289
354
  modules;
@@ -1 +1 @@
1
- {"version":3,"file":"abstract-codegen.js","sourceRoot":"","sources":["../../src/move/abstract-codegen.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n InternalMoveFunction,\n InternalMoveFunctionVisibility,\n InternalMoveModule,\n InternalMoveStruct,\n} from './internal-models.js'\nimport path from 'path'\nimport fs from 'fs'\nimport { AccountModulesImportInfo, AccountRegister } from './account.js'\nimport chalk from 'chalk'\nimport { format } from 'prettier'\nimport { isFrameworkAccount, moduleQname, normalizeToJSName, SPLITTER } from './utils.js'\nimport { generateTypeForDescriptor } from './ts-type.js'\nimport { camelCase, upperFirst } from 'lodash-es'\nimport { TypeDescriptor } from './types.js'\n\ninterface OutputFile {\n fileName: string\n fileContent: string\n}\n\ninterface Config<NetworkType> {\n fileName: string\n outputDir: string\n network: NetworkType\n}\n\nexport abstract class AbstractCodegen<ModuleTypes, NetworkType> {\n TEST_NET: NetworkType\n MAIN_NET: NetworkType\n ADDRESS_TYPE: string\n PREFIX: string\n STRUCT_FIELD_NAME: string = 'data'\n GENERATED_CLIENT = false\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 readModulesFile(fullPath: string) {\n return JSON.parse(fs.readFileSync(fullPath, 'utf-8'))\n }\n\n async generate(srcDir: string, outputDir: string) {\n await this.generateForNetwork(srcDir, outputDir, this.MAIN_NET)\n await this.generateForNetwork(path.join(srcDir, 'testnet'), path.join(outputDir, 'testnet'), this.TEST_NET)\n }\n\n async generateForNetwork(srcDir: string, outputDir: string, network: NetworkType) {\n if (!fs.existsSync(srcDir)) {\n return\n }\n\n const files = fs.readdirSync(srcDir)\n outputDir = path.resolve(outputDir)\n const outputs: OutputFile[] = []\n\n fs.mkdirSync(outputDir, { recursive: true })\n\n const loader = new AccountRegister()\n\n // when generating user code, don't need to generate framework account\n loader.accountImports.set('0x1', new AccountModulesImportInfo('0x1', '0x1'))\n loader.accountImports.set('0x2', new AccountModulesImportInfo('0x2', '0x2'))\n loader.accountImports.set('0x3', new AccountModulesImportInfo('0x3', '0x3'))\n // const client = getRpcClient(network)\n\n for (const file of files) {\n if (!file.endsWith('.json')) {\n continue\n }\n const fullPath = path.resolve(srcDir, file)\n const abi = this.readModulesFile(fullPath)\n const modules = this.toInternalModules(abi)\n\n for (const module of modules) {\n loader.register(module, path.basename(file, '.json'))\n }\n const codeGen = new AccountCodegen(this, loader, abi, modules, {\n fileName: path.basename(file, '.json'),\n outputDir: outputDir,\n network,\n })\n\n outputs.push(...codeGen.generate())\n }\n\n while (loader.pendingAccounts.size > 0) {\n for (const account of loader.pendingAccounts) {\n console.log(`download dependent module for account ${account} at ${network}`)\n\n try {\n const rawModules = await this.fetchModules(account, network)\n const modules = this.toInternalModules(rawModules)\n\n fs.writeFileSync(path.resolve(srcDir, account + '.json'), JSON.stringify(rawModules, null, '\\t'))\n\n for (const module of modules) {\n loader.register(module, account)\n }\n const codeGen = new AccountCodegen(this, loader, rawModules, modules, {\n fileName: account,\n outputDir: outputDir,\n network,\n })\n\n outputs.push(...codeGen.generate())\n } catch (e) {\n console.error(\n chalk.red(\n 'Error downloading account module, check if you choose the right network,or download account modules manually into your director'\n )\n )\n console.error(e)\n process.exit(1)\n }\n }\n }\n\n for (const output of outputs) {\n // const content = output.fileContent\n const content = format(output.fileContent, { parser: 'typescript' })\n fs.writeFileSync(path.join(outputDir, output.fileName), content)\n }\n\n const rootFile = path.join(outputDir, 'index.ts')\n fs.writeFileSync(\n rootFile,\n `/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n`\n )\n for (const output of outputs) {\n const parsed = path.parse(output.fileName)\n const content = `export * as _${parsed.name.replaceAll('-', '_')} from './${parsed.name}.js'\\n`\n fs.appendFileSync(rootFile, content)\n }\n }\n\n generateNetworkOption(network: NetworkType) {\n switch (network) {\n case this.TEST_NET:\n return 'TEST_NET'\n }\n return 'MAIN_NET'\n }\n\n generateModule(module: InternalMoveModule, network: NetworkType) {\n const functions = module.exposedFunctions\n .map((f) => this.generateOnEntryFunctions(module, f))\n .filter((s) => s !== '')\n const clientFunctions = module.exposedFunctions\n .map((f) => this.generateClientFunctions(module, f))\n .filter((s) => s !== '')\n const eventStructs = this.getEventStructs(module)\n const eventTypes = new Set(eventStructs.keys())\n const events = Array.from(eventStructs.values())\n .map((e) => this.generateOnEvents(module, e))\n .filter((s) => s !== '')\n const structs = module.structs.map((s) => this.generateStructs(module, s, eventTypes))\n const callArgs = module.exposedFunctions.map((f) => this.generateCallArgsStructs(module, f))\n\n const moduleName = normalizeToJSName(module.name)\n let processor = ''\n let client = ''\n\n if (this.GENERATED_CLIENT && clientFunctions.length > 0) {\n client = `\n export class ${moduleName}_client extends ModuleClient {\n ${clientFunctions.join('\\n')}\n }\n `\n }\n\n if (functions.length > 0 || events.length > 0) {\n processor = `export class ${moduleName} extends ${this.PREFIX}BaseProcessor {\n\n constructor(options: ${this.PREFIX}BindOptions) {\n super(\"${module.name}\", options)\n }\n static DEFAULT_OPTIONS: ${this.PREFIX}BindOptions = {\n address: \"${module.address}\",\n network: ${this.PREFIX}Network.${this.generateNetworkOption(network)}\n }\n\n static bind(options: Partial<${this.PREFIX}BindOptions> = {}): ${moduleName} {\n return new ${moduleName}({ ...${moduleName}.DEFAULT_OPTIONS, ...options })\n }\n\n ${functions.join('\\n')}\n\n ${events.join('\\n')}\n }\n `\n }\n\n return `\n ${client}\n\n ${processor}\n\n export namespace ${moduleName} {\n ${structs.join('\\n')}\n\n ${callArgs.join('\\n')}\n }\n `\n }\n\n generateStructs(module: InternalMoveModule, struct: InternalMoveStruct, events: Set<string>) {\n const genericString = this.generateStructTypeParameters(struct)\n const genericStringAny = this.generateStructTypeParameters(struct, true)\n\n const structName = normalizeToJSName(struct.name)\n\n const fields = struct.fields.map((field) => {\n const type = generateTypeForDescriptor(field.type, module.address, this.ADDRESS_TYPE)\n return `${field.name}: ${type}`\n })\n\n let eventPayload = ''\n if (events.has(moduleQname(module) + SPLITTER + struct.name)) {\n eventPayload = `\n export interface ${structName}Instance extends\n TypedEventInstance<${structName}${genericStringAny}> {\n ${this.STRUCT_FIELD_NAME}_decoded: ${structName}${genericStringAny}\n type_arguments: [${struct.typeParams.map((_) => 'string').join(', ')}]\n }\n `\n }\n\n return `\n export class ${structName}${genericString} {\n static TYPE_QNAME = '${module.address}::${module.name}::${struct.name}'\n ${fields.join('\\n')}\n }\n\n ${eventPayload}\n `\n }\n\n generateFunctionTypeParameters(func: InternalMoveFunction) {\n let genericString = ''\n if (func.typeParams && func.typeParams.length > 0) {\n const params = func.typeParams\n .map((v, idx) => {\n return `T${idx}=any`\n })\n .join(',')\n genericString = `<${params}>`\n }\n return genericString\n }\n\n generateStructTypeParameters(struct: InternalMoveStruct, useAny = false) {\n let genericString = ''\n\n if (struct.typeParams && struct.typeParams.length > 0) {\n const params = struct.typeParams\n .map((v, idx) => {\n return useAny ? 'any' : 'T' + idx\n })\n .join(',')\n genericString = `<${params}>`\n }\n return genericString\n }\n\n generateCallArgsStructs(module: InternalMoveModule, func: InternalMoveFunction) {\n if (!func.isEntry) {\n return\n }\n\n const fields = this.getMeaningfulFunctionParams(func.params).map((param) => {\n return generateTypeForDescriptor(param, module.address, this.ADDRESS_TYPE)\n })\n\n const camelFuncName = upperFirst(camelCase(func.name))\n\n const genericString = this.generateFunctionTypeParameters(func)\n return `\n export interface ${camelFuncName}Payload${genericString}\n extends TypedFunctionPayload<[${fields.join(',')}]> {\n arguments_decoded: [${fields.join(',')}],\n type_arguments: [${func.typeParams.map((_) => 'string').join(', ')}]\n }\n `\n }\n\n generateClientFunctions(module: InternalMoveModule, func: InternalMoveFunction) {\n if (func.visibility === InternalMoveFunctionVisibility.PRIVATE) {\n return ''\n }\n if (func.isEntry) {\n return ''\n }\n // const moduleName = normalizeToJSName(module.name)\n const funcName = camelCase(func.name)\n const fields = this.getMeaningfulFunctionParams(func.params).map((param) => {\n return generateTypeForDescriptor(param, module.address, this.ADDRESS_TYPE)\n })\n const genericString = this.generateFunctionTypeParameters(func)\n\n const returns = func.return.map((param) => {\n return generateTypeForDescriptor(param, module.address, this.ADDRESS_TYPE)\n })\n\n const source = `\n ${funcName}${genericString}(type_arguments: [${func.typeParams\n .map((_) => 'string')\n .join(', ')}], args: [${fields.join(',')}], version?: bigint): Promise<[${returns.join(',')}]> {\n return this.viewDecoded('${module.address}::${module.name}::${func.name}', type_arguments, args, version) as any\n }`\n return source\n }\n\n generateOnEntryFunctions(module: InternalMoveModule, func: InternalMoveFunction) {\n if (!func.isEntry) {\n return ''\n }\n\n // const genericString = generateFunctionTypeParameters(func)\n const moduleName = normalizeToJSName(module.name)\n\n const camelFuncName = upperFirst(camelCase(func.name))\n const source = `\n onEntry${camelFuncName}(func: (call: ${moduleName}.${camelFuncName}Payload, ctx: ${this.PREFIX}Context) => void, filter?: CallFilter, fetchConfig?: MoveFetchConfig): ${moduleName} {\n this.onEntryFunctionCall(func, {\n ...filter,\n function: '${module.name}::${func.name}'\n },\n fetchConfig)\n return this\n }`\n\n return source\n }\n\n generateOnEvents(module: InternalMoveModule, struct: InternalMoveStruct): string {\n // for struct that has drop + store\n // if (!isEvent(struct, module)) {\n // return ''\n // }\n\n // const genericString = generateStructTypeParameters(struct)\n\n const moduleName = normalizeToJSName(module.name)\n const source = `\n onEvent${struct.name}(func: (event: ${moduleName}.${normalizeToJSName(struct.name)}Instance, ctx: ${\n this.PREFIX\n }Context) => void, fetchConfig?: MoveFetchConfig): ${moduleName} {\n this.onMoveEvent(func, {\n type: '${module.name}::${struct.name}'\n },\n fetchConfig)\n return this\n }\n `\n return source\n }\n}\n\nexport class AccountCodegen<ModuleType, NetworkType> {\n modules: InternalMoveModule[]\n config: Config<NetworkType>\n abi: ModuleType\n loader: AccountRegister\n moduleGen: AbstractCodegen<ModuleType, NetworkType>\n\n constructor(\n moduleGen: AbstractCodegen<ModuleType, NetworkType>,\n loader: AccountRegister,\n abi: ModuleType,\n modules: InternalMoveModule[],\n config: Config<NetworkType>\n ) {\n // const json = fs.readFileSync(config.srcFile, 'utf-8')\n this.moduleGen = moduleGen\n this.abi = abi\n this.modules = modules\n this.config = config\n this.loader = loader\n }\n\n generate(): OutputFile[] {\n if (!this.modules) {\n return []\n }\n // const baseName = path.basename(this.config.fileName, '.json')\n\n let address: string | undefined\n for (const module of this.modules) {\n address = module.address\n }\n if (!address) {\n return []\n }\n\n const imports = `\n import { CallFilter } from \"@sentio/sdk/move\"\n import {\n MoveCoder, defaultMoveCoder, ${this.moduleGen.PREFIX}BindOptions, ${this.moduleGen.PREFIX}BaseProcessor,\n TypedEventInstance, ${this.moduleGen.PREFIX}Network, TypedFunctionPayload,\n ${this.moduleGen.PREFIX}Context } from \"@sentio/sdk/${this.moduleGen.PREFIX.toLowerCase()}\"\n import { MoveFetchConfig } from \"@sentio/protos\"\n import { ${this.moduleGen.ADDRESS_TYPE}, ModuleClient } from \"@sentio/sdk/${this.moduleGen.PREFIX.toLowerCase()}\"\n `\n\n const dependedAccounts: string[] = []\n\n const moduleImports: string[] = []\n\n const info = this.loader.accountImports.get(address)\n\n if (info) {\n for (const [account] of info.imports.entries()) {\n // Remap to user's filename if possible, TODO codepath not well tested\n const tsAccountModule = './' + (this.loader.accountImports.get(account)?.moduleName || account)\n if (isFrameworkAccount(account) && !isFrameworkAccount(address)) {\n // Decide where to find runtime library\n moduleImports.push(`import { _${account} } from \"@sentio/sdk/${this.moduleGen.PREFIX.toLowerCase()}/builtin\"`)\n } else {\n moduleImports.push(`import * as _${account} from \"${tsAccountModule}.js\"`)\n }\n\n dependedAccounts.push(account)\n }\n }\n\n const source = `\n /* Autogenerated file. Do not edit manually. */\n /* tslint:disable */\n /* eslint-disable */\n\n /* Generated modules for account ${address} */\n\n ${imports}\n\n ${moduleImports.join('\\n')}\n\n ${this.modules.map((m) => this.moduleGen.generateModule(m, this.config.network)).join('\\n')}\n\n const MODULES = JSON.parse('${JSON.stringify(this.abi)}')\n\n export function loadAllTypes(coder: MoveCoder) {\n ${dependedAccounts.map((a) => `_${a}.loadAllTypes(coder)`).join('\\n')}\n for (const m of Object.values(MODULES)) {\n coder.load(m as any)\n }\n }\n\n loadAllTypes(defaultMoveCoder())\n ` // source\n\n return [\n {\n fileName: this.config.fileName + '.ts',\n fileContent: source,\n },\n ]\n }\n}\n"]}
1
+ {"version":3,"file":"abstract-codegen.js","sourceRoot":"","sources":["../../src/move/abstract-codegen.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n InternalMoveFunction,\n InternalMoveFunctionVisibility,\n InternalMoveModule,\n InternalMoveStruct,\n} from './internal-models.js'\nimport path from 'path'\nimport fs from 'fs'\nimport { AccountModulesImportInfo, AccountRegister } from './account.js'\nimport chalk from 'chalk'\nimport { format } from 'prettier'\nimport { isFrameworkAccount, moduleQname, normalizeToJSName, SPLITTER, VECTOR_STR } from './utils.js'\nimport { camelCase, upperFirst } from 'lodash-es'\nimport { TypeDescriptor } from './types.js'\n\ninterface OutputFile {\n fileName: string\n fileContent: string\n}\n\ninterface Config<NetworkType> {\n fileName: string\n outputDir: string\n network: NetworkType\n}\n\nexport abstract class AbstractCodegen<ModuleTypes, NetworkType> {\n TEST_NET: NetworkType\n MAIN_NET: NetworkType\n ADDRESS_TYPE: string\n PREFIX: string\n STRUCT_FIELD_NAME: string = 'data'\n GENERATED_CLIENT = false\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 readModulesFile(fullPath: string) {\n return JSON.parse(fs.readFileSync(fullPath, 'utf-8'))\n }\n\n async generate(srcDir: string, outputDir: string) {\n await this.generateForNetwork(srcDir, outputDir, this.MAIN_NET)\n await this.generateForNetwork(path.join(srcDir, 'testnet'), path.join(outputDir, 'testnet'), this.TEST_NET)\n }\n\n async generateForNetwork(srcDir: string, outputDir: string, network: NetworkType) {\n if (!fs.existsSync(srcDir)) {\n return\n }\n\n const files = fs.readdirSync(srcDir)\n outputDir = path.resolve(outputDir)\n const outputs: OutputFile[] = []\n\n fs.mkdirSync(outputDir, { recursive: true })\n\n const loader = new AccountRegister()\n\n // when generating user code, don't need to generate framework account\n loader.accountImports.set('0x1', new AccountModulesImportInfo('0x1', '0x1'))\n loader.accountImports.set('0x2', new AccountModulesImportInfo('0x2', '0x2'))\n loader.accountImports.set('0x3', new AccountModulesImportInfo('0x3', '0x3'))\n // const client = getRpcClient(network)\n\n for (const file of files) {\n if (!file.endsWith('.json')) {\n continue\n }\n const fullPath = path.resolve(srcDir, file)\n const abi = this.readModulesFile(fullPath)\n const modules = this.toInternalModules(abi)\n\n for (const module of modules) {\n loader.register(module, path.basename(file, '.json'))\n }\n const codeGen = new AccountCodegen(this, loader, abi, modules, {\n fileName: path.basename(file, '.json'),\n outputDir: outputDir,\n network,\n })\n\n outputs.push(...codeGen.generate())\n }\n\n while (loader.pendingAccounts.size > 0) {\n for (const account of loader.pendingAccounts) {\n console.log(`download dependent module for account ${account} at ${network}`)\n\n try {\n const rawModules = await this.fetchModules(account, network)\n const modules = this.toInternalModules(rawModules)\n\n fs.writeFileSync(path.resolve(srcDir, account + '.json'), JSON.stringify(rawModules, null, '\\t'))\n\n for (const module of modules) {\n loader.register(module, account)\n }\n const codeGen = new AccountCodegen(this, loader, rawModules, modules, {\n fileName: account,\n outputDir: outputDir,\n network,\n })\n\n outputs.push(...codeGen.generate())\n } catch (e) {\n console.error(\n chalk.red(\n 'Error downloading account module, check if you choose the right network,or download account modules manually into your director'\n )\n )\n console.error(e)\n process.exit(1)\n }\n }\n }\n\n for (const output of outputs) {\n // const content = output.fileContent\n const content = format(output.fileContent, { parser: 'typescript' })\n fs.writeFileSync(path.join(outputDir, output.fileName), content)\n }\n\n const rootFile = path.join(outputDir, 'index.ts')\n fs.writeFileSync(\n rootFile,\n `/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n/* eslint-disable */\n`\n )\n for (const output of outputs) {\n const parsed = path.parse(output.fileName)\n const content = `export * as _${parsed.name.replaceAll('-', '_')} from './${parsed.name}.js'\\n`\n fs.appendFileSync(rootFile, content)\n }\n }\n\n generateNetworkOption(network: NetworkType) {\n switch (network) {\n case this.TEST_NET:\n return 'TEST_NET'\n }\n return 'MAIN_NET'\n }\n\n generateModule(module: InternalMoveModule, network: NetworkType) {\n const functions = module.exposedFunctions\n .map((f) => this.generateOnEntryFunctions(module, f))\n .filter((s) => s !== '')\n const clientFunctions = module.exposedFunctions\n .map((f) => this.generateClientFunctions(module, f))\n .filter((s) => s !== '')\n const eventStructs = this.getEventStructs(module)\n const eventTypes = new Set(eventStructs.keys())\n const events = Array.from(eventStructs.values())\n .map((e) => this.generateOnEvents(module, e))\n .filter((s) => s !== '')\n const structs = module.structs.map((s) => this.generateStructs(module, s, eventTypes))\n const callArgs = module.exposedFunctions.map((f) => this.generateCallArgsStructs(module, f))\n\n const moduleName = normalizeToJSName(module.name)\n let processor = ''\n let client = ''\n\n if (this.GENERATED_CLIENT && clientFunctions.length > 0) {\n client = `\n export class ${moduleName}_client extends ModuleClient {\n ${clientFunctions.join('\\n')}\n }\n `\n }\n\n if (functions.length > 0 || events.length > 0) {\n processor = `export class ${moduleName} extends ${this.PREFIX}BaseProcessor {\n\n constructor(options: ${this.PREFIX}BindOptions) {\n super(\"${module.name}\", options)\n }\n static DEFAULT_OPTIONS: ${this.PREFIX}BindOptions = {\n address: \"${module.address}\",\n network: ${this.PREFIX}Network.${this.generateNetworkOption(network)}\n }\n\n static bind(options: Partial<${this.PREFIX}BindOptions> = {}): ${moduleName} {\n return new ${moduleName}({ ...${moduleName}.DEFAULT_OPTIONS, ...options })\n }\n\n ${functions.join('\\n')}\n\n ${events.join('\\n')}\n }\n `\n }\n\n return `\n ${client}\n\n ${processor}\n\n export namespace ${moduleName} {\n ${structs.join('\\n')}\n\n ${callArgs.join('\\n')}\n }\n `\n }\n\n generateStructs(module: InternalMoveModule, struct: InternalMoveStruct, events: Set<string>) {\n const genericString = this.generateStructTypeParameters(struct)\n const genericStringAny = this.generateStructTypeParameters(struct, true)\n\n const structName = normalizeToJSName(struct.name)\n\n const fields = struct.fields.map((field) => {\n const type = this.generateTypeForDescriptor(field.type, module.address)\n return `${field.name}: ${type}`\n })\n\n let eventPayload = ''\n if (events.has(moduleQname(module) + SPLITTER + struct.name)) {\n eventPayload = `\n export interface ${structName}Instance extends\n TypedEventInstance<${structName}${genericStringAny}> {\n ${this.STRUCT_FIELD_NAME}_decoded: ${structName}${genericStringAny}\n type_arguments: [${struct.typeParams.map((_) => 'string').join(', ')}]\n }\n `\n }\n\n return `\n export class ${structName}${genericString} {\n static TYPE_QNAME = '${module.address}::${module.name}::${struct.name}'\n ${fields.join('\\n')}\n }\n\n ${eventPayload}\n `\n }\n\n generateFunctionTypeParameters(func: InternalMoveFunction) {\n let genericString = ''\n if (func.typeParams && func.typeParams.length > 0) {\n const params = func.typeParams\n .map((v, idx) => {\n return `T${idx}=any`\n })\n .join(',')\n genericString = `<${params}>`\n }\n return genericString\n }\n\n generateStructTypeParameters(struct: InternalMoveStruct, useAny = false) {\n let genericString = ''\n\n if (struct.typeParams && struct.typeParams.length > 0) {\n const params = struct.typeParams\n .map((v, idx) => {\n return useAny ? 'any' : 'T' + idx\n })\n .join(',')\n genericString = `<${params}>`\n }\n return genericString\n }\n\n generateCallArgsStructs(module: InternalMoveModule, func: InternalMoveFunction) {\n if (!func.isEntry) {\n return\n }\n\n const fields = this.getMeaningfulFunctionParams(func.params).map((param) => {\n return this.generateTypeForDescriptor(param, module.address)\n })\n\n const camelFuncName = upperFirst(camelCase(func.name))\n\n const genericString = this.generateFunctionTypeParameters(func)\n return `\n export interface ${camelFuncName}Payload${genericString}\n extends TypedFunctionPayload<[${fields.join(',')}]> {\n arguments_decoded: [${fields.join(',')}],\n type_arguments: [${func.typeParams.map((_) => 'string').join(', ')}]\n }\n `\n }\n\n generateClientFunctions(module: InternalMoveModule, func: InternalMoveFunction) {\n if (func.visibility === InternalMoveFunctionVisibility.PRIVATE) {\n return ''\n }\n if (func.isEntry) {\n return ''\n }\n // const moduleName = normalizeToJSName(module.name)\n const funcName = camelCase(func.name)\n const fields = this.getMeaningfulFunctionParams(func.params).map((param) => {\n return this.generateTypeForDescriptor(param, module.address)\n })\n const genericString = this.generateFunctionTypeParameters(func)\n\n const returns = func.return.map((param) => {\n return this.generateTypeForDescriptor(param, module.address)\n })\n\n const source = `\n ${funcName}${genericString}(type_arguments: [${func.typeParams\n .map((_) => 'string')\n .join(', ')}], args: [${fields.join(',')}], version?: bigint): Promise<[${returns.join(',')}]> {\n return this.viewDecoded('${module.address}::${module.name}::${func.name}', type_arguments, args, version) as any\n }`\n return source\n }\n\n generateOnEntryFunctions(module: InternalMoveModule, func: InternalMoveFunction) {\n if (!func.isEntry) {\n return ''\n }\n\n // const genericString = generateFunctionTypeParameters(func)\n const moduleName = normalizeToJSName(module.name)\n\n const camelFuncName = upperFirst(camelCase(func.name))\n const source = `\n onEntry${camelFuncName}(func: (call: ${moduleName}.${camelFuncName}Payload, ctx: ${this.PREFIX}Context) => void, filter?: CallFilter, fetchConfig?: MoveFetchConfig): ${moduleName} {\n this.onEntryFunctionCall(func, {\n ...filter,\n function: '${module.name}::${func.name}'\n },\n fetchConfig)\n return this\n }`\n\n return source\n }\n\n generateOnEvents(module: InternalMoveModule, struct: InternalMoveStruct): string {\n // for struct that has drop + store\n // if (!isEvent(struct, module)) {\n // return ''\n // }\n\n // const genericString = generateStructTypeParameters(struct)\n\n const moduleName = normalizeToJSName(module.name)\n const source = `\n onEvent${struct.name}(func: (event: ${moduleName}.${normalizeToJSName(struct.name)}Instance, ctx: ${\n this.PREFIX\n }Context) => void, fetchConfig?: MoveFetchConfig): ${moduleName} {\n this.onMoveEvent(func, {\n type: '${module.name}::${struct.name}'\n },\n fetchConfig)\n return this\n }\n `\n return source\n }\n\n generateTypeForDescriptor(type: TypeDescriptor, currentAddress: string): string {\n if (type.reference) {\n return this.ADDRESS_TYPE\n }\n\n switch (type.qname) {\n case 'signer': // TODO check this\n case 'address':\n case 'Address':\n return this.ADDRESS_TYPE\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 case 'u256':\n case 'U256':\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 this.generateTypeForDescriptor(type.typeArgs[0], currentAddress) + '[]'\n }\n\n const simpleName = this.generateSimpleType(type.qname, currentAddress)\n if (simpleName.length === 0) {\n console.error('unexpected error')\n }\n if (simpleName.toLowerCase() === VECTOR_STR || simpleName.toLowerCase().startsWith(VECTOR_STR + SPLITTER)) {\n console.error('unexpected vector type error')\n }\n if (type.typeArgs.length > 0) {\n // return simpleName\n return (\n simpleName + '<' + type.typeArgs.map((t) => this.generateTypeForDescriptor(t, currentAddress)).join(',') + '>'\n )\n }\n return simpleName\n }\n\n 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}\n\nexport class AccountCodegen<ModuleType, NetworkType> {\n modules: InternalMoveModule[]\n config: Config<NetworkType>\n abi: ModuleType\n loader: AccountRegister\n moduleGen: AbstractCodegen<ModuleType, NetworkType>\n\n constructor(\n moduleGen: AbstractCodegen<ModuleType, NetworkType>,\n loader: AccountRegister,\n abi: ModuleType,\n modules: InternalMoveModule[],\n config: Config<NetworkType>\n ) {\n // const json = fs.readFileSync(config.srcFile, 'utf-8')\n this.moduleGen = moduleGen\n this.abi = abi\n this.modules = modules\n this.config = config\n this.loader = loader\n }\n\n generate(): OutputFile[] {\n if (!this.modules) {\n return []\n }\n // const baseName = path.basename(this.config.fileName, '.json')\n\n let address: string | undefined\n for (const module of this.modules) {\n address = module.address\n }\n if (!address) {\n return []\n }\n\n const imports = `\n import { CallFilter } from \"@sentio/sdk/move\"\n import {\n MoveCoder, defaultMoveCoder, ${this.moduleGen.PREFIX}BindOptions, ${this.moduleGen.PREFIX}BaseProcessor,\n TypedEventInstance, ${this.moduleGen.PREFIX}Network, TypedFunctionPayload,\n ${this.moduleGen.PREFIX}Context } from \"@sentio/sdk/${this.moduleGen.PREFIX.toLowerCase()}\"\n import { MoveFetchConfig } from \"@sentio/protos\"\n import { ${this.moduleGen.ADDRESS_TYPE}, ModuleClient } from \"@sentio/sdk/${this.moduleGen.PREFIX.toLowerCase()}\"\n `\n\n const dependedAccounts: string[] = []\n\n const moduleImports: string[] = []\n\n const info = this.loader.accountImports.get(address)\n\n if (info) {\n for (const [account] of info.imports.entries()) {\n // Remap to user's filename if possible, TODO codepath not well tested\n const tsAccountModule = './' + (this.loader.accountImports.get(account)?.moduleName || account)\n if (isFrameworkAccount(account) && !isFrameworkAccount(address)) {\n // Decide where to find runtime library\n moduleImports.push(`import { _${account} } from \"@sentio/sdk/${this.moduleGen.PREFIX.toLowerCase()}/builtin\"`)\n } else {\n moduleImports.push(`import * as _${account} from \"${tsAccountModule}.js\"`)\n }\n\n dependedAccounts.push(account)\n }\n }\n\n const source = `\n /* Autogenerated file. Do not edit manually. */\n /* tslint:disable */\n /* eslint-disable */\n\n /* Generated modules for account ${address} */\n\n ${imports}\n\n ${moduleImports.join('\\n')}\n\n ${this.modules.map((m) => this.moduleGen.generateModule(m, this.config.network)).join('\\n')}\n\n const MODULES = JSON.parse('${JSON.stringify(this.abi)}')\n\n export function loadAllTypes(coder: MoveCoder) {\n ${dependedAccounts.map((a) => `_${a}.loadAllTypes(coder)`).join('\\n')}\n for (const m of Object.values(MODULES)) {\n coder.load(m as any)\n }\n }\n\n loadAllTypes(defaultMoveCoder())\n ` // source\n\n return [\n {\n fileName: this.config.fileName + '.ts',\n fileContent: source,\n },\n ]\n }\n}\n"]}
@@ -62,8 +62,6 @@ export class AbstractMoveCoder {
62
62
  case 'signer': // TODO check this, aptos only
63
63
  case 'address':
64
64
  case 'Address':
65
- case '0x2::object::ID':
66
- case '0x2::coin::Coin':
67
65
  case '0x1::string::String':
68
66
  case 'bool':
69
67
  case 'Bool':
@@ -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\ntype StructWithTag<Base> = Base & {\n type: string\n data: any\n}\n\ntype 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 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 '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 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 filterAndDecodeInternal<T>(\n typeQname: string,\n structs: StructWithTag<StructType>[]\n ): DecodedStructWithTag<StructType, T>[] {\n if (!structs) {\n return []\n }\n const results: DecodedStructWithTag<StructType, T>[] = []\n for (const resource of structs) {\n if (resource.type.split('<')[0] !== typeQname) {\n continue\n }\n const result = this.decodedInternal(resource)\n if (result) {\n results.push(result as DecodedStructWithTag<StructType, T>)\n }\n }\n return results\n }\n\n protected decodedInternal<T>(typeStruct: StructWithTag<StructType>): 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(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'\n\ntype StructWithTag<Base> = Base & {\n type: string\n data: any\n}\n\ntype 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 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 filterAndDecodeInternal<T>(\n typeQname: string,\n structs: StructWithTag<StructType>[]\n ): DecodedStructWithTag<StructType, T>[] {\n if (!structs) {\n return []\n }\n const results: DecodedStructWithTag<StructType, T>[] = []\n for (const resource of structs) {\n if (resource.type.split('<')[0] !== typeQname) {\n continue\n }\n const result = this.decodedInternal(resource)\n if (result) {\n results.push(result as DecodedStructWithTag<StructType, T>)\n }\n }\n return results\n }\n\n protected decodedInternal<T>(typeStruct: StructWithTag<StructType>): 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(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,5 +1,4 @@
1
1
  export * from './filter.js';
2
2
  export * from './types.js';
3
- export * from './ts-type.js';
4
3
  export * from './utils.js';
5
4
  export * from './account.js';
package/lib/move/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  export * from './filter.js';
2
2
  export * from './types.js';
3
- export * from './ts-type.js';
4
3
  export * from './utils.js';
5
4
  export * from './account.js';
6
5
  //# sourceMappingURL=index.js.map
@@ -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,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"]}
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,3 +1,4 @@
1
+ import { InternalMoveModule, InternalMoveStruct } from './internal-models.js';
1
2
  export declare const SPLITTER = "::";
2
3
  export declare const VECTOR_STR = "vector";
3
4
  export declare function isFrameworkAccount(account: string): boolean;
@@ -7,3 +8,4 @@ export declare function moduleQname(module: {
7
8
  address: string;
8
9
  name: string;
9
10
  }): string;
11
+ export declare function structQname(module: InternalMoveModule, struct: InternalMoveStruct): string;
package/lib/move/utils.js CHANGED
@@ -17,4 +17,7 @@ export function moduleQnameForType(type) {
17
17
  export function moduleQname(module) {
18
18
  return module.address.toLowerCase() + SPLITTER + module.name;
19
19
  }
20
+ export function structQname(module, struct) {
21
+ return [module.address, module.name, struct.name].join(SPLITTER);
22
+ }
20
23
  //# sourceMappingURL=utils.js.map
@@ -1 +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,EAAE,KAAK,CAAC,CAAC,CAAA;AAE7G,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', 'any'])\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"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/move/utils.ts"],"names":[],"mappings":"AAEA,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,EAAE,KAAK,CAAC,CAAC,CAAA;AAE7G,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;AAED,MAAM,UAAU,WAAW,CAAC,MAA0B,EAAE,MAA0B;IAChF,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AAClE,CAAC","sourcesContent":["import { InternalMoveModule, InternalMoveStruct } from './internal-models.js'\n\nexport 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', 'any'])\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\nexport function structQname(module: InternalMoveModule, struct: InternalMoveStruct): string {\n return [module.address, module.name, struct.name].join(SPLITTER)\n}\n"]}
@@ -62,21 +62,8 @@ export declare namespace fixed_point32 {
62
62
  }
63
63
  }
64
64
  export declare namespace hash { }
65
- export declare class option extends SuiBaseProcessor {
66
- constructor(options: SuiBindOptions);
67
- static DEFAULT_OPTIONS: SuiBindOptions;
68
- static bind(options?: Partial<SuiBindOptions>): option;
69
- onEventOption(func: (event: option.OptionInstance, ctx: SuiContext) => void, fetchConfig?: MoveFetchConfig): option;
70
- }
71
65
  export declare namespace option {
72
- class Option<T0> {
73
- static TYPE_QNAME: string;
74
- vec: T0[] | string;
75
- }
76
- interface OptionInstance extends TypedEventInstance<Option<any>> {
77
- fields_decoded: Option<any>;
78
- type_arguments: [string];
79
- }
66
+ type Option<T> = T | undefined;
80
67
  }
81
68
  export declare class string_ extends SuiBaseProcessor {
82
69
  constructor(options: SuiBindOptions);
@@ -89,31 +89,6 @@ export class fixed_point32 extends SuiBaseProcessor {
89
89
  }
90
90
  fixed_point32.FixedPoint32 = FixedPoint32;
91
91
  })(fixed_point32 || (fixed_point32 = {}));
92
- export class option extends SuiBaseProcessor {
93
- constructor(options) {
94
- super("option", options);
95
- }
96
- static DEFAULT_OPTIONS = {
97
- address: "0x1",
98
- network: SuiNetwork.MAIN_NET,
99
- };
100
- static bind(options = {}) {
101
- return new option({ ...option.DEFAULT_OPTIONS, ...options });
102
- }
103
- onEventOption(func, fetchConfig) {
104
- this.onMoveEvent(func, {
105
- type: "option::Option",
106
- }, fetchConfig);
107
- return this;
108
- }
109
- }
110
- (function (option) {
111
- class Option {
112
- static TYPE_QNAME = "0x1::option::Option";
113
- vec;
114
- }
115
- option.Option = Option;
116
- })(option || (option = {}));
117
92
  export class string_ extends SuiBaseProcessor {
118
93
  constructor(options) {
119
94
  super("string", options);