ponder 0.14.13 → 0.15.0

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 (237) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/esm/bin/commands/createViews.js +28 -11
  3. package/dist/esm/bin/commands/createViews.js.map +1 -1
  4. package/dist/esm/bin/commands/dev.js +42 -22
  5. package/dist/esm/bin/commands/dev.js.map +1 -1
  6. package/dist/esm/bin/commands/prune.js +3 -0
  7. package/dist/esm/bin/commands/prune.js.map +1 -1
  8. package/dist/esm/bin/commands/serve.js +4 -1
  9. package/dist/esm/bin/commands/serve.js.map +1 -1
  10. package/dist/esm/bin/commands/start.js +18 -6
  11. package/dist/esm/bin/commands/start.js.map +1 -1
  12. package/dist/esm/bin/isolatedController.js +200 -0
  13. package/dist/esm/bin/isolatedController.js.map +1 -0
  14. package/dist/esm/bin/isolatedWorker.js +146 -0
  15. package/dist/esm/bin/isolatedWorker.js.map +1 -0
  16. package/dist/esm/build/config.js +322 -402
  17. package/dist/esm/build/config.js.map +1 -1
  18. package/dist/esm/build/index.js +8 -11
  19. package/dist/esm/build/index.js.map +1 -1
  20. package/dist/esm/build/pre.js +1 -4
  21. package/dist/esm/build/pre.js.map +1 -1
  22. package/dist/esm/build/schema.js +25 -3
  23. package/dist/esm/build/schema.js.map +1 -1
  24. package/dist/esm/client/index.js +306 -42
  25. package/dist/esm/client/index.js.map +1 -1
  26. package/dist/esm/database/actions.js +264 -104
  27. package/dist/esm/database/actions.js.map +1 -1
  28. package/dist/esm/database/index.js +39 -33
  29. package/dist/esm/database/index.js.map +1 -1
  30. package/dist/esm/database/queryBuilder.js +1 -0
  31. package/dist/esm/database/queryBuilder.js.map +1 -1
  32. package/dist/esm/drizzle/index.js +11 -7
  33. package/dist/esm/drizzle/index.js.map +1 -1
  34. package/dist/esm/drizzle/onchain.js +18 -0
  35. package/dist/esm/drizzle/onchain.js.map +1 -1
  36. package/dist/esm/indexing/client.js +32 -25
  37. package/dist/esm/indexing/client.js.map +1 -1
  38. package/dist/esm/indexing/index.js +110 -178
  39. package/dist/esm/indexing/index.js.map +1 -1
  40. package/dist/esm/indexing/profile.js +1 -1
  41. package/dist/esm/indexing/profile.js.map +1 -1
  42. package/dist/esm/indexing-store/cache.js +196 -274
  43. package/dist/esm/indexing-store/cache.js.map +1 -1
  44. package/dist/esm/indexing-store/historical.js +17 -13
  45. package/dist/esm/indexing-store/historical.js.map +1 -1
  46. package/dist/esm/indexing-store/index.js +10 -1
  47. package/dist/esm/indexing-store/index.js.map +1 -1
  48. package/dist/esm/indexing-store/profile.js +3 -3
  49. package/dist/esm/indexing-store/profile.js.map +1 -1
  50. package/dist/esm/indexing-store/realtime.js +27 -2
  51. package/dist/esm/indexing-store/realtime.js.map +1 -1
  52. package/dist/esm/internal/errors.js +28 -0
  53. package/dist/esm/internal/errors.js.map +1 -1
  54. package/dist/esm/internal/metrics.js +279 -82
  55. package/dist/esm/internal/metrics.js.map +1 -1
  56. package/dist/esm/internal/options.js +1 -0
  57. package/dist/esm/internal/options.js.map +1 -1
  58. package/dist/esm/internal/telemetry.js +1 -1
  59. package/dist/esm/internal/telemetry.js.map +1 -1
  60. package/dist/esm/rpc/http.js +130 -0
  61. package/dist/esm/rpc/http.js.map +1 -0
  62. package/dist/esm/rpc/index.js +38 -7
  63. package/dist/esm/rpc/index.js.map +1 -1
  64. package/dist/esm/runtime/events.js +179 -212
  65. package/dist/esm/runtime/events.js.map +1 -1
  66. package/dist/esm/runtime/filter.js +71 -0
  67. package/dist/esm/runtime/filter.js.map +1 -1
  68. package/dist/esm/runtime/fragments.js +78 -73
  69. package/dist/esm/runtime/fragments.js.map +1 -1
  70. package/dist/esm/runtime/historical.js +306 -130
  71. package/dist/esm/runtime/historical.js.map +1 -1
  72. package/dist/esm/runtime/index.js +183 -58
  73. package/dist/esm/runtime/index.js.map +1 -1
  74. package/dist/esm/runtime/isolated.js +462 -0
  75. package/dist/esm/runtime/isolated.js.map +1 -0
  76. package/dist/esm/runtime/multichain.js +80 -73
  77. package/dist/esm/runtime/multichain.js.map +1 -1
  78. package/dist/esm/runtime/omnichain.js +82 -75
  79. package/dist/esm/runtime/omnichain.js.map +1 -1
  80. package/dist/esm/runtime/realtime.js +198 -66
  81. package/dist/esm/runtime/realtime.js.map +1 -1
  82. package/dist/esm/sync-historical/index.js +416 -457
  83. package/dist/esm/sync-historical/index.js.map +1 -1
  84. package/dist/esm/sync-realtime/bloom.js +3 -3
  85. package/dist/esm/sync-realtime/bloom.js.map +1 -1
  86. package/dist/esm/sync-realtime/index.js +27 -46
  87. package/dist/esm/sync-realtime/index.js.map +1 -1
  88. package/dist/esm/sync-store/index.js +112 -63
  89. package/dist/esm/sync-store/index.js.map +1 -1
  90. package/dist/esm/utils/abi.js +20 -32
  91. package/dist/esm/utils/abi.js.map +1 -1
  92. package/dist/esm/utils/chunk.js +8 -0
  93. package/dist/esm/utils/chunk.js.map +1 -0
  94. package/dist/esm/utils/promiseAllSettledWithThrow.js +19 -0
  95. package/dist/esm/utils/promiseAllSettledWithThrow.js.map +1 -0
  96. package/dist/esm/{client/parse.js → utils/sql-parse.js} +94 -80
  97. package/dist/esm/utils/sql-parse.js.map +1 -0
  98. package/dist/types/bin/commands/createViews.d.ts.map +1 -1
  99. package/dist/types/bin/commands/dev.d.ts.map +1 -1
  100. package/dist/types/bin/commands/prune.d.ts.map +1 -1
  101. package/dist/types/bin/commands/serve.d.ts.map +1 -1
  102. package/dist/types/bin/commands/start.d.ts.map +1 -1
  103. package/dist/types/bin/isolatedController.d.ts +13 -0
  104. package/dist/types/bin/isolatedController.d.ts.map +1 -0
  105. package/dist/types/bin/isolatedWorker.d.ts +9 -0
  106. package/dist/types/bin/isolatedWorker.d.ts.map +1 -0
  107. package/dist/types/build/config.d.ts +29 -11
  108. package/dist/types/build/config.d.ts.map +1 -1
  109. package/dist/types/build/index.d.ts +3 -2
  110. package/dist/types/build/index.d.ts.map +1 -1
  111. package/dist/types/build/pre.d.ts +1 -1
  112. package/dist/types/build/pre.d.ts.map +1 -1
  113. package/dist/types/build/schema.d.ts +5 -3
  114. package/dist/types/build/schema.d.ts.map +1 -1
  115. package/dist/types/client/index.d.ts +1 -1
  116. package/dist/types/client/index.d.ts.map +1 -1
  117. package/dist/types/config/index.d.ts +3 -3
  118. package/dist/types/config/index.d.ts.map +1 -1
  119. package/dist/types/database/actions.d.ts +53 -7
  120. package/dist/types/database/actions.d.ts.map +1 -1
  121. package/dist/types/database/index.d.ts +21 -21
  122. package/dist/types/database/index.d.ts.map +1 -1
  123. package/dist/types/database/queryBuilder.d.ts.map +1 -1
  124. package/dist/types/drizzle/index.d.ts +4 -5
  125. package/dist/types/drizzle/index.d.ts.map +1 -1
  126. package/dist/types/drizzle/onchain.d.ts +6 -0
  127. package/dist/types/drizzle/onchain.d.ts.map +1 -1
  128. package/dist/types/indexing/client.d.ts.map +1 -1
  129. package/dist/types/indexing/index.d.ts +2 -5
  130. package/dist/types/indexing/index.d.ts.map +1 -1
  131. package/dist/types/indexing-store/cache.d.ts +3 -2
  132. package/dist/types/indexing-store/cache.d.ts.map +1 -1
  133. package/dist/types/indexing-store/historical.d.ts +2 -1
  134. package/dist/types/indexing-store/historical.d.ts.map +1 -1
  135. package/dist/types/indexing-store/index.d.ts +1 -0
  136. package/dist/types/indexing-store/index.d.ts.map +1 -1
  137. package/dist/types/indexing-store/realtime.d.ts +2 -1
  138. package/dist/types/indexing-store/realtime.d.ts.map +1 -1
  139. package/dist/types/internal/errors.d.ts +5 -0
  140. package/dist/types/internal/errors.d.ts.map +1 -1
  141. package/dist/types/internal/metrics.d.ts +21 -0
  142. package/dist/types/internal/metrics.d.ts.map +1 -1
  143. package/dist/types/internal/options.d.ts +2 -0
  144. package/dist/types/internal/options.d.ts.map +1 -1
  145. package/dist/types/internal/types.d.ts +66 -58
  146. package/dist/types/internal/types.d.ts.map +1 -1
  147. package/dist/types/rpc/http.d.ts +17 -0
  148. package/dist/types/rpc/http.d.ts.map +1 -0
  149. package/dist/types/rpc/index.d.ts.map +1 -1
  150. package/dist/types/runtime/events.d.ts +4 -4
  151. package/dist/types/runtime/events.d.ts.map +1 -1
  152. package/dist/types/runtime/filter.d.ts +5 -1
  153. package/dist/types/runtime/filter.d.ts.map +1 -1
  154. package/dist/types/runtime/fragments.d.ts +4 -3
  155. package/dist/types/runtime/fragments.d.ts.map +1 -1
  156. package/dist/types/runtime/historical.d.ts +29 -13
  157. package/dist/types/runtime/historical.d.ts.map +1 -1
  158. package/dist/types/runtime/index.d.ts +49 -6
  159. package/dist/types/runtime/index.d.ts.map +1 -1
  160. package/dist/types/runtime/init.d.ts +5 -5
  161. package/dist/types/runtime/init.d.ts.map +1 -1
  162. package/dist/types/runtime/isolated.d.ts +14 -0
  163. package/dist/types/runtime/isolated.d.ts.map +1 -0
  164. package/dist/types/runtime/multichain.d.ts.map +1 -1
  165. package/dist/types/runtime/omnichain.d.ts.map +1 -1
  166. package/dist/types/runtime/realtime.d.ts +21 -10
  167. package/dist/types/runtime/realtime.d.ts.map +1 -1
  168. package/dist/types/sync-historical/index.d.ts +18 -8
  169. package/dist/types/sync-historical/index.d.ts.map +1 -1
  170. package/dist/types/sync-realtime/bloom.d.ts.map +1 -1
  171. package/dist/types/sync-realtime/index.d.ts +2 -2
  172. package/dist/types/sync-realtime/index.d.ts.map +1 -1
  173. package/dist/types/sync-store/index.d.ts +9 -9
  174. package/dist/types/sync-store/index.d.ts.map +1 -1
  175. package/dist/types/utils/abi.d.ts +3 -34
  176. package/dist/types/utils/abi.d.ts.map +1 -1
  177. package/dist/types/utils/chunk.d.ts +2 -0
  178. package/dist/types/utils/chunk.d.ts.map +1 -0
  179. package/dist/types/utils/promiseAllSettledWithThrow.d.ts +8 -0
  180. package/dist/types/utils/promiseAllSettledWithThrow.d.ts.map +1 -0
  181. package/dist/types/utils/sql-parse.d.ts +21 -0
  182. package/dist/types/utils/sql-parse.d.ts.map +1 -0
  183. package/package.json +2 -2
  184. package/src/bin/commands/createViews.ts +35 -15
  185. package/src/bin/commands/dev.ts +43 -21
  186. package/src/bin/commands/prune.ts +6 -0
  187. package/src/bin/commands/serve.ts +4 -1
  188. package/src/bin/commands/start.ts +20 -5
  189. package/src/bin/isolatedController.ts +300 -0
  190. package/src/bin/isolatedWorker.ts +192 -0
  191. package/src/build/config.ts +570 -632
  192. package/src/build/index.ts +14 -14
  193. package/src/build/pre.ts +1 -4
  194. package/src/build/schema.ts +49 -4
  195. package/src/client/index.ts +386 -48
  196. package/src/config/index.ts +3 -3
  197. package/src/database/actions.ts +469 -120
  198. package/src/database/index.ts +85 -58
  199. package/src/database/queryBuilder.ts +1 -0
  200. package/src/drizzle/index.ts +15 -7
  201. package/src/drizzle/onchain.ts +19 -0
  202. package/src/indexing/client.ts +38 -25
  203. package/src/indexing/index.ts +137 -230
  204. package/src/indexing/profile.ts +1 -1
  205. package/src/indexing-store/cache.ts +285 -414
  206. package/src/indexing-store/historical.ts +20 -10
  207. package/src/indexing-store/index.ts +16 -0
  208. package/src/indexing-store/profile.ts +3 -3
  209. package/src/indexing-store/realtime.ts +28 -0
  210. package/src/internal/errors.ts +26 -0
  211. package/src/internal/metrics.ts +341 -111
  212. package/src/internal/options.ts +4 -0
  213. package/src/internal/telemetry.ts +1 -1
  214. package/src/internal/types.ts +70 -87
  215. package/src/rpc/http.ts +164 -0
  216. package/src/rpc/index.ts +39 -7
  217. package/src/runtime/events.ts +195 -240
  218. package/src/runtime/filter.ts +85 -1
  219. package/src/runtime/fragments.ts +109 -113
  220. package/src/runtime/historical.ts +467 -189
  221. package/src/runtime/index.ts +337 -69
  222. package/src/runtime/init.ts +5 -5
  223. package/src/runtime/isolated.ts +768 -0
  224. package/src/runtime/multichain.ts +137 -102
  225. package/src/runtime/omnichain.ts +138 -106
  226. package/src/runtime/realtime.ts +322 -123
  227. package/src/sync-historical/index.ts +556 -692
  228. package/src/sync-realtime/bloom.ts +7 -3
  229. package/src/sync-realtime/index.ts +31 -46
  230. package/src/sync-store/index.ts +189 -95
  231. package/src/utils/abi.ts +33 -90
  232. package/src/utils/chunk.ts +7 -0
  233. package/src/utils/promiseAllSettledWithThrow.ts +27 -0
  234. package/src/{client/parse.ts → utils/sql-parse.ts} +100 -90
  235. package/dist/esm/client/parse.js.map +0 -1
  236. package/dist/types/client/parse.d.ts +0 -14
  237. package/dist/types/client/parse.d.ts.map +0 -1
@@ -1,11 +1,14 @@
1
1
  import { buildEvents, decodeEvents, syncBlockToInternal, syncLogToInternal, syncTraceToInternal, syncTransactionReceiptToInternal, syncTransactionToInternal, } from './events.js';
2
2
  import { createRealtimeSync, } from '../sync-realtime/index.js';
3
+ import { createSyncStore } from '../sync-store/index.js';
3
4
  import { ZERO_CHECKPOINT_STRING, blockToCheckpoint, encodeCheckpoint, min, } from '../utils/checkpoint.js';
4
5
  import { bufferAsyncGenerator, createCallbackGenerator, mergeAsyncGenerators, } from '../utils/generators.js';
5
6
  import { intervalIntersection } from '../utils/interval.js';
7
+ import { promiseAllSettledWithThrow } from '../utils/promiseAllSettledWithThrow.js';
6
8
  import { promiseWithResolvers } from '../utils/promiseWithResolvers.js';
7
9
  import { startClock } from '../utils/timer.js';
8
10
  import { hexToNumber } from "viem";
11
+ import { getFilterFactories } from "./filter.js";
9
12
  import { getOmnichainCheckpoint } from "./omnichain.js";
10
13
  export async function* getRealtimeEventsOmnichain(params) {
11
14
  const eventGenerators = Array.from(params.perChainSync.entries())
@@ -21,7 +24,7 @@ export async function* getRealtimeEventsOmnichain(params) {
21
24
  return;
22
25
  }
23
26
  const rpc = params.indexingBuild.rpcs[params.indexingBuild.chains.indexOf(chain)];
24
- const sources = params.indexingBuild.sources.filter(({ filter }) => filter.chainId === chain.id);
27
+ const eventCallbacks = params.indexingBuild.eventCallbacks[params.indexingBuild.chains.findIndex((c) => c.id === chain.id)];
25
28
  params.common.metrics.ponder_sync_is_realtime.set({ chain: chain.name }, 1);
26
29
  const bufferCallback = (bufferSize) => {
27
30
  // Note: Only log when the buffer size is greater than 1 because
@@ -40,10 +43,10 @@ export async function* getRealtimeEventsOmnichain(params) {
40
43
  common: params.common,
41
44
  chain,
42
45
  rpc,
43
- sources,
46
+ eventCallbacks,
44
47
  syncProgress,
45
48
  childAddresses,
46
- syncStore: params.syncStore,
49
+ database: params.database,
47
50
  }), 100, bufferCallback);
48
51
  })
49
52
  .filter((generator) => generator !== undefined);
@@ -55,19 +58,19 @@ export async function* getRealtimeEventsOmnichain(params) {
55
58
  let finalizedCheckpoint = ZERO_CHECKPOINT_STRING;
56
59
  for await (const { chain, event } of mergeAsyncGeneratorsWithRealtimeOrder(eventGenerators)) {
57
60
  const { syncProgress, childAddresses, unfinalizedBlocks } = params.perChainSync.get(chain);
58
- const sources = params.indexingBuild.sources.filter(({ filter }) => filter.chainId === chain.id);
61
+ const eventCallbacks = params.indexingBuild.eventCallbacks[params.indexingBuild.chains.findIndex((c) => c.id === chain.id)];
59
62
  await handleRealtimeSyncEvent(event, {
60
63
  common: params.common,
61
64
  chain,
62
- sources,
65
+ eventCallbacks,
63
66
  syncProgress,
64
67
  unfinalizedBlocks,
65
- syncStore: params.syncStore,
68
+ database: params.database,
66
69
  });
67
70
  switch (event.type) {
68
71
  case "block": {
69
72
  const events = buildEvents({
70
- sources,
73
+ eventCallbacks,
71
74
  chainId: chain.id,
72
75
  blocks: [syncBlockToInternal({ block: event.block })],
73
76
  logs: event.logs.map((log) => syncLogToInternal({ log })),
@@ -88,7 +91,7 @@ export async function* getRealtimeEventsOmnichain(params) {
88
91
  hash: event.block.hash,
89
92
  event_count: events.length,
90
93
  });
91
- const decodedEvents = decodeEvents(params.common, sources, events);
94
+ const decodedEvents = decodeEvents(params.common, chain, eventCallbacks, events);
92
95
  params.common.logger.trace({
93
96
  msg: "Decoded block events",
94
97
  chain: chain.name,
@@ -153,7 +156,7 @@ export async function* getRealtimeEventsOmnichain(params) {
153
156
  }
154
157
  case "reorg": {
155
158
  const isReorgedEvent = (_event) => {
156
- if (_event.chainId === chain.id &&
159
+ if (_event.chain.id === chain.id &&
157
160
  Number(_event.event.block.number) > hexToNumber(event.block.number)) {
158
161
  return true;
159
162
  }
@@ -192,7 +195,7 @@ export async function* getRealtimeEventsMultichain(params) {
192
195
  return;
193
196
  }
194
197
  const rpc = params.indexingBuild.rpcs[params.indexingBuild.chains.indexOf(chain)];
195
- const sources = params.indexingBuild.sources.filter(({ filter }) => filter.chainId === chain.id);
198
+ const eventCallbacks = params.indexingBuild.eventCallbacks[params.indexingBuild.chains.findIndex((c) => c.id === chain.id)];
196
199
  params.common.metrics.ponder_sync_is_realtime.set({ chain: chain.name }, 1);
197
200
  const bufferCallback = (bufferSize) => {
198
201
  // Note: Only log when the buffer size is greater than 1 because
@@ -211,10 +214,10 @@ export async function* getRealtimeEventsMultichain(params) {
211
214
  common: params.common,
212
215
  chain,
213
216
  rpc,
214
- sources,
217
+ eventCallbacks,
215
218
  syncProgress,
216
219
  childAddresses,
217
- syncStore: params.syncStore,
220
+ database: params.database,
218
221
  }), 100, bufferCallback);
219
222
  })
220
223
  .filter((generator) => generator !== undefined);
@@ -224,19 +227,19 @@ export async function* getRealtimeEventsMultichain(params) {
224
227
  let pendingEvents = [];
225
228
  for await (const { chain, event } of mergeAsyncGenerators(eventGenerators)) {
226
229
  const { syncProgress, childAddresses, unfinalizedBlocks } = params.perChainSync.get(chain);
227
- const sources = params.indexingBuild.sources.filter(({ filter }) => filter.chainId === chain.id);
230
+ const eventCallbacks = params.indexingBuild.eventCallbacks[params.indexingBuild.chains.findIndex((c) => c.id === chain.id)];
228
231
  await handleRealtimeSyncEvent(event, {
229
232
  common: params.common,
230
233
  chain,
231
- sources,
234
+ eventCallbacks,
232
235
  syncProgress,
233
236
  unfinalizedBlocks,
234
- syncStore: params.syncStore,
237
+ database: params.database,
235
238
  });
236
239
  switch (event.type) {
237
240
  case "block": {
238
241
  const events = buildEvents({
239
- sources,
242
+ eventCallbacks,
240
243
  chainId: chain.id,
241
244
  blocks: [syncBlockToInternal({ block: event.block })],
242
245
  logs: event.logs.map((log) => syncLogToInternal({ log })),
@@ -257,7 +260,7 @@ export async function* getRealtimeEventsMultichain(params) {
257
260
  hash: event.block.hash,
258
261
  event_count: events.length,
259
262
  });
260
- const decodedEvents = decodeEvents(params.common, sources, events);
263
+ const decodedEvents = decodeEvents(params.common, chain, eventCallbacks, events);
261
264
  params.common.logger.trace({
262
265
  msg: "Decoded block events",
263
266
  chain: chain.name,
@@ -294,7 +297,7 @@ export async function* getRealtimeEventsMultichain(params) {
294
297
  // index of the first unfinalized event
295
298
  let finalizeIndex = undefined;
296
299
  for (const [index, event] of executedEvents.entries()) {
297
- const _chain = params.indexingBuild.chains.find((c) => c.id === event.chainId);
300
+ const _chain = params.indexingBuild.chains.find((c) => c.id === event.chain.id);
298
301
  const _checkpoint = params.perChainSync
299
302
  .get(_chain)
300
303
  .syncProgress.getCheckpoint({ tag: "finalized" });
@@ -321,7 +324,7 @@ export async function* getRealtimeEventsMultichain(params) {
321
324
  }
322
325
  case "reorg": {
323
326
  const isReorgedEvent = (_event) => {
324
- if (_event.chainId === chain.id &&
327
+ if (_event.chain.id === chain.id &&
325
328
  Number(_event.event.block.number) > hexToNumber(event.block.number)) {
326
329
  return true;
327
330
  }
@@ -331,7 +334,7 @@ export async function* getRealtimeEventsMultichain(params) {
331
334
  // index of the first reorged event
332
335
  let reorgIndex = undefined;
333
336
  for (const [index, event] of executedEvents.entries()) {
334
- if (event.chainId === chain.id && event.checkpoint > checkpoint) {
337
+ if (event.chain.id === chain.id && event.checkpoint > checkpoint) {
335
338
  reorgIndex = index;
336
339
  break;
337
340
  }
@@ -353,6 +356,113 @@ export async function* getRealtimeEventsMultichain(params) {
353
356
  }
354
357
  }
355
358
  }
359
+ export async function* getRealtimeEventsIsolated(params) {
360
+ if (params.syncProgress.isEnd()) {
361
+ params.common.logger.info({
362
+ msg: "Skipped live indexing (chain only requires backfill indexing)",
363
+ chain: params.chain.name,
364
+ chain_id: params.chain.id,
365
+ end_block: hexToNumber(params.syncProgress.end.number),
366
+ });
367
+ params.common.metrics.ponder_sync_is_complete.set({ chain: params.chain.name }, 1);
368
+ return;
369
+ }
370
+ const rpc = params.indexingBuild.rpcs[params.indexingBuild.chains.indexOf(params.chain)];
371
+ const eventCallbacks = params.indexingBuild.eventCallbacks[params.indexingBuild.chains.indexOf(params.chain)];
372
+ params.common.metrics.ponder_sync_is_realtime.set({ chain: params.chain.name }, 1);
373
+ const bufferCallback = (bufferSize) => {
374
+ // Note: Only log when the buffer size is greater than 1 because
375
+ // a buffer size of 1 is not backpressure.
376
+ if (bufferSize === 1)
377
+ return;
378
+ params.common.logger.trace({
379
+ msg: "Detected live indexing backpressure",
380
+ chain: params.chain.name,
381
+ chain_id: params.chain.id,
382
+ buffer_size: bufferSize,
383
+ indexing_step: "order block events",
384
+ });
385
+ };
386
+ const eventGenerator = bufferAsyncGenerator(getRealtimeEventGenerator({
387
+ common: params.common,
388
+ chain: params.chain,
389
+ rpc,
390
+ eventCallbacks,
391
+ syncProgress: params.syncProgress,
392
+ childAddresses: params.childAddresses,
393
+ database: params.database,
394
+ }), 100, bufferCallback);
395
+ for await (const { chain, event } of eventGenerator) {
396
+ await handleRealtimeSyncEvent(event, {
397
+ common: params.common,
398
+ chain,
399
+ eventCallbacks,
400
+ syncProgress: params.syncProgress,
401
+ unfinalizedBlocks: params.unfinalizedBlocks,
402
+ database: params.database,
403
+ });
404
+ switch (event.type) {
405
+ case "block": {
406
+ const rawEvents = buildEvents({
407
+ eventCallbacks,
408
+ chainId: chain.id,
409
+ blocks: [syncBlockToInternal({ block: event.block })],
410
+ logs: event.logs.map((log) => syncLogToInternal({ log })),
411
+ transactions: event.transactions.map((transaction) => syncTransactionToInternal({ transaction })),
412
+ transactionReceipts: event.transactionReceipts.map((transactionReceipt) => syncTransactionReceiptToInternal({ transactionReceipt })),
413
+ traces: event.traces.map((trace) => syncTraceToInternal({
414
+ trace,
415
+ block: event.block,
416
+ transaction: event.transactions.find((t) => t.hash === trace.transactionHash),
417
+ })),
418
+ childAddresses: params.childAddresses,
419
+ });
420
+ params.common.logger.trace({
421
+ msg: "Constructed events from block",
422
+ chain: chain.name,
423
+ chain_id: chain.id,
424
+ number: hexToNumber(event.block.number),
425
+ hash: event.block.hash,
426
+ event_count: rawEvents.length,
427
+ });
428
+ const events = decodeEvents(params.common, chain, eventCallbacks, rawEvents);
429
+ params.common.logger.trace({
430
+ msg: "Decoded block events",
431
+ chain: chain.name,
432
+ chain_id: chain.id,
433
+ number: hexToNumber(event.block.number),
434
+ hash: event.block.hash,
435
+ event_count: events.length,
436
+ });
437
+ const checkpoint = params.syncProgress.getCheckpoint({
438
+ tag: "current",
439
+ });
440
+ yield {
441
+ type: "block",
442
+ events,
443
+ chain,
444
+ checkpoint,
445
+ blockCallback: event.blockCallback,
446
+ };
447
+ break;
448
+ }
449
+ case "finalize": {
450
+ const checkpoint = params.syncProgress.getCheckpoint({
451
+ tag: "finalized",
452
+ });
453
+ yield { type: "finalize", chain, checkpoint };
454
+ break;
455
+ }
456
+ case "reorg": {
457
+ const checkpoint = params.syncProgress.getCheckpoint({
458
+ tag: "current",
459
+ });
460
+ yield { type: "reorg", chain, checkpoint };
461
+ break;
462
+ }
463
+ }
464
+ }
465
+ }
356
466
  export async function* getRealtimeEventGenerator(params) {
357
467
  const realtimeSync = createRealtimeSync(params);
358
468
  let childCount = 0;
@@ -473,52 +583,71 @@ export async function handleRealtimeSyncEvent(event, params) {
473
583
  const context = {
474
584
  logger: params.common.logger.child({ action: "finalize_block_range" }),
475
585
  };
476
- await Promise.all([
477
- params.syncStore.insertBlocks({
478
- blocks: finalizedBlocks
479
- .filter(({ hasMatchedFilter }) => hasMatchedFilter)
480
- .map(({ block }) => block),
481
- chainId: params.chain.id,
482
- }, context),
483
- params.syncStore.insertTransactions({
484
- transactions: finalizedBlocks.flatMap(({ transactions }) => transactions),
485
- chainId: params.chain.id,
486
- }, context),
487
- params.syncStore.insertTransactionReceipts({
488
- transactionReceipts: finalizedBlocks.flatMap(({ transactionReceipts }) => transactionReceipts),
489
- chainId: params.chain.id,
490
- }, context),
491
- params.syncStore.insertLogs({
492
- logs: finalizedBlocks.flatMap(({ logs }) => logs),
493
- chainId: params.chain.id,
494
- }, context),
495
- params.syncStore.insertTraces({
496
- traces: finalizedBlocks.flatMap(({ traces, block, transactions }) => traces.map((trace) => ({
497
- trace,
498
- block: block,
499
- transaction: transactions.find((t) => t.hash === trace.transactionHash),
500
- }))),
501
- chainId: params.chain.id,
502
- }, context),
503
- ...Array.from(childAddresses.entries()).map(([factory, childAddresses]) => params.syncStore.insertChildAddresses({
504
- factory,
505
- childAddresses,
506
- chainId: params.chain.id,
507
- }, context)),
508
- ]);
509
- // Add corresponding intervals to the sync-store
510
- // Note: this should happen after insertion so the database doesn't become corrupted
511
- const syncedIntervals = [];
512
- for (const { filter } of params.sources) {
513
- const intervals = intervalIntersection([finalizedInterval], [[filter.fromBlock ?? 0, filter.toBlock ?? Number.POSITIVE_INFINITY]]);
514
- for (const interval of intervals) {
515
- syncedIntervals.push({ interval, filter });
586
+ await params.database.syncQB.transaction(async (tx) => {
587
+ const syncStore = createSyncStore({ common: params.common, qb: tx });
588
+ await promiseAllSettledWithThrow([
589
+ syncStore.insertBlocks({
590
+ blocks: finalizedBlocks
591
+ .filter(({ hasMatchedFilter }) => hasMatchedFilter)
592
+ .map(({ block }) => block),
593
+ chainId: params.chain.id,
594
+ }),
595
+ syncStore.insertTransactions({
596
+ transactions: finalizedBlocks.flatMap(({ transactions }) => transactions),
597
+ chainId: params.chain.id,
598
+ }),
599
+ syncStore.insertTransactionReceipts({
600
+ transactionReceipts: finalizedBlocks.flatMap(({ transactionReceipts }) => transactionReceipts),
601
+ chainId: params.chain.id,
602
+ }),
603
+ syncStore.insertLogs({
604
+ logs: finalizedBlocks.flatMap(({ logs }) => logs),
605
+ chainId: params.chain.id,
606
+ }),
607
+ syncStore.insertTraces({
608
+ traces: finalizedBlocks.flatMap(({ traces, block, transactions }) => traces.map((trace) => ({
609
+ trace,
610
+ block: block,
611
+ transaction: transactions.find((t) => t.hash === trace.transactionHash),
612
+ }))),
613
+ chainId: params.chain.id,
614
+ }),
615
+ ...Array.from(childAddresses.entries()).map(([factory, childAddresses]) => syncStore.insertChildAddresses({
616
+ factory,
617
+ childAddresses,
618
+ chainId: params.chain.id,
619
+ })),
620
+ ]);
621
+ const intervals = [];
622
+ const factoryIntervals = [];
623
+ for (const { filter } of params.eventCallbacks) {
624
+ const completedIntervals = intervalIntersection([finalizedInterval], [
625
+ [
626
+ filter.fromBlock ?? 0,
627
+ filter.toBlock ?? Number.POSITIVE_INFINITY,
628
+ ],
629
+ ]);
630
+ for (const interval of completedIntervals) {
631
+ intervals.push({ interval, filter });
632
+ }
633
+ for (const factory of getFilterFactories(filter)) {
634
+ const completedIntervals = intervalIntersection([finalizedInterval], [
635
+ [
636
+ factory.fromBlock ?? 0,
637
+ factory.toBlock ?? Number.POSITIVE_INFINITY,
638
+ ],
639
+ ]);
640
+ for (const interval of completedIntervals) {
641
+ factoryIntervals.push({ interval, factory });
642
+ }
643
+ }
516
644
  }
517
- }
518
- await params.syncStore.insertIntervals({
519
- intervals: syncedIntervals,
520
- chainId: params.chain.id,
521
- }, context);
645
+ await syncStore.insertIntervals({
646
+ intervals,
647
+ factoryIntervals,
648
+ chainId: params.chain.id,
649
+ }, context);
650
+ }, undefined, context);
522
651
  break;
523
652
  }
524
653
  case "reorg": {
@@ -534,7 +663,10 @@ export async function handleRealtimeSyncEvent(event, params) {
534
663
  else
535
664
  break;
536
665
  }
537
- await params.syncStore.pruneRpcRequestResults({
666
+ await createSyncStore({
667
+ common: params.common,
668
+ qb: params.database.syncQB,
669
+ }).pruneRpcRequestResults({
538
670
  chainId: params.chain.id,
539
671
  blocks: event.reorgedBlocks,
540
672
  }, { logger: params.common.logger.child({ action: "reconcile_reorg" }) });
@@ -1 +1 @@
1
- {"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../../src/runtime/realtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../../src/runtime/realtime.ts"],"names":[],"mappings":"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"}