@sentio/sdk 2.59.0-rc.23 → 2.59.0-rc.25

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 (205) hide show
  1. package/lib/aptos/aptos-plugin.d.ts +6 -5
  2. package/lib/aptos/aptos-plugin.d.ts.map +1 -1
  3. package/lib/aptos/aptos-plugin.js +31 -33
  4. package/lib/aptos/aptos-plugin.js.map +1 -1
  5. package/lib/aptos/aptos-processor.d.ts +19 -19
  6. package/lib/aptos/aptos-processor.d.ts.map +1 -1
  7. package/lib/aptos/aptos-processor.js +95 -44
  8. package/lib/aptos/aptos-processor.js.map +1 -1
  9. package/lib/aptos/aptos-resource-processor-template.d.ts +5 -4
  10. package/lib/aptos/aptos-resource-processor-template.d.ts.map +1 -1
  11. package/lib/aptos/aptos-resource-processor-template.js +8 -8
  12. package/lib/aptos/aptos-resource-processor-template.js.map +1 -1
  13. package/lib/aptos/builtin/0x1.d.ts +333 -332
  14. package/lib/aptos/builtin/0x1.d.ts.map +1 -1
  15. package/lib/aptos/builtin/0x1.js +664 -664
  16. package/lib/aptos/builtin/0x1.js.map +1 -1
  17. package/lib/aptos/builtin/0x3.d.ts +66 -65
  18. package/lib/aptos/builtin/0x3.d.ts.map +1 -1
  19. package/lib/aptos/builtin/0x3.js +130 -130
  20. package/lib/aptos/builtin/0x3.js.map +1 -1
  21. package/lib/aptos/builtin/0x4.d.ts +29 -28
  22. package/lib/aptos/builtin/0x4.d.ts.map +1 -1
  23. package/lib/aptos/builtin/0x4.js +56 -56
  24. package/lib/aptos/builtin/0x4.js.map +1 -1
  25. package/lib/aptos/codegen/codegen.js +27 -0
  26. package/lib/aptos/codegen/codegen.js.map +1 -1
  27. package/lib/aptos/data.d.ts +28 -3
  28. package/lib/aptos/data.d.ts.map +1 -1
  29. package/lib/aptos/data.js +61 -0
  30. package/lib/aptos/data.js.map +1 -1
  31. package/lib/aptos/index.d.ts +1 -0
  32. package/lib/aptos/index.d.ts.map +1 -1
  33. package/lib/aptos/index.js.map +1 -1
  34. package/lib/aptos/models.d.ts +1 -0
  35. package/lib/aptos/models.d.ts.map +1 -1
  36. package/lib/btc/btc-plugin.d.ts +4 -1
  37. package/lib/btc/btc-plugin.d.ts.map +1 -1
  38. package/lib/btc/btc-plugin.js +27 -0
  39. package/lib/btc/btc-plugin.js.map +1 -1
  40. package/lib/btc/btc-processor.d.ts +6 -5
  41. package/lib/btc/btc-processor.d.ts.map +1 -1
  42. package/lib/btc/btc-processor.js +35 -9
  43. package/lib/btc/btc-processor.js.map +1 -1
  44. package/lib/btc/types.d.ts +2 -1
  45. package/lib/btc/types.d.ts.map +1 -1
  46. package/lib/core/handler-options.d.ts +25 -0
  47. package/lib/core/handler-options.d.ts.map +1 -0
  48. package/lib/core/handler-options.js +21 -0
  49. package/lib/core/handler-options.js.map +1 -0
  50. package/lib/core/index.d.ts +2 -0
  51. package/lib/core/index.d.ts.map +1 -1
  52. package/lib/core/index.js +2 -0
  53. package/lib/core/index.js.map +1 -1
  54. package/lib/core/partition-handler-manager.d.ts +44 -0
  55. package/lib/core/partition-handler-manager.d.ts.map +1 -0
  56. package/lib/core/partition-handler-manager.js +76 -0
  57. package/lib/core/partition-handler-manager.js.map +1 -0
  58. package/lib/cosmos/cosmos-processor.d.ts +3 -2
  59. package/lib/cosmos/cosmos-processor.d.ts.map +1 -1
  60. package/lib/cosmos/cosmos-processor.js +11 -1
  61. package/lib/cosmos/cosmos-processor.js.map +1 -1
  62. package/lib/cosmos/types.d.ts +1 -0
  63. package/lib/cosmos/types.d.ts.map +1 -1
  64. package/lib/eth/base-processor.d.ts +18 -17
  65. package/lib/eth/base-processor.d.ts.map +1 -1
  66. package/lib/eth/base-processor.js +147 -26
  67. package/lib/eth/base-processor.js.map +1 -1
  68. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.d.ts +32 -31
  69. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.d.ts.map +1 -1
  70. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js +62 -62
  71. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js.map +1 -1
  72. package/lib/eth/builtin/internal/erc1155-processor.d.ts +17 -16
  73. package/lib/eth/builtin/internal/erc1155-processor.d.ts.map +1 -1
  74. package/lib/eth/builtin/internal/erc1155-processor.js +32 -32
  75. package/lib/eth/builtin/internal/erc1155-processor.js.map +1 -1
  76. package/lib/eth/builtin/internal/erc20-processor.d.ts +25 -24
  77. package/lib/eth/builtin/internal/erc20-processor.d.ts.map +1 -1
  78. package/lib/eth/builtin/internal/erc20-processor.js +48 -48
  79. package/lib/eth/builtin/internal/erc20-processor.js.map +1 -1
  80. package/lib/eth/builtin/internal/erc20bytes-processor.d.ts +14 -13
  81. package/lib/eth/builtin/internal/erc20bytes-processor.d.ts.map +1 -1
  82. package/lib/eth/builtin/internal/erc20bytes-processor.js +26 -26
  83. package/lib/eth/builtin/internal/erc20bytes-processor.js.map +1 -1
  84. package/lib/eth/builtin/internal/erc721-processor.d.ts +21 -20
  85. package/lib/eth/builtin/internal/erc721-processor.d.ts.map +1 -1
  86. package/lib/eth/builtin/internal/erc721-processor.js +40 -40
  87. package/lib/eth/builtin/internal/erc721-processor.js.map +1 -1
  88. package/lib/eth/builtin/internal/weth9-processor.d.ts +20 -19
  89. package/lib/eth/builtin/internal/weth9-processor.d.ts.map +1 -1
  90. package/lib/eth/builtin/internal/weth9-processor.js +38 -38
  91. package/lib/eth/builtin/internal/weth9-processor.js.map +1 -1
  92. package/lib/eth/codegen/event-handler.js +2 -2
  93. package/lib/eth/codegen/event-handler.js.map +1 -1
  94. package/lib/eth/codegen/file.d.ts.map +1 -1
  95. package/lib/eth/codegen/file.js +1 -0
  96. package/lib/eth/codegen/file.js.map +1 -1
  97. package/lib/eth/codegen/functions-handler.js +2 -2
  98. package/lib/eth/codegen/functions-handler.js.map +1 -1
  99. package/lib/eth/eth-plugin.d.ts +4 -1
  100. package/lib/eth/eth-plugin.d.ts.map +1 -1
  101. package/lib/eth/eth-plugin.js +42 -1
  102. package/lib/eth/eth-plugin.js.map +1 -1
  103. package/lib/eth/eth.d.ts +2 -7
  104. package/lib/eth/eth.d.ts.map +1 -1
  105. package/lib/eth/eth.js +8 -1
  106. package/lib/eth/eth.js.map +1 -1
  107. package/lib/fuel/codegen/codegen.js +5 -5
  108. package/lib/fuel/codegen/codegen.js.map +1 -1
  109. package/lib/fuel/fuel-plugin.d.ts +4 -1
  110. package/lib/fuel/fuel-plugin.d.ts.map +1 -1
  111. package/lib/fuel/fuel-plugin.js +41 -0
  112. package/lib/fuel/fuel-plugin.js.map +1 -1
  113. package/lib/fuel/fuel-processor-template.d.ts +7 -4
  114. package/lib/fuel/fuel-processor-template.d.ts.map +1 -1
  115. package/lib/fuel/fuel-processor-template.js +11 -9
  116. package/lib/fuel/fuel-processor-template.js.map +1 -1
  117. package/lib/fuel/fuel-processor.d.ts +7 -7
  118. package/lib/fuel/fuel-processor.d.ts.map +1 -1
  119. package/lib/fuel/fuel-processor.js +90 -19
  120. package/lib/fuel/fuel-processor.js.map +1 -1
  121. package/lib/fuel/types.d.ts +3 -0
  122. package/lib/fuel/types.d.ts.map +1 -1
  123. package/lib/move/filter.d.ts +4 -0
  124. package/lib/move/filter.d.ts.map +1 -1
  125. package/lib/move/filter.js +4 -0
  126. package/lib/move/filter.js.map +1 -1
  127. package/lib/move/shared-network-codegen.d.ts.map +1 -1
  128. package/lib/move/shared-network-codegen.js +5 -4
  129. package/lib/move/shared-network-codegen.js.map +1 -1
  130. package/lib/solana/solana-processor.d.ts +10 -4
  131. package/lib/solana/solana-processor.d.ts.map +1 -1
  132. package/lib/solana/solana-processor.js +13 -4
  133. package/lib/solana/solana-processor.js.map +1 -1
  134. package/lib/stark/starknet-processor.d.ts +3 -1
  135. package/lib/stark/starknet-processor.d.ts.map +1 -1
  136. package/lib/stark/starknet-processor.js +27 -2
  137. package/lib/stark/starknet-processor.js.map +1 -1
  138. package/lib/sui/builtin/0x1.d.ts +7 -6
  139. package/lib/sui/builtin/0x1.d.ts.map +1 -1
  140. package/lib/sui/builtin/0x1.js +12 -12
  141. package/lib/sui/builtin/0x1.js.map +1 -1
  142. package/lib/sui/builtin/0x2.d.ts +61 -60
  143. package/lib/sui/builtin/0x2.d.ts.map +1 -1
  144. package/lib/sui/builtin/0x2.js +120 -120
  145. package/lib/sui/builtin/0x2.js.map +1 -1
  146. package/lib/sui/builtin/0x3.d.ts +49 -48
  147. package/lib/sui/builtin/0x3.d.ts.map +1 -1
  148. package/lib/sui/builtin/0x3.js +96 -96
  149. package/lib/sui/builtin/0x3.js.map +1 -1
  150. package/lib/sui/models.d.ts +1 -0
  151. package/lib/sui/models.d.ts.map +1 -1
  152. package/lib/sui/sui-plugin.d.ts +6 -3
  153. package/lib/sui/sui-plugin.d.ts.map +1 -1
  154. package/lib/sui/sui-plugin.js +59 -20
  155. package/lib/sui/sui-plugin.js.map +1 -1
  156. package/lib/sui/sui-processor.d.ts +5 -4
  157. package/lib/sui/sui-processor.d.ts.map +1 -1
  158. package/lib/sui/sui-processor.js +47 -11
  159. package/lib/sui/sui-processor.js.map +1 -1
  160. package/package.json +3 -3
  161. package/src/aptos/aptos-plugin.ts +35 -39
  162. package/src/aptos/aptos-processor.ts +104 -60
  163. package/src/aptos/aptos-resource-processor-template.ts +9 -8
  164. package/src/aptos/builtin/0x1.ts +1565 -664
  165. package/src/aptos/builtin/0x3.ts +302 -130
  166. package/src/aptos/builtin/0x4.ts +123 -56
  167. package/src/aptos/codegen/codegen.ts +34 -1
  168. package/src/aptos/data.ts +78 -3
  169. package/src/aptos/index.ts +2 -0
  170. package/src/aptos/models.ts +2 -0
  171. package/src/btc/btc-plugin.ts +38 -0
  172. package/src/btc/btc-processor.ts +35 -10
  173. package/src/btc/types.ts +2 -1
  174. package/src/core/handler-options.ts +40 -0
  175. package/src/core/index.ts +5 -0
  176. package/src/core/partition-handler-manager.ts +94 -0
  177. package/src/cosmos/cosmos-processor.ts +12 -1
  178. package/src/cosmos/types.ts +1 -0
  179. package/src/eth/base-processor.ts +139 -33
  180. package/src/eth/builtin/internal/eacaggregatorproxy-processor.ts +118 -62
  181. package/src/eth/builtin/internal/erc1155-processor.ts +76 -32
  182. package/src/eth/builtin/internal/erc20-processor.ts +79 -48
  183. package/src/eth/builtin/internal/erc20bytes-processor.ts +47 -26
  184. package/src/eth/builtin/internal/erc721-processor.ts +77 -40
  185. package/src/eth/builtin/internal/weth9-processor.ts +79 -38
  186. package/src/eth/codegen/event-handler.ts +2 -2
  187. package/src/eth/codegen/file.ts +1 -0
  188. package/src/eth/codegen/functions-handler.ts +2 -2
  189. package/src/eth/eth-plugin.ts +55 -3
  190. package/src/eth/eth.ts +12 -1
  191. package/src/fuel/codegen/codegen.ts +5 -5
  192. package/src/fuel/fuel-plugin.ts +56 -0
  193. package/src/fuel/fuel-processor-template.ts +17 -10
  194. package/src/fuel/fuel-processor.ts +89 -13
  195. package/src/fuel/types.ts +3 -0
  196. package/src/move/filter.ts +4 -0
  197. package/src/move/shared-network-codegen.ts +5 -4
  198. package/src/solana/solana-processor.ts +28 -6
  199. package/src/stark/starknet-processor.ts +28 -2
  200. package/src/sui/builtin/0x1.ts +22 -12
  201. package/src/sui/builtin/0x2.ts +220 -120
  202. package/src/sui/builtin/0x3.ts +241 -96
  203. package/src/sui/models.ts +2 -0
  204. package/src/sui/sui-plugin.ts +68 -22
  205. package/src/sui/sui-processor.ts +48 -11
@@ -1,18 +1,17 @@
1
1
  import { defaultMoveCoder, MoveCoder } from './index.js'
2
2
 
3
3
  import {
4
+ EntryFunctionPayloadResponse,
4
5
  Event,
5
6
  MoveResource,
6
7
  UserTransactionResponse,
7
- EntryFunctionPayloadResponse,
8
- MultisigPayloadResponse,
9
8
  WriteSetChangeWriteResource
10
9
  } from '@aptos-labs/ts-sdk'
11
10
 
12
11
  import { AptosBindOptions, AptosNetwork } from './network.js'
13
12
  import { AptosContext, AptosResourcesContext, AptosTransactionContext } from './context.js'
14
13
  import { ListStateStorage } from '@sentio/runtime'
15
- import { MoveFetchConfig, Data_AptResource, HandleInterval, Data_AptCall, MoveAccountFetchConfig } from '@sentio/protos'
14
+ import { Data_AptResource, HandleInterval, MoveAccountFetchConfig, MoveFetchConfig } from '@sentio/protos'
16
15
  import { ServerError, Status } from 'nice-grpc'
17
16
  import {
18
17
  accountTypeString,
@@ -26,11 +25,11 @@ import {
26
25
  TransactionIntervalHandler
27
26
  } from '../move/index.js'
28
27
  import { ALL_ADDRESS, Labels, PromiseOrVoid } from '../core/index.js'
29
- import { TypeDescriptor, matchType, NestedDecodedStruct } from '@typemove/move'
30
- import { decodeResourceChange, ResourceChange } from '@typemove/aptos'
31
- import { GeneralTransactionResponse } from './models.js'
28
+ import { matchType, NestedDecodedStruct, TypeDescriptor } from '@typemove/move'
29
+ import { ResourceChange } from '@typemove/aptos'
30
+ import { GeneralTransactionResponse, HandlerOptions } from './models.js'
32
31
  import { getHandlerName, proxyProcessor } from '../utils/metrics.js'
33
- import { AptEvent } from './data.js'
32
+ import { AptCall, AptEvent, AptResource } from './data.js'
34
33
 
35
34
  const DEFAULT_FETCH_CONFIG: MoveFetchConfig = {
36
35
  resourceChanges: false,
@@ -61,8 +60,8 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
61
60
  readonly moduleName: string
62
61
  config: IndexConfigure
63
62
  eventHandlers: EventHandler<AptEvent>[] = []
64
- callHandlers: CallHandler<Data_AptCall>[] = []
65
- resourceChangeHandlers: ResourceChangeHandler<Data_AptResource>[] = []
63
+ callHandlers: CallHandler<AptCall>[] = []
64
+ resourceChangeHandlers: ResourceChangeHandler<AptResource>[] = []
66
65
  transactionIntervalHandlers: TransactionIntervalHandler[] = []
67
66
  coder: MoveCoder
68
67
 
@@ -79,11 +78,10 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
79
78
  protected onMoveEvent(
80
79
  handler: (event: Event, ctx: AptosContext) => PromiseOrVoid,
81
80
  filter: EventFilter | EventFilter[],
82
- fetchConfig?: Partial<MoveFetchConfig>,
83
- partitionHandler?: (evt: Event) => Promise<string | undefined>
81
+ handlerOptions?: HandlerOptions<MoveFetchConfig, Event>
84
82
  ): this {
85
83
  let _filters: EventFilter[] = []
86
- const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })
84
+ const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...handlerOptions })
87
85
 
88
86
  if (Array.isArray(filter)) {
89
87
  _filters = filter
@@ -120,8 +118,13 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
120
118
  filters: _filters,
121
119
  fetchConfig: _fetchConfig,
122
120
  partitionHandler: async (data: AptEvent): Promise<string | undefined> => {
123
- const decoded = await data.decodeEvent(processor.coder)
124
- return partitionHandler ? await partitionHandler(decoded || data.event) : undefined
121
+ const p = handlerOptions?.partitionKey
122
+ if (!p) return undefined
123
+ if (typeof p === 'function') {
124
+ const decoded = await data.decodeEvent(processor.coder)
125
+ return p(decoded || data.event)
126
+ }
127
+ return p
125
128
  }
126
129
  })
127
130
  return this
@@ -130,10 +133,10 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
130
133
  protected onEntryFunctionCall(
131
134
  handler: (call: EntryFunctionPayloadResponse, ctx: AptosContext) => PromiseOrVoid,
132
135
  filter: FunctionNameAndCallFilter | FunctionNameAndCallFilter[],
133
- fetchConfig?: Partial<MoveFetchConfig>
136
+ handlerOptions?: HandlerOptions<MoveFetchConfig, EntryFunctionPayloadResponse>
134
137
  ): this {
135
138
  let _filters: FunctionNameAndCallFilter[] = []
136
- const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })
139
+ const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...handlerOptions })
137
140
 
138
141
  if (Array.isArray(filter)) {
139
142
  _filters = filter
@@ -151,7 +154,7 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
151
154
  if (!data.rawTransaction) {
152
155
  throw new ServerError(Status.INVALID_ARGUMENT, 'call is null')
153
156
  }
154
- const tx = JSON.parse(data.rawTransaction) as UserTransactionResponse
157
+ const tx = data.transaction
155
158
 
156
159
  const ctx = new AptosContext(
157
160
  processor.moduleName,
@@ -163,18 +166,22 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
163
166
  processor.config.baseLabels
164
167
  )
165
168
  if (tx) {
166
- let payload = tx.payload
167
- if (payload.type === 'multisig_payload') {
168
- payload = (payload as MultisigPayloadResponse).transaction_payload ?? payload
169
- }
170
-
171
- const decoded = await processor.coder.decodeFunctionPayload(payload as EntryFunctionPayloadResponse)
169
+ const decoded = await data.decodeCall(processor.coder)
172
170
  await handler(decoded, ctx)
173
171
  }
174
172
  return ctx.stopAndGetResult()
175
173
  },
176
174
  filters: _filters,
177
- fetchConfig: _fetchConfig
175
+ fetchConfig: _fetchConfig,
176
+ partitionHandler: async (data: AptCall): Promise<string | undefined> => {
177
+ const p = handlerOptions?.partitionKey
178
+ if (!p) return undefined
179
+ if (typeof p === 'function') {
180
+ const decoded = await data.decodeCall(processor.coder)
181
+ return p(decoded)
182
+ }
183
+ return p
184
+ }
178
185
  })
179
186
  return this
180
187
  }
@@ -185,9 +192,9 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
185
192
  includeFailed?: boolean
186
193
  sender?: string
187
194
  },
188
- fetchConfig?: Partial<MoveFetchConfig>
195
+ handleOptions?: HandlerOptions<MoveFetchConfig, UserTransactionResponse>
189
196
  ): this {
190
- const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })
197
+ const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...handleOptions })
191
198
 
192
199
  const processor = this
193
200
  const filter: FunctionNameAndCallFilter = { function: '', includeFailed: transactionFilter?.includeFailed }
@@ -204,10 +211,7 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
204
211
  if (!data.rawTransaction) {
205
212
  throw new ServerError(Status.INVALID_ARGUMENT, 'call is null')
206
213
  }
207
- const call = JSON.parse(data.rawTransaction) as UserTransactionResponse
208
- if (call.events == null) {
209
- call.events = []
210
- }
214
+ const call = data.transaction
211
215
  const ctx = new AptosContext(
212
216
  processor.moduleName,
213
217
  processor.config.network,
@@ -221,19 +225,31 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
221
225
  return ctx.stopAndGetResult()
222
226
  },
223
227
  filters: [filter],
224
- fetchConfig: _fetchConfig
228
+ fetchConfig: _fetchConfig,
229
+ partitionHandler: async (data: AptCall): Promise<string | undefined> => {
230
+ const p = handleOptions?.partitionKey
231
+ if (!p) return undefined
232
+ if (typeof p === 'function') {
233
+ return p(data.transaction)
234
+ }
235
+ return p
236
+ }
225
237
  })
226
238
  return this
227
239
  }
228
240
 
229
- public onEvent(handler: (event: Event, ctx: AptosContext) => void, fetchConfig?: Partial<MoveFetchConfig>): this {
230
- this.onMoveEvent(handler, { type: '' }, fetchConfig)
241
+ public onEvent(
242
+ handler: (event: Event, ctx: AptosContext) => void,
243
+ handlerOptions?: HandlerOptions<MoveFetchConfig, Event>
244
+ ): this {
245
+ this.onMoveEvent(handler, { type: '' }, handlerOptions)
231
246
  return this
232
247
  }
233
248
 
234
249
  public onResourceChange<T>(
235
250
  handler: (changes: ResourceChange<T>[], ctx: AptosResourcesContext) => PromiseOrVoid,
236
- typeDesc: TypeDescriptor<T> | string
251
+ typeDesc: TypeDescriptor<T> | string,
252
+ handlerOptions?: HandlerOptions<object, ResourceChange<T>[]>
237
253
  ): this {
238
254
  if (typeof typeDesc === 'string') {
239
255
  typeDesc = parseMoveType(typeDesc)
@@ -248,6 +264,7 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
248
264
  if (!data.rawResources || !data.version) {
249
265
  throw new ServerError(Status.INVALID_ARGUMENT, 'resource is null')
250
266
  }
267
+ const aptResource = new AptResource(data)
251
268
  const timestamp = Number(data.timestampMicros)
252
269
  const ctx = new AptosResourcesContext(
253
270
  processor.config.network,
@@ -256,10 +273,7 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
256
273
  timestamp,
257
274
  processor.config.baseLabels
258
275
  )
259
- let resources = await decodeResourceChange<T>(
260
- data.rawResources.map((r) => JSON.parse(r)),
261
- ctx.coder
262
- )
276
+ let resources = await aptResource.decodeResources<T>(processor.coder)
263
277
 
264
278
  if (hasAny) {
265
279
  resources = resources.filter((r) => {
@@ -273,7 +287,16 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
273
287
  }
274
288
  return ctx.stopAndGetResult()
275
289
  },
276
- type: hasAny ? typeDesc.qname : typeDesc.getNormalizedSignature()
290
+ type: hasAny ? typeDesc.qname : typeDesc.getNormalizedSignature(),
291
+ partitionHandler: async (data): Promise<string | undefined> => {
292
+ const p = handlerOptions?.partitionKey
293
+ if (!p) return undefined
294
+ if (typeof p === 'function') {
295
+ const resources = await data.decodeResources<T>(processor.coder)
296
+ return p(resources)
297
+ }
298
+ return p
299
+ }
277
300
  })
278
301
  return this
279
302
  }
@@ -282,7 +305,7 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
282
305
  handler: (transaction: T, ctx: CT) => PromiseOrVoid,
283
306
  timeInterval: HandleInterval | undefined,
284
307
  versionInterval: HandleInterval | undefined,
285
- fetchConfig: Partial<MoveFetchConfig> | undefined
308
+ handlerOptions?: HandlerOptions<MoveFetchConfig, T>
286
309
  ): this {
287
310
  const processor = this
288
311
  this.transactionIntervalHandlers.push({
@@ -311,7 +334,16 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
311
334
  },
312
335
  timeIntervalInMinutes: timeInterval,
313
336
  versionInterval: versionInterval,
314
- fetchConfig: { ...DEFAULT_FETCH_CONFIG, ...fetchConfig }
337
+ fetchConfig: { ...DEFAULT_FETCH_CONFIG, ...handlerOptions },
338
+ partitionHandler: async (data): Promise<string | undefined> => {
339
+ const p = handlerOptions?.partitionKey
340
+ if (!p) return undefined
341
+ if (typeof p === 'function') {
342
+ const transaction = JSON.parse(data.rawTransaction) as T
343
+ return p(transaction)
344
+ }
345
+ return p
346
+ }
315
347
  })
316
348
  return this
317
349
  }
@@ -320,7 +352,7 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
320
352
  handler: (transaction: T, ctx: CT) => PromiseOrVoid,
321
353
  timeIntervalInMinutes = 60,
322
354
  backfillTimeIntervalInMinutes = 240,
323
- fetchConfig?: Partial<MoveFetchConfig>
355
+ handlerOptions?: HandlerOptions<MoveFetchConfig, T>
324
356
  ): this {
325
357
  return this.onInterval(
326
358
  handler,
@@ -329,7 +361,7 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
329
361
  backfillInterval: backfillTimeIntervalInMinutes
330
362
  },
331
363
  undefined,
332
- fetchConfig
364
+ handlerOptions
333
365
  )
334
366
  }
335
367
 
@@ -337,13 +369,13 @@ export class AptosTransactionProcessor<T extends GeneralTransactionResponse, CT
337
369
  handler: (transaction: T, context: CT) => PromiseOrVoid,
338
370
  versionInterval = 100000,
339
371
  backfillVersionInterval = 400000,
340
- fetchConfig?: Partial<MoveFetchConfig>
372
+ handlerOptions?: HandlerOptions<MoveFetchConfig, T>
341
373
  ): this {
342
374
  return this.onInterval(
343
375
  handler,
344
376
  undefined,
345
377
  { recentInterval: versionInterval, backfillInterval: backfillVersionInterval },
346
- fetchConfig
378
+ handlerOptions
347
379
  )
348
380
  }
349
381
 
@@ -399,9 +431,9 @@ export class AptosGlobalProcessor {
399
431
  ) => PromiseOrVoid,
400
432
  timeIntervalInMinutes = 60,
401
433
  backfillTimeIntervalInMinutes = 240,
402
- fetchConfig?: Partial<MoveFetchConfig>
434
+ handlerOptions?: HandlerOptions<MoveFetchConfig, GeneralTransactionResponse>
403
435
  ): this {
404
- this.baseProcessor.onTimeInterval(handler, timeIntervalInMinutes, backfillTimeIntervalInMinutes, fetchConfig)
436
+ this.baseProcessor.onTimeInterval(handler, timeIntervalInMinutes, backfillTimeIntervalInMinutes, handlerOptions)
405
437
  return this
406
438
  }
407
439
 
@@ -412,9 +444,9 @@ export class AptosGlobalProcessor {
412
444
  ) => PromiseOrVoid,
413
445
  versionInterval = 100000,
414
446
  backfillVersionInterval = 400000,
415
- fetchConfig?: Partial<MoveFetchConfig>
447
+ handlerOptions?: HandlerOptions<MoveFetchConfig, GeneralTransactionResponse>
416
448
  ): this {
417
- this.baseProcessor.onVersionInterval(handler, versionInterval, backfillVersionInterval, fetchConfig)
449
+ this.baseProcessor.onVersionInterval(handler, versionInterval, backfillVersionInterval, handlerOptions)
418
450
  return this
419
451
  }
420
452
  }
@@ -448,7 +480,7 @@ export class AptosResourcesProcessor {
448
480
  timeInterval: HandleInterval | undefined,
449
481
  versionInterval: HandleInterval | undefined,
450
482
  type: string | undefined,
451
- fetchConfig: Partial<MoveAccountFetchConfig> | undefined,
483
+ handlerOptions?: HandlerOptions<MoveAccountFetchConfig, MoveResource[]>,
452
484
  handlerName = getHandlerName()
453
485
  ): this {
454
486
  const processor = this
@@ -458,6 +490,7 @@ export class AptosResourcesProcessor {
458
490
  if (data.timestampMicros > Number.MAX_SAFE_INTEGER) {
459
491
  throw new ServerError(Status.INVALID_ARGUMENT, 'timestamp is too large')
460
492
  }
493
+ const aptResource = new AptResource(data)
461
494
  const timestamp = Number(data.timestampMicros)
462
495
 
463
496
  const ctx = new AptosResourcesContext(
@@ -467,13 +500,22 @@ export class AptosResourcesProcessor {
467
500
  timestamp,
468
501
  processor.config.baseLabels
469
502
  )
470
- await handler(data.rawResources.map((r) => JSON.parse(r)) as MoveResource[], ctx)
503
+ await handler(aptResource.resources, ctx)
471
504
  return ctx.stopAndGetResult()
472
505
  },
473
506
  timeIntervalInMinutes: timeInterval,
474
507
  versionInterval: versionInterval,
475
508
  type: type,
476
- fetchConfig: { ...DEFAULT_RESOURCE_FETCH_CONFIG, ...fetchConfig }
509
+ fetchConfig: { ...DEFAULT_RESOURCE_FETCH_CONFIG, ...handlerOptions },
510
+ partitionHandler: async (data: Data_AptResource): Promise<string | undefined> => {
511
+ const p = handlerOptions?.partitionKey
512
+ if (!p) return undefined
513
+ if (typeof p === 'function') {
514
+ const aptResource = new AptResource(data)
515
+ return p(aptResource.resources)
516
+ }
517
+ return p
518
+ }
477
519
  })
478
520
  return this
479
521
  }
@@ -483,7 +525,7 @@ export class AptosResourcesProcessor {
483
525
  timeIntervalInMinutes = 60,
484
526
  backfillTimeIntervalInMinutes = 240,
485
527
  type?: string,
486
- fetchConfig?: Partial<MoveAccountFetchConfig>
528
+ handlerOptions?: HandlerOptions<MoveAccountFetchConfig, MoveResource[]>
487
529
  ): this {
488
530
  return this.onInterval(
489
531
  handler,
@@ -493,7 +535,7 @@ export class AptosResourcesProcessor {
493
535
  },
494
536
  undefined,
495
537
  type,
496
- fetchConfig
538
+ handlerOptions
497
539
  )
498
540
  }
499
541
 
@@ -502,14 +544,14 @@ export class AptosResourcesProcessor {
502
544
  versionInterval = 100000,
503
545
  backfillVersionInterval = 400000,
504
546
  typePrefix?: string,
505
- fetchConfig?: Partial<MoveAccountFetchConfig>
547
+ handlerOptions?: HandlerOptions<MoveAccountFetchConfig, MoveResource[]>
506
548
  ): this {
507
549
  return this.onInterval(
508
550
  handler,
509
551
  undefined,
510
552
  { recentInterval: versionInterval, backfillInterval: backfillVersionInterval },
511
553
  typePrefix,
512
- fetchConfig
554
+ handlerOptions
513
555
  )
514
556
  }
515
557
 
@@ -533,6 +575,7 @@ export class AptosResourcesProcessor {
533
575
  if (!data.rawResources || !data.version) {
534
576
  throw new ServerError(Status.INVALID_ARGUMENT, 'resource is null')
535
577
  }
578
+ const aptResource = new AptResource(data)
536
579
  const ctx = new AptosResourcesContext(
537
580
  processor.config.network,
538
581
  processor.config.address,
@@ -541,10 +584,11 @@ export class AptosResourcesProcessor {
541
584
  processor.config.baseLabels
542
585
  )
543
586
 
544
- let resources = (await decodeResourceChange(
545
- data.rawResources.map((r) => JSON.parse(r)),
546
- ctx.coder
547
- )) as NestedDecodedStruct<MoveResource, WriteSetChangeWriteResource, T>[]
587
+ let resources = (await aptResource.decodeResources<T>(ctx.coder)) as NestedDecodedStruct<
588
+ MoveResource,
589
+ WriteSetChangeWriteResource,
590
+ T
591
+ >[]
548
592
 
549
593
  if (hasAny) {
550
594
  resources = resources.filter((r) => {
@@ -7,6 +7,7 @@ import { HandleInterval, MoveAccountFetchConfig } from '@sentio/protos'
7
7
  import { MoveResource } from '@aptos-labs/ts-sdk'
8
8
  import { PromiseOrVoid } from '../core/index.js'
9
9
  import { getHandlerName, proxyProcessor } from '../utils/metrics.js'
10
+ import { HandlerOptions } from './models.js'
10
11
 
11
12
  export class AptosResourceProcessorTemplateState extends ListStateStorage<AptosResourceProcessorTemplate> {
12
13
  static INSTANCE = new AptosResourceProcessorTemplateState()
@@ -18,7 +19,7 @@ class Handler {
18
19
  timeIntervalInMinutes?: HandleInterval
19
20
  handlerName: string
20
21
  handler: (resources: MoveResource[], ctx: AptosResourcesContext) => PromiseOrVoid
21
- fetchConfig: MoveAccountFetchConfig
22
+ handlerOptions: HandlerOptions<MoveAccountFetchConfig, MoveResource[]>
22
23
  }
23
24
 
24
25
  export class AptosResourceProcessorTemplate {
@@ -55,7 +56,7 @@ export class AptosResourceProcessorTemplate {
55
56
  h.timeIntervalInMinutes,
56
57
  h.checkpointInterval,
57
58
  h.type,
58
- h.fetchConfig,
59
+ h.handlerOptions,
59
60
  h.handlerName
60
61
  )
61
62
  }
@@ -90,7 +91,7 @@ export class AptosResourceProcessorTemplate {
90
91
  timeInterval: HandleInterval | undefined,
91
92
  checkpointInterval: HandleInterval | undefined,
92
93
  type: string | undefined,
93
- fetchConfig: Partial<MoveAccountFetchConfig> | undefined
94
+ handlerOptions?: HandlerOptions<MoveAccountFetchConfig, MoveResource[]>
94
95
  ): this {
95
96
  this.handlers.push({
96
97
  handlerName: getHandlerName(),
@@ -98,7 +99,7 @@ export class AptosResourceProcessorTemplate {
98
99
  timeIntervalInMinutes: timeInterval,
99
100
  checkpointInterval: checkpointInterval,
100
101
  type,
101
- fetchConfig: { ...DEFAULT_RESOURCE_FETCH_CONFIG, ...fetchConfig }
102
+ handlerOptions: { ...DEFAULT_RESOURCE_FETCH_CONFIG, ...handlerOptions }
102
103
  })
103
104
  return this
104
105
  }
@@ -108,7 +109,7 @@ export class AptosResourceProcessorTemplate {
108
109
  timeIntervalInMinutes = 60,
109
110
  backfillTimeIntervalInMinutes = 240,
110
111
  type?: string,
111
- fetchConfig?: Partial<MoveAccountFetchConfig>
112
+ handlerOptions?: HandlerOptions<MoveAccountFetchConfig, MoveResource[]>
112
113
  ): this {
113
114
  return this.onInterval(
114
115
  handler,
@@ -118,7 +119,7 @@ export class AptosResourceProcessorTemplate {
118
119
  },
119
120
  undefined,
120
121
  type,
121
- fetchConfig
122
+ handlerOptions
122
123
  )
123
124
  }
124
125
 
@@ -127,14 +128,14 @@ export class AptosResourceProcessorTemplate {
127
128
  checkpointInterval = 100000,
128
129
  backfillCheckpointInterval = 400000,
129
130
  type?: string,
130
- fetchConfig?: Partial<MoveAccountFetchConfig>
131
+ handlerOptions?: HandlerOptions<MoveAccountFetchConfig, MoveResource[]>
131
132
  ): this {
132
133
  return this.onInterval(
133
134
  handler,
134
135
  undefined,
135
136
  { recentInterval: checkpointInterval, backfillInterval: backfillCheckpointInterval },
136
137
  type,
137
- fetchConfig
138
+ handlerOptions
138
139
  )
139
140
  }
140
141
  }