@sentio/sdk 1.7.13 → 1.7.16

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 (299) hide show
  1. package/{base-processor-template.d.ts → lib/base-processor-template.d.ts} +0 -0
  2. package/{base-processor-template.js → lib/base-processor-template.js} +0 -0
  3. package/lib/base-processor-template.js.map +1 -0
  4. package/{base-processor.d.ts → lib/base-processor.d.ts} +0 -0
  5. package/{base-processor.js → lib/base-processor.js} +0 -0
  6. package/lib/base-processor.js.map +1 -0
  7. package/{bind-options.d.ts → lib/bind-options.d.ts} +0 -0
  8. package/{bind-options.js → lib/bind-options.js} +0 -0
  9. package/lib/bind-options.js.map +1 -0
  10. package/{binds.d.ts → lib/binds.d.ts} +0 -0
  11. package/{binds.js → lib/binds.js} +0 -0
  12. package/lib/binds.js.map +1 -0
  13. package/{builtin → lib/builtin}/erc20/index.d.ts +0 -0
  14. package/{builtin → lib/builtin}/erc20/index.js +0 -0
  15. package/lib/builtin/erc20/index.js.map +1 -0
  16. package/{builtin → lib/builtin}/erc20/test-utils.d.ts +0 -0
  17. package/{builtin → lib/builtin}/erc20/test-utils.js +0 -0
  18. package/lib/builtin/erc20/test-utils.js.map +1 -0
  19. package/{builtin → lib/builtin}/internal/Erc20.d.ts +0 -0
  20. package/{builtin → lib/builtin}/internal/Erc20.js +0 -0
  21. package/lib/builtin/internal/Erc20.js.map +1 -0
  22. package/{builtin → lib/builtin}/internal/common.d.ts +0 -0
  23. package/{builtin → lib/builtin}/internal/common.js +0 -0
  24. package/lib/builtin/internal/common.js.map +1 -0
  25. package/{builtin → lib/builtin}/internal/erc20_processor.d.ts +0 -0
  26. package/{builtin → lib/builtin}/internal/erc20_processor.js +0 -0
  27. package/lib/builtin/internal/erc20_processor.js.map +1 -0
  28. package/{builtin → lib/builtin}/internal/factories/Erc20__factory.d.ts +0 -0
  29. package/{builtin → lib/builtin}/internal/factories/Erc20__factory.js +0 -0
  30. package/lib/builtin/internal/factories/Erc20__factory.js.map +1 -0
  31. package/{builtin → lib/builtin}/internal/factories/index.d.ts +0 -0
  32. package/{builtin → lib/builtin}/internal/factories/index.js +0 -0
  33. package/{builtin → lib/builtin}/internal/factories/index.js.map +1 -1
  34. package/{builtin → lib/builtin}/internal/index.d.ts +0 -0
  35. package/{builtin → lib/builtin}/internal/index.js +0 -0
  36. package/lib/builtin/internal/index.js.map +1 -0
  37. package/{chain-config.d.ts → lib/chain-config.d.ts} +0 -0
  38. package/{chain-config.js → lib/chain-config.js} +0 -0
  39. package/lib/chain-config.js.map +1 -0
  40. package/{cli → lib/cli}/build.d.ts +0 -0
  41. package/{cli → lib/cli}/build.js +0 -0
  42. package/lib/cli/build.js.map +1 -0
  43. package/{cli → lib/cli}/cli.d.ts +0 -0
  44. package/{cli → lib/cli}/cli.js +0 -0
  45. package/lib/cli/cli.js.map +1 -0
  46. package/{cli → lib/cli}/config.d.ts +0 -0
  47. package/{cli → lib/cli}/config.js +0 -0
  48. package/lib/cli/config.js.map +1 -0
  49. package/{cli → lib/cli}/key.d.ts +0 -0
  50. package/{cli → lib/cli}/key.js +0 -0
  51. package/{cli → lib/cli}/key.js.map +1 -1
  52. package/{cli → lib/cli}/solana-code-gen.d.ts +0 -0
  53. package/{cli → lib/cli}/solana-code-gen.js +0 -0
  54. package/{cli → lib/cli}/solana-code-gen.js.map +1 -1
  55. package/{cli → lib/cli}/upload.d.ts +0 -0
  56. package/{cli → lib/cli}/upload.js +0 -0
  57. package/{cli → lib/cli}/upload.js.map +1 -1
  58. package/{cli → lib/cli}/webpack.config.js +0 -0
  59. package/{context.d.ts → lib/context.d.ts} +0 -0
  60. package/{context.js → lib/context.js} +0 -0
  61. package/lib/context.js.map +1 -0
  62. package/{contract-namer.d.ts → lib/contract-namer.d.ts} +0 -0
  63. package/{contract-namer.js → lib/contract-namer.js} +0 -0
  64. package/{contract-namer.js.map → lib/contract-namer.js.map} +1 -1
  65. package/{error.d.ts → lib/error.d.ts} +0 -0
  66. package/{error.js → lib/error.js} +0 -0
  67. package/lib/error.js.map +1 -0
  68. package/{gen → lib/gen}/builtin.d.ts +0 -0
  69. package/{gen → lib/gen}/builtin.js +0 -0
  70. package/lib/gen/builtin.js.map +1 -0
  71. package/{gen → lib/gen}/google/protobuf/empty.d.ts +0 -0
  72. package/{gen → lib/gen}/google/protobuf/empty.js +0 -0
  73. package/lib/gen/google/protobuf/empty.js.map +1 -0
  74. package/{gen → lib/gen}/processor/protos/processor.d.ts +0 -0
  75. package/{gen → lib/gen}/processor/protos/processor.js +0 -0
  76. package/lib/gen/processor/protos/processor.js.map +1 -0
  77. package/{generic-processor.d.ts → lib/generic-processor.d.ts} +0 -0
  78. package/{generic-processor.js → lib/generic-processor.js} +0 -0
  79. package/lib/generic-processor.js.map +1 -0
  80. package/{index.d.ts → lib/index.d.ts} +0 -0
  81. package/{index.js → lib/index.js} +0 -0
  82. package/lib/index.js.map +1 -0
  83. package/lib/loader.d.ts +5 -0
  84. package/lib/loader.js +30 -0
  85. package/lib/loader.js.map +1 -0
  86. package/{meter.d.ts → lib/meter.d.ts} +0 -0
  87. package/{meter.js → lib/meter.js} +0 -0
  88. package/lib/meter.js.map +1 -0
  89. package/{numberish.d.ts → lib/numberish.d.ts} +0 -0
  90. package/{numberish.js → lib/numberish.js} +0 -0
  91. package/lib/numberish.js.map +1 -0
  92. package/{numberish.test.d.ts → lib/numberish.test.d.ts} +0 -0
  93. package/{numberish.test.js → lib/numberish.test.js} +0 -0
  94. package/{numberish.test.js.map → lib/numberish.test.js.map} +1 -1
  95. package/{processor-runner.d.ts → lib/processor-runner.d.ts} +0 -0
  96. package/{processor-runner.js → lib/processor-runner.js} +2 -27
  97. package/lib/processor-runner.js.map +1 -0
  98. package/{processor-state.d.ts → lib/processor-state.d.ts} +0 -0
  99. package/{processor-state.js → lib/processor-state.js} +0 -0
  100. package/lib/processor-state.js.map +1 -0
  101. package/{promise-or-void.d.ts → lib/promise-or-void.d.ts} +0 -0
  102. package/{promise-or-void.js → lib/promise-or-void.js} +0 -0
  103. package/lib/promise-or-void.js.map +1 -0
  104. package/{provider.d.ts → lib/provider.d.ts} +0 -0
  105. package/{provider.js → lib/provider.js} +0 -0
  106. package/lib/provider.js.map +1 -0
  107. package/{release.config.js → lib/release.config.js} +0 -0
  108. package/{service.d.ts → lib/service.d.ts} +2 -1
  109. package/{service.js → lib/service.js} +6 -3
  110. package/lib/service.js.map +1 -0
  111. package/{solana → lib/solana}/builtin/index.d.ts +0 -0
  112. package/{solana → lib/solana}/builtin/index.js +0 -0
  113. package/lib/solana/builtin/index.js.map +1 -0
  114. package/{solana → lib/solana}/builtin/spl-token-processor.d.ts +0 -0
  115. package/{solana → lib/solana}/builtin/spl-token-processor.js +0 -0
  116. package/lib/solana/builtin/spl-token-processor.js.map +1 -0
  117. package/{solana → lib/solana}/builtin/types.d.ts +0 -0
  118. package/{solana → lib/solana}/builtin/types.js +0 -0
  119. package/lib/solana/builtin/types.js.map +1 -0
  120. package/{solana → lib/solana}/builtin/wormhole-processor.d.ts +0 -0
  121. package/{solana → lib/solana}/builtin/wormhole-processor.js +0 -0
  122. package/lib/solana/builtin/wormhole-processor.js.map +1 -0
  123. package/{solana-processor.d.ts → lib/solana-processor.d.ts} +0 -0
  124. package/{solana-processor.js → lib/solana-processor.js} +0 -0
  125. package/lib/solana-processor.js.map +1 -0
  126. package/{target-ethers-sentio → lib/target-ethers-sentio}/codegen.d.ts +0 -0
  127. package/{target-ethers-sentio → lib/target-ethers-sentio}/codegen.js +0 -0
  128. package/{target-ethers-sentio → lib/target-ethers-sentio}/codegen.js.map +0 -0
  129. package/{target-ethers-sentio → lib/target-ethers-sentio}/index.d.ts +0 -0
  130. package/{target-ethers-sentio → lib/target-ethers-sentio}/index.js +0 -0
  131. package/{target-ethers-sentio → lib/target-ethers-sentio}/index.js.map +0 -0
  132. package/{test → lib/test}/codegen.test.d.ts +0 -0
  133. package/{test → lib/test}/codegen.test.js +1 -1
  134. package/lib/test/codegen.test.js.map +1 -0
  135. package/{test → lib/test}/erc20-template.d.ts +0 -0
  136. package/{test → lib/test}/erc20-template.js +0 -0
  137. package/lib/test/erc20-template.js.map +1 -0
  138. package/{test → lib/test}/erc20-template.test.d.ts +0 -0
  139. package/{test → lib/test}/erc20-template.test.js +1 -3
  140. package/lib/test/erc20-template.test.js.map +1 -0
  141. package/{test → lib/test}/erc20.d.ts +0 -0
  142. package/{test → lib/test}/erc20.js +0 -0
  143. package/lib/test/erc20.js.map +1 -0
  144. package/{test → lib/test}/erc20.test.d.ts +0 -0
  145. package/{test → lib/test}/erc20.test.js +1 -3
  146. package/lib/test/erc20.test.js.map +1 -0
  147. package/{test → lib/test}/generic-processor.test.d.ts +0 -0
  148. package/{test → lib/test}/generic-processor.test.js +14 -4
  149. package/lib/test/generic-processor.test.js.map +1 -0
  150. package/{test → lib/test}/index.d.ts +0 -0
  151. package/{test → lib/test}/index.js +0 -0
  152. package/{test → lib/test}/index.js.map +1 -1
  153. package/{test → lib/test}/metric-utils.d.ts +0 -0
  154. package/{test → lib/test}/metric-utils.js +0 -0
  155. package/lib/test/metric-utils.js.map +1 -0
  156. package/{test → lib/test}/mirrorworld.d.ts +0 -0
  157. package/{test → lib/test}/mirrorworld.js +0 -0
  158. package/{test → lib/test}/mirrorworld.js.map +1 -1
  159. package/{test → lib/test}/solana.test.d.ts +0 -0
  160. package/{test → lib/test}/solana.test.js +3 -3
  161. package/lib/test/solana.test.js.map +1 -0
  162. package/{test → lib/test}/test-processor-server.d.ts +1 -1
  163. package/{test → lib/test}/test-processor-server.js +3 -8
  164. package/lib/test/test-processor-server.js.map +1 -0
  165. package/{test → lib/test}/types/game_wallet.d.ts +0 -0
  166. package/{test → lib/test}/types/game_wallet.js +0 -0
  167. package/lib/test/types/game_wallet.js.map +1 -0
  168. package/{test → lib/test}/types/game_wallet_processor.d.ts +0 -0
  169. package/{test → lib/test}/types/game_wallet_processor.js +0 -0
  170. package/lib/test/types/game_wallet_processor.js.map +1 -0
  171. package/{test → lib/test}/wormhole-token-bridge.d.ts +0 -0
  172. package/{test → lib/test}/wormhole-token-bridge.js +0 -0
  173. package/lib/test/wormhole-token-bridge.js.map +1 -0
  174. package/{utils → lib/utils}/chainmap.d.ts +0 -0
  175. package/{utils → lib/utils}/chainmap.js +0 -0
  176. package/lib/utils/chainmap.js.map +1 -0
  177. package/{utils → lib/utils}/convert.d.ts +0 -0
  178. package/{utils → lib/utils}/convert.js +0 -0
  179. package/lib/utils/convert.js.map +1 -0
  180. package/{utils → lib/utils}/index.d.ts +0 -0
  181. package/{utils → lib/utils}/index.js +0 -0
  182. package/lib/utils/index.js.map +1 -0
  183. package/package.json +47 -6
  184. package/src/abis/erc20.json +198 -0
  185. package/src/base-processor-template.ts +92 -0
  186. package/src/base-processor.ts +128 -0
  187. package/src/bind-options.ts +41 -0
  188. package/src/binds.ts +73 -0
  189. package/src/builtin/erc20/index.ts +6 -0
  190. package/src/builtin/erc20/test-utils.ts +49 -0
  191. package/src/builtin/internal/Erc20.ts +356 -0
  192. package/src/builtin/internal/common.ts +46 -0
  193. package/src/builtin/internal/erc20_processor.ts +295 -0
  194. package/src/builtin/internal/factories/Erc20__factory.ts +216 -0
  195. package/src/builtin/internal/factories/index.ts +4 -0
  196. package/src/builtin/internal/index.ts +6 -0
  197. package/src/chain-config.ts +6 -0
  198. package/src/cli/build.ts +180 -0
  199. package/src/cli/cli.ts +217 -0
  200. package/src/cli/config.ts +43 -0
  201. package/src/cli/key.ts +43 -0
  202. package/src/cli/solana-code-gen.ts +16 -0
  203. package/src/cli/upload.ts +86 -0
  204. package/src/cli/webpack.config.js +42 -0
  205. package/src/context.ts +93 -0
  206. package/src/contract-namer.ts +17 -0
  207. package/src/error.ts +43 -0
  208. package/src/gen/builtin.ts +22 -0
  209. package/src/gen/google/protobuf/empty.ts +70 -0
  210. package/src/gen/processor/protos/processor.ts +3071 -0
  211. package/src/generic-processor.ts +38 -0
  212. package/src/index.ts +19 -0
  213. package/src/loader.ts +24 -0
  214. package/src/meter.ts +122 -0
  215. package/src/numberish.test.ts +82 -0
  216. package/src/numberish.ts +99 -0
  217. package/src/processor-runner.ts +49 -0
  218. package/src/processor-state.ts +24 -0
  219. package/src/promise-or-void.ts +1 -0
  220. package/src/provider.ts +74 -0
  221. package/src/service.ts +439 -0
  222. package/src/solana/builtin/index.ts +2 -0
  223. package/src/solana/builtin/spl-token-processor.ts +164 -0
  224. package/src/solana/builtin/types.ts +268 -0
  225. package/src/solana/builtin/wormhole-processor.ts +178 -0
  226. package/src/solana-processor.ts +105 -0
  227. package/src/target-ethers-sentio/codegen.ts +289 -0
  228. package/src/target-ethers-sentio/index.ts +50 -0
  229. package/src/target-ethers-sentio/tsconfig.json +9 -0
  230. package/src/test/abis/evm/anyswapRouter.json +490 -0
  231. package/src/test/abis/solana/mirrorworld.json +1392 -0
  232. package/src/test/codegen.test.ts +26 -0
  233. package/src/test/erc20-template.test.ts +37 -0
  234. package/src/test/erc20-template.ts +25 -0
  235. package/src/test/erc20.test.ts +90 -0
  236. package/src/test/erc20.ts +48 -0
  237. package/src/test/generic-processor.test.ts +70 -0
  238. package/src/test/index.ts +1 -0
  239. package/src/test/metric-utils.ts +49 -0
  240. package/src/test/mirrorworld.ts +40 -0
  241. package/src/test/sentio.yaml +4 -0
  242. package/src/test/solana.test.ts +93 -0
  243. package/src/test/test-processor-server.ts +205 -0
  244. package/src/test/types/game_wallet.ts +1392 -0
  245. package/src/test/types/game_wallet_processor.ts +113 -0
  246. package/src/test/wormhole-token-bridge.ts +21 -0
  247. package/src/types/global.d.ts +17 -0
  248. package/src/utils/chainmap.ts +95 -0
  249. package/src/utils/convert.ts +6 -0
  250. package/src/utils/index.ts +2 -0
  251. package/base-processor-template.js.map +0 -1
  252. package/base-processor.js.map +0 -1
  253. package/bind-options.js.map +0 -1
  254. package/binds.js.map +0 -1
  255. package/builtin/erc20/index.js.map +0 -1
  256. package/builtin/erc20/test-utils.js.map +0 -1
  257. package/builtin/internal/Erc20.js.map +0 -1
  258. package/builtin/internal/common.js.map +0 -1
  259. package/builtin/internal/erc20_processor.js.map +0 -1
  260. package/builtin/internal/factories/Erc20__factory.js.map +0 -1
  261. package/builtin/internal/index.js.map +0 -1
  262. package/chain-config.js.map +0 -1
  263. package/cli/build.js.map +0 -1
  264. package/cli/cli.js.map +0 -1
  265. package/cli/config.js.map +0 -1
  266. package/context.js.map +0 -1
  267. package/error.js.map +0 -1
  268. package/gen/builtin.js.map +0 -1
  269. package/gen/google/protobuf/empty.js.map +0 -1
  270. package/gen/processor/protos/processor.js.map +0 -1
  271. package/generic-processor.js.map +0 -1
  272. package/index.js.map +0 -1
  273. package/meter.js.map +0 -1
  274. package/numberish.js.map +0 -1
  275. package/processor-runner.js.map +0 -1
  276. package/processor-state.js.map +0 -1
  277. package/promise-or-void.js.map +0 -1
  278. package/provider.js.map +0 -1
  279. package/service.js.map +0 -1
  280. package/solana/builtin/index.js.map +0 -1
  281. package/solana/builtin/spl-token-processor.js.map +0 -1
  282. package/solana/builtin/types.js.map +0 -1
  283. package/solana/builtin/wormhole-processor.js.map +0 -1
  284. package/solana-processor.js.map +0 -1
  285. package/test/codegen.test.js.map +0 -1
  286. package/test/erc20-template.js.map +0 -1
  287. package/test/erc20-template.test.js.map +0 -1
  288. package/test/erc20.js.map +0 -1
  289. package/test/erc20.test.js.map +0 -1
  290. package/test/generic-processor.test.js.map +0 -1
  291. package/test/metric-utils.js.map +0 -1
  292. package/test/solana.test.js.map +0 -1
  293. package/test/test-processor-server.js.map +0 -1
  294. package/test/types/game_wallet.js.map +0 -1
  295. package/test/types/game_wallet_processor.js.map +0 -1
  296. package/test/wormhole-token-bridge.js.map +0 -1
  297. package/utils/chainmap.js.map +0 -1
  298. package/utils/convert.js.map +0 -1
  299. package/utils/index.js.map +0 -1
@@ -12,33 +12,9 @@ const provider_1 = require("./provider");
12
12
  const path_1 = __importDefault(require("path"));
13
13
  const fs_extra_1 = __importDefault(require("fs-extra"));
14
14
  const processor_state_1 = require("./processor-state");
15
+ const loader_1 = require("./loader");
15
16
  global.sentio_sdk = require('.');
16
17
  global.PROCESSOR_STATE = new processor_state_1.ProcessorState();
17
- function tryRequire(name) {
18
- const req = eval('require');
19
- try {
20
- let path;
21
- try {
22
- path = req.resolve(name, { paths: [process.cwd()] });
23
- }
24
- catch {
25
- path = req.resolve(name);
26
- }
27
- const module = { module: req(path), name, path };
28
- console.log('Load successfully: ', name);
29
- return module;
30
- }
31
- catch (err) {
32
- if (err instanceof Error && err.message.startsWith(`Cannot find module '${name}'`)) {
33
- // this error is expected
34
- console.log("Couldn't load (expected): ", name);
35
- return undefined;
36
- }
37
- else {
38
- throw err;
39
- }
40
- }
41
- }
42
18
  const optionDefinitions = [
43
19
  { name: 'target', type: String, defaultOption: true },
44
20
  { name: 'port', alias: 'p', type: String, defaultValue: '4000' },
@@ -56,12 +32,11 @@ console.log('loading', options.target);
56
32
  const fullPath = path_1.default.resolve(options['chains-config']);
57
33
  const chainsConfig = fs_extra_1.default.readJsonSync(fullPath);
58
34
  (0, provider_1.setProvider)(chainsConfig, options.concurrency, options['use-chainserver']);
59
- tryRequire(options.target);
60
35
  console.log('Start Server', options);
61
36
  console.log(global.PROCESSOR_STATE.processors.length, ' processors loaded');
62
37
  console.log(global.PROCESSOR_STATE.solanaProcessors.length, ' solana processors loaded');
63
38
  const server = (0, nice_grpc_1.createServer)();
64
- const service = new service_1.ProcessorServiceImpl(server.shutdown);
39
+ const service = new service_1.ProcessorServiceImpl(() => (0, loader_1.load)(options.target), server.shutdown);
65
40
  server.add(processor_1.ProcessorDefinition, service);
66
41
  server.listen('0.0.0.0:' + options.port);
67
42
  //# sourceMappingURL=processor-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processor-runner.js","sourceRoot":"","sources":["../src/processor-runner.ts"],"names":[],"mappings":";;;;;;AAEA,0EAA+C;AAC/C,yCAAwC;AACxC,gEAAsE;AACtE,uCAAgD;AAChD,yCAAwC;AAExC,gDAAuB;AACvB,wDAAyB;AACzB,uDAAkD;AAClD,qCAA+B;AAE/B,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;AAChC,MAAM,CAAC,eAAe,GAAG,IAAI,gCAAc,EAAE,CAAA;AAE7C,MAAM,iBAAiB,GAAG;IACxB,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE;IACrD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE;IAChE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE;IACtD,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE;IAC/D;QACE,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,MAAM;QACZ,YAAY,EAAE,oBAAoB;KACnC;CACF,CAAA;AAED,MAAM,OAAO,GAAG,IAAA,2BAAe,EAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AAErE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;AAEtC,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAA;AACvD,MAAM,YAAY,GAAG,kBAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;AAE9C,IAAA,sBAAW,EAAC,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAE1E,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;AAEpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;AAC3E,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAA;AAExF,MAAM,MAAM,GAAG,IAAA,wBAAY,GAAE,CAAA;AAE7B,MAAM,OAAO,GAAG,IAAI,8BAAoB,CAAC,GAAG,EAAE,CAAC,IAAA,aAAI,EAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;AACrF,MAAM,CAAC,GAAG,CAAC,+BAAmB,EAAE,OAAO,CAAC,CAAA;AAExC,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA","sourcesContent":["#!/usr/bin/env node\n\nimport commandLineArgs from 'command-line-args'\nimport { createServer } from 'nice-grpc'\nimport { ProcessorDefinition } from './gen/processor/protos/processor'\nimport { ProcessorServiceImpl } from './service'\nimport { setProvider } from './provider'\n\nimport path from 'path'\nimport fs from 'fs-extra'\nimport { ProcessorState } from './processor-state'\nimport { load } from './loader'\n\nglobal.sentio_sdk = require('.')\nglobal.PROCESSOR_STATE = new ProcessorState()\n\nconst optionDefinitions = [\n { name: 'target', type: String, defaultOption: true },\n { name: 'port', alias: 'p', type: String, defaultValue: '4000' },\n { name: 'concurrency', type: Number, defaultValue: 4 },\n { name: 'use-chainserver', type: Boolean, defaultValue: false },\n {\n name: 'chains-config',\n alias: 'c',\n type: String,\n defaultValue: 'chains-config.json',\n },\n]\n\nconst options = commandLineArgs(optionDefinitions, { partial: true })\n\nconsole.log('loading', options.target)\n\nconst fullPath = path.resolve(options['chains-config'])\nconst chainsConfig = fs.readJsonSync(fullPath)\n\nsetProvider(chainsConfig, options.concurrency, options['use-chainserver'])\n\nconsole.log('Start Server', options)\n\nconsole.log(global.PROCESSOR_STATE.processors.length, ' processors loaded')\nconsole.log(global.PROCESSOR_STATE.solanaProcessors.length, ' solana processors loaded')\n\nconst server = createServer()\n\nconst service = new ProcessorServiceImpl(() => load(options.target), server.shutdown)\nserver.add(ProcessorDefinition, service)\n\nserver.listen('0.0.0.0:' + options.port)\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processor-state.js","sourceRoot":"","sources":["../src/processor-state.ts"],"names":[],"mappings":";;;AAQA,MAAa,cAAc;IACzB,mDAAmD;IACnD,SAAS,GAAG,IAAI,GAAG,EAAsC,CAAA;IACzD,qBAAqB;IACrB,UAAU,GAAwE,EAAE,CAAA;IACpF,oCAAoC;IACpC,YAAY,GAAG,IAAI,GAAG,EAAmC,CAAA;IACzD,gBAAgB;IAChB,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAA;IACvC,0BAA0B;IAC1B,SAAS,GAAgF,EAAE,CAAA;IAC3F,wCAAwC;IACxC,kBAAkB,GAAuB,EAAE,CAAA;IAE3C,gBAAgB,GAA0B,EAAE,CAAA;CAC7C;AAfD,wCAeC","sourcesContent":["import { BaseProcessor } from './base-processor'\nimport { BaseContract } from 'ethers'\nimport { BoundContractView, ContractView } from './context'\nimport { BaseProcessorTemplate } from './base-processor-template'\nimport { TemplateInstance } from './gen/processor/protos/processor'\nimport { Provider } from '@ethersproject/providers'\nimport { SolanaBaseProcessor } from './solana-processor'\n\nexport class ProcessorState {\n // from abiName_address_chainId => contract wrapper\n contracts = new Map<string, ContractView<BaseContract>>()\n // all evm processors\n processors: BaseProcessor<BaseContract, BoundContractView<BaseContract, any>>[] = []\n // from abiName_options to contracts\n processorMap = new Map<string, BaseProcessor<any, any>>()\n // evm providers\n providers = new Map<number, Provider>()\n // evm processor templates\n templates: BaseProcessorTemplate<BaseContract, BoundContractView<BaseContract, any>>[] = []\n // evm processor template instances spec\n templatesInstances: TemplateInstance[] = []\n\n solanaProcessors: SolanaBaseProcessor[] = []\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise-or-void.js","sourceRoot":"","sources":["../src/promise-or-void.ts"],"names":[],"mappings":"","sourcesContent":["export type PromiseOrVoid = void | Promise<any>\n"]}
File without changes
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAsF;AAEtF,sDAA4B;AAIf,QAAA,aAAa,GAAG,IAAI,iCAAqB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;AAEpE,SAAgB,WAAW,CAAC,UAAuB;IACjD,IAAI,CAAC,UAAU,EAAE;QACf,UAAU,GAAG,CAAC,CAAA;KACf;IACD,MAAM,OAAO,GAAG,IAAA,sBAAU,EAAC,UAAU,CAAC,CAAA;IAEtC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE;QACrC,MAAM,KAAK,CAAC,kBAAkB,CAAC,CAAA;KAChC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACnE,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,MAAM,KAAK,CACT,+BAA+B;YAC7B,OAAO,CAAC,OAAO;YACf,uBAAuB;YACvB,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACzD,CAAA;KACF;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAnBD,kCAmBC;AAED,SAAgB,WAAW,CAAC,MAAmC,EAAE,WAAW,GAAG,CAAC,EAAE,cAAc,GAAG,KAAK;IACtG,MAAM,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAA;IAE9D,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE;QAC/B,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE;YACtC,SAAQ;SACT;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;QACtC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;QAElC,8CAA8C;QAC9C,0CAA0C;QAC1C,6DAA6D;QAC7D,IAAI;QACJ,iBAAiB;QACjB,wDAAwD;QAExD,mDAAmD;QAEnD,IAAI,UAAU,GAAG,EAAE,CAAA;QACnB,IAAI,cAAc,IAAI,WAAW,CAAC,WAAW,EAAE;YAC7C,UAAU,GAAG,WAAW,CAAC,WAAW,CAAA;SACrC;aAAM;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAChE,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;SACpC;QAED,MAAM,QAAQ,GAAG,IAAI,2BAA2B,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;QAClF,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;KACxD;AACH,CAAC;AA/BD,kCA+BC;AAED,MAAM,2BAA4B,SAAQ,iCAAqB;IAC7D,QAAQ,CAAQ;IAEhB,YAAY,GAA4B,EAAE,OAAmB,EAAE,WAAmB;QAChF,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAM,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,IAAI,CAAC,MAAc,EAAE,MAAkB;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAC5D,CAAC;CACF","sourcesContent":["import { getNetwork, Provider, StaticJsonRpcProvider } from '@ethersproject/providers'\nimport { Networkish } from '@ethersproject/networks'\nimport PQueue from 'p-queue'\nimport { ConnectionInfo } from '@ethersproject/web'\nimport { ChainConfig } from './chain-config'\n\nexport const DummyProvider = new StaticJsonRpcProvider(undefined, 1)\n\nexport function getProvider(networkish?: Networkish): Provider {\n if (!networkish) {\n networkish = 1\n }\n const network = getNetwork(networkish)\n\n if (!global.PROCESSOR_STATE.providers) {\n throw Error('Provider not set')\n }\n const value = global.PROCESSOR_STATE.providers.get(network.chainId)\n if (value === undefined) {\n throw Error(\n 'Provider not found for chain ' +\n network.chainId +\n ', configured chains: ' +\n [...global.PROCESSOR_STATE.providers.keys()].join(' ')\n )\n }\n return value\n}\n\nexport function setProvider(config: Record<string, ChainConfig>, concurrency = 4, useChainServer = false) {\n global.PROCESSOR_STATE.providers = new Map<number, Provider>()\n\n for (const chainIdStr in config) {\n if (isNaN(Number.parseInt(chainIdStr))) {\n continue\n }\n\n const chainConfig = config[chainIdStr]\n const chainId = Number(chainIdStr)\n\n // let providers: StaticJsonRpcProvider[] = []\n // for (const http of chainConfig.Https) {\n // providers.push(new StaticJsonRpcProvider(http, chainId))\n // }\n // random shuffle\n // providers = providers.sort(() => Math.random() - 0.5)\n\n // const provider = new FallbackProvider(providers)\n\n let rpcAddress = ''\n if (useChainServer && chainConfig.ChainServer) {\n rpcAddress = chainConfig.ChainServer\n } else {\n const idx = Math.floor(Math.random() * chainConfig.Https.length)\n rpcAddress = chainConfig.Https[idx]\n }\n\n const provider = new QueuedStaticJsonRpcProvider(rpcAddress, chainId, concurrency)\n global.PROCESSOR_STATE.providers.set(chainId, provider)\n }\n}\n\nclass QueuedStaticJsonRpcProvider extends StaticJsonRpcProvider {\n executor: PQueue\n\n constructor(url: ConnectionInfo | string, network: Networkish, concurrency: number) {\n super(url, network)\n this.executor = new PQueue({ concurrency: concurrency })\n }\n\n send(method: string, params: Array<any>): Promise<any> {\n return this.executor.add(() => super.send(method, params))\n }\n}\n"]}
File without changes
@@ -7,8 +7,9 @@ export declare class ProcessorServiceImpl implements ProcessorServiceImplementat
7
7
  private started;
8
8
  private contractConfigs;
9
9
  private templateInstances;
10
+ private readonly loader;
10
11
  private readonly shutdownHandler?;
11
- constructor(shutdownHandler?: () => void);
12
+ constructor(loader: () => void, shutdownHandler?: () => void);
12
13
  getConfig(request: ProcessConfigRequest, context: CallContext): Promise<ProcessConfigResponse>;
13
14
  configure(): Promise<void>;
14
15
  start(request: StartRequest, context: CallContext): Promise<Empty>;
@@ -18,8 +18,10 @@ class ProcessorServiceImpl {
18
18
  started = false;
19
19
  contractConfigs;
20
20
  templateInstances;
21
+ loader;
21
22
  shutdownHandler;
22
- constructor(shutdownHandler) {
23
+ constructor(loader, shutdownHandler) {
24
+ this.loader = loader;
23
25
  this.shutdownHandler = shutdownHandler;
24
26
  }
25
27
  async getConfig(request, context) {
@@ -117,8 +119,8 @@ class ProcessorServiceImpl {
117
119
  endBlock: DEFAULT_MAX_BLOCK,
118
120
  instructionConfig: {
119
121
  innerInstruction: solanaProcessor.processInnerInstruction,
120
- parsedInstruction: solanaProcessor.fromParsedInstruction != null ? true : false,
121
- rawDataInstruction: solanaProcessor.decodeInstruction != null ? true : false,
122
+ parsedInstruction: solanaProcessor.fromParsedInstruction !== null,
123
+ rawDataInstruction: solanaProcessor.decodeInstruction !== null,
122
124
  },
123
125
  };
124
126
  this.contractConfigs.push(contractConfig);
@@ -128,6 +130,7 @@ class ProcessorServiceImpl {
128
130
  if (this.started) {
129
131
  return {};
130
132
  }
133
+ this.loader();
131
134
  for (const instance of request.templateInstances) {
132
135
  const template = global.PROCESSOR_STATE.templates[instance.templateId];
133
136
  if (!template) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Block, Log } from '@ethersproject/abstract-provider'\nimport { CallContext, ServerError, Status } from 'nice-grpc'\n\nimport {\n BlockBinding,\n ContractConfig,\n HandlerType,\n LogFilter,\n LogHandlerConfig,\n O11yResult,\n ProcessBlocksRequest,\n ProcessBlocksResponse,\n ProcessConfigRequest,\n ProcessConfigResponse,\n ProcessInstructionsRequest,\n ProcessInstructionsResponse,\n ProcessLogsRequest,\n ProcessLogsResponse,\n ProcessorServiceImplementation,\n ProcessTransactionsRequest,\n ProcessTransactionsResponse,\n StartRequest,\n TemplateInstance,\n} from './gen/processor/protos/processor'\n\nimport { Empty } from './gen/google/protobuf/empty'\nimport Long from 'long'\nimport { TextDecoder } from 'util'\n\nconst DEFAULT_MAX_BLOCK = Long.ZERO\n\nexport class ProcessorServiceImpl implements ProcessorServiceImplementation {\n private eventHandlers: ((event: Log) => Promise<O11yResult>)[] = []\n private blockHandlers: ((block: Block) => Promise<O11yResult>)[] = []\n\n // map from chain id to list of processors\n // private blockHandlers = new Map<string, ((block: Block) => Promise<O11yResult>)[]>()\n // private processorsByChainId = new Map<string, BaseProcessor<BaseContract, BoundContractView<BaseContract, any>>>()\n\n private started = false\n private contractConfigs: ContractConfig[]\n private templateInstances: TemplateInstance[]\n private readonly loader: () => void\n\n private readonly shutdownHandler?: () => void\n\n constructor(loader: () => void, shutdownHandler?: () => void) {\n this.loader = loader\n this.shutdownHandler = shutdownHandler\n }\n\n async getConfig(request: ProcessConfigRequest, context: CallContext): Promise<ProcessConfigResponse> {\n if (!this.started) {\n throw new ServerError(Status.UNAVAILABLE, 'Service Not started.')\n }\n return {\n // TODO project setting\n config: undefined,\n contractConfigs: this.contractConfigs,\n templateInstances: this.templateInstances,\n }\n }\n\n async configure() {\n this.eventHandlers = []\n this.templateInstances = []\n // this.processorsByChainId.clear()\n this.contractConfigs = []\n\n this.templateInstances = [...global.PROCESSOR_STATE.templatesInstances]\n\n // Part 1, prepare EVM processors\n for (const processor of global.PROCESSOR_STATE.processors) {\n // If server favor incremental update this need to change\n // Start basic config for contract\n const chainId = processor.getChainId()\n // this.processorsByChainId.set(chainId, processor)\n\n const contractConfig: ContractConfig = {\n processorType: 'user_processor',\n contract: {\n name: processor.config.name,\n chainId: chainId.toString(),\n address: processor.config.address,\n abi: '',\n },\n blockConfigs: [],\n logConfigs: [],\n startBlock: processor.config.startBlock,\n endBlock: DEFAULT_MAX_BLOCK,\n instructionConfig: undefined,\n }\n if (processor.config.endBlock) {\n contractConfig.endBlock = processor.config.endBlock\n }\n\n // Step 1. Prepare all the block handlers\n for (const blockHandler of processor.blockHandlers) {\n const handlerId = this.blockHandlers.push(blockHandler) - 1\n contractConfig.blockConfigs.push({\n handlerId: handlerId,\n })\n }\n\n // Step 2. Prepare all the event handlers\n for (const eventsHandler of processor.eventHandlers) {\n // associate id with filter\n const handlerId = this.eventHandlers.push(eventsHandler.handler) - 1\n const logConfig: LogHandlerConfig = {\n handlerId: handlerId,\n filters: [],\n }\n\n for (const filter of eventsHandler.filters) {\n if (!filter.topics) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Topic should not be null')\n }\n const logFilter: LogFilter = {\n topics: [],\n }\n\n for (const ts of filter.topics) {\n let hashes: string[] = []\n if (Array.isArray(ts)) {\n hashes = hashes.concat(ts)\n } else if (ts) {\n hashes.push(ts)\n }\n logFilter.topics.push({ hashes: hashes })\n }\n logConfig.filters.push(logFilter)\n }\n contractConfig.logConfigs.push(logConfig)\n }\n\n // Finish up a contract\n this.contractConfigs.push(contractConfig)\n }\n\n // Part 2, prepare solana constractors\n for (const solanaProcessor of global.PROCESSOR_STATE.solanaProcessors) {\n const contractConfig: ContractConfig = {\n processorType: 'user_processor',\n contract: {\n name: solanaProcessor.contractName,\n chainId: 'SOL:mainnet', // TODO set in processor\n address: solanaProcessor.address,\n abi: '',\n },\n blockConfigs: [],\n logConfigs: [],\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 }\n this.contractConfigs.push(contractConfig)\n }\n }\n\n async start(request: StartRequest, context: CallContext): Promise<Empty> {\n if (this.started) {\n return {}\n }\n\n this.loader()\n\n for (const instance of request.templateInstances) {\n const template = global.PROCESSOR_STATE.templates[instance.templateId]\n if (!template) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Invalid template contract:' + instance)\n }\n if (!instance.contract) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'Contract Empty from:' + instance)\n }\n template.bind({\n name: instance.contract.name,\n address: instance.contract.address,\n network: Number(instance.contract.chainId),\n startBlock: instance.startBlock,\n endBlock: instance.endBlock,\n })\n }\n await this.configure()\n this.started = true\n return {}\n }\n\n async stop(request: Empty, context: CallContext): Promise<Empty> {\n console.log('Server Shutting down in 5 seconds')\n if (this.shutdownHandler) {\n setTimeout(this.shutdownHandler, 5000)\n }\n return {}\n }\n\n async processLogs(request: ProcessLogsRequest, context: CallContext): Promise<ProcessLogsResponse> {\n if (!this.started) {\n throw new ServerError(Status.UNAVAILABLE, 'Service Not started.')\n }\n\n const resp: O11yResult = {\n gauges: [],\n counters: [],\n }\n\n const promises: Promise<O11yResult>[] = []\n for (const l of request.logBindings) {\n if (!l.log) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Log can't be null\")\n }\n // const jsonString = Buffer.from(l.log.raw.buffer).toString(\"utf-8\")\n // const jsonString = String.fromCharCode.apply(null, l.log.raw)\n\n try {\n const jsonString = Utf8ArrayToStr(l.log.raw)\n const log: Log = JSON.parse(jsonString)\n const handler = this.eventHandlers[l.handlerId]\n const promise = handler(log).catch((e) => {\n throw new ServerError(Status.INTERNAL, 'error processing log: ' + jsonString + '\\n' + e.toString())\n })\n\n promises.push(promise)\n } catch (e) {\n throw new ServerError(Status.INTERNAL, 'error parse log: ' + l)\n }\n }\n\n const results = await Promise.all(promises)\n for (const res of results) {\n resp.counters = resp.counters.concat(res.counters)\n resp.gauges = resp.gauges.concat(res.gauges)\n }\n\n let updated = false\n if (\n global.PROCESSOR_STATE.templatesInstances &&\n this.templateInstances.length != global.PROCESSOR_STATE.templatesInstances.length\n ) {\n await this.configure()\n updated = true\n }\n\n recordRuntimeInfo(resp, HandlerType.LOG)\n return {\n result: resp,\n configUpdated: updated,\n }\n }\n\n async processTransactions(\n request: ProcessTransactionsRequest,\n context: CallContext\n ): Promise<ProcessTransactionsResponse> {\n if (!this.started) {\n throw new ServerError(Status.UNAVAILABLE, 'Service not started.')\n }\n\n throw new ServerError(Status.UNIMPLEMENTED, 'Processing transaction is not suppored.')\n }\n\n async processInstructions(\n request: ProcessInstructionsRequest,\n context: CallContext\n ): Promise<ProcessInstructionsResponse> {\n if (!this.started) {\n throw new ServerError(Status.UNAVAILABLE, 'Service not started.')\n }\n\n const result: O11yResult = {\n gauges: [],\n counters: [],\n }\n\n // Only have instruction handlers for solana processors\n if (global.PROCESSOR_STATE.solanaProcessors) {\n const processorPromises: Promise<void>[] = []\n for (const instruction of request.instructions) {\n if (!instruction) {\n throw new ServerError(Status.INVALID_ARGUMENT, 'instruction cannot be null')\n }\n\n processorPromises.push(\n new Promise((resolve, _) => {\n for (const processor of global.PROCESSOR_STATE.solanaProcessors) {\n if (processor.address === instruction.programAccountId) {\n let res: O11yResult | null\n if (instruction.parsed) {\n res = processor.handleInstruction(JSON.parse(new TextDecoder().decode(instruction.parsed)))\n } else if (instruction.instructionData) {\n res = processor.handleInstruction(instruction.instructionData)\n } else {\n continue\n }\n if (res) {\n try {\n res.gauges.forEach((g) => {\n if (g.metadata) {\n g.metadata.blockNumber = instruction.slot\n }\n result.gauges.push(g)\n })\n res.counters.forEach((c) => {\n if (c.metadata) {\n c.metadata.blockNumber = instruction.slot\n }\n result.counters.push(c)\n })\n } catch (e) {\n console.error('error processing instruction ' + e.toString())\n }\n } else {\n console.warn(\n `Failed to decode the instruction: ${instruction.instructionData} with slot: ${instruction.slot}`\n )\n }\n }\n }\n resolve()\n })\n )\n }\n\n await Promise.all(processorPromises)\n }\n\n recordRuntimeInfo(result, HandlerType.INSTRUCTION)\n return {\n result,\n }\n }\n\n async processBlocks(request: ProcessBlocksRequest, context: CallContext): Promise<ProcessBlocksResponse> {\n if (!this.started) {\n throw new ServerError(Status.UNAVAILABLE, 'Service Not started.')\n }\n\n const promises = request.blockBindings.map((binding) => this.processBlock(binding))\n const results = await Promise.all(promises)\n\n const res = O11yResult.fromPartial({})\n\n for (const r of results) {\n res.counters = res.counters.concat(r.counters)\n res.gauges = res.gauges.concat(r.gauges)\n }\n\n recordRuntimeInfo(res, HandlerType.BLOCK)\n return {\n result: res,\n }\n }\n\n async processBlock(binding: BlockBinding): Promise<O11yResult> {\n if (!binding.block) {\n throw new ServerError(Status.INVALID_ARGUMENT, \"Block can't be empty\")\n }\n const jsonString = Utf8ArrayToStr(binding.block.raw)\n\n const block: Block = JSON.parse(jsonString)\n\n const resp: O11yResult = {\n gauges: [],\n counters: [],\n }\n\n const promises: Promise<O11yResult>[] = []\n for (const handlerId of binding.handlerIds) {\n const promise = this.blockHandlers[handlerId](block).catch((e) => {\n throw new ServerError(Status.INTERNAL, 'error processing block: ' + block.number + '\\n' + e.toString())\n })\n promises.push(promise)\n }\n const allRes = await Promise.all(promises)\n for (const res of allRes) {\n resp.counters = resp.counters.concat(res.counters)\n resp.gauges = resp.gauges.concat(res.gauges)\n }\n return resp\n }\n}\n\n// https://ourcodeworld.com/articles/read/164/how-to-convert-an-uint8array-to-string-in-javascript\n/* eslint-disable */\nfunction Utf8ArrayToStr(array: Uint8Array) {\n let out, i, len, c\n let char2, char3\n\n out = ''\n len = array.length\n i = 0\n while (i < len) {\n c = array[i++]\n switch (c >> 4) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n // 0xxxxxxx\n out += String.fromCharCode(c)\n break\n case 12:\n case 13:\n // 110x xxxx 10xx xxxx\n char2 = array[i++]\n out += String.fromCharCode(((c & 0x1f) << 6) | (char2 & 0x3f))\n break\n case 14:\n // 1110 xxxx 10xx xxxx 10xx xxxx\n char2 = array[i++]\n char3 = array[i++]\n out += String.fromCharCode(((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 & 0x3f) << 0))\n break\n }\n }\n\n return out\n}\n\nfunction recordRuntimeInfo(results: O11yResult, handlerType: HandlerType) {\n results.gauges.forEach((e) => {\n e.runtimeInfo = {\n from: handlerType,\n }\n })\n\n results.counters.forEach((e) => {\n e.runtimeInfo = {\n from: handlerType,\n }\n })\n}\n"]}
File without changes
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/solana/builtin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAqC;AACrC,uDAAoC","sourcesContent":["export * from './spl-token-processor'\nexport * from './wormhole-processor'"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spl-token-processor.js","sourceRoot":"","sources":["../../../src/solana/builtin/spl-token-processor.ts"],"names":[],"mappings":";;;AAAA,6DAA4D;AAM5D,MAAa,iBAAkB,SAAQ,sCAAmB;IACxD,MAAM,CAAC,IAAI,CAAC,OAA0B;QACpC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAC5B,OAAO,CAAC,IAAI,GAAG,mBAAmB,CAAA;SACnC;QACD,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC;IAED,qBAAqB,GAAqE,CAAC,WAAwC,EAAE,EAAE;QACrI,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAA;QACxC,IAAI,CAAC,eAAe,EAAE;YACpB,OAAO,IAAI,CAAA;SACZ;QACD,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE;gBACJ,GAAG,WAAW,CAAC,IAAI;aACpB;SACF,CAAA;IACH,CAAC,CAAA;IAEM,gBAAgB,CACrB,OAA2D;QAE3D,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YAC7D,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAsB,EAAE,GAAG,CAAC,CAAA;aACzC;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,mBAAmB,CACxB,OAA8D;QAE9D,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YAChE,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAyB,EAAE,GAAG,CAAC,CAAA;aAC5C;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,oBAAoB,CACzB,OAA+D;QAE/D,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YACjE,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAA0B,EAAE,GAAG,CAAC,CAAA;aAC7C;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,oBAAoB,CACzB,OAA+D;QAE/D,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YACjE,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAA0B,EAAE,GAAG,CAAC,CAAA;aAC7C;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,oBAAoB,CACzB,OAA+D;QAE/D,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YACjE,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAA0B,EAAE,GAAG,CAAC,CAAA;aAC7C;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,UAAU,CAAC,OAAqD;QACrE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YACvD,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAgB,EAAE,GAAG,CAAC,CAAA;aACnC;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,WAAW,CAAC,OAAoD;QACrE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YACtD,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAe,EAAE,GAAG,CAAC,CAAA;aAClC;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,QAAQ,CAAC,OAAmD;QACjE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YACrD,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAc,EAAE,GAAG,CAAC,CAAA;aACjC;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,cAAc,CAAC,OAAgD;QACpE,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YAC3D,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAW,EAAE,GAAG,CAAC,CAAA;aAC9B;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,QAAQ,CAAC,OAAmD;QACjE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YACrD,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAc,EAAE,GAAG,CAAC,CAAA;aACjC;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,MAAM,CAAC,OAAiD;QAC7D,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YACnD,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAY,EAAE,GAAG,CAAC,CAAA;aAC/B;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,cAAc,CAAC,OAAyD;QAC7E,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YAC3D,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAoB,EAAE,GAAG,CAAC,CAAA;aACvC;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,eAAe,CAAC,OAA0D;QAC/E,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YAC5D,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAqB,EAAE,GAAG,CAAC,CAAA;aACxC;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,aAAa,CAAC,OAAwD;QAC3E,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,GAAgB,EAAE,GAAG,EAAE,EAAE;YAC1D,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAmB,EAAE,GAAG,CAAC,CAAA;aACtC;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;CAEF;AA7JD,8CA6JC","sourcesContent":["import { SolanaBaseProcessor } from '../../solana-processor'\nimport { SolanaContext } from '../../context'\nimport { Instruction } from '@project-serum/anchor'\nimport { Approve, Burn, CloseAccount, FreezeAccount, InitializeAccount, InitializeAccount2, InitializeAccount3, InitializeMint, InitializeMultisig, MintTo, Revoke, ThawAccount, Transfer } from './types';\nimport { SolanaBindOptions } from '../../bind-options';\n\nexport class SPLTokenProcessor extends SolanaBaseProcessor {\n static bind(options: SolanaBindOptions): SPLTokenProcessor {\n if (options && !options.name) {\n options.name = 'SPL Token Program'\n }\n return new SPLTokenProcessor(options)\n }\n \n fromParsedInstruction: (instruction: { type: string, info: any }) => Instruction | null = (instruction: { type: string, info: any }) => {\n const instructionType = instruction.type\n if (!instructionType) {\n return null\n }\n return {\n name: instruction.type,\n data: {\n ...instruction.info,\n },\n }\n }\n\n public onInitializeMint(\n handler: (data: InitializeMint, ctx: SolanaContext) => void\n ): SPLTokenProcessor {\n this.onInstruction('initializeMint', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data as InitializeMint, ctx)\n }\n })\n return this\n }\n\n public onInitializeAccount(\n hanlder: (data: InitializeAccount, ctx: SolanaContext) => void\n ): SPLTokenProcessor {\n this.onInstruction('initializeAccount', (ins: Instruction, ctx) => {\n if (ins) {\n hanlder(ins.data as InitializeAccount, ctx)\n }\n })\n return this\n }\n\n public onInitializeAccount2(\n hanlder: (data: InitializeAccount2, ctx: SolanaContext) => void\n ): SPLTokenProcessor {\n this.onInstruction('initializeAccount2', (ins: Instruction, ctx) => {\n if (ins) {\n hanlder(ins.data as InitializeAccount2, ctx)\n }\n })\n return this\n }\n\n public onInitializeAccount3(\n hanlder: (data: InitializeAccount3, ctx: SolanaContext) => void\n ): SPLTokenProcessor {\n this.onInstruction('initializeAccount3', (ins: Instruction, ctx) => {\n if (ins) {\n hanlder(ins.data as InitializeAccount3, ctx)\n }\n })\n return this\n }\n\n public onInitializeMultisig(\n handler: (data: InitializeMultisig, ctx: SolanaContext) => void\n ): SPLTokenProcessor {\n this.onInstruction('initializeMultisig', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data as InitializeMultisig, ctx)\n }\n })\n return this\n }\n\n public onTransfer(handler: (data: Transfer, ctx: SolanaContext) => void): SPLTokenProcessor {\n this.onInstruction('transfer', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data as Transfer, ctx)\n }\n })\n return this\n }\n\n public onApprovend(handler: (data: Approve, ctx: SolanaContext) => void): SPLTokenProcessor {\n this.onInstruction('approve', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data as Approve, ctx)\n }\n })\n return this\n }\n\n public onRevoke(handler: (data: Revoke, ctx: SolanaContext) => void): SPLTokenProcessor {\n this.onInstruction('revoke', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data as Revoke, ctx)\n }\n })\n return this\n }\n\n public onSetAuthority(handler: (data: any, ctx: SolanaContext) => void): SPLTokenProcessor {\n this.onInstruction('setAuthority', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data as any, ctx)\n }\n })\n return this\n }\n\n public onMintTo(handler: (data: MintTo, ctx: SolanaContext) => void): SPLTokenProcessor {\n this.onInstruction('mintTo', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data as MintTo, ctx)\n }\n })\n return this\n }\n\n public onBurn(handler: (data: Burn, ctx: SolanaContext) => void): SPLTokenProcessor {\n this.onInstruction('burn', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data as Burn, ctx)\n }\n })\n return this\n }\n\n public onCloseAccount(handler: (data: CloseAccount, ctx: SolanaContext) => void): SPLTokenProcessor {\n this.onInstruction('closeAccount', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data as CloseAccount, ctx)\n }\n })\n return this\n }\n\n public onFreezeAccount(handler: (data: FreezeAccount, ctx: SolanaContext) => void): SPLTokenProcessor {\n this.onInstruction('freezeAccount', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data as FreezeAccount, ctx)\n }\n })\n return this\n }\n\n public onThawAccount(handler: (data: ThawAccount, ctx: SolanaContext) => void): SPLTokenProcessor {\n this.onInstruction('thawAccount', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data as ThawAccount, ctx)\n }\n })\n return this\n }\n // Todo(pcxu): auto gen this file\n}\n"]}
File without changes
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/solana/builtin/types.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-redeclare */\n// copy from https://github.com/solana-labs/solana/blob/master/explorer/src/components/instruction/token/types.ts\n\nimport {\n enums,\n type,\n Infer,\n number,\n string,\n optional,\n array,\n nullable,\n union,\n coerce,\n instance,\n} from \"superstruct\";\n\n// Replace with string\nexport const PublicKeyFromString = coerce(\n instance(String),\n string(),\n (value) => (value)\n);\n\nexport type TokenAmountUi = Infer<typeof TokenAmountUi>;\nexport type MintTo = Infer<typeof MintTo>;\nexport type Burn = Infer<typeof Burn>;\nexport type InitializeMint = Infer<typeof InitializeMint>;\nexport type InitializeAccount = Infer<typeof InitializeAccount>;\nexport type InitializeAccount2 = Infer<typeof InitializeAccount2>;\nexport type InitializeAccount3 = Infer<typeof InitializeAccount3>;\nexport type InitializeMultisig = Infer<typeof InitializeMultisig>;\n\nexport const TokenAmountUi = type({\n amount: string(),\n decimals: number(),\n uiAmountString: string(),\n});\n\nconst InitializeMint = type({\n mint: PublicKeyFromString,\n decimals: number(),\n mintAuthority: PublicKeyFromString,\n rentSysvar: PublicKeyFromString,\n freezeAuthority: optional(PublicKeyFromString),\n});\n\nconst InitializeAccount = type({\n account: PublicKeyFromString,\n mint: PublicKeyFromString,\n owner: PublicKeyFromString,\n rentSysvar: PublicKeyFromString,\n});\n\nconst InitializeAccount2 = type({\n account: PublicKeyFromString,\n mint: PublicKeyFromString,\n rentSysvar: PublicKeyFromString,\n owner: PublicKeyFromString,\n});\n\nconst InitializeAccount3 = type({\n account: PublicKeyFromString,\n mint: PublicKeyFromString,\n owner: PublicKeyFromString,\n});\n\nconst InitializeMultisig = type({\n multisig: PublicKeyFromString,\n rentSysvar: PublicKeyFromString,\n signers: array(PublicKeyFromString),\n m: number(),\n});\n\nexport type Transfer = Infer<typeof Transfer>;\nexport const Transfer = type({\n source: PublicKeyFromString,\n destination: PublicKeyFromString,\n amount: union([string(), number()]),\n authority: optional(PublicKeyFromString),\n multisigAuthority: optional(PublicKeyFromString),\n signers: optional(array(PublicKeyFromString)),\n});\n\nexport type Approve = Infer<typeof Approve>;\nconst Approve = type({\n source: PublicKeyFromString,\n delegate: PublicKeyFromString,\n amount: union([string(), number()]),\n owner: optional(PublicKeyFromString),\n multisigOwner: optional(PublicKeyFromString),\n signers: optional(array(PublicKeyFromString)),\n});\n\nexport type Revoke = Infer<typeof Revoke>;\nconst Revoke = type({\n source: PublicKeyFromString,\n owner: optional(PublicKeyFromString),\n multisigOwner: optional(PublicKeyFromString),\n signers: optional(array(PublicKeyFromString)),\n});\n\nconst AuthorityType = enums([\n \"mintTokens\",\n \"freezeAccount\",\n \"accountOwner\",\n \"closeAccount\",\n]);\n\nexport type SetAuthority = Infer<typeof SetAuthority>;\nconst SetAuthority = type({\n mint: optional(PublicKeyFromString),\n account: optional(PublicKeyFromString),\n authorityType: AuthorityType,\n newAuthority: nullable(PublicKeyFromString),\n authority: optional(PublicKeyFromString),\n multisigAuthority: optional(PublicKeyFromString),\n signers: optional(array(PublicKeyFromString)),\n});\n\nconst MintTo = type({\n mint: PublicKeyFromString,\n account: PublicKeyFromString,\n amount: union([string(), number()]),\n mintAuthority: optional(PublicKeyFromString),\n multisigMintAuthority: optional(PublicKeyFromString),\n signers: optional(array(PublicKeyFromString)),\n});\n\nconst Burn = type({\n account: PublicKeyFromString,\n mint: PublicKeyFromString,\n amount: union([string(), number()]),\n authority: optional(PublicKeyFromString),\n multisigAuthority: optional(PublicKeyFromString),\n signers: optional(array(PublicKeyFromString)),\n});\n\nconst CloseAccount = type({\n account: PublicKeyFromString,\n destination: PublicKeyFromString,\n owner: optional(PublicKeyFromString),\n multisigOwner: optional(PublicKeyFromString),\n signers: optional(array(PublicKeyFromString)),\n});\nexport type CloseAccount = Infer<typeof CloseAccount>;\n\nexport type FreezeAccount = Infer<typeof FreezeAccount>;\nconst FreezeAccount = type({\n account: PublicKeyFromString,\n mint: PublicKeyFromString,\n freezeAuthority: optional(PublicKeyFromString),\n multisigFreezeAuthority: optional(PublicKeyFromString),\n signers: optional(array(PublicKeyFromString)),\n});\n\nexport type ThawAccount = Infer<typeof ThawAccount>;\nconst ThawAccount = type({\n account: PublicKeyFromString,\n mint: PublicKeyFromString,\n freezeAuthority: optional(PublicKeyFromString),\n multisigFreezeAuthority: optional(PublicKeyFromString),\n signers: optional(array(PublicKeyFromString)),\n});\n\nexport type TransferChecked = Infer<typeof TransferChecked>;\nexport const TransferChecked = type({\n source: PublicKeyFromString,\n mint: PublicKeyFromString,\n destination: PublicKeyFromString,\n authority: optional(PublicKeyFromString),\n multisigAuthority: optional(PublicKeyFromString),\n signers: optional(array(PublicKeyFromString)),\n tokenAmount: TokenAmountUi,\n});\n\nexport type ApproveChecked = Infer<typeof ApproveChecked>;\nconst ApproveChecked = type({\n source: PublicKeyFromString,\n mint: PublicKeyFromString,\n delegate: PublicKeyFromString,\n owner: optional(PublicKeyFromString),\n multisigOwner: optional(PublicKeyFromString),\n signers: optional(array(PublicKeyFromString)),\n tokenAmount: TokenAmountUi,\n});\n\nexport type MintToChecked = Infer<typeof MintToChecked>;\nconst MintToChecked = type({\n account: PublicKeyFromString,\n mint: PublicKeyFromString,\n mintAuthority: optional(PublicKeyFromString),\n multisigMintAuthority: optional(PublicKeyFromString),\n signers: optional(array(PublicKeyFromString)),\n tokenAmount: TokenAmountUi,\n});\n\nexport type BurnChecked = Infer<typeof BurnChecked>;\nconst BurnChecked = type({\n account: PublicKeyFromString,\n mint: PublicKeyFromString,\n authority: optional(PublicKeyFromString),\n multisigAuthority: optional(PublicKeyFromString),\n signers: optional(array(PublicKeyFromString)),\n tokenAmount: TokenAmountUi,\n});\n\nconst SyncNative = type({\n account: PublicKeyFromString,\n});\n\nconst GetAccountDataSize = type({\n mint: PublicKeyFromString,\n extensionTypes: optional(array(string())),\n});\n\nconst InitializeImmutableOwner = type({\n account: PublicKeyFromString,\n});\n\nconst AmountToUiAmount = type({\n mint: PublicKeyFromString,\n amount: union([string(), number()]),\n});\n\nconst UiAmountToAmount = type({\n mint: PublicKeyFromString,\n uiAmount: string(),\n});\n\nconst InitializeMintCloseAuthority = type({\n mint: PublicKeyFromString,\n newAuthority: PublicKeyFromString,\n});\n\nconst TransferFeeExtension = type({\n mint: PublicKeyFromString,\n transferFeeConfigAuthority: PublicKeyFromString,\n withdrawWitheldAuthority: PublicKeyFromString,\n transferFeeBasisPoints: number(),\n maximumFee: number(),\n});\n\nconst DefaultAccountStateExtension = type({\n mint: PublicKeyFromString,\n accountState: string(),\n freezeAuthority: optional(PublicKeyFromString),\n});\n\nconst Reallocate = type({\n account: PublicKeyFromString,\n payer: PublicKeyFromString,\n systemProgram: PublicKeyFromString,\n extensionTypes: array(string()),\n});\n\nconst MemoTransferExtension = type({\n account: PublicKeyFromString,\n owner: optional(PublicKeyFromString),\n multisigOwner: optional(PublicKeyFromString),\n signers: optional(array(PublicKeyFromString)),\n});\n\nconst CreateNativeMint = type({\n payer: PublicKeyFromString,\n nativeMint: PublicKeyFromString,\n systemProgram: PublicKeyFromString,\n});\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wormhole-processor.js","sourceRoot":"","sources":["../../../src/solana/builtin/wormhole-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import { SolanaBaseProcessor } from '../../solana-processor'\nimport { SolanaContext } from '../../context'\nimport { SolanaBindOptions } from '../../bind-options'\nimport { Instruction } from '@project-serum/anchor'\nimport * as borsh from '@project-serum/borsh'\nimport bs58 from 'bs58'\n\n// https://github.com/certusone/wormhole/blob/8818d4b8f0471095dd48fa6f5da9c315cbfc9b52/solana/modules/token_bridge/program/src/lib.rs#L100\nenum TokenBrigeInstruction {\n Initialize = 0,\n AttestToken,\n CompleteNative, // no args\n CompleteWrapped, // no args\n TransferWrapped,\n TransferNative,\n RegisterChain, // no args\n CreateWrapped, // no args\n UpgradeContract, // no args\n CompleteNativeWithPayload, // no args\n CompleteWrappedWithPayload, // no args\n TransferWrappedWithPayload,\n TransferNativeWithPayload,\n}\n\nexport class TokenBridgeProcessor extends SolanaBaseProcessor {\n\n private readonly transferDataValues = [\n borsh.u32('nonce'),\n borsh.u64('amount'),\n borsh.u64('fee'),\n borsh.array(borsh.u8(undefined), 32, 'target_address'),\n borsh.u16('target_chain')\n ]\n // https://github.com/certusone/wormhole/blob/8818d4b8f0471095dd48fa6f5da9c315cbfc9b52/solana/modules/token_bridge/program/src/api/transfer_payload.rs#L170\n private readonly transferDataWithPayloadValues = [\n borsh.u32('nonce'),\n borsh.u64('amount'),\n borsh.array(borsh.u8(undefined), 32, 'target_address'),\n borsh.u16('target_chain'),\n borsh.vecU8('payload'),\n borsh.option(borsh.publicKey(undefined), 'cpi_program_id')\n ]\n private readonly attestTokenValues = [\n borsh.u32('nonce')\n ]\n private readonly initializeDataValues = [\n borsh.publicKey('bridge')\n ]\n\n static bind(options: SolanaBindOptions): TokenBridgeProcessor {\n return new TokenBridgeProcessor(options)\n }\n\n decodeInstruction: (rawInstruction: string) => Instruction | null = (ins) => {\n const u8Arr = bs58.decode(ins)\n if (u8Arr.length === 0) {\n return null\n }\n\n let data: any\n // wormhole pass intruction's enum value as its first instrcution data\n switch (u8Arr[0]) {\n case TokenBrigeInstruction.Initialize:\n return {\n data: '',\n name: TokenBrigeInstruction[TokenBrigeInstruction.Initialize]\n }\n case TokenBrigeInstruction.TransferNative:\n // struct is defined at: https://github.com/certusone/wormhole/blob/8818d4b8f0471095dd48fa6f5da9c315cbfc9b52/solana/modules/token_bridge/program/src/api/transfer.rs#L295\n data = borsh.struct(this.transferDataValues, 'TransferNativeData').decode(Buffer.from(u8Arr.slice(1)))\n return {\n data,\n name: TokenBrigeInstruction[TokenBrigeInstruction.TransferNative]\n }\n case TokenBrigeInstruction.TransferWrapped:\n // stuct is defined at: https://github.com/certusone/wormhole/blob/8818d4b8f0471095dd48fa6f5da9c315cbfc9b52/solana/modules/token_bridge/program/src/api/transfer.rs#L295\n data = borsh.struct(this.transferDataValues, 'TransferWrappedData').decode(Buffer.from(u8Arr.slice(1)))\n return {\n data,\n name: TokenBrigeInstruction[TokenBrigeInstruction.TransferWrapped]\n }\n case TokenBrigeInstruction.TransferNativeWithPayload:\n data = borsh.struct(this.transferDataWithPayloadValues, 'TransferNativeWithPayloadData').decode(Buffer.from(u8Arr.slice(1)))\n return {\n data,\n name: TokenBrigeInstruction[TokenBrigeInstruction.TransferNativeWithPayload]\n }\n case TokenBrigeInstruction.TransferWrappedWithPayload:\n data = borsh.struct(this.transferDataWithPayloadValues, 'TransferWrappedWithPayloadData').decode(Buffer.from(u8Arr.slice(1)))\n return {\n data,\n name: TokenBrigeInstruction[TokenBrigeInstruction.TransferWrappedWithPayload]\n }\n case TokenBrigeInstruction.Initialize:\n data = borsh.struct(this.initializeDataValues, 'InitializeData').decode(Buffer.from(u8Arr.slice(1)))\n return {\n data,\n name: TokenBrigeInstruction[TokenBrigeInstruction.Initialize]\n }\n case TokenBrigeInstruction.AttestToken:\n data = borsh.struct(this.attestTokenValues, 'AttestTokenData').decode(Buffer.from(u8Arr.slice(1)))\n return {\n data,\n name: TokenBrigeInstruction[TokenBrigeInstruction.AttestToken]\n }\n case TokenBrigeInstruction.CompleteNative:\n case TokenBrigeInstruction.CompleteNativeWithPayload:\n case TokenBrigeInstruction.CompleteWrapped:\n case TokenBrigeInstruction.CompleteWrappedWithPayload:\n case TokenBrigeInstruction.CreateWrapped:\n case TokenBrigeInstruction.UpgradeContract:\n case TokenBrigeInstruction.RegisterChain:\n return {\n data: '',\n name: TokenBrigeInstruction[u8Arr[0]]\n }\n\n default:\n return null\n }\n }\n\n onInitialize(handler: (args: any, ctx: SolanaContext) => void): TokenBridgeProcessor {\n this.onInstruction('Initialize', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data, ctx)\n }\n })\n return this\n }\n\n onAttestToken(handler: (args: any, ctx: SolanaContext) => void): TokenBridgeProcessor {\n this.onInstruction('AttestToken', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data, ctx)\n }\n })\n return this\n }\n\n\n onTransferWrapped(handler: (args: any, ctx: SolanaContext) => void): TokenBridgeProcessor {\n this.onInstruction('TransferWrapped', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data, ctx)\n }\n })\n return this\n }\n\n onTransferNativeWithPayload(handler: (args: any, ctx: SolanaContext) => void): TokenBridgeProcessor {\n this.onInstruction('TransferNativeWithPayload', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data, ctx)\n }\n })\n return this\n }\n\n onTransferWrappedWithPaylod(handler: (args: any, ctx: SolanaContext) => void): TokenBridgeProcessor {\n this.onInstruction('TransferWrappedWithPaylod', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data, ctx)\n }\n })\n return this\n }\n\n onTransferNative(handler: (args: any, ctx: SolanaContext) => void): TokenBridgeProcessor {\n this.onInstruction('TransferNative', (ins: Instruction, ctx) => {\n if (ins) {\n handler(ins.data, ctx)\n }\n })\n return this\n }\n}\n "]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solana-processor.js","sourceRoot":"","sources":["../src/solana-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import { O11yResult } from './gen/processor/protos/processor'\nimport { SolanaContext } from './context'\nimport Long from 'long'\nimport { Instruction } from '@project-serum/anchor'\nimport { SolanaBindOptions } from './bind-options'\n\ntype IndexConfigure = {\n startSlot: Long\n endSlot?: Long\n}\n\nexport class SolanaBaseProcessor {\n public instructionHanlderMap: Map<string, (instruction: Instruction, ctx: SolanaContext) => void> = new Map()\n address: string\n endpoint: string\n contractName: string\n processInnerInstruction: boolean\n config: IndexConfigure = { startSlot: new Long(0) }\n decodeInstruction: (rawInstruction: string) => Instruction | null\n fromParsedInstruction: (instruction: { type: string; info: any }) => Instruction | null\n\n constructor(options: SolanaBindOptions) {\n if (options) {\n this.bind(options)\n }\n global.PROCESSOR_STATE.solanaProcessors.push(this)\n }\n\n bind(options: SolanaBindOptions) {\n this.address = options.address\n this.contractName = options.name || ''\n this.processInnerInstruction = options.processInnerInstruction || false\n if (options.startBlock) {\n this.startSlot(options.startBlock)\n }\n if (options.endBlock) {\n this.endBlock(options.endBlock)\n }\n this.endpoint = options.network || 'https://api.mainnet-beta.solana.com'\n }\n\n innerInstruction(flag: boolean) {\n this.processInnerInstruction = flag\n return this\n }\n\n public onInstruction(instructionName: string, handler: (instruction: Instruction, ctx: SolanaContext) => void) {\n if (!this.isBind()) {\n throw new Error(\"Processor doesn't bind to an address\")\n }\n\n this.instructionHanlderMap.set(instructionName, handler)\n\n return this\n }\n\n public handleInstruction(ins: string | { type: string; info: any }): O11yResult | null {\n const ctx = new SolanaContext(this.address)\n let parsedInstruction: Instruction | null = null\n\n if (ins) {\n if ((ins as { type: string; info: any }).info) {\n if (this.fromParsedInstruction == null) {\n return null\n }\n parsedInstruction = this.fromParsedInstruction(ins as { type: string; info: any })\n } else {\n if (this.decodeInstruction == null) {\n return null\n }\n parsedInstruction = this.decodeInstruction(ins as string)\n }\n if (parsedInstruction) {\n const handler = this.instructionHanlderMap.get(parsedInstruction.name)\n if (handler) {\n handler(parsedInstruction, ctx)\n }\n }\n }\n return {\n gauges: ctx.gauges,\n counters: ctx.counters,\n }\n }\n\n public isBind() {\n return this.address !== null\n }\n\n public startSlot(startSlot: Long | number) {\n if (typeof startSlot === 'number') {\n startSlot = Long.fromNumber(startSlot)\n }\n this.config.startSlot = startSlot\n return this\n }\n\n public endBlock(endBlock: Long | number) {\n if (typeof endBlock === 'number') {\n endBlock = Long.fromNumber(endBlock)\n }\n this.config.endSlot = endBlock\n return this\n }\n}\n"]}
File without changes
@@ -34,7 +34,7 @@ describe('Test EVM codegen', () => {
34
34
  const codeGenFolder = fs.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'codegen_test'));
35
35
  jest.setTimeout(20000);
36
36
  test('code gen for anyswapRouter', async () => {
37
- await (0, build_1.codeGenEthersProcessor)(path_1.default.join(__dirname, 'abis/evm'), 'dist/target-ethers-sentio', `${codeGenFolder}/internal`);
37
+ await (0, build_1.codeGenEthersProcessor)(path_1.default.join(__dirname, 'abis/evm'), 'lib/target-ethers-sentio', `${codeGenFolder}/internal`);
38
38
  expect(fs.existsSync(codeGenFolder)).toEqual(true);
39
39
  expect(fs.readdirSync(codeGenFolder).length).toEqual(2);
40
40
  });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen.test.js","sourceRoot":"","sources":["../../src/test/codegen.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wCAAqD;AACrD,gDAAuB;AACvB,uCAAwB;AACxB,4CAAmB;AAEnB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,aAAa,GAAG,EAAE,CAAC,WAAW,CAAC,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAA;IAE5E,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAEtB,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,IAAA,8BAAsB,EAC1B,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAChC,0BAA0B,EAC1B,GAAG,aAAa,WAAW,CAC5B,CAAA;QACD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAClD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,GAAG,EAAE;QACZ,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;YAChC,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;SAC3D;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { codeGenEthersProcessor } from '../cli/build'\nimport path from 'path'\nimport * as fs from 'fs'\nimport os from 'os'\n\ndescribe('Test EVM codegen', () => {\n const codeGenFolder = fs.mkdtempSync(path.join(os.tmpdir(), 'codegen_test'))\n\n jest.setTimeout(20000)\n\n test('code gen for anyswapRouter', async () => {\n await codeGenEthersProcessor(\n path.join(__dirname, 'abis/evm'),\n 'lib/target-ethers-sentio',\n `${codeGenFolder}/internal`\n )\n expect(fs.existsSync(codeGenFolder)).toEqual(true)\n expect(fs.readdirSync(codeGenFolder).length).toEqual(2)\n })\n\n afterAll(() => {\n if (fs.existsSync(codeGenFolder)) {\n fs.rmSync(codeGenFolder, { recursive: true, force: true })\n }\n })\n})\n"]}
File without changes
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc20-template.js","sourceRoot":"","sources":["../../src/test/erc20-template.ts"],"names":[],"mappings":";;;AAAA,4CAAyE;AAE5D,QAAA,MAAM,GAAG,sBAAc,CAAC,OAAO,CAAC,QAAQ,CACnD,4CAA4C,EAC5C,4CAA4C,CAC7C,CAAA;AAED,MAAM,iBAAiB,GAAG,IAAI,8BAAsB,EAAE,CAAC,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,sBAAc,CAAC,IAAI,CAAC;IAClB,OAAO,EAAE,4CAA4C;IACrD,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,QAAQ;CACrB,CAAC,CAAC,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACtC,iBAAiB,CAAC,IAAI,CAAC;QACrB,OAAO,EAAE,4CAA4C;QACrD,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,SAAS;KAChB,CAAC,CAAA;IACF,4EAA4E;IAC5E,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,EAAE,cAAM,CAAC,CAAA","sourcesContent":["import { Erc20Processor, Erc20ProcessorTemplate } from '../builtin/erc20'\n\nexport const filter = Erc20Processor.filters.Transfer(\n '0x0000000000000000000000000000000000000000',\n '0xb329e39ebefd16f40d38f07643652ce17ca5bac1'\n)\n\nconst processorTemplate = new Erc20ProcessorTemplate().onTransfer(async function (event, ctx) {\n console.log('')\n})\n\nErc20Processor.bind({\n address: '0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9',\n network: 1,\n name: 'x2y2',\n startBlock: 14201940,\n}).onTransfer(async function (event, ctx) {\n processorTemplate.bind({\n address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n network: 3,\n name: 'dynamic',\n })\n // template.bind('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 3, 'dynamic')\n ctx.meter.Counter('c1').add(1)\n}, filter)\n"]}
File without changes
@@ -8,10 +8,8 @@ const chai_1 = require("chai");
8
8
  const long_1 = __importDefault(require("long"));
9
9
  const test_processor_server_1 = require("./test-processor-server");
10
10
  describe('Test Template', () => {
11
- const service = new test_processor_server_1.TestProcessorServer();
11
+ const service = new test_processor_server_1.TestProcessorServer(() => require('./erc20-template'));
12
12
  beforeAll(async () => {
13
- service.setup();
14
- require('./erc20-template');
15
13
  const request = {
16
14
  templateInstances: [
17
15
  {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc20-template.test.js","sourceRoot":"","sources":["../../src/test/erc20-template.test.ts"],"names":[],"mappings":";AAAA,gCAAgC;;;;;AAEhC,+BAA6B;AAG7B,gDAAuB;AACvB,mEAA6D;AAE7D,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,OAAO,GAAG,IAAI,2CAAmB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAA;IAE1E,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,OAAO,GAAiB;YAC5B,iBAAiB,EAAE;gBACjB;oBACE,QAAQ,EAAE;wBACR,OAAO,EAAE,UAAU;wBACnB,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE,GAAG;wBACZ,GAAG,EAAE,EAAE;qBACR;oBACD,UAAU,EAAE,cAAI,CAAC,IAAI;oBACrB,QAAQ,EAAE,cAAI,CAAC,IAAI;oBACnB,UAAU,EAAE,CAAC;iBACd;aACF;SACF,CAAA;QACD,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC5C,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;QACxC,IAAA,aAAM,EAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACrE,IAAA,aAAM,EAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["// TODO move out of this package\n\nimport { expect } from 'chai'\n\nimport { StartRequest } from '..'\nimport Long from 'long'\nimport { TestProcessorServer } from './test-processor-server'\n\ndescribe('Test Template', () => {\n const service = new TestProcessorServer(() => require('./erc20-template'))\n\n beforeAll(async () => {\n const request: StartRequest = {\n templateInstances: [\n {\n contract: {\n address: 'dynamic2',\n name: 'dynamic2',\n chainId: '1',\n abi: '',\n },\n startBlock: Long.ZERO,\n endBlock: Long.ZERO,\n templateId: 0,\n },\n ],\n }\n await service.start(request)\n })\n\n test('Check template instantiate', async () => {\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(2)\n expect(config.contractConfigs?.[1].contract?.name).equals('dynamic2')\n expect(config.templateInstances).length(1)\n })\n})\n"]}
File without changes
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../src/test/erc20.ts"],"names":[],"mappings":";;;AAAA,4CAAyE;AAE5D,QAAA,MAAM,GAAG,sBAAc,CAAC,OAAO,CAAC,QAAQ,CACnD,4CAA4C,EAC5C,4CAA4C,CAC7C,CAAA;AAED,MAAM,iBAAiB,GAAG,IAAI,8BAAsB,EAAE,CAAC,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,sBAAc,CAAC,IAAI,CAAC;IAClB,OAAO,EAAE,4CAA4C;IACrD,cAAc;IACd,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,QAAQ;CACrB,CAAC;KACC,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACpC,iBAAiB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,4CAA4C,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;IAC9G,4EAA4E;IAC5E,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,EAAE,cAAM,CAAC;KACT,OAAO,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACjC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA;AAEJ,sBAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,4CAA4C,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KACtG,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACpC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,EAAE,cAAM,CAAC;KACT,OAAO,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACjC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA;AACJ,wBAAwB;AAExB,sBAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;AAErD,sBAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;AACpD,sBAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;AACpD,sBAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAA;AAEpE,2CAA2C;AAC3C,8CAA8C;AAC9C,qCAAqC;AACrC,eAAe;AACf,2CAA2C;AAC3C,mDAAmD;AACnD,OAAO","sourcesContent":["import { Erc20Processor, Erc20ProcessorTemplate } from '../builtin/erc20'\n\nexport const filter = Erc20Processor.filters.Transfer(\n '0x0000000000000000000000000000000000000000',\n '0xb329e39ebefd16f40d38f07643652ce17ca5bac1'\n)\n\nconst processorTemplate = new Erc20ProcessorTemplate().onTransfer(async function (event, ctx) {\n console.log('')\n})\n\nErc20Processor.bind({\n address: '0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9',\n // network: 1,\n name: 'x2y2',\n startBlock: 14201940,\n})\n .onTransfer(async function (event, ctx) {\n processorTemplate.bind({ address: '0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9', network: 3, name: 'dynamic' })\n // template.bind('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 3, 'dynamic')\n ctx.meter.Counter('c1').add(1)\n }, filter)\n .onBlock(async function (block, ctx) {\n ctx.meter.Gauge('g1').record(10, { k: 'v' })\n })\n\nErc20Processor.bind({ address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', network: 56, name: 'usdc' })\n .onTransfer(async function (event, ctx) {\n ctx.meter.Counter('c2').add(2)\n }, filter)\n .onBlock(async function (block, ctx) {\n ctx.meter.Gauge('g2').record(20, { k: 'v' })\n })\n// .startBlock(14201940)\n\nErc20Processor.bind({ address: 'xxxx', network: 56 })\n\nErc20Processor.bind({ address: 'yyyy', network: 1 })\nErc20Processor.bind({ address: 'yyyy', network: 1 })\nErc20Processor.bind({ address: 'yyyy', network: 1, startBlock: 21 })\n\n// const template = Erc20Processor.template\n// .onTransfer(async function (event, ctx) {\n// ctx.meter.Counter('c2').add(2)\n// }, filter)\n// .onBlock(async function (block, ctx) {\n// ctx.meter.Gauge('h1').record(20, { k: 'v' })\n// })\n"]}
File without changes
@@ -8,10 +8,8 @@ const metric_utils_1 = require("./metric-utils");
8
8
  const ethers_1 = require("ethers");
9
9
  const test_utils_1 = require("../builtin/erc20/test-utils");
10
10
  describe('Test Basic Examples', () => {
11
- const service = new test_processor_server_1.TestProcessorServer();
11
+ const service = new test_processor_server_1.TestProcessorServer(() => require('./erc20'));
12
12
  beforeAll(async () => {
13
- service.setup();
14
- require('./erc20');
15
13
  await service.start();
16
14
  });
17
15
  test('check configuration', async () => {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc20.test.js","sourceRoot":"","sources":["../../src/test/erc20.test.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO move out of this package\n\nimport { expect } from 'chai'\n\nimport { HandlerType } from '..'\n\nimport { TestProcessorServer } from './test-processor-server'\nimport { firstCounterValue, firstGaugeValue } from './metric-utils'\nimport { BigNumber } from 'ethers'\nimport { mockTransferLog } from '../builtin/erc20/test-utils'\n\ndescribe('Test Basic Examples', () => {\n const service = new TestProcessorServer(() => require('./erc20'))\n\n beforeAll(async () => {\n await service.start()\n })\n\n test('check configuration', async () => {\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(5)\n\n // check auto rename\n expect(config.contractConfigs?.[2].contract?.name).equals('Erc20')\n expect(config.contractConfigs?.[3].contract?.name).equals('Erc20_1')\n // same as above because only differ in parameters\n expect(config.contractConfigs?.[4].contract?.name).equals('Erc20_1')\n })\n\n test('Check block dispatch', async () => {\n const res = await service.testBlock(blockData)\n const o11yRes = res.result\n expect(o11yRes?.counters).length(0)\n expect(o11yRes?.gauges).length(1)\n expect(firstGaugeValue(o11yRes, 'g1')).equals(10n)\n\n const gauge = o11yRes?.gauges?.[0]\n expect(gauge?.metadata?.blockNumber?.toString()).equals('14373295')\n expect(gauge?.runtimeInfo?.from).equals(HandlerType.BLOCK)\n\n const res2 = await service.testBlock(blockData, 56)\n const o11yRes2 = res2.result\n expect(o11yRes2?.counters).length(0)\n expect(o11yRes2?.gauges).length(1)\n expect(firstGaugeValue(o11yRes2, 'g2')).equals(20n)\n })\n\n test('Check log dispatch', async () => {\n const logData = mockTransferLog('0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9', {\n from: '0x0000000000000000000000000000000000000000',\n to: '0xB329e39Ebefd16f40d38f07643652cE17Ca5Bac1',\n value: BigNumber.from('0x9a71db64810aaa0000'),\n })\n\n let res = await service.testLog(logData)\n\n const counters = res.result?.counters\n expect(counters).length(1)\n expect(firstCounterValue(res.result, 'c1')).equals(1n)\n\n expect(counters?.[0].metadata?.chainId).equals('1')\n expect(counters?.[0].runtimeInfo?.from).equals(HandlerType.LOG)\n expect(res.configUpdated).equals(true)\n\n const logData2 = Object.assign({}, logData)\n logData2.address = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'\n res = await service.testLog(logData2, 56)\n\n expect(firstCounterValue(res.result, 'c2')).equals(2n)\n expect(res.result?.counters[0].metadata?.chainId).equals('56')\n\n expect(res.result?.gauges).length(0)\n\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(6) //config increased\n expect(config.contractConfigs?.[5].contract?.name).equals('dynamic')\n\n // repeat trigger won't bind again\n await service.testLogs([logData])\n const config2 = await service.getConfig({})\n expect(config).deep.equals(config2)\n })\n\n const blockData = {\n hash: '0x2b9b7cce1f17f3b7e1f3c2472cc806a07bee3f0baca07d021350950d81d73a42',\n number: 14373295,\n timestamp: 1647106437,\n extraData: '0xe4b883e5bda9e7a59ee4bb99e9b1bc493421',\n }\n})\n"]}
File without changes
@@ -7,20 +7,25 @@ const generic_processor_1 = require("../generic-processor");
7
7
  const test_processor_server_1 = require("./test-processor-server");
8
8
  const metric_utils_1 = require("./metric-utils");
9
9
  describe('Test Generic Processor', () => {
10
- const service = new test_processor_server_1.TestProcessorServer();
11
- beforeAll(async () => {
12
- service.setup();
10
+ const service = new test_processor_server_1.TestProcessorServer(() => {
13
11
  generic_processor_1.GenericProcessor.bind([
14
12
  'event Transfer(address indexed from, address indexed to, uint256 value)',
15
13
  'event Approval(address indexed from, address indexed to, uint256 value)',
16
14
  ], { address: '0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9' }).onAllEvents(function (log, ctx) {
17
15
  ctx.meter.Counter('event_num').add(1);
18
16
  });
17
+ generic_processor_1.GenericProcessor.bind('event WalletCreated(address wallet, address owner)', {
18
+ address: '0x57E037F4d2c8BEa011Ad8a9A5AF4AaEEd508650f',
19
+ }).onAllEvents(function (log, ctx) {
20
+ ctx.meter.Counter('wallet').add(1);
21
+ });
22
+ });
23
+ beforeAll(async () => {
19
24
  await service.start();
20
25
  });
21
26
  test('check configuration', async () => {
22
27
  const config = await service.getConfig({});
23
- (0, chai_1.expect)(config.contractConfigs).length(1);
28
+ (0, chai_1.expect)(config.contractConfigs).length(2);
24
29
  (0, chai_1.expect)(config.contractConfigs?.[0].contract?.name).equals('Generic');
25
30
  });
26
31
  test('Check log dispatch', async () => {
@@ -30,6 +35,11 @@ describe('Test Generic Processor', () => {
30
35
  (0, chai_1.expect)((0, metric_utils_1.firstCounterValue)(res.result, 'event_num')).equals(1n);
31
36
  (0, chai_1.expect)(counters?.[0].runtimeInfo?.from).equals(__1.HandlerType.LOG);
32
37
  });
38
+ test('Check log dispatch no buffer over rune', async () => {
39
+ const logStr = '{"address":"0x57e037f4d2c8bea011ad8a9a5af4aaeed508650f","topics":["0x5b03bfed1c14a02bdeceb5fa582eb1a5765fc0bc64ca0e6af4c20afc9487f081"],"data":"0x00000000000000000000000093269483a70c68d5c5bb63aac1e8f4ac59f498800000000000000000000000000c520e51c055cf63bab075715c1b860b2e9b8e24","blockNumber":"0xc9d6d7","transactionHash":"0x208af3250499672c2f07138b9aa236153c65c78ae4341b23c2763017afdd61a2","transactionIndex":"0xf3","blockHash":"0x6e3b100c34b510049e922fbe1c1dab1b0793be3d1229b632688e6a518cdd11b6","logIndex":"0x14b","removed":false}';
40
+ const res = await service.testLog(JSON.parse(logStr));
41
+ console.log(JSON.stringify(res));
42
+ });
33
43
  const logData = {
34
44
  blockNumber: 14213252,
35
45
  blockHash: '0x83d646fac9350b281def8c4c37626f9d8efc95df801287b848c719edf35cdbaf',
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic-processor.test.js","sourceRoot":"","sources":["../../src/test/generic-processor.test.ts"],"names":[],"mappings":";AAAA,gCAAgC;;AAEhC,+BAA6B;AAE7B,0BAAgC;AAEhC,4DAAuD;AACvD,mEAA6D;AAC7D,iDAAkD;AAElD,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,MAAM,OAAO,GAAG,IAAI,2CAAmB,CAAC,GAAG,EAAE;QAC3C,oCAAgB,CAAC,IAAI,CACnB;YACE,yEAAyE;YACzE,yEAAyE;SAC1E,EACD,EAAE,OAAO,EAAE,4CAA4C,EAAE,CAC1D,CAAC,WAAW,CAAC,UAAU,GAAG,EAAE,GAAG;YAC9B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACvC,CAAC,CAAC,CAAA;QAEF,oCAAgB,CAAC,IAAI,CAAC,oDAAoD,EAAE;YAC1E,OAAO,EAAE,4CAA4C;SACtD,CAAC,CAAC,WAAW,CAAC,UAAU,GAAG,EAAE,GAAG;YAC/B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,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;QACxC,IAAA,aAAM,EAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;QACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAA;QACrC,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC1B,IAAA,aAAM,EAAC,IAAA,gCAAiB,EAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC7D,IAAA,aAAM,EAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,eAAW,CAAC,GAAG,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,MAAM,GACV,ohBAAohB,CAAA;QACthB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QACrD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG;QACd,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,oEAAoE;QAC/E,gBAAgB,EAAE,GAAG;QACrB,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,4CAA4C;QACrD,IAAI,EAAE,oEAAoE;QAC1E,MAAM,EAAE;YACN,oEAAoE;YACpE,oEAAoE;YACpE,oEAAoE;SACrE;QACD,eAAe,EAAE,oEAAoE;QACrF,QAAQ,EAAE,GAAG;KACd,CAAA;AACH,CAAC,CAAC,CAAA","sourcesContent":["// TODO move out of this package\n\nimport { expect } from 'chai'\n\nimport { HandlerType } from '..'\n\nimport { GenericProcessor } from '../generic-processor'\nimport { TestProcessorServer } from './test-processor-server'\nimport { firstCounterValue } from './metric-utils'\n\ndescribe('Test Generic Processor', () => {\n const service = new TestProcessorServer(() => {\n GenericProcessor.bind(\n [\n 'event Transfer(address indexed from, address indexed to, uint256 value)',\n 'event Approval(address indexed from, address indexed to, uint256 value)',\n ],\n { address: '0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9' }\n ).onAllEvents(function (log, ctx) {\n ctx.meter.Counter('event_num').add(1)\n })\n\n GenericProcessor.bind('event WalletCreated(address wallet, address owner)', {\n address: '0x57E037F4d2c8BEa011Ad8a9A5AF4AaEEd508650f',\n }).onAllEvents(function (log, ctx) {\n ctx.meter.Counter('wallet').add(1)\n })\n })\n\n beforeAll(async () => {\n await service.start()\n })\n\n test('check configuration', async () => {\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(2)\n expect(config.contractConfigs?.[0].contract?.name).equals('Generic')\n })\n\n test('Check log dispatch', async () => {\n const res = await service.testLogs([logData, logData])\n const counters = res.result?.counters\n expect(counters).length(2)\n expect(firstCounterValue(res.result, 'event_num')).equals(1n)\n expect(counters?.[0].runtimeInfo?.from).equals(HandlerType.LOG)\n })\n\n test('Check log dispatch no buffer over rune', async () => {\n const logStr =\n '{\"address\":\"0x57e037f4d2c8bea011ad8a9a5af4aaeed508650f\",\"topics\":[\"0x5b03bfed1c14a02bdeceb5fa582eb1a5765fc0bc64ca0e6af4c20afc9487f081\"],\"data\":\"0x00000000000000000000000093269483a70c68d5c5bb63aac1e8f4ac59f498800000000000000000000000000c520e51c055cf63bab075715c1b860b2e9b8e24\",\"blockNumber\":\"0xc9d6d7\",\"transactionHash\":\"0x208af3250499672c2f07138b9aa236153c65c78ae4341b23c2763017afdd61a2\",\"transactionIndex\":\"0xf3\",\"blockHash\":\"0x6e3b100c34b510049e922fbe1c1dab1b0793be3d1229b632688e6a518cdd11b6\",\"logIndex\":\"0x14b\",\"removed\":false}'\n const res = await service.testLog(JSON.parse(logStr))\n console.log(JSON.stringify(res))\n })\n\n const logData = {\n blockNumber: 14213252,\n blockHash: '0x83d646fac9350b281def8c4c37626f9d8efc95df801287b848c719edf35cdbaf',\n transactionIndex: 347,\n removed: false,\n address: '0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9',\n data: '0x00000000000000000000000000000000000000000000009a71db64810aaa0000',\n topics: [\n '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n '0x0000000000000000000000000000000000000000000000000000000000000000',\n '0x000000000000000000000000b329e39ebefd16f40d38f07643652ce17ca5bac1',\n ],\n transactionHash: '0x93355e0cb2c3490cb8a747029ff2dc8cdbde2407025b8391398436955afae303',\n logIndex: 428,\n }\n})\n"]}
File without changes
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":";;;AAAA,iEAA6D;AAApD,4HAAA,mBAAmB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":";;;AAAA,iEAA6D;AAApD,4HAAA,mBAAmB,OAAA","sourcesContent":["export { TestProcessorServer } from './test-processor-server'\n"]}
File without changes
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metric-utils.js","sourceRoot":"","sources":["../../src/test/metric-utils.ts"],"names":[],"mappings":";;;AACA,qCAAiE;AAEjE,mCAAkC;AAElC,SAAgB,mBAAmB,CAAC,CAAuC;IACzE,IAAI,CAAC,KAAK,SAAS,EAAE;QACnB,OAAO,SAAS,CAAA;KACjB;IAED,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,EAAE;QAC/B,OAAO,CAAC,CAAC,WAAW,CAAA;KACrB;IACD,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,EAAE;QAC9B,IAAI,QAAQ,GAAG,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;QAC3D,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE;YACzB,QAAQ,GAAG,CAAC,QAAQ,CAAA;SACrB;QACD,OAAO,QAAQ,CAAA;KAChB;IACD,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,EAAE;QAC9B,OAAO,IAAI,gBAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;KACpC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAnBD,kDAmBC;AAED,SAAgB,iBAAiB,CAAC,MAA8B,EAAE,IAAY;IAC5E,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,SAAS,CAAA;KACjB;IACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE;QACrC,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,EAAE;YACnC,OAAO,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;SAChD;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAVD,8CAUC;AAED,SAAgB,eAAe,CAAC,MAA8B,EAAE,IAAY;IAC1E,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,SAAS,CAAA;KACjB;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;QACjC,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,EAAE;YACjC,OAAO,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;SAC9C;KACF;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAVD,0CAUC","sourcesContent":["import { DeepPartial } from '../gen/builtin'\nimport { BigDecimal, MetricValue, O11yResult } from '@sentio/sdk'\nimport { Numberish } from '../numberish'\nimport { BigNumber } from 'ethers'\n\nexport function MetricValueToNumber(v: DeepPartial<MetricValue> | undefined): Numberish | undefined {\n if (v === undefined) {\n return undefined\n }\n\n if (v.doubleValue !== undefined) {\n return v.doubleValue\n }\n if (v.bigInteger !== undefined) {\n let intValue = BigNumber.from(v.bigInteger.data).toBigInt()\n if (v.bigInteger.negative) {\n intValue = -intValue\n }\n return intValue\n }\n if (v.bigDecimal !== undefined) {\n return new BigDecimal(v.bigDecimal)\n }\n return undefined\n}\n\nexport function firstCounterValue(result: O11yResult | undefined, name: string): Numberish | undefined {\n if (!result) {\n return undefined\n }\n for (const counter of result.counters) {\n if (counter.metadata?.name === name) {\n return MetricValueToNumber(counter.metricValue)\n }\n }\n return undefined\n}\n\nexport function firstGaugeValue(result: O11yResult | undefined, name: string): Numberish | undefined {\n if (!result) {\n return undefined\n }\n for (const gauge of result.gauges) {\n if (gauge.metadata?.name === name) {\n return MetricValueToNumber(gauge.metricValue)\n }\n }\n return undefined\n}\n"]}
File without changes
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"mirrorworld.js","sourceRoot":"","sources":["../../src/test/mirrorworld.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mirrorworld.js","sourceRoot":"","sources":["../../src/test/mirrorworld.ts"],"names":[],"mappings":"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","sourcesContent":["import { GameWalletProcessor } from './types/game_wallet_processor'\n\nGameWalletProcessor.bind({ address: 'F78NhTC9XmP1DKsCBRz5LGdQc4n4yFbj2dURiv7T9gGZ' })\n .onDistributeWithoutUser((payload, ctx) => {\n const amount = payload.amount.toNumber()\n ctx.meter.Counter('deposit_pool_total_value').add(amount)\n ctx.meter.Counter('deposit_pool_current_value').add(amount)\n ctx.meter.Counter('distribution_pool_total_value').sub(amount)\n })\n .onDeposit((payload, ctx) => {\n const amount = payload.amount.toNumber()\n ctx.meter.Counter('deposit_pool_total_value').add(amount)\n ctx.meter.Counter('deposit_pool_current_value').add(amount)\n })\n .onWithdraw((payload, ctx) => {\n const amount = payload.amount.toNumber()\n ctx.meter.Counter('deposit_pool_total_value').add(amount)\n ctx.meter.Counter('distribution_pool_total_value').sub(amount)\n })\n .onSpend((payload, ctx) => {\n const amount = payload.amount.toNumber()\n ctx.meter.Counter('deposit_pool_total_value').add(amount)\n ctx.meter.Counter('distribution_pool_total_value').sub(amount)\n })\n .onDistribute((payload, ctx) => {\n const amount = payload.amount.toNumber()\n ctx.meter.Counter('deposit_pool_total_value').add(amount)\n ctx.meter.Counter('deposit_pool_current_value').add(amount)\n ctx.meter.Counter('distribution_pool_total_value').sub(amount)\n })\n .onSpendWithoutUser((payload, ctx) => {\n const amount = payload.amount.toNumber()\n ctx.meter.Counter('deposit_pool_total_value').add(amount)\n ctx.meter.Counter('deposit_pool_current_value').sub(amount)\n })\n .onAddDistributeSupply((payload, ctx) => {\n const amount = payload.amount.toNumber()\n ctx.meter.Counter('distribution_pool_total_value').add(amount)\n })\n .startSlot(142700000)\n"]}
File without changes