@sentio/sdk 2.14.4 → 2.15.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/lib/aptos/api.d.ts +1 -2
  2. package/lib/aptos/api.js +2 -2
  3. package/lib/aptos/api.js.map +1 -1
  4. package/lib/aptos/aptos-chain-adapter.d.ts +1 -1
  5. package/lib/aptos/aptos-chain-adapter.js +17 -13
  6. package/lib/aptos/aptos-chain-adapter.js.map +1 -1
  7. package/lib/aptos/aptos-processor.js +3 -3
  8. package/lib/aptos/aptos-processor.js.map +1 -1
  9. package/lib/aptos/context.d.ts +2 -2
  10. package/lib/aptos/context.js +3 -4
  11. package/lib/aptos/context.js.map +1 -1
  12. package/lib/aptos/ext/coin.js +2 -2
  13. package/lib/aptos/ext/coin.js.map +1 -1
  14. package/lib/aptos/network.d.ts +7 -7
  15. package/lib/aptos/network.js +6 -19
  16. package/lib/aptos/network.js.map +1 -1
  17. package/lib/core/base-context.d.ts +2 -1
  18. package/lib/core/base-context.js.map +1 -1
  19. package/lib/core/chain.d.ts +194 -93
  20. package/lib/core/chain.js +112 -96
  21. package/lib/core/chain.js.map +1 -1
  22. package/lib/core/yaml-contract-config.d.ts +2 -1
  23. package/lib/core/yaml-contract-config.js.map +1 -1
  24. package/lib/eth/account-processor.d.ts +3 -2
  25. package/lib/eth/account-processor.js +3 -3
  26. package/lib/eth/account-processor.js.map +1 -1
  27. package/lib/eth/base-processor-template.d.ts +2 -3
  28. package/lib/eth/base-processor-template.js +1 -2
  29. package/lib/eth/base-processor-template.js.map +1 -1
  30. package/lib/eth/base-processor.d.ts +5 -5
  31. package/lib/eth/base-processor.js +5 -5
  32. package/lib/eth/base-processor.js.map +1 -1
  33. package/lib/eth/bind-options.d.ts +3 -3
  34. package/lib/eth/bind-options.js +3 -4
  35. package/lib/eth/bind-options.js.map +1 -1
  36. package/lib/eth/binds.d.ts +3 -3
  37. package/lib/eth/binds.js +1 -3
  38. package/lib/eth/binds.js.map +1 -1
  39. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.d.ts +2 -4
  40. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js +2 -2
  41. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js.map +1 -1
  42. package/lib/eth/builtin/internal/eacaggregatorproxy-test-utils.js +5 -4
  43. package/lib/eth/builtin/internal/eacaggregatorproxy-test-utils.js.map +1 -1
  44. package/lib/eth/builtin/internal/erc1155-processor.d.ts +2 -4
  45. package/lib/eth/builtin/internal/erc1155-processor.js +2 -2
  46. package/lib/eth/builtin/internal/erc1155-processor.js.map +1 -1
  47. package/lib/eth/builtin/internal/erc1155-test-utils.js +5 -4
  48. package/lib/eth/builtin/internal/erc1155-test-utils.js.map +1 -1
  49. package/lib/eth/builtin/internal/erc20-processor.d.ts +2 -4
  50. package/lib/eth/builtin/internal/erc20-processor.js +2 -2
  51. package/lib/eth/builtin/internal/erc20-processor.js.map +1 -1
  52. package/lib/eth/builtin/internal/erc20-test-utils.js +4 -3
  53. package/lib/eth/builtin/internal/erc20-test-utils.js.map +1 -1
  54. package/lib/eth/builtin/internal/erc20bytes-processor.d.ts +2 -4
  55. package/lib/eth/builtin/internal/erc20bytes-processor.js +2 -2
  56. package/lib/eth/builtin/internal/erc20bytes-processor.js.map +1 -1
  57. package/lib/eth/builtin/internal/erc20bytes-test-utils.js +3 -2
  58. package/lib/eth/builtin/internal/erc20bytes-test-utils.js.map +1 -1
  59. package/lib/eth/builtin/internal/erc721-processor.d.ts +2 -4
  60. package/lib/eth/builtin/internal/erc721-processor.js +2 -2
  61. package/lib/eth/builtin/internal/erc721-processor.js.map +1 -1
  62. package/lib/eth/builtin/internal/erc721-test-utils.js +4 -3
  63. package/lib/eth/builtin/internal/erc721-test-utils.js.map +1 -1
  64. package/lib/eth/builtin/internal/weth9-processor.d.ts +2 -4
  65. package/lib/eth/builtin/internal/weth9-processor.js +2 -2
  66. package/lib/eth/builtin/internal/weth9-processor.js.map +1 -1
  67. package/lib/eth/builtin/internal/weth9-test-utils.js +5 -4
  68. package/lib/eth/builtin/internal/weth9-test-utils.js.map +1 -1
  69. package/lib/eth/codegen/ethers-sentio.js +11 -4
  70. package/lib/eth/codegen/ethers-sentio.js.map +1 -1
  71. package/lib/eth/codegen/file.js +9 -6
  72. package/lib/eth/codegen/file.js.map +1 -1
  73. package/lib/eth/context.d.ts +6 -5
  74. package/lib/eth/context.js +2 -2
  75. package/lib/eth/context.js.map +1 -1
  76. package/lib/eth/eth-plugin.js +7 -9
  77. package/lib/eth/eth-plugin.js.map +1 -1
  78. package/lib/eth/index.d.ts +3 -1
  79. package/lib/eth/index.js +3 -1
  80. package/lib/eth/index.js.map +1 -1
  81. package/lib/eth/provider.d.ts +5 -5
  82. package/lib/eth/provider.js +12 -14
  83. package/lib/eth/provider.js.map +1 -1
  84. package/lib/eth/provider.test.js.map +1 -1
  85. package/lib/move/abstract-codegen.d.ts +1 -1
  86. package/lib/move/abstract-codegen.js +10 -3
  87. package/lib/move/abstract-codegen.js.map +1 -1
  88. package/lib/move/chain-adapter.d.ts +1 -1
  89. package/lib/move/chain-adapter.js.map +1 -1
  90. package/lib/solana/solana-context.d.ts +4 -3
  91. package/lib/solana/solana-context.js +3 -2
  92. package/lib/solana/solana-context.js.map +1 -1
  93. package/lib/solana/solana-options.d.ts +2 -1
  94. package/lib/solana/solana-options.js.map +1 -1
  95. package/lib/solana/solana-processor.d.ts +2 -1
  96. package/lib/solana/solana-processor.js +2 -2
  97. package/lib/solana/solana-processor.js.map +1 -1
  98. package/lib/sui/context.d.ts +2 -2
  99. package/lib/sui/context.js +4 -5
  100. package/lib/sui/context.js.map +1 -1
  101. package/lib/sui/network.d.ts +7 -7
  102. package/lib/sui/network.js +6 -19
  103. package/lib/sui/network.js.map +1 -1
  104. package/lib/sui/sui-chain-adapter.d.ts +1 -1
  105. package/lib/sui/sui-chain-adapter.js +8 -6
  106. package/lib/sui/sui-chain-adapter.js.map +1 -1
  107. package/lib/sui/sui-plugin.js +1 -2
  108. package/lib/sui/sui-plugin.js.map +1 -1
  109. package/lib/sui/sui-processor.js +3 -3
  110. package/lib/sui/sui-processor.js.map +1 -1
  111. package/lib/testing/aptos-facet.js +2 -3
  112. package/lib/testing/aptos-facet.js.map +1 -1
  113. package/lib/testing/eth-facet.d.ts +14 -13
  114. package/lib/testing/eth-facet.js +17 -17
  115. package/lib/testing/eth-facet.js.map +1 -1
  116. package/lib/testing/sui-facet.js +2 -3
  117. package/lib/testing/sui-facet.js.map +1 -1
  118. package/lib/utils/dex-price.d.ts +3 -2
  119. package/lib/utils/dex-price.js +3 -2
  120. package/lib/utils/dex-price.js.map +1 -1
  121. package/lib/utils/erc20.test.js.map +1 -1
  122. package/lib/utils/price.d.ts +2 -1
  123. package/lib/utils/price.js.map +1 -1
  124. package/lib/utils/token.d.ts +3 -4
  125. package/lib/utils/token.js +2 -2
  126. package/lib/utils/token.js.map +1 -1
  127. package/package.json +3 -3
  128. package/src/aptos/api.ts +2 -2
  129. package/src/aptos/aptos-chain-adapter.ts +17 -15
  130. package/src/aptos/aptos-processor.ts +3 -3
  131. package/src/aptos/context.ts +6 -6
  132. package/src/aptos/ext/coin.ts +2 -2
  133. package/src/aptos/network.ts +6 -19
  134. package/src/core/base-context.ts +2 -1
  135. package/src/core/chain.ts +113 -96
  136. package/src/core/yaml-contract-config.ts +3 -1
  137. package/src/eth/account-processor.ts +7 -7
  138. package/src/eth/base-processor-template.ts +3 -5
  139. package/src/eth/base-processor.ts +9 -10
  140. package/src/eth/bind-options.ts +4 -6
  141. package/src/eth/binds.ts +5 -7
  142. package/src/eth/builtin/internal/eacaggregatorproxy-processor.ts +5 -5
  143. package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.ts +17 -4
  144. package/src/eth/builtin/internal/erc1155-processor.ts +5 -5
  145. package/src/eth/builtin/internal/erc1155-test-utils.ts +5 -4
  146. package/src/eth/builtin/internal/erc20-processor.ts +5 -5
  147. package/src/eth/builtin/internal/erc20-test-utils.ts +4 -3
  148. package/src/eth/builtin/internal/erc20bytes-processor.ts +5 -5
  149. package/src/eth/builtin/internal/erc20bytes-test-utils.ts +3 -2
  150. package/src/eth/builtin/internal/erc721-processor.ts +5 -5
  151. package/src/eth/builtin/internal/erc721-test-utils.ts +4 -3
  152. package/src/eth/builtin/internal/weth9-processor.ts +5 -5
  153. package/src/eth/builtin/internal/weth9-test-utils.ts +5 -4
  154. package/src/eth/codegen/ethers-sentio.ts +12 -5
  155. package/src/eth/codegen/file.ts +9 -6
  156. package/src/eth/context.ts +8 -7
  157. package/src/eth/eth-plugin.ts +7 -10
  158. package/src/eth/index.ts +4 -1
  159. package/src/eth/provider.ts +13 -15
  160. package/src/move/abstract-codegen.ts +12 -3
  161. package/src/move/chain-adapter.ts +4 -2
  162. package/src/solana/solana-context.ts +12 -5
  163. package/src/solana/solana-options.ts +2 -1
  164. package/src/solana/solana-processor.ts +3 -3
  165. package/src/sui/context.ts +7 -7
  166. package/src/sui/network.ts +6 -19
  167. package/src/sui/sui-chain-adapter.ts +9 -6
  168. package/src/sui/sui-plugin.ts +1 -2
  169. package/src/sui/sui-processor.ts +3 -3
  170. package/src/testing/aptos-facet.ts +2 -3
  171. package/src/testing/eth-facet.ts +33 -18
  172. package/src/testing/sui-facet.ts +2 -3
  173. package/src/utils/dex-price.ts +5 -4
  174. package/src/utils/price.ts +2 -1
  175. package/src/utils/token.ts +5 -6
@@ -1,6 +1,6 @@
1
1
  import { SolanaContext } from './solana-context.js';
2
2
  import { ListStateStorage } from '@sentio/runtime';
3
- import { CHAIN_IDS } from '@sentio/sdk';
3
+ import { SolanaChainId } from '../core/chain.js';
4
4
  class SolanaProcessorState extends ListStateStorage {
5
5
  static INSTANCE = new SolanaProcessorState();
6
6
  }
@@ -26,7 +26,7 @@ export class SolanaBaseProcessor {
26
26
  this.address = options.address;
27
27
  this.contractName = options.name || '';
28
28
  this.processInnerInstruction = options.processInnerInstruction || false;
29
- this.network = options.network || CHAIN_IDS.SOLANA_MAINNET;
29
+ this.network = options.network || SolanaChainId.SOLANA_MAINNET;
30
30
  if (options.instructionCoder) {
31
31
  this.instructionCoder = options.instructionCoder;
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"solana-processor.js","sourceRoot":"","sources":["../../src/solana/solana-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import { ProcessResult } from '@sentio/protos'\nimport { SolanaContext } from './solana-context.js'\nimport { Instruction } from '@project-serum/anchor'\nimport { SolanaBindOptions } from './solana-options.js'\nimport { ListStateStorage } from '@sentio/runtime'\nimport { CHAIN_IDS } from '@sentio/sdk'\nimport { Labels } from '../core/index.js'\n\ntype IndexConfigure = {\n startSlot: bigint\n endSlot?: bigint\n}\n\nexport interface InstructionCoder {\n decode(ix: Buffer | string, encoding?: 'hex' | 'base58'): Instruction | null\n}\n\nexport type SolanaInstructionHandler = (instruction: Instruction, ctx: SolanaContext, accounts?: string[]) => void\n\nexport class SolanaProcessorState extends ListStateStorage<SolanaBaseProcessor> {\n static INSTANCE: SolanaProcessorState = new SolanaProcessorState()\n}\n\nexport class SolanaBaseProcessor {\n public instructionHandlerMap: Map<string, SolanaInstructionHandler> = new Map()\n address: string\n endpoint: string\n contractName: string\n baseLabels?: Labels\n network: string\n processInnerInstruction: boolean\n config: IndexConfigure = { startSlot: 0n }\n instructionCoder: InstructionCoder\n\n decodeInstruction(rawInstruction: string): Instruction | null {\n if (this.instructionCoder) {\n return this.instructionCoder.decode(rawInstruction, 'base58')\n }\n return null\n }\n\n fromParsedInstruction: (instruction: { type: string; info: any }) => Instruction | null\n\n constructor(options: SolanaBindOptions) {\n this.address = options.address\n this.contractName = options.name || ''\n this.processInnerInstruction = options.processInnerInstruction || false\n this.network = options.network || CHAIN_IDS.SOLANA_MAINNET\n if (options.instructionCoder) {\n this.instructionCoder = options.instructionCoder\n }\n if (options.startBlock) {\n this.startSlot(options.startBlock)\n }\n if (options.endBlock) {\n this.endBlock(options.endBlock)\n }\n this.endpoint = options.network || 'https://api.mainnet-beta.solana.com'\n this.baseLabels = options.baseLabels\n\n SolanaProcessorState.INSTANCE.addValue(this)\n }\n\n public onInstruction(instructionName: string, handler: SolanaInstructionHandler) {\n this.instructionHandlerMap.set(instructionName, handler)\n return this\n }\n\n public getParsedInstruction(ins: string | { type: string; info: any }): Instruction | null {\n if (ins) {\n if ((ins as { type: string; info: any }).info) {\n return this.fromParsedInstruction ? this.fromParsedInstruction(ins as { type: string; info: any }) : null\n }\n if (this.decodeInstruction != null) {\n return this.decodeInstruction(ins as string)\n }\n }\n return null\n }\n\n public getInstructionHandler(parsedInstruction: Instruction): SolanaInstructionHandler | undefined {\n return this.instructionHandlerMap.get(parsedInstruction.name)\n }\n\n public async handleInstruction(\n parsedInstruction: Instruction,\n accounts: string[],\n handler: SolanaInstructionHandler,\n slot: bigint\n ): Promise<ProcessResult> {\n const ctx = new SolanaContext(this.contractName, this.network, this.address, slot, this.baseLabels)\n await handler(parsedInstruction, ctx, accounts)\n return ctx.getProcessResult()\n }\n\n public startSlot(startSlot: bigint | number) {\n this.config.startSlot = BigInt(startSlot)\n return this\n }\n\n public endBlock(endBlock: bigint | number) {\n this.config.endSlot = BigInt(endBlock)\n return this\n }\n}\n"]}
1
+ {"version":3,"file":"solana-processor.js","sourceRoot":"","sources":["../../src/solana/solana-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import { ProcessResult } from '@sentio/protos'\nimport { SolanaContext } from './solana-context.js'\nimport { Instruction } from '@project-serum/anchor'\nimport { SolanaBindOptions } from './solana-options.js'\nimport { ListStateStorage } from '@sentio/runtime'\nimport { Labels } from '../core/index.js'\nimport { SolanaChainId } from '../core/chain.js'\n\ntype IndexConfigure = {\n startSlot: bigint\n endSlot?: bigint\n}\n\nexport interface InstructionCoder {\n decode(ix: Buffer | string, encoding?: 'hex' | 'base58'): Instruction | null\n}\n\nexport type SolanaInstructionHandler = (instruction: Instruction, ctx: SolanaContext, accounts?: string[]) => void\n\nexport class SolanaProcessorState extends ListStateStorage<SolanaBaseProcessor> {\n static INSTANCE: SolanaProcessorState = new SolanaProcessorState()\n}\n\nexport class SolanaBaseProcessor {\n public instructionHandlerMap: Map<string, SolanaInstructionHandler> = new Map()\n address: string\n endpoint: string\n contractName: string\n baseLabels?: Labels\n network: SolanaChainId\n processInnerInstruction: boolean\n config: IndexConfigure = { startSlot: 0n }\n instructionCoder: InstructionCoder\n\n decodeInstruction(rawInstruction: string): Instruction | null {\n if (this.instructionCoder) {\n return this.instructionCoder.decode(rawInstruction, 'base58')\n }\n return null\n }\n\n fromParsedInstruction: (instruction: { type: string; info: any }) => Instruction | null\n\n constructor(options: SolanaBindOptions) {\n this.address = options.address\n this.contractName = options.name || ''\n this.processInnerInstruction = options.processInnerInstruction || false\n this.network = options.network || SolanaChainId.SOLANA_MAINNET\n if (options.instructionCoder) {\n this.instructionCoder = options.instructionCoder\n }\n if (options.startBlock) {\n this.startSlot(options.startBlock)\n }\n if (options.endBlock) {\n this.endBlock(options.endBlock)\n }\n this.endpoint = options.network || 'https://api.mainnet-beta.solana.com'\n this.baseLabels = options.baseLabels\n\n SolanaProcessorState.INSTANCE.addValue(this)\n }\n\n public onInstruction(instructionName: string, handler: SolanaInstructionHandler) {\n this.instructionHandlerMap.set(instructionName, handler)\n return this\n }\n\n public getParsedInstruction(ins: string | { type: string; info: any }): Instruction | null {\n if (ins) {\n if ((ins as { type: string; info: any }).info) {\n return this.fromParsedInstruction ? this.fromParsedInstruction(ins as { type: string; info: any }) : null\n }\n if (this.decodeInstruction != null) {\n return this.decodeInstruction(ins as string)\n }\n }\n return null\n }\n\n public getInstructionHandler(parsedInstruction: Instruction): SolanaInstructionHandler | undefined {\n return this.instructionHandlerMap.get(parsedInstruction.name)\n }\n\n public async handleInstruction(\n parsedInstruction: Instruction,\n accounts: string[],\n handler: SolanaInstructionHandler,\n slot: bigint\n ): Promise<ProcessResult> {\n const ctx = new SolanaContext(this.contractName, this.network, this.address, slot, this.baseLabels)\n await handler(parsedInstruction, ctx, accounts)\n return ctx.getProcessResult()\n }\n\n public startSlot(startSlot: bigint | number) {\n this.config.startSlot = BigInt(startSlot)\n return this\n }\n\n public endBlock(endBlock: bigint | number) {\n this.config.endSlot = BigInt(endBlock)\n return this\n }\n}\n"]}
@@ -13,7 +13,7 @@ export declare class SuiContext extends BaseContext {
13
13
  eventIndex: number;
14
14
  coder: MoveCoder;
15
15
  constructor(moduleName: string, network: SuiNetwork, address: string, timestamp: Date, slot: bigint, transaction: SuiTransactionBlockResponse, eventIndex: number, baseLabels: Labels | undefined);
16
- getChainId(): string;
16
+ getChainId(): any;
17
17
  getMetaDataInternal(name: string, labels: Labels): RecordMetaData;
18
18
  get client(): JsonRpcProvider;
19
19
  }
@@ -24,7 +24,7 @@ export declare class SuiObjectsContext extends BaseContext {
24
24
  timestamp: Date;
25
25
  coder: MoveCoder;
26
26
  constructor(network: SuiNetwork, address: string, slot: bigint, timestamp: Date, baseLabels: Labels | undefined);
27
- getChainId(): string;
27
+ getChainId(): any;
28
28
  getMetaDataInternal(name: string, labels: Labels): RecordMetaData;
29
29
  get client(): JsonRpcProvider;
30
30
  }
@@ -1,5 +1,4 @@
1
1
  import { BaseContext, normalizeLabels } from '../index.js';
2
- import { getChainId } from './network.js';
3
2
  import { JsonRpcProvider, Connection } from '@mysten/sui.js';
4
3
  import { defaultMoveCoder } from './move-coder.js';
5
4
  import { Endpoints } from '@sentio/runtime';
@@ -27,7 +26,7 @@ export class SuiContext extends BaseContext {
27
26
  }
28
27
  }
29
28
  getChainId() {
30
- return getChainId(this.network);
29
+ return this.network;
31
30
  }
32
31
  getMetaDataInternal(name, labels) {
33
32
  return {
@@ -43,7 +42,7 @@ export class SuiContext extends BaseContext {
43
42
  };
44
43
  }
45
44
  get client() {
46
- const chainServer = Endpoints.INSTANCE.chainServer.get(getChainId(this.network));
45
+ const chainServer = Endpoints.INSTANCE.chainServer.get(this.network);
47
46
  if (!chainServer) {
48
47
  throw new ServerError(Status.INTERNAL, 'RPC endpoint not provided');
49
48
  }
@@ -65,7 +64,7 @@ export class SuiObjectsContext extends BaseContext {
65
64
  this.coder = defaultMoveCoder(network);
66
65
  }
67
66
  getChainId() {
68
- return getChainId(this.network);
67
+ return this.network;
69
68
  }
70
69
  getMetaDataInternal(name, labels) {
71
70
  return {
@@ -81,7 +80,7 @@ export class SuiObjectsContext extends BaseContext {
81
80
  };
82
81
  }
83
82
  get client() {
84
- const chainServer = Endpoints.INSTANCE.chainServer.get(getChainId(this.network));
83
+ const chainServer = Endpoints.INSTANCE.chainServer.get(this.network);
85
84
  if (!chainServer) {
86
85
  throw new ServerError(Status.INTERNAL, 'RPC endpoint not provided');
87
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/sui/context.ts"],"names":[],"mappings":"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","sourcesContent":["import { RecordMetaData } from '@sentio/protos'\nimport { type Labels, BaseContext, normalizeLabels } from '../index.js'\nimport { SuiNetwork, getChainId } from './network.js'\nimport { SuiTransactionBlockResponse, JsonRpcProvider, Connection } from '@mysten/sui.js'\nimport { MoveCoder, defaultMoveCoder } from './move-coder.js'\nimport { Endpoints } from '@sentio/runtime'\nimport { ServerError, Status } from 'nice-grpc'\n\nexport class SuiContext extends BaseContext {\n address: string\n network: SuiNetwork\n moduleName: string\n timestamp: Date\n slot: bigint\n transaction: SuiTransactionBlockResponse\n eventIndex: number\n coder: MoveCoder\n\n constructor(\n moduleName: string,\n network: SuiNetwork,\n address: string,\n timestamp: Date,\n slot: bigint,\n transaction: SuiTransactionBlockResponse,\n eventIndex: number,\n baseLabels: Labels | undefined\n ) {\n super(baseLabels)\n this.address = address.toLowerCase()\n this.network = network\n this.moduleName = moduleName\n this.timestamp = timestamp\n this.slot = slot\n this.eventIndex = eventIndex\n this.coder = defaultMoveCoder(network)\n if (transaction) {\n this.transaction = transaction\n }\n }\n\n getChainId(): string {\n return getChainId(this.network)\n }\n\n getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.moduleName,\n blockNumber: this.slot,\n transactionIndex: 0,\n transactionHash: this.transaction?.digest || '', // TODO\n logIndex: 0,\n chainId: this.getChainId(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n\n get client(): JsonRpcProvider {\n const chainServer = Endpoints.INSTANCE.chainServer.get(getChainId(this.network))\n if (!chainServer) {\n throw new ServerError(Status.INTERNAL, 'RPC endpoint not provided')\n }\n return new JsonRpcProvider(new Connection({ fullnode: chainServer }))\n }\n}\n\nexport class SuiObjectsContext extends BaseContext {\n address: string\n network: SuiNetwork\n slot: bigint\n timestamp: Date\n coder: MoveCoder\n\n constructor(network: SuiNetwork, address: string, slot: bigint, timestamp: Date, baseLabels: Labels | undefined) {\n super(baseLabels)\n this.address = address\n this.network = network\n this.slot = slot\n this.timestamp = timestamp\n this.coder = defaultMoveCoder(network)\n }\n\n getChainId(): string {\n return getChainId(this.network)\n }\n\n getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: 'objects',\n blockNumber: this.slot,\n transactionIndex: 0,\n transactionHash: '',\n logIndex: 0,\n chainId: this.getChainId(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n\n get client(): JsonRpcProvider {\n const chainServer = Endpoints.INSTANCE.chainServer.get(getChainId(this.network))\n if (!chainServer) {\n throw new ServerError(Status.INTERNAL, 'RPC endpoint not provided')\n }\n return new JsonRpcProvider(new Connection({ fullnode: chainServer }))\n }\n}\n"]}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/sui/context.ts"],"names":[],"mappings":"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","sourcesContent":["import { RecordMetaData } from '@sentio/protos'\nimport { type Labels, BaseContext, normalizeLabels } from '../index.js'\nimport { SuiNetwork } from './network.js'\nimport { SuiTransactionBlockResponse, JsonRpcProvider, Connection } from '@mysten/sui.js'\nimport { MoveCoder, defaultMoveCoder } from './move-coder.js'\nimport { Endpoints } from '@sentio/runtime'\nimport { ServerError, Status } from 'nice-grpc'\n\nexport class SuiContext extends BaseContext {\n address: string\n network: SuiNetwork\n moduleName: string\n timestamp: Date\n slot: bigint\n transaction: SuiTransactionBlockResponse\n eventIndex: number\n coder: MoveCoder\n\n constructor(\n moduleName: string,\n network: SuiNetwork,\n address: string,\n timestamp: Date,\n slot: bigint,\n transaction: SuiTransactionBlockResponse,\n eventIndex: number,\n baseLabels: Labels | undefined\n ) {\n super(baseLabels)\n this.address = address.toLowerCase()\n this.network = network\n this.moduleName = moduleName\n this.timestamp = timestamp\n this.slot = slot\n this.eventIndex = eventIndex\n this.coder = defaultMoveCoder(network)\n if (transaction) {\n this.transaction = transaction\n }\n }\n\n getChainId() {\n return this.network as any\n }\n\n getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.moduleName,\n blockNumber: this.slot,\n transactionIndex: 0,\n transactionHash: this.transaction?.digest || '', // TODO\n logIndex: 0,\n chainId: this.getChainId(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n\n get client(): JsonRpcProvider {\n const chainServer = Endpoints.INSTANCE.chainServer.get(this.network)\n if (!chainServer) {\n throw new ServerError(Status.INTERNAL, 'RPC endpoint not provided')\n }\n return new JsonRpcProvider(new Connection({ fullnode: chainServer }))\n }\n}\n\nexport class SuiObjectsContext extends BaseContext {\n address: string\n network: SuiNetwork\n slot: bigint\n timestamp: Date\n coder: MoveCoder\n\n constructor(network: SuiNetwork, address: string, slot: bigint, timestamp: Date, baseLabels: Labels | undefined) {\n super(baseLabels)\n this.address = address\n this.network = network\n this.slot = slot\n this.timestamp = timestamp\n this.coder = defaultMoveCoder(network)\n }\n\n getChainId() {\n return this.network as any\n }\n\n getMetaDataInternal(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: 'objects',\n blockNumber: this.slot,\n transactionIndex: 0,\n transactionHash: '',\n logIndex: 0,\n chainId: this.getChainId(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n\n get client(): JsonRpcProvider {\n const chainServer = Endpoints.INSTANCE.chainServer.get(this.network)\n if (!chainServer) {\n throw new ServerError(Status.INTERNAL, 'RPC endpoint not provided')\n }\n return new JsonRpcProvider(new Connection({ fullnode: chainServer }))\n }\n}\n"]}
@@ -1,10 +1,10 @@
1
- export declare enum SuiNetwork {
2
- MAIN_NET = 1,
3
- TEST_NET = 2,
4
- DEV_NET = 3
5
- }
6
- export declare function getChainId(network: SuiNetwork): string;
7
- export declare function getSuiChainName(network: SuiNetwork): string;
1
+ import { SuiChainId } from '../core/chain.js';
2
+ export type SuiNetwork = SuiChainId;
3
+ export declare const SuiNetwork: {
4
+ readonly MAIN_NET: SuiChainId.SUI_MAINNET;
5
+ readonly TEST_NET: SuiChainId.SUI_TESTNET;
6
+ readonly DEV_NET: SuiChainId.SUI_DEVNET;
7
+ };
8
8
  export declare class SuiBindOptions {
9
9
  address: string;
10
10
  network?: SuiNetwork;
@@ -1,22 +1,9 @@
1
- import { CHAIN_IDS, getChainName } from '../core/chain.js';
2
- export var SuiNetwork;
3
- (function (SuiNetwork) {
4
- SuiNetwork[SuiNetwork["MAIN_NET"] = 1] = "MAIN_NET";
5
- SuiNetwork[SuiNetwork["TEST_NET"] = 2] = "TEST_NET";
6
- SuiNetwork[SuiNetwork["DEV_NET"] = 3] = "DEV_NET";
7
- })(SuiNetwork || (SuiNetwork = {}));
8
- export function getChainId(network) {
9
- switch (network) {
10
- case SuiNetwork.TEST_NET:
11
- return CHAIN_IDS.SUI_TESTNET;
12
- case SuiNetwork.DEV_NET:
13
- return CHAIN_IDS.SUI_DEVNET;
14
- }
15
- return CHAIN_IDS.SUI_MAINNET;
16
- }
17
- export function getSuiChainName(network) {
18
- return getChainName(getChainId(network));
19
- }
1
+ import { SuiChainId } from '../core/chain.js';
2
+ export const SuiNetwork = {
3
+ MAIN_NET: SuiChainId.SUI_MAINNET,
4
+ TEST_NET: SuiChainId.SUI_TESTNET,
5
+ DEV_NET: SuiChainId.SUI_DEVNET,
6
+ };
20
7
  export class SuiBindOptions {
21
8
  address;
22
9
  network = SuiNetwork.MAIN_NET;
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/sui/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE1D,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,mDAAY,CAAA;IACZ,mDAAY,CAAA;IACZ,iDAAW,CAAA;AACb,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAED,MAAM,UAAU,UAAU,CAAC,OAAmB;IAC5C,QAAQ,OAAO,EAAE;QACf,KAAK,UAAU,CAAC,QAAQ;YACtB,OAAO,SAAS,CAAC,WAAW,CAAA;QAC9B,KAAK,UAAU,CAAC,OAAO;YACrB,OAAO,SAAS,CAAC,UAAU,CAAA;KAC9B;IACD,OAAO,SAAS,CAAC,WAAW,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAmB;IACjD,OAAO,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,OAAO,cAAc;IACzB,OAAO,CAAQ;IACf,OAAO,GAAgB,UAAU,CAAC,QAAQ,CAAA;IAC1C,YAAY,CAAkB;CAC/B","sourcesContent":["import { CHAIN_IDS, getChainName } from '../core/chain.js'\n\nexport enum SuiNetwork {\n MAIN_NET = 1,\n TEST_NET = 2,\n DEV_NET = 3,\n}\n\nexport function getChainId(network: SuiNetwork): string {\n switch (network) {\n case SuiNetwork.TEST_NET:\n return CHAIN_IDS.SUI_TESTNET\n case SuiNetwork.DEV_NET:\n return CHAIN_IDS.SUI_DEVNET\n }\n return CHAIN_IDS.SUI_MAINNET\n}\n\nexport function getSuiChainName(network: SuiNetwork): string {\n return getChainName(getChainId(network))\n}\n\nexport class SuiBindOptions {\n address: string\n network?: SuiNetwork = SuiNetwork.MAIN_NET\n startVersion?: bigint | number\n}\n"]}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/sui/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C,MAAM,CAAC,MAAM,UAAU,GAAU;IAC/B,QAAQ,EAAE,UAAU,CAAC,WAAW;IAChC,QAAQ,EAAE,UAAU,CAAC,WAAW;IAChC,OAAO,EAAE,UAAU,CAAC,UAAU;CAC/B,CAAA;AAED,MAAM,OAAO,cAAc;IACzB,OAAO,CAAQ;IACf,OAAO,GAAgB,UAAU,CAAC,QAAQ,CAAA;IAC1C,YAAY,CAAkB;CAC/B","sourcesContent":["import { SuiChainId } from '../core/chain.js'\n\nexport type SuiNetwork = SuiChainId\nexport const SuiNetwork = <const>{\n MAIN_NET: SuiChainId.SUI_MAINNET,\n TEST_NET: SuiChainId.SUI_TESTNET,\n DEV_NET: SuiChainId.SUI_DEVNET,\n}\n\nexport class SuiBindOptions {\n address: string\n network?: SuiNetwork = SuiNetwork.MAIN_NET\n startVersion?: bigint | number\n}\n"]}
@@ -8,7 +8,7 @@ export declare class SuiChainAdapter extends ChainAdapter<SuiNetwork, SuiMoveNor
8
8
  fetchModules(account: string, network: SuiNetwork): Promise<SuiMoveNormalizedModule[]>;
9
9
  getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[];
10
10
  toInternalModules(modules: SuiMoveNormalizedModule[]): InternalMoveModule[];
11
- getEventStructs(module: InternalMoveModule): Map<string, InternalMoveStruct>;
11
+ getAllEventStructs(modules: InternalMoveModule[]): Map<string, InternalMoveStruct>;
12
12
  getType(base: SuiEvent | SuiMoveObject): string;
13
13
  getData(val: SuiEvent | SuiMoveObject): any;
14
14
  validateAndNormalizeAddress(address: string): string;
@@ -24,13 +24,15 @@ class SuiChainAdapter extends ChainAdapter {
24
24
  toInternalModules(modules) {
25
25
  return Object.values(modules).map(toInternalModule);
26
26
  }
27
- getEventStructs(module) {
28
- const qname = moduleQname(module);
27
+ getAllEventStructs(modules) {
29
28
  const eventMap = new Map();
30
- for (const struct of module.structs) {
31
- const abilities = new Set(struct.abilities);
32
- if (abilities.has('Drop') && abilities.has('Copy')) {
33
- eventMap.set(qname + SPLITTER + struct.name, struct);
29
+ for (const module of modules) {
30
+ const qname = moduleQname(module);
31
+ for (const struct of module.structs) {
32
+ const abilities = new Set(struct.abilities);
33
+ if (abilities.has('Drop') && abilities.has('Copy')) {
34
+ eventMap.set(qname + SPLITTER + struct.name, struct);
35
+ }
34
36
  }
35
37
  }
36
38
  return eventMap;
@@ -1 +1 @@
1
- {"version":3,"file":"sui-chain-adapter.js","sourceRoot":"","sources":["../../src/sui/sui-chain-adapter.ts"],"names":[],"mappings":"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","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 {\n Connection,\n JsonRpcProvider,\n SuiMoveNormalizedModule,\n SuiEvent,\n SuiMoveObject,\n SuiParsedData,\n} from '@mysten/sui.js'\nimport { validateAndNormalizeAddress } from './utils.js'\n\nexport class SuiChainAdapter extends ChainAdapter<SuiNetwork, SuiMoveNormalizedModule, SuiEvent | SuiMoveObject> {\n static INSTANCE = new SuiChainAdapter()\n\n async fetchModule(account: string, module: string, network: SuiNetwork): Promise<SuiMoveNormalizedModule> {\n const client = getRpcClient(network)\n return await client.getNormalizedMoveModule({ package: account, module })\n }\n\n async fetchModules(account: string, network: SuiNetwork): Promise<SuiMoveNormalizedModule[]> {\n const client = getRpcClient(network)\n const modules = await client.getNormalizedMoveModulesByPackage({ package: account })\n return Object.values(modules)\n }\n\n getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[] {\n return params\n // if (params.length === 0) {\n // return params\n // }\n // return params.slice(0, params.length - 1)\n }\n\n toInternalModules(modules: SuiMoveNormalizedModule[]): 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 getType(base: SuiEvent | SuiMoveObject): string {\n return base.type\n }\n\n getData(val: SuiEvent | SuiMoveObject) {\n if (SuiEvent.is(val)) {\n return val.parsedJson as any\n }\n if (SuiParsedData.is(val)) {\n return val.fields as any\n }\n // if (SuiMoveObject.is(val)) {\n // return val.fields as any\n // }\n // This may not be perfect, just think everything has\n if ('fields' in val) {\n if ('type' in val && Object.keys(val).length === 2) {\n return val.fields as any\n }\n }\n return val as any\n }\n validateAndNormalizeAddress(address: string) {\n return validateAndNormalizeAddress(address)\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"]}
1
+ {"version":3,"file":"sui-chain-adapter.js","sourceRoot":"","sources":["../../src/sui/sui-chain-adapter.ts"],"names":[],"mappings":"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","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 {\n Connection,\n JsonRpcProvider,\n SuiMoveNormalizedModule,\n SuiEvent,\n SuiMoveObject,\n SuiParsedData,\n} from '@mysten/sui.js'\nimport { validateAndNormalizeAddress } from './utils.js'\n\nexport class SuiChainAdapter extends ChainAdapter<SuiNetwork, SuiMoveNormalizedModule, SuiEvent | SuiMoveObject> {\n static INSTANCE = new SuiChainAdapter()\n\n async fetchModule(account: string, module: string, network: SuiNetwork): Promise<SuiMoveNormalizedModule> {\n const client = getRpcClient(network)\n return await client.getNormalizedMoveModule({ package: account, module })\n }\n\n async fetchModules(account: string, network: SuiNetwork): Promise<SuiMoveNormalizedModule[]> {\n const client = getRpcClient(network)\n const modules = await client.getNormalizedMoveModulesByPackage({ package: account })\n return Object.values(modules)\n }\n\n getMeaningfulFunctionParams(params: TypeDescriptor[]): TypeDescriptor[] {\n return params\n // if (params.length === 0) {\n // return params\n // }\n // return params.slice(0, params.length - 1)\n }\n\n toInternalModules(modules: SuiMoveNormalizedModule[]): InternalMoveModule[] {\n return Object.values(modules).map(toInternalModule)\n }\n\n getAllEventStructs(modules: InternalMoveModule[]): Map<string, InternalMoveStruct> {\n const eventMap = new Map<string, InternalMoveStruct>()\n\n for (const module of modules) {\n const qname = moduleQname(module)\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 }\n return eventMap\n }\n\n getType(base: SuiEvent | SuiMoveObject): string {\n return base.type\n }\n\n getData(val: SuiEvent | SuiMoveObject) {\n if (SuiEvent.is(val)) {\n return val.parsedJson as any\n }\n if (SuiParsedData.is(val)) {\n return val.fields as any\n }\n // if (SuiMoveObject.is(val)) {\n // return val.fields as any\n // }\n // This may not be perfect, just think everything has\n if ('fields' in val) {\n if ('type' in val && Object.keys(val).length === 2) {\n return val.fields as any\n }\n }\n return val as any\n }\n validateAndNormalizeAddress(address: string) {\n return validateAndNormalizeAddress(address)\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"]}
@@ -2,7 +2,6 @@ import { errorString, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR
2
2
  import { AccountConfig, ContractConfig, HandlerType, } from '@sentio/protos';
3
3
  import { ServerError, Status } from 'nice-grpc';
4
4
  import { SuiAccountProcessorState, SuiProcessorState } from './sui-processor.js';
5
- import { getChainId } from './network.js';
6
5
  import { validateAndNormalizeAddress } from './utils.js';
7
6
  export class SuiPlugin extends Plugin {
8
7
  name = 'SuiPlugin';
@@ -23,7 +22,7 @@ export class SuiPlugin extends Plugin {
23
22
  processorType: USER_PROCESSOR,
24
23
  contract: {
25
24
  name: suiProcessor.moduleName,
26
- chainId: getChainId(suiProcessor.config.network),
25
+ chainId: suiProcessor.config.network,
27
26
  address: validateAndNormalizeAddress(suiProcessor.config.address),
28
27
  abi: '',
29
28
  },
@@ -1 +1 @@
1
- {"version":3,"file":"sui-plugin.js","sourceRoot":"","sources":["../../src/sui/sui-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { errorString, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport {\n AccountConfig,\n ContractConfig,\n Data_SuiCall,\n Data_SuiEvent,\n Data_SuiObject,\n DataBinding,\n HandlerType,\n MoveCallHandlerConfig,\n MoveEventHandlerConfig,\n ProcessConfigResponse,\n ProcessResult,\n} from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\n\nimport { SuiAccountProcessorState, SuiProcessorState } from './sui-processor.js'\nimport { getChainId } from './network.js'\nimport { validateAndNormalizeAddress } from './utils.js'\n\ninterface Handlers {\n suiEventHandlers: ((event: Data_SuiEvent) => Promise<ProcessResult>)[]\n suiCallHandlers: ((func: Data_SuiCall) => Promise<ProcessResult>)[]\n suiObjectHandlers: ((object: Data_SuiObject) => Promise<ProcessResult>)[]\n}\n\nexport class SuiPlugin extends Plugin {\n name: string = 'SuiPlugin'\n handlers: Handlers = {\n suiCallHandlers: [],\n suiEventHandlers: [],\n suiObjectHandlers: [],\n }\n\n async configure(config: ProcessConfigResponse) {\n const handlers: Handlers = {\n suiCallHandlers: [],\n suiEventHandlers: [],\n suiObjectHandlers: [],\n }\n for (const suiProcessor of SuiProcessorState.INSTANCE.getValues()) {\n const contractConfig = ContractConfig.fromPartial({\n transactionConfig: [],\n processorType: USER_PROCESSOR,\n contract: {\n name: suiProcessor.moduleName,\n chainId: getChainId(suiProcessor.config.network),\n address: validateAndNormalizeAddress(suiProcessor.config.address),\n abi: '',\n },\n startBlock: suiProcessor.config.startCheckpoint,\n })\n for (const handler of suiProcessor.eventHandlers) {\n const handlerId = handlers.suiEventHandlers.push(handler.handler) - 1\n const eventHandlerConfig: MoveEventHandlerConfig = {\n filters: handler.filters.map((f) => {\n return {\n type: f.type,\n account: f.account || '',\n }\n }),\n fetchConfig: handler.fetchConfig,\n handlerId,\n }\n contractConfig.moveEventConfigs.push(eventHandlerConfig)\n }\n for (const handler of suiProcessor.callHandlers) {\n const handlerId = handlers.suiCallHandlers.push(handler.handler) - 1\n const functionHandlerConfig: MoveCallHandlerConfig = {\n filters: handler.filters.map((filter) => {\n return {\n function: filter.function,\n typeArguments: filter.typeArguments || [],\n withTypeArguments: !!filter.typeArguments,\n includeFailed: filter.includeFailed || false,\n }\n }),\n fetchConfig: handler.fetchConfig,\n handlerId,\n }\n contractConfig.moveCallConfigs.push(functionHandlerConfig)\n }\n config.contractConfigs.push(contractConfig)\n }\n\n for (const processor of SuiAccountProcessorState.INSTANCE.getValues()) {\n const accountConfig = AccountConfig.fromPartial({\n address: validateAndNormalizeAddress(processor.config.address),\n chainId: processor.getChainId(),\n startBlock: processor.config.startCheckpoint, // TODO maybe use another field\n })\n for (const handler of processor.objectHandlers) {\n const handlerId = handlers.suiObjectHandlers.push(handler.handler) - 1\n accountConfig.moveIntervalConfigs.push({\n intervalConfig: {\n handlerId: handlerId,\n minutes: 0,\n minutesInterval: handler.timeIntervalInMinutes,\n slot: 0,\n slotInterval: handler.versionInterval,\n fetchConfig: undefined,\n },\n type: handler.type || '',\n ownerType: processor.ownerType,\n })\n }\n config.accountConfigs.push(accountConfig)\n }\n this.handlers = handlers\n }\n\n supportedHandlers = [HandlerType.SUI_EVENT, HandlerType.SUI_CALL, HandlerType.SUI_OBJECT]\n\n async processSuiEvent(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiEvent) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Event can't be empty\")\n }\n const promises: Promise<ProcessResult>[] = []\n const event = binding.data.suiEvent\n\n for (const handlerId of binding.handlerIds) {\n promises.push(\n this.handlers.suiEventHandlers[handlerId](event).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing event: ' + JSON.stringify(event) + '\\n' + errorString(e)\n )\n })\n )\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n async processSuiFunctionCall(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiCall) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Call can't be empty\")\n }\n const call = binding.data.suiCall\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of binding.handlerIds) {\n const promise = this.handlers.suiCallHandlers[handlerId](call).catch((e) => {\n throw new ServerError(Status.INTERNAL, 'error processing call: ' + JSON.stringify(call) + '\\n' + errorString(e))\n })\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n async processSuiObject(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiObject) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Object can't be empty\")\n }\n const object = binding.data.suiObject\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of binding.handlerIds) {\n promises.push(\n this.handlers.suiObjectHandlers[handlerId](object).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing object: ' + JSON.stringify(object) + '\\n' + errorString(e)\n )\n })\n )\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.SUI_EVENT:\n return this.processSuiEvent(request)\n case HandlerType.SUI_CALL:\n return this.processSuiFunctionCall(request)\n case HandlerType.SUI_OBJECT:\n return this.processSuiObject(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n}\n\nPluginManager.INSTANCE.register(new SuiPlugin())\n"]}
1
+ {"version":3,"file":"sui-plugin.js","sourceRoot":"","sources":["../../src/sui/sui-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACzG,OAAO,EACL,aAAa,EACb,cAAc,EAKd,WAAW,GAKZ,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAE/C,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAA;AAQxD,MAAM,OAAO,SAAU,SAAQ,MAAM;IACnC,IAAI,GAAW,WAAW,CAAA;IAC1B,QAAQ,GAAa;QACnB,eAAe,EAAE,EAAE;QACnB,gBAAgB,EAAE,EAAE;QACpB,iBAAiB,EAAE,EAAE;KACtB,CAAA;IAED,KAAK,CAAC,SAAS,CAAC,MAA6B;QAC3C,MAAM,QAAQ,GAAa;YACzB,eAAe,EAAE,EAAE;YACnB,gBAAgB,EAAE,EAAE;YACpB,iBAAiB,EAAE,EAAE;SACtB,CAAA;QACD,KAAK,MAAM,YAAY,IAAI,iBAAiB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACjE,MAAM,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC;gBAChD,iBAAiB,EAAE,EAAE;gBACrB,aAAa,EAAE,cAAc;gBAC7B,QAAQ,EAAE;oBACR,IAAI,EAAE,YAAY,CAAC,UAAU;oBAC7B,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO;oBACpC,OAAO,EAAE,2BAA2B,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;oBACjE,GAAG,EAAE,EAAE;iBACR;gBACD,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,eAAe;aAChD,CAAC,CAAA;YACF,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,aAAa,EAAE;gBAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBACrE,MAAM,kBAAkB,GAA2B;oBACjD,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBACjC,OAAO;4BACL,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;yBACzB,CAAA;oBACH,CAAC,CAAC;oBACF,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,SAAS;iBACV,CAAA;gBACD,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;aACzD;YACD,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,YAAY,EAAE;gBAC/C,MAAM,SAAS,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBACpE,MAAM,qBAAqB,GAA0B;oBACnD,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;wBACtC,OAAO;4BACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;4BACzB,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE;4BACzC,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa;4BACzC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,KAAK;yBAC7C,CAAA;oBACH,CAAC,CAAC;oBACF,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,SAAS;iBACV,CAAA;gBACD,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;aAC3D;YACD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;SAC5C;QAED,KAAK,MAAM,SAAS,IAAI,wBAAwB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACrE,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,CAAC;gBAC9C,OAAO,EAAE,2BAA2B,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC9D,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE;gBAC/B,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,+BAA+B;aAC9E,CAAC,CAAA;YACF,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,cAAc,EAAE;gBAC9C,MAAM,SAAS,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBACtE,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC;oBACrC,cAAc,EAAE;wBACd,SAAS,EAAE,SAAS;wBACpB,OAAO,EAAE,CAAC;wBACV,eAAe,EAAE,OAAO,CAAC,qBAAqB;wBAC9C,IAAI,EAAE,CAAC;wBACP,YAAY,EAAE,OAAO,CAAC,eAAe;wBACrC,WAAW,EAAE,SAAS;qBACvB;oBACD,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;oBACxB,SAAS,EAAE,SAAS,CAAC,SAAS;iBAC/B,CAAC,CAAA;aACH;YACD,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;SAC1C;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,iBAAiB,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;IAEzF,KAAK,CAAC,eAAe,CAAC,OAAoB;QACxC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE;YAC3B,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAA;SACvE;QACD,MAAM,QAAQ,GAA6B,EAAE,CAAA;QAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAA;QAEnC,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE;YAC1C,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC3D,MAAM,IAAI,WAAW,CACnB,MAAM,CAAC,QAAQ,EACf,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAC3E,CAAA;YACH,CAAC,CAAC,CACH,CAAA;SACF;QACD,OAAO,mBAAmB,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IACzD,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,OAAoB;QAC/C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE;YAC1B,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAA;SACtE;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAA;QAEjC,MAAM,QAAQ,GAA6B,EAAE,CAAA;QAC7C,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzE,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;YAClH,CAAC,CAAC,CAAA;YACF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SACvB;QACD,OAAO,mBAAmB,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IACzD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAoB;QACzC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE;YAC5B,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAA;SACxE;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAA;QAErC,MAAM,QAAQ,GAA6B,EAAE,CAAA;QAC7C,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE;YAC1C,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7D,MAAM,IAAI,WAAW,CACnB,MAAM,CAAC,QAAQ,EACf,2BAA2B,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAC7E,CAAA;YACH,CAAC,CAAC,CACH,CAAA;SACF;QACD,OAAO,mBAAmB,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IACzD,CAAC;IAED,cAAc,CAAC,OAAoB;QACjC,QAAQ,OAAO,CAAC,WAAW,EAAE;YAC3B,KAAK,WAAW,CAAC,SAAS;gBACxB,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;YACtC,KAAK,WAAW,CAAC,QAAQ;gBACvB,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;YAC7C,KAAK,WAAW,CAAC,UAAU;gBACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;YACvC;gBACE,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,4BAA4B,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;SACrG;IACH,CAAC;CACF;AAED,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC,CAAA","sourcesContent":["import { errorString, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport {\n AccountConfig,\n ContractConfig,\n Data_SuiCall,\n Data_SuiEvent,\n Data_SuiObject,\n DataBinding,\n HandlerType,\n MoveCallHandlerConfig,\n MoveEventHandlerConfig,\n ProcessConfigResponse,\n ProcessResult,\n} from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\n\nimport { SuiAccountProcessorState, SuiProcessorState } from './sui-processor.js'\nimport { validateAndNormalizeAddress } from './utils.js'\n\ninterface Handlers {\n suiEventHandlers: ((event: Data_SuiEvent) => Promise<ProcessResult>)[]\n suiCallHandlers: ((func: Data_SuiCall) => Promise<ProcessResult>)[]\n suiObjectHandlers: ((object: Data_SuiObject) => Promise<ProcessResult>)[]\n}\n\nexport class SuiPlugin extends Plugin {\n name: string = 'SuiPlugin'\n handlers: Handlers = {\n suiCallHandlers: [],\n suiEventHandlers: [],\n suiObjectHandlers: [],\n }\n\n async configure(config: ProcessConfigResponse) {\n const handlers: Handlers = {\n suiCallHandlers: [],\n suiEventHandlers: [],\n suiObjectHandlers: [],\n }\n for (const suiProcessor of SuiProcessorState.INSTANCE.getValues()) {\n const contractConfig = ContractConfig.fromPartial({\n transactionConfig: [],\n processorType: USER_PROCESSOR,\n contract: {\n name: suiProcessor.moduleName,\n chainId: suiProcessor.config.network,\n address: validateAndNormalizeAddress(suiProcessor.config.address),\n abi: '',\n },\n startBlock: suiProcessor.config.startCheckpoint,\n })\n for (const handler of suiProcessor.eventHandlers) {\n const handlerId = handlers.suiEventHandlers.push(handler.handler) - 1\n const eventHandlerConfig: MoveEventHandlerConfig = {\n filters: handler.filters.map((f) => {\n return {\n type: f.type,\n account: f.account || '',\n }\n }),\n fetchConfig: handler.fetchConfig,\n handlerId,\n }\n contractConfig.moveEventConfigs.push(eventHandlerConfig)\n }\n for (const handler of suiProcessor.callHandlers) {\n const handlerId = handlers.suiCallHandlers.push(handler.handler) - 1\n const functionHandlerConfig: MoveCallHandlerConfig = {\n filters: handler.filters.map((filter) => {\n return {\n function: filter.function,\n typeArguments: filter.typeArguments || [],\n withTypeArguments: !!filter.typeArguments,\n includeFailed: filter.includeFailed || false,\n }\n }),\n fetchConfig: handler.fetchConfig,\n handlerId,\n }\n contractConfig.moveCallConfigs.push(functionHandlerConfig)\n }\n config.contractConfigs.push(contractConfig)\n }\n\n for (const processor of SuiAccountProcessorState.INSTANCE.getValues()) {\n const accountConfig = AccountConfig.fromPartial({\n address: validateAndNormalizeAddress(processor.config.address),\n chainId: processor.getChainId(),\n startBlock: processor.config.startCheckpoint, // TODO maybe use another field\n })\n for (const handler of processor.objectHandlers) {\n const handlerId = handlers.suiObjectHandlers.push(handler.handler) - 1\n accountConfig.moveIntervalConfigs.push({\n intervalConfig: {\n handlerId: handlerId,\n minutes: 0,\n minutesInterval: handler.timeIntervalInMinutes,\n slot: 0,\n slotInterval: handler.versionInterval,\n fetchConfig: undefined,\n },\n type: handler.type || '',\n ownerType: processor.ownerType,\n })\n }\n config.accountConfigs.push(accountConfig)\n }\n this.handlers = handlers\n }\n\n supportedHandlers = [HandlerType.SUI_EVENT, HandlerType.SUI_CALL, HandlerType.SUI_OBJECT]\n\n async processSuiEvent(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiEvent) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Event can't be empty\")\n }\n const promises: Promise<ProcessResult>[] = []\n const event = binding.data.suiEvent\n\n for (const handlerId of binding.handlerIds) {\n promises.push(\n this.handlers.suiEventHandlers[handlerId](event).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing event: ' + JSON.stringify(event) + '\\n' + errorString(e)\n )\n })\n )\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n async processSuiFunctionCall(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiCall) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Call can't be empty\")\n }\n const call = binding.data.suiCall\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of binding.handlerIds) {\n const promise = this.handlers.suiCallHandlers[handlerId](call).catch((e) => {\n throw new ServerError(Status.INTERNAL, 'error processing call: ' + JSON.stringify(call) + '\\n' + errorString(e))\n })\n promises.push(promise)\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n async processSuiObject(binding: DataBinding): Promise<ProcessResult> {\n if (!binding.data?.suiObject) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Object can't be empty\")\n }\n const object = binding.data.suiObject\n\n const promises: Promise<ProcessResult>[] = []\n for (const handlerId of binding.handlerIds) {\n promises.push(\n this.handlers.suiObjectHandlers[handlerId](object).catch((e) => {\n throw new ServerError(\n Status.INTERNAL,\n 'error processing object: ' + JSON.stringify(object) + '\\n' + errorString(e)\n )\n })\n )\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.SUI_EVENT:\n return this.processSuiEvent(request)\n case HandlerType.SUI_CALL:\n return this.processSuiFunctionCall(request)\n case HandlerType.SUI_OBJECT:\n return this.processSuiObject(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n}\n\nPluginManager.INSTANCE.register(new SuiPlugin())\n"]}
@@ -1,6 +1,6 @@
1
1
  import { MoveFetchConfig, MoveOnIntervalConfig_OwnerType, } from '@sentio/protos';
2
2
  import { ListStateStorage, mergeProcessResults } from '@sentio/runtime';
3
- import { getChainId, SuiNetwork } from './network.js';
3
+ import { SuiNetwork } from './network.js';
4
4
  import { ServerError, Status } from 'nice-grpc';
5
5
  import { SuiContext, SuiObjectsContext } from './context.js';
6
6
  import { getProgrammableTransaction, getTransactionKind, } from '@mysten/sui.js';
@@ -47,7 +47,7 @@ export class SuiBaseProcessor {
47
47
  this.coder = defaultMoveCoder(this.config.network);
48
48
  }
49
49
  getChainId() {
50
- return getChainId(this.config.network);
50
+ return this.config.network;
51
51
  }
52
52
  onMoveEvent(handler, filter, fetchConfig) {
53
53
  let _filters = [];
@@ -165,7 +165,7 @@ class SuiBaseObjectsProcessor {
165
165
  SuiAccountProcessorState.INSTANCE.addValue(this);
166
166
  }
167
167
  getChainId() {
168
- return getChainId(this.config.network);
168
+ return this.config.network;
169
169
  }
170
170
  onInterval(handler, //(resources: SuiMoveObject[], ctx: SuiObjectsContext) => PromiseOrVoid,
171
171
  timeInterval, versionInterval, type) {
@@ -1 +1 @@
1
- {"version":3,"file":"sui-processor.js","sourceRoot":"","sources":["../../src/sui/sui-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Data_SuiCall,\n Data_SuiEvent,\n Data_SuiObject,\n HandleInterval,\n MoveFetchConfig,\n MoveOnIntervalConfig_OwnerType,\n ProcessResult,\n} from '@sentio/protos'\nimport { ListStateStorage, mergeProcessResults } from '@sentio/runtime'\nimport { getChainId, SuiNetwork } from './network.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { SuiContext, SuiObjectsContext } from './context.js'\nimport {\n getProgrammableTransaction,\n getTransactionKind,\n MoveCallSuiTransaction,\n SuiEvent,\n SuiMoveObject,\n SuiTransactionBlockResponse,\n} from '@mysten/sui.js'\nimport { CallHandler, EventFilter, EventHandler, FunctionNameAndCallFilter, parseMoveType } from '../move/index.js'\nimport { getMoveCalls } from './utils.js'\nimport { defaultMoveCoder, MoveCoder } from './move-coder.js'\nimport { Labels, PromiseOrVoid } from '../core/index.js'\n// import { dynamic_field } from './builtin/0x2.js'\n\nconst DEFAULT_FETCH_CONFIG: MoveFetchConfig = {\n resourceChanges: false,\n allEvents: true,\n}\n\nclass IndexConfigure {\n address: string\n network: SuiNetwork\n startCheckpoint: bigint\n baseLabels?: Labels\n}\n\nexport class SuiBindOptions {\n address: string\n network?: SuiNetwork\n startCheckpoint?: bigint\n baseLabels?: Labels\n}\n\nexport class SuiObjectBindOptions {\n objectId: string\n network?: SuiNetwork\n startCheckpoint?: bigint\n baseLabels?: { [key: string]: string }\n}\n\nexport class SuiProcessorState extends ListStateStorage<SuiBaseProcessor> {\n static INSTANCE = new SuiProcessorState()\n}\n\nexport class SuiBaseProcessor {\n readonly moduleName: string\n config: IndexConfigure\n\n eventHandlers: EventHandler<Data_SuiEvent>[] = []\n callHandlers: CallHandler<Data_SuiCall>[] = []\n coder: MoveCoder\n\n constructor(name: string, options: SuiBindOptions) {\n this.moduleName = name\n this.config = configure(options)\n SuiProcessorState.INSTANCE.addValue(this)\n this.coder = defaultMoveCoder(this.config.network)\n }\n\n getChainId(): string {\n return getChainId(this.config.network)\n }\n\n public onMoveEvent(\n handler: (event: SuiEvent, ctx: SuiContext) => void,\n filter: EventFilter | EventFilter[],\n fetchConfig?: Partial<MoveFetchConfig>\n ): SuiBaseProcessor {\n let _filters: EventFilter[] = []\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n // const address = this.config.address\n // const moduleName = this.moduleName\n\n const processor = this\n const allEventType = new Set(_filters.map((f) => processor.config.address + '::' + f.type))\n\n this.eventHandlers.push({\n handler: async function (data) {\n if (!data.transaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'event is null')\n }\n const txn = data.transaction as SuiTransactionBlockResponse\n if (!txn.events || !txn.events.length) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'no event in the transactions')\n }\n\n const processResults = []\n for (const [idx, evt] of (txn.events as SuiEvent[]).entries()) {\n const typeQname = parseMoveType(evt.type).qname\n if (!allEventType.has(typeQname)) {\n continue\n }\n\n const ctx = new SuiContext(\n processor.moduleName,\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n txn,\n idx,\n processor.config.baseLabels\n )\n\n const decoded = await processor.coder.decodeEvent<any>(evt)\n await handler(decoded || evt, ctx)\n processResults.push(ctx.getProcessResult())\n }\n\n return mergeProcessResults(processResults)\n },\n filters: _filters,\n fetchConfig: _fetchConfig,\n })\n return this\n }\n\n public onEntryFunctionCall(\n handler: (call: MoveCallSuiTransaction, ctx: SuiContext) => void,\n filter: FunctionNameAndCallFilter | FunctionNameAndCallFilter[],\n fetchConfig?: Partial<MoveFetchConfig>\n ): SuiBaseProcessor {\n let _filters: FunctionNameAndCallFilter[] = []\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n // const address = this.config.address\n // const moduleName = this.moduleName\n const processor = this\n const allFunctionType = new Set(_filters.map((f) => processor.config.address + '::' + f.function))\n\n this.callHandlers.push({\n handler: async function (data) {\n if (!data.transaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'call is null')\n }\n const tx = data.transaction as SuiTransactionBlockResponse\n\n const ctx = new SuiContext(\n processor.moduleName,\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n tx,\n 0,\n processor.config.baseLabels\n )\n if (tx) {\n const calls: MoveCallSuiTransaction[] = getMoveCalls(tx)\n // if (calls.length !== 1) {\n // throw new ServerError(Status.INVALID_ARGUMENT, 'Unexpected number of call transactions ' + calls.length)\n // }\n const txKind = getTransactionKind(tx)\n if (!txKind) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Unexpected getTransactionKind get empty')\n }\n const programmableTx = getProgrammableTransaction(txKind)\n\n let matched: MoveCallSuiTransaction\n // TODO potential pass index\n for (const call of calls) {\n if (allFunctionType.has(call.function)) {\n matched = call\n break\n }\n\n const payload = calls[0]\n const decoded = await processor.coder.decodeFunctionPayload(payload, programmableTx?.inputs || [])\n await handler(decoded, ctx)\n }\n }\n return ctx.getProcessResult()\n },\n filters: _filters,\n fetchConfig: _fetchConfig,\n })\n return this\n }\n}\n\nclass ObjectHandler {\n type?: string\n versionInterval?: HandleInterval\n timeIntervalInMinutes?: HandleInterval\n handler: (resource: Data_SuiObject) => Promise<ProcessResult>\n}\n\nexport class SuiAccountProcessorState extends ListStateStorage<SuiBaseObjectsProcessor<any>> {\n static INSTANCE = new SuiAccountProcessorState()\n}\n\nclass SuiObjectsBindOptions extends SuiBindOptions {\n ownerType: MoveOnIntervalConfig_OwnerType\n}\n\nabstract class SuiBaseObjectsProcessor<HandlerType> {\n config: IndexConfigure\n ownerType: MoveOnIntervalConfig_OwnerType\n\n objectHandlers: ObjectHandler[] = []\n\n // static bind(options: SuiObjectsBindOptions): SuiBaseObjectsProcessor<any> {\n // return new SuiBaseObjectsProcessor(options)\n // }\n\n protected constructor(options: SuiObjectsBindOptions) {\n this.config = configure(options)\n this.ownerType = options.ownerType\n SuiAccountProcessorState.INSTANCE.addValue(this)\n }\n\n getChainId(): string {\n return getChainId(this.config.network)\n }\n\n // protected abstract transformObjects(objects: SuiMoveObject[]): SuiMoveObject[]\n\n protected abstract doHandle(handler: HandlerType, data: Data_SuiObject, ctx: SuiObjectsContext): PromiseOrVoid\n\n protected onInterval(\n handler: HandlerType, //(resources: SuiMoveObject[], ctx: SuiObjectsContext) => PromiseOrVoid,\n timeInterval: HandleInterval | undefined,\n versionInterval: HandleInterval | undefined,\n type: string | undefined\n ): this {\n const processor = this\n this.objectHandlers.push({\n handler: async function (data) {\n const ctx = new SuiObjectsContext(\n processor.config.network,\n processor.config.address,\n data.slot,\n data.timestamp || new Date(0),\n processor.config.baseLabels\n )\n await processor.doHandle(handler, data, ctx)\n return ctx.getProcessResult()\n },\n timeIntervalInMinutes: timeInterval,\n versionInterval: versionInterval,\n type,\n })\n return this\n }\n\n public onTimeInterval(\n handler: HandlerType,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n type?: string\n ): this {\n return this.onInterval(\n handler,\n {\n recentInterval: timeIntervalInMinutes,\n backfillInterval: backfillTimeIntervalInMinutes,\n },\n undefined,\n type\n )\n }\n\n public onSlotInterval(\n handler: HandlerType,\n slotInterval = 100000,\n backfillSlotInterval = 400000,\n type?: string\n ): this {\n return this.onInterval(\n handler,\n undefined,\n { recentInterval: slotInterval, backfillInterval: backfillSlotInterval },\n type\n )\n }\n}\n\nfunction configure(options: SuiBindOptions): IndexConfigure {\n return {\n startCheckpoint: options.startCheckpoint || 0n,\n address: options.address,\n network: options.network || SuiNetwork.MAIN_NET,\n baseLabels: options.baseLabels,\n }\n}\n\nexport class SuiAddressProcessor extends SuiBaseObjectsProcessor<\n (objects: SuiMoveObject[], ctx: SuiObjectsContext) => PromiseOrVoid\n> {\n static bind(options: SuiBindOptions): SuiAddressProcessor {\n return new SuiAddressProcessor({ ...options, ownerType: MoveOnIntervalConfig_OwnerType.ADDRESS })\n }\n\n protected doHandle(\n handler: (objects: SuiMoveObject[], ctx: SuiObjectsContext) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectsContext\n ): PromiseOrVoid {\n return handler(data.objects as SuiMoveObject[], ctx)\n }\n}\n// export class SuiDynamicFieldObjectsProcessor extends SuiBaseObjectsProcessor<dynamic_field.Field<any, any>> {\nexport class SuiObjectProcessor extends SuiBaseObjectsProcessor<\n (self: SuiMoveObject, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectsContext) => PromiseOrVoid\n> {\n static bind(options: SuiObjectBindOptions): SuiObjectProcessor {\n return new SuiObjectProcessor({\n address: options.objectId,\n network: options.network,\n startCheckpoint: options.startCheckpoint,\n ownerType: MoveOnIntervalConfig_OwnerType.OBJECT,\n baseLabels: options.baseLabels,\n })\n }\n\n protected doHandle(\n handler: (self: SuiMoveObject, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectsContext) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectsContext\n ): PromiseOrVoid {\n if (!data.self) {\n console.log(`Sui object not existed in ${ctx.slot}, please specific a start time`)\n return\n }\n return handler(data.self as SuiMoveObject, data.objects as SuiMoveObject[], ctx)\n }\n}\n"]}
1
+ {"version":3,"file":"sui-processor.js","sourceRoot":"","sources":["../../src/sui/sui-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Data_SuiCall,\n Data_SuiEvent,\n Data_SuiObject,\n HandleInterval,\n MoveFetchConfig,\n MoveOnIntervalConfig_OwnerType,\n ProcessResult,\n} from '@sentio/protos'\nimport { ListStateStorage, mergeProcessResults } from '@sentio/runtime'\nimport { SuiNetwork } from './network.js'\nimport { ServerError, Status } from 'nice-grpc'\nimport { SuiContext, SuiObjectsContext } from './context.js'\nimport {\n getProgrammableTransaction,\n getTransactionKind,\n MoveCallSuiTransaction,\n SuiEvent,\n SuiMoveObject,\n SuiTransactionBlockResponse,\n} from '@mysten/sui.js'\nimport { CallHandler, EventFilter, EventHandler, FunctionNameAndCallFilter, parseMoveType } from '../move/index.js'\nimport { getMoveCalls } from './utils.js'\nimport { defaultMoveCoder, MoveCoder } from './move-coder.js'\nimport { Labels, PromiseOrVoid } from '../core/index.js'\n// import { dynamic_field } from './builtin/0x2.js'\n\nconst DEFAULT_FETCH_CONFIG: MoveFetchConfig = {\n resourceChanges: false,\n allEvents: true,\n}\n\nclass IndexConfigure {\n address: string\n network: SuiNetwork\n startCheckpoint: bigint\n baseLabels?: Labels\n}\n\nexport class SuiBindOptions {\n address: string\n network?: SuiNetwork\n startCheckpoint?: bigint\n baseLabels?: Labels\n}\n\nexport class SuiObjectBindOptions {\n objectId: string\n network?: SuiNetwork\n startCheckpoint?: bigint\n baseLabels?: { [key: string]: string }\n}\n\nexport class SuiProcessorState extends ListStateStorage<SuiBaseProcessor> {\n static INSTANCE = new SuiProcessorState()\n}\n\nexport class SuiBaseProcessor {\n readonly moduleName: string\n config: IndexConfigure\n\n eventHandlers: EventHandler<Data_SuiEvent>[] = []\n callHandlers: CallHandler<Data_SuiCall>[] = []\n coder: MoveCoder\n\n constructor(name: string, options: SuiBindOptions) {\n this.moduleName = name\n this.config = configure(options)\n SuiProcessorState.INSTANCE.addValue(this)\n this.coder = defaultMoveCoder(this.config.network)\n }\n\n getChainId(): string {\n return this.config.network\n }\n\n public onMoveEvent(\n handler: (event: SuiEvent, ctx: SuiContext) => void,\n filter: EventFilter | EventFilter[],\n fetchConfig?: Partial<MoveFetchConfig>\n ): SuiBaseProcessor {\n let _filters: EventFilter[] = []\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n // const address = this.config.address\n // const moduleName = this.moduleName\n\n const processor = this\n const allEventType = new Set(_filters.map((f) => processor.config.address + '::' + f.type))\n\n this.eventHandlers.push({\n handler: async function (data) {\n if (!data.transaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'event is null')\n }\n const txn = data.transaction as SuiTransactionBlockResponse\n if (!txn.events || !txn.events.length) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'no event in the transactions')\n }\n\n const processResults = []\n for (const [idx, evt] of (txn.events as SuiEvent[]).entries()) {\n const typeQname = parseMoveType(evt.type).qname\n if (!allEventType.has(typeQname)) {\n continue\n }\n\n const ctx = new SuiContext(\n processor.moduleName,\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n txn,\n idx,\n processor.config.baseLabels\n )\n\n const decoded = await processor.coder.decodeEvent<any>(evt)\n await handler(decoded || evt, ctx)\n processResults.push(ctx.getProcessResult())\n }\n\n return mergeProcessResults(processResults)\n },\n filters: _filters,\n fetchConfig: _fetchConfig,\n })\n return this\n }\n\n public onEntryFunctionCall(\n handler: (call: MoveCallSuiTransaction, ctx: SuiContext) => void,\n filter: FunctionNameAndCallFilter | FunctionNameAndCallFilter[],\n fetchConfig?: Partial<MoveFetchConfig>\n ): SuiBaseProcessor {\n let _filters: FunctionNameAndCallFilter[] = []\n const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n // const address = this.config.address\n // const moduleName = this.moduleName\n const processor = this\n const allFunctionType = new Set(_filters.map((f) => processor.config.address + '::' + f.function))\n\n this.callHandlers.push({\n handler: async function (data) {\n if (!data.transaction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'call is null')\n }\n const tx = data.transaction as SuiTransactionBlockResponse\n\n const ctx = new SuiContext(\n processor.moduleName,\n processor.config.network,\n processor.config.address,\n data.timestamp || new Date(0),\n data.slot,\n tx,\n 0,\n processor.config.baseLabels\n )\n if (tx) {\n const calls: MoveCallSuiTransaction[] = getMoveCalls(tx)\n // if (calls.length !== 1) {\n // throw new ServerError(Status.INVALID_ARGUMENT, 'Unexpected number of call transactions ' + calls.length)\n // }\n const txKind = getTransactionKind(tx)\n if (!txKind) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Unexpected getTransactionKind get empty')\n }\n const programmableTx = getProgrammableTransaction(txKind)\n\n let matched: MoveCallSuiTransaction\n // TODO potential pass index\n for (const call of calls) {\n if (allFunctionType.has(call.function)) {\n matched = call\n break\n }\n\n const payload = calls[0]\n const decoded = await processor.coder.decodeFunctionPayload(payload, programmableTx?.inputs || [])\n await handler(decoded, ctx)\n }\n }\n return ctx.getProcessResult()\n },\n filters: _filters,\n fetchConfig: _fetchConfig,\n })\n return this\n }\n}\n\nclass ObjectHandler {\n type?: string\n versionInterval?: HandleInterval\n timeIntervalInMinutes?: HandleInterval\n handler: (resource: Data_SuiObject) => Promise<ProcessResult>\n}\n\nexport class SuiAccountProcessorState extends ListStateStorage<SuiBaseObjectsProcessor<any>> {\n static INSTANCE = new SuiAccountProcessorState()\n}\n\nclass SuiObjectsBindOptions extends SuiBindOptions {\n ownerType: MoveOnIntervalConfig_OwnerType\n}\n\nabstract class SuiBaseObjectsProcessor<HandlerType> {\n config: IndexConfigure\n ownerType: MoveOnIntervalConfig_OwnerType\n\n objectHandlers: ObjectHandler[] = []\n\n // static bind(options: SuiObjectsBindOptions): SuiBaseObjectsProcessor<any> {\n // return new SuiBaseObjectsProcessor(options)\n // }\n\n protected constructor(options: SuiObjectsBindOptions) {\n this.config = configure(options)\n this.ownerType = options.ownerType\n SuiAccountProcessorState.INSTANCE.addValue(this)\n }\n\n getChainId(): string {\n return this.config.network\n }\n\n // protected abstract transformObjects(objects: SuiMoveObject[]): SuiMoveObject[]\n\n protected abstract doHandle(handler: HandlerType, data: Data_SuiObject, ctx: SuiObjectsContext): PromiseOrVoid\n\n protected onInterval(\n handler: HandlerType, //(resources: SuiMoveObject[], ctx: SuiObjectsContext) => PromiseOrVoid,\n timeInterval: HandleInterval | undefined,\n versionInterval: HandleInterval | undefined,\n type: string | undefined\n ): this {\n const processor = this\n this.objectHandlers.push({\n handler: async function (data) {\n const ctx = new SuiObjectsContext(\n processor.config.network,\n processor.config.address,\n data.slot,\n data.timestamp || new Date(0),\n processor.config.baseLabels\n )\n await processor.doHandle(handler, data, ctx)\n return ctx.getProcessResult()\n },\n timeIntervalInMinutes: timeInterval,\n versionInterval: versionInterval,\n type,\n })\n return this\n }\n\n public onTimeInterval(\n handler: HandlerType,\n timeIntervalInMinutes = 60,\n backfillTimeIntervalInMinutes = 240,\n type?: string\n ): this {\n return this.onInterval(\n handler,\n {\n recentInterval: timeIntervalInMinutes,\n backfillInterval: backfillTimeIntervalInMinutes,\n },\n undefined,\n type\n )\n }\n\n public onSlotInterval(\n handler: HandlerType,\n slotInterval = 100000,\n backfillSlotInterval = 400000,\n type?: string\n ): this {\n return this.onInterval(\n handler,\n undefined,\n { recentInterval: slotInterval, backfillInterval: backfillSlotInterval },\n type\n )\n }\n}\n\nfunction configure(options: SuiBindOptions): IndexConfigure {\n return {\n startCheckpoint: options.startCheckpoint || 0n,\n address: options.address,\n network: options.network || SuiNetwork.MAIN_NET,\n baseLabels: options.baseLabels,\n }\n}\n\nexport class SuiAddressProcessor extends SuiBaseObjectsProcessor<\n (objects: SuiMoveObject[], ctx: SuiObjectsContext) => PromiseOrVoid\n> {\n static bind(options: SuiBindOptions): SuiAddressProcessor {\n return new SuiAddressProcessor({ ...options, ownerType: MoveOnIntervalConfig_OwnerType.ADDRESS })\n }\n\n protected doHandle(\n handler: (objects: SuiMoveObject[], ctx: SuiObjectsContext) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectsContext\n ): PromiseOrVoid {\n return handler(data.objects as SuiMoveObject[], ctx)\n }\n}\n// export class SuiDynamicFieldObjectsProcessor extends SuiBaseObjectsProcessor<dynamic_field.Field<any, any>> {\nexport class SuiObjectProcessor extends SuiBaseObjectsProcessor<\n (self: SuiMoveObject, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectsContext) => PromiseOrVoid\n> {\n static bind(options: SuiObjectBindOptions): SuiObjectProcessor {\n return new SuiObjectProcessor({\n address: options.objectId,\n network: options.network,\n startCheckpoint: options.startCheckpoint,\n ownerType: MoveOnIntervalConfig_OwnerType.OBJECT,\n baseLabels: options.baseLabels,\n })\n }\n\n protected doHandle(\n handler: (self: SuiMoveObject, dynamicFieldObjects: SuiMoveObject[], ctx: SuiObjectsContext) => PromiseOrVoid,\n data: Data_SuiObject,\n ctx: SuiObjectsContext\n ): PromiseOrVoid {\n if (!data.self) {\n console.log(`Sui object not existed in ${ctx.slot}, please specific a start time`)\n return\n }\n return handler(data.self as SuiMoveObject, data.objects as SuiMoveObject[], ctx)\n }\n}\n"]}
@@ -1,5 +1,4 @@
1
1
  import { HandlerType } from '@sentio/protos';
2
- import { getChainId } from '../aptos/network.js';
3
2
  import { AptosNetwork } from '@sentio/sdk/aptos';
4
3
  import { parseMoveType } from '../move/types.js';
5
4
  export class AptosFacet {
@@ -26,7 +25,7 @@ export class AptosFacet {
26
25
  buildEntryFunctionCallBinding(transaction, network = AptosNetwork.MAIN_NET) {
27
26
  const payload = transaction.payload;
28
27
  for (const config of this.server.contractConfigs) {
29
- if (config.contract?.chainId !== getChainId(network)) {
28
+ if (config.contract?.chainId !== network) {
30
29
  continue;
31
30
  }
32
31
  for (const callConfig of config.moveCallConfigs) {
@@ -57,7 +56,7 @@ export class AptosFacet {
57
56
  buildEventBinding(transaction, network = AptosNetwork.MAIN_NET) {
58
57
  // const allEvents = new Set(transaction.events.map(e => e.type))
59
58
  for (const config of this.server.contractConfigs) {
60
- if (config.contract?.chainId !== getChainId(network)) {
59
+ if (config.contract?.chainId !== network) {
61
60
  continue;
62
61
  }
63
62
  for (const eventConfig of config.moveEventConfigs) {
@@ -1 +1 @@
1
- {"version":3,"file":"aptos-facet.js","sourceRoot":"","sources":["../../src/testing/aptos-facet.ts"],"names":[],"mappings":"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","sourcesContent":["import { Transaction_UserTransaction, TransactionPayload_EntryFunctionPayload } from '../aptos/index.js'\nimport { DataBinding, HandlerType } from '@sentio/protos'\nimport { getChainId } from '../aptos/network.js'\nimport { TestProcessorServer } from './test-processor-server.js'\nimport { AptosNetwork } from '@sentio/sdk/aptos'\nimport { parseMoveType } from '../move/types.js'\n\nexport class AptosFacet {\n server: TestProcessorServer\n constructor(server: TestProcessorServer) {\n this.server = server\n }\n\n testEntryFunctionCall(transaction: Transaction_UserTransaction, network: AptosNetwork = AptosNetwork.MAIN_NET) {\n return this.testEntryFunctionCalls([transaction], network)\n }\n\n testEntryFunctionCalls(transactions: Transaction_UserTransaction[], network: AptosNetwork = AptosNetwork.MAIN_NET) {\n const bindings = []\n for (const trans of transactions) {\n const binding = this.buildEntryFunctionCallBinding(trans, network)\n if (!binding) {\n throw Error('Invalid test transaction: ' + JSON.stringify(trans))\n }\n bindings.push(binding)\n }\n return this.server.processBindings({\n bindings: bindings,\n })\n }\n\n private buildEntryFunctionCallBinding(\n transaction: Transaction_UserTransaction,\n network: AptosNetwork = AptosNetwork.MAIN_NET\n ): DataBinding | undefined {\n const payload = transaction.payload as TransactionPayload_EntryFunctionPayload\n for (const config of this.server.contractConfigs) {\n if (config.contract?.chainId !== getChainId(network)) {\n continue\n }\n for (const callConfig of config.moveCallConfigs) {\n for (const callFilter of callConfig.filters) {\n if (config.contract.address + '::' + callFilter.function === payload.function) {\n return {\n data: {\n aptCall: {\n transaction,\n },\n },\n handlerIds: [callConfig.handlerId],\n handlerType: HandlerType.APT_CALL,\n }\n }\n }\n }\n }\n return undefined\n }\n\n testEvent(transaction: Transaction_UserTransaction, network: AptosNetwork = AptosNetwork.MAIN_NET) {\n const binding = this.buildEventBinding(transaction, network)\n if (!binding) {\n throw Error('Invalid test event: ' + JSON.stringify(transaction))\n }\n return this.server.processBinding(binding)\n }\n\n private buildEventBinding(\n transaction: Transaction_UserTransaction,\n network: AptosNetwork = AptosNetwork.MAIN_NET\n ): DataBinding | undefined {\n // const allEvents = new Set(transaction.events.map(e => e.type))\n for (const config of this.server.contractConfigs) {\n if (config.contract?.chainId !== getChainId(network)) {\n continue\n }\n for (const eventConfig of config.moveEventConfigs) {\n for (const eventFilter of eventConfig.filters) {\n for (const event of transaction.events) {\n if (config.contract.address + '::' + eventFilter.type === parseMoveType(event.type).qname) {\n return {\n data: {\n aptEvent: {\n transaction,\n },\n },\n handlerIds: [eventConfig.handlerId],\n handlerType: HandlerType.APT_EVENT,\n }\n }\n }\n }\n }\n }\n return undefined\n }\n}\n"]}
1
+ {"version":3,"file":"aptos-facet.js","sourceRoot":"","sources":["../../src/testing/aptos-facet.ts"],"names":[],"mappings":"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","sourcesContent":["import { Transaction_UserTransaction, TransactionPayload_EntryFunctionPayload } from '../aptos/index.js'\nimport { DataBinding, HandlerType } from '@sentio/protos'\nimport { TestProcessorServer } from './test-processor-server.js'\nimport { AptosNetwork } from '@sentio/sdk/aptos'\nimport { parseMoveType } from '../move/types.js'\n\nexport class AptosFacet {\n server: TestProcessorServer\n constructor(server: TestProcessorServer) {\n this.server = server\n }\n\n testEntryFunctionCall(transaction: Transaction_UserTransaction, network: AptosNetwork = AptosNetwork.MAIN_NET) {\n return this.testEntryFunctionCalls([transaction], network)\n }\n\n testEntryFunctionCalls(transactions: Transaction_UserTransaction[], network: AptosNetwork = AptosNetwork.MAIN_NET) {\n const bindings = []\n for (const trans of transactions) {\n const binding = this.buildEntryFunctionCallBinding(trans, network)\n if (!binding) {\n throw Error('Invalid test transaction: ' + JSON.stringify(trans))\n }\n bindings.push(binding)\n }\n return this.server.processBindings({\n bindings: bindings,\n })\n }\n\n private buildEntryFunctionCallBinding(\n transaction: Transaction_UserTransaction,\n network: AptosNetwork = AptosNetwork.MAIN_NET\n ): DataBinding | undefined {\n const payload = transaction.payload as TransactionPayload_EntryFunctionPayload\n for (const config of this.server.contractConfigs) {\n if (config.contract?.chainId !== network) {\n continue\n }\n for (const callConfig of config.moveCallConfigs) {\n for (const callFilter of callConfig.filters) {\n if (config.contract.address + '::' + callFilter.function === payload.function) {\n return {\n data: {\n aptCall: {\n transaction,\n },\n },\n handlerIds: [callConfig.handlerId],\n handlerType: HandlerType.APT_CALL,\n }\n }\n }\n }\n }\n return undefined\n }\n\n testEvent(transaction: Transaction_UserTransaction, network: AptosNetwork = AptosNetwork.MAIN_NET) {\n const binding = this.buildEventBinding(transaction, network)\n if (!binding) {\n throw Error('Invalid test event: ' + JSON.stringify(transaction))\n }\n return this.server.processBinding(binding)\n }\n\n private buildEventBinding(\n transaction: Transaction_UserTransaction,\n network: AptosNetwork = AptosNetwork.MAIN_NET\n ): DataBinding | undefined {\n // const allEvents = new Set(transaction.events.map(e => e.type))\n for (const config of this.server.contractConfigs) {\n if (config.contract?.chainId !== network) {\n continue\n }\n for (const eventConfig of config.moveEventConfigs) {\n for (const eventFilter of eventConfig.filters) {\n for (const event of transaction.events) {\n if (config.contract.address + '::' + eventFilter.type === parseMoveType(event.type).qname) {\n return {\n data: {\n aptEvent: {\n transaction,\n },\n },\n handlerIds: [eventConfig.handlerId],\n handlerType: HandlerType.APT_EVENT,\n }\n }\n }\n }\n }\n }\n return undefined\n }\n}\n"]}
@@ -1,27 +1,28 @@
1
1
  import { TestProcessorServer } from './test-processor-server.js';
2
2
  import { DataBinding, ProcessBindingResponse } from '@sentio/protos';
3
3
  import { Trace } from '../eth/eth.js';
4
- import { BlockParams, LogParams, Networkish } from 'ethers/providers';
4
+ import { BlockParams, LogParams } from 'ethers/providers';
5
5
  import { Block } from 'ethers';
6
+ import { ChainId, EthChainId } from '../core/chain.js';
6
7
  export declare class EthFacet {
7
8
  server: TestProcessorServer;
8
9
  constructor(server: TestProcessorServer);
9
- testTrace(trace: Trace, network?: Networkish): Promise<ProcessBindingResponse>;
10
- testTraces(traces: Trace[], network?: Networkish): Promise<ProcessBindingResponse>;
11
- buildTraceBinding(trace: Trace, network?: Networkish): DataBinding | undefined;
12
- testLog(log: LogParams, network?: Networkish): Promise<ProcessBindingResponse>;
13
- testLogs(logs: LogParams[], network?: Networkish): Promise<ProcessBindingResponse>;
14
- buildLogBinding(log: LogParams, network?: Networkish): DataBinding | undefined;
15
- testAccountLog(address: string, log: LogParams, network?: Networkish): Promise<ProcessBindingResponse>;
16
- testAccountLogs(address: string, logs: LogParams[], network?: Networkish): Promise<ProcessBindingResponse>;
17
- buildAccountLogBinding(address: string, log: LogParams, network?: Networkish): DataBinding | undefined;
10
+ testTrace(trace: Trace, network?: EthChainId): Promise<ProcessBindingResponse>;
11
+ testTraces(traces: Trace[], network?: EthChainId): Promise<ProcessBindingResponse>;
12
+ buildTraceBinding(trace: Trace, network?: ChainId): DataBinding | undefined;
13
+ testLog(log: LogParams, network?: EthChainId): Promise<ProcessBindingResponse>;
14
+ testLogs(logs: LogParams[], network?: EthChainId): Promise<ProcessBindingResponse>;
15
+ buildLogBinding(log: LogParams, network?: EthChainId): DataBinding | undefined;
16
+ testAccountLog(address: string, log: LogParams, network?: EthChainId): Promise<ProcessBindingResponse>;
17
+ testAccountLogs(address: string, logs: LogParams[], network?: EthChainId): Promise<ProcessBindingResponse>;
18
+ buildAccountLogBinding(address: string, log: LogParams, network?: EthChainId): DataBinding | undefined;
18
19
  testBlock(block: Partial<BlockParams> & {
19
20
  number: number;
20
- }, network?: Networkish): Promise<ProcessBindingResponse>;
21
+ }, network?: EthChainId): Promise<ProcessBindingResponse>;
21
22
  testBlocks(blocks: Partial<BlockParams> & {
22
23
  number: number;
23
- }[], network?: Networkish): Promise<ProcessBindingResponse>;
24
+ }[], network?: EthChainId): Promise<ProcessBindingResponse>;
24
25
  buildBlockBinding(block: Partial<Block> & {
25
26
  number: number;
26
- }, network?: Networkish): DataBinding;
27
+ }, network?: EthChainId): DataBinding;
27
28
  }