@sentio/sdk 2.0.0-rc.3 → 2.0.0-rc.4

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 (295) hide show
  1. package/lib/builtin/eacaggregatorproxy/index.d.ts +3 -2
  2. package/lib/builtin/eacaggregatorproxy/index.js +3 -5
  3. package/lib/builtin/eacaggregatorproxy/index.js.map +1 -1
  4. package/lib/builtin/eacaggregatorproxy/test-utils.d.ts +1 -1
  5. package/lib/builtin/eacaggregatorproxy/test-utils.js +9 -16
  6. package/lib/builtin/eacaggregatorproxy/test-utils.js.map +1 -1
  7. package/lib/builtin/erc1155/index.d.ts +3 -2
  8. package/lib/builtin/erc1155/index.js +3 -5
  9. package/lib/builtin/erc1155/index.js.map +1 -1
  10. package/lib/builtin/erc1155/test-utils.d.ts +1 -1
  11. package/lib/builtin/erc1155/test-utils.js +9 -16
  12. package/lib/builtin/erc1155/test-utils.js.map +1 -1
  13. package/lib/builtin/erc20/index.d.ts +3 -2
  14. package/lib/builtin/erc20/index.js +3 -5
  15. package/lib/builtin/erc20/index.js.map +1 -1
  16. package/lib/builtin/erc20/test-utils.d.ts +1 -1
  17. package/lib/builtin/erc20/test-utils.js +7 -13
  18. package/lib/builtin/erc20/test-utils.js.map +1 -1
  19. package/lib/builtin/erc20bytes/index.d.ts +3 -2
  20. package/lib/builtin/erc20bytes/index.js +3 -5
  21. package/lib/builtin/erc20bytes/index.js.map +1 -1
  22. package/lib/builtin/erc20bytes/test-utils.d.ts +1 -1
  23. package/lib/builtin/erc20bytes/test-utils.js +5 -10
  24. package/lib/builtin/erc20bytes/test-utils.js.map +1 -1
  25. package/lib/builtin/erc721/index.d.ts +3 -2
  26. package/lib/builtin/erc721/index.js +3 -5
  27. package/lib/builtin/erc721/index.js.map +1 -1
  28. package/lib/builtin/erc721/test-utils.d.ts +1 -1
  29. package/lib/builtin/erc721/test-utils.js +7 -13
  30. package/lib/builtin/erc721/test-utils.js.map +1 -1
  31. package/lib/builtin/index.d.ts +8 -4
  32. package/lib/builtin/index.js +8 -8
  33. package/lib/builtin/index.js.map +1 -1
  34. package/lib/builtin/internal/EACAggregatorProxy.d.ts +1 -1
  35. package/lib/builtin/internal/EACAggregatorProxy.js +1 -2
  36. package/lib/builtin/internal/EACAggregatorProxy.js.map +1 -1
  37. package/lib/builtin/internal/ERC1155.d.ts +1 -1
  38. package/lib/builtin/internal/ERC1155.js +1 -2
  39. package/lib/builtin/internal/ERC1155.js.map +1 -1
  40. package/lib/builtin/internal/ERC20.d.ts +1 -1
  41. package/lib/builtin/internal/ERC20.js +1 -2
  42. package/lib/builtin/internal/ERC20.js.map +1 -1
  43. package/lib/builtin/internal/ERC20Bytes.d.ts +1 -1
  44. package/lib/builtin/internal/ERC20Bytes.js +1 -2
  45. package/lib/builtin/internal/ERC20Bytes.js.map +1 -1
  46. package/lib/builtin/internal/ERC721.d.ts +1 -1
  47. package/lib/builtin/internal/ERC721.js +1 -2
  48. package/lib/builtin/internal/ERC721.js.map +1 -1
  49. package/lib/builtin/internal/WETH9.d.ts +1 -1
  50. package/lib/builtin/internal/WETH9.js +1 -2
  51. package/lib/builtin/internal/WETH9.js.map +1 -1
  52. package/lib/builtin/internal/common.js +1 -2
  53. package/lib/builtin/internal/common.js.map +1 -1
  54. package/lib/builtin/internal/eacaggregatorproxy_processor.d.ts +6 -6
  55. package/lib/builtin/internal/eacaggregatorproxy_processor.js +69 -77
  56. package/lib/builtin/internal/eacaggregatorproxy_processor.js.map +1 -1
  57. package/lib/builtin/internal/erc1155_processor.d.ts +6 -6
  58. package/lib/builtin/internal/erc1155_processor.js +30 -38
  59. package/lib/builtin/internal/erc1155_processor.js.map +1 -1
  60. package/lib/builtin/internal/erc20_processor.d.ts +5 -5
  61. package/lib/builtin/internal/erc20_processor.js +39 -47
  62. package/lib/builtin/internal/erc20_processor.js.map +1 -1
  63. package/lib/builtin/internal/erc20bytes_processor.d.ts +4 -4
  64. package/lib/builtin/internal/erc20bytes_processor.js +33 -41
  65. package/lib/builtin/internal/erc20bytes_processor.js.map +1 -1
  66. package/lib/builtin/internal/erc721_processor.d.ts +5 -5
  67. package/lib/builtin/internal/erc721_processor.js +42 -50
  68. package/lib/builtin/internal/erc721_processor.js.map +1 -1
  69. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.js +4 -8
  70. package/lib/builtin/internal/factories/EACAggregatorProxy__factory.js.map +1 -1
  71. package/lib/builtin/internal/factories/ERC1155__factory.js +4 -8
  72. package/lib/builtin/internal/factories/ERC1155__factory.js.map +1 -1
  73. package/lib/builtin/internal/factories/ERC20Bytes__factory.js +4 -8
  74. package/lib/builtin/internal/factories/ERC20Bytes__factory.js.map +1 -1
  75. package/lib/builtin/internal/factories/ERC20__factory.js +4 -8
  76. package/lib/builtin/internal/factories/ERC20__factory.js.map +1 -1
  77. package/lib/builtin/internal/factories/ERC721__factory.js +4 -8
  78. package/lib/builtin/internal/factories/ERC721__factory.js.map +1 -1
  79. package/lib/builtin/internal/factories/WETH9__factory.js +4 -8
  80. package/lib/builtin/internal/factories/WETH9__factory.js.map +1 -1
  81. package/lib/builtin/internal/factories/index.d.ts +6 -6
  82. package/lib/builtin/internal/factories/index.js +6 -15
  83. package/lib/builtin/internal/factories/index.js.map +1 -1
  84. package/lib/builtin/internal/index.d.ts +13 -13
  85. package/lib/builtin/internal/index.js +7 -17
  86. package/lib/builtin/internal/index.js.map +1 -1
  87. package/lib/builtin/internal/weth9_processor.d.ts +6 -6
  88. package/lib/builtin/internal/weth9_processor.js +33 -41
  89. package/lib/builtin/internal/weth9_processor.js.map +1 -1
  90. package/lib/builtin/weth9/index.d.ts +3 -2
  91. package/lib/builtin/weth9/index.js +3 -5
  92. package/lib/builtin/weth9/index.js.map +1 -1
  93. package/lib/builtin/weth9/test-utils.d.ts +1 -1
  94. package/lib/builtin/weth9/test-utils.js +9 -16
  95. package/lib/builtin/weth9/test-utils.js.map +1 -1
  96. package/lib/core/base-context.d.ts +4 -4
  97. package/lib/core/base-context.js +7 -11
  98. package/lib/core/base-context.js.map +1 -1
  99. package/lib/core/big-decimal.js +3 -7
  100. package/lib/core/big-decimal.js.map +1 -1
  101. package/lib/core/bind-options.js +6 -13
  102. package/lib/core/bind-options.js.map +1 -1
  103. package/lib/core/context.d.ts +5 -5
  104. package/lib/core/context.js +14 -23
  105. package/lib/core/context.js.map +1 -1
  106. package/lib/core/core-plugin.js +9 -13
  107. package/lib/core/core-plugin.js.map +1 -1
  108. package/lib/core/event-tracker.d.ts +2 -2
  109. package/lib/core/event-tracker.js +6 -13
  110. package/lib/core/event-tracker.js.map +1 -1
  111. package/lib/core/exporter.d.ts +2 -2
  112. package/lib/core/exporter.js +4 -9
  113. package/lib/core/exporter.js.map +1 -1
  114. package/lib/core/index.d.ts +12 -9
  115. package/lib/core/index.js +12 -32
  116. package/lib/core/index.js.map +1 -1
  117. package/lib/core/logger.d.ts +2 -2
  118. package/lib/core/logger.js +7 -11
  119. package/lib/core/logger.js.map +1 -1
  120. package/lib/core/metadata.d.ts +4 -0
  121. package/lib/core/metadata.js +21 -7
  122. package/lib/core/metadata.js.map +1 -1
  123. package/lib/core/meter.d.ts +3 -7
  124. package/lib/core/meter.js +22 -57
  125. package/lib/core/meter.js.map +1 -1
  126. package/lib/core/meter.test.js.map +1 -1
  127. package/lib/core/numberish.d.ts +1 -1
  128. package/lib/core/numberish.js +12 -18
  129. package/lib/core/numberish.js.map +1 -1
  130. package/lib/core/numberish.test.js.map +1 -1
  131. package/lib/core/sui-plugin.js +12 -16
  132. package/lib/core/sui-plugin.js.map +1 -1
  133. package/lib/core/sui-processor.d.ts +1 -1
  134. package/lib/core/sui-processor.js +6 -12
  135. package/lib/core/sui-processor.js.map +1 -1
  136. package/lib/error.d.ts +1 -1
  137. package/lib/error.js +2 -7
  138. package/lib/error.js.map +1 -1
  139. package/lib/eth/account-processor-state.d.ts +1 -1
  140. package/lib/eth/account-processor-state.js +2 -6
  141. package/lib/eth/account-processor-state.js.map +1 -1
  142. package/lib/eth/account-processor.d.ts +7 -7
  143. package/lib/eth/account-processor.js +23 -27
  144. package/lib/eth/account-processor.js.map +1 -1
  145. package/lib/eth/base-processor-template.d.ts +5 -5
  146. package/lib/eth/base-processor-template.js +8 -14
  147. package/lib/eth/base-processor-template.js.map +1 -1
  148. package/lib/eth/base-processor.d.ts +4 -4
  149. package/lib/eth/base-processor.js +19 -26
  150. package/lib/eth/base-processor.js.map +1 -1
  151. package/lib/eth/binds.d.ts +3 -3
  152. package/lib/eth/binds.js +11 -19
  153. package/lib/eth/binds.js.map +1 -1
  154. package/lib/eth/eth-plugin.js +30 -34
  155. package/lib/eth/eth-plugin.js.map +1 -1
  156. package/lib/eth/generic-processor.d.ts +3 -3
  157. package/lib/eth/generic-processor.js +9 -13
  158. package/lib/eth/generic-processor.js.map +1 -1
  159. package/lib/{core → eth}/generic-processor.test.d.ts +0 -0
  160. package/lib/eth/generic-processor.test.js.map +1 -0
  161. package/lib/eth/index.d.ts +7 -6
  162. package/lib/eth/index.js +6 -14
  163. package/lib/eth/index.js.map +1 -1
  164. package/lib/eth/provider.js +12 -17
  165. package/lib/eth/provider.js.map +1 -1
  166. package/lib/eth/trace.js +1 -2
  167. package/lib/eth/trace.js.map +1 -1
  168. package/lib/index.d.ts +4 -5
  169. package/lib/index.js +5 -16
  170. package/lib/index.js.map +1 -1
  171. package/lib/promise-or-void.js +1 -2
  172. package/lib/target-ethers-sentio/{event-handler.js → event-handler.cjs} +4 -4
  173. package/lib/target-ethers-sentio/event-handler.cjs.map +1 -0
  174. package/lib/target-ethers-sentio/{event-handler.d.ts → event-handler.d.cts} +0 -0
  175. package/lib/target-ethers-sentio/{file.js → file.cjs} +19 -18
  176. package/lib/target-ethers-sentio/file.cjs.map +1 -0
  177. package/lib/target-ethers-sentio/{file.d.ts → file.d.cts} +0 -0
  178. package/lib/target-ethers-sentio/{functions-handler.js → functions-handler.cjs} +6 -7
  179. package/lib/target-ethers-sentio/functions-handler.cjs.map +1 -0
  180. package/lib/target-ethers-sentio/{functions-handler.d.ts → functions-handler.d.cts} +0 -0
  181. package/lib/target-ethers-sentio/{index.js → index.cjs} +8 -5
  182. package/lib/target-ethers-sentio/index.cjs.map +1 -0
  183. package/lib/target-ethers-sentio/{index.d.ts → index.d.cts} +0 -0
  184. package/lib/target-ethers-sentio/{types.js → types.cjs} +1 -1
  185. package/lib/target-ethers-sentio/types.cjs.map +1 -0
  186. package/lib/target-ethers-sentio/{types.d.ts → types.d.cts} +0 -0
  187. package/lib/target-ethers-sentio/{view-function.js → view-function.cjs} +5 -5
  188. package/lib/target-ethers-sentio/view-function.cjs.map +1 -0
  189. package/lib/target-ethers-sentio/{view-function.d.ts → view-function.d.cts} +0 -0
  190. package/lib/testing/index.d.ts +3 -2
  191. package/lib/testing/index.js +3 -10
  192. package/lib/testing/index.js.map +1 -1
  193. package/lib/testing/metric-utils.d.ts +1 -1
  194. package/lib/testing/metric-utils.js +7 -13
  195. package/lib/testing/metric-utils.js.map +1 -1
  196. package/lib/testing/test-processor-server.d.ts +3 -4
  197. package/lib/testing/test-processor-server.js +24 -29
  198. package/lib/testing/test-processor-server.js.map +1 -1
  199. package/lib/testing/test-provider.js +5 -9
  200. package/lib/testing/test-provider.js.map +1 -1
  201. package/lib/tsup.config.ts +23 -0
  202. package/lib/utils/chain.js +7 -12
  203. package/lib/utils/chain.js.map +1 -1
  204. package/lib/utils/conversion.d.ts +2 -2
  205. package/lib/utils/conversion.js +6 -12
  206. package/lib/utils/conversion.js.map +1 -1
  207. package/lib/utils/dex-price.js +14 -19
  208. package/lib/utils/dex-price.js.map +1 -1
  209. package/lib/utils/dex-price.test.js.map +1 -1
  210. package/lib/utils/erc20.test.js.map +1 -1
  211. package/lib/utils/index.d.ts +4 -4
  212. package/lib/utils/index.js +4 -8
  213. package/lib/utils/index.js.map +1 -1
  214. package/lib/utils/price.d.ts +11 -11
  215. package/lib/utils/price.js +10 -16
  216. package/lib/utils/price.js.map +1 -1
  217. package/lib/utils/token.d.ts +1 -1
  218. package/lib/utils/token.js +15 -21
  219. package/lib/utils/token.js.map +1 -1
  220. package/package.json +23 -19
  221. package/src/builtin/eacaggregatorproxy/index.ts +3 -2
  222. package/src/builtin/eacaggregatorproxy/test-utils.ts +1 -1
  223. package/src/builtin/erc1155/index.ts +3 -2
  224. package/src/builtin/erc1155/test-utils.ts +1 -1
  225. package/src/builtin/erc20/index.ts +3 -2
  226. package/src/builtin/erc20/test-utils.ts +1 -1
  227. package/src/builtin/erc20bytes/index.ts +3 -2
  228. package/src/builtin/erc20bytes/test-utils.ts +1 -1
  229. package/src/builtin/erc721/index.ts +3 -2
  230. package/src/builtin/erc721/test-utils.ts +1 -1
  231. package/src/builtin/index.ts +8 -4
  232. package/src/builtin/internal/EACAggregatorProxy.ts +1 -1
  233. package/src/builtin/internal/ERC1155.ts +1 -1
  234. package/src/builtin/internal/ERC20.ts +1 -1
  235. package/src/builtin/internal/ERC20Bytes.ts +1 -1
  236. package/src/builtin/internal/ERC721.ts +1 -1
  237. package/src/builtin/internal/WETH9.ts +1 -1
  238. package/src/builtin/internal/eacaggregatorproxy_processor.ts +2 -2
  239. package/src/builtin/internal/erc1155_processor.ts +2 -2
  240. package/src/builtin/internal/erc20_processor.ts +2 -2
  241. package/src/builtin/internal/erc20bytes_processor.ts +2 -2
  242. package/src/builtin/internal/erc721_processor.ts +2 -2
  243. package/src/builtin/internal/factories/index.ts +6 -6
  244. package/src/builtin/internal/index.ts +13 -13
  245. package/src/builtin/internal/weth9_processor.ts +2 -2
  246. package/src/builtin/weth9/index.ts +3 -2
  247. package/src/builtin/weth9/test-utils.ts +1 -1
  248. package/src/core/base-context.ts +4 -4
  249. package/src/core/context.ts +5 -6
  250. package/src/core/core-plugin.ts +3 -3
  251. package/src/core/event-tracker.ts +2 -2
  252. package/src/core/exporter.ts +3 -3
  253. package/src/core/index.ts +12 -9
  254. package/src/core/logger.ts +2 -2
  255. package/src/core/metadata.ts +23 -2
  256. package/src/core/meter.ts +3 -26
  257. package/src/core/numberish.ts +1 -1
  258. package/src/core/sui-plugin.ts +2 -2
  259. package/src/core/sui-processor.ts +1 -1
  260. package/src/error.ts +1 -1
  261. package/src/eth/account-processor-state.ts +1 -1
  262. package/src/eth/account-processor.ts +11 -11
  263. package/src/eth/base-processor-template.ts +5 -5
  264. package/src/eth/base-processor.ts +4 -4
  265. package/src/eth/binds.ts +3 -3
  266. package/src/eth/eth-plugin.ts +3 -3
  267. package/src/eth/generic-processor.ts +5 -5
  268. package/src/eth/index.ts +8 -6
  269. package/src/index.ts +4 -6
  270. package/src/target-ethers-sentio/{event-handler.ts → event-handler.cts} +1 -1
  271. package/src/target-ethers-sentio/{file.ts → file.cts} +10 -9
  272. package/src/target-ethers-sentio/{functions-handler.ts → functions-handler.cts} +3 -4
  273. package/src/target-ethers-sentio/{index.ts → index.cts} +4 -1
  274. package/src/target-ethers-sentio/tsconfig.json +1 -1
  275. package/src/target-ethers-sentio/{types.ts → types.cts} +0 -0
  276. package/src/target-ethers-sentio/{view-function.ts → view-function.cts} +1 -1
  277. package/src/testing/index.ts +3 -3
  278. package/src/testing/metric-utils.ts +2 -2
  279. package/src/testing/test-processor-server.ts +5 -5
  280. package/src/testing/test-provider.ts +1 -1
  281. package/src/tsup.config.ts +23 -0
  282. package/src/utils/conversion.ts +2 -2
  283. package/src/utils/dex-price.ts +4 -4
  284. package/src/utils/index.ts +4 -4
  285. package/src/utils/price.ts +1 -1
  286. package/src/utils/token.ts +6 -6
  287. package/lib/core/generic-processor.test.js.map +0 -1
  288. package/lib/target-ethers-sentio/event-handler.js.map +0 -1
  289. package/lib/target-ethers-sentio/file.js.map +0 -1
  290. package/lib/target-ethers-sentio/functions-handler.js.map +0 -1
  291. package/lib/target-ethers-sentio/index.js.map +0 -1
  292. package/lib/target-ethers-sentio/types.js.map +0 -1
  293. package/lib/target-ethers-sentio/view-function.js.map +0 -1
  294. package/lib/webpack.config.js +0 -50
  295. package/src/webpack.config.js +0 -50
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Logger = void 0;
4
- const protos_1 = require("@sentio/protos");
5
- const metadata_1 = require("./metadata");
6
- class Logger extends metadata_1.NamedResultDescriptor {
1
+ import { LogLevel } from '@sentio/protos';
2
+ import { NamedResultDescriptor } from './metadata.js';
3
+ export class Logger extends NamedResultDescriptor {
7
4
  ctx;
8
5
  constructor(ctx, name = '') {
9
6
  super(name);
@@ -26,17 +23,16 @@ class Logger extends metadata_1.NamedResultDescriptor {
26
23
  });
27
24
  }
28
25
  info(msg, attributes = {}) {
29
- this.log(protos_1.LogLevel.INFO, msg, attributes);
26
+ this.log(LogLevel.INFO, msg, attributes);
30
27
  }
31
28
  warn(msg, attributes = {}) {
32
- this.log(protos_1.LogLevel.WARNING, msg, attributes);
29
+ this.log(LogLevel.WARNING, msg, attributes);
33
30
  }
34
31
  error(msg, attributes = {}) {
35
- this.log(protos_1.LogLevel.ERROR, msg, attributes);
32
+ this.log(LogLevel.ERROR, msg, attributes);
36
33
  }
37
34
  critical(msg, attributes = {}) {
38
- this.log(protos_1.LogLevel.CRITICAL, msg, attributes);
35
+ this.log(LogLevel.CRITICAL, msg, attributes);
39
36
  }
40
37
  }
41
- exports.Logger = Logger;
42
38
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":";;;AACA,2CAAyC;AACzC,yCAAkD;AAIlD,MAAa,MAAO,SAAQ,gCAAqB;IAC9B,GAAG,CAAa;IAEjC,YAAY,GAAgB,EAAE,IAAI,GAAG,EAAE;QACrC,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;IAES,GAAG,CAAC,KAAe,EAAE,OAAY,EAAE,aAAyB,EAAE;QACtE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,YAAY,MAAM,CAAC,EAAE;YAC/D,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;SAClC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,mBAAmB;YACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,KAAK;YACL,OAAO;YACP,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACtC,WAAW,EAAE,SAAS;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,GAAQ,EAAE,aAAyB,EAAE;QACxC,IAAI,CAAC,GAAG,CAAC,iBAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,CAAC,GAAQ,EAAE,aAAyB,EAAE;QACxC,IAAI,CAAC,GAAG,CAAC,iBAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,GAAQ,EAAE,aAAyB,EAAE;QACzC,IAAI,CAAC,GAAG,CAAC,iBAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC3C,CAAC;IAED,QAAQ,CAAC,GAAQ,EAAE,aAAyB,EAAE;QAC5C,IAAI,CAAC,GAAG,CAAC,iBAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC9C,CAAC;CACF;AA1CD,wBA0CC","sourcesContent":["import { BaseContext } from './base-context'\nimport { LogLevel } from '@sentio/protos'\nimport { NamedResultDescriptor } from './metadata'\n\nexport type Attributes = Record<string, any>\n\nexport class Logger extends NamedResultDescriptor {\n private readonly ctx: BaseContext\n\n constructor(ctx: BaseContext, name = '') {\n super(name)\n this.ctx = ctx\n }\n\n withName(name: string) {\n return new Logger(this.ctx, name)\n }\n\n protected log(level: LogLevel, message: any, attributes: Attributes = {}) {\n if (typeof message !== 'string' && !(message instanceof String)) {\n message = JSON.stringify(message)\n }\n\n this.ctx._res.logs.push({\n // name: this.name,\n metadata: this.ctx.getMetaData(this.name, {}), // GetRecordMetaData(this.ctx, this, {}),\n level,\n message,\n attributes: JSON.stringify(attributes),\n runtimeInfo: undefined,\n })\n }\n\n info(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.INFO, msg, attributes)\n }\n\n warn(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.WARNING, msg, attributes)\n }\n\n error(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.ERROR, msg, attributes)\n }\n\n critical(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.CRITICAL, msg, attributes)\n }\n}\n"]}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAIrD,MAAM,OAAO,MAAO,SAAQ,qBAAqB;IAC9B,GAAG,CAAa;IAEjC,YAAY,GAAgB,EAAE,IAAI,GAAG,EAAE;QACrC,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;IAES,GAAG,CAAC,KAAe,EAAE,OAAY,EAAE,aAAyB,EAAE;QACtE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,YAAY,MAAM,CAAC,EAAE;YAC/D,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;SAClC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,mBAAmB;YACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,KAAK;YACL,OAAO;YACP,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACtC,WAAW,EAAE,SAAS;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,GAAQ,EAAE,aAAyB,EAAE;QACxC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,CAAC,GAAQ,EAAE,aAAyB,EAAE;QACxC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,GAAQ,EAAE,aAAyB,EAAE;QACzC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC3C,CAAC;IAED,QAAQ,CAAC,GAAQ,EAAE,aAAyB,EAAE;QAC5C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC9C,CAAC;CACF","sourcesContent":["import { BaseContext } from './base-context.js'\nimport { LogLevel } from '@sentio/protos'\nimport { NamedResultDescriptor } from './metadata.js'\n\nexport type Attributes = Record<string, any>\n\nexport class Logger extends NamedResultDescriptor {\n private readonly ctx: BaseContext\n\n constructor(ctx: BaseContext, name = '') {\n super(name)\n this.ctx = ctx\n }\n\n withName(name: string) {\n return new Logger(this.ctx, name)\n }\n\n protected log(level: LogLevel, message: any, attributes: Attributes = {}) {\n if (typeof message !== 'string' && !(message instanceof String)) {\n message = JSON.stringify(message)\n }\n\n this.ctx._res.logs.push({\n // name: this.name,\n metadata: this.ctx.getMetaData(this.name, {}), // GetRecordMetaData(this.ctx, this, {}),\n level,\n message,\n attributes: JSON.stringify(attributes),\n runtimeInfo: undefined,\n })\n }\n\n info(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.INFO, msg, attributes)\n }\n\n warn(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.WARNING, msg, attributes)\n }\n\n error(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.ERROR, msg, attributes)\n }\n\n critical(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.CRITICAL, msg, attributes)\n }\n}\n"]}
@@ -1,6 +1,10 @@
1
1
  export type Labels = {
2
2
  [key: string]: string;
3
3
  };
4
+ export declare function normalizeName(name: string): string;
5
+ export declare function normalizeKey(name: string): string;
6
+ export declare function normalizeValue(name: string): string;
7
+ export declare function normalizeLabels(labels: Labels): Labels;
4
8
  export declare class NamedResultDescriptor {
5
9
  name: string;
6
10
  constructor(name: string);
@@ -1,12 +1,26 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NamedResultDescriptor = void 0;
4
- const meter_1 = require("./meter");
5
- class NamedResultDescriptor {
1
+ export function normalizeName(name) {
2
+ return name.slice(0, 100).replace(/[^_\-a-zA-Z0-9]/g, '_');
3
+ }
4
+ export function normalizeKey(name) {
5
+ if (name === 'labels') {
6
+ return 'labels_';
7
+ }
8
+ return normalizeName(name);
9
+ }
10
+ export function normalizeValue(name) {
11
+ return name.slice(0, 100);
12
+ }
13
+ export function normalizeLabels(labels) {
14
+ const normLabels = {};
15
+ for (const key in labels) {
16
+ normLabels[normalizeKey(key)] = normalizeValue(labels[key]);
17
+ }
18
+ return normLabels;
19
+ }
20
+ export class NamedResultDescriptor {
6
21
  name;
7
22
  constructor(name) {
8
- this.name = (0, meter_1.normalizeName)(name);
23
+ this.name = normalizeName(name);
9
24
  }
10
25
  }
11
- exports.NamedResultDescriptor = NamedResultDescriptor;
12
26
  //# sourceMappingURL=metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/core/metadata.ts"],"names":[],"mappings":";;;AAAA,mCAAuC;AAIvC,MAAa,qBAAqB;IAChC,IAAI,CAAQ;IAEZ,YAAY,IAAY;QACtB,IAAI,CAAC,IAAI,GAAG,IAAA,qBAAa,EAAC,IAAI,CAAC,CAAA;IACjC,CAAC;CACF;AAND,sDAMC","sourcesContent":["import { normalizeName } from './meter'\n\nexport type Labels = { [key: string]: string }\n\nexport class NamedResultDescriptor {\n name: string\n\n constructor(name: string) {\n this.name = normalizeName(name)\n }\n}\n"]}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/core/metadata.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAA;AAC5D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,OAAO,SAAS,CAAA;KACjB;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,UAAU,GAAW,EAAE,CAAA;IAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;QACxB,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;KAC5D;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,MAAM,OAAO,qBAAqB;IAChC,IAAI,CAAQ;IAEZ,YAAY,IAAY;QACtB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;CACF","sourcesContent":["export type Labels = { [key: string]: string }\n\nexport function normalizeName(name: string): string {\n return name.slice(0, 100).replace(/[^_\\-a-zA-Z0-9]/g, '_')\n}\n\nexport function normalizeKey(name: string): string {\n if (name === 'labels') {\n return 'labels_'\n }\n return normalizeName(name)\n}\n\nexport function normalizeValue(name: string): string {\n return name.slice(0, 100)\n}\n\nexport function normalizeLabels(labels: Labels): Labels {\n const normLabels: Labels = {}\n for (const key in labels) {\n normLabels[normalizeKey(key)] = normalizeValue(labels[key])\n }\n return normLabels\n}\n\nexport class NamedResultDescriptor {\n name: string\n\n constructor(name: string) {\n this.name = normalizeName(name)\n }\n}\n"]}
@@ -1,12 +1,8 @@
1
- import { BaseContext } from './base-context';
2
- import { Numberish } from './numberish';
3
- import { Labels, NamedResultDescriptor } from './metadata';
1
+ import { BaseContext } from './base-context.js';
2
+ import { Numberish } from './numberish.js';
3
+ import { Labels, NamedResultDescriptor } from './metadata.js';
4
4
  import { AggregationConfig, MetricConfig, MetricType } from '@sentio/protos';
5
5
  import { MapStateStorage } from '@sentio/runtime';
6
- export declare function normalizeName(name: string): string;
7
- export declare function normalizeKey(name: string): string;
8
- export declare function normalizeValue(name: string): string;
9
- export declare function normalizeLabels(labels: Labels): Labels;
10
6
  export declare class MetricOptions {
11
7
  unit?: string;
12
8
  description?: string;
package/lib/core/meter.js CHANGED
@@ -1,69 +1,40 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Meter = exports.GaugeBinding = exports.Gauge = exports.CounterBinding = exports.Counter = exports.MetricState = exports.Metric = exports.CounterOptions = exports.MetricOptions = exports.normalizeLabels = exports.normalizeValue = exports.normalizeKey = exports.normalizeName = void 0;
4
- const numberish_1 = require("./numberish");
5
- const metadata_1 = require("./metadata");
6
- const protos_1 = require("@sentio/protos");
7
- const runtime_1 = require("@sentio/runtime");
8
- function normalizeName(name) {
9
- return name.slice(0, 100).replace(/[^_\-a-zA-Z0-9]/g, '_');
10
- }
11
- exports.normalizeName = normalizeName;
12
- function normalizeKey(name) {
13
- if (name === 'labels') {
14
- return 'labels_';
15
- }
16
- return normalizeName(name);
17
- }
18
- exports.normalizeKey = normalizeKey;
19
- function normalizeValue(name) {
20
- return name.slice(0, 100);
21
- }
22
- exports.normalizeValue = normalizeValue;
23
- function normalizeLabels(labels) {
24
- const normLabels = {};
25
- for (const key in labels) {
26
- normLabels[normalizeKey(key)] = normalizeValue(labels[key]);
27
- }
28
- return normLabels;
29
- }
30
- exports.normalizeLabels = normalizeLabels;
31
- class MetricOptions {
1
+ import { toMetricValue } from './numberish.js';
2
+ import { NamedResultDescriptor, normalizeKey } from './metadata.js';
3
+ import { AggregationType, MetricConfig, MetricType } from '@sentio/protos';
4
+ import { MapStateStorage } from '@sentio/runtime';
5
+ export class MetricOptions {
32
6
  unit;
33
7
  description;
34
8
  sparse;
35
9
  persistentBetweenVersion;
36
10
  aggregationConfig;
37
11
  }
38
- exports.MetricOptions = MetricOptions;
39
- class CounterOptions {
12
+ export class CounterOptions {
40
13
  unit;
41
14
  description;
42
15
  sparse;
43
16
  }
44
- exports.CounterOptions = CounterOptions;
45
17
  // enum MetricType {
46
18
  // Counter = 0,
47
19
  // Gauge = 1,
48
20
  // }
49
- class Metric extends metadata_1.NamedResultDescriptor {
21
+ export class Metric extends NamedResultDescriptor {
50
22
  config;
51
23
  constructor(type, name, option) {
52
24
  super(normalizeKey(name));
53
- this.config = protos_1.MetricConfig.fromPartial({ name: this.name, type: type, ...option });
25
+ this.config = MetricConfig.fromPartial({ name: this.name, type: type, ...option });
54
26
  const aggregationConfig = this.config.aggregationConfig;
55
27
  if (aggregationConfig && aggregationConfig.intervalInMinutes.length) {
56
28
  if (aggregationConfig.intervalInMinutes.length > 1) {
57
29
  console.error('current only support one intervalInMinutes, only first interval will be used for', name);
58
30
  }
59
31
  if (aggregationConfig.intervalInMinutes[0] > 0 && aggregationConfig.types.length === 0) {
60
- aggregationConfig.types = [protos_1.AggregationType.SUM, protos_1.AggregationType.COUNT];
32
+ aggregationConfig.types = [AggregationType.SUM, AggregationType.COUNT];
61
33
  }
62
34
  }
63
35
  }
64
36
  }
65
- exports.Metric = Metric;
66
- class MetricState extends runtime_1.MapStateStorage {
37
+ export class MetricState extends MapStateStorage {
67
38
  static INSTANCE = new MetricState();
68
39
  getOrRegisterMetric(type, name, option) {
69
40
  const metricMap = this.getOrRegister();
@@ -72,7 +43,7 @@ class MetricState extends runtime_1.MapStateStorage {
72
43
  throw Error(`redefine ${name} of metric type ${type} that is previously ${metric.config.type}`);
73
44
  }
74
45
  if (!metric) {
75
- if (type === protos_1.MetricType.COUNTER) {
46
+ if (type === MetricType.COUNTER) {
76
47
  metric = Counter._create(name, option);
77
48
  }
78
49
  else {
@@ -83,10 +54,9 @@ class MetricState extends runtime_1.MapStateStorage {
83
54
  return metric;
84
55
  }
85
56
  }
86
- exports.MetricState = MetricState;
87
- class Counter extends Metric {
57
+ export class Counter extends Metric {
88
58
  static register(name, option) {
89
- return MetricState.INSTANCE.getOrRegisterMetric(protos_1.MetricType.COUNTER, name, option);
59
+ return MetricState.INSTANCE.getOrRegisterMetric(MetricType.COUNTER, name, option);
90
60
  }
91
61
  /**
92
62
  * internal use only, to create a metric use {@link register} instead
@@ -95,7 +65,7 @@ class Counter extends Metric {
95
65
  return new Counter(name, option);
96
66
  }
97
67
  constructor(name, option) {
98
- super(protos_1.MetricType.COUNTER, name, option);
68
+ super(MetricType.COUNTER, name, option);
99
69
  }
100
70
  add(ctx, value, labels = {}) {
101
71
  this.record(ctx, value, labels, true);
@@ -106,14 +76,13 @@ class Counter extends Metric {
106
76
  record(ctx, value, labels, add) {
107
77
  ctx._res.counters.push({
108
78
  metadata: ctx.getMetaData(this.name, labels),
109
- metricValue: (0, numberish_1.toMetricValue)(value),
79
+ metricValue: toMetricValue(value),
110
80
  add: add,
111
81
  runtimeInfo: undefined,
112
82
  });
113
83
  }
114
84
  }
115
- exports.Counter = Counter;
116
- class CounterBinding {
85
+ export class CounterBinding {
117
86
  ctx;
118
87
  counter;
119
88
  constructor(name, ctx) {
@@ -127,10 +96,9 @@ class CounterBinding {
127
96
  this.counter.sub(this.ctx, value, labels);
128
97
  }
129
98
  }
130
- exports.CounterBinding = CounterBinding;
131
- class Gauge extends Metric {
99
+ export class Gauge extends Metric {
132
100
  static register(name, option) {
133
- return MetricState.INSTANCE.getOrRegisterMetric(protos_1.MetricType.GAUGE, name, option);
101
+ return MetricState.INSTANCE.getOrRegisterMetric(MetricType.GAUGE, name, option);
134
102
  }
135
103
  /**
136
104
  * internal use only, to create a metric use {@link register} instead
@@ -139,18 +107,17 @@ class Gauge extends Metric {
139
107
  return new Gauge(name, option);
140
108
  }
141
109
  constructor(name, option) {
142
- super(protos_1.MetricType.GAUGE, name, option);
110
+ super(MetricType.GAUGE, name, option);
143
111
  }
144
112
  record(ctx, value, labels = {}) {
145
113
  ctx._res.gauges.push({
146
114
  metadata: ctx.getMetaData(this.config.name, labels),
147
- metricValue: (0, numberish_1.toMetricValue)(value),
115
+ metricValue: toMetricValue(value),
148
116
  runtimeInfo: undefined,
149
117
  });
150
118
  }
151
119
  }
152
- exports.Gauge = Gauge;
153
- class GaugeBinding {
120
+ export class GaugeBinding {
154
121
  gauge;
155
122
  ctx;
156
123
  constructor(name, ctx) {
@@ -161,8 +128,7 @@ class GaugeBinding {
161
128
  this.gauge.record(this.ctx, value, labels);
162
129
  }
163
130
  }
164
- exports.GaugeBinding = GaugeBinding;
165
- class Meter {
131
+ export class Meter {
166
132
  ctx;
167
133
  constructor(ctx) {
168
134
  this.ctx = ctx;
@@ -174,5 +140,4 @@ class Meter {
174
140
  return new GaugeBinding(name, this.ctx);
175
141
  }
176
142
  }
177
- exports.Meter = Meter;
178
143
  //# sourceMappingURL=meter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"meter.js","sourceRoot":"","sources":["../../src/core/meter.ts"],"names":[],"mappings":";;;AACA,2CAAsD;AACtD,yCAA0D;AAC1D,2CAA6F;AAC7F,6CAAiD;AAEjD,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAA;AAC5D,CAAC;AAFD,sCAEC;AAED,SAAgB,YAAY,CAAC,IAAY;IACvC,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,OAAO,SAAS,CAAA;KACjB;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC;AALD,oCAKC;AAED,SAAgB,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC3B,CAAC;AAFD,wCAEC;AAED,SAAgB,eAAe,CAAC,MAAc;IAC5C,MAAM,UAAU,GAAW,EAAE,CAAA;IAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;QACxB,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;KAC5D;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAND,0CAMC;AAED,MAAa,aAAa;IACxB,IAAI,CAAS;IACb,WAAW,CAAS;IACpB,MAAM,CAAU;IAChB,wBAAwB,CAAU;IAClC,iBAAiB,CAA6B;CAC/C;AAND,sCAMC;AAED,MAAa,cAAc;IACzB,IAAI,CAAS;IACb,WAAW,CAAS;IACpB,MAAM,CAAU;CACjB;AAJD,wCAIC;AAED,oBAAoB;AACpB,iBAAiB;AACjB,eAAe;AACf,IAAI;AAEJ,MAAa,MAAO,SAAQ,gCAAqB;IAC/C,MAAM,CAAc;IACpB,YAAY,IAAgB,EAAE,IAAY,EAAE,MAAsB;QAChE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;QACzB,IAAI,CAAC,MAAM,GAAG,qBAAY,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;QAClF,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAA;QACvD,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,EAAE;YACnE,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClD,OAAO,CAAC,KAAK,CAAC,kFAAkF,EAAE,IAAI,CAAC,CAAA;aACxG;YACD,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtF,iBAAiB,CAAC,KAAK,GAAG,CAAC,wBAAe,CAAC,GAAG,EAAE,wBAAe,CAAC,KAAK,CAAC,CAAA;aACvE;SACF;IACH,CAAC;CACF;AAfD,wBAeC;AAED,MAAa,WAAY,SAAQ,yBAAuB;IACtD,MAAM,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAA;IAEnC,mBAAmB,CAAC,IAAgB,EAAE,IAAY,EAAE,MAAuC;QACzF,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QACtC,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;YACzC,MAAM,KAAK,CAAC,YAAY,IAAI,mBAAmB,IAAI,uBAAuB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;SAChG;QAED,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,IAAI,KAAK,mBAAU,CAAC,OAAO,EAAE;gBAC/B,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;aACvC;iBAAM;gBACL,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;aACrC;SACF;QACD,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC3B,OAAO,MAAM,CAAA;IACf,CAAC;;AAnBH,kCAoBC;AAED,MAAa,OAAQ,SAAQ,MAAM;IACjC,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,MAAuB;QACnD,OAAO,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,mBAAU,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAY,CAAA;IAC9F,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,IAAY,EAAE,MAAsB;QACjD,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAClC,CAAC;IAED,YAAoB,IAAY,EAAE,MAAsB;QACtD,KAAK,CAAC,mBAAU,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IAED,GAAG,CAAC,GAAgB,EAAE,KAAgB,EAAE,SAAiB,EAAE;QACzD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IACvC,CAAC;IAED,GAAG,CAAC,GAAgB,EAAE,KAAgB,EAAE,SAAiB,EAAE;QACzD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IACxC,CAAC;IAEO,MAAM,CAAC,GAAgB,EAAE,KAAgB,EAAE,MAAc,EAAE,GAAY;QAC7E,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;YAC5C,WAAW,EAAE,IAAA,yBAAa,EAAC,KAAK,CAAC;YACjC,GAAG,EAAE,GAAG;YACR,WAAW,EAAE,SAAS;SACvB,CAAC,CAAA;IACJ,CAAC;CACF;AAhCD,0BAgCC;AAED,MAAa,cAAc;IACR,GAAG,CAAa;IAChB,OAAO,CAAS;IAEjC,YAAY,IAAY,EAAE,GAAgB;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,GAAG,CAAC,KAAgB,EAAE,SAAiB,EAAE;QACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAC3C,CAAC;IAED,GAAG,CAAC,KAAgB,EAAE,SAAiB,EAAE;QACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAC3C,CAAC;CACF;AAhBD,wCAgBC;AAED,MAAa,KAAM,SAAQ,MAAM;IAC/B,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,MAAsB;QAClD,OAAO,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,mBAAU,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAU,CAAA;IAC1F,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,IAAY,EAAE,MAAsB;QACjD,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAChC,CAAC;IAED,YAAoB,IAAY,EAAE,MAAsB;QACtD,KAAK,CAAC,mBAAU,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,CAAC,GAAgB,EAAE,KAAgB,EAAE,SAAiB,EAAE;QAC5D,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACnB,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;YACnD,WAAW,EAAE,IAAA,yBAAa,EAAC,KAAK,CAAC;YACjC,WAAW,EAAE,SAAS;SACvB,CAAC,CAAA;IACJ,CAAC;CACF;AAvBD,sBAuBC;AAED,MAAa,YAAY;IACN,KAAK,CAAO;IACZ,GAAG,CAAa;IAEjC,YAAY,IAAY,EAAE,GAAgB;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,MAAM,CAAC,KAAgB,EAAE,SAAiB,EAAE;QAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAC5C,CAAC;CACF;AAZD,oCAYC;AAED,MAAa,KAAK;IACC,GAAG,CAAa;IAEjC,YAAY,GAAgB;QAC1B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,IAAY;QAChB,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IACzC,CAAC;CACF;AAdD,sBAcC","sourcesContent":["import { BaseContext } from './base-context'\nimport { Numberish, toMetricValue } from './numberish'\nimport { Labels, NamedResultDescriptor } from './metadata'\nimport { AggregationConfig, AggregationType, MetricConfig, MetricType } from '@sentio/protos'\nimport { MapStateStorage } from '@sentio/runtime'\n\nexport function normalizeName(name: string): string {\n return name.slice(0, 100).replace(/[^_\\-a-zA-Z0-9]/g, '_')\n}\n\nexport function normalizeKey(name: string): string {\n if (name === 'labels') {\n return 'labels_'\n }\n return normalizeName(name)\n}\n\nexport function normalizeValue(name: string): string {\n return name.slice(0, 100)\n}\n\nexport function normalizeLabels(labels: Labels): Labels {\n const normLabels: Labels = {}\n for (const key in labels) {\n normLabels[normalizeKey(key)] = normalizeValue(labels[key])\n }\n return normLabels\n}\n\nexport class MetricOptions {\n unit?: string\n description?: string\n sparse?: boolean\n persistentBetweenVersion?: boolean\n aggregationConfig?: Partial<AggregationConfig>\n}\n\nexport class CounterOptions {\n unit?: string\n description?: string\n sparse?: boolean\n}\n\n// enum MetricType {\n// Counter = 0,\n// Gauge = 1,\n// }\n\nexport class Metric extends NamedResultDescriptor {\n config: MetricConfig\n constructor(type: MetricType, name: string, option?: MetricOptions) {\n super(normalizeKey(name))\n this.config = MetricConfig.fromPartial({ name: this.name, type: type, ...option })\n const aggregationConfig = this.config.aggregationConfig\n if (aggregationConfig && aggregationConfig.intervalInMinutes.length) {\n if (aggregationConfig.intervalInMinutes.length > 1) {\n console.error('current only support one intervalInMinutes, only first interval will be used for', name)\n }\n if (aggregationConfig.intervalInMinutes[0] > 0 && aggregationConfig.types.length === 0) {\n aggregationConfig.types = [AggregationType.SUM, AggregationType.COUNT]\n }\n }\n }\n}\n\nexport class MetricState extends MapStateStorage<Metric> {\n static INSTANCE = new MetricState()\n\n getOrRegisterMetric(type: MetricType, name: string, option?: CounterOptions | MetricOptions): Metric {\n const metricMap = this.getOrRegister()\n let metric = metricMap.get(name)\n if (metric && metric.config.type !== type) {\n throw Error(`redefine ${name} of metric type ${type} that is previously ${metric.config.type}`)\n }\n\n if (!metric) {\n if (type === MetricType.COUNTER) {\n metric = Counter._create(name, option)\n } else {\n metric = Gauge._create(name, option)\n }\n }\n metricMap.set(name, metric)\n return metric\n }\n}\n\nexport class Counter extends Metric {\n static register(name: string, option?: CounterOptions): Counter {\n return MetricState.INSTANCE.getOrRegisterMetric(MetricType.COUNTER, name, option) as Counter\n }\n\n /**\n * internal use only, to create a metric use {@link register} instead\n */\n static _create(name: string, option?: MetricOptions): Counter {\n return new Counter(name, option)\n }\n\n private constructor(name: string, option?: MetricOptions) {\n super(MetricType.COUNTER, name, option)\n }\n\n add(ctx: BaseContext, value: Numberish, labels: Labels = {}) {\n this.record(ctx, value, labels, true)\n }\n\n sub(ctx: BaseContext, value: Numberish, labels: Labels = {}) {\n this.record(ctx, value, labels, false)\n }\n\n private record(ctx: BaseContext, value: Numberish, labels: Labels, add: boolean) {\n ctx._res.counters.push({\n metadata: ctx.getMetaData(this.name, labels),\n metricValue: toMetricValue(value),\n add: add,\n runtimeInfo: undefined,\n })\n }\n}\n\nexport class CounterBinding {\n private readonly ctx: BaseContext\n private readonly counter: Counter\n\n constructor(name: string, ctx: BaseContext) {\n this.counter = Counter._create(name)\n this.ctx = ctx\n }\n\n add(value: Numberish, labels: Labels = {}) {\n this.counter.add(this.ctx, value, labels)\n }\n\n sub(value: Numberish, labels: Labels = {}) {\n this.counter.sub(this.ctx, value, labels)\n }\n}\n\nexport class Gauge extends Metric {\n static register(name: string, option?: MetricOptions): Gauge {\n return MetricState.INSTANCE.getOrRegisterMetric(MetricType.GAUGE, name, option) as Gauge\n }\n\n /**\n * internal use only, to create a metric use {@link register} instead\n */\n static _create(name: string, option?: MetricOptions): Gauge {\n return new Gauge(name, option)\n }\n\n private constructor(name: string, option?: MetricOptions) {\n super(MetricType.GAUGE, name, option)\n }\n\n record(ctx: BaseContext, value: Numberish, labels: Labels = {}) {\n ctx._res.gauges.push({\n metadata: ctx.getMetaData(this.config.name, labels),\n metricValue: toMetricValue(value),\n runtimeInfo: undefined,\n })\n }\n}\n\nexport class GaugeBinding {\n private readonly gauge: Gauge\n private readonly ctx: BaseContext\n\n constructor(name: string, ctx: BaseContext) {\n this.gauge = Gauge._create(name)\n this.ctx = ctx\n }\n\n record(value: Numberish, labels: Labels = {}) {\n this.gauge.record(this.ctx, value, labels)\n }\n}\n\nexport class Meter {\n private readonly ctx: BaseContext\n\n constructor(ctx: BaseContext) {\n this.ctx = ctx\n }\n\n Counter(name: string): CounterBinding {\n return new CounterBinding(name, this.ctx)\n }\n\n Gauge(name: string): GaugeBinding {\n return new GaugeBinding(name, this.ctx)\n }\n}\n"]}
1
+ {"version":3,"file":"meter.js","sourceRoot":"","sources":["../../src/core/meter.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseContext } from './base-context.js'\nimport { Numberish, toMetricValue } from './numberish.js'\nimport { Labels, NamedResultDescriptor, normalizeKey } from './metadata.js'\nimport { AggregationConfig, AggregationType, MetricConfig, MetricType } from '@sentio/protos'\nimport { MapStateStorage } from '@sentio/runtime'\n\nexport class MetricOptions {\n unit?: string\n description?: string\n sparse?: boolean\n persistentBetweenVersion?: boolean\n aggregationConfig?: Partial<AggregationConfig>\n}\n\nexport class CounterOptions {\n unit?: string\n description?: string\n sparse?: boolean\n}\n\n// enum MetricType {\n// Counter = 0,\n// Gauge = 1,\n// }\n\nexport class Metric extends NamedResultDescriptor {\n config: MetricConfig\n constructor(type: MetricType, name: string, option?: MetricOptions) {\n super(normalizeKey(name))\n this.config = MetricConfig.fromPartial({ name: this.name, type: type, ...option })\n const aggregationConfig = this.config.aggregationConfig\n if (aggregationConfig && aggregationConfig.intervalInMinutes.length) {\n if (aggregationConfig.intervalInMinutes.length > 1) {\n console.error('current only support one intervalInMinutes, only first interval will be used for', name)\n }\n if (aggregationConfig.intervalInMinutes[0] > 0 && aggregationConfig.types.length === 0) {\n aggregationConfig.types = [AggregationType.SUM, AggregationType.COUNT]\n }\n }\n }\n}\n\nexport class MetricState extends MapStateStorage<Metric> {\n static INSTANCE = new MetricState()\n\n getOrRegisterMetric(type: MetricType, name: string, option?: CounterOptions | MetricOptions): Metric {\n const metricMap = this.getOrRegister()\n let metric = metricMap.get(name)\n if (metric && metric.config.type !== type) {\n throw Error(`redefine ${name} of metric type ${type} that is previously ${metric.config.type}`)\n }\n\n if (!metric) {\n if (type === MetricType.COUNTER) {\n metric = Counter._create(name, option)\n } else {\n metric = Gauge._create(name, option)\n }\n }\n metricMap.set(name, metric)\n return metric\n }\n}\n\nexport class Counter extends Metric {\n static register(name: string, option?: CounterOptions): Counter {\n return MetricState.INSTANCE.getOrRegisterMetric(MetricType.COUNTER, name, option) as Counter\n }\n\n /**\n * internal use only, to create a metric use {@link register} instead\n */\n static _create(name: string, option?: MetricOptions): Counter {\n return new Counter(name, option)\n }\n\n private constructor(name: string, option?: MetricOptions) {\n super(MetricType.COUNTER, name, option)\n }\n\n add(ctx: BaseContext, value: Numberish, labels: Labels = {}) {\n this.record(ctx, value, labels, true)\n }\n\n sub(ctx: BaseContext, value: Numberish, labels: Labels = {}) {\n this.record(ctx, value, labels, false)\n }\n\n private record(ctx: BaseContext, value: Numberish, labels: Labels, add: boolean) {\n ctx._res.counters.push({\n metadata: ctx.getMetaData(this.name, labels),\n metricValue: toMetricValue(value),\n add: add,\n runtimeInfo: undefined,\n })\n }\n}\n\nexport class CounterBinding {\n private readonly ctx: BaseContext\n private readonly counter: Counter\n\n constructor(name: string, ctx: BaseContext) {\n this.counter = Counter._create(name)\n this.ctx = ctx\n }\n\n add(value: Numberish, labels: Labels = {}) {\n this.counter.add(this.ctx, value, labels)\n }\n\n sub(value: Numberish, labels: Labels = {}) {\n this.counter.sub(this.ctx, value, labels)\n }\n}\n\nexport class Gauge extends Metric {\n static register(name: string, option?: MetricOptions): Gauge {\n return MetricState.INSTANCE.getOrRegisterMetric(MetricType.GAUGE, name, option) as Gauge\n }\n\n /**\n * internal use only, to create a metric use {@link register} instead\n */\n static _create(name: string, option?: MetricOptions): Gauge {\n return new Gauge(name, option)\n }\n\n private constructor(name: string, option?: MetricOptions) {\n super(MetricType.GAUGE, name, option)\n }\n\n record(ctx: BaseContext, value: Numberish, labels: Labels = {}) {\n ctx._res.gauges.push({\n metadata: ctx.getMetaData(this.config.name, labels),\n metricValue: toMetricValue(value),\n runtimeInfo: undefined,\n })\n }\n}\n\nexport class GaugeBinding {\n private readonly gauge: Gauge\n private readonly ctx: BaseContext\n\n constructor(name: string, ctx: BaseContext) {\n this.gauge = Gauge._create(name)\n this.ctx = ctx\n }\n\n record(value: Numberish, labels: Labels = {}) {\n this.gauge.record(this.ctx, value, labels)\n }\n}\n\nexport class Meter {\n private readonly ctx: BaseContext\n\n constructor(ctx: BaseContext) {\n this.ctx = ctx\n }\n\n Counter(name: string): CounterBinding {\n return new CounterBinding(name, this.ctx)\n }\n\n Gauge(name: string): GaugeBinding {\n return new GaugeBinding(name, this.ctx)\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"meter.test.js","sourceRoot":"","sources":["../../src/core/meter.test.ts"],"names":[],"mappings":";;AAAA,+BAA6B;AAC7B,mCAAwD;AAExD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QACtC,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;QAC1C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;QAE9C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;QAC9C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;QAC9C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QAEtC,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;QAEhD,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;QAC9B,MAAM,OAAO,GAAG,IAAA,uBAAe,EAAC,MAAM,CAAC,CAAA;QAEvC,IAAA,aAAM,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { expect } from 'chai'\nimport { normalizeLabels, normalizeName } from './meter'\n\ndescribe('meter tests', () => {\n test('test normalization ', async () => {\n expect(normalizeName('abc')).eq('abc')\n expect(normalizeName('a-b-c')).eq('a-b-c')\n expect(normalizeName('_a-B-1.')).eq('_a-B-1_')\n\n expect(normalizeName('a/b\\\\c\\n')).eq('a_b_c_')\n expect(normalizeName('abc abc')).eq('abc_abc')\n expect(normalizeName('*&~')).eq('___')\n\n expect(normalizeName('vo total')).eq('vo_total')\n\n expect(normalizeName('x'.repeat(200)).length).eq(100)\n })\n\n test('test labels', async () => {\n const labels = { labels: '0' }\n const updated = normalizeLabels(labels)\n\n expect(updated['labels_']).eq('0')\n })\n})\n"]}
1
+ {"version":3,"file":"meter.test.js","sourceRoot":"","sources":["../../src/core/meter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE9D,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QACtC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;QAC1C,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;QAE9C,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;QAC9C,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;QAC9C,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QAEtC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;QAEhD,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;QAC9B,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;QAEvC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { expect } from 'chai'\nimport { normalizeLabels, normalizeName } from './metadata.js'\n\ndescribe('meter tests', () => {\n test('test normalization ', async () => {\n expect(normalizeName('abc')).eq('abc')\n expect(normalizeName('a-b-c')).eq('a-b-c')\n expect(normalizeName('_a-B-1.')).eq('_a-B-1_')\n\n expect(normalizeName('a/b\\\\c\\n')).eq('a_b_c_')\n expect(normalizeName('abc abc')).eq('abc_abc')\n expect(normalizeName('*&~')).eq('___')\n\n expect(normalizeName('vo total')).eq('vo_total')\n\n expect(normalizeName('x'.repeat(200)).length).eq(100)\n })\n\n test('test labels', async () => {\n const labels = { labels: '0' }\n const updated = normalizeLabels(labels)\n\n expect(updated['labels_']).eq('0')\n })\n})\n"]}
@@ -1,5 +1,5 @@
1
1
  import { BigInteger, MetricValue } from '@sentio/protos';
2
- import { BigDecimal } from '.';
2
+ import { BigDecimal } from './big-decimal.js';
3
3
  import { BlockTag } from 'ethers/providers';
4
4
  export type Numberish = number | bigint | BigDecimal | string;
5
5
  export declare function toBlockTag(a: number | bigint): BlockTag;
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toBigInteger = exports.toMetricValue = exports.toBlockTag = void 0;
4
- const protos_1 = require("@sentio/protos");
5
- const _1 = require(".");
6
- function toBlockTag(a) {
1
+ import { MetricValue } from '@sentio/protos';
2
+ import { BigDecimal } from './big-decimal.js';
3
+ export function toBlockTag(a) {
7
4
  if (typeof a === 'number') {
8
5
  return a;
9
6
  }
@@ -12,8 +9,7 @@ function toBlockTag(a) {
12
9
  }
13
10
  return Number(a);
14
11
  }
15
- exports.toBlockTag = toBlockTag;
16
- function toMetricValue(value) {
12
+ export function toMetricValue(value) {
17
13
  if (typeof value === 'number') {
18
14
  if (Number.isNaN(value)) {
19
15
  throw new Error('Cannot record NaN value');
@@ -22,28 +18,28 @@ function toMetricValue(value) {
22
18
  throw new Error('Cannot record infinite value');
23
19
  }
24
20
  if (Number.isInteger(value) && !Number.isSafeInteger(value)) {
25
- return protos_1.MetricValue.fromPartial({
21
+ return MetricValue.fromPartial({
26
22
  bigInteger: toBigInteger(value),
27
23
  });
28
24
  }
29
- return protos_1.MetricValue.fromPartial({
25
+ return MetricValue.fromPartial({
30
26
  doubleValue: Number(value),
31
27
  });
32
28
  }
33
29
  if (typeof value === 'bigint') {
34
- return protos_1.MetricValue.fromPartial({
30
+ return MetricValue.fromPartial({
35
31
  bigInteger: toBigInteger(value),
36
32
  });
37
33
  }
38
34
  if (typeof value === 'string') {
39
- return protos_1.MetricValue.fromPartial({
35
+ return MetricValue.fromPartial({
40
36
  bigDecimal: value,
41
37
  });
42
38
  }
43
39
  // if (value instanceof BigDecimal) {
44
40
  // Carefully consider the use case here
45
41
  if (value.isInteger()) {
46
- return protos_1.MetricValue.fromPartial({
42
+ return MetricValue.fromPartial({
47
43
  bigInteger: bigDecimalToBigInteger(value),
48
44
  });
49
45
  }
@@ -55,13 +51,12 @@ function toMetricValue(value) {
55
51
  // NaN also not finite
56
52
  throw new Error('Cannot record infinite value');
57
53
  }
58
- return protos_1.MetricValue.fromPartial({
54
+ return MetricValue.fromPartial({
59
55
  bigDecimal: value.toString(), // e.g. -7.350918e-428
60
56
  });
61
57
  }
62
58
  // }
63
59
  }
64
- exports.toMetricValue = toMetricValue;
65
60
  function bigDecimalToBigInteger(a) {
66
61
  const negative = a.isNegative();
67
62
  if (negative) {
@@ -76,7 +71,7 @@ function intToBigInteger(a) {
76
71
  }
77
72
  return hexToBigInteger(a.toString(16), negative);
78
73
  }
79
- function toBigInteger(a) {
74
+ export function toBigInteger(a) {
80
75
  if (typeof a === 'number') {
81
76
  return intToBigInteger(a);
82
77
  }
@@ -86,7 +81,7 @@ function toBigInteger(a) {
86
81
  if (typeof a === 'string') {
87
82
  return intToBigInteger(BigInt(a));
88
83
  }
89
- if (a instanceof _1.BigDecimal) {
84
+ if (a instanceof BigDecimal) {
90
85
  return bigDecimalToBigInteger(a);
91
86
  }
92
87
  return intToBigInteger(a);
@@ -101,7 +96,6 @@ function toBigInteger(a) {
101
96
  // negative, value: new Uint8Array(value.reverse()),
102
97
  // }
103
98
  }
104
- exports.toBigInteger = toBigInteger;
105
99
  function hexToBigInteger(hex, negative) {
106
100
  if (hex.length % 2 === 1) {
107
101
  hex = '0' + hex;
@@ -1 +1 @@
1
- {"version":3,"file":"numberish.js","sourceRoot":"","sources":["../../src/core/numberish.ts"],"names":[],"mappings":"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","sourcesContent":["import { BigInteger, MetricValue } from '@sentio/protos'\nimport { BigDecimal } from '.'\nimport { BlockTag } from 'ethers/providers'\n\nexport type Numberish = number | bigint | BigDecimal | string\n\nexport function toBlockTag(a: number | bigint): BlockTag {\n if (typeof a === 'number') {\n return a\n }\n if (a > Number.MAX_SAFE_INTEGER) {\n return '0x' + a.toString(16)\n }\n return Number(a)\n}\n\nexport function toMetricValue(value: Numberish): MetricValue {\n if (typeof value === 'number') {\n if (Number.isNaN(value)) {\n throw new Error('Cannot record NaN value')\n }\n if (!Number.isFinite(value)) {\n throw new Error('Cannot record infinite value')\n }\n if (Number.isInteger(value) && !Number.isSafeInteger(value)) {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value),\n })\n }\n\n return MetricValue.fromPartial({\n doubleValue: Number(value),\n })\n }\n if (typeof value === 'bigint') {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value),\n })\n }\n if (typeof value === 'string') {\n return MetricValue.fromPartial({\n bigDecimal: value,\n })\n }\n // if (value instanceof BigDecimal) {\n // Carefully consider the use case here\n if (value.isInteger()) {\n return MetricValue.fromPartial({\n bigInteger: bigDecimalToBigInteger(value),\n })\n } else {\n if (value.isNaN()) {\n throw new Error('Cannot record NaN value')\n }\n if (!value.isFinite()) {\n // NaN also not finite\n throw new Error('Cannot record infinite value')\n }\n return MetricValue.fromPartial({\n bigDecimal: value.toString(), // e.g. -7.350918e-428\n })\n }\n // }\n}\n\nfunction bigDecimalToBigInteger(a: BigDecimal): BigInteger {\n const negative = a.isNegative()\n if (negative) {\n a = a.abs()\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nfunction intToBigInteger(a: bigint | number): BigInteger {\n const negative = a < 0\n if (negative) {\n a = -a\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nexport function toBigInteger(a: Numberish): BigInteger {\n if (typeof a === 'number') {\n return intToBigInteger(a)\n }\n if (typeof a === 'bigint') {\n return intToBigInteger(a)\n }\n if (typeof a === 'string') {\n return intToBigInteger(BigInt(a))\n }\n if (a instanceof BigDecimal) {\n return bigDecimalToBigInteger(a)\n }\n return intToBigInteger(a)\n\n // Following code is actually very slow\n // while (a > 0) {\n // const d = a & 0xffn\n // a >>= 8n\n // value.push(Number(d))\n // }\n //\n // return {\n // negative, value: new Uint8Array(value.reverse()),\n // }\n}\n\nfunction hexToBigInteger(hex: string, negative: boolean): BigInteger {\n if (hex.length % 2 === 1) {\n hex = '0' + hex\n }\n const buffer = Buffer.from(hex, 'hex')\n\n return {\n negative: negative,\n data: new Uint8Array(buffer),\n }\n}\n"]}
1
+ {"version":3,"file":"numberish.js","sourceRoot":"","sources":["../../src/core/numberish.ts"],"names":[],"mappings":"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","sourcesContent":["import { BigInteger, MetricValue } from '@sentio/protos'\nimport { BigDecimal } from './big-decimal.js'\nimport { BlockTag } from 'ethers/providers'\n\nexport type Numberish = number | bigint | BigDecimal | string\n\nexport function toBlockTag(a: number | bigint): BlockTag {\n if (typeof a === 'number') {\n return a\n }\n if (a > Number.MAX_SAFE_INTEGER) {\n return '0x' + a.toString(16)\n }\n return Number(a)\n}\n\nexport function toMetricValue(value: Numberish): MetricValue {\n if (typeof value === 'number') {\n if (Number.isNaN(value)) {\n throw new Error('Cannot record NaN value')\n }\n if (!Number.isFinite(value)) {\n throw new Error('Cannot record infinite value')\n }\n if (Number.isInteger(value) && !Number.isSafeInteger(value)) {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value),\n })\n }\n\n return MetricValue.fromPartial({\n doubleValue: Number(value),\n })\n }\n if (typeof value === 'bigint') {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value),\n })\n }\n if (typeof value === 'string') {\n return MetricValue.fromPartial({\n bigDecimal: value,\n })\n }\n // if (value instanceof BigDecimal) {\n // Carefully consider the use case here\n if (value.isInteger()) {\n return MetricValue.fromPartial({\n bigInteger: bigDecimalToBigInteger(value),\n })\n } else {\n if (value.isNaN()) {\n throw new Error('Cannot record NaN value')\n }\n if (!value.isFinite()) {\n // NaN also not finite\n throw new Error('Cannot record infinite value')\n }\n return MetricValue.fromPartial({\n bigDecimal: value.toString(), // e.g. -7.350918e-428\n })\n }\n // }\n}\n\nfunction bigDecimalToBigInteger(a: BigDecimal): BigInteger {\n const negative = a.isNegative()\n if (negative) {\n a = a.abs()\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nfunction intToBigInteger(a: bigint | number): BigInteger {\n const negative = a < 0\n if (negative) {\n a = -a\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nexport function toBigInteger(a: Numberish): BigInteger {\n if (typeof a === 'number') {\n return intToBigInteger(a)\n }\n if (typeof a === 'bigint') {\n return intToBigInteger(a)\n }\n if (typeof a === 'string') {\n return intToBigInteger(BigInt(a))\n }\n if (a instanceof BigDecimal) {\n return bigDecimalToBigInteger(a)\n }\n return intToBigInteger(a)\n\n // Following code is actually very slow\n // while (a > 0) {\n // const d = a & 0xffn\n // a >>= 8n\n // value.push(Number(d))\n // }\n //\n // return {\n // negative, value: new Uint8Array(value.reverse()),\n // }\n}\n\nfunction hexToBigInteger(hex: string, negative: boolean): BigInteger {\n if (hex.length % 2 === 1) {\n hex = '0' + hex\n }\n const buffer = Buffer.from(hex, 'hex')\n\n return {\n negative: negative,\n data: new Uint8Array(buffer),\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"numberish.test.js","sourceRoot":"","sources":["../../src/core/numberish.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from 'chai'\nimport { toBigInteger, toMetricValue } from './numberish'\nimport { webcrypto } from 'crypto'\nimport { performance } from 'perf_hooks'\nimport { BigInteger } from '@sentio/protos'\nimport { BigDecimal } from '.'\nimport { bytesToBigInt } from '../utils/conversion'\n\n// TODO add test for type conversion\ndescribe('Numberish tests', () => {\n const values: bigint[] = [0n, -0n, 3815372408723498172304781320847103784n, 2132n, -18708707n, 123n << 100n]\n\n test('big integer conversion correctness ', async () => {\n for (const v of values) {\n const b = toBigInteger(v)\n const hex1 = BigIntegerToHex(b)\n const hex2 = v.toString(16)\n expect(hex1).equals(hex2)\n }\n })\n\n test('random big integer conversion correctness ', async () => {\n for (let i = 0; i < 1000; i++) {\n const random = webcrypto.getRandomValues(new Uint8Array(256))\n const v = bytesToBigInt(random)\n const b = toBigInteger(v)\n\n expect(bytesToBigInt(b.data)).equals(v)\n }\n })\n\n test.skip('random big integer performance', async () => {\n jest.setTimeout(100000)\n jest.retryTimes(3)\n\n let timer1 = 0\n let timer2 = 0\n for (let i = 0; i < 1000; i++) {\n // Use higher value for local debugging\n const random = webcrypto.getRandomValues(new Uint8Array(256))\n const v = bytesToBigInt(random)\n\n let start = performance.now()\n toBigInteger(v)\n timer1 += performance.now() - start\n\n start = performance.now()\n v.toString(16)\n timer2 += performance.now() - start\n }\n\n console.log(timer1, timer2)\n expect(timer1).to.lessThan(timer2 * 3)\n })\n\n test('metric values', async () => {\n const longDec = '12.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002'\n expect(toMetricValue(new BigDecimal(longDec)).bigDecimal == longDec)\n\n const complexDec = '-7.350918e-428'\n expect(toMetricValue(new BigDecimal(complexDec)).bigDecimal == complexDec)\n\n expect(\n BigIntegerToBigInt(toMetricValue(new BigDecimal('100000')).bigInteger || BigInteger.fromPartial({})) === 100000n\n )\n })\n})\n\n// Performance very bad\nfunction BigIntegerToHex(b: BigInteger): string {\n let res = bytesToBigInt(b.data).toString(16)\n if (b.negative) {\n res = '-' + res\n }\n return res\n}\n\nfunction BigIntegerToBigInt(b: BigInteger): bigint {\n let res = bytesToBigInt(b.data)\n if (b.negative) {\n res = -res\n }\n return res\n}\n"]}
1
+ {"version":3,"file":"numberish.test.js","sourceRoot":"","sources":["../../src/core/numberish.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from 'chai'\nimport { toBigInteger, toMetricValue } from './numberish.js'\nimport { webcrypto } from 'crypto'\nimport { performance } from 'perf_hooks'\nimport { BigInteger } from '@sentio/protos'\nimport { BigDecimal } from './big-decimal.js'\nimport { bytesToBigInt } from '../utils/conversion.js'\n\n// TODO add test for type conversion\ndescribe('Numberish tests', () => {\n const values: bigint[] = [0n, -0n, 3815372408723498172304781320847103784n, 2132n, -18708707n, 123n << 100n]\n\n test('big integer conversion correctness ', async () => {\n for (const v of values) {\n const b = toBigInteger(v)\n const hex1 = BigIntegerToHex(b)\n const hex2 = v.toString(16)\n expect(hex1).equals(hex2)\n }\n })\n\n test('random big integer conversion correctness ', async () => {\n for (let i = 0; i < 1000; i++) {\n const random = webcrypto.getRandomValues(new Uint8Array(256))\n const v = bytesToBigInt(random)\n const b = toBigInteger(v)\n\n expect(bytesToBigInt(b.data)).equals(v)\n }\n })\n\n test.skip('random big integer performance', async () => {\n jest.setTimeout(100000)\n jest.retryTimes(3)\n\n let timer1 = 0\n let timer2 = 0\n for (let i = 0; i < 1000; i++) {\n // Use higher value for local debugging\n const random = webcrypto.getRandomValues(new Uint8Array(256))\n const v = bytesToBigInt(random)\n\n let start = performance.now()\n toBigInteger(v)\n timer1 += performance.now() - start\n\n start = performance.now()\n v.toString(16)\n timer2 += performance.now() - start\n }\n\n console.log(timer1, timer2)\n expect(timer1).to.lessThan(timer2 * 3)\n })\n\n test('metric values', async () => {\n const longDec = '12.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002'\n expect(toMetricValue(new BigDecimal(longDec)).bigDecimal == longDec)\n\n const complexDec = '-7.350918e-428'\n expect(toMetricValue(new BigDecimal(complexDec)).bigDecimal == complexDec)\n\n expect(\n BigIntegerToBigInt(toMetricValue(new BigDecimal('100000')).bigInteger || BigInteger.fromPartial({})) === 100000n\n )\n })\n})\n\n// Performance very bad\nfunction BigIntegerToHex(b: BigInteger): string {\n let res = bytesToBigInt(b.data).toString(16)\n if (b.negative) {\n res = '-' + res\n }\n return res\n}\n\nfunction BigIntegerToBigInt(b: BigInteger): bigint {\n let res = bytesToBigInt(b.data)\n if (b.negative) {\n res = -res\n }\n return res\n}\n"]}
@@ -1,21 +1,18 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SuiPlugin = void 0;
4
- const runtime_1 = require("@sentio/runtime");
5
- const protos_1 = require("@sentio/protos");
6
- const nice_grpc_1 = require("nice-grpc");
7
- const chain_1 = require("../utils/chain");
8
- const sui_processor_1 = require("./sui-processor");
9
- class SuiPlugin extends runtime_1.Plugin {
1
+ import { Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime';
2
+ import { HandlerType } from '@sentio/protos';
3
+ import { ServerError, Status } from 'nice-grpc';
4
+ import { CHAIN_IDS } from '../utils/chain.js';
5
+ import { SuiProcessorState } from './sui-processor.js';
6
+ export class SuiPlugin extends Plugin {
10
7
  name = 'SuiPlugin';
11
8
  async configure(config) {
12
- for (const suiProcessor of sui_processor_1.SuiProcessorState.INSTANCE.getValues()) {
9
+ for (const suiProcessor of SuiProcessorState.INSTANCE.getValues()) {
13
10
  const contractConfig = {
14
11
  transactionConfig: [],
15
- processorType: runtime_1.USER_PROCESSOR,
12
+ processorType: USER_PROCESSOR,
16
13
  contract: {
17
14
  name: 'sui contract',
18
- chainId: chain_1.CHAIN_IDS.SUI_DEVNET,
15
+ chainId: CHAIN_IDS.SUI_DEVNET,
19
16
  address: suiProcessor.address,
20
17
  abi: '',
21
18
  },
@@ -34,13 +31,12 @@ class SuiPlugin extends runtime_1.Plugin {
34
31
  supportedHandlers = [];
35
32
  processBinding(request) {
36
33
  switch (request.handlerType) {
37
- case protos_1.HandlerType.SUI_TRANSACTION:
34
+ case HandlerType.SUI_TRANSACTION:
38
35
  // return this.processSolInstruction(request)
39
36
  default:
40
- throw new nice_grpc_1.ServerError(nice_grpc_1.Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType);
37
+ throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType);
41
38
  }
42
39
  }
43
40
  }
44
- exports.SuiPlugin = SuiPlugin;
45
- runtime_1.PluginManager.INSTANCE.register(new SuiPlugin());
41
+ PluginManager.INSTANCE.register(new SuiPlugin());
46
42
  //# sourceMappingURL=sui-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sui-plugin.js","sourceRoot":"","sources":["../../src/core/sui-plugin.ts"],"names":[],"mappings":";;;AAAA,6CAAuE;AACvE,2CAA+G;AAE/G,yCAA+C;AAE/C,0CAA0C;AAC1C,mDAAmD;AAEnD,MAAa,SAAU,SAAQ,gBAAM;IACnC,IAAI,GAAW,WAAW,CAAA;IAE1B,KAAK,CAAC,SAAS,CAAC,MAA6B;QAC3C,KAAK,MAAM,YAAY,IAAI,iCAAiB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACjE,MAAM,cAAc,GAAmB;gBACrC,iBAAiB,EAAE,EAAE;gBACrB,aAAa,EAAE,wBAAc;gBAC7B,QAAQ,EAAE;oBACR,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,iBAAS,CAAC,UAAU;oBAC7B,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,GAAG,EAAE,EAAE;iBACR;gBACD,UAAU,EAAE,EAAE;gBACd,eAAe,EAAE,EAAE;gBACnB,YAAY,EAAE,EAAE;gBAChB,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,cAAc;gBAC9C,QAAQ,EAAE,EAAE;gBACZ,iBAAiB,EAAE,SAAS;gBAC5B,iBAAiB,EAAE,EAAE;gBACrB,gBAAgB,EAAE,EAAE;aACrB,CAAA;YACD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;SAC5C;IACH,CAAC;IAED,iBAAiB,GAAG,EAAE,CAAA;IAEtB,cAAc,CAAC,OAAoB;QACjC,QAAQ,OAAO,CAAC,WAAW,EAAE;YAC3B,KAAK,oBAAW,CAAC,eAAe,CAAC;YACjC,6CAA6C;YAC7C;gBACE,MAAM,IAAI,uBAAW,CAAC,kBAAM,CAAC,gBAAgB,EAAE,4BAA4B,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;SACrG;IACH,CAAC;CACF;AArCD,8BAqCC;AAED,uBAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC,CAAA","sourcesContent":["import { Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport { ContractConfig, DataBinding, HandlerType, ProcessConfigResponse, ProcessResult } from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\n\nimport { CHAIN_IDS } from '../utils/chain'\nimport { SuiProcessorState } from './sui-processor'\n\nexport class SuiPlugin extends Plugin {\n name: string = 'SuiPlugin'\n\n async configure(config: ProcessConfigResponse) {\n for (const suiProcessor of SuiProcessorState.INSTANCE.getValues()) {\n const contractConfig: ContractConfig = {\n transactionConfig: [],\n processorType: USER_PROCESSOR,\n contract: {\n name: 'sui contract',\n chainId: CHAIN_IDS.SUI_DEVNET,\n address: suiProcessor.address,\n abi: '',\n },\n logConfigs: [],\n intervalConfigs: [],\n traceConfigs: [],\n startBlock: suiProcessor.config.startSeqNumber,\n endBlock: 0n,\n instructionConfig: undefined,\n aptosEventConfigs: [],\n aptosCallConfigs: [],\n }\n config.contractConfigs.push(contractConfig)\n }\n }\n\n supportedHandlers = []\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.SUI_TRANSACTION:\n // return this.processSolInstruction(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n}\n\nPluginManager.INSTANCE.register(new SuiPlugin())\n"]}
1
+ {"version":3,"file":"sui-plugin.js","sourceRoot":"","sources":["../../src/core/sui-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAA+B,WAAW,EAAwC,MAAM,gBAAgB,CAAA;AAE/G,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD,MAAM,OAAO,SAAU,SAAQ,MAAM;IACnC,IAAI,GAAW,WAAW,CAAA;IAE1B,KAAK,CAAC,SAAS,CAAC,MAA6B;QAC3C,KAAK,MAAM,YAAY,IAAI,iBAAiB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACjE,MAAM,cAAc,GAAmB;gBACrC,iBAAiB,EAAE,EAAE;gBACrB,aAAa,EAAE,cAAc;gBAC7B,QAAQ,EAAE;oBACR,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,SAAS,CAAC,UAAU;oBAC7B,OAAO,EAAE,YAAY,CAAC,OAAO;oBAC7B,GAAG,EAAE,EAAE;iBACR;gBACD,UAAU,EAAE,EAAE;gBACd,eAAe,EAAE,EAAE;gBACnB,YAAY,EAAE,EAAE;gBAChB,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,cAAc;gBAC9C,QAAQ,EAAE,EAAE;gBACZ,iBAAiB,EAAE,SAAS;gBAC5B,iBAAiB,EAAE,EAAE;gBACrB,gBAAgB,EAAE,EAAE;aACrB,CAAA;YACD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;SAC5C;IACH,CAAC;IAED,iBAAiB,GAAG,EAAE,CAAA;IAEtB,cAAc,CAAC,OAAoB;QACjC,QAAQ,OAAO,CAAC,WAAW,EAAE;YAC3B,KAAK,WAAW,CAAC,eAAe,CAAC;YACjC,6CAA6C;YAC7C;gBACE,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,4BAA4B,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;SACrG;IACH,CAAC;CACF;AAED,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC,CAAA","sourcesContent":["import { Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'\nimport { ContractConfig, DataBinding, HandlerType, ProcessConfigResponse, ProcessResult } from '@sentio/protos'\n\nimport { ServerError, Status } from 'nice-grpc'\n\nimport { CHAIN_IDS } from '../utils/chain.js'\nimport { SuiProcessorState } from './sui-processor.js'\n\nexport class SuiPlugin extends Plugin {\n name: string = 'SuiPlugin'\n\n async configure(config: ProcessConfigResponse) {\n for (const suiProcessor of SuiProcessorState.INSTANCE.getValues()) {\n const contractConfig: ContractConfig = {\n transactionConfig: [],\n processorType: USER_PROCESSOR,\n contract: {\n name: 'sui contract',\n chainId: CHAIN_IDS.SUI_DEVNET,\n address: suiProcessor.address,\n abi: '',\n },\n logConfigs: [],\n intervalConfigs: [],\n traceConfigs: [],\n startBlock: suiProcessor.config.startSeqNumber,\n endBlock: 0n,\n instructionConfig: undefined,\n aptosEventConfigs: [],\n aptosCallConfigs: [],\n }\n config.contractConfigs.push(contractConfig)\n }\n }\n\n supportedHandlers = []\n\n processBinding(request: DataBinding): Promise<ProcessResult> {\n switch (request.handlerType) {\n case HandlerType.SUI_TRANSACTION:\n // return this.processSolInstruction(request)\n default:\n throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)\n }\n }\n}\n\nPluginManager.INSTANCE.register(new SuiPlugin())\n"]}
@@ -1,4 +1,4 @@
1
- import { SuiContext } from './context';
1
+ import { SuiContext } from './context.js';
2
2
  import { ProcessResult } from '@sentio/protos';
3
3
  import { ListStateStorage } from '@sentio/runtime';
4
4
  type IndexConfigure = {