@sentio/sdk 1.19.4 → 1.19.6

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 (103) hide show
  1. package/lib/aptos/aptos-processor.d.ts +41 -0
  2. package/lib/aptos/aptos-processor.js +129 -0
  3. package/lib/aptos/aptos-processor.js.map +1 -0
  4. package/lib/aptos/bind-options.d.ts +11 -0
  5. package/lib/aptos/bind-options.js +17 -0
  6. package/lib/aptos/bind-options.js.map +1 -0
  7. package/lib/aptos/context.d.ts +12 -0
  8. package/lib/aptos/context.js +33 -0
  9. package/lib/aptos/context.js.map +1 -0
  10. package/lib/aptos/index.d.ts +5 -0
  11. package/lib/aptos/index.js +11 -0
  12. package/lib/aptos/index.js.map +1 -0
  13. package/lib/cli/webpack.config.js +1 -0
  14. package/lib/core/base-processor-template.js.map +1 -1
  15. package/lib/core/base-processor.d.ts +1 -1
  16. package/lib/core/base-processor.js.map +1 -1
  17. package/lib/core/bind-options.d.ts +0 -2
  18. package/lib/core/bind-options.js +1 -4
  19. package/lib/core/bind-options.js.map +1 -1
  20. package/lib/core/context.d.ts +10 -10
  21. package/lib/core/context.js +65 -11
  22. package/lib/core/context.js.map +1 -1
  23. package/lib/core/index.d.ts +1 -2
  24. package/lib/core/index.js +1 -4
  25. package/lib/core/index.js.map +1 -1
  26. package/lib/core/logger.d.ts +1 -1
  27. package/lib/core/logger.js +5 -5
  28. package/lib/core/logger.js.map +1 -1
  29. package/lib/core/metadata.d.ts +1 -1
  30. package/lib/core/metadata.js +3 -79
  31. package/lib/core/metadata.js.map +1 -1
  32. package/lib/core/meter.d.ts +1 -1
  33. package/lib/core/meter.js +2 -2
  34. package/lib/core/meter.js.map +1 -1
  35. package/lib/core/numberish.d.ts +1 -1
  36. package/lib/core/numberish.js +7 -7
  37. package/lib/core/numberish.js.map +1 -1
  38. package/lib/core/numberish.test.js.map +1 -1
  39. package/lib/core/solana-processor.d.ts +1 -1
  40. package/lib/core/solana-processor.js.map +1 -1
  41. package/lib/core/sui-processor.d.ts +1 -1
  42. package/lib/core/sui-processor.js.map +1 -1
  43. package/lib/gen/index.d.ts +1 -0
  44. package/lib/gen/index.js +18 -0
  45. package/lib/gen/index.js.map +1 -0
  46. package/lib/index.d.ts +2 -1
  47. package/lib/index.js +15 -2
  48. package/lib/index.js.map +1 -1
  49. package/lib/processor-runner.js +2 -2
  50. package/lib/processor-runner.js.map +1 -1
  51. package/lib/processor-state.d.ts +2 -1
  52. package/lib/processor-state.js.map +1 -1
  53. package/lib/service.d.ts +2 -2
  54. package/lib/service.js +41 -36
  55. package/lib/service.js.map +1 -1
  56. package/lib/testing/metric-utils.d.ts +1 -1
  57. package/lib/testing/metric-utils.js +2 -2
  58. package/lib/testing/metric-utils.js.map +1 -1
  59. package/lib/testing/test-processor-server.d.ts +2 -1
  60. package/lib/testing/test-processor-server.js +11 -11
  61. package/lib/testing/test-processor-server.js.map +1 -1
  62. package/lib/testing/test-provider.js +2 -2
  63. package/lib/testing/test-provider.js.map +1 -1
  64. package/lib/tests/aptos.test.js +44 -12
  65. package/lib/tests/aptos.test.js.map +1 -1
  66. package/lib/tests/souffl3.js +19 -12
  67. package/lib/tests/souffl3.js.map +1 -1
  68. package/lib/utils/chain.d.ts +1 -0
  69. package/lib/utils/chain.js +3 -1
  70. package/lib/utils/chain.js.map +1 -1
  71. package/package.json +5 -7
  72. package/src/aptos/aptos-processor.ts +171 -0
  73. package/src/aptos/bind-options.ts +15 -0
  74. package/src/aptos/context.ts +35 -0
  75. package/src/aptos/index.ts +5 -0
  76. package/src/cli/webpack.config.js +1 -0
  77. package/src/core/base-processor-template.ts +1 -1
  78. package/src/core/base-processor.ts +1 -1
  79. package/src/core/bind-options.ts +0 -1
  80. package/src/core/context.ts +74 -15
  81. package/src/core/index.ts +2 -2
  82. package/src/core/logger.ts +1 -1
  83. package/src/core/metadata.ts +4 -76
  84. package/src/core/meter.ts +1 -1
  85. package/src/core/numberish.test.ts +1 -1
  86. package/src/core/numberish.ts +1 -1
  87. package/src/core/solana-processor.ts +1 -1
  88. package/src/core/sui-processor.ts +1 -1
  89. package/src/gen/index.ts +1 -0
  90. package/src/index.ts +4 -1
  91. package/src/processor-runner.ts +1 -1
  92. package/src/processor-state.ts +3 -1
  93. package/src/service.ts +29 -29
  94. package/src/testing/metric-utils.ts +2 -2
  95. package/src/testing/test-processor-server.ts +5 -2
  96. package/src/testing/test-provider.ts +1 -1
  97. package/src/tests/aptos.test.ts +47 -11
  98. package/src/tests/souffl3.ts +31 -19
  99. package/src/utils/chain.ts +2 -0
  100. package/lib/core/aptos-processor.d.ts +0 -41
  101. package/lib/core/aptos-processor.js +0 -125
  102. package/lib/core/aptos-processor.js.map +0 -1
  103. package/src/core/aptos-processor.ts +0 -147
@@ -1 +1 @@
1
- {"version":3,"file":"test-processor-server.js","sourceRoot":"","sources":["../../src/testing/test-processor-server.ts"],"names":[],"mappings":";;;;;;AAAA,qCAkBoB;AAIpB,0CAA0C;AAE1C,gDAAuB;AACvB,wDAAiE;AAEjE,MAAM,YAAY,GAA6B,EAAE,CAAA;AAEjD,SAAS,SAAS;IAChB,MAAM,CAAC,eAAe,GAAG,IAAI,oBAAc,EAAE,CAAA;AAC/C,CAAC;AAED,MAAa,mBAAmB;IAC9B,OAAO,CAAsB;IAC7B,cAAc,CAAkB;IAEhC,YAAY,MAAkB,EAAE,gBAAwC,EAAE;QACxE,SAAS,EAAE,CAAA;QAEX,IAAI,CAAC,OAAO,GAAG,IAAI,0BAAoB,CAAC,MAAM,CAAC,CAAA;QAC/C,MAAM,WAAW,GAAgC,EAAE,CAAA;QAEnD,KAAK,MAAM,CAAC,IAAI,iBAAS,EAAE;YACzB,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YACnC,WAAW,CAAC,CAAC,CAAC,GAAG;gBACf,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE,CAAC,IAAI,CAAC;aACd,CAAA;SACF;QAED,IAAA,iBAAW,EAAC,WAAW,CAAC,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,UAAwB,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,OAAO,GAAG,YAAY;QACnF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACtD,IAAI,CAAC,cAAc,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAA;QAChE,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,IAAI,CAAC,OAAc,EAAE,OAAO,GAAG,YAAY;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED,SAAS,CAAC,OAA6B,EAAE,OAAO,GAAG,YAAY;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACjD,CAAC;IAED,aAAa,CAAC,OAA6B,EAAE,OAAO,GAAG,YAAY;QACjE,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACrD,CAAC;IAED,mBAAmB,CAAC,OAAmC,EAAE,OAAO,GAAG,YAAY;QAC7E,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC3D,CAAC;IAED,WAAW,CAAC,OAA+B,EAAE,OAAO,GAAG,YAAY;QACjE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACnD,CAAC;IAED,aAAa,CAAC,OAA+B,EAAE,UAAuB,YAAY;QAChF,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACrD,CAAC;IAED,mBAAmB,CAAC,OAAmC,EAAE,OAAO,GAAG,YAAY;QAC7E,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC3D,CAAC;IAED,SAAS,CAAC,KAAY,EAAE,UAAsB,CAAC;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAA;IAC1C,CAAC;IAED,UAAU,CAAC,MAAe,EAAE,UAAsB,CAAC;QACjD,MAAM,QAAQ,GAAG,EAAE,CAAA;QACnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YACtD,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;aAC5D;YACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SACvB;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;YACxB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAA;IACJ,CAAC;IAED,iBAAiB,CAAC,KAAY,EAAE,UAAsB,CAAC;QACrD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;YAChD,MAAM,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;SAC5D;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAEjD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;YAC1C,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAA,sBAAU,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE;gBACzE,SAAQ;aACT;YACD,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE;gBAC/E,SAAQ;aACT;YACD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,YAAY,EAAE;gBAC1C,IAAI,MAAM,CAAC,SAAS,IAAI,SAAS,EAAE;oBACjC,OAAO;wBACL,IAAI,EAAE;4BACJ,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC;yBACpB;wBACD,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,WAAW,EAAE,iBAAW,CAAC,SAAS;qBACnC,CAAA;iBACF;aACF;SACF;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,CAAC,GAAQ,EAAE,UAAsB,CAAC;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAA;IACtC,CAAC;IAED,QAAQ,CAAC,IAAW,EAAE,UAAsB,CAAC;QAC3C,MAAM,QAAQ,GAAG,EAAE,CAAA;QACnB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAClD,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;aACxD;YACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SACvB;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;YACtB,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAA;IACJ,CAAC;IAED,eAAe,CAAC,GAAQ,EAAE,UAAsB,CAAC;QAC/C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;YAC1C,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAA,sBAAU,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE;gBACzE,SAAQ;aACT;YACD,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE;gBAC1E,SAAQ;aACT;YACD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE;gBACxC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;oBACnC,mDAAmD;oBACnD,aAAa;oBACb,IAAI;oBAEJ,IAAI,KAAK,GAAG,IAAI,CAAA;oBAChB,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE;wBACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;wBACrC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAA;wBACpD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;4BAC9B,YAAY;4BACZ,SAAQ;yBACT;wBACD,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE;4BACzE,WAAW;4BACX,SAAQ;yBACT;wBACD,KAAK,GAAG,KAAK,CAAA;wBACb,MAAK;qBACN;oBACD,IAAI,KAAK,EAAE;wBACT,OAAO;4BACL,IAAI,EAAE;gCACJ,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;6BAClB;4BACD,SAAS,EAAE,MAAM,CAAC,SAAS;4BAC3B,WAAW,EAAE,iBAAW,CAAC,OAAO;yBACjC,CAAA;qBACF;iBACF;aACF;SACF;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,SAAS,CAAC,KAA0C,EAAE,UAAsB,CAAC;QAC3E,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAA;IAC1C,CAAC;IAED,UAAU,CAAC,MAA6C,EAAE,UAAsB,CAAC;QAC/E,MAAM,QAAQ,GAAG,EAAE,CAAA;QACnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YACtD,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;aAC5D;YACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SACvB;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;YACxB,aAAa,EAAE,QAAQ;SACxB,CAAC,CAAA;IACJ,CAAC;IAED,iBAAiB,CAAC,KAA0C,EAAE,UAAsB,CAAC;QACnF,MAAM,OAAO,GAAiB;YAC5B,KAAK,EAAE;gBACL,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC;aACpB;YACD,UAAU,EAAE,EAAE;SACf,CAAA;QACD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;YAC1C,IAAI,QAAQ,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAA,sBAAU,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE;gBACzE,SAAQ;aACT;YACD,MAAM,eAAe,GAAG,cAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACrD,IAAI,eAAe,GAAG,QAAQ,CAAC,UAAU,EAAE;gBACzC,SAAQ;aACT;YACD,IAAI,QAAQ,CAAC,QAAQ,KAAK,cAAI,CAAC,IAAI,IAAI,eAAe,IAAI,QAAQ,CAAC,QAAQ,EAAE;gBAC3E,SAAQ;aACT;YAED,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,YAAY,EAAE;gBAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;aAC1C;SACF;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,eAAe,CAAC,OAA+B,EAAE,OAAoB;QACnE,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACvD,CAAC;CACF;AAlND,kDAkNC;AAED,SAAS,OAAO,CAAC,GAAQ;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;KAClC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC","sourcesContent":["import {\n BlockBinding,\n ContractConfig,\n DataBinding,\n HandlerType,\n ProcessBindingResponse,\n ProcessBindingsRequest,\n ProcessBlocksRequest,\n ProcessConfigRequest,\n ProcessConfigResponse,\n ProcessInstructionsRequest,\n ProcessorServiceImpl,\n ProcessorServiceImplementation,\n ProcessorState,\n ProcessTransactionsRequest,\n setProvider,\n StartRequest,\n Trace,\n} from '@sentio/sdk'\nimport { CallContext } from 'nice-grpc-common'\nimport { Empty } from '../gen/google/protobuf/empty'\nimport { ChainConfig } from '../chain-config'\nimport { CHAIN_MAP } from '../utils/chain'\nimport { Block, Log } from '@ethersproject/abstract-provider'\nimport Long from 'long'\nimport { getNetwork, Networkish } from '@ethersproject/providers'\n\nconst TEST_CONTEXT: CallContext = <CallContext>{}\n\nfunction cleanTest() {\n global.PROCESSOR_STATE = new ProcessorState()\n}\n\nexport class TestProcessorServer implements ProcessorServiceImplementation {\n service: ProcessorServiceImpl\n contractConfig: ContractConfig[]\n\n constructor(loader: () => void, httpEndpoints: Record<string, string> = {}) {\n cleanTest()\n\n this.service = new ProcessorServiceImpl(loader)\n const dummyConfig: Record<string, ChainConfig> = {}\n\n for (const k in CHAIN_MAP) {\n const http = httpEndpoints[k] || ''\n dummyConfig[k] = {\n ChainID: k,\n Https: [http],\n }\n }\n\n setProvider(dummyConfig)\n }\n\n async start(request: StartRequest = { templateInstances: [] }, context = TEST_CONTEXT): Promise<Empty> {\n const res = await this.service.start(request, context)\n this.contractConfig = (await this.getConfig({})).contractConfigs\n return res\n }\n\n stop(request: Empty, context = TEST_CONTEXT): Promise<Empty> {\n return this.service.stop(request, context)\n }\n\n getConfig(request: ProcessConfigRequest, context = TEST_CONTEXT): Promise<ProcessConfigResponse> {\n return this.service.getConfig(request, context)\n }\n\n processBlocks(request: ProcessBlocksRequest, context = TEST_CONTEXT): Promise<ProcessBindingResponse> {\n return this.service.processBlocks(request, context)\n }\n\n processInstructions(request: ProcessInstructionsRequest, context = TEST_CONTEXT): Promise<ProcessBindingResponse> {\n return this.service.processInstructions(request, context)\n }\n\n processLogs(request: ProcessBindingsRequest, context = TEST_CONTEXT): Promise<ProcessBindingResponse> {\n return this.service.processLogs(request, context)\n }\n\n processTraces(request: ProcessBindingsRequest, context: CallContext = TEST_CONTEXT): Promise<ProcessBindingResponse> {\n return this.service.processTraces(request, context)\n }\n\n processTransactions(request: ProcessTransactionsRequest, context = TEST_CONTEXT): Promise<ProcessBindingResponse> {\n return this.service.processTransactions(request, context)\n }\n\n testTrace(trace: Trace, network: Networkish = 1): Promise<ProcessBindingResponse> {\n return this.testTraces([trace], network)\n }\n\n testTraces(traces: Trace[], network: Networkish = 1): Promise<ProcessBindingResponse> {\n const bindings = []\n for (const trace of traces) {\n const binding = this.buildTraceBinding(trace, network)\n if (!binding) {\n throw Error('Invalid test trace: ' + JSON.stringify(trace))\n }\n bindings.push(binding)\n }\n return this.processTraces({\n bindings: bindings,\n })\n }\n\n buildTraceBinding(trace: Trace, network: Networkish = 1): DataBinding | undefined {\n if (trace.type !== 'call' || !trace.action.input) {\n throw Error('Invalid test trace: ' + JSON.stringify(trace))\n }\n const signature = trace.action.input.slice(0, 10)\n\n for (const contract of this.contractConfig) {\n if (contract.contract?.chainId !== getNetwork(network).chainId.toString()) {\n continue\n }\n if (trace.action.to?.toLowerCase() !== contract.contract?.address.toLowerCase()) {\n continue\n }\n for (const config of contract.traceConfigs) {\n if (config.signature == signature) {\n return {\n data: {\n raw: toBytes(trace),\n },\n handlerId: config.handlerId,\n handlerType: HandlerType.ETH_TRACE,\n }\n }\n }\n }\n return undefined\n }\n\n testLog(log: Log, network: Networkish = 1): Promise<ProcessBindingResponse> {\n return this.testLogs([log], network)\n }\n\n testLogs(logs: Log[], network: Networkish = 1): Promise<ProcessBindingResponse> {\n const bindings = []\n for (const log of logs) {\n const binding = this.buildLogBinding(log, network)\n if (!binding) {\n throw Error('Invalid test log: ' + JSON.stringify(log))\n }\n bindings.push(binding)\n }\n return this.processLogs({\n bindings: bindings,\n })\n }\n\n buildLogBinding(log: Log, network: Networkish = 1): DataBinding | undefined {\n for (const contract of this.contractConfig) {\n if (contract.contract?.chainId !== getNetwork(network).chainId.toString()) {\n continue\n }\n if (log.address.toLowerCase() !== contract.contract?.address.toLowerCase()) {\n continue\n }\n for (const config of contract.logConfigs) {\n for (const filter of config.filters) {\n // if (filter.topics.length != log.topics.length) {\n // continue\n // }\n\n let match = true\n for (const topicIdx in filter.topics) {\n const logTopic = log.topics[topicIdx]\n const possibleTopic = filter.topics[topicIdx].hashes\n if (possibleTopic.length === 0) {\n // match all\n continue\n }\n if (possibleTopic.find((e) => e.toLowerCase() === logTopic.toLowerCase())) {\n // find one\n continue\n }\n match = false\n break\n }\n if (match) {\n return {\n data: {\n raw: toBytes(log),\n },\n handlerId: config.handlerId,\n handlerType: HandlerType.ETH_LOG,\n }\n }\n }\n }\n }\n return undefined\n }\n\n testBlock(block: Partial<Block> & { number: number }, network: Networkish = 1): Promise<ProcessBindingResponse> {\n return this.testBlocks([block], network)\n }\n\n testBlocks(blocks: Partial<Block> & { number: number }[], network: Networkish = 1) {\n const bindings = []\n for (const block of blocks) {\n const binding = this.buildBlockBinding(block, network)\n if (!binding) {\n throw Error('Invalid test block: ' + JSON.stringify(block))\n }\n bindings.push(binding)\n }\n return this.processBlocks({\n blockBindings: bindings,\n })\n }\n\n buildBlockBinding(block: Partial<Block> & { number: number }, network: Networkish = 1): BlockBinding {\n const binding: BlockBinding = {\n block: {\n raw: toBytes(block),\n },\n handlerIds: [],\n }\n for (const contract of this.contractConfig) {\n if (contract.contract?.chainId !== getNetwork(network).chainId.toString()) {\n continue\n }\n const longBlockNumber = Long.fromNumber(block.number)\n if (longBlockNumber < contract.startBlock) {\n continue\n }\n if (contract.endBlock !== Long.ZERO && longBlockNumber >= contract.endBlock) {\n continue\n }\n\n for (const config of contract.blockConfigs) {\n binding.handlerIds.push(config.handlerId)\n }\n }\n return binding\n }\n\n processBindings(request: ProcessBindingsRequest, context: CallContext): Promise<ProcessBindingResponse> {\n return this.service.processBindings(request, context)\n }\n}\n\nfunction toBytes(obj: any): Uint8Array {\n const logJsonStr = JSON.stringify(obj)\n const raw = new Uint8Array(logJsonStr.length)\n for (let i = 0; i < logJsonStr.length; i++) {\n raw[i] = logJsonStr.charCodeAt(i)\n }\n return raw\n}\n"]}
1
+ {"version":3,"file":"test-processor-server.js","sourceRoot":"","sources":["../../src/testing/test-processor-server.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BlockBinding,\n ContractConfig,\n DataBinding,\n HandlerType,\n ProcessBindingResponse,\n ProcessBindingsRequest,\n ProcessBlocksRequest,\n ProcessConfigRequest,\n ProcessConfigResponse,\n ProcessInstructionsRequest,\n ProcessorServiceImpl,\n ProcessorServiceImplementation,\n ProcessorState,\n ProcessTransactionsRequest,\n setProvider,\n StartRequest,\n Trace,\n} from '@sentio/sdk'\nimport { CallContext } from 'nice-grpc-common'\nimport { Empty } from '../gen/google/protobuf/empty'\nimport { ChainConfig } from '../chain-config'\nimport { CHAIN_MAP } from '../utils/chain'\nimport { Block, Log } from '@ethersproject/abstract-provider'\nimport Long from 'long'\nimport { getNetwork, Networkish } from '@ethersproject/providers'\n\nexport const TEST_CONTEXT: CallContext = <CallContext>{}\n\nfunction cleanTest() {\n global.PROCESSOR_STATE = new ProcessorState()\n}\n\nexport class TestProcessorServer implements ProcessorServiceImplementation {\n service: ProcessorServiceImpl\n contractConfig: ContractConfig[]\n\n constructor(loader: () => void, httpEndpoints: Record<string, string> = {}) {\n cleanTest()\n\n this.service = new ProcessorServiceImpl(loader)\n const dummyConfig: Record<string, ChainConfig> = {}\n\n for (const k in CHAIN_MAP) {\n const http = httpEndpoints[k] || ''\n dummyConfig[k] = {\n ChainID: k,\n Https: [http],\n }\n }\n\n setProvider(dummyConfig)\n }\n\n async start(request: StartRequest = { templateInstances: [] }, context = TEST_CONTEXT): Promise<Empty> {\n const res = await this.service.start(request, context)\n this.contractConfig = (await this.getConfig({})).contractConfigs\n return res\n }\n\n stop(request: Empty, context = TEST_CONTEXT): Promise<Empty> {\n return this.service.stop(request, context)\n }\n\n getConfig(request: ProcessConfigRequest, context = TEST_CONTEXT): Promise<ProcessConfigResponse> {\n return this.service.getConfig(request, context)\n }\n\n processBlocks(request: ProcessBlocksRequest, context = TEST_CONTEXT): Promise<ProcessBindingResponse> {\n return this.service.processBlocks(request, context)\n }\n\n processInstructions(request: ProcessInstructionsRequest, context = TEST_CONTEXT): Promise<ProcessBindingResponse> {\n return this.service.processInstructions(request, context)\n }\n\n processLogs(request: ProcessBindingsRequest, context = TEST_CONTEXT): Promise<ProcessBindingResponse> {\n return this.service.processLogs(request, context)\n }\n\n processTraces(request: ProcessBindingsRequest, context: CallContext = TEST_CONTEXT): Promise<ProcessBindingResponse> {\n return this.service.processTraces(request, context)\n }\n\n processTransactions(request: ProcessTransactionsRequest, context = TEST_CONTEXT): Promise<ProcessBindingResponse> {\n return this.service.processTransactions(request, context)\n }\n\n testTrace(trace: Trace, network: Networkish = 1): Promise<ProcessBindingResponse> {\n return this.testTraces([trace], network)\n }\n\n testTraces(traces: Trace[], network: Networkish = 1): Promise<ProcessBindingResponse> {\n const bindings = []\n for (const trace of traces) {\n const binding = this.buildTraceBinding(trace, network)\n if (!binding) {\n throw Error('Invalid test trace: ' + JSON.stringify(trace))\n }\n bindings.push(binding)\n }\n return this.processTraces({\n bindings: bindings,\n })\n }\n\n buildTraceBinding(trace: Trace, network: Networkish = 1): DataBinding | undefined {\n if (trace.type !== 'call' || !trace.action.input) {\n throw Error('Invalid test trace: ' + JSON.stringify(trace))\n }\n const signature = trace.action.input.slice(0, 10)\n\n for (const contract of this.contractConfig) {\n if (contract.contract?.chainId !== getNetwork(network).chainId.toString()) {\n continue\n }\n if (trace.action.to?.toLowerCase() !== contract.contract?.address.toLowerCase()) {\n continue\n }\n for (const config of contract.traceConfigs) {\n if (config.signature == signature) {\n return {\n data: {\n raw: toBytes(trace),\n },\n handlerId: config.handlerId,\n handlerType: HandlerType.ETH_TRACE,\n }\n }\n }\n }\n return undefined\n }\n\n testLog(log: Log, network: Networkish = 1): Promise<ProcessBindingResponse> {\n return this.testLogs([log], network)\n }\n\n testLogs(logs: Log[], network: Networkish = 1): Promise<ProcessBindingResponse> {\n const bindings = []\n for (const log of logs) {\n const binding = this.buildLogBinding(log, network)\n if (!binding) {\n throw Error('Invalid test log: ' + JSON.stringify(log))\n }\n bindings.push(binding)\n }\n return this.processLogs({\n bindings: bindings,\n })\n }\n\n buildLogBinding(log: Log, network: Networkish = 1): DataBinding | undefined {\n for (const contract of this.contractConfig) {\n if (contract.contract?.chainId !== getNetwork(network).chainId.toString()) {\n continue\n }\n if (log.address.toLowerCase() !== contract.contract?.address.toLowerCase()) {\n continue\n }\n for (const config of contract.logConfigs) {\n for (const filter of config.filters) {\n // if (filter.topics.length != log.topics.length) {\n // continue\n // }\n\n let match = true\n for (const topicIdx in filter.topics) {\n const logTopic = log.topics[topicIdx]\n const possibleTopic = filter.topics[topicIdx].hashes\n if (possibleTopic.length === 0) {\n // match all\n continue\n }\n if (possibleTopic.find((e) => e.toLowerCase() === logTopic.toLowerCase())) {\n // find one\n continue\n }\n match = false\n break\n }\n if (match) {\n return {\n data: {\n raw: toBytes(log),\n },\n handlerId: config.handlerId,\n handlerType: HandlerType.ETH_LOG,\n }\n }\n }\n }\n }\n return undefined\n }\n\n testBlock(block: Partial<Block> & { number: number }, network: Networkish = 1): Promise<ProcessBindingResponse> {\n return this.testBlocks([block], network)\n }\n\n testBlocks(blocks: Partial<Block> & { number: number }[], network: Networkish = 1) {\n const bindings = []\n for (const block of blocks) {\n const binding = this.buildBlockBinding(block, network)\n if (!binding) {\n throw Error('Invalid test block: ' + JSON.stringify(block))\n }\n bindings.push(binding)\n }\n return this.processBlocks({\n blockBindings: bindings,\n })\n }\n\n buildBlockBinding(block: Partial<Block> & { number: number }, network: Networkish = 1): BlockBinding {\n const binding: BlockBinding = {\n block: {\n raw: toBytes(block),\n },\n handlerIds: [],\n }\n for (const contract of this.contractConfig) {\n if (contract.contract?.chainId !== getNetwork(network).chainId.toString()) {\n continue\n }\n const longBlockNumber = Long.fromNumber(block.number)\n if (longBlockNumber < contract.startBlock) {\n continue\n }\n if (contract.endBlock !== Long.ZERO && longBlockNumber >= contract.endBlock) {\n continue\n }\n\n for (const config of contract.blockConfigs) {\n binding.handlerIds.push(config.handlerId)\n }\n }\n return binding\n }\n\n processBindings(\n request: ProcessBindingsRequest,\n context: CallContext = TEST_CONTEXT\n ): Promise<ProcessBindingResponse> {\n return this.service.processBindings(request, context)\n }\n}\n\nfunction toBytes(obj: any): Uint8Array {\n const logJsonStr = JSON.stringify(obj)\n const raw = new Uint8Array(logJsonStr.length)\n for (let i = 0; i < logJsonStr.length; i++) {\n raw[i] = logJsonStr.charCodeAt(i)\n }\n return raw\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.loadTestProvidersFromEnv = void 0;
4
4
  const chain_1 = require("../utils/chain");
5
- const sdk_1 = require("@sentio/sdk");
5
+ const provider_1 = require("../provider");
6
6
  function loadTestProvidersFromEnv(requiredChainIds) {
7
7
  const dummyConfig = {};
8
8
  const found = [];
@@ -21,7 +21,7 @@ function loadTestProvidersFromEnv(requiredChainIds) {
21
21
  Https: [http],
22
22
  };
23
23
  }
24
- (0, sdk_1.setProvider)(dummyConfig);
24
+ (0, provider_1.setProvider)(dummyConfig);
25
25
  for (const id of requiredChainIds) {
26
26
  if (!found.includes(id)) {
27
27
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"test-provider.js","sourceRoot":"","sources":["../../src/testing/test-provider.ts"],"names":[],"mappings":";;;AACA,0CAA0C;AAC1C,qCAAyC;AAEzC,SAAgB,wBAAwB,CAAC,gBAAmC;IAC1E,MAAM,WAAW,GAAgC,EAAE,CAAA;IACnD,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;QACpC,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,CAAA;KACtC;IAED,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAS,CAAC,EAAE;QACtC,MAAM,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAA;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,IAAI,EAAE;YACT,SAAQ;SACT;QACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACb,WAAW,CAAC,CAAC,CAAC,GAAG;YACf,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC,IAAI,CAAC;SACd,CAAA;KACF;IAED,IAAA,iBAAW,EAAC,WAAW,CAAC,CAAA;IACxB,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE;QACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;YACvB,OAAO,KAAK,CAAA;SACb;KACF;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AA5BD,4DA4BC","sourcesContent":["import { ChainConfig } from '../chain-config'\nimport { CHAIN_MAP } from '../utils/chain'\nimport { setProvider } from '@sentio/sdk'\n\nexport function loadTestProvidersFromEnv(requiredChainIds: string[] | string): boolean {\n const dummyConfig: Record<string, ChainConfig> = {}\n const found: string[] = []\n\n if (!Array.isArray(requiredChainIds)) {\n requiredChainIds = [requiredChainIds]\n }\n\n for (const k of Object.keys(CHAIN_MAP)) {\n const envKey = 'TEST_ENDPOINT_' + k\n const http = process.env[envKey]\n if (!http) {\n continue\n }\n found.push(k)\n dummyConfig[k] = {\n ChainID: k,\n Https: [http],\n }\n }\n\n setProvider(dummyConfig)\n for (const id of requiredChainIds) {\n if (!found.includes(id)) {\n return false\n }\n }\n return true\n}\n"]}
1
+ {"version":3,"file":"test-provider.js","sourceRoot":"","sources":["../../src/testing/test-provider.ts"],"names":[],"mappings":";;;AACA,0CAA0C;AAC1C,0CAAyC;AAEzC,SAAgB,wBAAwB,CAAC,gBAAmC;IAC1E,MAAM,WAAW,GAAgC,EAAE,CAAA;IACnD,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;QACpC,gBAAgB,GAAG,CAAC,gBAAgB,CAAC,CAAA;KACtC;IAED,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAS,CAAC,EAAE;QACtC,MAAM,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAA;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,IAAI,EAAE;YACT,SAAQ;SACT;QACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACb,WAAW,CAAC,CAAC,CAAC,GAAG;YACf,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC,IAAI,CAAC;SACd,CAAA;KACF;IAED,IAAA,sBAAW,EAAC,WAAW,CAAC,CAAA;IACxB,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE;QACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;YACvB,OAAO,KAAK,CAAA;SACb;KACF;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AA5BD,4DA4BC","sourcesContent":["import { ChainConfig } from '../chain-config'\nimport { CHAIN_MAP } from '../utils/chain'\nimport { setProvider } from '../provider'\n\nexport function loadTestProvidersFromEnv(requiredChainIds: string[] | string): boolean {\n const dummyConfig: Record<string, ChainConfig> = {}\n const found: string[] = []\n\n if (!Array.isArray(requiredChainIds)) {\n requiredChainIds = [requiredChainIds]\n }\n\n for (const k of Object.keys(CHAIN_MAP)) {\n const envKey = 'TEST_ENDPOINT_' + k\n const http = process.env[envKey]\n if (!http) {\n continue\n }\n found.push(k)\n dummyConfig[k] = {\n ChainID: k,\n Https: [http],\n }\n }\n\n setProvider(dummyConfig)\n for (const id of requiredChainIds) {\n if (!found.includes(id)) {\n return false\n }\n }\n return true\n}\n"]}
@@ -1,12 +1,8 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  const chai_1 = require("chai");
7
- const long_1 = __importDefault(require("long"));
8
4
  const util_1 = require("util");
9
- const utils_1 = require("../utils");
5
+ const __1 = require("..");
10
6
  const testing_1 = require("../testing");
11
7
  describe('Test Aptos Example', () => {
12
8
  const service = new testing_1.TestProcessorServer(() => {
@@ -21,19 +17,54 @@ describe('Test Aptos Example', () => {
21
17
  });
22
18
  test('Check souffl3 transaction dispatch', async () => {
23
19
  const request = {
24
- chainId: utils_1.chain.APTOS_TESTNET_ID,
25
- transactions: [
20
+ bindings: [
21
+ {
22
+ data: {
23
+ raw: new util_1.TextEncoder().encode(JSON.stringify(testData)),
24
+ },
25
+ handlerId: 0,
26
+ handlerType: __1.HandlerType.APT_CALL,
27
+ },
28
+ ],
29
+ };
30
+ const res = await service.processBindings(request);
31
+ (0, chai_1.expect)(res.result?.counters).length(1);
32
+ (0, chai_1.expect)(res.result?.gauges).length(0);
33
+ (0, chai_1.expect)(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(18483034);
34
+ });
35
+ test('Check souffl3 function call dispatch', async () => {
36
+ const request = {
37
+ bindings: [
26
38
  {
27
- raw: new util_1.TextEncoder().encode(JSON.stringify(testData)),
28
- programAccountId: '4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',
29
- slot: long_1.default.fromNumber(12345),
39
+ data: {
40
+ raw: new util_1.TextEncoder().encode(JSON.stringify(testData)),
41
+ },
42
+ handlerId: 1,
43
+ handlerType: __1.HandlerType.APT_CALL,
44
+ },
45
+ ],
46
+ };
47
+ const res = await service.processBindings(request);
48
+ (0, chai_1.expect)(res.result?.counters).length(2);
49
+ (0, chai_1.expect)(res.result?.gauges).length(0);
50
+ (0, chai_1.expect)(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(18483034);
51
+ });
52
+ test('Check souffl3 event dispatch', async () => {
53
+ const request = {
54
+ bindings: [
55
+ {
56
+ data: {
57
+ raw: new util_1.TextEncoder().encode(JSON.stringify(testData.events[1])),
58
+ },
59
+ handlerId: 0,
60
+ handlerType: __1.HandlerType.APT_EVENT,
30
61
  },
31
62
  ],
32
63
  };
33
- const res = await service.processTransactions(request);
64
+ const res = await service.processBindings(request);
34
65
  (0, chai_1.expect)(res.result?.counters).length(1);
35
66
  (0, chai_1.expect)(res.result?.gauges).length(0);
36
- (0, chai_1.expect)(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(12345);
67
+ (0, chai_1.expect)(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(18483034);
37
68
  });
38
69
  });
39
70
  const testData = {
@@ -81,6 +112,7 @@ const testData = {
81
112
  },
82
113
  },
83
114
  {
115
+ version: '18483034',
84
116
  guid: {
85
117
  creation_number: '2',
86
118
  account_address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',
@@ -1 +1 @@
1
- {"version":3,"file":"aptos.test.js","sourceRoot":"","sources":["../../src/tests/aptos.test.ts"],"names":[],"mappings":";;;;;AAAA,+BAA6B;AAC7B,gDAAuB;AACvB,+BAAkC;AAElC,oCAAgC;AAEhC,wCAAgD;AAEhD,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,MAAM,OAAO,GAAG,IAAI,6BAAmB,CAAC,GAAG,EAAE;QAC3C,OAAO,CAAC,WAAW,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,OAAO,GAA+B;YAC1C,OAAO,EAAE,aAAK,CAAC,gBAAgB;YAC/B,YAAY,EAAE;gBACZ;oBACE,GAAG,EAAE,IAAI,kBAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACvD,gBAAgB,EAAE,kEAAkE;oBACpF,IAAI,EAAE,cAAI,CAAC,UAAU,CAAC,KAAK,CAAC;iBAC7B;aACF;SACF,CAAA;QACD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;QACtD,IAAA,aAAM,EAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACtC,IAAA,aAAM,EAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACpC,IAAA,aAAM,EAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC5E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAG;IACf,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,oEAAoE;IAC1E,iBAAiB,EAAE,oEAAoE;IACvF,eAAe,EAAE,oEAAoE;IACrF,qBAAqB,EAAE,IAAI;IAC3B,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,uBAAuB;IAClC,qBAAqB,EAAE,oEAAoE;IAC3F,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,oEAAoE;IAC5E,eAAe,EAAE,IAAI;IACrB,cAAc,EAAE,OAAO;IACvB,cAAc,EAAE,GAAG;IACnB,yBAAyB,EAAE,YAAY;IACvC,OAAO,EAAE;QACP,QAAQ,EAAE,wGAAwG;QAClH,cAAc,EAAE,CAAC,4BAA4B,CAAC;QAC9C,SAAS,EAAE;YACT,oEAAoE;YACpE,oEAAoE;YACpE,mBAAmB;YACnB,GAAG;SACJ;QACD,IAAI,EAAE,wBAAwB;KAC/B;IACD,SAAS,EAAE;QACT,UAAU,EAAE,oEAAoE;QAChF,SAAS,EACP,oIAAoI;QACtI,IAAI,EAAE,mBAAmB;KAC1B;IACD,MAAM,EAAE;QACN;YACE,IAAI,EAAE;gBACJ,eAAe,EAAE,GAAG;gBACpB,eAAe,EAAE,oEAAoE;aACtF;YACD,eAAe,EAAE,IAAI;YACrB,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE;gBACJ,MAAM,EAAE,GAAG;aACZ;SACF;QACD;YACE,IAAI,EAAE;gBACJ,eAAe,EAAE,GAAG;gBACpB,eAAe,EAAE,oEAAoE;aACtF;YACD,eAAe,EAAE,IAAI;YACrB,IAAI,EAAE,yBAAyB;YAC/B,IAAI,EAAE;gBACJ,MAAM,EAAE,GAAG;aACZ;SACF;QACD;YACE,IAAI,EAAE;gBACJ,eAAe,EAAE,GAAG;gBACpB,eAAe,EAAE,oEAAoE;aACtF;YACD,eAAe,EAAE,GAAG;YACpB,IAAI,EAAE,kCAAkC;YACxC,IAAI,EAAE;gBACJ,WAAW,EACT,2TAA2T;gBAC7T,EAAE,EAAE;oBACF,UAAU,EAAE,mBAAmB;oBAC/B,OAAO,EAAE,oEAAoE;oBAC7E,IAAI,EAAE,sBAAsB;iBAC7B;gBACD,OAAO,EAAE,cAAc;gBACvB,iBAAiB,EAAE;oBACjB,WAAW,EAAE,IAAI;oBACjB,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,IAAI;oBACb,GAAG,EAAE,IAAI;iBACV;gBACD,IAAI,EAAE,sBAAsB;gBAC5B,aAAa,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAClC,cAAc,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;gBACrC,eAAe,EAAE,CAAC,0BAA0B,EAAE,MAAM,CAAC;gBACrD,qBAAqB,EAAE,oEAAoE;gBAC3F,0BAA0B,EAAE,KAAK;gBACjC,wBAAwB,EAAE,IAAI;gBAC9B,GAAG,EAAE,sHAAsH;aAC5H;SACF;QACD;YACE,IAAI,EAAE;gBACJ,eAAe,EAAE,GAAG;gBACpB,eAAe,EAAE,oEAAoE;aACtF;YACD,eAAe,EAAE,IAAI;YACrB,IAAI,EAAE,0BAA0B;YAChC,IAAI,EAAE;gBACJ,MAAM,EAAE,GAAG;gBACX,EAAE,EAAE;oBACF,gBAAgB,EAAE,GAAG;oBACrB,aAAa,EAAE;wBACb,UAAU,EAAE,mBAAmB;wBAC/B,OAAO,EAAE,oEAAoE;wBAC7E,IAAI,EAAE,sBAAsB;qBAC7B;iBACF;aACF;SACF;KACF;IACD,SAAS,EAAE,kBAAkB;IAC7B,IAAI,EAAE,kBAAkB;CACzB,CAAA","sourcesContent":["import { expect } from 'chai'\nimport Long from 'long'\nimport { TextEncoder } from 'util'\nimport { ProcessTransactionsRequest } from '..'\nimport { chain } from '../utils'\n\nimport { TestProcessorServer } from '../testing'\n\ndescribe('Test Aptos Example', () => {\n const service = new TestProcessorServer(() => {\n require('./souffl3')\n })\n\n beforeAll(async () => {\n await service.start({ templateInstances: [] })\n })\n\n test('check configuration ', async () => {\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(1)\n })\n\n test('Check souffl3 transaction dispatch', async () => {\n const request: ProcessTransactionsRequest = {\n chainId: chain.APTOS_TESTNET_ID,\n transactions: [\n {\n raw: new TextEncoder().encode(JSON.stringify(testData)),\n programAccountId: '4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n slot: Long.fromNumber(12345),\n },\n ],\n }\n const res = await service.processTransactions(request)\n expect(res.result?.counters).length(1)\n expect(res.result?.gauges).length(0)\n expect(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(12345)\n })\n})\n\nconst testData = {\n version: '18483034',\n hash: '0xbf4df6f390546a793ba9b7caff120002b3257986dbea9c697fd64acf7dfeb052',\n state_change_hash: '0x6063039cca5a1eb33d3986d3665fc783238579961eaa4746c41e25fa4f72aac6',\n event_root_hash: '0x425e39bcf994672108f83c34f637e84166af7ecedcbe26aed0dff0d62da8055d',\n state_checkpoint_hash: null,\n gas_used: '854',\n success: true,\n vm_status: 'Executed successfully',\n accumulator_root_hash: '0x47aa479d9e15993ea2abe04043c89186fb5da0b5eb8b5c6d18bd55d5f0c2c877',\n changes: [],\n sender: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n sequence_number: '30',\n max_gas_amount: '20000',\n gas_unit_price: '1',\n expiration_timestamp_secs: '1663144544',\n payload: {\n function: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807::SouffleChefCampaign::pull_token_v2',\n type_arguments: ['0x1::aptos_coin::AptosCoin'],\n arguments: [\n '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n 'Souffl3 BlueBerry',\n '1',\n ],\n type: 'entry_function_payload',\n },\n signature: {\n public_key: '0x6c3f579afbf8a728827385039f7604ec1d06e5c802d8f9689ee8ec9d349fedc5',\n signature:\n '0xd2db95052e774f095d924030a50c29325a17e8d69d35c748f45bb0e22eb7d3b9e47545c98bd7130fd3ef46cbedc30c9aaeaf39c2d922ee8e7d578c0b1e76f30b',\n type: 'ed25519_signature',\n },\n events: [\n {\n guid: {\n creation_number: '3',\n account_address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n },\n sequence_number: '10',\n type: '0x1::coin::WithdrawEvent',\n data: {\n amount: '1',\n },\n },\n {\n guid: {\n creation_number: '2',\n account_address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n },\n sequence_number: '11',\n type: '0x1::coin::DepositEvent',\n data: {\n amount: '1',\n },\n },\n {\n guid: {\n creation_number: '9',\n account_address: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',\n },\n sequence_number: '9',\n type: '0x3::token::CreateTokenDataEvent',\n data: {\n description:\n 'Souffl3 offers a one-stop marketplace for the launch, listing, and trading of NFT assets on APTOS.\\nWebsite:https://souffl3.com/\\nEveryone can win through our Bake Off campaign on the Aptos Testnet, rewards including Souffl3 Genesis NFT and whitelists of other collab projects, everyone is welcome to participate!',\n id: {\n collection: 'Souffl3 BlueBerry',\n creator: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',\n name: 'Souffl3 BlueBerry #2',\n },\n maximum: '999999999999',\n mutability_config: {\n description: true,\n maximum: true,\n properties: true,\n royalty: true,\n uri: true,\n },\n name: 'Souffl3 BlueBerry #2',\n property_keys: ['author', 'point'],\n property_types: ['string', 'integer'],\n property_values: ['0x33454e4a4f59204c616273', '0x30'],\n royalty_payee_address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n royalty_points_denominator: '100',\n royalty_points_numerator: '20',\n uri: 'https://y3x4txhvirx5zl57efzbl6dg7psaier5q35hhwuqwzjwuahrycya.arweave.net/xu_J3PVEb9yvvyFyFfhm--QEEj2G-nPakLZTagDxwLA',\n },\n },\n {\n guid: {\n creation_number: '2',\n account_address: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',\n },\n sequence_number: '27',\n type: '0x3::token::DepositEvent',\n data: {\n amount: '1',\n id: {\n property_version: '0',\n token_data_id: {\n collection: 'Souffl3 BlueBerry',\n creator: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',\n name: 'Souffl3 BlueBerry #2',\n },\n },\n },\n },\n ],\n timestamp: '1663143945131218',\n type: 'user_transaction',\n}\n"]}
1
+ {"version":3,"file":"aptos.test.js","sourceRoot":"","sources":["../../src/tests/aptos.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from 'chai'\nimport { TextEncoder } from 'util'\nimport { HandlerType, ProcessBindingsRequest } from '..'\n\nimport { TestProcessorServer } from '../testing'\n\ndescribe('Test Aptos Example', () => {\n const service = new TestProcessorServer(() => {\n require('./souffl3')\n })\n\n beforeAll(async () => {\n await service.start({ templateInstances: [] })\n })\n\n test('check configuration ', async () => {\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(1)\n })\n\n test('Check souffl3 transaction dispatch', async () => {\n const request: ProcessBindingsRequest = {\n bindings: [\n {\n data: {\n raw: new TextEncoder().encode(JSON.stringify(testData)),\n },\n handlerId: 0,\n handlerType: HandlerType.APT_CALL,\n },\n ],\n }\n const res = await service.processBindings(request)\n expect(res.result?.counters).length(1)\n expect(res.result?.gauges).length(0)\n expect(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(18483034)\n })\n\n test('Check souffl3 function call dispatch', async () => {\n const request: ProcessBindingsRequest = {\n bindings: [\n {\n data: {\n raw: new TextEncoder().encode(JSON.stringify(testData)),\n },\n handlerId: 1,\n handlerType: HandlerType.APT_CALL,\n },\n ],\n }\n const res = await service.processBindings(request)\n expect(res.result?.counters).length(2)\n expect(res.result?.gauges).length(0)\n expect(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(18483034)\n })\n\n test('Check souffl3 event dispatch', async () => {\n const request: ProcessBindingsRequest = {\n bindings: [\n {\n data: {\n raw: new TextEncoder().encode(JSON.stringify(testData.events[1])),\n },\n handlerId: 0,\n handlerType: HandlerType.APT_EVENT,\n },\n ],\n }\n const res = await service.processBindings(request)\n expect(res.result?.counters).length(1)\n expect(res.result?.gauges).length(0)\n expect(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(18483034)\n })\n})\n\nconst testData = {\n version: '18483034',\n hash: '0xbf4df6f390546a793ba9b7caff120002b3257986dbea9c697fd64acf7dfeb052',\n state_change_hash: '0x6063039cca5a1eb33d3986d3665fc783238579961eaa4746c41e25fa4f72aac6',\n event_root_hash: '0x425e39bcf994672108f83c34f637e84166af7ecedcbe26aed0dff0d62da8055d',\n state_checkpoint_hash: null,\n gas_used: '854',\n success: true,\n vm_status: 'Executed successfully',\n accumulator_root_hash: '0x47aa479d9e15993ea2abe04043c89186fb5da0b5eb8b5c6d18bd55d5f0c2c877',\n changes: [],\n sender: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n sequence_number: '30',\n max_gas_amount: '20000',\n gas_unit_price: '1',\n expiration_timestamp_secs: '1663144544',\n payload: {\n function: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807::SouffleChefCampaign::pull_token_v2',\n type_arguments: ['0x1::aptos_coin::AptosCoin'],\n arguments: [\n '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n 'Souffl3 BlueBerry',\n '1',\n ],\n type: 'entry_function_payload',\n },\n signature: {\n public_key: '0x6c3f579afbf8a728827385039f7604ec1d06e5c802d8f9689ee8ec9d349fedc5',\n signature:\n '0xd2db95052e774f095d924030a50c29325a17e8d69d35c748f45bb0e22eb7d3b9e47545c98bd7130fd3ef46cbedc30c9aaeaf39c2d922ee8e7d578c0b1e76f30b',\n type: 'ed25519_signature',\n },\n events: [\n {\n guid: {\n creation_number: '3',\n account_address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n },\n sequence_number: '10',\n type: '0x1::coin::WithdrawEvent',\n data: {\n amount: '1',\n },\n },\n {\n version: '18483034',\n guid: {\n creation_number: '2',\n account_address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n },\n sequence_number: '11',\n type: '0x1::coin::DepositEvent',\n data: {\n amount: '1',\n },\n },\n {\n guid: {\n creation_number: '9',\n account_address: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',\n },\n sequence_number: '9',\n type: '0x3::token::CreateTokenDataEvent',\n data: {\n description:\n 'Souffl3 offers a one-stop marketplace for the launch, listing, and trading of NFT assets on APTOS.\\nWebsite:https://souffl3.com/\\nEveryone can win through our Bake Off campaign on the Aptos Testnet, rewards including Souffl3 Genesis NFT and whitelists of other collab projects, everyone is welcome to participate!',\n id: {\n collection: 'Souffl3 BlueBerry',\n creator: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',\n name: 'Souffl3 BlueBerry #2',\n },\n maximum: '999999999999',\n mutability_config: {\n description: true,\n maximum: true,\n properties: true,\n royalty: true,\n uri: true,\n },\n name: 'Souffl3 BlueBerry #2',\n property_keys: ['author', 'point'],\n property_types: ['string', 'integer'],\n property_values: ['0x33454e4a4f59204c616273', '0x30'],\n royalty_payee_address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n royalty_points_denominator: '100',\n royalty_points_numerator: '20',\n uri: 'https://y3x4txhvirx5zl57efzbl6dg7psaier5q35hhwuqwzjwuahrycya.arweave.net/xu_J3PVEb9yvvyFyFfhm--QEEj2G-nPakLZTagDxwLA',\n },\n },\n {\n guid: {\n creation_number: '2',\n account_address: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',\n },\n sequence_number: '27',\n type: '0x3::token::DepositEvent',\n data: {\n amount: '1',\n id: {\n property_version: '0',\n token_data_id: {\n collection: 'Souffl3 BlueBerry',\n creator: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',\n name: 'Souffl3 BlueBerry #2',\n },\n },\n },\n },\n ],\n timestamp: '1663143945131218',\n type: 'user_transaction',\n}\n"]}
@@ -1,18 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const sdk_1 = require("@sentio/sdk");
4
- class Souffl3 extends sdk_1.AptosBaseProcessor {
5
- static bind(options) {
6
- if (options && !options.name) {
7
- options.name = 'souffl3';
8
- }
9
- return new Souffl3(options);
10
- }
11
- }
12
- Souffl3.bind({
13
- startBlock: 6604913,
14
- address: '4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',
15
- }).onTransaction((txn, ctx) => {
4
+ sdk_1.aptos.AptosBaseProcessor.bind({
5
+ name: 'souffl3',
6
+ startVersion: 6604913,
7
+ address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',
8
+ })
9
+ .onTransaction((txn, ctx) => {
16
10
  if (txn.events) {
17
11
  for (const event of txn.events) {
18
12
  if (event && event.type === '0x3::token::DepositEvent') {
@@ -20,5 +14,18 @@ Souffl3.bind({
20
14
  }
21
15
  }
22
16
  }
17
+ })
18
+ .onEntryFunctionCall((call, ctx) => {
19
+ ctx.meter.Counter('call_num').add(1);
20
+ if (call.arguments.length > 3 && call.type_arguments.length > 0) {
21
+ ctx.meter.Counter('arg').add(parseInt(call.arguments[3]), { type: call.type_arguments[0] });
22
+ }
23
+ }, {
24
+ function: 'SouffleChefCampaign::pull_token_v2',
25
+ })
26
+ .onEvent((event, ctx) => {
27
+ ctx.meter.Counter('evt_num').add(1);
28
+ }, {
29
+ type: '0x1::coin::DepositEvent',
23
30
  });
24
31
  //# sourceMappingURL=souffl3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"souffl3.js","sourceRoot":"","sources":["../../src/tests/souffl3.ts"],"names":[],"mappings":";;AAAA,qCAAkE;AAElE,MAAM,OAAQ,SAAQ,wBAAkB;IACtC,MAAM,CAAC,IAAI,CAAC,OAAyB;QACnC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAC5B,OAAO,CAAC,IAAI,GAAG,SAAS,CAAA;SACzB;QACD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;CACF;AAED,OAAO,CAAC,IAAI,CAAC;IACX,UAAU,EAAE,OAAO;IACnB,OAAO,EAAE,kEAAkE;CAC5E,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC5B,IAAI,GAAG,CAAC,MAAM,EAAE;QACd,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE;YAC9B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,0BAA0B,EAAE;gBACtD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;aACxE;SACF;KACF;AACH,CAAC,CAAC,CAAA","sourcesContent":["import { AptosBindOptions, AptosBaseProcessor } from '@sentio/sdk'\n\nclass Souffl3 extends AptosBaseProcessor {\n static bind(options: AptosBindOptions): Souffl3 {\n if (options && !options.name) {\n options.name = 'souffl3'\n }\n return new Souffl3(options)\n }\n}\n\nSouffl3.bind({\n startBlock: 6604913,\n address: '4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n}).onTransaction((txn, ctx) => {\n if (txn.events) {\n for (const event of txn.events) {\n if (event && event.type === '0x3::token::DepositEvent') {\n ctx.meter.Counter('deposit_token_count').add(Number(event.data.amount))\n }\n }\n }\n})\n"]}
1
+ {"version":3,"file":"souffl3.js","sourceRoot":"","sources":["../../src/tests/souffl3.ts"],"names":[],"mappings":";;AAAA,qCAAmC;AAEnC,WAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC;IAC5B,IAAI,EAAE,SAAS;IACf,YAAY,EAAE,OAAO;IACrB,OAAO,EAAE,oEAAoE;CAC9E,CAAC;KACC,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC1B,IAAI,GAAG,CAAC,MAAM,EAAE;QACd,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE;YAC9B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,0BAA0B,EAAE;gBACtD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;aACxE;SACF;KACF;AACH,CAAC,CAAC;KACD,mBAAmB,CAClB,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IACZ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACpC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;QAC/D,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;KAC5F;AACH,CAAC,EACD;IACE,QAAQ,EAAE,oCAAoC;CAC/C,CACF;KACA,OAAO,CACN,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACb,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACrC,CAAC,EACD;IACE,IAAI,EAAE,yBAAyB;CAChC,CACF,CAAA","sourcesContent":["import { aptos } from '@sentio/sdk'\n\naptos.AptosBaseProcessor.bind({\n name: 'souffl3',\n startVersion: 6604913,\n address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n})\n .onTransaction((txn, ctx) => {\n if (txn.events) {\n for (const event of txn.events) {\n if (event && event.type === '0x3::token::DepositEvent') {\n ctx.meter.Counter('deposit_token_count').add(Number(event.data.amount))\n }\n }\n }\n })\n .onEntryFunctionCall(\n (call, ctx) => {\n ctx.meter.Counter('call_num').add(1)\n if (call.arguments.length > 3 && call.type_arguments.length > 0) {\n ctx.meter.Counter('arg').add(parseInt(call.arguments[3]), { type: call.type_arguments[0] })\n }\n },\n {\n function: 'SouffleChefCampaign::pull_token_v2',\n }\n )\n .onEvent(\n (event, ctx) => {\n ctx.meter.Counter('evt_num').add(1)\n },\n {\n type: '0x1::coin::DepositEvent',\n }\n )\n"]}
@@ -4,4 +4,5 @@ export declare const SOL_DEVNET_ID = "sol_devnet";
4
4
  export declare const SOL_TESTNENT_ID = "sol_testnet";
5
5
  export declare const SUI_DEVNET_ID = "sui_devnet";
6
6
  export declare const APTOS_TESTNET_ID = "aptos_testnet";
7
+ export declare const APTOS_MAINNET_ID = "aptos_mainnet";
7
8
  export declare function getChainName(chainId: string | number): string;
@@ -2,7 +2,7 @@
2
2
  // copy from https://github.com/DefiLlama/chainlist/blob/main/constants/chainIds.js
3
3
  // and https://besu.hyperledger.org/en/stable/Concepts/NetworkID-And-ChainID/
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.getChainName = exports.APTOS_TESTNET_ID = exports.SUI_DEVNET_ID = exports.SOL_TESTNENT_ID = exports.SOL_DEVNET_ID = exports.SOL_MAINMET_ID = exports.CHAIN_MAP = void 0;
5
+ exports.getChainName = exports.APTOS_MAINNET_ID = exports.APTOS_TESTNET_ID = exports.SUI_DEVNET_ID = exports.SOL_TESTNENT_ID = exports.SOL_DEVNET_ID = exports.SOL_MAINMET_ID = exports.CHAIN_MAP = void 0;
6
6
  exports.CHAIN_MAP = {
7
7
  0: 'kardia',
8
8
  1: 'ethereum',
@@ -90,7 +90,9 @@ exports.CHAIN_MAP[exports.SOL_TESTNENT_ID] = 'solana-test';
90
90
  exports.SUI_DEVNET_ID = 'sui_devnet';
91
91
  exports.CHAIN_MAP[exports.SUI_DEVNET_ID] = 'sui-dev';
92
92
  exports.APTOS_TESTNET_ID = 'aptos_testnet';
93
+ exports.APTOS_MAINNET_ID = 'aptos_mainnet';
93
94
  exports.CHAIN_MAP[exports.APTOS_TESTNET_ID] = 'aptos-test';
95
+ exports.CHAIN_MAP[exports.APTOS_MAINNET_ID] = 'aptos-mainnet';
94
96
  function getChainName(chainId) {
95
97
  if (typeof chainId === 'number') {
96
98
  chainId = chainId.toString();
@@ -1 +1 @@
1
- {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/utils/chain.ts"],"names":[],"mappings":"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","sourcesContent":["// copy from https://github.com/DefiLlama/chainlist/blob/main/constants/chainIds.js\n// and https://besu.hyperledger.org/en/stable/Concepts/NetworkID-And-ChainID/\n\nexport const CHAIN_MAP: Record<string, string> = {\n 0: 'kardia',\n 1: 'ethereum',\n 2: 'expanse',\n 3: 'ropsten',\n 4: 'rinkeby',\n 5: 'goerli',\n 6: 'kotti',\n 8: 'ubiq',\n 10: 'optimism',\n 19: 'songbird',\n 20: 'elastos',\n 25: 'cronos',\n 30: 'rsk',\n 40: 'telos',\n 50: 'xdc',\n 52: 'csc',\n 55: 'zyx',\n 56: 'binance',\n 57: 'syscoin',\n 60: 'gochain',\n 61: 'ethclassic',\n 63: 'mordor',\n 66: 'okexchain',\n 70: 'hoo',\n 82: 'meter',\n 88: 'tomochain',\n 100: 'xdai',\n 106: 'velas',\n 108: 'thundercore',\n 122: 'fuse',\n 128: 'heco',\n 137: 'polygon',\n 200: 'xdaiarb',\n 212: 'astor',\n 246: 'energyweb',\n 250: 'fantom',\n 269: 'hpb',\n 288: 'boba',\n 321: 'kucoin',\n 336: 'shiden',\n 361: 'theta',\n 416: 'sx',\n 534: 'candle',\n 592: 'astar',\n 820: 'callisto',\n 888: 'wanchain',\n 1088: 'metis',\n 1246: 'omchain',\n 1284: 'moonbeam',\n 1285: 'moonriver',\n 2018: 'dev',\n 2020: 'ronin',\n 2222: 'kava',\n 2612: 'ezchain',\n 4181: 'phi',\n 4689: 'iotex',\n 5050: 'xlc',\n 5551: 'nahmii',\n 7777: 'nmactest',\n 8217: 'klaytn',\n 9001: 'evmos',\n 10000: 'smartbch',\n 103090: 'crystaleum',\n 32659: 'fusion',\n 42161: 'arbitrum',\n 42220: 'celo',\n 42262: 'oasis',\n 43114: 'avalanche',\n 71402: 'godwoken',\n 200625: 'akroma',\n 333999: 'polis',\n 11155111: 'sepolia',\n 1313161554: 'aurora',\n 1666600000: 'harmony',\n 11297108109: 'palm',\n 836542336838601: 'curio',\n}\n\nexport const SOL_MAINMET_ID = 'sol_mainnet'\nexport const SOL_DEVNET_ID = 'sol_devnet'\nexport const SOL_TESTNENT_ID = 'sol_testnet'\nCHAIN_MAP[SOL_MAINMET_ID] = 'solana'\nCHAIN_MAP[SOL_DEVNET_ID] = 'solana-dev'\nCHAIN_MAP[SOL_TESTNENT_ID] = 'solana-test'\n\nexport const SUI_DEVNET_ID = 'sui_devnet'\nCHAIN_MAP[SUI_DEVNET_ID] = 'sui-dev'\n\nexport const APTOS_TESTNET_ID = 'aptos_testnet'\nCHAIN_MAP[APTOS_TESTNET_ID] = 'aptos-test'\n\nexport function getChainName(chainId: string | number): string {\n if (typeof chainId === 'number') {\n chainId = chainId.toString()\n }\n const name = CHAIN_MAP[chainId]\n if (name) {\n return name\n }\n return chainId\n}\n"]}
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/utils/chain.ts"],"names":[],"mappings":"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","sourcesContent":["// copy from https://github.com/DefiLlama/chainlist/blob/main/constants/chainIds.js\n// and https://besu.hyperledger.org/en/stable/Concepts/NetworkID-And-ChainID/\n\nexport const CHAIN_MAP: Record<string, string> = {\n 0: 'kardia',\n 1: 'ethereum',\n 2: 'expanse',\n 3: 'ropsten',\n 4: 'rinkeby',\n 5: 'goerli',\n 6: 'kotti',\n 8: 'ubiq',\n 10: 'optimism',\n 19: 'songbird',\n 20: 'elastos',\n 25: 'cronos',\n 30: 'rsk',\n 40: 'telos',\n 50: 'xdc',\n 52: 'csc',\n 55: 'zyx',\n 56: 'binance',\n 57: 'syscoin',\n 60: 'gochain',\n 61: 'ethclassic',\n 63: 'mordor',\n 66: 'okexchain',\n 70: 'hoo',\n 82: 'meter',\n 88: 'tomochain',\n 100: 'xdai',\n 106: 'velas',\n 108: 'thundercore',\n 122: 'fuse',\n 128: 'heco',\n 137: 'polygon',\n 200: 'xdaiarb',\n 212: 'astor',\n 246: 'energyweb',\n 250: 'fantom',\n 269: 'hpb',\n 288: 'boba',\n 321: 'kucoin',\n 336: 'shiden',\n 361: 'theta',\n 416: 'sx',\n 534: 'candle',\n 592: 'astar',\n 820: 'callisto',\n 888: 'wanchain',\n 1088: 'metis',\n 1246: 'omchain',\n 1284: 'moonbeam',\n 1285: 'moonriver',\n 2018: 'dev',\n 2020: 'ronin',\n 2222: 'kava',\n 2612: 'ezchain',\n 4181: 'phi',\n 4689: 'iotex',\n 5050: 'xlc',\n 5551: 'nahmii',\n 7777: 'nmactest',\n 8217: 'klaytn',\n 9001: 'evmos',\n 10000: 'smartbch',\n 103090: 'crystaleum',\n 32659: 'fusion',\n 42161: 'arbitrum',\n 42220: 'celo',\n 42262: 'oasis',\n 43114: 'avalanche',\n 71402: 'godwoken',\n 200625: 'akroma',\n 333999: 'polis',\n 11155111: 'sepolia',\n 1313161554: 'aurora',\n 1666600000: 'harmony',\n 11297108109: 'palm',\n 836542336838601: 'curio',\n}\n\nexport const SOL_MAINMET_ID = 'sol_mainnet'\nexport const SOL_DEVNET_ID = 'sol_devnet'\nexport const SOL_TESTNENT_ID = 'sol_testnet'\nCHAIN_MAP[SOL_MAINMET_ID] = 'solana'\nCHAIN_MAP[SOL_DEVNET_ID] = 'solana-dev'\nCHAIN_MAP[SOL_TESTNENT_ID] = 'solana-test'\n\nexport const SUI_DEVNET_ID = 'sui_devnet'\nCHAIN_MAP[SUI_DEVNET_ID] = 'sui-dev'\n\nexport const APTOS_TESTNET_ID = 'aptos_testnet'\nexport const APTOS_MAINNET_ID = 'aptos_mainnet'\nCHAIN_MAP[APTOS_TESTNET_ID] = 'aptos-test'\nCHAIN_MAP[APTOS_MAINNET_ID] = 'aptos-mainnet'\n\nexport function getChainName(chainId: string | number): string {\n if (typeof chainId === 'number') {\n chainId = chainId.toString()\n }\n const name = CHAIN_MAP[chainId]\n if (name) {\n return name\n }\n return chainId\n}\n"]}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@sentio/sdk",
3
3
  "license": "Apache-2.0",
4
- "version": "1.19.4",
4
+ "version": "1.19.6",
5
5
  "scripts": {
6
6
  "compile_target": "yarn tsc -b src/target-ethers-sentio/tsconfig.json",
7
7
  "compile": "tsc -p . && cp src/cli/webpack.config.js lib/cli && cp src/utils/*.csv lib/utils",
8
8
  "build": "yarn gen && yarn compile",
9
9
  "start_ts": "ts-node --files src/processor-runner.ts ../examples/x2y2/src/processor.ts",
10
- "start": "ts-node --files src/processor-runner.ts ../examples/x2y2/dist/lib.js",
11
- "start_js": "node lib/processor.js ../examples/x2y2/dist/lib.js",
10
+ "start": "ts-node --files src/processor-runner.ts ../examples/aptos/dist/lib.js",
11
+ "start_js": "node lib/processor-runner.js ../examples/aptos/dist/lib.js",
12
12
  "ts-start": "ts-node --files src/processor-runner.ts ./src/anyswap/src/processor.ts",
13
13
  "cli": "ts-node src/cli/cli.ts",
14
14
  "test": "jest",
@@ -26,6 +26,7 @@
26
26
  "@typechain/ethers-v5": "^10.0.0",
27
27
  "@types/bn.js": "^5.1.0",
28
28
  "@types/node-fetch": "^2.6.2",
29
+ "aptos": "^1.3.15",
29
30
  "bignumber.js": "^9.1.0",
30
31
  "bn.js": "^5.2.1",
31
32
  "bs58": "^5.0.0",
@@ -52,17 +53,14 @@
52
53
  "@types/expect": "^24.3.0",
53
54
  "@types/fs-extra": "^9.0.13",
54
55
  "@types/google-protobuf": "^3.15.6",
55
- "@types/jest": "^29.0.0",
56
56
  "@types/js-yaml": "^4.0.5",
57
57
  "@types/mkdirp": "^1.0.2",
58
58
  "@types/node": "^18.0.4",
59
59
  "chai": "^4.3.6",
60
60
  "clean-publish": "^4.0.1",
61
61
  "conventional-changelog-conventionalcommits": "^5.0.0",
62
- "jest": "^29.0.0",
63
62
  "semantic-release": "^19.0.5",
64
- "ts-jest": "^29.0.0",
65
- "ts-node": "^10.8.0",
63
+ "ts-node": "^10.9.1",
66
64
  "tsconfig-paths": "^4.0.0",
67
65
  "typedoc": "^0.23.15",
68
66
  "typescript": "^4.8.0"
@@ -0,0 +1,171 @@
1
+ import { ProcessResult } from '../gen'
2
+ import {
3
+ AptosBindOptions,
4
+ AptosContext,
5
+ AptosNetwork,
6
+ Transaction_UserTransaction,
7
+ TransactionPayload_EntryFunctionPayload,
8
+ } from '.'
9
+ import type { Event as OldEvent } from 'aptos/src/generated'
10
+
11
+ import Long from 'long'
12
+ import { APTOS_MAINNET_ID, APTOS_TESTNET_ID } from '../utils/chain'
13
+
14
+ export type Event = OldEvent & { version: string }
15
+
16
+ type IndexConfigure = {
17
+ address: string
18
+ network: AptosNetwork
19
+ startVersion: Long
20
+ // endSeqNumber?: Long
21
+ }
22
+
23
+ export interface EventFilter {
24
+ type: string
25
+ }
26
+
27
+ export interface CallFilter {
28
+ function: string
29
+ typeArguments?: string[]
30
+ }
31
+
32
+ class EventHandler {
33
+ filters: EventFilter[]
34
+ handler: (event: Event) => Promise<ProcessResult>
35
+ }
36
+
37
+ class CallHandler {
38
+ filters: CallFilter[]
39
+ handler: (call: Transaction_UserTransaction) => Promise<ProcessResult>
40
+ }
41
+
42
+ export class AptosBaseProcessor {
43
+ name: string
44
+ config: IndexConfigure
45
+ eventHandlers: EventHandler[] = []
46
+ callHandlers: CallHandler[] = []
47
+
48
+ constructor(options: AptosBindOptions) {
49
+ this.name = options.name || options.address
50
+ this.configure(options)
51
+ global.PROCESSOR_STATE.aptosProcessors.push(this)
52
+ }
53
+
54
+ static bind(options: AptosBindOptions): AptosBaseProcessor {
55
+ return new AptosBaseProcessor(options)
56
+ }
57
+
58
+ public onTransaction(
59
+ handler: (transaction: Transaction_UserTransaction, ctx: AptosContext) => void
60
+ ): AptosBaseProcessor {
61
+ const address = this.config.address
62
+ this.callHandlers.push({
63
+ handler: async function (tx) {
64
+ const ctx = new AptosContext(address, Long.fromString(tx.version), tx)
65
+ if (tx) {
66
+ handler(tx, ctx)
67
+ }
68
+ return {
69
+ gauges: ctx.gauges,
70
+ counters: ctx.counters,
71
+ logs: ctx.logs,
72
+ }
73
+ },
74
+ filters: [],
75
+ })
76
+ return this
77
+ }
78
+
79
+ public onEvent(
80
+ handler: (event: Event, ctx: AptosContext) => void,
81
+ filter: EventFilter | EventFilter[]
82
+ ): AptosBaseProcessor {
83
+ let _filters: EventFilter[] = []
84
+
85
+ if (Array.isArray(filter)) {
86
+ _filters = filter
87
+ } else {
88
+ _filters.push(filter)
89
+ }
90
+
91
+ const address = this.config.address
92
+
93
+ this.eventHandlers.push({
94
+ handler: async function (event) {
95
+ const ctx = new AptosContext(address, Long.fromString(event.version))
96
+ if (event) {
97
+ handler(event, ctx)
98
+ }
99
+ return {
100
+ gauges: ctx.gauges,
101
+ counters: ctx.counters,
102
+ logs: ctx.logs,
103
+ }
104
+ },
105
+ filters: _filters,
106
+ })
107
+ return this
108
+ }
109
+
110
+ public onEntryFunctionCall(
111
+ handler: (call: TransactionPayload_EntryFunctionPayload, ctx: AptosContext) => void,
112
+ filter: CallFilter | CallFilter[]
113
+ ): AptosBaseProcessor {
114
+ let _filters: CallFilter[] = []
115
+
116
+ if (Array.isArray(filter)) {
117
+ _filters = filter
118
+ } else {
119
+ _filters.push(filter)
120
+ }
121
+
122
+ const address = this.config.address
123
+
124
+ this.callHandlers.push({
125
+ handler: async function (tx) {
126
+ const ctx = new AptosContext(address, Long.fromString(tx.version), tx)
127
+ if (tx) {
128
+ const payload = tx.payload as TransactionPayload_EntryFunctionPayload
129
+ handler(payload, ctx)
130
+ }
131
+ return {
132
+ gauges: ctx.gauges,
133
+ counters: ctx.counters,
134
+ logs: ctx.logs,
135
+ }
136
+ },
137
+ filters: _filters,
138
+ })
139
+ return this
140
+ }
141
+
142
+ private configure(options: AptosBindOptions) {
143
+ let startVersion = Long.ZERO
144
+ if (options.startVersion) {
145
+ startVersion = Long.fromValue(options.startVersion)
146
+ }
147
+
148
+ this.config = {
149
+ startVersion: startVersion,
150
+ address: options.address,
151
+ network: options.network || AptosNetwork.TEST_NET,
152
+ }
153
+ }
154
+ //
155
+ // public endBlock(endBlock: Long | number) {
156
+ // if (typeof endBlock === 'number') {
157
+ // endBlock = Long.fromNumber(endBlock)
158
+ // }
159
+ // this.config.endSeqNumber = endBlock
160
+ // return this
161
+ // }
162
+
163
+ getChainId(): string {
164
+ switch (this.config.network) {
165
+ case AptosNetwork.TEST_NET:
166
+ return APTOS_TESTNET_ID
167
+ case AptosNetwork.MAIN_NET:
168
+ return APTOS_MAINNET_ID
169
+ }
170
+ }
171
+ }
@@ -0,0 +1,15 @@
1
+ import Long from 'long'
2
+
3
+ export enum AptosNetwork {
4
+ MAIN_NET = 0,
5
+ TEST_NET = 1,
6
+ // DEV_NET,
7
+ }
8
+
9
+ export class AptosBindOptions {
10
+ address: string
11
+ network?: AptosNetwork = AptosNetwork.TEST_NET
12
+ name?: string
13
+ startVersion?: Long | number
14
+ // endBlock?: Long | number
15
+ }
@@ -0,0 +1,35 @@
1
+ import Long from 'long'
2
+ import { MetricDescriptor, RecordMetaData } from '../gen'
3
+ import { Labels } from '../core/metadata'
4
+ import { APTOS_TESTNET_ID } from '../utils/chain'
5
+ import { normalizeLabels } from '../core/meter'
6
+ import { BaseContext } from '../core/context'
7
+ import { Transaction_UserTransaction } from './'
8
+
9
+ export class AptosContext extends BaseContext {
10
+ address: string
11
+ blockNumber: Long
12
+ transaction: Transaction_UserTransaction
13
+
14
+ constructor(address: string, slot: Long, transaction?: Transaction_UserTransaction) {
15
+ super()
16
+ this.address = address
17
+ this.blockNumber = slot
18
+ if (transaction) {
19
+ this.transaction = transaction
20
+ }
21
+ }
22
+
23
+ getMetaData(descriptor: MetricDescriptor | undefined, labels: Labels): RecordMetaData {
24
+ return {
25
+ contractAddress: this.address,
26
+ blockNumber: this.blockNumber,
27
+ transactionIndex: 0,
28
+ transactionHash: this.transaction?.hash || '', // TODO
29
+ logIndex: 0,
30
+ chainId: APTOS_TESTNET_ID, // TODO set in context
31
+ descriptor: descriptor,
32
+ labels: normalizeLabels(labels),
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,5 @@
1
+ export type { Transaction_UserTransaction, TransactionPayload_EntryFunctionPayload } from 'aptos/src/generated'
2
+ export type { Event, CallFilter, EventFilter } from './aptos-processor'
3
+ export { AptosBaseProcessor } from './aptos-processor'
4
+ export { AptosContext } from './context'
5
+ export { AptosBindOptions, AptosNetwork } from './bind-options'
@@ -26,6 +26,7 @@ module.exports = {
26
26
  mode: 'production',
27
27
  externals: [
28
28
  {
29
+ aptos: 'commonjs2 aptos',
29
30
  ethers: 'commonjs2 ethers',
30
31
  bs58: 'commonjs2 bs58',
31
32
  "bignumber.js": 'commonjs2 bignumber.js',