@sentio/sdk 2.43.3-rc.3 → 2.44.0-rc.10
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/btc/btc-plugin.d.ts +3 -1
- package/lib/btc/btc-plugin.d.ts.map +1 -1
- package/lib/btc/btc-plugin.js +41 -3
- package/lib/btc/btc-plugin.js.map +1 -1
- package/lib/btc/btc-processor.d.ts +7 -2
- package/lib/btc/btc-processor.d.ts.map +1 -1
- package/lib/btc/btc-processor.js +40 -1
- package/lib/btc/btc-processor.js.map +1 -1
- package/lib/btc/types.d.ts +29 -10
- package/lib/btc/types.d.ts.map +1 -1
- package/lib/btc/types.js +29 -0
- package/lib/btc/types.js.map +1 -1
- package/lib/fuel/asset-processor.d.ts.map +1 -1
- package/lib/fuel/asset-processor.js +7 -1
- package/lib/fuel/asset-processor.js.map +1 -1
- package/lib/fuel/base-processor.d.ts.map +1 -1
- package/lib/fuel/base-processor.js +2 -3
- package/lib/fuel/base-processor.js.map +1 -1
- package/lib/fuel/codegen/codegen.js +50 -9
- package/lib/fuel/codegen/codegen.js.map +1 -1
- package/lib/fuel/context.d.ts +6 -6
- package/lib/fuel/context.d.ts.map +1 -1
- package/lib/fuel/context.js.map +1 -1
- package/lib/fuel/fuel-processor-template.d.ts +42 -0
- package/lib/fuel/fuel-processor-template.d.ts.map +1 -0
- package/lib/fuel/fuel-processor-template.js +109 -0
- package/lib/fuel/fuel-processor-template.js.map +1 -0
- package/lib/fuel/fuel-processor.d.ts +5 -2
- package/lib/fuel/fuel-processor.d.ts.map +1 -1
- package/lib/fuel/fuel-processor.js +26 -1
- package/lib/fuel/fuel-processor.js.map +1 -1
- package/lib/fuel/global-processor.d.ts.map +1 -1
- package/lib/fuel/global-processor.js +7 -1
- package/lib/fuel/global-processor.js.map +1 -1
- package/lib/fuel/index.d.ts +1 -0
- package/lib/fuel/index.d.ts.map +1 -1
- package/lib/fuel/index.js +1 -0
- package/lib/fuel/index.js.map +1 -1
- package/lib/fuel/types.d.ts +2 -2
- package/lib/fuel/types.d.ts.map +1 -1
- package/lib/fuel/types.js +2 -2
- package/lib/fuel/types.js.map +1 -1
- package/lib/sui/sui-object-processor-template.d.ts +1 -0
- package/lib/sui/sui-object-processor-template.d.ts.map +1 -1
- package/lib/sui/sui-object-processor-template.js +63 -4
- package/lib/sui/sui-object-processor-template.js.map +1 -1
- package/lib/sui/sui-object-processor.d.ts +1 -0
- package/lib/sui/sui-object-processor.d.ts.map +1 -1
- package/lib/sui/sui-object-processor.js +1 -0
- package/lib/sui/sui-object-processor.js.map +1 -1
- package/package.json +3 -3
- package/src/btc/btc-plugin.ts +50 -3
- package/src/btc/btc-processor.ts +79 -2
- package/src/btc/types.ts +51 -10
- package/src/fuel/asset-processor.ts +8 -1
- package/src/fuel/base-processor.ts +3 -3
- package/src/fuel/codegen/codegen.ts +55 -11
- package/src/fuel/context.ts +4 -4
- package/src/fuel/fuel-processor-template.ts +161 -0
- package/src/fuel/fuel-processor.ts +32 -3
- package/src/fuel/global-processor.ts +8 -2
- package/src/fuel/index.ts +1 -0
- package/src/fuel/types.ts +2 -2
- package/src/sui/sui-object-processor-template.ts +79 -4
- package/src/sui/sui-object-processor.ts +1 -0
@@ -25,7 +25,7 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
|
|
25
25
|
|
26
26
|
static bind(config: FuelProcessorConfig): FuelProcessor<any> {
|
27
27
|
const processor = new FuelProcessor(config)
|
28
|
-
|
28
|
+
addFuelProcessor(config, processor)
|
29
29
|
return processor
|
30
30
|
}
|
31
31
|
|
@@ -49,7 +49,7 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
|
|
49
49
|
}
|
50
50
|
|
51
51
|
public onTransaction(
|
52
|
-
handler: (transaction: FuelTransaction, ctx: FuelContractContext<TContract>) =>
|
52
|
+
handler: (transaction: FuelTransaction, ctx: FuelContractContext<TContract>) => PromiseOrVoid,
|
53
53
|
config: FuelFetchConfig = DEFAULT_FUEL_FETCH_CONFIG
|
54
54
|
) {
|
55
55
|
const callHandler = {
|
@@ -161,7 +161,7 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
|
|
161
161
|
|
162
162
|
public onLog<T>(
|
163
163
|
logIdFilter: string | string[],
|
164
|
-
handler: (logs: FuelLog<T>, ctx: FuelContractContext<TContract>) =>
|
164
|
+
handler: (logs: FuelLog<T>, ctx: FuelContractContext<TContract>) => PromiseOrVoid
|
165
165
|
) {
|
166
166
|
const logIds = new Set(Array.isArray(logIdFilter) ? logIdFilter : [logIdFilter])
|
167
167
|
|
@@ -308,3 +308,32 @@ export type FuelProcessorConfig = {
|
|
308
308
|
endBlock?: bigint
|
309
309
|
abi: JsonAbi
|
310
310
|
}
|
311
|
+
|
312
|
+
export function getOptionsSignature(opts: Omit<FuelProcessorConfig, 'abi'>): string {
|
313
|
+
const sig = [opts.address]
|
314
|
+
if (opts.chainId) {
|
315
|
+
sig.push(opts.chainId)
|
316
|
+
}
|
317
|
+
if (opts.name) {
|
318
|
+
sig.push(opts.name)
|
319
|
+
}
|
320
|
+
if (opts.startBlock) {
|
321
|
+
sig.push(opts.startBlock.toString())
|
322
|
+
}
|
323
|
+
if (opts.endBlock) {
|
324
|
+
sig.push(opts.endBlock.toString())
|
325
|
+
}
|
326
|
+
return sig.join('_')
|
327
|
+
}
|
328
|
+
|
329
|
+
// Dedup processor that bind multiple times
|
330
|
+
export function getFuelProcessor(opts: Omit<FuelProcessorConfig, 'abi'>) {
|
331
|
+
const sig = getOptionsSignature(opts)
|
332
|
+
return FuelProcessorState.INSTANCE.getValue(sig)
|
333
|
+
}
|
334
|
+
|
335
|
+
export function addFuelProcessor(opts: Omit<FuelProcessorConfig, 'abi'>, processor: FuelBaseProcessor<any>) {
|
336
|
+
const sig = getOptionsSignature(opts)
|
337
|
+
|
338
|
+
FuelProcessorState.INSTANCE.getOrSetValue(sig, processor)
|
339
|
+
}
|
@@ -4,7 +4,7 @@ import { Provider } from 'fuels'
|
|
4
4
|
import { getRpcEndpoint } from './network.js'
|
5
5
|
import { decodeFuelTransaction, DEFAULT_FUEL_FETCH_CONFIG, FuelFetchConfig } from './transaction.js'
|
6
6
|
import { FuelContext } from './context.js'
|
7
|
-
import { FuelProcessorConfig } from './fuel-processor.js'
|
7
|
+
import { FuelProcessorConfig, getOptionsSignature } from './fuel-processor.js'
|
8
8
|
import { mergeProcessResults } from '@sentio/runtime'
|
9
9
|
|
10
10
|
type GlobalFuelProcessorConfig = Omit<FuelProcessorConfig, 'address' | 'abi'>
|
@@ -17,7 +17,13 @@ export class FuelGlobalProcessor implements FuelBaseProcessor<GlobalFuelProcesso
|
|
17
17
|
|
18
18
|
static bind(config: GlobalFuelProcessorConfig): FuelGlobalProcessor {
|
19
19
|
const processor = new FuelGlobalProcessor(config)
|
20
|
-
|
20
|
+
const sig =
|
21
|
+
'global_' +
|
22
|
+
getOptionsSignature({
|
23
|
+
...config,
|
24
|
+
address: '*'
|
25
|
+
})
|
26
|
+
FuelProcessorState.INSTANCE.getOrSetValue(sig, processor)
|
21
27
|
return processor
|
22
28
|
}
|
23
29
|
|
package/src/fuel/index.ts
CHANGED
package/src/fuel/types.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { MapStateStorage } from '@sentio/runtime'
|
2
2
|
import {
|
3
3
|
Data_FuelBlock,
|
4
4
|
Data_FuelCall,
|
@@ -17,7 +17,7 @@ export interface FuelBaseProcessor<T> {
|
|
17
17
|
blockHandlers: BlockHandler[]
|
18
18
|
}
|
19
19
|
|
20
|
-
export class FuelProcessorState extends
|
20
|
+
export class FuelProcessorState extends MapStateStorage<FuelBaseProcessor<any>> {
|
21
21
|
static INSTANCE = new FuelProcessorState()
|
22
22
|
}
|
23
23
|
|
@@ -5,6 +5,7 @@ import { SuiMoveObject, SuiTransactionBlockResponse } from '@mysten/sui.js/clien
|
|
5
5
|
import { PromiseOrVoid } from '../core/index.js'
|
6
6
|
import {
|
7
7
|
DEFAULT_ACCOUNT_FETCH_CONFIG,
|
8
|
+
SuiAccountProcessorState,
|
8
9
|
SuiAddressProcessor,
|
9
10
|
SuiBaseObjectOrAddressProcessor,
|
10
11
|
SuiObjectBindOptions,
|
@@ -13,7 +14,8 @@ import {
|
|
13
14
|
} from './sui-object-processor.js'
|
14
15
|
import { TemplateInstanceState } from '../core/template.js'
|
15
16
|
import { SuiBindOptions } from './sui-processor.js'
|
16
|
-
import { TransactionFilter } from '../move/index.js'
|
17
|
+
import { TransactionFilter, accountAddressString } from '../move/index.js'
|
18
|
+
import { ServerError, Status } from 'nice-grpc'
|
17
19
|
|
18
20
|
class ObjectHandler<HandlerType> {
|
19
21
|
type?: string
|
@@ -48,7 +50,12 @@ export abstract class SuiObjectOrAddressProcessorTemplate<
|
|
48
50
|
bind(options: OptionType, ctx: SuiContext): void {
|
49
51
|
options.network = options.network || ctx.network
|
50
52
|
options.startCheckpoint = options.startCheckpoint || ctx.checkpoint
|
51
|
-
|
53
|
+
let id = (options as SuiObjectBindOptions).objectId || (options as SuiBindOptions).address
|
54
|
+
|
55
|
+
if (id === '*') {
|
56
|
+
throw new ServerError(Status.INVALID_ARGUMENT, "can't bind template instance with *")
|
57
|
+
}
|
58
|
+
id = accountAddressString(id)
|
52
59
|
|
53
60
|
const sig = [options.network, id].join('_')
|
54
61
|
if (this.binds.has(sig)) {
|
@@ -80,6 +87,69 @@ export abstract class SuiObjectOrAddressProcessorTemplate<
|
|
80
87
|
endBlock: 0n,
|
81
88
|
baseLabels: config.baseLabels
|
82
89
|
})
|
90
|
+
console.log(`successfully bind template ${sig}`)
|
91
|
+
}
|
92
|
+
|
93
|
+
unbind(options: OptionType, ctx: SuiContext): void {
|
94
|
+
options.network = options.network || ctx.network
|
95
|
+
options.startCheckpoint = options.startCheckpoint || ctx.checkpoint
|
96
|
+
let id = (options as SuiObjectBindOptions).objectId || (options as SuiBindOptions).address
|
97
|
+
|
98
|
+
if (id === '*') {
|
99
|
+
throw new ServerError(Status.INVALID_ARGUMENT, "can't delete template instance bind with *")
|
100
|
+
}
|
101
|
+
id = accountAddressString(id)
|
102
|
+
|
103
|
+
const sig = [options.network, id].join('_')
|
104
|
+
if (!this.binds.has(sig)) {
|
105
|
+
console.log(`the template instance ${sig} not existed or already unbind`)
|
106
|
+
return
|
107
|
+
}
|
108
|
+
this.binds.delete(sig)
|
109
|
+
|
110
|
+
let deleted = 0
|
111
|
+
const oldTemplateInstances = TemplateInstanceState.INSTANCE.unregister()
|
112
|
+
for (const templateInstance of oldTemplateInstances) {
|
113
|
+
if (templateInstance.contract?.chainId === options.network && templateInstance.contract.address == id) {
|
114
|
+
deleted++
|
115
|
+
continue
|
116
|
+
}
|
117
|
+
TemplateInstanceState.INSTANCE.addValue(templateInstance)
|
118
|
+
}
|
119
|
+
|
120
|
+
if (deleted !== 1) {
|
121
|
+
throw new ServerError(
|
122
|
+
Status.INVALID_ARGUMENT,
|
123
|
+
`Failed to delete template instance ${sig}, deleted ${deleted} times`
|
124
|
+
)
|
125
|
+
}
|
126
|
+
|
127
|
+
const oldProcessors = SuiAccountProcessorState.INSTANCE.unregister()
|
128
|
+
deleted = 0
|
129
|
+
for (const processor of oldProcessors) {
|
130
|
+
if (processor.templateId === this.id) {
|
131
|
+
if (processor.config.network == options.network && processor.config.address === id) {
|
132
|
+
deleted++
|
133
|
+
continue
|
134
|
+
}
|
135
|
+
}
|
136
|
+
SuiAccountProcessorState.INSTANCE.addValue(processor)
|
137
|
+
}
|
138
|
+
|
139
|
+
if (deleted !== 1) {
|
140
|
+
throw new ServerError(
|
141
|
+
Status.INVALID_ARGUMENT,
|
142
|
+
`Failed to delete processor for template ${this.id}, ${sig}. deleted ${deleted} times`
|
143
|
+
)
|
144
|
+
}
|
145
|
+
|
146
|
+
console.log(`successfully unbind template ${sig}`)
|
147
|
+
|
148
|
+
ctx.update({
|
149
|
+
states: {
|
150
|
+
configUpdated: true
|
151
|
+
}
|
152
|
+
})
|
83
153
|
}
|
84
154
|
|
85
155
|
protected onInterval(
|
@@ -153,6 +223,7 @@ export class SuiAddressProcessorTemplate extends SuiObjectOrAddressProcessorTemp
|
|
153
223
|
for (const handler of this.handlers) {
|
154
224
|
p.onTransactionBlock(handler.handler, handler.filter, handler.fetchConfig)
|
155
225
|
}
|
226
|
+
p.templateId = this.id
|
156
227
|
return p
|
157
228
|
}
|
158
229
|
|
@@ -176,7 +247,9 @@ export class SuiObjectProcessorTemplate extends SuiObjectOrAddressProcessorTempl
|
|
176
247
|
SuiObjectProcessor
|
177
248
|
> {
|
178
249
|
createProcessor(options: SuiObjectBindOptions): SuiObjectProcessor {
|
179
|
-
|
250
|
+
const p = SuiObjectProcessor.bind(options)
|
251
|
+
p.templateId = this.id
|
252
|
+
return p
|
180
253
|
}
|
181
254
|
}
|
182
255
|
|
@@ -186,6 +259,8 @@ export class SuiWrappedObjectProcessorTemplate extends SuiObjectOrAddressProcess
|
|
186
259
|
SuiWrappedObjectProcessor
|
187
260
|
> {
|
188
261
|
createProcessor(options: SuiObjectBindOptions): SuiWrappedObjectProcessor {
|
189
|
-
|
262
|
+
const p = SuiWrappedObjectProcessor.bind(options)
|
263
|
+
p.templateId = this.id
|
264
|
+
return p
|
190
265
|
}
|
191
266
|
}
|
@@ -46,6 +46,7 @@ export interface SuiInternalObjectsBindOptions extends SuiBindOptions {
|
|
46
46
|
export abstract class SuiBaseObjectOrAddressProcessor<HandlerType> {
|
47
47
|
config: IndexConfigure
|
48
48
|
ownerType: MoveOwnerType
|
49
|
+
templateId: number | undefined
|
49
50
|
|
50
51
|
objectHandlers: ObjectHandler[] = []
|
51
52
|
|