@sentio/sdk 2.14.3 → 2.14.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/aptos/aptos-processor.d.ts +2 -1
- package/lib/aptos/aptos-processor.js +5 -4
- package/lib/aptos/aptos-processor.js.map +1 -1
- package/lib/aptos/context.d.ts +4 -4
- package/lib/aptos/context.js +6 -6
- package/lib/aptos/context.js.map +1 -1
- package/lib/aptos/network.d.ts +2 -0
- package/lib/aptos/network.js +1 -0
- package/lib/aptos/network.js.map +1 -1
- package/lib/core/base-context.d.ts +4 -2
- package/lib/core/base-context.js +9 -1
- package/lib/core/base-context.js.map +1 -1
- package/lib/core/chain.d.ts +2 -0
- package/lib/core/chain.js +20 -0
- package/lib/core/chain.js.map +1 -1
- package/lib/eth/base-processor.d.ts +3 -0
- package/lib/eth/base-processor.js +2 -0
- package/lib/eth/base-processor.js.map +1 -1
- package/lib/eth/bind-options.d.ts +6 -0
- package/lib/eth/bind-options.js +2 -0
- package/lib/eth/bind-options.js.map +1 -1
- package/lib/eth/context.d.ts +3 -3
- package/lib/eth/context.js +5 -5
- package/lib/eth/context.js.map +1 -1
- package/lib/eth/eth-plugin.js +2 -2
- package/lib/eth/eth-plugin.js.map +1 -1
- package/lib/solana/solana-context.d.ts +2 -2
- package/lib/solana/solana-context.js +3 -3
- package/lib/solana/solana-context.js.map +1 -1
- package/lib/solana/solana-options.d.ts +2 -0
- package/lib/solana/solana-options.js +1 -0
- package/lib/solana/solana-options.js.map +1 -1
- package/lib/solana/solana-processor.d.ts +2 -0
- package/lib/solana/solana-processor.js +3 -1
- package/lib/solana/solana-processor.js.map +1 -1
- package/lib/sui/context.d.ts +4 -4
- package/lib/sui/context.js +6 -6
- package/lib/sui/context.js.map +1 -1
- package/lib/sui/sui-processor.d.ts +6 -1
- package/lib/sui/sui-processor.js +8 -3
- package/lib/sui/sui-processor.js.map +1 -1
- package/package.json +3 -3
- package/src/aptos/aptos-processor.ts +11 -5
- package/src/aptos/context.ts +7 -6
- package/src/aptos/network.ts +2 -0
- package/src/core/base-context.ts +11 -2
- package/src/core/chain.ts +22 -0
- package/src/eth/base-processor.ts +2 -0
- package/src/eth/bind-options.ts +2 -0
- package/src/eth/context.ts +7 -5
- package/src/eth/eth-plugin.ts +2 -2
- package/src/solana/solana-context.ts +3 -3
- package/src/solana/solana-options.ts +2 -0
- package/src/solana/solana-processor.ts +4 -1
- package/src/sui/context.ts +7 -6
- package/src/sui/sui-processor.ts +12 -4
@@ -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 { 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}\n\nexport class SuiBindOptions {\n address: string\n network?: SuiNetwork\n startCheckpoint?: bigint\n}\n\nexport class SuiObjectBindOptions {\n objectId: string\n network?: SuiNetwork\n startCheckpoint?: bigint\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 )\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 )\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 )\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 }\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 })\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 { 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"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sentio/sdk",
|
3
|
-
"version": "2.14.
|
3
|
+
"version": "2.14.4",
|
4
4
|
"license": "Apache-2.0",
|
5
5
|
"type": "module",
|
6
6
|
"exports": {
|
@@ -68,8 +68,8 @@
|
|
68
68
|
"typechain": "^8.0.0",
|
69
69
|
"typedoc": "^0.24.1",
|
70
70
|
"yaml": "^2.2.1",
|
71
|
-
"@sentio/protos": "^2.14.
|
72
|
-
"@sentio/runtime": "^2.14.
|
71
|
+
"@sentio/protos": "^2.14.4",
|
72
|
+
"@sentio/runtime": "^2.14.4"
|
73
73
|
},
|
74
74
|
"peerDependencies": {
|
75
75
|
"tsup": "npm:@sentio/tsup@^6.7.0"
|
@@ -19,7 +19,7 @@ import {
|
|
19
19
|
} from '@sentio/protos'
|
20
20
|
import { ServerError, Status } from 'nice-grpc'
|
21
21
|
import { CallHandler, EventFilter, EventHandler, FunctionNameAndCallFilter, parseMoveType } from '../move/index.js'
|
22
|
-
import { PromiseOrVoid } from '../core/index.js'
|
22
|
+
import { Labels, PromiseOrVoid } from '../core/index.js'
|
23
23
|
|
24
24
|
const DEFAULT_FETCH_CONFIG: MoveFetchConfig = {
|
25
25
|
resourceChanges: false,
|
@@ -30,6 +30,7 @@ type IndexConfigure = {
|
|
30
30
|
address: string
|
31
31
|
network: AptosNetwork
|
32
32
|
startVersion: bigint
|
33
|
+
baseLabels?: Labels
|
33
34
|
// endSeqNumber?: Long
|
34
35
|
}
|
35
36
|
|
@@ -85,7 +86,8 @@ export class AptosBaseProcessor {
|
|
85
86
|
processor.config.address,
|
86
87
|
BigInt(data.transaction.version),
|
87
88
|
call,
|
88
|
-
0
|
89
|
+
0,
|
90
|
+
processor.config.baseLabels
|
89
91
|
)
|
90
92
|
await handler(call, ctx)
|
91
93
|
return ctx.getProcessResult()
|
@@ -138,7 +140,8 @@ export class AptosBaseProcessor {
|
|
138
140
|
processor.config.address,
|
139
141
|
BigInt(txn.version),
|
140
142
|
txn,
|
141
|
-
idx
|
143
|
+
idx,
|
144
|
+
processor.config.baseLabels
|
142
145
|
)
|
143
146
|
|
144
147
|
const decoded = await processor.coder.decodeEvent<any>(evt)
|
@@ -185,7 +188,8 @@ export class AptosBaseProcessor {
|
|
185
188
|
processor.config.address,
|
186
189
|
BigInt(tx.version),
|
187
190
|
tx,
|
188
|
-
0
|
191
|
+
0,
|
192
|
+
processor.config.baseLabels
|
189
193
|
)
|
190
194
|
if (tx) {
|
191
195
|
const payload = tx.payload as TransactionPayload_EntryFunctionPayload
|
@@ -257,7 +261,8 @@ export class AptosResourcesProcessor {
|
|
257
261
|
processor.config.network,
|
258
262
|
processor.config.address,
|
259
263
|
data.version,
|
260
|
-
timestamp
|
264
|
+
timestamp,
|
265
|
+
processor.config.baseLabels
|
261
266
|
)
|
262
267
|
await handler(data.resources as MoveResource[], ctx)
|
263
268
|
return ctx.getProcessResult()
|
@@ -315,5 +320,6 @@ function configure(options: AptosBindOptions): IndexConfigure {
|
|
315
320
|
startVersion: startVersion,
|
316
321
|
address: options.address,
|
317
322
|
network: options.network || AptosNetwork.MAIN_NET,
|
323
|
+
baseLabels: options.baseLabels,
|
318
324
|
}
|
319
325
|
}
|
package/src/aptos/context.ts
CHANGED
@@ -22,9 +22,10 @@ export class AptosContext extends BaseContext {
|
|
22
22
|
address: string,
|
23
23
|
version: bigint,
|
24
24
|
transaction: Transaction_UserTransaction,
|
25
|
-
eventIndex: number
|
25
|
+
eventIndex: number,
|
26
|
+
baseLabels: Labels | undefined
|
26
27
|
) {
|
27
|
-
super()
|
28
|
+
super(baseLabels)
|
28
29
|
this.address = address.toLowerCase()
|
29
30
|
this.network = network
|
30
31
|
this.moduleName = moduleName
|
@@ -40,7 +41,7 @@ export class AptosContext extends BaseContext {
|
|
40
41
|
return getChainId(this.network)
|
41
42
|
}
|
42
43
|
|
43
|
-
|
44
|
+
getMetaDataInternal(name: string, labels: Labels): RecordMetaData {
|
44
45
|
return {
|
45
46
|
address: this.address,
|
46
47
|
contractName: this.moduleName,
|
@@ -62,8 +63,8 @@ export class AptosResourcesContext extends BaseContext {
|
|
62
63
|
timestampInMicros: number
|
63
64
|
coder: MoveCoder
|
64
65
|
|
65
|
-
constructor(network: AptosNetwork, address: string, version: bigint, timestampInMicros: number) {
|
66
|
-
super()
|
66
|
+
constructor(network: AptosNetwork, address: string, version: bigint, timestampInMicros: number, baseLabels?: Labels) {
|
67
|
+
super(baseLabels)
|
67
68
|
this.address = address
|
68
69
|
this.network = network
|
69
70
|
this.version = version
|
@@ -75,7 +76,7 @@ export class AptosResourcesContext extends BaseContext {
|
|
75
76
|
return getChainId(this.network)
|
76
77
|
}
|
77
78
|
|
78
|
-
|
79
|
+
getMetaDataInternal(name: string, labels: Labels): RecordMetaData {
|
79
80
|
return {
|
80
81
|
address: this.address,
|
81
82
|
contractName: 'resources',
|
package/src/aptos/network.ts
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import { CHAIN_IDS, getChainName } from '../core/chain.js'
|
2
2
|
import { AptosClient } from 'aptos-sdk'
|
3
|
+
import { Labels } from '../core/index.js'
|
3
4
|
|
4
5
|
export enum AptosNetwork {
|
5
6
|
MAIN_NET = 1,
|
@@ -26,4 +27,5 @@ export class AptosBindOptions {
|
|
26
27
|
network?: AptosNetwork = AptosNetwork.MAIN_NET
|
27
28
|
client?: AptosClient
|
28
29
|
startVersion?: bigint | number
|
30
|
+
baseLabels?: Labels
|
29
31
|
}
|
package/src/core/base-context.ts
CHANGED
@@ -5,6 +5,7 @@ import { Meter, Labels } from './meter.js'
|
|
5
5
|
export abstract class BaseContext {
|
6
6
|
meter: Meter
|
7
7
|
eventLogger: EventLogger
|
8
|
+
protected baseLabels: Labels
|
8
9
|
|
9
10
|
_res: ProcessResult & { states: StateResult } = {
|
10
11
|
counters: [],
|
@@ -16,16 +17,24 @@ export abstract class BaseContext {
|
|
16
17
|
},
|
17
18
|
}
|
18
19
|
|
19
|
-
protected constructor() {
|
20
|
+
protected constructor(baseLabels: Labels | undefined) {
|
20
21
|
this.meter = new Meter(this)
|
21
22
|
this.eventLogger = new EventLogger(this)
|
23
|
+
this.baseLabels = baseLabels || {}
|
22
24
|
}
|
23
25
|
|
24
26
|
getProcessResult(): ProcessResult {
|
25
27
|
return this._res
|
26
28
|
}
|
27
29
|
|
28
|
-
|
30
|
+
getMetaData(name: string, labels: Labels): RecordMetaData {
|
31
|
+
return {
|
32
|
+
...this.baseLabels,
|
33
|
+
...this.getMetaDataInternal(name, labels),
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
protected abstract getMetaDataInternal(name: string, labels: Labels): RecordMetaData
|
29
38
|
|
30
39
|
abstract getChainId(): string
|
31
40
|
}
|
package/src/core/chain.ts
CHANGED
@@ -193,3 +193,25 @@ export function getChainScanUrl(
|
|
193
193
|
}
|
194
194
|
return undefined
|
195
195
|
}
|
196
|
+
|
197
|
+
export function chainInitialLabel(chainType: string) {
|
198
|
+
switch (chainType) {
|
199
|
+
case 'aptos':
|
200
|
+
return 'Initial start version'
|
201
|
+
case 'sui':
|
202
|
+
return 'Initial start checkpoint'
|
203
|
+
default:
|
204
|
+
return 'Initial start block number'
|
205
|
+
}
|
206
|
+
}
|
207
|
+
|
208
|
+
export function chainBlockLabel(chainType: string) {
|
209
|
+
switch (chainType) {
|
210
|
+
case 'aptos':
|
211
|
+
return 'Version'
|
212
|
+
case 'sui':
|
213
|
+
return 'Checkpoint'
|
214
|
+
default:
|
215
|
+
return 'Block number'
|
216
|
+
}
|
217
|
+
}
|
@@ -55,6 +55,7 @@ class BindInternalOptions {
|
|
55
55
|
name: string
|
56
56
|
startBlock: bigint
|
57
57
|
endBlock?: bigint
|
58
|
+
baseLabels?: { [key: string]: string }
|
58
59
|
}
|
59
60
|
|
60
61
|
export class GlobalProcessorState extends ListStateStorage<GlobalProcessor> {
|
@@ -187,6 +188,7 @@ export abstract class BaseProcessor<
|
|
187
188
|
name: config.name || '',
|
188
189
|
network: getNetworkFromCtxOrNetworkish(config.network),
|
189
190
|
startBlock: 0n,
|
191
|
+
baseLabels: config.baseLabels,
|
190
192
|
}
|
191
193
|
if (config.startBlock) {
|
192
194
|
this.config.startBlock = BigInt(config.startBlock)
|
package/src/eth/bind-options.ts
CHANGED
@@ -10,6 +10,7 @@ export class BindOptions {
|
|
10
10
|
name?: string
|
11
11
|
startBlock?: bigint | number
|
12
12
|
endBlock?: bigint | number
|
13
|
+
baseLabels?: { [key: string]: string }
|
13
14
|
}
|
14
15
|
|
15
16
|
export function getOptionsSignature(opts: BindOptions): string {
|
@@ -34,4 +35,5 @@ export class AccountBindOptions {
|
|
34
35
|
address: string
|
35
36
|
network: Network
|
36
37
|
startBlock?: bigint | number
|
38
|
+
baseLabels?: { [key: string]: string }
|
37
39
|
}
|
package/src/eth/context.ts
CHANGED
@@ -26,9 +26,10 @@ export abstract class EthContext extends BaseContext {
|
|
26
26
|
log?: LogParams,
|
27
27
|
trace?: Trace,
|
28
28
|
transaction?: TransactionResponseParams,
|
29
|
-
transactionReceipt?: TransactionReceiptParams
|
29
|
+
transactionReceipt?: TransactionReceiptParams,
|
30
|
+
baseLabels?: Labels
|
30
31
|
) {
|
31
|
-
super()
|
32
|
+
super(baseLabels)
|
32
33
|
this.chainId = chainId
|
33
34
|
this.log = log
|
34
35
|
this.block = block
|
@@ -54,7 +55,7 @@ export abstract class EthContext extends BaseContext {
|
|
54
55
|
return this.chainId.toString()
|
55
56
|
}
|
56
57
|
|
57
|
-
|
58
|
+
getMetaDataInternal(name: string, labels: Labels): RecordMetaData {
|
58
59
|
if (this.log) {
|
59
60
|
return {
|
60
61
|
address: this.address,
|
@@ -140,9 +141,10 @@ export class ContractContext<
|
|
140
141
|
log?: LogParams,
|
141
142
|
trace?: Trace,
|
142
143
|
transaction?: TransactionResponseParams,
|
143
|
-
transactionReceipt?: TransactionReceiptParams
|
144
|
+
transactionReceipt?: TransactionReceiptParams,
|
145
|
+
baseLabels?: Labels
|
144
146
|
) {
|
145
|
-
super(chainId, view.address, timestamp, block, log, trace, transaction, transactionReceipt)
|
147
|
+
super(chainId, view.address, timestamp, block, log, trace, transaction, transactionReceipt, baseLabels)
|
146
148
|
view.context = this
|
147
149
|
this.contractName = contractName
|
148
150
|
this.contract = view
|
package/src/eth/eth-plugin.ts
CHANGED
@@ -357,13 +357,13 @@ PluginManager.INSTANCE.register(new EthPlugin())
|
|
357
357
|
|
358
358
|
class NoopContext extends BaseContext {
|
359
359
|
public constructor() {
|
360
|
-
super()
|
360
|
+
super({})
|
361
361
|
}
|
362
362
|
getChainId(): string {
|
363
363
|
return ''
|
364
364
|
}
|
365
365
|
|
366
|
-
|
366
|
+
getMetaDataInternal(name: string, labels: Labels): RecordMetaData {
|
367
367
|
return RecordMetaData.create()
|
368
368
|
}
|
369
369
|
}
|
@@ -6,8 +6,8 @@ export class SolanaContext extends BaseContext {
|
|
6
6
|
programName: string
|
7
7
|
blockNumber: bigint
|
8
8
|
|
9
|
-
constructor(programName: string, network: string, address: string, slot: bigint) {
|
10
|
-
super()
|
9
|
+
constructor(programName: string, network: string, address: string, slot: bigint, baseLabels: Labels | undefined) {
|
10
|
+
super(baseLabels)
|
11
11
|
this.network = network || CHAIN_IDS.SOLANA_MAINNET
|
12
12
|
this.programName = programName
|
13
13
|
this.address = address
|
@@ -18,7 +18,7 @@ export class SolanaContext extends BaseContext {
|
|
18
18
|
return this.network
|
19
19
|
}
|
20
20
|
|
21
|
-
|
21
|
+
getMetaDataInternal(name: string, labels: Labels): RecordMetaData {
|
22
22
|
return {
|
23
23
|
address: this.address,
|
24
24
|
contractName: this.programName,
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { InstructionCoder } from './solana-processor.js'
|
2
|
+
import { Labels } from '../core/index.js'
|
2
3
|
|
3
4
|
export class SolanaBindOptions {
|
4
5
|
address: string
|
@@ -8,4 +9,5 @@ export class SolanaBindOptions {
|
|
8
9
|
endBlock?: bigint | number
|
9
10
|
processInnerInstruction?: boolean
|
10
11
|
instructionCoder?: InstructionCoder
|
12
|
+
baseLabels?: Labels
|
11
13
|
}
|
@@ -4,6 +4,7 @@ import { Instruction } from '@project-serum/anchor'
|
|
4
4
|
import { SolanaBindOptions } from './solana-options.js'
|
5
5
|
import { ListStateStorage } from '@sentio/runtime'
|
6
6
|
import { CHAIN_IDS } from '@sentio/sdk'
|
7
|
+
import { Labels } from '../core/index.js'
|
7
8
|
|
8
9
|
type IndexConfigure = {
|
9
10
|
startSlot: bigint
|
@@ -25,6 +26,7 @@ export class SolanaBaseProcessor {
|
|
25
26
|
address: string
|
26
27
|
endpoint: string
|
27
28
|
contractName: string
|
29
|
+
baseLabels?: Labels
|
28
30
|
network: string
|
29
31
|
processInnerInstruction: boolean
|
30
32
|
config: IndexConfigure = { startSlot: 0n }
|
@@ -54,6 +56,7 @@ export class SolanaBaseProcessor {
|
|
54
56
|
this.endBlock(options.endBlock)
|
55
57
|
}
|
56
58
|
this.endpoint = options.network || 'https://api.mainnet-beta.solana.com'
|
59
|
+
this.baseLabels = options.baseLabels
|
57
60
|
|
58
61
|
SolanaProcessorState.INSTANCE.addValue(this)
|
59
62
|
}
|
@@ -85,7 +88,7 @@ export class SolanaBaseProcessor {
|
|
85
88
|
handler: SolanaInstructionHandler,
|
86
89
|
slot: bigint
|
87
90
|
): Promise<ProcessResult> {
|
88
|
-
const ctx = new SolanaContext(this.contractName, this.network, this.address, slot)
|
91
|
+
const ctx = new SolanaContext(this.contractName, this.network, this.address, slot, this.baseLabels)
|
89
92
|
await handler(parsedInstruction, ctx, accounts)
|
90
93
|
return ctx.getProcessResult()
|
91
94
|
}
|
package/src/sui/context.ts
CHANGED
@@ -23,9 +23,10 @@ export class SuiContext extends BaseContext {
|
|
23
23
|
timestamp: Date,
|
24
24
|
slot: bigint,
|
25
25
|
transaction: SuiTransactionBlockResponse,
|
26
|
-
eventIndex: number
|
26
|
+
eventIndex: number,
|
27
|
+
baseLabels: Labels | undefined
|
27
28
|
) {
|
28
|
-
super()
|
29
|
+
super(baseLabels)
|
29
30
|
this.address = address.toLowerCase()
|
30
31
|
this.network = network
|
31
32
|
this.moduleName = moduleName
|
@@ -42,7 +43,7 @@ export class SuiContext extends BaseContext {
|
|
42
43
|
return getChainId(this.network)
|
43
44
|
}
|
44
45
|
|
45
|
-
|
46
|
+
getMetaDataInternal(name: string, labels: Labels): RecordMetaData {
|
46
47
|
return {
|
47
48
|
address: this.address,
|
48
49
|
contractName: this.moduleName,
|
@@ -72,8 +73,8 @@ export class SuiObjectsContext extends BaseContext {
|
|
72
73
|
timestamp: Date
|
73
74
|
coder: MoveCoder
|
74
75
|
|
75
|
-
constructor(network: SuiNetwork, address: string, slot: bigint, timestamp: Date) {
|
76
|
-
super()
|
76
|
+
constructor(network: SuiNetwork, address: string, slot: bigint, timestamp: Date, baseLabels: Labels | undefined) {
|
77
|
+
super(baseLabels)
|
77
78
|
this.address = address
|
78
79
|
this.network = network
|
79
80
|
this.slot = slot
|
@@ -85,7 +86,7 @@ export class SuiObjectsContext extends BaseContext {
|
|
85
86
|
return getChainId(this.network)
|
86
87
|
}
|
87
88
|
|
88
|
-
|
89
|
+
getMetaDataInternal(name: string, labels: Labels): RecordMetaData {
|
89
90
|
return {
|
90
91
|
address: this.address,
|
91
92
|
contractName: 'objects',
|
package/src/sui/sui-processor.ts
CHANGED
@@ -22,7 +22,7 @@ import {
|
|
22
22
|
import { CallHandler, EventFilter, EventHandler, FunctionNameAndCallFilter, parseMoveType } from '../move/index.js'
|
23
23
|
import { getMoveCalls } from './utils.js'
|
24
24
|
import { defaultMoveCoder, MoveCoder } from './move-coder.js'
|
25
|
-
import { PromiseOrVoid } from '../core/index.js'
|
25
|
+
import { Labels, PromiseOrVoid } from '../core/index.js'
|
26
26
|
// import { dynamic_field } from './builtin/0x2.js'
|
27
27
|
|
28
28
|
const DEFAULT_FETCH_CONFIG: MoveFetchConfig = {
|
@@ -34,18 +34,21 @@ class IndexConfigure {
|
|
34
34
|
address: string
|
35
35
|
network: SuiNetwork
|
36
36
|
startCheckpoint: bigint
|
37
|
+
baseLabels?: Labels
|
37
38
|
}
|
38
39
|
|
39
40
|
export class SuiBindOptions {
|
40
41
|
address: string
|
41
42
|
network?: SuiNetwork
|
42
43
|
startCheckpoint?: bigint
|
44
|
+
baseLabels?: Labels
|
43
45
|
}
|
44
46
|
|
45
47
|
export class SuiObjectBindOptions {
|
46
48
|
objectId: string
|
47
49
|
network?: SuiNetwork
|
48
50
|
startCheckpoint?: bigint
|
51
|
+
baseLabels?: { [key: string]: string }
|
49
52
|
}
|
50
53
|
|
51
54
|
export class SuiProcessorState extends ListStateStorage<SuiBaseProcessor> {
|
@@ -115,7 +118,8 @@ export class SuiBaseProcessor {
|
|
115
118
|
data.timestamp || new Date(0),
|
116
119
|
data.slot,
|
117
120
|
txn,
|
118
|
-
idx
|
121
|
+
idx,
|
122
|
+
processor.config.baseLabels
|
119
123
|
)
|
120
124
|
|
121
125
|
const decoded = await processor.coder.decodeEvent<any>(evt)
|
@@ -164,7 +168,8 @@ export class SuiBaseProcessor {
|
|
164
168
|
data.timestamp || new Date(0),
|
165
169
|
data.slot,
|
166
170
|
tx,
|
167
|
-
0
|
171
|
+
0,
|
172
|
+
processor.config.baseLabels
|
168
173
|
)
|
169
174
|
if (tx) {
|
170
175
|
const calls: MoveCallSuiTransaction[] = getMoveCalls(tx)
|
@@ -251,7 +256,8 @@ abstract class SuiBaseObjectsProcessor<HandlerType> {
|
|
251
256
|
processor.config.network,
|
252
257
|
processor.config.address,
|
253
258
|
data.slot,
|
254
|
-
data.timestamp || new Date(0)
|
259
|
+
data.timestamp || new Date(0),
|
260
|
+
processor.config.baseLabels
|
255
261
|
)
|
256
262
|
await processor.doHandle(handler, data, ctx)
|
257
263
|
return ctx.getProcessResult()
|
@@ -300,6 +306,7 @@ function configure(options: SuiBindOptions): IndexConfigure {
|
|
300
306
|
startCheckpoint: options.startCheckpoint || 0n,
|
301
307
|
address: options.address,
|
302
308
|
network: options.network || SuiNetwork.MAIN_NET,
|
309
|
+
baseLabels: options.baseLabels,
|
303
310
|
}
|
304
311
|
}
|
305
312
|
|
@@ -328,6 +335,7 @@ export class SuiObjectProcessor extends SuiBaseObjectsProcessor<
|
|
328
335
|
network: options.network,
|
329
336
|
startCheckpoint: options.startCheckpoint,
|
330
337
|
ownerType: MoveOnIntervalConfig_OwnerType.OBJECT,
|
338
|
+
baseLabels: options.baseLabels,
|
331
339
|
})
|
332
340
|
}
|
333
341
|
|