@sentio/sdk 3.9.0-rc.9 → 4.0.0-rc.10

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 (366) hide show
  1. package/lib/aptos/aptos-plugin.d.ts +1 -1
  2. package/lib/aptos/aptos-plugin.d.ts.map +1 -1
  3. package/lib/aptos/aptos-plugin.js +43 -42
  4. package/lib/aptos/aptos-plugin.js.map +1 -1
  5. package/lib/aptos/aptos-processor.d.ts +4 -4
  6. package/lib/aptos/aptos-processor.d.ts.map +1 -1
  7. package/lib/aptos/aptos-processor.js +25 -25
  8. package/lib/aptos/aptos-processor.js.map +1 -1
  9. package/lib/aptos/aptos-resource-processor-template.d.ts +1 -1
  10. package/lib/aptos/aptos-resource-processor-template.d.ts.map +1 -1
  11. package/lib/aptos/aptos-resource-processor-template.js +10 -5
  12. package/lib/aptos/aptos-resource-processor-template.js.map +1 -1
  13. package/lib/aptos/context.d.ts +1 -1
  14. package/lib/aptos/context.d.ts.map +1 -1
  15. package/lib/aptos/context.js +11 -9
  16. package/lib/aptos/context.js.map +1 -1
  17. package/lib/aptos/data.d.ts +4 -4
  18. package/lib/aptos/data.d.ts.map +1 -1
  19. package/lib/aptos/network.js +1 -1
  20. package/lib/aptos/network.js.map +1 -1
  21. package/lib/core/base-context.d.ts +3 -2
  22. package/lib/core/base-context.d.ts.map +1 -1
  23. package/lib/core/base-context.js +12 -11
  24. package/lib/core/base-context.js.map +1 -1
  25. package/lib/core/core-plugin.d.ts.map +1 -1
  26. package/lib/core/core-plugin.js +6 -4
  27. package/lib/core/core-plugin.js.map +1 -1
  28. package/lib/core/event-logger.d.ts +10 -2
  29. package/lib/core/event-logger.d.ts.map +1 -1
  30. package/lib/core/event-logger.js +42 -27
  31. package/lib/core/event-logger.js.map +1 -1
  32. package/lib/core/exporter.d.ts.map +1 -1
  33. package/lib/core/exporter.js +5 -3
  34. package/lib/core/exporter.js.map +1 -1
  35. package/lib/core/handler-options.d.ts +1 -1
  36. package/lib/core/handler-options.d.ts.map +1 -1
  37. package/lib/core/handler-register.d.ts +1 -1
  38. package/lib/core/handler-register.d.ts.map +1 -1
  39. package/lib/core/handler-register.js +2 -2
  40. package/lib/core/handler-register.js.map +1 -1
  41. package/lib/core/meter.d.ts +4 -3
  42. package/lib/core/meter.d.ts.map +1 -1
  43. package/lib/core/meter.js +5 -4
  44. package/lib/core/meter.js.map +1 -1
  45. package/lib/core/normalization.d.ts +1 -1
  46. package/lib/core/normalization.d.ts.map +1 -1
  47. package/lib/core/normalization.js +41 -31
  48. package/lib/core/normalization.js.map +1 -1
  49. package/lib/core/numberish.d.ts +1 -1
  50. package/lib/core/numberish.d.ts.map +1 -1
  51. package/lib/core/numberish.js +35 -30
  52. package/lib/core/numberish.js.map +1 -1
  53. package/lib/core/partition-handler-manager.d.ts +1 -1
  54. package/lib/core/partition-handler-manager.d.ts.map +1 -1
  55. package/lib/core/partition-handler-manager.js +10 -9
  56. package/lib/core/partition-handler-manager.js.map +1 -1
  57. package/lib/cosmos/context.d.ts.map +1 -1
  58. package/lib/cosmos/context.js +4 -2
  59. package/lib/cosmos/context.js.map +1 -1
  60. package/lib/cosmos/cosmos-plugin.d.ts.map +1 -1
  61. package/lib/cosmos/cosmos-plugin.js +11 -10
  62. package/lib/cosmos/cosmos-plugin.js.map +1 -1
  63. package/lib/cosmos/cosmos-processor.js.map +1 -1
  64. package/lib/eth/abi-decoder/decode-worker.js +2 -2
  65. package/lib/eth/abi-decoder/decode-worker.js.map +1 -1
  66. package/lib/eth/account-processor.d.ts +2 -2
  67. package/lib/eth/account-processor.d.ts.map +1 -1
  68. package/lib/eth/account-processor.js +10 -9
  69. package/lib/eth/account-processor.js.map +1 -1
  70. package/lib/eth/base-processor-template.d.ts +3 -3
  71. package/lib/eth/base-processor-template.d.ts.map +1 -1
  72. package/lib/eth/base-processor-template.js +14 -8
  73. package/lib/eth/base-processor-template.js.map +1 -1
  74. package/lib/eth/base-processor.d.ts +3 -3
  75. package/lib/eth/base-processor.d.ts.map +1 -1
  76. package/lib/eth/base-processor.js +53 -46
  77. package/lib/eth/base-processor.js.map +1 -1
  78. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.d.ts.map +1 -1
  79. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js +48 -46
  80. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js.map +1 -1
  81. package/lib/eth/builtin/internal/erc1155-processor.d.ts.map +1 -1
  82. package/lib/eth/builtin/internal/erc1155-processor.js +18 -16
  83. package/lib/eth/builtin/internal/erc1155-processor.js.map +1 -1
  84. package/lib/eth/builtin/internal/erc20-processor.d.ts.map +1 -1
  85. package/lib/eth/builtin/internal/erc20-processor.js +38 -36
  86. package/lib/eth/builtin/internal/erc20-processor.js.map +1 -1
  87. package/lib/eth/builtin/internal/erc20bytes-processor.d.ts.map +1 -1
  88. package/lib/eth/builtin/internal/erc20bytes-processor.js +20 -18
  89. package/lib/eth/builtin/internal/erc20bytes-processor.js.map +1 -1
  90. package/lib/eth/builtin/internal/erc721-processor.d.ts.map +1 -1
  91. package/lib/eth/builtin/internal/erc721-processor.js +30 -28
  92. package/lib/eth/builtin/internal/erc721-processor.js.map +1 -1
  93. package/lib/eth/builtin/internal/weth9-processor.d.ts.map +1 -1
  94. package/lib/eth/builtin/internal/weth9-processor.js +24 -22
  95. package/lib/eth/builtin/internal/weth9-processor.js.map +1 -1
  96. package/lib/eth/codegen/file.d.ts.map +1 -1
  97. package/lib/eth/codegen/file.js +2 -1
  98. package/lib/eth/codegen/file.js.map +1 -1
  99. package/lib/eth/codegen/function-calls.js +1 -1
  100. package/lib/eth/context.d.ts +1 -1
  101. package/lib/eth/context.d.ts.map +1 -1
  102. package/lib/eth/context.js +17 -11
  103. package/lib/eth/context.js.map +1 -1
  104. package/lib/eth/eth-plugin.d.ts.map +1 -1
  105. package/lib/eth/eth-plugin.js +85 -76
  106. package/lib/eth/eth-plugin.js.map +1 -1
  107. package/lib/eth/eth.d.ts +6 -6
  108. package/lib/eth/eth.d.ts.map +1 -1
  109. package/lib/eth/eth.js +39 -26
  110. package/lib/eth/eth.js.map +1 -1
  111. package/lib/eth/generic-processor.js +1 -1
  112. package/lib/eth/generic-processor.js.map +1 -1
  113. package/lib/eth/index.d.ts +2 -2
  114. package/lib/eth/index.d.ts.map +1 -1
  115. package/lib/eth/index.js +1 -2
  116. package/lib/eth/index.js.map +1 -1
  117. package/lib/eth/provider.d.ts +13 -0
  118. package/lib/eth/provider.d.ts.map +1 -0
  119. package/lib/eth/provider.js +164 -0
  120. package/lib/eth/provider.js.map +1 -0
  121. package/lib/fuel/asset-processor.d.ts +2 -2
  122. package/lib/fuel/asset-processor.d.ts.map +1 -1
  123. package/lib/fuel/asset-processor.js +5 -3
  124. package/lib/fuel/asset-processor.js.map +1 -1
  125. package/lib/fuel/context.d.ts.map +1 -1
  126. package/lib/fuel/context.js +4 -2
  127. package/lib/fuel/context.js.map +1 -1
  128. package/lib/fuel/fuel-plugin.d.ts.map +1 -1
  129. package/lib/fuel/fuel-plugin.js +41 -53
  130. package/lib/fuel/fuel-plugin.js.map +1 -1
  131. package/lib/fuel/fuel-processor-template.d.ts.map +1 -1
  132. package/lib/fuel/fuel-processor-template.js +9 -5
  133. package/lib/fuel/fuel-processor-template.js.map +1 -1
  134. package/lib/fuel/fuel-processor.d.ts.map +1 -1
  135. package/lib/fuel/fuel-processor.js +30 -20
  136. package/lib/fuel/fuel-processor.js.map +1 -1
  137. package/lib/fuel/global-processor.d.ts.map +1 -1
  138. package/lib/fuel/global-processor.js +2 -1
  139. package/lib/fuel/global-processor.js.map +1 -1
  140. package/lib/fuel/network.js +5 -5
  141. package/lib/fuel/network.js.map +1 -1
  142. package/lib/fuel/types.d.ts +10 -4
  143. package/lib/fuel/types.d.ts.map +1 -1
  144. package/lib/fuel/types.js.map +1 -1
  145. package/lib/iota/context.d.ts +1 -1
  146. package/lib/iota/context.d.ts.map +1 -1
  147. package/lib/iota/context.js +8 -6
  148. package/lib/iota/context.js.map +1 -1
  149. package/lib/iota/iota-object-processor-template.d.ts +1 -1
  150. package/lib/iota/iota-object-processor-template.d.ts.map +1 -1
  151. package/lib/iota/iota-object-processor-template.js +17 -12
  152. package/lib/iota/iota-object-processor-template.js.map +1 -1
  153. package/lib/iota/iota-object-processor.d.ts +1 -1
  154. package/lib/iota/iota-object-processor.d.ts.map +1 -1
  155. package/lib/iota/iota-object-processor.js +23 -16
  156. package/lib/iota/iota-object-processor.js.map +1 -1
  157. package/lib/iota/iota-plugin-part.d.ts +1 -1
  158. package/lib/iota/iota-plugin-part.d.ts.map +1 -1
  159. package/lib/iota/iota-plugin-part.js +16 -15
  160. package/lib/iota/iota-plugin-part.js.map +1 -1
  161. package/lib/iota/iota-processor.d.ts +3 -3
  162. package/lib/iota/iota-processor.d.ts.map +1 -1
  163. package/lib/iota/iota-processor.js +20 -19
  164. package/lib/iota/iota-processor.js.map +1 -1
  165. package/lib/iota/network.js +6 -6
  166. package/lib/iota/network.js.map +1 -1
  167. package/lib/move/filter.d.ts +1 -1
  168. package/lib/move/filter.d.ts.map +1 -1
  169. package/lib/move/index.d.ts +1 -1
  170. package/lib/move/index.d.ts.map +1 -1
  171. package/lib/move/index.js +0 -1
  172. package/lib/move/index.js.map +1 -1
  173. package/lib/solana/builtin/types.d.ts +4 -4
  174. package/lib/solana/codegen/codegen.d.ts +1 -1
  175. package/lib/solana/codegen/codegen.d.ts.map +1 -1
  176. package/lib/solana/codegen/codegen.js +2 -2
  177. package/lib/solana/codegen/codegen.js.map +1 -1
  178. package/lib/solana/solana-context.d.ts.map +1 -1
  179. package/lib/solana/solana-context.js +4 -3
  180. package/lib/solana/solana-context.js.map +1 -1
  181. package/lib/solana/solana-plugin.d.ts.map +1 -1
  182. package/lib/solana/solana-plugin.js +19 -18
  183. package/lib/solana/solana-plugin.js.map +1 -1
  184. package/lib/solana/solana-processor.d.ts +2 -2
  185. package/lib/solana/solana-processor.d.ts.map +1 -1
  186. package/lib/solana/solana-processor.js +8 -3
  187. package/lib/solana/solana-processor.js.map +1 -1
  188. package/lib/store/cache.d.ts.map +1 -1
  189. package/lib/store/cache.js +22 -17
  190. package/lib/store/cache.js.map +1 -1
  191. package/lib/store/codegen.js +2 -2
  192. package/lib/store/codegen.js.map +1 -1
  193. package/lib/store/convert.d.ts +1 -1
  194. package/lib/store/convert.d.ts.map +1 -1
  195. package/lib/store/convert.js +67 -104
  196. package/lib/store/convert.js.map +1 -1
  197. package/lib/store/decorators.d.ts +1 -1
  198. package/lib/store/decorators.d.ts.map +1 -1
  199. package/lib/store/decorators.js +3 -1
  200. package/lib/store/decorators.js.map +1 -1
  201. package/lib/store/store.d.ts.map +1 -1
  202. package/lib/store/store.js +24 -16
  203. package/lib/store/store.js.map +1 -1
  204. package/lib/store/types.js +24 -32
  205. package/lib/store/types.js.map +1 -1
  206. package/lib/store/util.d.ts +1 -1
  207. package/lib/store/util.d.ts.map +1 -1
  208. package/lib/store/util.js +13 -17
  209. package/lib/store/util.js.map +1 -1
  210. package/lib/sui/context.d.ts +1 -1
  211. package/lib/sui/context.d.ts.map +1 -1
  212. package/lib/sui/context.js +8 -6
  213. package/lib/sui/context.js.map +1 -1
  214. package/lib/sui/network.d.ts.map +1 -1
  215. package/lib/sui/network.js +11 -6
  216. package/lib/sui/network.js.map +1 -1
  217. package/lib/sui/sui-object-processor-template.d.ts +1 -1
  218. package/lib/sui/sui-object-processor-template.d.ts.map +1 -1
  219. package/lib/sui/sui-object-processor-template.js +17 -12
  220. package/lib/sui/sui-object-processor-template.js.map +1 -1
  221. package/lib/sui/sui-object-processor.d.ts +1 -1
  222. package/lib/sui/sui-object-processor.d.ts.map +1 -1
  223. package/lib/sui/sui-object-processor.js +29 -21
  224. package/lib/sui/sui-object-processor.js.map +1 -1
  225. package/lib/sui/sui-plugin-part.d.ts +1 -1
  226. package/lib/sui/sui-plugin-part.d.ts.map +1 -1
  227. package/lib/sui/sui-plugin-part.js +16 -15
  228. package/lib/sui/sui-plugin-part.js.map +1 -1
  229. package/lib/sui/sui-plugin.d.ts +1 -1
  230. package/lib/sui/sui-plugin.d.ts.map +1 -1
  231. package/lib/sui/sui-plugin.js +35 -34
  232. package/lib/sui/sui-plugin.js.map +1 -1
  233. package/lib/sui/sui-processor.d.ts +3 -3
  234. package/lib/sui/sui-processor.d.ts.map +1 -1
  235. package/lib/sui/sui-processor.js +23 -21
  236. package/lib/sui/sui-processor.js.map +1 -1
  237. package/lib/sui/to-client-types.d.ts +4 -0
  238. package/lib/sui/to-client-types.d.ts.map +1 -0
  239. package/lib/sui/to-client-types.js +69 -0
  240. package/lib/sui/to-client-types.js.map +1 -0
  241. package/lib/testing/aptos-facet.d.ts.map +1 -1
  242. package/lib/testing/aptos-facet.js +18 -11
  243. package/lib/testing/aptos-facet.js.map +1 -1
  244. package/lib/testing/cosmos-facet.d.ts.map +1 -1
  245. package/lib/testing/cosmos-facet.js +10 -6
  246. package/lib/testing/cosmos-facet.js.map +1 -1
  247. package/lib/testing/eth-facet.d.ts +1 -1
  248. package/lib/testing/eth-facet.d.ts.map +1 -1
  249. package/lib/testing/eth-facet.js +34 -18
  250. package/lib/testing/eth-facet.js.map +1 -1
  251. package/lib/testing/fuel-facet.d.ts.map +1 -1
  252. package/lib/testing/fuel-facet.js +28 -18
  253. package/lib/testing/fuel-facet.js.map +1 -1
  254. package/lib/testing/iota-facet.d.ts.map +1 -1
  255. package/lib/testing/iota-facet.js +32 -20
  256. package/lib/testing/iota-facet.js.map +1 -1
  257. package/lib/testing/memory-database.d.ts +11 -3
  258. package/lib/testing/memory-database.d.ts.map +1 -1
  259. package/lib/testing/memory-database.js +85 -69
  260. package/lib/testing/memory-database.js.map +1 -1
  261. package/lib/testing/metric-utils.d.ts +2 -2
  262. package/lib/testing/metric-utils.d.ts.map +1 -1
  263. package/lib/testing/metric-utils.js +13 -12
  264. package/lib/testing/metric-utils.js.map +1 -1
  265. package/lib/testing/solana-facet.d.ts +3 -2
  266. package/lib/testing/solana-facet.d.ts.map +1 -1
  267. package/lib/testing/solana-facet.js +8 -5
  268. package/lib/testing/solana-facet.js.map +1 -1
  269. package/lib/testing/sui-facet.d.ts.map +1 -1
  270. package/lib/testing/sui-facet.js +30 -20
  271. package/lib/testing/sui-facet.js.map +1 -1
  272. package/lib/testing/test-processor-server.d.ts +1452 -16
  273. package/lib/testing/test-processor-server.d.ts.map +1 -1
  274. package/lib/testing/test-processor-server.js +109 -46
  275. package/lib/testing/test-processor-server.js.map +1 -1
  276. package/lib/testing/test-provider.js +1 -1
  277. package/lib/testing/test-provider.js.map +1 -1
  278. package/lib/utils/price.d.ts +1 -1
  279. package/lib/utils/price.d.ts.map +1 -1
  280. package/lib/utils/price.js +19 -12
  281. package/lib/utils/price.js.map +1 -1
  282. package/package.json +10 -12
  283. package/src/aptos/aptos-plugin.ts +105 -91
  284. package/src/aptos/aptos-processor.ts +42 -34
  285. package/src/aptos/aptos-resource-processor-template.ts +15 -6
  286. package/src/aptos/context.ts +11 -10
  287. package/src/aptos/data.ts +4 -4
  288. package/src/aptos/network.ts +1 -1
  289. package/src/core/base-context.ts +19 -12
  290. package/src/core/core-plugin.ts +10 -7
  291. package/src/core/event-logger.ts +63 -35
  292. package/src/core/exporter.ts +5 -4
  293. package/src/core/handler-options.ts +1 -1
  294. package/src/core/handler-register.ts +3 -3
  295. package/src/core/meter.ts +9 -7
  296. package/src/core/normalization.ts +53 -31
  297. package/src/core/numberish.ts +46 -30
  298. package/src/core/partition-handler-manager.ts +13 -11
  299. package/src/cosmos/context.ts +4 -3
  300. package/src/cosmos/cosmos-plugin.ts +19 -15
  301. package/src/cosmos/cosmos-processor.ts +2 -2
  302. package/src/eth/abi-decoder/decode-worker.ts +2 -2
  303. package/src/eth/account-processor.ts +21 -12
  304. package/src/eth/base-processor-template.ts +27 -11
  305. package/src/eth/base-processor.ts +77 -65
  306. package/src/eth/builtin/internal/eacaggregatorproxy-processor.ts +177 -116
  307. package/src/eth/builtin/internal/erc1155-processor.ts +73 -38
  308. package/src/eth/builtin/internal/erc20-processor.ts +152 -91
  309. package/src/eth/builtin/internal/erc20bytes-processor.ts +80 -46
  310. package/src/eth/builtin/internal/erc721-processor.ts +109 -65
  311. package/src/eth/builtin/internal/weth9-processor.ts +95 -56
  312. package/src/eth/codegen/file.ts +2 -1
  313. package/src/eth/codegen/function-calls.ts +1 -1
  314. package/src/eth/context.ts +29 -13
  315. package/src/eth/eth-plugin.ts +137 -127
  316. package/src/eth/eth.ts +46 -32
  317. package/src/eth/generic-processor.ts +1 -1
  318. package/src/eth/index.ts +2 -2
  319. package/src/eth/provider.ts +193 -0
  320. package/src/fuel/asset-processor.ts +16 -8
  321. package/src/fuel/context.ts +4 -3
  322. package/src/fuel/fuel-plugin.ts +71 -73
  323. package/src/fuel/fuel-processor-template.ts +10 -7
  324. package/src/fuel/fuel-processor.ts +35 -23
  325. package/src/fuel/global-processor.ts +3 -3
  326. package/src/fuel/network.ts +5 -5
  327. package/src/fuel/types.ts +10 -4
  328. package/src/iota/context.ts +8 -7
  329. package/src/iota/iota-object-processor-template.ts +25 -15
  330. package/src/iota/iota-object-processor.ts +33 -22
  331. package/src/iota/iota-plugin-part.ts +41 -34
  332. package/src/iota/iota-processor.ts +35 -27
  333. package/src/iota/network.ts +6 -6
  334. package/src/move/filter.ts +1 -1
  335. package/src/move/index.ts +1 -1
  336. package/src/solana/codegen/codegen.ts +2 -2
  337. package/src/solana/solana-context.ts +4 -3
  338. package/src/solana/solana-plugin.ts +27 -24
  339. package/src/solana/solana-processor.ts +23 -11
  340. package/src/store/cache.ts +22 -18
  341. package/src/store/codegen.ts +2 -2
  342. package/src/store/convert.ts +68 -104
  343. package/src/store/decorators.ts +3 -2
  344. package/src/store/store.ts +31 -23
  345. package/src/store/types.ts +24 -33
  346. package/src/store/util.ts +13 -18
  347. package/src/sui/context.ts +8 -7
  348. package/src/sui/network.ts +12 -7
  349. package/src/sui/sui-object-processor-template.ts +25 -15
  350. package/src/sui/sui-object-processor.ts +50 -28
  351. package/src/sui/sui-plugin-part.ts +41 -34
  352. package/src/sui/sui-plugin.ts +49 -47
  353. package/src/sui/sui-processor.ts +38 -29
  354. package/src/sui/to-client-types.ts +75 -0
  355. package/src/testing/aptos-facet.ts +18 -11
  356. package/src/testing/cosmos-facet.ts +10 -6
  357. package/src/testing/eth-facet.ts +40 -18
  358. package/src/testing/fuel-facet.ts +28 -18
  359. package/src/testing/iota-facet.ts +32 -20
  360. package/src/testing/memory-database.ts +126 -85
  361. package/src/testing/metric-utils.ts +15 -14
  362. package/src/testing/solana-facet.ts +11 -6
  363. package/src/testing/sui-facet.ts +30 -20
  364. package/src/testing/test-processor-server.ts +170 -80
  365. package/src/testing/test-provider.ts +1 -1
  366. package/src/utils/price.ts +20 -13
@@ -1,13 +1,18 @@
1
1
  import {
2
- Data_SuiCall,
3
- Data_SuiObject,
4
- Data_SuiObjectChange,
5
- HandleInterval,
6
- MoveAccountFetchConfig,
7
- MoveFetchConfig,
2
+ type Data_SuiCall,
3
+ type Data_SuiObject,
4
+ type Data_SuiObjectChange,
5
+ type HandleInterval,
6
+ HandleIntervalSchema,
7
+ type MoveAccountFetchConfig,
8
+ MoveAccountFetchConfigSchema,
9
+ type MoveFetchConfig,
10
+ MoveFetchConfigSchema,
8
11
  MoveOwnerType,
9
- ProcessResult
12
+ type ProcessResult,
13
+ timestampDate
10
14
  } from '@sentio/protos'
15
+ import { create } from '@bufbuild/protobuf'
11
16
  import { ListStateStorage } from '@sentio/runtime'
12
17
  import { SuiNetwork } from './network.js'
13
18
  import { SuiAddressContext, SuiContext, SuiObjectChangeContext, SuiObjectContext } from './context.js'
@@ -17,9 +22,10 @@ import type { SuiMoveObjectInput } from '@typemove/sui'
17
22
  import { ALL_ADDRESS, PromiseOrVoid } from '../core/index.js'
18
23
  import { configure, DEFAULT_FETCH_CONFIG, IndexConfigure, SuiBindOptions } from './sui-processor.js'
19
24
  import { CallHandler, TransactionFilter, accountTypeString, ObjectChangeHandler } from '../move/index.js'
20
- import { ServerError, Status } from 'nice-grpc'
25
+ import { ConnectError, Code } from '@connectrpc/connect'
21
26
  import { TypeDescriptor } from '@typemove/move'
22
27
  import { TypedSuiMoveObject } from './models.js'
28
+ import { toSuiClientObject } from './to-client-types.js'
23
29
  import { getHandlerName, proxyProcessor } from '../utils/metrics.js'
24
30
 
25
31
  export interface SuiObjectBindOptions {
@@ -47,9 +53,9 @@ interface ObjectHandler {
47
53
  handlerName: string
48
54
  }
49
55
 
50
- export const DEFAULT_ACCOUNT_FETCH_CONFIG: MoveAccountFetchConfig = {
56
+ export const DEFAULT_ACCOUNT_FETCH_CONFIG: MoveAccountFetchConfig = create(MoveAccountFetchConfigSchema, {
51
57
  owned: false
52
- }
58
+ })
53
59
 
54
60
  export class SuiAccountProcessorState extends ListStateStorage<SuiBaseObjectOrAddressProcessor<any>> {
55
61
  static INSTANCE = new SuiAccountProcessorState()
@@ -114,7 +120,7 @@ export abstract class SuiBaseObjectOrAddressProcessor<HandlerType> {
114
120
  data.objectId,
115
121
  data.objectVersion,
116
122
  data.slot,
117
- data.timestamp || new Date(0),
123
+ data.timestamp ? timestampDate(data.timestamp) : new Date(0),
118
124
  processor.config.baseLabels
119
125
  )
120
126
  await processor.doHandle(handler, data, ctx)
@@ -141,10 +147,10 @@ abstract class SuiBaseObjectOrAddressProcessorInternal<
141
147
  ): this {
142
148
  return this.onInterval(
143
149
  handler,
144
- {
150
+ create(HandleIntervalSchema, {
145
151
  recentInterval: timeIntervalInMinutes,
146
152
  backfillInterval: backfillTimeIntervalInMinutes
147
- },
153
+ }),
148
154
  undefined,
149
155
  type,
150
156
  fetchConfig
@@ -161,7 +167,10 @@ abstract class SuiBaseObjectOrAddressProcessorInternal<
161
167
  return this.onInterval(
162
168
  handler,
163
169
  undefined,
164
- { recentInterval: checkpointInterval, backfillInterval: backfillCheckpointInterval },
170
+ create(HandleIntervalSchema, {
171
+ recentInterval: checkpointInterval,
172
+ backfillInterval: backfillCheckpointInterval
173
+ }),
165
174
  type,
166
175
  fetchConfig
167
176
  )
@@ -182,7 +191,10 @@ export class SuiAddressProcessor extends SuiBaseObjectOrAddressProcessorInternal
182
191
  data: Data_SuiObject,
183
192
  ctx: SuiObjectContext
184
193
  ) {
185
- return handler(data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObjectInput[], ctx)
194
+ return handler(
195
+ data.rawObjects.map((o) => toSuiClientObject(JSON.parse(o))),
196
+ ctx
197
+ )
186
198
  }
187
199
 
188
200
  onTransactionBlock(
@@ -190,7 +202,7 @@ export class SuiAddressProcessor extends SuiBaseObjectOrAddressProcessorInternal
190
202
  filter?: TransactionFilter,
191
203
  fetchConfig?: Partial<MoveFetchConfig>
192
204
  ) {
193
- const _fetchConfig = MoveFetchConfig.fromPartial({ ...DEFAULT_FETCH_CONFIG, ...fetchConfig })
205
+ const _fetchConfig = create(MoveFetchConfigSchema, { ...DEFAULT_FETCH_CONFIG, ...fetchConfig })
194
206
  const _filter: TransactionFilter = {
195
207
  fromAndToAddress: {
196
208
  from: '',
@@ -205,7 +217,7 @@ export class SuiAddressProcessor extends SuiBaseObjectOrAddressProcessorInternal
205
217
  handlerName: getHandlerName(),
206
218
  handler: async function (data) {
207
219
  if (!data.rawTransaction) {
208
- throw new ServerError(Status.INVALID_ARGUMENT, 'transaction is null')
220
+ throw new ConnectError('transaction is null', Code.InvalidArgument)
209
221
  }
210
222
  const tx = JSON.parse(data.rawTransaction) as GrpcTypes.ExecutedTransaction
211
223
 
@@ -213,7 +225,7 @@ export class SuiAddressProcessor extends SuiBaseObjectOrAddressProcessorInternal
213
225
  'object',
214
226
  processor.config.network,
215
227
  processor.config.address,
216
- data.timestamp || new Date(0),
228
+ data.timestamp ? timestampDate(data.timestamp) : new Date(0),
217
229
  data.slot,
218
230
  tx,
219
231
  0,
@@ -259,8 +271,8 @@ export class SuiObjectProcessor extends SuiBaseObjectOrAddressProcessorInternal<
259
271
  return
260
272
  }
261
273
  return handler(
262
- JSON.parse(data.rawSelf) as SuiMoveObjectInput,
263
- data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObjectInput[],
274
+ toSuiClientObject(JSON.parse(data.rawSelf)),
275
+ data.rawObjects.map((o) => toSuiClientObject(JSON.parse(o))),
264
276
  ctx
265
277
  )
266
278
  }
@@ -298,14 +310,18 @@ export class SuiObjectTypeProcessor<T> extends SuiBaseObjectOrAddressProcessor<
298
310
  return
299
311
  }
300
312
  const object = await ctx.coder.filterAndDecodeObjects(this.objectType, [
301
- JSON.parse(data.rawSelf) as SuiMoveObjectInput
313
+ toSuiClientObject(JSON.parse(data.rawSelf))
302
314
  ])
303
- return handler(object[0], data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObjectInput[], ctx)
315
+ return handler(
316
+ object[0],
317
+ data.rawObjects.map((o) => toSuiClientObject(JSON.parse(o))),
318
+ ctx
319
+ )
304
320
  }
305
321
 
306
322
  public onObjectChange(handler: (changes: SuiObjectChange[], ctx: SuiObjectChangeContext) => PromiseOrVoid): this {
307
323
  if (this.config.network === SuiNetwork.TEST_NET) {
308
- throw new ServerError(Status.INVALID_ARGUMENT, 'object change not supported in testnet')
324
+ throw new ConnectError('object change not supported in testnet', Code.InvalidArgument)
309
325
  }
310
326
  const processor = this
311
327
  this.objectChangeHandlers.push({
@@ -314,7 +330,7 @@ export class SuiObjectTypeProcessor<T> extends SuiBaseObjectOrAddressProcessor<
314
330
  const ctx = new SuiObjectChangeContext(
315
331
  processor.config.network,
316
332
  processor.config.address,
317
- data.timestamp || new Date(0),
333
+ data.timestamp ? timestampDate(data.timestamp) : new Date(0),
318
334
  data.slot,
319
335
  data.txDigest,
320
336
  processor.config.baseLabels
@@ -340,10 +356,10 @@ export class SuiObjectTypeProcessor<T> extends SuiBaseObjectOrAddressProcessor<
340
356
  ): this {
341
357
  return this.onInterval(
342
358
  handler,
343
- {
359
+ create(HandleIntervalSchema, {
344
360
  recentInterval: timeIntervalInMinutes,
345
361
  backfillInterval: backfillTimeIntervalInMinutes
346
- },
362
+ }),
347
363
  undefined,
348
364
  this.objectType.getSignature(),
349
365
  fetchConfig
@@ -363,7 +379,10 @@ export class SuiObjectTypeProcessor<T> extends SuiBaseObjectOrAddressProcessor<
363
379
  return this.onInterval(
364
380
  handler,
365
381
  undefined,
366
- { recentInterval: checkpointInterval, backfillInterval: backfillCheckpointInterval },
382
+ create(HandleIntervalSchema, {
383
+ recentInterval: checkpointInterval,
384
+ backfillInterval: backfillCheckpointInterval
385
+ }),
367
386
  this.objectType.qname,
368
387
  fetchConfig
369
388
  )
@@ -389,6 +408,9 @@ export class SuiWrappedObjectProcessor extends SuiBaseObjectOrAddressProcessorIn
389
408
  data: Data_SuiObject,
390
409
  ctx: SuiObjectContext
391
410
  ) {
392
- return handler(data.rawObjects.map((o) => JSON.parse(o)) as SuiMoveObjectInput[], ctx)
411
+ return handler(
412
+ data.rawObjects.map((o) => toSuiClientObject(JSON.parse(o))),
413
+ ctx
414
+ )
393
415
  }
394
416
  }
@@ -1,15 +1,20 @@
1
1
  import { USER_PROCESSOR } from '@sentio/runtime'
2
2
  import {
3
- AccountConfig,
4
- ContractConfig,
3
+ AccountConfigSchema,
4
+ ContractConfigSchema,
5
5
  HandlerType,
6
- InitResponse,
7
- MoveCallHandlerConfig,
8
- MoveEventHandlerConfig,
9
- MoveResourceChangeConfig,
10
- ProcessConfigResponse,
11
- StartRequest
6
+ type InitResponse,
7
+ type MoveCallHandlerConfig,
8
+ MoveCallHandlerConfigSchema,
9
+ type MoveEventHandlerConfig,
10
+ MoveEventHandlerConfigSchema,
11
+ MoveOnIntervalConfigSchema,
12
+ type MoveResourceChangeConfig,
13
+ MoveResourceChangeConfigSchema,
14
+ type ProcessConfigResponse,
15
+ type StartRequest
12
16
  } from '@sentio/protos'
17
+ import { create } from '@bufbuild/protobuf'
13
18
 
14
19
  import { PartitionHandlerManager } from '../core/index.js'
15
20
  import { HandlerRegister } from '../core/handler-register.js'
@@ -75,7 +80,7 @@ export class SuiPluginPart {
75
80
  if (forChainId !== undefined && forChainId !== chainId.toString()) {
76
81
  continue
77
82
  }
78
- const contractConfig = ContractConfig.fromPartial({
83
+ const contractConfig = create(ContractConfigSchema, {
79
84
  transactionConfig: [],
80
85
  processorType: USER_PROCESSOR,
81
86
  contract: {
@@ -90,7 +95,7 @@ export class SuiPluginPart {
90
95
  for (const handler of suiProcessor.eventHandlers) {
91
96
  const handlerId = this.handlerRegister.register(handler.handler, chainId)
92
97
  this.partitionManager.registerPartitionHandler(HandlerType.SUI_EVENT, handlerId, handler.partitionHandler)
93
- const eventHandlerConfig: MoveEventHandlerConfig = {
98
+ const eventHandlerConfig: MoveEventHandlerConfig = create(MoveEventHandlerConfigSchema, {
94
99
  filters: handler.filters.map((f) => {
95
100
  return {
96
101
  type: f.type,
@@ -101,13 +106,13 @@ export class SuiPluginPart {
101
106
  fetchConfig: handler.fetchConfig,
102
107
  handlerId,
103
108
  handlerName: handler.handlerName
104
- }
109
+ })
105
110
  contractConfig.moveEventConfigs.push(eventHandlerConfig)
106
111
  }
107
112
  for (const handler of suiProcessor.callHandlers) {
108
113
  const handlerId = this.handlerRegister.register(handler.handler, chainId)
109
114
  this.partitionManager.registerPartitionHandler(HandlerType.SUI_CALL, handlerId, handler.partitionHandler)
110
- const functionHandlerConfig: MoveCallHandlerConfig = {
115
+ const functionHandlerConfig: MoveCallHandlerConfig = create(MoveCallHandlerConfigSchema, {
111
116
  filters: handler.filters.map((filter) => {
112
117
  return {
113
118
  function: filter.function,
@@ -121,18 +126,18 @@ export class SuiPluginPart {
121
126
  fetchConfig: handler.fetchConfig,
122
127
  handlerId,
123
128
  handlerName: handler.handlerName
124
- }
129
+ })
125
130
  contractConfig.moveCallConfigs.push(functionHandlerConfig)
126
131
  }
127
132
  // deprecated, use objectType processor instead
128
133
  for (const handler of suiProcessor.objectChangeHandlers) {
129
134
  const handlerId = this.handlerRegister.register(handler.handler, chainId)
130
- const objectChangeHandler: MoveResourceChangeConfig = {
135
+ const objectChangeHandler: MoveResourceChangeConfig = create(MoveResourceChangeConfigSchema, {
131
136
  types: typeof handler.type === 'string' ? [handler.type] : handler.type,
132
137
  handlerId,
133
138
  handlerName: handler.handlerName,
134
139
  includeDeleted: false
135
- }
140
+ })
136
141
  contractConfig.moveResourceChangeConfigs.push(objectChangeHandler)
137
142
  }
138
143
  config.contractConfigs.push(contractConfig)
@@ -143,7 +148,7 @@ export class SuiPluginPart {
143
148
  if (forChainId !== undefined && forChainId !== chainId.toString()) {
144
149
  continue
145
150
  }
146
- const accountConfig = AccountConfig.fromPartial({
151
+ const accountConfig = create(AccountConfigSchema, {
147
152
  address: processor.config.address,
148
153
  chainId: processor.getChainId(),
149
154
  startBlock: processor.config.startCheckpoint, // TODO maybe use another field
@@ -152,39 +157,41 @@ export class SuiPluginPart {
152
157
 
153
158
  for (const handler of processor.objectChangeHandlers) {
154
159
  const handlerId = this.handlerRegister.register(handler.handler, chainId)
155
- const objectChangeHandler: MoveResourceChangeConfig = {
160
+ const objectChangeHandler: MoveResourceChangeConfig = create(MoveResourceChangeConfigSchema, {
156
161
  types: typeof handler.type === 'string' ? [handler.type] : handler.type,
157
162
  handlerId,
158
163
  handlerName: handler.handlerName,
159
164
  includeDeleted: false
160
- }
165
+ })
161
166
  accountConfig.moveResourceChangeConfigs.push(objectChangeHandler)
162
167
  }
163
168
 
164
169
  for (const handler of processor.objectHandlers) {
165
170
  const handlerId = this.handlerRegister.register(handler.handler, chainId)
166
171
 
167
- accountConfig.moveIntervalConfigs.push({
168
- intervalConfig: {
169
- handlerId: handlerId,
170
- handlerName: handler.handlerName,
171
- minutes: 0,
172
- minutesInterval: handler.timeIntervalInMinutes,
173
- slot: 0,
174
- slotInterval: handler.checkPointInterval,
172
+ accountConfig.moveIntervalConfigs.push(
173
+ create(MoveOnIntervalConfigSchema, {
174
+ intervalConfig: {
175
+ handlerId: handlerId,
176
+ handlerName: handler.handlerName,
177
+ minutes: 0,
178
+ minutesInterval: handler.timeIntervalInMinutes,
179
+ slot: 0,
180
+ slotInterval: handler.checkPointInterval,
181
+ fetchConfig: undefined
182
+ },
183
+ type: handler.type || '',
184
+ ownerType: processor.ownerType,
185
+ resourceFetchConfig: handler.fetchConfig,
175
186
  fetchConfig: undefined
176
- },
177
- type: handler.type || '',
178
- ownerType: processor.ownerType,
179
- resourceFetchConfig: handler.fetchConfig,
180
- fetchConfig: undefined
181
- })
187
+ })
188
+ )
182
189
  }
183
190
 
184
191
  if (processor instanceof SuiAddressProcessor) {
185
192
  for (const handler of processor.callHandlers) {
186
193
  const handlerId = this.handlerRegister.register(handler.handler, chainId)
187
- const functionHandlerConfig: MoveCallHandlerConfig = {
194
+ const functionHandlerConfig: MoveCallHandlerConfig = create(MoveCallHandlerConfigSchema, {
188
195
  filters: handler.filters.map((filter) => {
189
196
  return {
190
197
  function: filter.function,
@@ -198,7 +205,7 @@ export class SuiPluginPart {
198
205
  fetchConfig: handler.fetchConfig,
199
206
  handlerId,
200
207
  handlerName: handler.handlerName
201
- }
208
+ })
202
209
  accountConfig.moveCallConfigs.push(functionHandlerConfig)
203
210
  }
204
211
  }
@@ -1,15 +1,17 @@
1
1
  import { errorString, mergeProcessResults, Plugin, PluginManager } from '@sentio/runtime'
2
2
  import {
3
- DataBinding,
3
+ type DataBinding,
4
4
  HandlerType,
5
- InitResponse,
6
- ProcessConfigResponse,
7
- ProcessResult,
8
- ProcessStreamResponse_Partitions,
9
- StartRequest
5
+ type InitResponse,
6
+ type ProcessConfigResponse,
7
+ type ProcessResult,
8
+ type ProcessStreamResponse_Partitions,
9
+ ProcessStreamResponse_PartitionsSchema,
10
+ type StartRequest
10
11
  } from '@sentio/protos'
12
+ import { create } from '@bufbuild/protobuf'
11
13
 
12
- import { ServerError, Status } from 'nice-grpc'
14
+ import { ConnectError, Code } from '@connectrpc/connect'
13
15
  import { PartitionHandlerManager } from '../core/index.js'
14
16
  import { HandlerRegister } from '../core/handler-register.js'
15
17
 
@@ -60,7 +62,7 @@ export class SuiPlugin extends Plugin {
60
62
  case HandlerType.SUI_OBJECT_CHANGE:
61
63
  return this.processSuiObjectChange(request)
62
64
  default:
63
- throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)
65
+ throw new ConnectError('No handle type registered ' + request.handlerType, Code.InvalidArgument)
64
66
  }
65
67
  }
66
68
 
@@ -68,48 +70,48 @@ export class SuiPlugin extends Plugin {
68
70
  let data: any
69
71
  switch (request.handlerType) {
70
72
  case HandlerType.SUI_EVENT:
71
- if (!request.data?.suiEvent) {
72
- throw new ServerError(Status.INVALID_ARGUMENT, "suiEvent can't be empty")
73
+ if (request.data?.value.case !== 'suiEvent') {
74
+ throw new ConnectError("suiEvent can't be empty", Code.InvalidArgument)
73
75
  }
74
- data = request.data.suiEvent
76
+ data = request.data.value.value
75
77
  break
76
78
  case HandlerType.SUI_CALL:
77
- if (!request.data?.suiCall) {
78
- throw new ServerError(Status.INVALID_ARGUMENT, "suiCall can't be empty")
79
+ if (request.data?.value.case !== 'suiCall') {
80
+ throw new ConnectError("suiCall can't be empty", Code.InvalidArgument)
79
81
  }
80
- data = request.data.suiCall
82
+ data = request.data.value.value
81
83
  break
82
84
  case HandlerType.SUI_OBJECT:
83
- if (!request.data?.suiObject) {
84
- throw new ServerError(Status.INVALID_ARGUMENT, "suiObject can't be empty")
85
+ if (request.data?.value.case !== 'suiObject') {
86
+ throw new ConnectError("suiObject can't be empty", Code.InvalidArgument)
85
87
  }
86
- data = request.data.suiObject
88
+ data = request.data.value.value
87
89
  break
88
90
  case HandlerType.SUI_OBJECT_CHANGE:
89
- if (!request.data?.suiObjectChange) {
90
- throw new ServerError(Status.INVALID_ARGUMENT, "suiObjectChange can't be empty")
91
+ if (request.data?.value.case !== 'suiObjectChange') {
92
+ throw new ConnectError("suiObjectChange can't be empty", Code.InvalidArgument)
91
93
  }
92
- data = request.data.suiObjectChange
94
+ data = request.data.value.value
93
95
  break
94
96
  default:
95
- throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType)
97
+ throw new ConnectError('No handle type registered ' + request.handlerType, Code.InvalidArgument)
96
98
  }
97
99
  const partitions = await this.partitionManager.processPartitionForHandlerType(
98
100
  request.handlerType,
99
101
  request.handlerIds,
100
102
  data
101
103
  )
102
- return {
104
+ return create(ProcessStreamResponse_PartitionsSchema, {
103
105
  partitions
104
- }
106
+ })
105
107
  }
106
108
 
107
109
  async processSuiEvent(binding: DataBinding): Promise<ProcessResult> {
108
- if (!binding.data?.suiEvent) {
109
- throw new ServerError(Status.INVALID_ARGUMENT, "Event can't be empty")
110
+ if (binding.data?.value.case !== 'suiEvent') {
111
+ throw new ConnectError("Event can't be empty", Code.InvalidArgument)
110
112
  }
111
113
  const promises: Promise<ProcessResult>[] = []
112
- const event = binding.data.suiEvent
114
+ const event = binding.data.value.value
113
115
 
114
116
  for (const handlerId of binding.handlerIds) {
115
117
  promises.push(
@@ -119,9 +121,9 @@ export class SuiPlugin extends Plugin {
119
121
  handlerId
120
122
  )(event)
121
123
  .catch((e: any) => {
122
- throw new ServerError(
123
- Status.INTERNAL,
124
- 'error processing event: ' + JSON.stringify(event) + '\n' + errorString(e)
124
+ throw new ConnectError(
125
+ 'error processing event: ' + JSON.stringify(event) + '\n' + errorString(e),
126
+ Code.Internal
125
127
  )
126
128
  })
127
129
  )
@@ -130,10 +132,10 @@ export class SuiPlugin extends Plugin {
130
132
  }
131
133
 
132
134
  async processSuiFunctionCall(binding: DataBinding): Promise<ProcessResult> {
133
- if (!binding.data?.suiCall) {
134
- throw new ServerError(Status.INVALID_ARGUMENT, "Call can't be empty")
135
+ if (binding.data?.value.case !== 'suiCall') {
136
+ throw new ConnectError("Call can't be empty", Code.InvalidArgument)
135
137
  }
136
- const call = binding.data.suiCall
138
+ const call = binding.data.value.value
137
139
 
138
140
  const promises: Promise<ProcessResult>[] = []
139
141
  for (const handlerId of binding.handlerIds) {
@@ -143,9 +145,9 @@ export class SuiPlugin extends Plugin {
143
145
  handlerId
144
146
  )(call)
145
147
  .catch((e: any) => {
146
- throw new ServerError(
147
- Status.INTERNAL,
148
- 'error processing call: ' + JSON.stringify(call) + '\n' + errorString(e)
148
+ throw new ConnectError(
149
+ 'error processing call: ' + JSON.stringify(call) + '\n' + errorString(e),
150
+ Code.Internal
149
151
  )
150
152
  })
151
153
  promises.push(promise)
@@ -154,10 +156,10 @@ export class SuiPlugin extends Plugin {
154
156
  }
155
157
 
156
158
  async processSuiObject(binding: DataBinding): Promise<ProcessResult> {
157
- if (!binding.data?.suiObject) {
158
- throw new ServerError(Status.INVALID_ARGUMENT, "Object can't be empty")
159
+ if (binding.data?.value.case !== 'suiObject') {
160
+ throw new ConnectError("Object can't be empty", Code.InvalidArgument)
159
161
  }
160
- const object = binding.data.suiObject
162
+ const object = binding.data.value.value
161
163
 
162
164
  const promises: Promise<ProcessResult>[] = []
163
165
  for (const handlerId of binding.handlerIds) {
@@ -168,9 +170,9 @@ export class SuiPlugin extends Plugin {
168
170
  handlerId
169
171
  )(object)
170
172
  .catch((e: any) => {
171
- throw new ServerError(
172
- Status.INTERNAL,
173
- 'error processing object: ' + JSON.stringify(object) + '\n' + errorString(e)
173
+ throw new ConnectError(
174
+ 'error processing object: ' + JSON.stringify(object) + '\n' + errorString(e),
175
+ Code.Internal
174
176
  )
175
177
  })
176
178
  )
@@ -179,10 +181,10 @@ export class SuiPlugin extends Plugin {
179
181
  }
180
182
 
181
183
  async processSuiObjectChange(binding: DataBinding): Promise<ProcessResult> {
182
- if (!binding.data?.suiObjectChange) {
183
- throw new ServerError(Status.INVALID_ARGUMENT, "Object change can't be empty")
184
+ if (binding.data?.value.case !== 'suiObjectChange') {
185
+ throw new ConnectError("Object change can't be empty", Code.InvalidArgument)
184
186
  }
185
- const objectChange = binding.data.suiObjectChange
187
+ const objectChange = binding.data.value.value
186
188
 
187
189
  const promises: Promise<ProcessResult>[] = []
188
190
  for (const handlerId of binding.handlerIds) {
@@ -193,9 +195,9 @@ export class SuiPlugin extends Plugin {
193
195
  handlerId
194
196
  )(objectChange)
195
197
  .catch((e: any) => {
196
- throw new ServerError(
197
- Status.INTERNAL,
198
- 'error processing object change: ' + JSON.stringify(objectChange) + '\n' + errorString(e)
198
+ throw new ConnectError(
199
+ 'error processing object change: ' + JSON.stringify(objectChange) + '\n' + errorString(e),
200
+ Code.Internal
199
201
  )
200
202
  })
201
203
  )