@sentio/sdk 3.2.0 → 3.3.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/solana/builtin/spl-token-processor.d.ts +31 -30
- package/lib/solana/builtin/spl-token-processor.d.ts.map +1 -1
- package/lib/solana/builtin/spl-token-processor.js +61 -61
- package/lib/solana/builtin/spl-token-processor.js.map +1 -1
- package/lib/solana/solana-context.d.ts +3 -1
- package/lib/solana/solana-context.d.ts.map +1 -1
- package/lib/solana/solana-context.js +4 -2
- package/lib/solana/solana-context.js.map +1 -1
- package/lib/solana/solana-options.d.ts +3 -0
- package/lib/solana/solana-options.d.ts.map +1 -1
- package/lib/solana/solana-options.js +3 -0
- package/lib/solana/solana-options.js.map +1 -1
- package/lib/solana/solana-plugin.d.ts +1 -0
- package/lib/solana/solana-plugin.d.ts.map +1 -1
- package/lib/solana/solana-plugin.js +45 -9
- package/lib/solana/solana-plugin.js.map +1 -1
- package/lib/solana/solana-processor.d.ts +23 -6
- package/lib/solana/solana-processor.d.ts.map +1 -1
- package/lib/solana/solana-processor.js +42 -2
- package/lib/solana/solana-processor.js.map +1 -1
- package/package.json +3 -3
- package/src/solana/builtin/spl-token-processor.ts +140 -62
- package/src/solana/solana-context.ts +6 -2
- package/src/solana/solana-options.ts +4 -0
- package/src/solana/solana-plugin.ts +50 -7
- package/src/solana/solana-processor.ts +89 -7
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { errorString, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime';
|
|
2
|
-
import { ContractConfig, HandlerType } from '@sentio/protos';
|
|
2
|
+
import { ContractConfig, HandlerType, OnIntervalConfig } from '@sentio/protos';
|
|
3
3
|
import { ServerError, Status } from 'nice-grpc';
|
|
4
4
|
import { SolanaProcessorState } from './solana-processor.js';
|
|
5
5
|
export class SolanaPlugin extends Plugin {
|
|
@@ -25,21 +25,41 @@ export class SolanaPlugin extends Plugin {
|
|
|
25
25
|
address: solanaProcessor.address,
|
|
26
26
|
abi: ''
|
|
27
27
|
},
|
|
28
|
-
startBlock: solanaProcessor.config.startSlot
|
|
29
|
-
|
|
28
|
+
startBlock: solanaProcessor.config.startSlot
|
|
29
|
+
});
|
|
30
|
+
if (solanaProcessor.address && solanaProcessor.address != '*') {
|
|
31
|
+
let fetchTx = false;
|
|
32
|
+
for (const fetchConfig of solanaProcessor.instructionHandlerMap.values()) {
|
|
33
|
+
if (fetchConfig.handlerOptions?.fetchTx) {
|
|
34
|
+
fetchTx = true;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
contractConfig.instructionConfig = {
|
|
30
39
|
innerInstruction: solanaProcessor.processInnerInstruction,
|
|
31
40
|
parsedInstruction: solanaProcessor.fromParsedInstruction !== null,
|
|
32
|
-
rawDataInstruction: solanaProcessor.decodeInstruction !== null
|
|
33
|
-
|
|
34
|
-
|
|
41
|
+
rawDataInstruction: solanaProcessor.decodeInstruction !== null,
|
|
42
|
+
fetchTx: fetchTx
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
for (const [idx, handler] of solanaProcessor.blockHandlers.entries()) {
|
|
46
|
+
contractConfig.intervalConfigs.push(OnIntervalConfig.fromPartial({
|
|
47
|
+
handlerId: idx,
|
|
48
|
+
minutesInterval: handler.timeIntervalInMinutes,
|
|
49
|
+
slotInterval: handler.slotInterval,
|
|
50
|
+
handlerName: handler.handlerName
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
35
53
|
config.contractConfigs.push(contractConfig);
|
|
36
54
|
}
|
|
37
55
|
}
|
|
38
|
-
supportedHandlers = [HandlerType.SOL_INSTRUCTION];
|
|
56
|
+
supportedHandlers = [HandlerType.SOL_INSTRUCTION, HandlerType.SOL_BLOCK];
|
|
39
57
|
processBinding(request) {
|
|
40
58
|
switch (request.handlerType) {
|
|
41
59
|
case HandlerType.SOL_INSTRUCTION:
|
|
42
60
|
return this.processSolInstruction(request);
|
|
61
|
+
case HandlerType.SOL_BLOCK:
|
|
62
|
+
return this.processSolBlock(request);
|
|
43
63
|
default:
|
|
44
64
|
throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType);
|
|
45
65
|
}
|
|
@@ -55,7 +75,7 @@ export class SolanaPlugin extends Plugin {
|
|
|
55
75
|
const promises = [];
|
|
56
76
|
// Only have instruction handlers for solana processors
|
|
57
77
|
for (const processor of SolanaProcessorState.INSTANCE.getValues()) {
|
|
58
|
-
if (processor.address === instruction.programAccountId) {
|
|
78
|
+
if (processor.address === instruction.programAccountId || processor.address === '*') {
|
|
59
79
|
let parsedInstruction = null;
|
|
60
80
|
try {
|
|
61
81
|
if (instruction.parsed) {
|
|
@@ -76,7 +96,7 @@ export class SolanaPlugin extends Plugin {
|
|
|
76
96
|
continue;
|
|
77
97
|
}
|
|
78
98
|
const res = processor
|
|
79
|
-
.handleInstruction(parsedInstruction, instruction.accounts, insHandler, instruction
|
|
99
|
+
.handleInstruction(parsedInstruction, instruction.accounts, insHandler, instruction)
|
|
80
100
|
.catch((e) => {
|
|
81
101
|
throw new ServerError(Status.INTERNAL, 'Error processing instruction: ' + JSON.stringify(instruction) + '\n' + errorString(e));
|
|
82
102
|
});
|
|
@@ -85,6 +105,22 @@ export class SolanaPlugin extends Plugin {
|
|
|
85
105
|
}
|
|
86
106
|
return mergeProcessResults(await Promise.all(promises));
|
|
87
107
|
}
|
|
108
|
+
async processSolBlock(request) {
|
|
109
|
+
if (!request.data?.solBlock) {
|
|
110
|
+
throw new ServerError(Status.INVALID_ARGUMENT, 'block data cannot be empty');
|
|
111
|
+
}
|
|
112
|
+
const block = request.data.solBlock;
|
|
113
|
+
const promises = [];
|
|
114
|
+
for (const processor of SolanaProcessorState.INSTANCE.getValues()) {
|
|
115
|
+
for (const handlerId of request.handlerIds) {
|
|
116
|
+
const handler = processor.blockHandlers[handlerId];
|
|
117
|
+
if (handler) {
|
|
118
|
+
promises.push(processor.handleBlock(block, handler));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return mergeProcessResults(await Promise.all(promises));
|
|
123
|
+
}
|
|
88
124
|
}
|
|
89
125
|
PluginManager.INSTANCE.register(new SolanaPlugin());
|
|
90
126
|
//# sourceMappingURL=solana-plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana-plugin.js","sourceRoot":"","sources":["../../src/solana/solana-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACzG,OAAO,EACL,cAAc,EAEd,WAAW,
|
|
1
|
+
{"version":3,"file":"solana-plugin.js","sourceRoot":"","sources":["../../src/solana/solana-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACzG,OAAO,EACL,cAAc,EAEd,WAAW,EAEX,gBAAgB,EAGjB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAG5D,MAAM,OAAO,YAAa,SAAQ,MAAM;IACtC,IAAI,GAAW,cAAc,CAAA;IAE7B,KAAK,CAAC,IAAI,CAAC,MAAoB;QAC7B,KAAK,MAAM,eAAe,IAAI,oBAAoB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;YACxE,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAA;YACvC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAA6B,EAAE,UAAmB;QAChE,sCAAsC;QACtC,KAAK,MAAM,eAAe,IAAI,oBAAoB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;YACxE,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAA;YACvC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAClE,SAAQ;YACV,CAAC;YAED,MAAM,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC;gBAChD,aAAa,EAAE,cAAc;gBAC7B,QAAQ,EAAE;oBACR,IAAI,EAAE,eAAe,CAAC,YAAY;oBAClC,OAAO,EAAE,eAAe,CAAC,OAAO;oBAChC,OAAO,EAAE,eAAe,CAAC,OAAO;oBAChC,GAAG,EAAE,EAAE;iBACR;gBACD,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,SAAS;aAC7C,CAAC,CAAA;YACF,IAAI,eAAe,CAAC,OAAO,IAAI,eAAe,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC;gBAC9D,IAAI,OAAO,GAAG,KAAK,CAAA;gBACnB,KAAK,MAAM,WAAW,IAAI,eAAe,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,CAAC;oBACzE,IAAI,WAAW,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC;wBACxC,OAAO,GAAG,IAAI,CAAA;wBACd,MAAK;oBACP,CAAC;gBACH,CAAC;gBACD,cAAc,CAAC,iBAAiB,GAAG;oBACjC,gBAAgB,EAAE,eAAe,CAAC,uBAAuB;oBACzD,iBAAiB,EAAE,eAAe,CAAC,qBAAqB,KAAK,IAAI;oBACjE,kBAAkB,EAAE,eAAe,CAAC,iBAAiB,KAAK,IAAI;oBAC9D,OAAO,EAAE,OAAO;iBACjB,CAAA;YACH,CAAC;YAED,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,eAAe,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;gBACrE,cAAc,CAAC,eAAe,CAAC,IAAI,CACjC,gBAAgB,CAAC,WAAW,CAAC;oBAC3B,SAAS,EAAE,GAAG;oBACd,eAAe,EAAE,OAAO,CAAC,qBAAqB;oBAC9C,YAAY,EAAE,OAAO,CAAC,YAAY;oBAClC,WAAW,EAAE,OAAO,CAAC,WAAW;iBACjC,CAAC,CACH,CAAA;YACH,CAAC;YAED,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IAED,iBAAiB,GAAG,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAExE,cAAc,CAAC,OAAoB;QACjC,QAAQ,OAAO,CAAC,WAAW,EAAE,CAAC;YAC5B,KAAK,WAAW,CAAC,eAAe;gBAC9B,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAA;YAC5C,KAAK,WAAW,CAAC,SAAS;gBACxB,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;YACtC;gBACE,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,4BAA4B,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;QACtG,CAAC;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,OAAoB;QAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAA;QACpF,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACjC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAA;QACpF,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,CAAA;QAC/C,MAAM,QAAQ,GAA6B,EAAE,CAAA;QAE7C,uDAAuD;QACvD,KAAK,MAAM,SAAS,IAAI,oBAAoB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;YAClE,IAAI,SAAS,CAAC,OAAO,KAAK,WAAW,CAAC,gBAAgB,IAAI,SAAS,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;gBACpF,IAAI,iBAAiB,GAA0B,IAAI,CAAA;gBAEnD,IAAI,CAAC;oBACH,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;wBACvB,iBAAiB,GAAG,SAAS,CAAC,oBAAoB,CAAC,WAAW,CAAC,MAAqC,CAAC,CAAA;oBACvG,CAAC;yBAAM,IAAI,WAAW,CAAC,eAAe,EAAE,CAAC;wBACvC,iBAAiB,GAAG,SAAS,CAAC,oBAAoB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;oBACjF,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,IAAI,WAAW,CACnB,MAAM,CAAC,QAAQ,EACf,gCAAgC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAChF,CAAA;gBACH,CAAC;gBACD,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;oBAC9B,SAAQ;gBACV,CAAC;gBACD,MAAM,UAAU,GAAG,SAAS,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAA;gBACrE,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;oBACvB,SAAQ;gBACV,CAAC;gBACD,MAAM,GAAG,GAAG,SAAS;qBAClB,iBAAiB,CAAC,iBAAiB,EAAE,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC;qBACnF,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBACX,MAAM,IAAI,WAAW,CACnB,MAAM,CAAC,QAAQ,EACf,gCAAgC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CACvF,CAAA;gBACH,CAAC,CAAC,CAAA;gBAEJ,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACpB,CAAC;QACH,CAAC;QACD,OAAO,mBAAmB,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IACzD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAoB;QACxC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,4BAA4B,CAAC,CAAA;QAC9E,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAA;QACnC,MAAM,QAAQ,GAA6B,EAAE,CAAA;QAC7C,KAAK,MAAM,SAAS,IAAI,oBAAoB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;YAClE,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC3C,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;gBAClD,IAAI,OAAO,EAAE,CAAC;oBACZ,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,mBAAmB,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IACzD,CAAC;CACF;AAED,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC,CAAA"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { ProcessResult } from '@sentio/protos';
|
|
1
|
+
import { Data_SolBlock, Data_SolInstruction, HandleInterval, ProcessResult } from '@sentio/protos';
|
|
2
2
|
import { SolanaContext } from './solana-context.js';
|
|
3
3
|
import { Instruction } from '@coral-xyz/anchor';
|
|
4
|
-
import { SolanaBindOptions } from './solana-options.js';
|
|
4
|
+
import { SolanaBindOptions, SolanaFetchConfig } from './solana-options.js';
|
|
5
5
|
import { ListStateStorage } from '@sentio/runtime';
|
|
6
|
-
import { Labels } from '../core/index.js';
|
|
6
|
+
import { Labels, PromiseOrVoid } from '../core/index.js';
|
|
7
7
|
import { SolanaChainId } from '@sentio/chain';
|
|
8
8
|
import { HandlerOptions } from '../core/handler-options.js';
|
|
9
|
+
import { BlockResponse } from '@solana/web3.js';
|
|
9
10
|
type IndexConfigure = {
|
|
10
11
|
startSlot: bigint;
|
|
11
12
|
endSlot?: bigint;
|
|
@@ -16,13 +17,21 @@ export interface InstructionCoder {
|
|
|
16
17
|
export type SolanaInstructionHandler = (instruction: Instruction, ctx: SolanaContext, accounts?: string[]) => void;
|
|
17
18
|
export interface InstructionHandlerEntry {
|
|
18
19
|
handler: SolanaInstructionHandler;
|
|
19
|
-
handlerOptions?: HandlerOptions<
|
|
20
|
+
handlerOptions?: HandlerOptions<SolanaFetchConfig, Instruction>;
|
|
21
|
+
}
|
|
22
|
+
export type SolanaBlockHandler<T> = (block: T, ctx: SolanaContext) => PromiseOrVoid;
|
|
23
|
+
export interface SolanaBlockHandlerEntry<T> {
|
|
24
|
+
handler: SolanaBlockHandler<T>;
|
|
25
|
+
timeIntervalInMinutes?: HandleInterval;
|
|
26
|
+
slotInterval?: HandleInterval;
|
|
27
|
+
handlerName: string;
|
|
20
28
|
}
|
|
21
29
|
export declare class SolanaProcessorState extends ListStateStorage<SolanaBaseProcessor> {
|
|
22
30
|
static INSTANCE: SolanaProcessorState;
|
|
23
31
|
}
|
|
24
32
|
export declare class SolanaBaseProcessor {
|
|
25
33
|
instructionHandlerMap: Map<string, InstructionHandlerEntry>;
|
|
34
|
+
blockHandlers: SolanaBlockHandlerEntry<any>[];
|
|
26
35
|
address: string;
|
|
27
36
|
endpoint: string;
|
|
28
37
|
contractName: string;
|
|
@@ -37,16 +46,24 @@ export declare class SolanaBaseProcessor {
|
|
|
37
46
|
info: any;
|
|
38
47
|
}) => Instruction | null;
|
|
39
48
|
constructor(options: SolanaBindOptions);
|
|
40
|
-
onInstruction(instructionName: string, handler: SolanaInstructionHandler, handlerOptions?: HandlerOptions<
|
|
49
|
+
onInstruction(instructionName: string, handler: SolanaInstructionHandler, handlerOptions?: HandlerOptions<SolanaFetchConfig, Instruction>): this;
|
|
50
|
+
onTimeInterval(handler: SolanaBlockHandler<Data_SolBlock>, timeIntervalInMinutes?: number, backfillTimeIntervalInMinutes?: number): this;
|
|
51
|
+
onBlockInterval(handler: SolanaBlockHandler<Data_SolBlock>, blockInterval?: number, backfillBlockInterval?: number): this;
|
|
52
|
+
onInterval<T>(handler: SolanaBlockHandler<T>, timeInterval: HandleInterval | undefined, slotInterval: HandleInterval | undefined): this;
|
|
41
53
|
getParsedInstruction(ins: string | {
|
|
42
54
|
type: string;
|
|
43
55
|
info: any;
|
|
44
56
|
}): Instruction | null;
|
|
45
57
|
getInstructionHandler(parsedInstruction: Instruction): InstructionHandlerEntry | undefined;
|
|
46
|
-
handleInstruction(parsedInstruction: Instruction, accounts: string[], handlerEntry: InstructionHandlerEntry,
|
|
58
|
+
handleInstruction(parsedInstruction: Instruction, accounts: string[], handlerEntry: InstructionHandlerEntry, data: Data_SolInstruction): Promise<ProcessResult>;
|
|
59
|
+
handleBlock(rawBlock: Data_SolBlock, handlerEntry: SolanaBlockHandlerEntry<BlockResponse>): Promise<ProcessResult>;
|
|
47
60
|
getPartitionKey(parsedInstruction: Instruction, handlerEntry: InstructionHandlerEntry): Promise<string | undefined>;
|
|
48
61
|
startSlot(startSlot: bigint | number): this;
|
|
49
62
|
endBlock(endBlock: bigint | number): this;
|
|
50
63
|
}
|
|
64
|
+
export declare class SolanaGlobalProcessor extends SolanaBaseProcessor {
|
|
65
|
+
static bind(options: Omit<SolanaBindOptions, 'address'>): SolanaGlobalProcessor;
|
|
66
|
+
constructor(options: SolanaBindOptions);
|
|
67
|
+
}
|
|
51
68
|
export {};
|
|
52
69
|
//# sourceMappingURL=solana-processor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana-processor.d.ts","sourceRoot":"","sources":["../../src/solana/solana-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"solana-processor.d.ts","sourceRoot":"","sources":["../../src/solana/solana-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { SolanaContext } from './solana-context.js';
|
|
2
2
|
import { ListStateStorage } from '@sentio/runtime';
|
|
3
|
+
import { ALL_ADDRESS } from '../core/index.js';
|
|
3
4
|
import { SolanaChainId } from '@sentio/chain';
|
|
5
|
+
import { getHandlerName, proxyProcessor } from '../utils/metrics.js';
|
|
4
6
|
export class SolanaProcessorState extends ListStateStorage {
|
|
5
7
|
static INSTANCE = new SolanaProcessorState();
|
|
6
8
|
}
|
|
7
9
|
export class SolanaBaseProcessor {
|
|
8
10
|
instructionHandlerMap = new Map();
|
|
11
|
+
blockHandlers = [];
|
|
9
12
|
address;
|
|
10
13
|
endpoint;
|
|
11
14
|
contractName;
|
|
@@ -43,6 +46,24 @@ export class SolanaBaseProcessor {
|
|
|
43
46
|
this.instructionHandlerMap.set(instructionName, { handler, handlerOptions });
|
|
44
47
|
return this;
|
|
45
48
|
}
|
|
49
|
+
onTimeInterval(handler, timeIntervalInMinutes = 60, backfillTimeIntervalInMinutes = 240) {
|
|
50
|
+
return this.onInterval(handler, { recentInterval: timeIntervalInMinutes, backfillInterval: backfillTimeIntervalInMinutes }, undefined);
|
|
51
|
+
}
|
|
52
|
+
onBlockInterval(handler, blockInterval = 1000, backfillBlockInterval = 4000) {
|
|
53
|
+
return this.onInterval(handler, undefined, {
|
|
54
|
+
recentInterval: blockInterval,
|
|
55
|
+
backfillInterval: backfillBlockInterval
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
onInterval(handler, timeInterval, slotInterval) {
|
|
59
|
+
this.blockHandlers.push({
|
|
60
|
+
handler: handler,
|
|
61
|
+
timeIntervalInMinutes: timeInterval,
|
|
62
|
+
slotInterval: slotInterval,
|
|
63
|
+
handlerName: getHandlerName()
|
|
64
|
+
});
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
46
67
|
getParsedInstruction(ins) {
|
|
47
68
|
if (ins) {
|
|
48
69
|
if (ins.info) {
|
|
@@ -57,11 +78,21 @@ export class SolanaBaseProcessor {
|
|
|
57
78
|
getInstructionHandler(parsedInstruction) {
|
|
58
79
|
return this.instructionHandlerMap.get(parsedInstruction.name);
|
|
59
80
|
}
|
|
60
|
-
async handleInstruction(parsedInstruction, accounts, handlerEntry,
|
|
61
|
-
|
|
81
|
+
async handleInstruction(parsedInstruction, accounts, handlerEntry, data) {
|
|
82
|
+
let transaction = undefined;
|
|
83
|
+
if (data.rawTransaction) {
|
|
84
|
+
transaction = JSON.parse(data.rawTransaction);
|
|
85
|
+
}
|
|
86
|
+
const ctx = new SolanaContext(this.contractName, this.network, this.address, data.slot, this.baseLabels, transaction);
|
|
62
87
|
await handlerEntry.handler(parsedInstruction, ctx, accounts);
|
|
63
88
|
return ctx.stopAndGetResult();
|
|
64
89
|
}
|
|
90
|
+
async handleBlock(rawBlock, handlerEntry) {
|
|
91
|
+
const ctx = new SolanaContext(this.contractName, this.network, this.address, rawBlock.slot, this.baseLabels);
|
|
92
|
+
const block = JSON.parse(rawBlock.rawBlock);
|
|
93
|
+
await handlerEntry.handler(block, ctx);
|
|
94
|
+
return ctx.stopAndGetResult();
|
|
95
|
+
}
|
|
65
96
|
async getPartitionKey(parsedInstruction, handlerEntry) {
|
|
66
97
|
const p = handlerEntry.handlerOptions?.partitionKey;
|
|
67
98
|
if (!p)
|
|
@@ -80,4 +111,13 @@ export class SolanaBaseProcessor {
|
|
|
80
111
|
return this;
|
|
81
112
|
}
|
|
82
113
|
}
|
|
114
|
+
export class SolanaGlobalProcessor extends SolanaBaseProcessor {
|
|
115
|
+
static bind(options) {
|
|
116
|
+
return new SolanaGlobalProcessor({ ...options, address: ALL_ADDRESS });
|
|
117
|
+
}
|
|
118
|
+
constructor(options) {
|
|
119
|
+
super(options);
|
|
120
|
+
return proxyProcessor(this);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
83
123
|
//# sourceMappingURL=solana-processor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana-processor.js","sourceRoot":"","sources":["../../src/solana/solana-processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"solana-processor.js","sourceRoot":"","sources":["../../src/solana/solana-processor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sentio/sdk",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0-rc.2",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -97,8 +97,8 @@
|
|
|
97
97
|
"typechain": "^8.3.2",
|
|
98
98
|
"utility-types": "^3.11.0",
|
|
99
99
|
"yaml": "^2.3.4",
|
|
100
|
-
"@sentio/protos": "3.
|
|
101
|
-
"@sentio/runtime": "^3.
|
|
100
|
+
"@sentio/protos": "3.3.0-rc.2",
|
|
101
|
+
"@sentio/runtime": "^3.3.0-rc.2"
|
|
102
102
|
},
|
|
103
103
|
"peerDependencies": {
|
|
104
104
|
"@sentio/tsup": "^8.3.5-rc.1"
|