ponder 0.9.5-debug.1 → 0.9.5
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.
- package/dist/{types/bin → bin}/ponder.d.ts +6 -5
- package/dist/bin/ponder.js +12933 -0
- package/dist/bin/ponder.js.map +1 -0
- package/dist/chunk-K2TLRLX3.js +163 -0
- package/dist/chunk-K2TLRLX3.js.map +1 -0
- package/dist/chunk-LHCA5XFV.js +257 -0
- package/dist/chunk-LHCA5XFV.js.map +1 -0
- package/dist/{types/drizzle → drizzle}/onchain.d.ts +96 -49
- package/dist/drizzle/onchain.js +19 -0
- package/dist/drizzle/onchain.js.map +1 -0
- package/dist/index.d.ts +819 -0
- package/dist/index.js +2217 -0
- package/dist/index.js.map +1 -0
- package/dist/utils-ceNucOJb.d.ts +14 -0
- package/package.json +17 -17
- package/src/bin/commands/dev.ts +1 -1
- package/src/bin/ponder.ts +1 -1
- package/src/build/configAndIndexingFunctions.ts +1 -1
- package/src/build/factory.ts +1 -1
- package/src/client/index.ts +1 -1
- package/src/indexing-store/historical.ts +1 -1
- package/src/indexing-store/realtime.ts +1 -1
- package/src/internal/telemetry.ts +1 -1
- package/src/sync/fragments.ts +1 -1
- package/src/sync-realtime/index.ts +1 -1
- package/src/utils/generators.ts +1 -1
- package/src/utils/mutex.ts +1 -1
- package/src/utils/requestQueue.ts +1 -1
- package/CHANGELOG.md +0 -2201
- package/dist/esm/bin/commands/codegen.js +0 -37
- package/dist/esm/bin/commands/codegen.js.map +0 -1
- package/dist/esm/bin/commands/dev.js +0 -242
- package/dist/esm/bin/commands/dev.js.map +0 -1
- package/dist/esm/bin/commands/list.js +0 -103
- package/dist/esm/bin/commands/list.js.map +0 -1
- package/dist/esm/bin/commands/serve.js +0 -123
- package/dist/esm/bin/commands/serve.js.map +0 -1
- package/dist/esm/bin/commands/start.js +0 -136
- package/dist/esm/bin/commands/start.js.map +0 -1
- package/dist/esm/bin/ponder.js +0 -118
- package/dist/esm/bin/ponder.js.map +0 -1
- package/dist/esm/bin/utils/codegen.js +0 -26
- package/dist/esm/bin/utils/codegen.js.map +0 -1
- package/dist/esm/bin/utils/exit.js +0 -69
- package/dist/esm/bin/utils/exit.js.map +0 -1
- package/dist/esm/bin/utils/run.js +0 -247
- package/dist/esm/bin/utils/run.js.map +0 -1
- package/dist/esm/bin/utils/runServer.js +0 -8
- package/dist/esm/bin/utils/runServer.js.map +0 -1
- package/dist/esm/build/configAndIndexingFunctions.js +0 -654
- package/dist/esm/build/configAndIndexingFunctions.js.map +0 -1
- package/dist/esm/build/factory.js +0 -43
- package/dist/esm/build/factory.js.map +0 -1
- package/dist/esm/build/index.js +0 -431
- package/dist/esm/build/index.js.map +0 -1
- package/dist/esm/build/plugin.js +0 -43
- package/dist/esm/build/plugin.js.map +0 -1
- package/dist/esm/build/pre.js +0 -112
- package/dist/esm/build/pre.js.map +0 -1
- package/dist/esm/build/schema.js +0 -89
- package/dist/esm/build/schema.js.map +0 -1
- package/dist/esm/build/stacktrace.js +0 -137
- package/dist/esm/build/stacktrace.js.map +0 -1
- package/dist/esm/client/index.js +0 -124
- package/dist/esm/client/index.js.map +0 -1
- package/dist/esm/client/validate.js +0 -1151
- package/dist/esm/client/validate.js.map +0 -1
- package/dist/esm/config/address.js +0 -2
- package/dist/esm/config/address.js.map +0 -1
- package/dist/esm/config/eventFilter.js +0 -2
- package/dist/esm/config/eventFilter.js.map +0 -1
- package/dist/esm/config/index.js +0 -2
- package/dist/esm/config/index.js.map +0 -1
- package/dist/esm/config/networks.js +0 -120
- package/dist/esm/config/networks.js.map +0 -1
- package/dist/esm/config/utilityTypes.js +0 -2
- package/dist/esm/config/utilityTypes.js.map +0 -1
- package/dist/esm/database/index.js +0 -914
- package/dist/esm/database/index.js.map +0 -1
- package/dist/esm/drizzle/bigint.js +0 -36
- package/dist/esm/drizzle/bigint.js.map +0 -1
- package/dist/esm/drizzle/hex.js +0 -38
- package/dist/esm/drizzle/hex.js.map +0 -1
- package/dist/esm/drizzle/index.js +0 -43
- package/dist/esm/drizzle/index.js.map +0 -1
- package/dist/esm/drizzle/kit/index.js +0 -658
- package/dist/esm/drizzle/kit/index.js.map +0 -1
- package/dist/esm/drizzle/onchain.js +0 -102
- package/dist/esm/drizzle/onchain.js.map +0 -1
- package/dist/esm/graphql/index.js +0 -704
- package/dist/esm/graphql/index.js.map +0 -1
- package/dist/esm/graphql/json.js +0 -42
- package/dist/esm/graphql/json.js.map +0 -1
- package/dist/esm/graphql/middleware.js +0 -80
- package/dist/esm/graphql/middleware.js.map +0 -1
- package/dist/esm/index.js +0 -9
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/indexing/addStackTrace.js +0 -54
- package/dist/esm/indexing/addStackTrace.js.map +0 -1
- package/dist/esm/indexing/index.js +0 -10
- package/dist/esm/indexing/index.js.map +0 -1
- package/dist/esm/indexing/ponderActions.js +0 -60
- package/dist/esm/indexing/ponderActions.js.map +0 -1
- package/dist/esm/indexing/service.js +0 -312
- package/dist/esm/indexing/service.js.map +0 -1
- package/dist/esm/indexing-store/historical.js +0 -591
- package/dist/esm/indexing-store/historical.js.map +0 -1
- package/dist/esm/indexing-store/index.js +0 -19
- package/dist/esm/indexing-store/index.js.map +0 -1
- package/dist/esm/indexing-store/metadata.js +0 -46
- package/dist/esm/indexing-store/metadata.js.map +0 -1
- package/dist/esm/indexing-store/realtime.js +0 -295
- package/dist/esm/indexing-store/realtime.js.map +0 -1
- package/dist/esm/internal/common.js +0 -2
- package/dist/esm/internal/common.js.map +0 -1
- package/dist/esm/internal/errors.js +0 -175
- package/dist/esm/internal/errors.js.map +0 -1
- package/dist/esm/internal/logger.js +0 -96
- package/dist/esm/internal/logger.js.map +0 -1
- package/dist/esm/internal/metrics.js +0 -569
- package/dist/esm/internal/metrics.js.map +0 -1
- package/dist/esm/internal/options.js +0 -69
- package/dist/esm/internal/options.js.map +0 -1
- package/dist/esm/internal/shutdown.js +0 -18
- package/dist/esm/internal/shutdown.js.map +0 -1
- package/dist/esm/internal/telemetry.js +0 -199
- package/dist/esm/internal/telemetry.js.map +0 -1
- package/dist/esm/internal/types.js +0 -2
- package/dist/esm/internal/types.js.map +0 -1
- package/dist/esm/server/error.js +0 -55
- package/dist/esm/server/error.js.map +0 -1
- package/dist/esm/server/index.js +0 -107
- package/dist/esm/server/index.js.map +0 -1
- package/dist/esm/sync/abi.js +0 -67
- package/dist/esm/sync/abi.js.map +0 -1
- package/dist/esm/sync/events.js +0 -607
- package/dist/esm/sync/events.js.map +0 -1
- package/dist/esm/sync/filter.js +0 -356
- package/dist/esm/sync/filter.js.map +0 -1
- package/dist/esm/sync/fragments.js +0 -300
- package/dist/esm/sync/fragments.js.map +0 -1
- package/dist/esm/sync/index.js +0 -1001
- package/dist/esm/sync/index.js.map +0 -1
- package/dist/esm/sync/transport.js +0 -94
- package/dist/esm/sync/transport.js.map +0 -1
- package/dist/esm/sync-historical/index.js +0 -590
- package/dist/esm/sync-historical/index.js.map +0 -1
- package/dist/esm/sync-realtime/bloom.js +0 -75
- package/dist/esm/sync-realtime/bloom.js.map +0 -1
- package/dist/esm/sync-realtime/index.js +0 -794
- package/dist/esm/sync-realtime/index.js.map +0 -1
- package/dist/esm/sync-store/encoding.js +0 -157
- package/dist/esm/sync-store/encoding.js.map +0 -1
- package/dist/esm/sync-store/index.js +0 -727
- package/dist/esm/sync-store/index.js.map +0 -1
- package/dist/esm/sync-store/migrations.js +0 -1186
- package/dist/esm/sync-store/migrations.js.map +0 -1
- package/dist/esm/types/db.js +0 -2
- package/dist/esm/types/db.js.map +0 -1
- package/dist/esm/types/eth.js +0 -2
- package/dist/esm/types/eth.js.map +0 -1
- package/dist/esm/types/sync.js +0 -2
- package/dist/esm/types/sync.js.map +0 -1
- package/dist/esm/types/utils.js +0 -2
- package/dist/esm/types/utils.js.map +0 -1
- package/dist/esm/types/virtual.js +0 -2
- package/dist/esm/types/virtual.js.map +0 -1
- package/dist/esm/ui/ProgressBar.js +0 -11
- package/dist/esm/ui/ProgressBar.js.map +0 -1
- package/dist/esm/ui/Table.js +0 -50
- package/dist/esm/ui/Table.js.map +0 -1
- package/dist/esm/ui/app.js +0 -113
- package/dist/esm/ui/app.js.map +0 -1
- package/dist/esm/ui/graphiql.html.js +0 -59
- package/dist/esm/ui/graphiql.html.js.map +0 -1
- package/dist/esm/ui/index.js +0 -21
- package/dist/esm/ui/index.js.map +0 -1
- package/dist/esm/utils/bigint.js +0 -37
- package/dist/esm/utils/bigint.js.map +0 -1
- package/dist/esm/utils/chains.js +0 -3
- package/dist/esm/utils/chains.js.map +0 -1
- package/dist/esm/utils/checkpoint.js +0 -114
- package/dist/esm/utils/checkpoint.js.map +0 -1
- package/dist/esm/utils/chunk.js +0 -8
- package/dist/esm/utils/chunk.js.map +0 -1
- package/dist/esm/utils/date.js +0 -27
- package/dist/esm/utils/date.js.map +0 -1
- package/dist/esm/utils/debug.js +0 -2
- package/dist/esm/utils/debug.js.map +0 -1
- package/dist/esm/utils/dedupe.js +0 -33
- package/dist/esm/utils/dedupe.js.map +0 -1
- package/dist/esm/utils/duplicates.js +0 -19
- package/dist/esm/utils/duplicates.js.map +0 -1
- package/dist/esm/utils/estimate.js +0 -6
- package/dist/esm/utils/estimate.js.map +0 -1
- package/dist/esm/utils/extend.js +0 -28
- package/dist/esm/utils/extend.js.map +0 -1
- package/dist/esm/utils/format.js +0 -20
- package/dist/esm/utils/format.js.map +0 -1
- package/dist/esm/utils/generators.js +0 -77
- package/dist/esm/utils/generators.js.map +0 -1
- package/dist/esm/utils/hash.js +0 -11
- package/dist/esm/utils/hash.js.map +0 -1
- package/dist/esm/utils/interval.js +0 -171
- package/dist/esm/utils/interval.js.map +0 -1
- package/dist/esm/utils/lowercase.js +0 -7
- package/dist/esm/utils/lowercase.js.map +0 -1
- package/dist/esm/utils/mutex.js +0 -25
- package/dist/esm/utils/mutex.js.map +0 -1
- package/dist/esm/utils/never.js +0 -4
- package/dist/esm/utils/never.js.map +0 -1
- package/dist/esm/utils/offset.js +0 -73
- package/dist/esm/utils/offset.js.map +0 -1
- package/dist/esm/utils/order.js +0 -18
- package/dist/esm/utils/order.js.map +0 -1
- package/dist/esm/utils/partition.js +0 -37
- package/dist/esm/utils/partition.js.map +0 -1
- package/dist/esm/utils/pg.js +0 -126
- package/dist/esm/utils/pg.js.map +0 -1
- package/dist/esm/utils/pglite.js +0 -80
- package/dist/esm/utils/pglite.js.map +0 -1
- package/dist/esm/utils/port.js +0 -30
- package/dist/esm/utils/port.js.map +0 -1
- package/dist/esm/utils/print.js +0 -23
- package/dist/esm/utils/print.js.map +0 -1
- package/dist/esm/utils/promiseWithResolvers.js +0 -13
- package/dist/esm/utils/promiseWithResolvers.js.map +0 -1
- package/dist/esm/utils/queue.js +0 -145
- package/dist/esm/utils/queue.js.map +0 -1
- package/dist/esm/utils/range.js +0 -8
- package/dist/esm/utils/range.js.map +0 -1
- package/dist/esm/utils/requestQueue.js +0 -127
- package/dist/esm/utils/requestQueue.js.map +0 -1
- package/dist/esm/utils/result.js +0 -10
- package/dist/esm/utils/result.js.map +0 -1
- package/dist/esm/utils/rpc.js +0 -202
- package/dist/esm/utils/rpc.js.map +0 -1
- package/dist/esm/utils/serialize.js +0 -23
- package/dist/esm/utils/serialize.js.map +0 -1
- package/dist/esm/utils/timer.js +0 -17
- package/dist/esm/utils/timer.js.map +0 -1
- package/dist/esm/utils/wait.js +0 -8
- package/dist/esm/utils/wait.js.map +0 -1
- package/dist/esm/utils/zipper.js +0 -67
- package/dist/esm/utils/zipper.js.map +0 -1
- package/dist/types/bin/commands/codegen.d.ts +0 -5
- package/dist/types/bin/commands/codegen.d.ts.map +0 -1
- package/dist/types/bin/commands/dev.d.ts +0 -5
- package/dist/types/bin/commands/dev.d.ts.map +0 -1
- package/dist/types/bin/commands/list.d.ts +0 -5
- package/dist/types/bin/commands/list.d.ts.map +0 -1
- package/dist/types/bin/commands/serve.d.ts +0 -5
- package/dist/types/bin/commands/serve.d.ts.map +0 -1
- package/dist/types/bin/commands/start.d.ts +0 -5
- package/dist/types/bin/commands/start.d.ts.map +0 -1
- package/dist/types/bin/ponder.d.ts.map +0 -1
- package/dist/types/bin/utils/codegen.d.ts +0 -6
- package/dist/types/bin/utils/codegen.d.ts.map +0 -1
- package/dist/types/bin/utils/exit.d.ts +0 -9
- package/dist/types/bin/utils/exit.d.ts.map +0 -1
- package/dist/types/bin/utils/run.d.ts +0 -14
- package/dist/types/bin/utils/run.d.ts.map +0 -1
- package/dist/types/bin/utils/runServer.d.ts +0 -12
- package/dist/types/bin/utils/runServer.d.ts.map +0 -1
- package/dist/types/build/configAndIndexingFunctions.d.ts +0 -37
- package/dist/types/build/configAndIndexingFunctions.d.ts.map +0 -1
- package/dist/types/build/factory.d.ts +0 -10
- package/dist/types/build/factory.d.ts.map +0 -1
- package/dist/types/build/index.d.ts +0 -70
- package/dist/types/build/index.d.ts.map +0 -1
- package/dist/types/build/plugin.d.ts +0 -4
- package/dist/types/build/plugin.d.ts.map +0 -1
- package/dist/types/build/pre.d.ts +0 -35
- package/dist/types/build/pre.d.ts.map +0 -1
- package/dist/types/build/schema.d.ts +0 -18
- package/dist/types/build/schema.d.ts.map +0 -1
- package/dist/types/build/stacktrace.d.ts +0 -13
- package/dist/types/build/stacktrace.d.ts.map +0 -1
- package/dist/types/client/index.d.ts +0 -27
- package/dist/types/client/index.d.ts.map +0 -1
- package/dist/types/client/validate.d.ts +0 -2
- package/dist/types/client/validate.d.ts.map +0 -1
- package/dist/types/config/address.d.ts +0 -14
- package/dist/types/config/address.d.ts.map +0 -1
- package/dist/types/config/eventFilter.d.ts +0 -18
- package/dist/types/config/eventFilter.d.ts.map +0 -1
- package/dist/types/config/index.d.ts +0 -143
- package/dist/types/config/index.d.ts.map +0 -1
- package/dist/types/config/networks.d.ts +0 -30
- package/dist/types/config/networks.d.ts.map +0 -1
- package/dist/types/config/utilityTypes.d.ts +0 -43
- package/dist/types/config/utilityTypes.d.ts.map +0 -1
- package/dist/types/database/index.d.ts +0 -91
- package/dist/types/database/index.d.ts.map +0 -1
- package/dist/types/drizzle/bigint.d.ts +0 -25
- package/dist/types/drizzle/bigint.d.ts.map +0 -1
- package/dist/types/drizzle/hex.d.ts +0 -25
- package/dist/types/drizzle/hex.d.ts.map +0 -1
- package/dist/types/drizzle/index.d.ts +0 -14
- package/dist/types/drizzle/index.d.ts.map +0 -1
- package/dist/types/drizzle/kit/index.d.ts +0 -49
- package/dist/types/drizzle/kit/index.d.ts.map +0 -1
- package/dist/types/drizzle/onchain.d.ts.map +0 -1
- package/dist/types/graphql/index.d.ts +0 -14
- package/dist/types/graphql/index.d.ts.map +0 -1
- package/dist/types/graphql/json.d.ts +0 -3
- package/dist/types/graphql/json.d.ts.map +0 -1
- package/dist/types/graphql/middleware.d.ts +0 -29
- package/dist/types/graphql/middleware.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -18
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/indexing/addStackTrace.d.ts +0 -3
- package/dist/types/indexing/addStackTrace.d.ts.map +0 -1
- package/dist/types/indexing/index.d.ts +0 -575
- package/dist/types/indexing/index.d.ts.map +0 -1
- package/dist/types/indexing/ponderActions.d.ts +0 -47
- package/dist/types/indexing/ponderActions.d.ts.map +0 -1
- package/dist/types/indexing/service.d.ts +0 -73
- package/dist/types/indexing/service.d.ts.map +0 -1
- package/dist/types/indexing-store/historical.d.ts +0 -19
- package/dist/types/indexing-store/historical.d.ts.map +0 -1
- package/dist/types/indexing-store/index.d.ts +0 -10
- package/dist/types/indexing-store/index.d.ts.map +0 -1
- package/dist/types/indexing-store/metadata.d.ts +0 -10
- package/dist/types/indexing-store/metadata.d.ts.map +0 -1
- package/dist/types/indexing-store/realtime.d.ts +0 -10
- package/dist/types/indexing-store/realtime.d.ts.map +0 -1
- package/dist/types/internal/common.d.ts +0 -13
- package/dist/types/internal/common.d.ts.map +0 -1
- package/dist/types/internal/errors.d.ts +0 -55
- package/dist/types/internal/errors.d.ts.map +0 -1
- package/dist/types/internal/logger.d.ts +0 -26
- package/dist/types/internal/logger.d.ts.map +0 -1
- package/dist/types/internal/metrics.d.ts +0 -77
- package/dist/types/internal/metrics.d.ts.map +0 -1
- package/dist/types/internal/options.d.ts +0 -59
- package/dist/types/internal/options.d.ts.map +0 -1
- package/dist/types/internal/shutdown.d.ts +0 -8
- package/dist/types/internal/shutdown.d.ts.map +0 -1
- package/dist/types/internal/telemetry.d.ts +0 -43
- package/dist/types/internal/telemetry.d.ts.map +0 -1
- package/dist/types/internal/types.d.ts +0 -328
- package/dist/types/internal/types.d.ts.map +0 -1
- package/dist/types/server/error.d.ts +0 -5
- package/dist/types/server/error.d.ts.map +0 -1
- package/dist/types/server/index.d.ts +0 -13
- package/dist/types/server/index.d.ts.map +0 -1
- package/dist/types/sync/abi.d.ts +0 -54
- package/dist/types/sync/abi.d.ts.map +0 -1
- package/dist/types/sync/events.d.ts +0 -24
- package/dist/types/sync/events.d.ts.map +0 -1
- package/dist/types/sync/filter.d.ts +0 -71
- package/dist/types/sync/filter.d.ts.map +0 -1
- package/dist/types/sync/fragments.d.ts +0 -21
- package/dist/types/sync/fragments.d.ts.map +0 -1
- package/dist/types/sync/index.d.ts +0 -112
- package/dist/types/sync/index.d.ts.map +0 -1
- package/dist/types/sync/transport.d.ts +0 -8
- package/dist/types/sync/transport.d.ts.map +0 -1
- package/dist/types/sync-historical/index.d.ts +0 -28
- package/dist/types/sync-historical/index.d.ts.map +0 -1
- package/dist/types/sync-realtime/bloom.d.ts +0 -19
- package/dist/types/sync-realtime/bloom.d.ts.map +0 -1
- package/dist/types/sync-realtime/index.d.ts +0 -48
- package/dist/types/sync-realtime/index.d.ts.map +0 -1
- package/dist/types/sync-store/encoding.d.ts +0 -151
- package/dist/types/sync-store/encoding.d.ts.map +0 -1
- package/dist/types/sync-store/index.d.ts +0 -104
- package/dist/types/sync-store/index.d.ts.map +0 -1
- package/dist/types/sync-store/migrations.d.ts +0 -13
- package/dist/types/sync-store/migrations.d.ts.map +0 -1
- package/dist/types/types/db.d.ts +0 -213
- package/dist/types/types/db.d.ts.map +0 -1
- package/dist/types/types/eth.d.ts +0 -196
- package/dist/types/types/eth.d.ts.map +0 -1
- package/dist/types/types/sync.d.ts +0 -15
- package/dist/types/types/sync.d.ts.map +0 -1
- package/dist/types/types/utils.d.ts +0 -22
- package/dist/types/types/utils.d.ts.map +0 -1
- package/dist/types/types/virtual.d.ts +0 -95
- package/dist/types/types/virtual.d.ts.map +0 -1
- package/dist/types/ui/ProgressBar.d.ts +0 -7
- package/dist/types/ui/ProgressBar.d.ts.map +0 -1
- package/dist/types/ui/Table.d.ts +0 -24
- package/dist/types/ui/Table.d.ts.map +0 -1
- package/dist/types/ui/app.d.ts +0 -14
- package/dist/types/ui/app.d.ts.map +0 -1
- package/dist/types/ui/graphiql.html.d.ts +0 -2
- package/dist/types/ui/graphiql.html.d.ts.map +0 -1
- package/dist/types/ui/index.d.ts +0 -5
- package/dist/types/ui/index.d.ts.map +0 -1
- package/dist/types/utils/bigint.d.ts +0 -15
- package/dist/types/utils/bigint.d.ts.map +0 -1
- package/dist/types/utils/chains.d.ts +0 -3
- package/dist/types/utils/chains.d.ts.map +0 -1
- package/dist/types/utils/checkpoint.d.ts +0 -40
- package/dist/types/utils/checkpoint.d.ts.map +0 -1
- package/dist/types/utils/chunk.d.ts +0 -2
- package/dist/types/utils/chunk.d.ts.map +0 -1
- package/dist/types/utils/date.d.ts +0 -7
- package/dist/types/utils/date.d.ts.map +0 -1
- package/dist/types/utils/debug.d.ts +0 -105
- package/dist/types/utils/debug.d.ts.map +0 -1
- package/dist/types/utils/dedupe.d.ts +0 -20
- package/dist/types/utils/dedupe.d.ts.map +0 -1
- package/dist/types/utils/duplicates.d.ts +0 -7
- package/dist/types/utils/duplicates.d.ts.map +0 -1
- package/dist/types/utils/estimate.d.ts +0 -11
- package/dist/types/utils/estimate.d.ts.map +0 -1
- package/dist/types/utils/extend.d.ts +0 -13
- package/dist/types/utils/extend.d.ts.map +0 -1
- package/dist/types/utils/format.d.ts +0 -3
- package/dist/types/utils/format.d.ts.map +0 -1
- package/dist/types/utils/generators.d.ts +0 -23
- package/dist/types/utils/generators.d.ts.map +0 -1
- package/dist/types/utils/hash.d.ts +0 -11
- package/dist/types/utils/hash.d.ts.map +0 -1
- package/dist/types/utils/interval.d.ts +0 -53
- package/dist/types/utils/interval.d.ts.map +0 -1
- package/dist/types/utils/lowercase.d.ts +0 -5
- package/dist/types/utils/lowercase.d.ts.map +0 -1
- package/dist/types/utils/mutex.d.ts +0 -8
- package/dist/types/utils/mutex.d.ts.map +0 -1
- package/dist/types/utils/never.d.ts +0 -2
- package/dist/types/utils/never.d.ts.map +0 -1
- package/dist/types/utils/offset.d.ts +0 -3
- package/dist/types/utils/offset.d.ts.map +0 -1
- package/dist/types/utils/order.d.ts +0 -2
- package/dist/types/utils/order.d.ts.map +0 -1
- package/dist/types/utils/partition.d.ts +0 -22
- package/dist/types/utils/partition.d.ts.map +0 -1
- package/dist/types/utils/pg.d.ts +0 -5
- package/dist/types/utils/pg.d.ts.map +0 -1
- package/dist/types/utils/pglite.d.ts +0 -25
- package/dist/types/utils/pglite.d.ts.map +0 -1
- package/dist/types/utils/port.d.ts +0 -5
- package/dist/types/utils/port.d.ts.map +0 -1
- package/dist/types/utils/print.d.ts +0 -2
- package/dist/types/utils/print.d.ts.map +0 -1
- package/dist/types/utils/promiseWithResolvers.d.ts +0 -10
- package/dist/types/utils/promiseWithResolvers.d.ts.map +0 -1
- package/dist/types/utils/queue.d.ts +0 -33
- package/dist/types/utils/queue.d.ts.map +0 -1
- package/dist/types/utils/range.d.ts +0 -8
- package/dist/types/utils/range.d.ts.map +0 -1
- package/dist/types/utils/requestQueue.d.ts +0 -21
- package/dist/types/utils/requestQueue.d.ts.map +0 -1
- package/dist/types/utils/result.d.ts +0 -17
- package/dist/types/utils/result.d.ts.map +0 -1
- package/dist/types/utils/rpc.d.ts +0 -57
- package/dist/types/utils/rpc.d.ts.map +0 -1
- package/dist/types/utils/serialize.d.ts +0 -19
- package/dist/types/utils/serialize.d.ts.map +0 -1
- package/dist/types/utils/timer.d.ts +0 -11
- package/dist/types/utils/timer.d.ts.map +0 -1
- package/dist/types/utils/wait.d.ts +0 -6
- package/dist/types/utils/wait.d.ts.map +0 -1
- package/dist/types/utils/zipper.d.ts +0 -36
- package/dist/types/utils/zipper.d.ts.map +0 -1
- package/src/utils/dedupe.ts +0 -40
- package/src/utils/promiseWithResolvers.ts +0 -20
- package/src/utils/queue.ts +0 -250
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,654 +0,0 @@
|
|
|
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
|