@sentio/sdk 1.36.3 → 1.36.4-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/LICENSE +55 -0
  2. package/lib/aptos/aptos-plugin.d.ts +14 -0
  3. package/lib/aptos/aptos-plugin.js +190 -0
  4. package/lib/aptos/aptos-plugin.js.map +1 -0
  5. package/lib/aptos/index.d.ts +1 -0
  6. package/lib/aptos/index.js +3 -1
  7. package/lib/aptos/index.js.map +1 -1
  8. package/lib/core/eth-plugin.d.ts +14 -0
  9. package/lib/core/eth-plugin.js +221 -0
  10. package/lib/core/eth-plugin.js.map +1 -0
  11. package/lib/core/index.d.ts +3 -0
  12. package/lib/core/index.js +7 -1
  13. package/lib/core/index.js.map +1 -1
  14. package/lib/core/solana-plugin.d.ts +9 -0
  15. package/lib/core/solana-plugin.js +79 -0
  16. package/lib/core/solana-plugin.js.map +1 -0
  17. package/lib/core/sui-plugin.d.ts +8 -0
  18. package/lib/core/sui-plugin.js +46 -0
  19. package/lib/core/sui-plugin.js.map +1 -0
  20. package/lib/gen/index.d.ts +2 -1
  21. package/lib/gen/index.js +2 -1
  22. package/lib/gen/index.js.map +1 -1
  23. package/lib/plugin.d.ts +15 -0
  24. package/lib/plugin.js +32 -0
  25. package/lib/plugin.js.map +1 -0
  26. package/lib/processor-runner.js +0 -0
  27. package/lib/service.d.ts +7 -19
  28. package/lib/service.js +36 -486
  29. package/lib/service.js.map +1 -1
  30. package/package.json +6 -12
  31. package/src/aptos/aptos-plugin.ts +217 -0
  32. package/src/aptos/index.ts +2 -0
  33. package/src/core/eth-plugin.ts +255 -0
  34. package/src/core/index.ts +4 -0
  35. package/src/core/solana-plugin.ts +97 -0
  36. package/src/core/sui-plugin.ts +54 -0
  37. package/src/gen/index.ts +3 -1
  38. package/src/plugin.ts +41 -0
  39. package/src/service.ts +32 -563
  40. package/src/target-ethers-sentio/tsconfig.json +1 -1
  41. package/src/types/global.d.ts +15 -0
  42. package/lib/release.config.js +0 -39
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAAjC,yGAAA,UAAU,OAAA;AACnB,qCAA4E;AAAnE,0GAAA,eAAe,OAAA;AAAE,uGAAA,YAAY,OAAA;AAAE,4GAAA,iBAAiB,OAAA;AACzD,iCAA4F;AAAnF,uGAAA,cAAc,OAAA;AAAE,8FAAA,KAAK,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAE,gGAAA,OAAO,OAAA;AAAE,8FAAA,KAAK,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC3E,iDAAmE;AAA1D,6GAAA,YAAY,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAC1C,yCAAyE;AAAhD,yGAAA,YAAY,OAAA;AAAE,0GAAA,aAAa,OAAA;AAEpD,+CAA4C;AAAnC,2GAAA,WAAW,OAAA;AAEpB,mDAAgD;AAAvC,+GAAA,aAAa,OAAA;AACtB,yDAAsD;AAA7C,qHAAA,gBAAgB,OAAA;AACzB,qEAAiE;AAAxD,gIAAA,qBAAqB,OAAA;AAC9B,iDAAkE;AAAzD,iHAAA,gBAAgB,OAAA;AAAE,+GAAA,cAAc,OAAA;AAEzC,mDAAgD;AAAvC,+GAAA,aAAa,OAAA;AACtB,mDAAoD;AAA3C,mHAAA,iBAAiB,OAAA;AAC1B,uDAAwD;AAA/C,uHAAA,mBAAmB,OAAA","sourcesContent":["export { BigDecimal } from './big-decimal'\nexport { ContractContext, ContractView, BoundContractView } from './context'\nexport { CounterBinding, Meter, GaugeBinding, Counter, Gauge, MetricOptions } from './meter'\nexport { EventTracker, AccountEventTracker } from './event-tracker'\nexport { type Numberish, toBigInteger, toMetricValue } from './numberish'\n\nexport { BindOptions } from './bind-options'\n\nexport { BaseProcessor } from './base-processor'\nexport { GenericProcessor } from './generic-processor'\nexport { BaseProcessorTemplate } from './base-processor-template'\nexport { SuiBaseProcessor, SuiBindOptions } from './sui-processor'\n\nexport { SolanaContext } from './solana-context'\nexport { SolanaBindOptions } from './solana-options'\nexport { SolanaBaseProcessor } from './solana-processor'\n\nexport type { TypedCallTrace, Trace } from './trace'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAAjC,yGAAA,UAAU,OAAA;AACnB,qCAA4E;AAAnE,0GAAA,eAAe,OAAA;AAAE,uGAAA,YAAY,OAAA;AAAE,4GAAA,iBAAiB,OAAA;AACzD,iCAA4F;AAAnF,uGAAA,cAAc,OAAA;AAAE,8FAAA,KAAK,OAAA;AAAE,qGAAA,YAAY,OAAA;AAAE,gGAAA,OAAO,OAAA;AAAE,8FAAA,KAAK,OAAA;AAAE,sGAAA,aAAa,OAAA;AAC3E,iDAAmE;AAA1D,6GAAA,YAAY,OAAA;AAAE,oHAAA,mBAAmB,OAAA;AAC1C,yCAAyE;AAAhD,yGAAA,YAAY,OAAA;AAAE,0GAAA,aAAa,OAAA;AAEpD,+CAA4C;AAAnC,2GAAA,WAAW,OAAA;AAEpB,mDAAgD;AAAvC,+GAAA,aAAa,OAAA;AACtB,yDAAsD;AAA7C,qHAAA,gBAAgB,OAAA;AACzB,qEAAiE;AAAxD,gIAAA,qBAAqB,OAAA;AAC9B,iDAAkE;AAAzD,iHAAA,gBAAgB,OAAA;AAAE,+GAAA,cAAc,OAAA;AAEzC,mDAAgD;AAAvC,+GAAA,aAAa,OAAA;AACtB,mDAAoD;AAA3C,mHAAA,iBAAiB,OAAA;AAC1B,uDAAwD;AAA/C,uHAAA,mBAAmB,OAAA;AAI5B,2CAAwC;AAA/B,uGAAA,SAAS,OAAA;AAClB,iDAA8C;AAArC,6GAAA,YAAY,OAAA;AACrB,2CAAwC;AAA/B,uGAAA,SAAS,OAAA","sourcesContent":["export { BigDecimal } from './big-decimal'\nexport { ContractContext, ContractView, BoundContractView } from './context'\nexport { CounterBinding, Meter, GaugeBinding, Counter, Gauge, MetricOptions } from './meter'\nexport { EventTracker, AccountEventTracker } from './event-tracker'\nexport { type Numberish, toBigInteger, toMetricValue } from './numberish'\n\nexport { BindOptions } from './bind-options'\n\nexport { BaseProcessor } from './base-processor'\nexport { GenericProcessor } from './generic-processor'\nexport { BaseProcessorTemplate } from './base-processor-template'\nexport { SuiBaseProcessor, SuiBindOptions } from './sui-processor'\n\nexport { SolanaContext } from './solana-context'\nexport { SolanaBindOptions } from './solana-options'\nexport { SolanaBaseProcessor } from './solana-processor'\n\nexport type { TypedCallTrace, Trace } from './trace'\n\nexport { EthPlugin } from './eth-plugin'\nexport { SolanaPlugin } from './solana-plugin'\nexport { SuiPlugin } from './sui-plugin'\n"]}
@@ -0,0 +1,9 @@
1
+ import { Plugin } from '../plugin';
2
+ import { DataBinding, HandlerType, ProcessConfigResponse, ProcessResult } from '../gen/processor/protos/processor';
3
+ export declare class SolanaPlugin implements Plugin {
4
+ name: string;
5
+ configure(config: ProcessConfigResponse): void;
6
+ supportedHandlers: HandlerType[];
7
+ processBinding(request: DataBinding): Promise<ProcessResult>;
8
+ processSolInstruction(request: DataBinding): Promise<ProcessResult>;
9
+ }
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SolanaPlugin = void 0;
4
+ const plugin_1 = require("../plugin");
5
+ const processor_1 = require("../gen/processor/protos/processor");
6
+ const service_1 = require("../service");
7
+ const nice_grpc_1 = require("nice-grpc");
8
+ const solana_processor_1 = require("./solana-processor");
9
+ class SolanaPlugin {
10
+ name = 'SolanaPlugin';
11
+ configure(config) {
12
+ // Part 2, prepare solana constractors
13
+ for (const solanaProcessor of solana_processor_1.SolanaProcessorState.INSTANCE.getValues()) {
14
+ const contractConfig = {
15
+ processorType: service_1.USER_PROCESSOR,
16
+ contract: {
17
+ name: solanaProcessor.contractName,
18
+ chainId: solanaProcessor.network,
19
+ address: solanaProcessor.address,
20
+ abi: '',
21
+ },
22
+ logConfigs: [],
23
+ traceConfigs: [],
24
+ intervalConfigs: [],
25
+ startBlock: solanaProcessor.config.startSlot,
26
+ endBlock: service_1.DEFAULT_MAX_BLOCK,
27
+ instructionConfig: {
28
+ innerInstruction: solanaProcessor.processInnerInstruction,
29
+ parsedInstruction: solanaProcessor.fromParsedInstruction !== null,
30
+ rawDataInstruction: solanaProcessor.decodeInstruction !== null,
31
+ },
32
+ aptosEventConfigs: [],
33
+ aptosCallConfigs: [],
34
+ };
35
+ config.contractConfigs.push(contractConfig);
36
+ }
37
+ }
38
+ supportedHandlers = [processor_1.HandlerType.SOL_INSTRUCTION];
39
+ processBinding(request) {
40
+ switch (request.handlerType) {
41
+ case processor_1.HandlerType.SOL_INSTRUCTION:
42
+ return this.processSolInstruction(request);
43
+ default:
44
+ throw new nice_grpc_1.ServerError(nice_grpc_1.Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType);
45
+ }
46
+ }
47
+ async processSolInstruction(request) {
48
+ if (!request.data) {
49
+ throw new nice_grpc_1.ServerError(nice_grpc_1.Status.INVALID_ARGUMENT, 'instruction data cannot be empty');
50
+ }
51
+ const instruction = request.data.solInstruction || processor_1.Data_SolInstruction.decode(request.data.raw); // JSON.parse(jsonString)
52
+ const promises = [];
53
+ // Only have instruction handlers for solana processors
54
+ for (const processor of solana_processor_1.SolanaProcessorState.INSTANCE.getValues()) {
55
+ if (processor.address === instruction.programAccountId) {
56
+ let parsedInstruction = null;
57
+ if (instruction.parsed) {
58
+ parsedInstruction = processor.getParsedInstruction(instruction.parsed);
59
+ }
60
+ else if (instruction.instructionData) {
61
+ parsedInstruction = processor.getParsedInstruction(instruction.instructionData);
62
+ }
63
+ if (parsedInstruction == null) {
64
+ continue;
65
+ }
66
+ const insHandler = processor.getInstructionHandler(parsedInstruction);
67
+ if (insHandler == null) {
68
+ continue;
69
+ }
70
+ const res = await processor.handleInstruction(parsedInstruction, instruction.accounts, insHandler, instruction.slot);
71
+ promises.push(Promise.resolve(res));
72
+ }
73
+ }
74
+ return (0, service_1.mergeProcessResults)(await Promise.all(promises));
75
+ }
76
+ }
77
+ exports.SolanaPlugin = SolanaPlugin;
78
+ plugin_1.PluginManager.INSTANCE.register(new SolanaPlugin());
79
+ //# sourceMappingURL=solana-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-plugin.js","sourceRoot":"","sources":["../../src/core/solana-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { Plugin, PluginManager } from '../plugin'\nimport {\n ContractConfig,\n Data_SolInstruction,\n DataBinding,\n HandlerType,\n ProcessConfigResponse,\n ProcessResult,\n} from '../gen/processor/protos/processor'\nimport { DEFAULT_MAX_BLOCK, errorString, mergeProcessResults, USER_PROCESSOR, Utf8ArrayToStr } from '../service'\n\nimport { ServerError, Status } from 'nice-grpc'\n\nimport { SolanaProcessorState } from './solana-processor'\nimport { Instruction as SolInstruction } from '@project-serum/anchor/dist/cjs/coder/borsh/instruction'\n\nexport class SolanaPlugin implements Plugin {\n name: string = 'SolanaPlugin'\n\n configure(config: ProcessConfigResponse): void {\n // Part 2, prepare solana constractors\n for (const solanaProcessor of SolanaProcessorState.INSTANCE.getValues()) {\n const contractConfig: ContractConfig = {\n processorType: USER_PROCESSOR,\n contract: {\n name: solanaProcessor.contractName,\n chainId: solanaProcessor.network,\n address: solanaProcessor.address,\n abi: '',\n },\n logConfigs: [],\n traceConfigs: [],\n intervalConfigs: [],\n startBlock: solanaProcessor.config.startSlot,\n endBlock: DEFAULT_MAX_BLOCK,\n instructionConfig: {\n innerInstruction: solanaProcessor.processInnerInstruction,\n parsedInstruction: solanaProcessor.fromParsedInstruction !== null,\n rawDataInstruction: solanaProcessor.decodeInstruction !== null,\n },\n aptosEventConfigs: [],\n aptosCallConfigs: [],\n }\n config.contractConfigs.push(contractConfig)\n }\n }\n\n supportedHandlers = [HandlerType.SOL_INSTRUCTION]\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.SOL_INSTRUCTION:\n return this.processSolInstruction(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n\n async processSolInstruction(request: DataBinding): Promise<ProcessResult> {\n if (!request.data) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'instruction data cannot be empty')\n }\n\n const instruction = request.data.solInstruction || Data_SolInstruction.decode(request.data.raw) // JSON.parse(jsonString)\n const promises: Promise<ProcessResult>[] = []\n\n // Only have instruction handlers for solana processors\n for (const processor of SolanaProcessorState.INSTANCE.getValues()) {\n if (processor.address === instruction.programAccountId) {\n let parsedInstruction: SolInstruction | null = null\n if (instruction.parsed) {\n parsedInstruction = processor.getParsedInstruction(instruction.parsed as { type: string; info: any })\n } else if (instruction.instructionData) {\n parsedInstruction = processor.getParsedInstruction(instruction.instructionData)\n }\n if (parsedInstruction == null) {\n continue\n }\n const insHandler = processor.getInstructionHandler(parsedInstruction)\n if (insHandler == null) {\n continue\n }\n const res = await processor.handleInstruction(\n parsedInstruction,\n instruction.accounts,\n insHandler,\n instruction.slot\n )\n\n promises.push(Promise.resolve(res))\n }\n }\n return mergeProcessResults(await Promise.all(promises))\n }\n}\n\nPluginManager.INSTANCE.register(new SolanaPlugin())\n"]}
@@ -0,0 +1,8 @@
1
+ import { Plugin } from '../plugin';
2
+ import { DataBinding, HandlerType, ProcessConfigResponse, ProcessResult } from '../gen/processor/protos/processor';
3
+ export declare class SuiPlugin implements Plugin {
4
+ name: string;
5
+ configure(config: ProcessConfigResponse): void;
6
+ supportedHandlers: HandlerType[];
7
+ processBinding(request: DataBinding): Promise<ProcessResult>;
8
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SuiPlugin = void 0;
4
+ const plugin_1 = require("../plugin");
5
+ const processor_1 = require("../gen/processor/protos/processor");
6
+ const service_1 = require("../service");
7
+ const nice_grpc_1 = require("nice-grpc");
8
+ const chain_1 = require("../utils/chain");
9
+ const sui_processor_1 = require("./sui-processor");
10
+ class SuiPlugin {
11
+ name = 'SolanaPlugin';
12
+ configure(config) {
13
+ for (const suiProcessor of sui_processor_1.SuiProcessorState.INSTANCE.getValues()) {
14
+ const contractConfig = {
15
+ processorType: service_1.USER_PROCESSOR,
16
+ contract: {
17
+ name: 'sui contract',
18
+ chainId: chain_1.CHAIN_IDS.SUI_DEVNET,
19
+ address: suiProcessor.address,
20
+ abi: '',
21
+ },
22
+ logConfigs: [],
23
+ intervalConfigs: [],
24
+ traceConfigs: [],
25
+ startBlock: suiProcessor.config.startSeqNumber,
26
+ endBlock: service_1.DEFAULT_MAX_BLOCK,
27
+ instructionConfig: undefined,
28
+ aptosEventConfigs: [],
29
+ aptosCallConfigs: [],
30
+ };
31
+ config.contractConfigs.push(contractConfig);
32
+ }
33
+ }
34
+ supportedHandlers = [processor_1.HandlerType.SUI_TRANSACTION];
35
+ processBinding(request) {
36
+ switch (request.handlerType) {
37
+ case processor_1.HandlerType.SUI_TRANSACTION:
38
+ // return this.processSolInstruction(request)
39
+ default:
40
+ throw new nice_grpc_1.ServerError(nice_grpc_1.Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType);
41
+ }
42
+ }
43
+ }
44
+ exports.SuiPlugin = SuiPlugin;
45
+ plugin_1.PluginManager.INSTANCE.register(new SuiPlugin());
46
+ //# sourceMappingURL=sui-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sui-plugin.js","sourceRoot":"","sources":["../../src/core/sui-plugin.ts"],"names":[],"mappings":";;;AAAA,sCAAiD;AACjD,iEAM0C;AAC1C,wCAA8D;AAE9D,yCAA+C;AAE/C,0CAA0C;AAC1C,mDAAmD;AAEnD,MAAa,SAAS;IACpB,IAAI,GAAW,cAAc,CAAA;IAE7B,SAAS,CAAC,MAA6B;QACrC,KAAK,MAAM,YAAY,IAAI,iCAAiB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACjE,MAAM,cAAc,GAAmB;gBACrC,aAAa,EAAE,wBAAc;gBAC7B,QAAQ,EAAE;oBACR,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,iBAAS,CAAC,UAAU;oBAC7B,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,GAAG,EAAE,EAAE;iBACR;gBACD,UAAU,EAAE,EAAE;gBACd,eAAe,EAAE,EAAE;gBACnB,YAAY,EAAE,EAAE;gBAChB,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,cAAc;gBAC9C,QAAQ,EAAE,2BAAiB;gBAC3B,iBAAiB,EAAE,SAAS;gBAC5B,iBAAiB,EAAE,EAAE;gBACrB,gBAAgB,EAAE,EAAE;aACrB,CAAA;YACD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;SAC5C;IACH,CAAC;IAED,iBAAiB,GAAG,CAAC,uBAAW,CAAC,eAAe,CAAC,CAAA;IAEjD,cAAc,CAAC,OAAoB;QACjC,QAAQ,OAAO,CAAC,WAAW,EAAE;YAC3B,KAAK,uBAAW,CAAC,eAAe,CAAC;YACjC,6CAA6C;YAC7C;gBACE,MAAM,IAAI,uBAAW,CAAC,kBAAM,CAAC,gBAAgB,EAAE,4BAA4B,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;SACrG;IACH,CAAC;CACF;AApCD,8BAoCC;AAED,sBAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC,CAAA","sourcesContent":["import { Plugin, PluginManager } from '../plugin'\nimport {\n ContractConfig,\n DataBinding,\n HandlerType,\n ProcessConfigResponse,\n ProcessResult,\n} from '../gen/processor/protos/processor'\nimport { DEFAULT_MAX_BLOCK, USER_PROCESSOR } from '../service'\n\nimport { ServerError, Status } from 'nice-grpc'\n\nimport { CHAIN_IDS } from '../utils/chain'\nimport { SuiProcessorState } from './sui-processor'\n\nexport class SuiPlugin implements Plugin {\n name: string = 'SolanaPlugin'\n\n configure(config: ProcessConfigResponse): void {\n for (const suiProcessor of SuiProcessorState.INSTANCE.getValues()) {\n const contractConfig: ContractConfig = {\n processorType: USER_PROCESSOR,\n contract: {\n name: 'sui contract',\n chainId: CHAIN_IDS.SUI_DEVNET,\n address: suiProcessor.address,\n abi: '',\n },\n logConfigs: [],\n intervalConfigs: [],\n traceConfigs: [],\n startBlock: suiProcessor.config.startSeqNumber,\n endBlock: DEFAULT_MAX_BLOCK,\n instructionConfig: undefined,\n aptosEventConfigs: [],\n aptosCallConfigs: [],\n }\n config.contractConfigs.push(contractConfig)\n }\n }\n\n supportedHandlers = [HandlerType.SUI_TRANSACTION]\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.SUI_TRANSACTION:\n // return this.processSolInstruction(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n}\n\nPluginManager.INSTANCE.register(new SuiPlugin())\n"]}
@@ -1 +1,2 @@
1
- export * from '../gen/processor/protos/processor';
1
+ export * from './builtin';
2
+ export * from './processor/protos/processor';
package/lib/gen/index.js CHANGED
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("../gen/processor/protos/processor"), exports);
17
+ __exportStar(require("./builtin"), exports);
18
+ __exportStar(require("./processor/protos/processor"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gen/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oEAAiD","sourcesContent":["export * from '../gen/processor/protos/processor'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gen/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AAEzB,+DAA4C","sourcesContent":["export * from './builtin'\n\nexport * from './processor/protos/processor'\n"]}
@@ -0,0 +1,15 @@
1
+ import { DataBinding, HandlerType, ProcessConfigResponse, ProcessResult } from './gen';
2
+ export interface Plugin {
3
+ name: string;
4
+ supportedHandlers: HandlerType[];
5
+ configure(config: ProcessConfigResponse): void;
6
+ processBinding(request: DataBinding): Promise<ProcessResult>;
7
+ }
8
+ export declare class PluginManager {
9
+ static INSTANCE: PluginManager;
10
+ plugins: Plugin[];
11
+ typesToPlugin: Map<HandlerType, Plugin>;
12
+ register(plugin: Plugin): void;
13
+ configure(config: ProcessConfigResponse): void;
14
+ processBinding(request: DataBinding): Promise<ProcessResult>;
15
+ }
package/lib/plugin.js ADDED
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PluginManager = void 0;
4
+ class PluginManager {
5
+ static INSTANCE = new PluginManager();
6
+ plugins = [];
7
+ typesToPlugin = new Map();
8
+ register(plugin) {
9
+ this.plugins.push(plugin);
10
+ // for (const plugin of this.plugins) {
11
+ for (const handlerType of plugin.supportedHandlers) {
12
+ const exsited = this.typesToPlugin.get(handlerType);
13
+ if (exsited) {
14
+ throw new Error(`Duplicate plugin for ${handlerType}: ${exsited.name} and ${plugin.name}`);
15
+ }
16
+ this.typesToPlugin.set(handlerType, plugin);
17
+ }
18
+ // }
19
+ }
20
+ configure(config) {
21
+ this.plugins.forEach((plugin) => plugin.configure(config));
22
+ }
23
+ processBinding(request) {
24
+ const plugin = this.typesToPlugin.get(request.handlerType);
25
+ if (!plugin) {
26
+ throw new Error(`No plugin for ${request.handlerType}`);
27
+ }
28
+ return plugin.processBinding(request);
29
+ }
30
+ }
31
+ exports.PluginManager = PluginManager;
32
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";;;AAUA,MAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAA;IAErC,OAAO,GAAa,EAAE,CAAA;IACtB,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAA;IAE9C,QAAQ,CAAC,MAAc;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACzB,uCAAuC;QACvC,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,iBAAiB,EAAE;YAClD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YACnD,IAAI,OAAO,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,wBAAwB,WAAW,KAAK,OAAO,CAAC,IAAI,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;aAC3F;YACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;SAC5C;QACD,IAAI;IACN,CAAC;IAED,SAAS,CAAC,MAA6B;QACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED,cAAc,CAAC,OAAoB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAC1D,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;SACxD;QACD,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC;;AA7BH,sCA8BC","sourcesContent":["import { DataBinding, HandlerType, ProcessConfigResponse, ProcessResult } from './gen'\n\nexport interface Plugin {\n name: string\n supportedHandlers: HandlerType[]\n\n configure(config: ProcessConfigResponse): void\n processBinding(request: DataBinding): Promise<ProcessResult>\n}\n\nexport class PluginManager {\n static INSTANCE = new PluginManager()\n\n plugins: Plugin[] = []\n typesToPlugin = new Map<HandlerType, Plugin>()\n\n register(plugin: Plugin) {\n this.plugins.push(plugin)\n // for (const plugin of this.plugins) {\n for (const handlerType of plugin.supportedHandlers) {\n const exsited = this.typesToPlugin.get(handlerType)\n if (exsited) {\n throw new Error(`Duplicate plugin for ${handlerType}: ${exsited.name} and ${plugin.name}`)\n }\n this.typesToPlugin.set(handlerType, plugin)\n }\n // }\n }\n\n configure(config: ProcessConfigResponse) {\n this.plugins.forEach((plugin) => plugin.configure(config))\n }\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n const plugin = this.typesToPlugin.get(request.handlerType)\n if (!plugin) {\n throw new Error(`No plugin for ${request.handlerType}`)\n }\n return plugin.processBinding(request)\n }\n}\n"]}
File without changes
package/lib/service.d.ts CHANGED
@@ -1,20 +1,12 @@
1
1
  import { CallContext } from 'nice-grpc';
2
2
  import { DataBinding, ProcessBindingResponse, ProcessBindingsRequest, ProcessConfigRequest, ProcessConfigResponse, ProcessorServiceImplementation, ProcessResult, StartRequest } from './gen';
3
3
  import { Empty } from './gen/google/protobuf/empty';
4
+ import Long from 'long';
5
+ export declare const DEFAULT_MAX_BLOCK: Long;
6
+ export declare const USER_PROCESSOR = "user_processor";
4
7
  export declare class ProcessorServiceImpl implements ProcessorServiceImplementation {
5
- private eventHandlers;
6
- private traceHandlers;
7
- private blockHandlers;
8
- private aptosEventHandlers;
9
- private aptosCallHandlers;
10
- private aptosResourceHandlers;
11
8
  private started;
12
- private contractConfigs;
13
- private accountConfigs;
14
- private templateInstances;
15
- private metricConfigs;
16
- private eventTrackingConfigs;
17
- private exportConfigs;
9
+ private processorConfig;
18
10
  private readonly loader;
19
11
  private readonly shutdownHandler?;
20
12
  constructor(loader: () => void, shutdownHandler?: () => void);
@@ -28,11 +20,7 @@ export declare class ProcessorServiceImpl implements ProcessorServiceImplementat
28
20
  result: ProcessResult;
29
21
  configUpdated: boolean;
30
22
  }, void, unknown>;
31
- processLog(request: DataBinding): Promise<ProcessResult>;
32
- processSolInstruction(request: DataBinding): Promise<ProcessResult>;
33
- processBlock(binding: DataBinding): Promise<ProcessResult>;
34
- processTrace(binding: DataBinding): Promise<ProcessResult>;
35
- processAptosEvent(binding: DataBinding): Promise<ProcessResult>;
36
- processAptosResource(binding: DataBinding): Promise<ProcessResult>;
37
- processAptosFunctionCall(binding: DataBinding): Promise<ProcessResult>;
38
23
  }
24
+ export declare function Utf8ArrayToStr(array: Uint8Array): string;
25
+ export declare function mergeProcessResults(results: ProcessResult[]): ProcessResult;
26
+ export declare function errorString(e: Error): string;