ponder 0.9.4 → 0.9.5-debug.1

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 (466) hide show
  1. package/CHANGELOG.md +2201 -0
  2. package/dist/esm/bin/commands/codegen.js +37 -0
  3. package/dist/esm/bin/commands/codegen.js.map +1 -0
  4. package/dist/esm/bin/commands/dev.js +242 -0
  5. package/dist/esm/bin/commands/dev.js.map +1 -0
  6. package/dist/esm/bin/commands/list.js +103 -0
  7. package/dist/esm/bin/commands/list.js.map +1 -0
  8. package/dist/esm/bin/commands/serve.js +123 -0
  9. package/dist/esm/bin/commands/serve.js.map +1 -0
  10. package/dist/esm/bin/commands/start.js +136 -0
  11. package/dist/esm/bin/commands/start.js.map +1 -0
  12. package/dist/esm/bin/ponder.js +118 -0
  13. package/dist/esm/bin/ponder.js.map +1 -0
  14. package/dist/esm/bin/utils/codegen.js +26 -0
  15. package/dist/esm/bin/utils/codegen.js.map +1 -0
  16. package/dist/esm/bin/utils/exit.js +69 -0
  17. package/dist/esm/bin/utils/exit.js.map +1 -0
  18. package/dist/esm/bin/utils/run.js +247 -0
  19. package/dist/esm/bin/utils/run.js.map +1 -0
  20. package/dist/esm/bin/utils/runServer.js +8 -0
  21. package/dist/esm/bin/utils/runServer.js.map +1 -0
  22. package/dist/esm/build/configAndIndexingFunctions.js +654 -0
  23. package/dist/esm/build/configAndIndexingFunctions.js.map +1 -0
  24. package/dist/esm/build/factory.js +43 -0
  25. package/dist/esm/build/factory.js.map +1 -0
  26. package/dist/esm/build/index.js +431 -0
  27. package/dist/esm/build/index.js.map +1 -0
  28. package/dist/esm/build/plugin.js +43 -0
  29. package/dist/esm/build/plugin.js.map +1 -0
  30. package/dist/esm/build/pre.js +112 -0
  31. package/dist/esm/build/pre.js.map +1 -0
  32. package/dist/esm/build/schema.js +89 -0
  33. package/dist/esm/build/schema.js.map +1 -0
  34. package/dist/esm/build/stacktrace.js +137 -0
  35. package/dist/esm/build/stacktrace.js.map +1 -0
  36. package/dist/esm/client/index.js +124 -0
  37. package/dist/esm/client/index.js.map +1 -0
  38. package/dist/esm/client/validate.js +1151 -0
  39. package/dist/esm/client/validate.js.map +1 -0
  40. package/dist/esm/config/address.js +2 -0
  41. package/dist/esm/config/address.js.map +1 -0
  42. package/dist/esm/config/eventFilter.js +2 -0
  43. package/dist/esm/config/eventFilter.js.map +1 -0
  44. package/dist/esm/config/index.js +2 -0
  45. package/dist/esm/config/index.js.map +1 -0
  46. package/dist/esm/config/networks.js +120 -0
  47. package/dist/esm/config/networks.js.map +1 -0
  48. package/dist/esm/config/utilityTypes.js +2 -0
  49. package/dist/esm/config/utilityTypes.js.map +1 -0
  50. package/dist/esm/database/index.js +914 -0
  51. package/dist/esm/database/index.js.map +1 -0
  52. package/dist/esm/drizzle/bigint.js +36 -0
  53. package/dist/esm/drizzle/bigint.js.map +1 -0
  54. package/dist/esm/drizzle/hex.js +38 -0
  55. package/dist/esm/drizzle/hex.js.map +1 -0
  56. package/dist/esm/drizzle/index.js +43 -0
  57. package/dist/esm/drizzle/index.js.map +1 -0
  58. package/dist/esm/drizzle/kit/index.js +658 -0
  59. package/dist/esm/drizzle/kit/index.js.map +1 -0
  60. package/dist/esm/drizzle/onchain.js +102 -0
  61. package/dist/esm/drizzle/onchain.js.map +1 -0
  62. package/dist/esm/graphql/index.js +704 -0
  63. package/dist/esm/graphql/index.js.map +1 -0
  64. package/dist/esm/graphql/json.js +42 -0
  65. package/dist/esm/graphql/json.js.map +1 -0
  66. package/dist/esm/graphql/middleware.js +80 -0
  67. package/dist/esm/graphql/middleware.js.map +1 -0
  68. package/dist/esm/index.js +9 -0
  69. package/dist/esm/index.js.map +1 -0
  70. package/dist/esm/indexing/addStackTrace.js +54 -0
  71. package/dist/esm/indexing/addStackTrace.js.map +1 -0
  72. package/dist/esm/indexing/index.js +10 -0
  73. package/dist/esm/indexing/index.js.map +1 -0
  74. package/dist/esm/indexing/ponderActions.js +60 -0
  75. package/dist/esm/indexing/ponderActions.js.map +1 -0
  76. package/dist/esm/indexing/service.js +312 -0
  77. package/dist/esm/indexing/service.js.map +1 -0
  78. package/dist/esm/indexing-store/historical.js +591 -0
  79. package/dist/esm/indexing-store/historical.js.map +1 -0
  80. package/dist/esm/indexing-store/index.js +19 -0
  81. package/dist/esm/indexing-store/index.js.map +1 -0
  82. package/dist/esm/indexing-store/metadata.js +46 -0
  83. package/dist/esm/indexing-store/metadata.js.map +1 -0
  84. package/dist/esm/indexing-store/realtime.js +295 -0
  85. package/dist/esm/indexing-store/realtime.js.map +1 -0
  86. package/dist/esm/internal/common.js +2 -0
  87. package/dist/esm/internal/common.js.map +1 -0
  88. package/dist/esm/internal/errors.js +175 -0
  89. package/dist/esm/internal/errors.js.map +1 -0
  90. package/dist/esm/internal/logger.js +96 -0
  91. package/dist/esm/internal/logger.js.map +1 -0
  92. package/dist/esm/internal/metrics.js +569 -0
  93. package/dist/esm/internal/metrics.js.map +1 -0
  94. package/dist/esm/internal/options.js +69 -0
  95. package/dist/esm/internal/options.js.map +1 -0
  96. package/dist/esm/internal/shutdown.js +18 -0
  97. package/dist/esm/internal/shutdown.js.map +1 -0
  98. package/dist/esm/internal/telemetry.js +199 -0
  99. package/dist/esm/internal/telemetry.js.map +1 -0
  100. package/dist/esm/internal/types.js +2 -0
  101. package/dist/esm/internal/types.js.map +1 -0
  102. package/dist/esm/server/error.js +55 -0
  103. package/dist/esm/server/error.js.map +1 -0
  104. package/dist/esm/server/index.js +107 -0
  105. package/dist/esm/server/index.js.map +1 -0
  106. package/dist/esm/sync/abi.js +67 -0
  107. package/dist/esm/sync/abi.js.map +1 -0
  108. package/dist/esm/sync/events.js +607 -0
  109. package/dist/esm/sync/events.js.map +1 -0
  110. package/dist/esm/sync/filter.js +356 -0
  111. package/dist/esm/sync/filter.js.map +1 -0
  112. package/dist/esm/sync/fragments.js +300 -0
  113. package/dist/esm/sync/fragments.js.map +1 -0
  114. package/dist/esm/sync/index.js +1001 -0
  115. package/dist/esm/sync/index.js.map +1 -0
  116. package/dist/esm/sync/transport.js +94 -0
  117. package/dist/esm/sync/transport.js.map +1 -0
  118. package/dist/esm/sync-historical/index.js +590 -0
  119. package/dist/esm/sync-historical/index.js.map +1 -0
  120. package/dist/esm/sync-realtime/bloom.js +75 -0
  121. package/dist/esm/sync-realtime/bloom.js.map +1 -0
  122. package/dist/esm/sync-realtime/index.js +794 -0
  123. package/dist/esm/sync-realtime/index.js.map +1 -0
  124. package/dist/esm/sync-store/encoding.js +157 -0
  125. package/dist/esm/sync-store/encoding.js.map +1 -0
  126. package/dist/esm/sync-store/index.js +727 -0
  127. package/dist/esm/sync-store/index.js.map +1 -0
  128. package/dist/esm/sync-store/migrations.js +1186 -0
  129. package/dist/esm/sync-store/migrations.js.map +1 -0
  130. package/dist/esm/types/db.js +2 -0
  131. package/dist/esm/types/db.js.map +1 -0
  132. package/dist/esm/types/eth.js +2 -0
  133. package/dist/esm/types/eth.js.map +1 -0
  134. package/dist/esm/types/sync.js +2 -0
  135. package/dist/esm/types/sync.js.map +1 -0
  136. package/dist/esm/types/utils.js +2 -0
  137. package/dist/esm/types/utils.js.map +1 -0
  138. package/dist/esm/types/virtual.js +2 -0
  139. package/dist/esm/types/virtual.js.map +1 -0
  140. package/dist/esm/ui/ProgressBar.js +11 -0
  141. package/dist/esm/ui/ProgressBar.js.map +1 -0
  142. package/dist/esm/ui/Table.js +50 -0
  143. package/dist/esm/ui/Table.js.map +1 -0
  144. package/dist/esm/ui/app.js +113 -0
  145. package/dist/esm/ui/app.js.map +1 -0
  146. package/dist/esm/ui/graphiql.html.js +59 -0
  147. package/dist/esm/ui/graphiql.html.js.map +1 -0
  148. package/dist/esm/ui/index.js +21 -0
  149. package/dist/esm/ui/index.js.map +1 -0
  150. package/dist/esm/utils/bigint.js +37 -0
  151. package/dist/esm/utils/bigint.js.map +1 -0
  152. package/dist/esm/utils/chains.js +3 -0
  153. package/dist/esm/utils/chains.js.map +1 -0
  154. package/dist/esm/utils/checkpoint.js +114 -0
  155. package/dist/esm/utils/checkpoint.js.map +1 -0
  156. package/dist/esm/utils/chunk.js +8 -0
  157. package/dist/esm/utils/chunk.js.map +1 -0
  158. package/dist/esm/utils/date.js +27 -0
  159. package/dist/esm/utils/date.js.map +1 -0
  160. package/dist/esm/utils/debug.js +2 -0
  161. package/dist/esm/utils/debug.js.map +1 -0
  162. package/dist/esm/utils/dedupe.js +33 -0
  163. package/dist/esm/utils/dedupe.js.map +1 -0
  164. package/dist/esm/utils/duplicates.js +19 -0
  165. package/dist/esm/utils/duplicates.js.map +1 -0
  166. package/dist/esm/utils/estimate.js +6 -0
  167. package/dist/esm/utils/estimate.js.map +1 -0
  168. package/dist/esm/utils/extend.js +28 -0
  169. package/dist/esm/utils/extend.js.map +1 -0
  170. package/dist/esm/utils/format.js +20 -0
  171. package/dist/esm/utils/format.js.map +1 -0
  172. package/dist/esm/utils/generators.js +77 -0
  173. package/dist/esm/utils/generators.js.map +1 -0
  174. package/dist/esm/utils/hash.js +11 -0
  175. package/dist/esm/utils/hash.js.map +1 -0
  176. package/dist/esm/utils/interval.js +171 -0
  177. package/dist/esm/utils/interval.js.map +1 -0
  178. package/dist/esm/utils/lowercase.js +7 -0
  179. package/dist/esm/utils/lowercase.js.map +1 -0
  180. package/dist/esm/utils/mutex.js +25 -0
  181. package/dist/esm/utils/mutex.js.map +1 -0
  182. package/dist/esm/utils/never.js +4 -0
  183. package/dist/esm/utils/never.js.map +1 -0
  184. package/dist/esm/utils/offset.js +73 -0
  185. package/dist/esm/utils/offset.js.map +1 -0
  186. package/dist/esm/utils/order.js +18 -0
  187. package/dist/esm/utils/order.js.map +1 -0
  188. package/dist/esm/utils/partition.js +37 -0
  189. package/dist/esm/utils/partition.js.map +1 -0
  190. package/dist/esm/utils/pg.js +126 -0
  191. package/dist/esm/utils/pg.js.map +1 -0
  192. package/dist/esm/utils/pglite.js +80 -0
  193. package/dist/esm/utils/pglite.js.map +1 -0
  194. package/dist/esm/utils/port.js +30 -0
  195. package/dist/esm/utils/port.js.map +1 -0
  196. package/dist/esm/utils/print.js +23 -0
  197. package/dist/esm/utils/print.js.map +1 -0
  198. package/dist/esm/utils/promiseWithResolvers.js +13 -0
  199. package/dist/esm/utils/promiseWithResolvers.js.map +1 -0
  200. package/dist/esm/utils/queue.js +145 -0
  201. package/dist/esm/utils/queue.js.map +1 -0
  202. package/dist/esm/utils/range.js +8 -0
  203. package/dist/esm/utils/range.js.map +1 -0
  204. package/dist/esm/utils/requestQueue.js +127 -0
  205. package/dist/esm/utils/requestQueue.js.map +1 -0
  206. package/dist/esm/utils/result.js +10 -0
  207. package/dist/esm/utils/result.js.map +1 -0
  208. package/dist/esm/utils/rpc.js +202 -0
  209. package/dist/esm/utils/rpc.js.map +1 -0
  210. package/dist/esm/utils/serialize.js +23 -0
  211. package/dist/esm/utils/serialize.js.map +1 -0
  212. package/dist/esm/utils/timer.js +17 -0
  213. package/dist/esm/utils/timer.js.map +1 -0
  214. package/dist/esm/utils/wait.js +8 -0
  215. package/dist/esm/utils/wait.js.map +1 -0
  216. package/dist/esm/utils/zipper.js +67 -0
  217. package/dist/esm/utils/zipper.js.map +1 -0
  218. package/dist/types/bin/commands/codegen.d.ts +5 -0
  219. package/dist/types/bin/commands/codegen.d.ts.map +1 -0
  220. package/dist/types/bin/commands/dev.d.ts +5 -0
  221. package/dist/types/bin/commands/dev.d.ts.map +1 -0
  222. package/dist/types/bin/commands/list.d.ts +5 -0
  223. package/dist/types/bin/commands/list.d.ts.map +1 -0
  224. package/dist/types/bin/commands/serve.d.ts +5 -0
  225. package/dist/types/bin/commands/serve.d.ts.map +1 -0
  226. package/dist/types/bin/commands/start.d.ts +5 -0
  227. package/dist/types/bin/commands/start.d.ts.map +1 -0
  228. package/dist/{bin → types/bin}/ponder.d.ts +5 -6
  229. package/dist/types/bin/ponder.d.ts.map +1 -0
  230. package/dist/types/bin/utils/codegen.d.ts +6 -0
  231. package/dist/types/bin/utils/codegen.d.ts.map +1 -0
  232. package/dist/types/bin/utils/exit.d.ts +9 -0
  233. package/dist/types/bin/utils/exit.d.ts.map +1 -0
  234. package/dist/types/bin/utils/run.d.ts +14 -0
  235. package/dist/types/bin/utils/run.d.ts.map +1 -0
  236. package/dist/types/bin/utils/runServer.d.ts +12 -0
  237. package/dist/types/bin/utils/runServer.d.ts.map +1 -0
  238. package/dist/types/build/configAndIndexingFunctions.d.ts +37 -0
  239. package/dist/types/build/configAndIndexingFunctions.d.ts.map +1 -0
  240. package/dist/types/build/factory.d.ts +10 -0
  241. package/dist/types/build/factory.d.ts.map +1 -0
  242. package/dist/types/build/index.d.ts +70 -0
  243. package/dist/types/build/index.d.ts.map +1 -0
  244. package/dist/types/build/plugin.d.ts +4 -0
  245. package/dist/types/build/plugin.d.ts.map +1 -0
  246. package/dist/types/build/pre.d.ts +35 -0
  247. package/dist/types/build/pre.d.ts.map +1 -0
  248. package/dist/types/build/schema.d.ts +18 -0
  249. package/dist/types/build/schema.d.ts.map +1 -0
  250. package/dist/types/build/stacktrace.d.ts +13 -0
  251. package/dist/types/build/stacktrace.d.ts.map +1 -0
  252. package/dist/types/client/index.d.ts +27 -0
  253. package/dist/types/client/index.d.ts.map +1 -0
  254. package/dist/types/client/validate.d.ts +2 -0
  255. package/dist/types/client/validate.d.ts.map +1 -0
  256. package/dist/types/config/address.d.ts +14 -0
  257. package/dist/types/config/address.d.ts.map +1 -0
  258. package/dist/types/config/eventFilter.d.ts +18 -0
  259. package/dist/types/config/eventFilter.d.ts.map +1 -0
  260. package/dist/types/config/index.d.ts +143 -0
  261. package/dist/types/config/index.d.ts.map +1 -0
  262. package/dist/types/config/networks.d.ts +30 -0
  263. package/dist/types/config/networks.d.ts.map +1 -0
  264. package/dist/types/config/utilityTypes.d.ts +43 -0
  265. package/dist/types/config/utilityTypes.d.ts.map +1 -0
  266. package/dist/types/database/index.d.ts +91 -0
  267. package/dist/types/database/index.d.ts.map +1 -0
  268. package/dist/types/drizzle/bigint.d.ts +25 -0
  269. package/dist/types/drizzle/bigint.d.ts.map +1 -0
  270. package/dist/types/drizzle/hex.d.ts +25 -0
  271. package/dist/types/drizzle/hex.d.ts.map +1 -0
  272. package/dist/types/drizzle/index.d.ts +14 -0
  273. package/dist/types/drizzle/index.d.ts.map +1 -0
  274. package/dist/types/drizzle/kit/index.d.ts +49 -0
  275. package/dist/types/drizzle/kit/index.d.ts.map +1 -0
  276. package/dist/{drizzle → types/drizzle}/onchain.d.ts +49 -96
  277. package/dist/types/drizzle/onchain.d.ts.map +1 -0
  278. package/dist/types/graphql/index.d.ts +14 -0
  279. package/dist/types/graphql/index.d.ts.map +1 -0
  280. package/dist/types/graphql/json.d.ts +3 -0
  281. package/dist/types/graphql/json.d.ts.map +1 -0
  282. package/dist/types/graphql/middleware.d.ts +29 -0
  283. package/dist/types/graphql/middleware.d.ts.map +1 -0
  284. package/dist/types/index.d.ts +18 -0
  285. package/dist/types/index.d.ts.map +1 -0
  286. package/dist/types/indexing/addStackTrace.d.ts +3 -0
  287. package/dist/types/indexing/addStackTrace.d.ts.map +1 -0
  288. package/dist/types/indexing/index.d.ts +575 -0
  289. package/dist/types/indexing/index.d.ts.map +1 -0
  290. package/dist/types/indexing/ponderActions.d.ts +47 -0
  291. package/dist/types/indexing/ponderActions.d.ts.map +1 -0
  292. package/dist/types/indexing/service.d.ts +73 -0
  293. package/dist/types/indexing/service.d.ts.map +1 -0
  294. package/dist/types/indexing-store/historical.d.ts +19 -0
  295. package/dist/types/indexing-store/historical.d.ts.map +1 -0
  296. package/dist/types/indexing-store/index.d.ts +10 -0
  297. package/dist/types/indexing-store/index.d.ts.map +1 -0
  298. package/dist/types/indexing-store/metadata.d.ts +10 -0
  299. package/dist/types/indexing-store/metadata.d.ts.map +1 -0
  300. package/dist/types/indexing-store/realtime.d.ts +10 -0
  301. package/dist/types/indexing-store/realtime.d.ts.map +1 -0
  302. package/dist/types/internal/common.d.ts +13 -0
  303. package/dist/types/internal/common.d.ts.map +1 -0
  304. package/dist/types/internal/errors.d.ts +55 -0
  305. package/dist/types/internal/errors.d.ts.map +1 -0
  306. package/dist/types/internal/logger.d.ts +26 -0
  307. package/dist/types/internal/logger.d.ts.map +1 -0
  308. package/dist/types/internal/metrics.d.ts +77 -0
  309. package/dist/types/internal/metrics.d.ts.map +1 -0
  310. package/dist/types/internal/options.d.ts +59 -0
  311. package/dist/types/internal/options.d.ts.map +1 -0
  312. package/dist/types/internal/shutdown.d.ts +8 -0
  313. package/dist/types/internal/shutdown.d.ts.map +1 -0
  314. package/dist/types/internal/telemetry.d.ts +43 -0
  315. package/dist/types/internal/telemetry.d.ts.map +1 -0
  316. package/dist/types/internal/types.d.ts +328 -0
  317. package/dist/types/internal/types.d.ts.map +1 -0
  318. package/dist/types/server/error.d.ts +5 -0
  319. package/dist/types/server/error.d.ts.map +1 -0
  320. package/dist/types/server/index.d.ts +13 -0
  321. package/dist/types/server/index.d.ts.map +1 -0
  322. package/dist/types/sync/abi.d.ts +54 -0
  323. package/dist/types/sync/abi.d.ts.map +1 -0
  324. package/dist/types/sync/events.d.ts +24 -0
  325. package/dist/types/sync/events.d.ts.map +1 -0
  326. package/dist/types/sync/filter.d.ts +71 -0
  327. package/dist/types/sync/filter.d.ts.map +1 -0
  328. package/dist/types/sync/fragments.d.ts +21 -0
  329. package/dist/types/sync/fragments.d.ts.map +1 -0
  330. package/dist/types/sync/index.d.ts +112 -0
  331. package/dist/types/sync/index.d.ts.map +1 -0
  332. package/dist/types/sync/transport.d.ts +8 -0
  333. package/dist/types/sync/transport.d.ts.map +1 -0
  334. package/dist/types/sync-historical/index.d.ts +28 -0
  335. package/dist/types/sync-historical/index.d.ts.map +1 -0
  336. package/dist/types/sync-realtime/bloom.d.ts +19 -0
  337. package/dist/types/sync-realtime/bloom.d.ts.map +1 -0
  338. package/dist/types/sync-realtime/index.d.ts +48 -0
  339. package/dist/types/sync-realtime/index.d.ts.map +1 -0
  340. package/dist/types/sync-store/encoding.d.ts +151 -0
  341. package/dist/types/sync-store/encoding.d.ts.map +1 -0
  342. package/dist/types/sync-store/index.d.ts +104 -0
  343. package/dist/types/sync-store/index.d.ts.map +1 -0
  344. package/dist/types/sync-store/migrations.d.ts +13 -0
  345. package/dist/types/sync-store/migrations.d.ts.map +1 -0
  346. package/dist/types/types/db.d.ts +213 -0
  347. package/dist/types/types/db.d.ts.map +1 -0
  348. package/dist/types/types/eth.d.ts +196 -0
  349. package/dist/types/types/eth.d.ts.map +1 -0
  350. package/dist/types/types/sync.d.ts +15 -0
  351. package/dist/types/types/sync.d.ts.map +1 -0
  352. package/dist/types/types/utils.d.ts +22 -0
  353. package/dist/types/types/utils.d.ts.map +1 -0
  354. package/dist/types/types/virtual.d.ts +95 -0
  355. package/dist/types/types/virtual.d.ts.map +1 -0
  356. package/dist/types/ui/ProgressBar.d.ts +7 -0
  357. package/dist/types/ui/ProgressBar.d.ts.map +1 -0
  358. package/dist/types/ui/Table.d.ts +24 -0
  359. package/dist/types/ui/Table.d.ts.map +1 -0
  360. package/dist/types/ui/app.d.ts +14 -0
  361. package/dist/types/ui/app.d.ts.map +1 -0
  362. package/dist/types/ui/graphiql.html.d.ts +2 -0
  363. package/dist/types/ui/graphiql.html.d.ts.map +1 -0
  364. package/dist/types/ui/index.d.ts +5 -0
  365. package/dist/types/ui/index.d.ts.map +1 -0
  366. package/dist/types/utils/bigint.d.ts +15 -0
  367. package/dist/types/utils/bigint.d.ts.map +1 -0
  368. package/dist/types/utils/chains.d.ts +3 -0
  369. package/dist/types/utils/chains.d.ts.map +1 -0
  370. package/dist/types/utils/checkpoint.d.ts +40 -0
  371. package/dist/types/utils/checkpoint.d.ts.map +1 -0
  372. package/dist/types/utils/chunk.d.ts +2 -0
  373. package/dist/types/utils/chunk.d.ts.map +1 -0
  374. package/dist/types/utils/date.d.ts +7 -0
  375. package/dist/types/utils/date.d.ts.map +1 -0
  376. package/dist/types/utils/debug.d.ts +105 -0
  377. package/dist/types/utils/debug.d.ts.map +1 -0
  378. package/dist/types/utils/dedupe.d.ts +20 -0
  379. package/dist/types/utils/dedupe.d.ts.map +1 -0
  380. package/dist/types/utils/duplicates.d.ts +7 -0
  381. package/dist/types/utils/duplicates.d.ts.map +1 -0
  382. package/dist/types/utils/estimate.d.ts +11 -0
  383. package/dist/types/utils/estimate.d.ts.map +1 -0
  384. package/dist/types/utils/extend.d.ts +13 -0
  385. package/dist/types/utils/extend.d.ts.map +1 -0
  386. package/dist/types/utils/format.d.ts +3 -0
  387. package/dist/types/utils/format.d.ts.map +1 -0
  388. package/dist/types/utils/generators.d.ts +23 -0
  389. package/dist/types/utils/generators.d.ts.map +1 -0
  390. package/dist/types/utils/hash.d.ts +11 -0
  391. package/dist/types/utils/hash.d.ts.map +1 -0
  392. package/dist/types/utils/interval.d.ts +53 -0
  393. package/dist/types/utils/interval.d.ts.map +1 -0
  394. package/dist/types/utils/lowercase.d.ts +5 -0
  395. package/dist/types/utils/lowercase.d.ts.map +1 -0
  396. package/dist/types/utils/mutex.d.ts +8 -0
  397. package/dist/types/utils/mutex.d.ts.map +1 -0
  398. package/dist/types/utils/never.d.ts +2 -0
  399. package/dist/types/utils/never.d.ts.map +1 -0
  400. package/dist/types/utils/offset.d.ts +3 -0
  401. package/dist/types/utils/offset.d.ts.map +1 -0
  402. package/dist/types/utils/order.d.ts +2 -0
  403. package/dist/types/utils/order.d.ts.map +1 -0
  404. package/dist/types/utils/partition.d.ts +22 -0
  405. package/dist/types/utils/partition.d.ts.map +1 -0
  406. package/dist/types/utils/pg.d.ts +5 -0
  407. package/dist/types/utils/pg.d.ts.map +1 -0
  408. package/dist/types/utils/pglite.d.ts +25 -0
  409. package/dist/types/utils/pglite.d.ts.map +1 -0
  410. package/dist/types/utils/port.d.ts +5 -0
  411. package/dist/types/utils/port.d.ts.map +1 -0
  412. package/dist/types/utils/print.d.ts +2 -0
  413. package/dist/types/utils/print.d.ts.map +1 -0
  414. package/dist/types/utils/promiseWithResolvers.d.ts +10 -0
  415. package/dist/types/utils/promiseWithResolvers.d.ts.map +1 -0
  416. package/dist/types/utils/queue.d.ts +33 -0
  417. package/dist/types/utils/queue.d.ts.map +1 -0
  418. package/dist/types/utils/range.d.ts +8 -0
  419. package/dist/types/utils/range.d.ts.map +1 -0
  420. package/dist/types/utils/requestQueue.d.ts +21 -0
  421. package/dist/types/utils/requestQueue.d.ts.map +1 -0
  422. package/dist/types/utils/result.d.ts +17 -0
  423. package/dist/types/utils/result.d.ts.map +1 -0
  424. package/dist/types/utils/rpc.d.ts +57 -0
  425. package/dist/types/utils/rpc.d.ts.map +1 -0
  426. package/dist/types/utils/serialize.d.ts +19 -0
  427. package/dist/types/utils/serialize.d.ts.map +1 -0
  428. package/dist/types/utils/timer.d.ts +11 -0
  429. package/dist/types/utils/timer.d.ts.map +1 -0
  430. package/dist/types/utils/wait.d.ts +6 -0
  431. package/dist/types/utils/wait.d.ts.map +1 -0
  432. package/dist/types/utils/zipper.d.ts +36 -0
  433. package/dist/types/utils/zipper.d.ts.map +1 -0
  434. package/package.json +17 -17
  435. package/src/bin/commands/dev.ts +1 -1
  436. package/src/bin/ponder.ts +1 -1
  437. package/src/bin/utils/run.ts +7 -18
  438. package/src/build/configAndIndexingFunctions.ts +1 -1
  439. package/src/build/factory.ts +1 -1
  440. package/src/client/index.ts +1 -1
  441. package/src/graphql/index.ts +1 -1
  442. package/src/indexing-store/historical.ts +1 -1
  443. package/src/indexing-store/realtime.ts +1 -1
  444. package/src/internal/telemetry.ts +1 -1
  445. package/src/sync/fragments.ts +1 -1
  446. package/src/sync/index.ts +60 -20
  447. package/src/sync-historical/index.ts +26 -26
  448. package/src/sync-realtime/index.ts +1 -1
  449. package/src/utils/dedupe.ts +40 -0
  450. package/src/utils/generators.ts +1 -1
  451. package/src/utils/mutex.ts +1 -1
  452. package/src/utils/promiseWithResolvers.ts +20 -0
  453. package/src/utils/queue.ts +250 -0
  454. package/src/utils/requestQueue.ts +1 -1
  455. package/dist/bin/ponder.js +0 -12904
  456. package/dist/bin/ponder.js.map +0 -1
  457. package/dist/chunk-K2TLRLX3.js +0 -163
  458. package/dist/chunk-K2TLRLX3.js.map +0 -1
  459. package/dist/chunk-LHCA5XFV.js +0 -257
  460. package/dist/chunk-LHCA5XFV.js.map +0 -1
  461. package/dist/drizzle/onchain.js +0 -19
  462. package/dist/drizzle/onchain.js.map +0 -1
  463. package/dist/index.d.ts +0 -819
  464. package/dist/index.js +0 -2217
  465. package/dist/index.js.map +0 -1
  466. package/dist/utils-ceNucOJb.d.ts +0 -14
@@ -0,0 +1,8 @@
1
+ import { createServer } from '../../server/index.js';
2
+ /**
3
+ * Starts the server for the specified build.
4
+ */
5
+ export async function runServer(params) {
6
+ await createServer(params);
7
+ }
8
+ //# sourceMappingURL=runServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runServer.js","sourceRoot":"","sources":["../../../../src/bin/utils/runServer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAI/B;IACC,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,654 @@
1
+ import { getFinalityBlockCount, getRpcUrlsForClient, isRpcUrlPublic, } from '../config/networks.js';
2
+ import { BuildError } from '../internal/errors.js';
3
+ import { buildAbiEvents, buildAbiFunctions, buildTopics } from '../sync/abi.js';
4
+ import { defaultBlockFilterInclude, defaultLogFilterInclude, defaultTraceFilterInclude, defaultTransactionFilterInclude, defaultTransactionReceiptInclude, defaultTransferFilterInclude, } from '../sync/filter.js';
5
+ import { chains } from '../utils/chains.js';
6
+ import { dedupe } from '../utils/dedupe.js';
7
+ import { toLowerCase } from '../utils/lowercase.js';
8
+ import { BlockNotFoundError, hexToNumber } from "viem";
9
+ import { buildLogFactory } from "./factory.js";
10
+ const flattenSources = (config) => {
11
+ return Object.entries(config).flatMap(([name, source]) => {
12
+ if (typeof source.network === "string") {
13
+ return {
14
+ name,
15
+ ...source,
16
+ };
17
+ }
18
+ else {
19
+ return Object.entries(source.network).map(([network, sourceOverride]) => {
20
+ const { network: _network, ...base } = source;
21
+ return {
22
+ name,
23
+ network,
24
+ ...base,
25
+ ...sourceOverride,
26
+ };
27
+ });
28
+ }
29
+ });
30
+ };
31
+ export async function buildConfigAndIndexingFunctions({ config, rawIndexingFunctions, }) {
32
+ const logs = [];
33
+ const perNetworkLatestBlockNumber = new Map();
34
+ const resolveBlockNumber = async (blockNumberOrTag, network) => {
35
+ if (blockNumberOrTag === undefined) {
36
+ return undefined;
37
+ }
38
+ if (Number.isNaN(blockNumberOrTag)) {
39
+ return undefined;
40
+ }
41
+ if (blockNumberOrTag === "latest") {
42
+ if (perNetworkLatestBlockNumber.has(network.name)) {
43
+ return perNetworkLatestBlockNumber.get(network.name);
44
+ }
45
+ else {
46
+ const blockPromise = network.transport
47
+ .request({
48
+ method: "eth_getBlockByNumber",
49
+ params: ["latest", false],
50
+ })
51
+ .then((block) => {
52
+ if (!block)
53
+ throw new BlockNotFoundError({ blockNumber: "latest" });
54
+ return hexToNumber(block.number);
55
+ })
56
+ .catch((e) => {
57
+ throw new Error(`Unable to fetch "latest" block for network '${network.name}':\n${e.message}`);
58
+ });
59
+ perNetworkLatestBlockNumber.set(network.name, blockPromise);
60
+ return blockPromise;
61
+ }
62
+ }
63
+ return blockNumberOrTag;
64
+ };
65
+ const networks = await Promise.all(Object.entries(config.networks).map(async ([networkName, network]) => {
66
+ const { chainId, transport } = network;
67
+ const defaultChain = Object.values(chains).find((c) => "id" in c ? c.id === chainId : false) ?? chains.mainnet;
68
+ const chain = { ...defaultChain, name: networkName, id: chainId };
69
+ // Note: This can throw.
70
+ const rpcUrls = await getRpcUrlsForClient({ transport, chain });
71
+ rpcUrls.forEach((rpcUrl) => {
72
+ if (isRpcUrlPublic(rpcUrl)) {
73
+ logs.push({
74
+ level: "warn",
75
+ msg: `Network '${networkName}' is using a public RPC URL (${rpcUrl}). Most apps require an RPC URL with a higher rate limit.`,
76
+ });
77
+ }
78
+ });
79
+ if (network.pollingInterval !== undefined &&
80
+ network.pollingInterval < 100) {
81
+ throw new Error(`Invalid 'pollingInterval' for network '${networkName}. Expected 100 milliseconds or greater, got ${network.pollingInterval} milliseconds.`);
82
+ }
83
+ return {
84
+ name: networkName,
85
+ chainId,
86
+ chain,
87
+ transport: network.transport({ chain }),
88
+ maxRequestsPerSecond: network.maxRequestsPerSecond ?? 50,
89
+ pollingInterval: network.pollingInterval ?? 1000,
90
+ finalityBlockCount: getFinalityBlockCount({ chainId }),
91
+ disableCache: network.disableCache ?? false,
92
+ };
93
+ }));
94
+ const sourceNames = new Set();
95
+ for (const source of [
96
+ ...Object.keys(config.contracts ?? {}),
97
+ ...Object.keys(config.accounts ?? {}),
98
+ ...Object.keys(config.blocks ?? {}),
99
+ ]) {
100
+ if (sourceNames.has(source)) {
101
+ throw new Error(`Validation failed: Duplicate source name '${source}' not allowed.`);
102
+ }
103
+ sourceNames.add(source);
104
+ }
105
+ // Validate and build indexing functions
106
+ let indexingFunctionCount = 0;
107
+ const indexingFunctions = {};
108
+ for (const { name: eventName, fn } of rawIndexingFunctions) {
109
+ const eventNameComponents = eventName.includes(".")
110
+ ? eventName.split(".")
111
+ : eventName.split(":");
112
+ const [sourceName] = eventNameComponents;
113
+ if (!sourceName) {
114
+ throw new Error(`Validation failed: Invalid event '${eventName}', expected format '{sourceName}:{eventName}' or '{sourceName}.{functionName}'.`);
115
+ }
116
+ if (eventNameComponents.length === 3) {
117
+ const [, sourceType, fromOrTo] = eventNameComponents;
118
+ if ((sourceType !== "transaction" && sourceType !== "transfer") ||
119
+ (fromOrTo !== "from" && fromOrTo !== "to")) {
120
+ throw new Error(`Validation failed: Invalid event '${eventName}', expected format '{sourceName}:transaction:from', '{sourceName}:transaction:to', '{sourceName}:transfer:from', or '{sourceName}:transfer:to'.`);
121
+ }
122
+ }
123
+ else if (eventNameComponents.length === 2) {
124
+ const [, sourceEventName] = eventNameComponents;
125
+ if (!sourceEventName) {
126
+ throw new Error(`Validation failed: Invalid event '${eventName}', expected format '{sourceName}:{eventName}' or '{sourceName}.{functionName}'.`);
127
+ }
128
+ }
129
+ else {
130
+ throw new Error(`Validation failed: Invalid event '${eventName}', expected format '{sourceName}:{eventName}' or '{sourceName}.{functionName}'.`);
131
+ }
132
+ if (eventName in indexingFunctions) {
133
+ throw new Error(`Validation failed: Multiple indexing functions registered for event '${eventName}'.`);
134
+ }
135
+ // Validate that the indexing function uses a sourceName that is present in the config.
136
+ const matchedSourceName = Object.keys({
137
+ ...(config.contracts ?? {}),
138
+ ...(config.accounts ?? {}),
139
+ ...(config.blocks ?? {}),
140
+ }).find((_sourceName) => _sourceName === sourceName);
141
+ if (!matchedSourceName) {
142
+ throw new Error(`Validation failed: Invalid source name '${sourceName}'. Got '${sourceName}', expected one of [${Array.from(sourceNames)
143
+ .map((n) => `'${n}'`)
144
+ .join(", ")}].`);
145
+ }
146
+ indexingFunctions[eventName] = fn;
147
+ indexingFunctionCount += 1;
148
+ }
149
+ if (indexingFunctionCount === 0) {
150
+ logs.push({ level: "warn", msg: "No indexing functions were registered." });
151
+ }
152
+ // common validation for all sources
153
+ for (const source of [
154
+ ...flattenSources(config.contracts ?? {}),
155
+ ...flattenSources(config.accounts ?? {}),
156
+ ...flattenSources(config.blocks ?? {}),
157
+ ]) {
158
+ if (source.network === null || source.network === undefined) {
159
+ throw new Error(`Validation failed: Network for '${source.name}' is null or undefined. Expected one of [${networks
160
+ .map((n) => `'${n.name}'`)
161
+ .join(", ")}].`);
162
+ }
163
+ const network = networks.find((n) => n.name === source.network);
164
+ if (!network) {
165
+ throw new Error(`Validation failed: Invalid network for '${source.name}'. Got '${source.network}', expected one of [${networks
166
+ .map((n) => `'${n.name}'`)
167
+ .join(", ")}].`);
168
+ }
169
+ const startBlock = await resolveBlockNumber(source.startBlock, network);
170
+ const endBlock = await resolveBlockNumber(source.endBlock, network);
171
+ if (startBlock !== undefined &&
172
+ endBlock !== undefined &&
173
+ endBlock < startBlock) {
174
+ throw new Error(`Validation failed: Start block for '${source.name}' is after end block (${startBlock} > ${endBlock}).`);
175
+ }
176
+ }
177
+ const contractSources = (await Promise.all(flattenSources(config.contracts ?? {}).map(async (source) => {
178
+ const network = networks.find((n) => n.name === source.network);
179
+ // Get indexing function that were registered for this contract
180
+ const registeredLogEvents = [];
181
+ const registeredCallTraceEvents = [];
182
+ for (const eventName of Object.keys(indexingFunctions)) {
183
+ // log event
184
+ if (eventName.includes(":")) {
185
+ const [logContractName, logEventName] = eventName.split(":");
186
+ if (logContractName === source.name && logEventName !== "setup") {
187
+ registeredLogEvents.push(logEventName);
188
+ }
189
+ }
190
+ // trace event
191
+ if (eventName.includes(".")) {
192
+ const [functionContractName, functionName] = eventName.split(".");
193
+ if (functionContractName === source.name) {
194
+ registeredCallTraceEvents.push(functionName);
195
+ }
196
+ }
197
+ }
198
+ // Note: This can probably throw for invalid ABIs. Consider adding explicit ABI validation before this line.
199
+ const abiEvents = buildAbiEvents({ abi: source.abi });
200
+ const abiFunctions = buildAbiFunctions({ abi: source.abi });
201
+ const registeredEventSelectors = [];
202
+ // Validate that the registered log events exist in the abi
203
+ for (const logEvent of registeredLogEvents) {
204
+ const abiEvent = abiEvents.bySafeName[logEvent];
205
+ if (abiEvent === undefined) {
206
+ throw new Error(`Validation failed: Event name for event '${logEvent}' not found in the contract ABI. Got '${logEvent}', expected one of [${Object.keys(abiEvents.bySafeName)
207
+ .map((eventName) => `'${eventName}'`)
208
+ .join(", ")}].`);
209
+ }
210
+ registeredEventSelectors.push(abiEvent.selector);
211
+ }
212
+ const registeredFunctionSelectors = [];
213
+ for (const _function of registeredCallTraceEvents) {
214
+ const abiFunction = abiFunctions.bySafeName[_function];
215
+ if (abiFunction === undefined) {
216
+ throw new Error(`Validation failed: Function name for function '${_function}' not found in the contract ABI. Got '${_function}', expected one of [${Object.keys(abiFunctions.bySafeName)
217
+ .map((eventName) => `'${eventName}'`)
218
+ .join(", ")}].`);
219
+ }
220
+ registeredFunctionSelectors.push(abiFunction.selector);
221
+ }
222
+ const topicsArray = [];
223
+ if (source.filter !== undefined) {
224
+ const eventFilters = Array.isArray(source.filter)
225
+ ? source.filter
226
+ : [source.filter];
227
+ for (const filter of eventFilters) {
228
+ const abiEvent = abiEvents.bySafeName[filter.event];
229
+ if (!abiEvent) {
230
+ throw new Error(`Validation failed: Invalid filter for contract '${source.name}'. Got event name '${filter.event}', expected one of [${Object.keys(abiEvents.bySafeName)
231
+ .map((n) => `'${n}'`)
232
+ .join(", ")}].`);
233
+ }
234
+ }
235
+ topicsArray.push(...buildTopics(source.abi, eventFilters));
236
+ // event selectors that have a filter
237
+ const filteredEventSelectors = topicsArray.map((t) => t.topic0);
238
+ // event selectors that are registered but don't have a filter
239
+ const excludedRegisteredEventSelectors = registeredEventSelectors.filter((s) => filteredEventSelectors.includes(s) === false);
240
+ for (const selector of filteredEventSelectors) {
241
+ if (registeredEventSelectors.includes(selector) === false) {
242
+ throw new Error(`Validation failed: Event selector '${abiEvents.bySelector[selector]?.safeName}' is used in a filter but does not have a corresponding indexing function.`);
243
+ }
244
+ }
245
+ if (excludedRegisteredEventSelectors.length > 0) {
246
+ topicsArray.push({
247
+ topic0: excludedRegisteredEventSelectors,
248
+ topic1: null,
249
+ topic2: null,
250
+ topic3: null,
251
+ });
252
+ }
253
+ }
254
+ else {
255
+ topicsArray.push({
256
+ topic0: registeredEventSelectors,
257
+ topic1: null,
258
+ topic2: null,
259
+ topic3: null,
260
+ });
261
+ }
262
+ const fromBlock = await resolveBlockNumber(source.startBlock, network);
263
+ const toBlock = await resolveBlockNumber(source.endBlock, network);
264
+ const contractMetadata = {
265
+ type: "contract",
266
+ abi: source.abi,
267
+ abiEvents,
268
+ abiFunctions,
269
+ name: source.name,
270
+ network,
271
+ };
272
+ const resolvedAddress = source?.address;
273
+ if (typeof resolvedAddress === "object" &&
274
+ !Array.isArray(resolvedAddress)) {
275
+ // Note that this can throw.
276
+ const logFactory = buildLogFactory({
277
+ chainId: network.chainId,
278
+ ...resolvedAddress,
279
+ });
280
+ const logSources = topicsArray.map((topics) => ({
281
+ ...contractMetadata,
282
+ filter: {
283
+ type: "log",
284
+ chainId: network.chainId,
285
+ address: logFactory,
286
+ topic0: topics.topic0,
287
+ topic1: topics.topic1,
288
+ topic2: topics.topic2,
289
+ topic3: topics.topic3,
290
+ fromBlock,
291
+ toBlock,
292
+ include: defaultLogFilterInclude.concat(source.includeTransactionReceipts
293
+ ? defaultTransactionReceiptInclude
294
+ : []),
295
+ },
296
+ }));
297
+ if (source.includeCallTraces) {
298
+ return [
299
+ ...logSources,
300
+ {
301
+ ...contractMetadata,
302
+ filter: {
303
+ type: "trace",
304
+ chainId: network.chainId,
305
+ fromAddress: undefined,
306
+ toAddress: logFactory,
307
+ callType: "CALL",
308
+ functionSelector: registeredFunctionSelectors,
309
+ includeReverted: false,
310
+ fromBlock,
311
+ toBlock,
312
+ include: defaultTraceFilterInclude.concat(source.includeTransactionReceipts
313
+ ? defaultTransactionReceiptInclude
314
+ : []),
315
+ },
316
+ },
317
+ ];
318
+ }
319
+ return logSources;
320
+ }
321
+ else if (resolvedAddress !== undefined) {
322
+ for (const address of Array.isArray(resolvedAddress)
323
+ ? resolvedAddress
324
+ : [resolvedAddress]) {
325
+ if (!address.startsWith("0x"))
326
+ throw new Error(`Validation failed: Invalid prefix for address '${address}'. Got '${address.slice(0, 2)}', expected '0x'.`);
327
+ if (address.length !== 42)
328
+ throw new Error(`Validation failed: Invalid length for address '${address}'. Got ${address.length}, expected 42 characters.`);
329
+ }
330
+ }
331
+ const validatedAddress = Array.isArray(resolvedAddress)
332
+ ? dedupe(resolvedAddress).map((r) => toLowerCase(r))
333
+ : resolvedAddress !== undefined
334
+ ? toLowerCase(resolvedAddress)
335
+ : undefined;
336
+ const logSources = topicsArray.map((topics) => ({
337
+ ...contractMetadata,
338
+ filter: {
339
+ type: "log",
340
+ chainId: network.chainId,
341
+ address: validatedAddress,
342
+ topic0: topics.topic0,
343
+ topic1: topics.topic1,
344
+ topic2: topics.topic2,
345
+ topic3: topics.topic3,
346
+ fromBlock,
347
+ toBlock,
348
+ include: defaultLogFilterInclude.concat(source.includeTransactionReceipts
349
+ ? defaultTransactionReceiptInclude
350
+ : []),
351
+ },
352
+ }));
353
+ if (source.includeCallTraces) {
354
+ return [
355
+ ...logSources,
356
+ {
357
+ ...contractMetadata,
358
+ filter: {
359
+ type: "trace",
360
+ chainId: network.chainId,
361
+ fromAddress: undefined,
362
+ toAddress: Array.isArray(validatedAddress)
363
+ ? validatedAddress
364
+ : validatedAddress === undefined
365
+ ? undefined
366
+ : [validatedAddress],
367
+ callType: "CALL",
368
+ functionSelector: registeredFunctionSelectors,
369
+ includeReverted: false,
370
+ fromBlock,
371
+ toBlock,
372
+ include: defaultTraceFilterInclude.concat(source.includeTransactionReceipts
373
+ ? defaultTransactionReceiptInclude
374
+ : []),
375
+ },
376
+ },
377
+ ];
378
+ }
379
+ else
380
+ return logSources;
381
+ })))
382
+ .flat() // Remove sources with no registered indexing functions
383
+ .filter((source) => {
384
+ const hasNoRegisteredIndexingFunctions = source.filter.type === "trace"
385
+ ? Array.isArray(source.filter.functionSelector) &&
386
+ source.filter.functionSelector.length === 0
387
+ : Array.isArray(source.filter.topic0) &&
388
+ source.filter.topic0?.length === 0;
389
+ if (hasNoRegisteredIndexingFunctions) {
390
+ logs.push({
391
+ level: "debug",
392
+ msg: `No indexing functions were registered for '${source.name}' ${source.filter.type === "trace" ? "traces" : "logs"}`,
393
+ });
394
+ }
395
+ return hasNoRegisteredIndexingFunctions === false;
396
+ });
397
+ const accountSources = (await Promise.all(flattenSources(config.accounts ?? {}).map(async (source) => {
398
+ const network = networks.find((n) => n.name === source.network);
399
+ const fromBlock = await resolveBlockNumber(source.startBlock, network);
400
+ const toBlock = await resolveBlockNumber(source.endBlock, network);
401
+ const resolvedAddress = source?.address;
402
+ if (resolvedAddress === undefined) {
403
+ throw new Error(`Validation failed: Account '${source.name}' must specify an 'address'.`);
404
+ }
405
+ if (typeof resolvedAddress === "object" &&
406
+ !Array.isArray(resolvedAddress)) {
407
+ // Note that this can throw.
408
+ const logFactory = buildLogFactory({
409
+ chainId: network.chainId,
410
+ ...resolvedAddress,
411
+ });
412
+ return [
413
+ {
414
+ type: "account",
415
+ name: source.name,
416
+ network,
417
+ filter: {
418
+ type: "transaction",
419
+ chainId: network.chainId,
420
+ fromAddress: undefined,
421
+ toAddress: logFactory,
422
+ includeReverted: false,
423
+ fromBlock,
424
+ toBlock,
425
+ include: defaultTransactionFilterInclude,
426
+ },
427
+ },
428
+ {
429
+ type: "account",
430
+ name: source.name,
431
+ network,
432
+ filter: {
433
+ type: "transaction",
434
+ chainId: network.chainId,
435
+ fromAddress: logFactory,
436
+ toAddress: undefined,
437
+ includeReverted: false,
438
+ fromBlock,
439
+ toBlock,
440
+ include: defaultTransactionFilterInclude,
441
+ },
442
+ },
443
+ {
444
+ type: "account",
445
+ name: source.name,
446
+ network,
447
+ filter: {
448
+ type: "transfer",
449
+ chainId: network.chainId,
450
+ fromAddress: undefined,
451
+ toAddress: logFactory,
452
+ includeReverted: false,
453
+ fromBlock,
454
+ toBlock,
455
+ include: defaultTransferFilterInclude.concat(source.includeTransactionReceipts
456
+ ? defaultTransactionReceiptInclude
457
+ : []),
458
+ },
459
+ },
460
+ {
461
+ type: "account",
462
+ name: source.name,
463
+ network,
464
+ filter: {
465
+ type: "transfer",
466
+ chainId: network.chainId,
467
+ fromAddress: logFactory,
468
+ toAddress: undefined,
469
+ includeReverted: false,
470
+ fromBlock,
471
+ toBlock,
472
+ include: defaultTransferFilterInclude.concat(source.includeTransactionReceipts
473
+ ? defaultTransactionReceiptInclude
474
+ : []),
475
+ },
476
+ },
477
+ ];
478
+ }
479
+ for (const address of Array.isArray(resolvedAddress)
480
+ ? resolvedAddress
481
+ : [resolvedAddress]) {
482
+ if (!address.startsWith("0x"))
483
+ throw new Error(`Validation failed: Invalid prefix for address '${address}'. Got '${address.slice(0, 2)}', expected '0x'.`);
484
+ if (address.length !== 42)
485
+ throw new Error(`Validation failed: Invalid length for address '${address}'. Got ${address.length}, expected 42 characters.`);
486
+ }
487
+ const validatedAddress = Array.isArray(resolvedAddress)
488
+ ? dedupe(resolvedAddress).map((r) => toLowerCase(r))
489
+ : resolvedAddress !== undefined
490
+ ? toLowerCase(resolvedAddress)
491
+ : undefined;
492
+ return [
493
+ {
494
+ type: "account",
495
+ name: source.name,
496
+ network,
497
+ filter: {
498
+ type: "transaction",
499
+ chainId: network.chainId,
500
+ fromAddress: undefined,
501
+ toAddress: validatedAddress,
502
+ includeReverted: false,
503
+ fromBlock,
504
+ toBlock,
505
+ include: defaultTransactionFilterInclude,
506
+ },
507
+ },
508
+ {
509
+ type: "account",
510
+ name: source.name,
511
+ network,
512
+ filter: {
513
+ type: "transaction",
514
+ chainId: network.chainId,
515
+ fromAddress: validatedAddress,
516
+ toAddress: undefined,
517
+ includeReverted: false,
518
+ fromBlock,
519
+ toBlock,
520
+ include: defaultTransactionFilterInclude,
521
+ },
522
+ },
523
+ {
524
+ type: "account",
525
+ name: source.name,
526
+ network,
527
+ filter: {
528
+ type: "transfer",
529
+ chainId: network.chainId,
530
+ fromAddress: undefined,
531
+ toAddress: validatedAddress,
532
+ includeReverted: false,
533
+ fromBlock,
534
+ toBlock,
535
+ include: defaultTransferFilterInclude.concat(source.includeTransactionReceipts
536
+ ? defaultTransactionReceiptInclude
537
+ : []),
538
+ },
539
+ },
540
+ {
541
+ type: "account",
542
+ name: source.name,
543
+ network,
544
+ filter: {
545
+ type: "transfer",
546
+ chainId: network.chainId,
547
+ fromAddress: validatedAddress,
548
+ toAddress: undefined,
549
+ includeReverted: false,
550
+ fromBlock,
551
+ toBlock,
552
+ include: defaultTransferFilterInclude.concat(source.includeTransactionReceipts
553
+ ? defaultTransactionReceiptInclude
554
+ : []),
555
+ },
556
+ },
557
+ ];
558
+ })))
559
+ .flat()
560
+ .filter((source) => {
561
+ const eventName = source.filter.type === "transaction"
562
+ ? source.filter.fromAddress === undefined
563
+ ? `${source.name}:transaction:to`
564
+ : `${source.name}:transaction:from`
565
+ : source.filter.fromAddress === undefined
566
+ ? `${source.name}:transfer:to`
567
+ : `${source.name}:transfer:from`;
568
+ const hasRegisteredIndexingFunction = indexingFunctions[eventName] !== undefined;
569
+ if (!hasRegisteredIndexingFunction) {
570
+ logs.push({
571
+ level: "debug",
572
+ msg: `No indexing functions were registered for '${eventName}'`,
573
+ });
574
+ }
575
+ return hasRegisteredIndexingFunction;
576
+ });
577
+ const blockSources = (await Promise.all(flattenSources(config.blocks ?? {}).map(async (source) => {
578
+ const network = networks.find((n) => n.name === source.network);
579
+ const intervalMaybeNan = source.interval ?? 1;
580
+ const interval = Number.isNaN(intervalMaybeNan) ? 0 : intervalMaybeNan;
581
+ if (!Number.isInteger(interval) || interval === 0) {
582
+ throw new Error(`Validation failed: Invalid interval for block source '${source.name}'. Got ${interval}, expected a non-zero integer.`);
583
+ }
584
+ const fromBlock = await resolveBlockNumber(source.startBlock, network);
585
+ const toBlock = await resolveBlockNumber(source.endBlock, network);
586
+ return {
587
+ type: "block",
588
+ name: source.name,
589
+ network,
590
+ filter: {
591
+ type: "block",
592
+ chainId: network.chainId,
593
+ interval: interval,
594
+ offset: (fromBlock ?? 0) % interval,
595
+ fromBlock,
596
+ toBlock,
597
+ include: defaultBlockFilterInclude,
598
+ },
599
+ };
600
+ })))
601
+ .flat()
602
+ .filter((blockSource) => {
603
+ const hasRegisteredIndexingFunction = indexingFunctions[`${blockSource.name}:block`] !== undefined;
604
+ if (!hasRegisteredIndexingFunction) {
605
+ logs.push({
606
+ level: "debug",
607
+ msg: `No indexing functions were registered for '${blockSource.name}' blocks`,
608
+ });
609
+ }
610
+ return hasRegisteredIndexingFunction;
611
+ });
612
+ const sources = [...contractSources, ...accountSources, ...blockSources];
613
+ // Filter out any networks that don't have any sources registered.
614
+ const networksWithSources = networks.filter((network) => {
615
+ const hasSources = sources.some((source) => source.network.name === network.name);
616
+ if (!hasSources) {
617
+ logs.push({
618
+ level: "warn",
619
+ msg: `No sources registered for network '${network.name}'`,
620
+ });
621
+ }
622
+ return hasSources;
623
+ });
624
+ if (Object.keys(indexingFunctions).length === 0) {
625
+ throw new Error("Validation failed: Found 0 registered indexing functions.");
626
+ }
627
+ return {
628
+ networks: networksWithSources,
629
+ sources,
630
+ indexingFunctions,
631
+ logs,
632
+ };
633
+ }
634
+ export async function safeBuildConfigAndIndexingFunctions({ config, rawIndexingFunctions, }) {
635
+ try {
636
+ const result = await buildConfigAndIndexingFunctions({
637
+ config,
638
+ rawIndexingFunctions,
639
+ });
640
+ return {
641
+ status: "success",
642
+ sources: result.sources,
643
+ networks: result.networks,
644
+ indexingFunctions: result.indexingFunctions,
645
+ logs: result.logs,
646
+ };
647
+ }
648
+ catch (_error) {
649
+ const buildError = new BuildError(_error.message);
650
+ buildError.stack = undefined;
651
+ return { status: "error", error: buildError };
652
+ }
653
+ }
654
+ //# sourceMappingURL=configAndIndexingFunctions.js.map