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
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
// src/drizzle/onchain.ts
|
|
2
|
+
import {
|
|
3
|
+
Table
|
|
4
|
+
} from "drizzle-orm";
|
|
5
|
+
import {
|
|
6
|
+
PgEnumColumnBuilder,
|
|
7
|
+
PgTable,
|
|
8
|
+
primaryKey as drizzlePrimaryKey
|
|
9
|
+
} from "drizzle-orm/pg-core";
|
|
10
|
+
import {
|
|
11
|
+
getPgColumnBuilders
|
|
12
|
+
} from "drizzle-orm/pg-core/columns/all";
|
|
13
|
+
|
|
14
|
+
// src/drizzle/bigint.ts
|
|
15
|
+
import {
|
|
16
|
+
entityKind
|
|
17
|
+
} from "drizzle-orm";
|
|
18
|
+
import {
|
|
19
|
+
PgColumn,
|
|
20
|
+
PgColumnBuilder
|
|
21
|
+
} from "drizzle-orm/pg-core";
|
|
22
|
+
var PgBigintBuilder = class extends PgColumnBuilder {
|
|
23
|
+
static [entityKind] = "PgEvmBigintBuilder";
|
|
24
|
+
constructor(name) {
|
|
25
|
+
super(name, "bigint", "PgEvmBigint");
|
|
26
|
+
}
|
|
27
|
+
/** @internal */
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
build(table) {
|
|
30
|
+
return new PgBigint(
|
|
31
|
+
table,
|
|
32
|
+
this.config
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
var PgBigint = class extends PgColumn {
|
|
37
|
+
static [entityKind] = "PgEvmBigint";
|
|
38
|
+
getSQLType() {
|
|
39
|
+
return "numeric(78)";
|
|
40
|
+
}
|
|
41
|
+
mapFromDriverValue(value) {
|
|
42
|
+
return BigInt(value);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// src/drizzle/hex.ts
|
|
47
|
+
import {
|
|
48
|
+
entityKind as entityKind2
|
|
49
|
+
} from "drizzle-orm";
|
|
50
|
+
import {
|
|
51
|
+
PgColumn as PgColumn2,
|
|
52
|
+
PgColumnBuilder as PgColumnBuilder2
|
|
53
|
+
} from "drizzle-orm/pg-core";
|
|
54
|
+
var PgHexBuilder = class extends PgColumnBuilder2 {
|
|
55
|
+
static [entityKind2] = "PgHexBuilder";
|
|
56
|
+
constructor(name) {
|
|
57
|
+
super(name, "string", "PgHex");
|
|
58
|
+
}
|
|
59
|
+
/** @internal */
|
|
60
|
+
// @ts-ignore
|
|
61
|
+
build(table) {
|
|
62
|
+
return new PgHex(
|
|
63
|
+
table,
|
|
64
|
+
this.config
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
var PgHex = class extends PgColumn2 {
|
|
69
|
+
static [entityKind2] = "PgHex";
|
|
70
|
+
getSQLType() {
|
|
71
|
+
return "text";
|
|
72
|
+
}
|
|
73
|
+
mapToDriverValue(value) {
|
|
74
|
+
if (value.length % 2 === 0)
|
|
75
|
+
return value.toLowerCase();
|
|
76
|
+
return `0x0${value.slice(2)}`.toLowerCase();
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// src/drizzle/onchain.ts
|
|
81
|
+
function hex(columnName) {
|
|
82
|
+
return new PgHexBuilder(columnName ?? "");
|
|
83
|
+
}
|
|
84
|
+
function bigint(columnName) {
|
|
85
|
+
return new PgBigintBuilder(columnName ?? "");
|
|
86
|
+
}
|
|
87
|
+
var onchain = Symbol.for("ponder:onchain");
|
|
88
|
+
var primaryKey = ({
|
|
89
|
+
name,
|
|
90
|
+
columns
|
|
91
|
+
}) => drizzlePrimaryKey({ name, columns });
|
|
92
|
+
var onchainTable = (name, columns, extraConfig) => {
|
|
93
|
+
const schema = globalThis?.PONDER_NAMESPACE_BUILD;
|
|
94
|
+
const table = pgTableWithSchema(name, columns, extraConfig, schema);
|
|
95
|
+
table[onchain] = true;
|
|
96
|
+
return table;
|
|
97
|
+
};
|
|
98
|
+
var isPgEnumSym = Symbol.for("drizzle:isPgEnum");
|
|
99
|
+
var onchainEnum = (enumName, values) => {
|
|
100
|
+
const schema = globalThis?.PONDER_NAMESPACE_BUILD;
|
|
101
|
+
const e = pgEnumWithSchema(enumName, values, schema);
|
|
102
|
+
e[onchain] = true;
|
|
103
|
+
return e;
|
|
104
|
+
};
|
|
105
|
+
function pgTableWithSchema(name, columns, extraConfig, schema, baseName = name) {
|
|
106
|
+
const rawTable = new PgTable(name, schema, baseName);
|
|
107
|
+
const { bigint: int8, ...restColumns } = getPgColumnBuilders();
|
|
108
|
+
const parsedColumns = typeof columns === "function" ? columns({ ...restColumns, int8, hex, bigint }) : columns;
|
|
109
|
+
const builtColumns = Object.fromEntries(
|
|
110
|
+
Object.entries(parsedColumns).map(([name2, colBuilderBase]) => {
|
|
111
|
+
const colBuilder = colBuilderBase;
|
|
112
|
+
colBuilder.setName(name2);
|
|
113
|
+
const column = colBuilder.build(rawTable);
|
|
114
|
+
rawTable[Symbol.for("drizzle:PgInlineForeignKeys")].push(
|
|
115
|
+
...colBuilder.buildForeignKeys(column, rawTable)
|
|
116
|
+
);
|
|
117
|
+
return [name2, column];
|
|
118
|
+
})
|
|
119
|
+
);
|
|
120
|
+
const builtColumnsForExtraConfig = Object.fromEntries(
|
|
121
|
+
Object.entries(parsedColumns).map(([name2, colBuilderBase]) => {
|
|
122
|
+
const colBuilder = colBuilderBase;
|
|
123
|
+
colBuilder.setName(name2);
|
|
124
|
+
const column = colBuilder.buildExtraConfigColumn(rawTable);
|
|
125
|
+
return [name2, column];
|
|
126
|
+
})
|
|
127
|
+
);
|
|
128
|
+
const table = Object.assign(rawTable, builtColumns);
|
|
129
|
+
table[Table.Symbol.Columns] = builtColumns;
|
|
130
|
+
table[Table.Symbol.ExtraConfigColumns] = builtColumnsForExtraConfig;
|
|
131
|
+
if (extraConfig) {
|
|
132
|
+
table[PgTable.Symbol.ExtraConfigBuilder] = extraConfig;
|
|
133
|
+
}
|
|
134
|
+
return Object.assign(table, {
|
|
135
|
+
enableRLS: () => {
|
|
136
|
+
table[PgTable.Symbol.EnableRLS] = true;
|
|
137
|
+
return table;
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
function pgEnumWithSchema(enumName, values, schema) {
|
|
142
|
+
const enumInstance = Object.assign(
|
|
143
|
+
(name) => new PgEnumColumnBuilder(name ?? "", enumInstance),
|
|
144
|
+
{
|
|
145
|
+
enumName,
|
|
146
|
+
enumValues: values,
|
|
147
|
+
schema,
|
|
148
|
+
[isPgEnumSym]: true
|
|
149
|
+
}
|
|
150
|
+
);
|
|
151
|
+
return enumInstance;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export {
|
|
155
|
+
hex,
|
|
156
|
+
bigint,
|
|
157
|
+
onchain,
|
|
158
|
+
primaryKey,
|
|
159
|
+
onchainTable,
|
|
160
|
+
isPgEnumSym,
|
|
161
|
+
onchainEnum
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=chunk-K2TLRLX3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/drizzle/onchain.ts","../src/drizzle/bigint.ts","../src/drizzle/hex.ts"],"sourcesContent":["import {\n type BuildColumns,\n type ColumnBuilderBase,\n Table,\n type Writable,\n} from \"drizzle-orm\";\nimport {\n type AnyPgColumn,\n type PrimaryKeyBuilder as DrizzlePrimaryKeyBuilder,\n type ExtraConfigColumn,\n type PgColumnBuilder,\n type PgColumnBuilderBase,\n PgEnumColumnBuilder,\n type PgEnumColumnBuilderInitial,\n PgTable,\n type PgTableExtraConfig,\n type PgTableWithColumns,\n type TableConfig,\n primaryKey as drizzlePrimaryKey,\n} from \"drizzle-orm/pg-core\";\nimport {\n type PgColumnsBuilders as _PgColumnsBuilders,\n getPgColumnBuilders,\n} from \"drizzle-orm/pg-core/columns/all\";\nimport { PgBigintBuilder, type PgBigintBuilderInitial } from \"./bigint.js\";\nimport { PgHexBuilder, type PgHexBuilderInitial } from \"./hex.js\";\n\n// @ts-ignore\nexport function hex(): PgHexBuilderInitial<\"\">;\nexport function hex<name extends string>(\n columnName: name,\n): PgHexBuilderInitial<name>;\nexport function hex(columnName?: string) {\n return new PgHexBuilder(columnName ?? \"\");\n}\n\n// @ts-ignore\nexport function bigint(): PgBigintBuilderInitial<\"\">;\nexport function bigint<name extends string>(\n columnName: name,\n): PgBigintBuilderInitial<name>;\nexport function bigint(columnName?: string) {\n return new PgBigintBuilder(columnName ?? \"\");\n}\n\nexport const onchain = Symbol.for(\"ponder:onchain\");\n\nexport type PrimaryKeyBuilder<columnNames extends string = string> =\n DrizzlePrimaryKeyBuilder & { columnNames: columnNames };\n\nexport const primaryKey = <\n tableName extends string,\n column extends AnyPgColumn<{ tableName: tableName }> & { \" name\": string },\n columns extends (AnyPgColumn<{ tableName: tableName }> & {\n \" name\": string;\n })[],\n>({\n name,\n columns,\n}: { name?: string; columns: [column, ...columns] }) =>\n drizzlePrimaryKey({ name, columns }) as PrimaryKeyBuilder<\n column[\" name\"] | columns[number][\" name\"]\n >;\n\nexport type OnchainTable<\n T extends TableConfig & {\n extra: PgTableExtraConfig | undefined;\n } = TableConfig & { extra: PgTableExtraConfig | undefined },\n> = PgTable<T> & {\n [Key in keyof T[\"columns\"]]: T[\"columns\"][Key];\n} & { [onchain]: true } & {\n enableRLS: () => Omit<OnchainTable<T>, \"enableRLS\">;\n};\n\ntype BuildExtraConfigColumns<\n columns extends Record<string, ColumnBuilderBase>,\n> = {\n [key in keyof columns]: ExtraConfigColumn & {\n \" name\": key;\n };\n};\n\ntype PgColumnsBuilders = Omit<\n _PgColumnsBuilders,\n \"bigint\" | \"serial\" | \"smallserial\" | \"bigserial\"\n> & {\n /**\n * Create an 8 byte number column.\n */\n int8: _PgColumnsBuilders[\"bigint\"];\n /**\n * Create a column for hex strings.\n *\n * - Docs: https://ponder.sh/docs/api-reference/schema#onchaintable\n *\n * @example\n * import { hex, onchainTable } from \"ponder\";\n *\n * export const account = onchainTable(\"account\", (p) => ({\n * address: p.hex(),\n * }));\n */\n hex: typeof hex;\n /**\n * Create a column for hex strings\n *\n * - Docs: https://ponder.sh/docs/api-reference/schema#onchaintable\n *\n * @example\n * import { hex, onchainTable } from \"ponder\";\n *\n * export const account = onchainTable(\"account\", (p) => ({\n * balance: p.bigint(),\n * }));\n */\n bigint: typeof bigint;\n};\n\n/**\n * Create an onchain table.\n *\n * - Docs: https://ponder.sh/docs/api-reference/schema#onchaintable\n *\n * @example\n * import { onchainTable } from \"ponder\";\n *\n * export const account = onchainTable(\"account\", (p) => ({\n * address: p.hex().primaryKey(),\n * balance: p.bigint().notNull(),\n * }));\n *\n * @param name - The table name in the database.\n * @param columns - The table columns.\n * @param extra - Config such as indexes or composite primary keys.\n * @returns The onchain table.\n */\nexport const onchainTable = <\n name extends string,\n columns extends Record<string, PgColumnBuilderBase>,\n extra extends PgTableExtraConfig | undefined = undefined,\n>(\n name: name,\n columns: columns | ((columnTypes: PgColumnsBuilders) => columns),\n extraConfig?: (self: BuildExtraConfigColumns<columns>) => extra,\n): OnchainTable<{\n name: name;\n schema: undefined;\n columns: BuildColumns<name, columns, \"pg\">;\n extra: extra;\n dialect: \"pg\";\n}> => {\n const schema = globalThis?.PONDER_NAMESPACE_BUILD;\n const table = pgTableWithSchema(name, columns, extraConfig as any, schema);\n\n // @ts-ignore\n table[onchain] = true;\n\n // @ts-ignore\n return table;\n};\n\nexport const isPgEnumSym = Symbol.for(\"drizzle:isPgEnum\");\n\nexport interface OnchainEnum<TValues extends [string, ...string[]]> {\n (): PgEnumColumnBuilderInitial<\"\", TValues>;\n <TName extends string>(\n name: TName,\n ): PgEnumColumnBuilderInitial<TName, TValues>;\n <TName extends string>(\n name?: TName,\n ): PgEnumColumnBuilderInitial<TName, TValues>;\n\n readonly enumName: string;\n readonly enumValues: TValues;\n readonly schema: string | undefined;\n /** @internal */\n [isPgEnumSym]: true;\n}\n\nexport const onchainEnum = <U extends string, T extends Readonly<[U, ...U[]]>>(\n enumName: string,\n values: T | Writable<T>,\n): OnchainEnum<Writable<T>> & { [onchain]: true } => {\n const schema = globalThis?.PONDER_NAMESPACE_BUILD;\n const e = pgEnumWithSchema(enumName, values, schema);\n\n // @ts-ignore\n e[onchain] = true;\n\n // @ts-ignore\n return e;\n};\n\n/** @see https://github.com/drizzle-team/drizzle-orm/blob/main/drizzle-orm/src/pg-core/table.ts#L51 */\nfunction pgTableWithSchema<\n name extends string,\n schema extends string | undefined,\n columns extends Record<string, PgColumnBuilderBase>,\n>(\n name: name,\n columns: columns | ((columnTypes: PgColumnsBuilders) => columns),\n extraConfig:\n | ((self: BuildExtraConfigColumns<columns>) => PgTableExtraConfig)\n | undefined,\n schema: schema,\n baseName = name,\n): PgTableWithColumns<{\n name: name;\n schema: schema;\n columns: BuildColumns<name, columns, \"pg\">;\n dialect: \"pg\";\n}> {\n const rawTable = new PgTable<{\n name: name;\n schema: schema;\n columns: BuildColumns<name, columns, \"pg\">;\n dialect: \"pg\";\n }>(name, schema, baseName);\n\n const { bigint: int8, ...restColumns } = getPgColumnBuilders();\n\n const parsedColumns: columns =\n typeof columns === \"function\"\n ? columns({ ...restColumns, int8, hex, bigint })\n : columns;\n\n const builtColumns = Object.fromEntries(\n Object.entries(parsedColumns).map(([name, colBuilderBase]) => {\n const colBuilder = colBuilderBase;\n // @ts-ignore\n colBuilder.setName(name);\n // @ts-ignore\n const column = colBuilder.build(rawTable);\n // @ts-ignore\n rawTable[Symbol.for(\"drizzle:PgInlineForeignKeys\")].push(\n // @ts-ignore\n ...colBuilder.buildForeignKeys(column, rawTable),\n );\n return [name, column];\n }),\n ) as unknown as BuildColumns<name, columns, \"pg\">;\n\n const builtColumnsForExtraConfig = Object.fromEntries(\n Object.entries(parsedColumns).map(([name, colBuilderBase]) => {\n const colBuilder = colBuilderBase as PgColumnBuilder;\n //@ts-ignore\n colBuilder.setName(name);\n //@ts-ignore\n const column = colBuilder.buildExtraConfigColumn(rawTable);\n return [name, column];\n }),\n ) as unknown as BuildExtraConfigColumns<columns>;\n\n const table = Object.assign(rawTable, builtColumns);\n\n //@ts-ignore\n table[Table.Symbol.Columns] = builtColumns;\n //@ts-ignore\n table[Table.Symbol.ExtraConfigColumns] = builtColumnsForExtraConfig;\n\n if (extraConfig) {\n //@ts-ignore\n table[PgTable.Symbol.ExtraConfigBuilder] = extraConfig as any;\n }\n\n return Object.assign(table, {\n enableRLS: () => {\n // @ts-ignore\n table[PgTable.Symbol.EnableRLS] = true;\n return table as PgTableWithColumns<{\n name: name;\n schema: schema;\n columns: BuildColumns<name, columns, \"pg\">;\n dialect: \"pg\";\n }>;\n },\n });\n}\n\nfunction pgEnumWithSchema<U extends string, T extends Readonly<[U, ...U[]]>>(\n enumName: string,\n values: T | Writable<T>,\n schema?: string,\n): OnchainEnum<Writable<T>> {\n const enumInstance: OnchainEnum<Writable<T>> = Object.assign(\n <TName extends string>(\n name?: TName,\n ): PgEnumColumnBuilderInitial<TName, Writable<T>> =>\n new PgEnumColumnBuilder(name ?? (\"\" as TName), enumInstance),\n {\n enumName,\n enumValues: values,\n schema,\n [isPgEnumSym]: true,\n } as const,\n );\n\n return enumInstance;\n}\n","import {\n type ColumnBaseConfig,\n type ColumnBuilderBaseConfig,\n type ColumnBuilderRuntimeConfig,\n type MakeColumnConfig,\n entityKind,\n} from \"drizzle-orm\";\nimport {\n type AnyPgTable,\n PgColumn,\n PgColumnBuilder,\n} from \"drizzle-orm/pg-core\";\n\nexport type PgBigintBuilderInitial<TName extends string> = PgBigintBuilder<{\n name: TName;\n dataType: \"bigint\";\n columnType: \"PgEvmBigint\";\n data: bigint;\n driverParam: string;\n enumValues: undefined;\n generated: undefined;\n}>;\n\nexport class PgBigintBuilder<\n T extends ColumnBuilderBaseConfig<\"bigint\", \"PgEvmBigint\">,\n> extends PgColumnBuilder<T> {\n static readonly [entityKind]: string = \"PgEvmBigintBuilder\";\n\n constructor(name: T[\"name\"]) {\n super(name, \"bigint\", \"PgEvmBigint\");\n }\n\n /** @internal */\n // @ts-ignore\n override build<TTableName extends string>(\n table: AnyPgTable<{ name: TTableName }>,\n ): PgBigint<MakeColumnConfig<T, TTableName>> {\n return new PgBigint<MakeColumnConfig<T, TTableName>>(\n table,\n this.config as ColumnBuilderRuntimeConfig<any, any>,\n );\n }\n}\n\nexport class PgBigint<\n T extends ColumnBaseConfig<\"bigint\", \"PgEvmBigint\">,\n> extends PgColumn<T> {\n static readonly [entityKind]: string = \"PgEvmBigint\";\n\n getSQLType(): string {\n return \"numeric(78)\";\n }\n\n override mapFromDriverValue(value: string): bigint {\n return BigInt(value);\n }\n}\n","import {\n type ColumnBaseConfig,\n type ColumnBuilderBaseConfig,\n type ColumnBuilderRuntimeConfig,\n type MakeColumnConfig,\n entityKind,\n} from \"drizzle-orm\";\nimport {\n type AnyPgTable,\n PgColumn,\n PgColumnBuilder,\n} from \"drizzle-orm/pg-core\";\n\nexport type PgHexBuilderInitial<TName extends string> = PgHexBuilder<{\n name: TName;\n dataType: \"string\";\n columnType: \"PgHex\";\n data: `0x${string}`;\n driverParam: string;\n enumValues: undefined;\n generated: undefined;\n}>;\n\nexport class PgHexBuilder<\n T extends ColumnBuilderBaseConfig<\"string\", \"PgHex\">,\n> extends PgColumnBuilder<T> {\n static readonly [entityKind]: string = \"PgHexBuilder\";\n\n constructor(name: T[\"name\"]) {\n super(name, \"string\", \"PgHex\");\n }\n\n /** @internal */\n // @ts-ignore\n override build<TTableName extends string>(\n table: AnyPgTable<{ name: TTableName }>,\n ): PgHex<MakeColumnConfig<T, TTableName>> {\n return new PgHex<MakeColumnConfig<T, TTableName>>(\n table,\n this.config as ColumnBuilderRuntimeConfig<any, any>,\n );\n }\n}\n\nexport class PgHex<\n T extends ColumnBaseConfig<\"string\", \"PgHex\">,\n> extends PgColumn<T> {\n static readonly [entityKind]: string = \"PgHex\";\n\n getSQLType(): string {\n return \"text\";\n }\n\n override mapToDriverValue(value: `0x${string}`) {\n if (value.length % 2 === 0) return value.toLowerCase() as `0x${string}`;\n return `0x0${value.slice(2)}`.toLowerCase() as `0x${string}`;\n }\n}\n"],"mappings":";AAAA;AAAA,EAGE;AAAA,OAEK;AACP;AAAA,EAME;AAAA,EAEA;AAAA,EAIA,cAAc;AAAA,OACT;AACP;AAAA,EAEE;AAAA,OACK;;;ACvBP;AAAA,EAKE;AAAA,OACK;AACP;AAAA,EAEE;AAAA,EACA;AAAA,OACK;AAYA,IAAM,kBAAN,cAEG,gBAAmB;AAAA,EAC3B,QAAiB,UAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC3B,UAAM,MAAM,UAAU,aAAa;AAAA,EACrC;AAAA;AAAA;AAAA,EAIS,MACP,OAC2C;AAC3C,WAAO,IAAI;AAAA,MACT;AAAA,MACA,KAAK;AAAA,IACP;AAAA,EACF;AACF;AAEO,IAAM,WAAN,cAEG,SAAY;AAAA,EACpB,QAAiB,UAAU,IAAY;AAAA,EAEvC,aAAqB;AACnB,WAAO;AAAA,EACT;AAAA,EAES,mBAAmB,OAAuB;AACjD,WAAO,OAAO,KAAK;AAAA,EACrB;AACF;;;ACxDA;AAAA,EAKE,cAAAA;AAAA,OACK;AACP;AAAA,EAEE,YAAAC;AAAA,EACA,mBAAAC;AAAA,OACK;AAYA,IAAM,eAAN,cAEGA,iBAAmB;AAAA,EAC3B,QAAiBF,WAAU,IAAY;AAAA,EAEvC,YAAY,MAAiB;AAC3B,UAAM,MAAM,UAAU,OAAO;AAAA,EAC/B;AAAA;AAAA;AAAA,EAIS,MACP,OACwC;AACxC,WAAO,IAAI;AAAA,MACT;AAAA,MACA,KAAK;AAAA,IACP;AAAA,EACF;AACF;AAEO,IAAM,QAAN,cAEGC,UAAY;AAAA,EACpB,QAAiBD,WAAU,IAAY;AAAA,EAEvC,aAAqB;AACnB,WAAO;AAAA,EACT;AAAA,EAES,iBAAiB,OAAsB;AAC9C,QAAI,MAAM,SAAS,MAAM;AAAG,aAAO,MAAM,YAAY;AACrD,WAAO,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,YAAY;AAAA,EAC5C;AACF;;;AFzBO,SAAS,IAAI,YAAqB;AACvC,SAAO,IAAI,aAAa,cAAc,EAAE;AAC1C;AAOO,SAAS,OAAO,YAAqB;AAC1C,SAAO,IAAI,gBAAgB,cAAc,EAAE;AAC7C;AAEO,IAAM,UAAU,OAAO,IAAI,gBAAgB;AAK3C,IAAM,aAAa,CAMxB;AAAA,EACA;AAAA,EACA;AACF,MACE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AA4E9B,IAAM,eAAe,CAK1B,MACA,SACA,gBAOI;AACJ,QAAM,SAAS,YAAY;AAC3B,QAAM,QAAQ,kBAAkB,MAAM,SAAS,aAAoB,MAAM;AAGzE,QAAM,OAAO,IAAI;AAGjB,SAAO;AACT;AAEO,IAAM,cAAc,OAAO,IAAI,kBAAkB;AAkBjD,IAAM,cAAc,CACzB,UACA,WACmD;AACnD,QAAM,SAAS,YAAY;AAC3B,QAAM,IAAI,iBAAiB,UAAU,QAAQ,MAAM;AAGnD,IAAE,OAAO,IAAI;AAGb,SAAO;AACT;AAGA,SAAS,kBAKP,MACA,SACA,aAGA,QACA,WAAW,MAMV;AACD,QAAM,WAAW,IAAI,QAKlB,MAAM,QAAQ,QAAQ;AAEzB,QAAM,EAAE,QAAQ,MAAM,GAAG,YAAY,IAAI,oBAAoB;AAE7D,QAAM,gBACJ,OAAO,YAAY,aACf,QAAQ,EAAE,GAAG,aAAa,MAAM,KAAK,OAAO,CAAC,IAC7C;AAEN,QAAM,eAAe,OAAO;AAAA,IAC1B,OAAO,QAAQ,aAAa,EAAE,IAAI,CAAC,CAACG,OAAM,cAAc,MAAM;AAC5D,YAAM,aAAa;AAEnB,iBAAW,QAAQA,KAAI;AAEvB,YAAM,SAAS,WAAW,MAAM,QAAQ;AAExC,eAAS,OAAO,IAAI,6BAA6B,CAAC,EAAE;AAAA,QAElD,GAAG,WAAW,iBAAiB,QAAQ,QAAQ;AAAA,MACjD;AACA,aAAO,CAACA,OAAM,MAAM;AAAA,IACtB,CAAC;AAAA,EACH;AAEA,QAAM,6BAA6B,OAAO;AAAA,IACxC,OAAO,QAAQ,aAAa,EAAE,IAAI,CAAC,CAACA,OAAM,cAAc,MAAM;AAC5D,YAAM,aAAa;AAEnB,iBAAW,QAAQA,KAAI;AAEvB,YAAM,SAAS,WAAW,uBAAuB,QAAQ;AACzD,aAAO,CAACA,OAAM,MAAM;AAAA,IACtB,CAAC;AAAA,EACH;AAEA,QAAM,QAAQ,OAAO,OAAO,UAAU,YAAY;AAGlD,QAAM,MAAM,OAAO,OAAO,IAAI;AAE9B,QAAM,MAAM,OAAO,kBAAkB,IAAI;AAEzC,MAAI,aAAa;AAEf,UAAM,QAAQ,OAAO,kBAAkB,IAAI;AAAA,EAC7C;AAEA,SAAO,OAAO,OAAO,OAAO;AAAA,IAC1B,WAAW,MAAM;AAEf,YAAM,QAAQ,OAAO,SAAS,IAAI;AAClC,aAAO;AAAA,IAMT;AAAA,EACF,CAAC;AACH;AAEA,SAAS,iBACP,UACA,QACA,QAC0B;AAC1B,QAAM,eAAyC,OAAO;AAAA,IACpD,CACE,SAEA,IAAI,oBAAoB,QAAS,IAAc,YAAY;AAAA,IAC7D;AAAA,MACE;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,CAAC,WAAW,GAAG;AAAA,IACjB;AAAA,EACF;AAEA,SAAO;AACT;","names":["entityKind","PgColumn","PgColumnBuilder","name"]}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
// ../common/src/promiseWithResolvers.ts
|
|
2
|
+
var promiseWithResolvers = () => {
|
|
3
|
+
let resolve;
|
|
4
|
+
let reject;
|
|
5
|
+
const promise = new Promise((_resolve, _reject) => {
|
|
6
|
+
resolve = _resolve;
|
|
7
|
+
reject = _reject;
|
|
8
|
+
});
|
|
9
|
+
return { resolve, reject, promise };
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
// ../common/src/queue.ts
|
|
13
|
+
var validateParameters = ({
|
|
14
|
+
concurrency,
|
|
15
|
+
frequency
|
|
16
|
+
}) => {
|
|
17
|
+
if (concurrency === void 0 && frequency === void 0) {
|
|
18
|
+
throw new Error(
|
|
19
|
+
"Invalid queue configuration, must specify either 'concurrency' or 'frequency'."
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
if (concurrency !== void 0 && concurrency <= 0) {
|
|
23
|
+
throw new Error(
|
|
24
|
+
`Invalid value for queue 'concurrency' option. Got ${concurrency}, expected a number greater than zero.`
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
if (frequency !== void 0 && frequency <= 0) {
|
|
28
|
+
throw new Error(
|
|
29
|
+
`Invalid value for queue 'frequency' option. Got ${frequency}, expected a number greater than zero.`
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
var createQueue = ({
|
|
34
|
+
worker,
|
|
35
|
+
initialStart = false,
|
|
36
|
+
browser = true,
|
|
37
|
+
..._parameters
|
|
38
|
+
}) => {
|
|
39
|
+
validateParameters(_parameters);
|
|
40
|
+
const parameters = _parameters;
|
|
41
|
+
let queue = new Array();
|
|
42
|
+
let pending = 0;
|
|
43
|
+
let timestamp = 0;
|
|
44
|
+
let requests = 0;
|
|
45
|
+
let isStarted = initialStart;
|
|
46
|
+
let timer;
|
|
47
|
+
let emptyPromiseWithResolvers = void 0;
|
|
48
|
+
let idlePromiseWithResolvers = void 0;
|
|
49
|
+
const next = () => {
|
|
50
|
+
if (!isStarted)
|
|
51
|
+
return;
|
|
52
|
+
const _timestamp = Date.now();
|
|
53
|
+
if (Math.floor(_timestamp / 1e3) !== timestamp) {
|
|
54
|
+
requests = 0;
|
|
55
|
+
timestamp = Math.floor(_timestamp / 1e3);
|
|
56
|
+
}
|
|
57
|
+
if (timer)
|
|
58
|
+
return;
|
|
59
|
+
while ((parameters.frequency !== void 0 ? requests < parameters.frequency : true) && (parameters.concurrency !== void 0 ? pending < parameters.concurrency : true) && queue.length > 0) {
|
|
60
|
+
const { task, resolve, reject } = queue.shift();
|
|
61
|
+
requests++;
|
|
62
|
+
pending++;
|
|
63
|
+
worker(task).then(resolve).catch(reject).finally(() => {
|
|
64
|
+
pending--;
|
|
65
|
+
if (idlePromiseWithResolvers !== void 0 && queue.length === 0 && pending === 0) {
|
|
66
|
+
idlePromiseWithResolvers.resolve();
|
|
67
|
+
idlePromiseWithResolvers.completed = true;
|
|
68
|
+
}
|
|
69
|
+
browser ? next() : process.nextTick(next);
|
|
70
|
+
});
|
|
71
|
+
if (emptyPromiseWithResolvers !== void 0 && queue.length === 0) {
|
|
72
|
+
emptyPromiseWithResolvers.resolve();
|
|
73
|
+
emptyPromiseWithResolvers.completed = true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (parameters.frequency !== void 0 && requests >= parameters.frequency) {
|
|
77
|
+
timer = setTimeout(
|
|
78
|
+
() => {
|
|
79
|
+
timer = void 0;
|
|
80
|
+
next();
|
|
81
|
+
},
|
|
82
|
+
1e3 - _timestamp % 1e3
|
|
83
|
+
);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
return {
|
|
88
|
+
size: () => queue.length,
|
|
89
|
+
pending: () => {
|
|
90
|
+
if (browser) {
|
|
91
|
+
return new Promise(
|
|
92
|
+
(resolve) => setTimeout(() => resolve(pending))
|
|
93
|
+
);
|
|
94
|
+
} else {
|
|
95
|
+
return new Promise(
|
|
96
|
+
(resolve) => setImmediate(() => resolve(pending))
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
add: (task) => {
|
|
101
|
+
const { promise, resolve, reject } = promiseWithResolvers();
|
|
102
|
+
queue.push({ task, resolve, reject });
|
|
103
|
+
next();
|
|
104
|
+
return promise;
|
|
105
|
+
},
|
|
106
|
+
clear: () => {
|
|
107
|
+
queue = new Array();
|
|
108
|
+
clearTimeout(timer);
|
|
109
|
+
timer = void 0;
|
|
110
|
+
},
|
|
111
|
+
isStarted: () => isStarted,
|
|
112
|
+
start: () => {
|
|
113
|
+
if (browser) {
|
|
114
|
+
return new Promise(
|
|
115
|
+
(resolve) => setTimeout(() => resolve(pending))
|
|
116
|
+
).then(() => {
|
|
117
|
+
isStarted = true;
|
|
118
|
+
next();
|
|
119
|
+
});
|
|
120
|
+
} else {
|
|
121
|
+
return new Promise(
|
|
122
|
+
(resolve) => process.nextTick(() => resolve(pending))
|
|
123
|
+
).then(() => {
|
|
124
|
+
isStarted = true;
|
|
125
|
+
next();
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
pause: () => {
|
|
130
|
+
isStarted = false;
|
|
131
|
+
},
|
|
132
|
+
onIdle: () => {
|
|
133
|
+
if (idlePromiseWithResolvers === void 0 || idlePromiseWithResolvers.completed) {
|
|
134
|
+
if (queue.length === 0 && pending === 0)
|
|
135
|
+
return Promise.resolve();
|
|
136
|
+
idlePromiseWithResolvers = {
|
|
137
|
+
...promiseWithResolvers(),
|
|
138
|
+
completed: false
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
return idlePromiseWithResolvers.promise;
|
|
142
|
+
},
|
|
143
|
+
onEmpty: () => {
|
|
144
|
+
if (emptyPromiseWithResolvers === void 0 || emptyPromiseWithResolvers.completed) {
|
|
145
|
+
if (queue.length === 0)
|
|
146
|
+
return Promise.resolve();
|
|
147
|
+
emptyPromiseWithResolvers = {
|
|
148
|
+
...promiseWithResolvers(),
|
|
149
|
+
completed: false
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return emptyPromiseWithResolvers.promise;
|
|
153
|
+
},
|
|
154
|
+
setParameters: (_parameters2) => {
|
|
155
|
+
validateParameters(_parameters2);
|
|
156
|
+
if ("frequency" in _parameters2) {
|
|
157
|
+
parameters.frequency = _parameters2.frequency;
|
|
158
|
+
}
|
|
159
|
+
if ("concurrency" in _parameters2) {
|
|
160
|
+
parameters.concurrency = _parameters2.concurrency;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
// ../common/src/dedupe.ts
|
|
167
|
+
function dedupe(arr, getId) {
|
|
168
|
+
const seen = /* @__PURE__ */ new Set();
|
|
169
|
+
return arr.filter((x) => {
|
|
170
|
+
if (seen.has(getId ? getId(x) : x))
|
|
171
|
+
return false;
|
|
172
|
+
seen.add(x);
|
|
173
|
+
return true;
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
dedupe(
|
|
177
|
+
[
|
|
178
|
+
{ a: 1, b: 2 },
|
|
179
|
+
{ a: 1, b: 2 },
|
|
180
|
+
{ a: 2, b: 2 }
|
|
181
|
+
],
|
|
182
|
+
(e) => `${e.a}_${e.b}`
|
|
183
|
+
);
|
|
184
|
+
|
|
185
|
+
// src/indexing-store/metadata.ts
|
|
186
|
+
import { sql } from "kysely";
|
|
187
|
+
var getMetadataStore = ({
|
|
188
|
+
database
|
|
189
|
+
}) => ({
|
|
190
|
+
getStatus: async () => {
|
|
191
|
+
return database.wrap({ method: "_ponder_status.get()" }, async () => {
|
|
192
|
+
const result = await database.qb.user.selectFrom("_ponder_status").selectAll().execute();
|
|
193
|
+
if (result.length === 0) {
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
const status = {};
|
|
197
|
+
for (const row of result) {
|
|
198
|
+
status[row.network_name] = {
|
|
199
|
+
block: row.block_number && row.block_timestamp ? {
|
|
200
|
+
number: Number(row.block_number),
|
|
201
|
+
timestamp: Number(row.block_timestamp)
|
|
202
|
+
} : null,
|
|
203
|
+
ready: row.ready
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
return status;
|
|
207
|
+
});
|
|
208
|
+
},
|
|
209
|
+
setStatus: (status) => {
|
|
210
|
+
return database.wrap({ method: "_ponder_status.set()" }, async () => {
|
|
211
|
+
await database.qb.user.insertInto("_ponder_status").values(
|
|
212
|
+
Object.entries(status).map(([networkName, value]) => ({
|
|
213
|
+
network_name: networkName,
|
|
214
|
+
block_number: value.block?.number,
|
|
215
|
+
block_timestamp: value.block?.timestamp,
|
|
216
|
+
ready: value.ready
|
|
217
|
+
}))
|
|
218
|
+
).onConflict(
|
|
219
|
+
(oc) => oc.column("network_name").doUpdateSet({
|
|
220
|
+
block_number: sql`excluded.block_number`,
|
|
221
|
+
block_timestamp: sql`excluded.block_timestamp`,
|
|
222
|
+
ready: sql`excluded.ready`
|
|
223
|
+
})
|
|
224
|
+
).execute();
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
// src/utils/never.ts
|
|
230
|
+
var never = (_x) => {
|
|
231
|
+
throw "unreachable";
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
// src/utils/serialize.ts
|
|
235
|
+
function serialize(value) {
|
|
236
|
+
return JSON.stringify(
|
|
237
|
+
value,
|
|
238
|
+
(_, v) => typeof v === "bigint" ? { __type: "bigint", value: v.toString() } : v
|
|
239
|
+
);
|
|
240
|
+
}
|
|
241
|
+
function deserialize(value) {
|
|
242
|
+
return JSON.parse(
|
|
243
|
+
value,
|
|
244
|
+
(_, value_) => value_?.__type === "bigint" ? BigInt(value_.value) : value_
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
export {
|
|
249
|
+
promiseWithResolvers,
|
|
250
|
+
dedupe,
|
|
251
|
+
createQueue,
|
|
252
|
+
getMetadataStore,
|
|
253
|
+
never,
|
|
254
|
+
serialize,
|
|
255
|
+
deserialize
|
|
256
|
+
};
|
|
257
|
+
//# sourceMappingURL=chunk-LHCA5XFV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../common/src/promiseWithResolvers.ts","../../common/src/queue.ts","../../common/src/dedupe.ts","../src/indexing-store/metadata.ts","../src/utils/never.ts","../src/utils/serialize.ts"],"sourcesContent":["export type PromiseWithResolvers<TPromise> = {\n resolve: (arg: TPromise) => void;\n reject: (error: Error) => void;\n promise: Promise<TPromise>;\n};\n\n/**\n * @description Application level polyfill.\n */\nexport const promiseWithResolvers = <\n TPromise,\n>(): PromiseWithResolvers<TPromise> => {\n let resolve: (arg: TPromise) => void;\n let reject: (error: Error) => void;\n const promise = new Promise<TPromise>((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n return { resolve: resolve!, reject: reject!, promise };\n};\n","import {\n type PromiseWithResolvers,\n promiseWithResolvers,\n} from \"./promiseWithResolvers.js\";\n\nexport type InnerQueue<returnType, taskType> = {\n task: taskType;\n resolve: (arg: returnType) => void;\n reject: (error: Error) => void;\n}[];\n\nexport type Queue<returnType, taskType> = {\n size: () => number;\n pending: () => Promise<number>;\n add: (task: taskType) => Promise<returnType>;\n clear: () => void;\n isStarted: () => boolean;\n start: () => Promise<void>;\n pause: () => void;\n onIdle: () => Promise<void>;\n onEmpty: () => Promise<void>;\n setParameters: (\n parameters: Pick<\n CreateQueueParameters<unknown, unknown>,\n \"frequency\" | \"concurrency\"\n >,\n ) => void;\n};\n\nexport type CreateQueueParameters<returnType, taskType> = {\n worker: (task: taskType) => Promise<returnType>;\n initialStart?: boolean;\n browser?: boolean;\n} & (\n | {\n concurrency: number;\n frequency: number;\n }\n | { concurrency: number; frequency?: undefined }\n | { concurrency?: undefined; frequency: number }\n);\n\nconst validateParameters = ({\n concurrency,\n frequency,\n}: Pick<\n CreateQueueParameters<unknown, unknown>,\n \"frequency\" | \"concurrency\"\n>) => {\n if (concurrency === undefined && frequency === undefined) {\n throw new Error(\n \"Invalid queue configuration, must specify either 'concurrency' or 'frequency'.\",\n );\n }\n\n if (concurrency !== undefined && concurrency <= 0) {\n throw new Error(\n `Invalid value for queue 'concurrency' option. Got ${concurrency}, expected a number greater than zero.`,\n );\n }\n\n if (frequency !== undefined && frequency <= 0) {\n throw new Error(\n `Invalid value for queue 'frequency' option. Got ${frequency}, expected a number greater than zero.`,\n );\n }\n};\n\nexport const createQueue = <returnType, taskType = void>({\n worker,\n initialStart = false,\n browser = true,\n ..._parameters\n}: CreateQueueParameters<returnType, taskType>): Queue<\n returnType,\n taskType\n> => {\n validateParameters(_parameters);\n\n const parameters: Pick<\n CreateQueueParameters<unknown, unknown>,\n \"frequency\" | \"concurrency\"\n > = _parameters;\n let queue = new Array<InnerQueue<returnType, taskType>[number]>();\n let pending = 0;\n let timestamp = 0;\n let requests = 0;\n let isStarted = initialStart;\n\n let timer: NodeJS.Timeout | undefined;\n\n let emptyPromiseWithResolvers:\n | (PromiseWithResolvers<void> & { completed: boolean })\n | undefined = undefined;\n let idlePromiseWithResolvers:\n | (PromiseWithResolvers<void> & { completed: boolean })\n | undefined = undefined;\n\n const next = () => {\n if (!isStarted) return;\n\n const _timestamp = Date.now();\n\n if (Math.floor(_timestamp / 1_000) !== timestamp) {\n requests = 0;\n timestamp = Math.floor(_timestamp / 1_000);\n }\n\n if (timer) return;\n\n while (\n (parameters.frequency !== undefined\n ? requests < parameters.frequency\n : true) &&\n (parameters.concurrency !== undefined\n ? pending < parameters.concurrency\n : true) &&\n queue.length > 0\n ) {\n const { task, resolve, reject } = queue.shift()!;\n\n requests++;\n pending++;\n\n worker(task)\n .then(resolve)\n .catch(reject)\n .finally(() => {\n pending--;\n\n if (\n idlePromiseWithResolvers !== undefined &&\n queue.length === 0 &&\n pending === 0\n ) {\n idlePromiseWithResolvers.resolve();\n idlePromiseWithResolvers.completed = true;\n }\n\n browser ? next() : process.nextTick(next);\n });\n\n if (emptyPromiseWithResolvers !== undefined && queue.length === 0) {\n emptyPromiseWithResolvers.resolve();\n emptyPromiseWithResolvers.completed = true;\n }\n }\n\n if (\n parameters.frequency !== undefined &&\n requests >= parameters.frequency\n ) {\n timer = setTimeout(\n () => {\n timer = undefined;\n next();\n },\n 1_000 - (_timestamp % 1_000),\n );\n return;\n }\n };\n\n return {\n size: () => queue.length,\n pending: () => {\n if (browser) {\n return new Promise<number>((resolve) =>\n setTimeout(() => resolve(pending)),\n );\n } else {\n return new Promise<number>((resolve) =>\n setImmediate(() => resolve(pending)),\n );\n }\n },\n add: (task: taskType) => {\n const { promise, resolve, reject } = promiseWithResolvers<returnType>();\n queue.push({ task, resolve, reject });\n\n next();\n\n return promise;\n },\n clear: () => {\n queue = new Array<InnerQueue<returnType, taskType>[number]>();\n clearTimeout(timer);\n timer = undefined;\n },\n isStarted: () => isStarted,\n start: () => {\n if (browser) {\n return new Promise<number>((resolve) =>\n setTimeout(() => resolve(pending)),\n ).then(() => {\n isStarted = true;\n next();\n });\n } else {\n return new Promise<number>((resolve) =>\n process.nextTick(() => resolve(pending)),\n ).then(() => {\n isStarted = true;\n next();\n });\n }\n },\n pause: () => {\n isStarted = false;\n },\n onIdle: () => {\n if (\n idlePromiseWithResolvers === undefined ||\n idlePromiseWithResolvers.completed\n ) {\n if (queue.length === 0 && pending === 0) return Promise.resolve();\n\n idlePromiseWithResolvers = {\n ...promiseWithResolvers<void>(),\n completed: false,\n };\n }\n return idlePromiseWithResolvers.promise;\n },\n onEmpty: () => {\n if (\n emptyPromiseWithResolvers === undefined ||\n emptyPromiseWithResolvers.completed\n ) {\n if (queue.length === 0) return Promise.resolve();\n\n emptyPromiseWithResolvers = {\n ...promiseWithResolvers<void>(),\n completed: false,\n };\n }\n return emptyPromiseWithResolvers.promise;\n },\n setParameters: (_parameters) => {\n validateParameters(_parameters);\n\n if (\"frequency\" in _parameters) {\n parameters.frequency = _parameters.frequency;\n }\n if (\"concurrency\" in _parameters) {\n parameters.concurrency = _parameters.concurrency;\n }\n },\n } as Queue<returnType, taskType>;\n};\n","/**\n * Remove duplicate values from an array.\n *\n * @param getId callback used to calculate a unique value for an element of the array.\n *\n * @example\n * dedupe([1,1,2,3]) // [1,2,3]\n *\n * dedupe(\n * [\n * { a: 1, b: 2 },\n * { a: 1, b: 2 },\n * { a: 2, b: 2 },\n * ],\n * (e) => `${e.a}_${e.b}`,\n * ) // [{a: 1, b: 2}, {a: 2, b: 2}]\n *\n */\nexport function dedupe<item, id>(\n arr: item[] | readonly item[],\n getId?: (x: item) => id,\n): item[] {\n const seen = new Set<id | item>();\n\n return arr.filter((x) => {\n if (seen.has(getId ? getId(x) : x)) return false;\n\n seen.add(x);\n return true;\n });\n}\n\ndedupe(\n [\n { a: 1, b: 2 },\n { a: 1, b: 2 },\n { a: 2, b: 2 },\n ],\n (e) => `${e.a}_${e.b}`,\n);\n","import type { Database } from \"@/database/index.js\";\nimport type { Status } from \"@/internal/types.js\";\nimport { sql } from \"kysely\";\n\nexport type MetadataStore = {\n setStatus: (status: Status) => Promise<void>;\n getStatus: () => Promise<Status | null>;\n};\n\nexport const getMetadataStore = ({\n database,\n}: {\n database: Database;\n}): MetadataStore => ({\n getStatus: async () => {\n return database.wrap({ method: \"_ponder_status.get()\" }, async () => {\n const result = await database.qb.user\n .selectFrom(\"_ponder_status\")\n .selectAll()\n .execute();\n\n if (result.length === 0) {\n return null;\n }\n\n const status: Status = {};\n\n for (const row of result) {\n status[row.network_name] = {\n block:\n row.block_number && row.block_timestamp\n ? {\n number: Number(row.block_number),\n timestamp: Number(row.block_timestamp),\n }\n : null,\n ready: row.ready,\n };\n }\n\n return status;\n });\n },\n setStatus: (status: Status) => {\n return database.wrap({ method: \"_ponder_status.set()\" }, async () => {\n await database.qb.user\n .insertInto(\"_ponder_status\")\n .values(\n Object.entries(status).map(([networkName, value]) => ({\n network_name: networkName,\n block_number: value.block?.number,\n block_timestamp: value.block?.timestamp,\n ready: value.ready,\n })),\n )\n .onConflict((oc) =>\n oc.column(\"network_name\").doUpdateSet({\n block_number: sql`excluded.block_number`,\n block_timestamp: sql`excluded.block_timestamp`,\n ready: sql`excluded.ready`,\n }),\n )\n .execute();\n });\n },\n});\n","export const never = (_x: never) => {\n throw \"unreachable\";\n};\n","/**\n * Serialize function that handles BigInt.\n *\n * Forked from https://github.com/wevm/wagmi\n *\n * @param value to stringify\n * @returns the stringified output\n */\nexport function serialize(value: any) {\n return JSON.stringify(value, (_, v) =>\n typeof v === \"bigint\" ? { __type: \"bigint\", value: v.toString() } : v,\n );\n}\n\n/**\n * Deserialize function that handles BigInt.\n *\n * Forked from https://github.com/wevm/wagmi\n *\n * @param value to parse\n * @returns the output object\n */\nexport function deserialize<type>(value: string): type {\n return JSON.parse(value, (_, value_) =>\n value_?.__type === \"bigint\" ? BigInt(value_.value) : value_,\n );\n}\n"],"mappings":";AASO,IAAM,uBAAuB,MAEG;AACrC,MAAI;AACJ,MAAI;AACJ,QAAM,UAAU,IAAI,QAAkB,CAAC,UAAU,YAAY;AAC3D,cAAU;AACV,aAAS;AAAA,EACX,CAAC;AACD,SAAO,EAAE,SAAmB,QAAiB,QAAQ;AACvD;;;ACuBA,IAAM,qBAAqB,CAAC;AAAA,EAC1B;AAAA,EACA;AACF,MAGM;AACJ,MAAI,gBAAgB,UAAa,cAAc,QAAW;AACxD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,gBAAgB,UAAa,eAAe,GAAG;AACjD,UAAM,IAAI;AAAA,MACR,qDAAqD,WAAW;AAAA,IAClE;AAAA,EACF;AAEA,MAAI,cAAc,UAAa,aAAa,GAAG;AAC7C,UAAM,IAAI;AAAA,MACR,mDAAmD,SAAS;AAAA,IAC9D;AAAA,EACF;AACF;AAEO,IAAM,cAAc,CAA8B;AAAA,EACvD;AAAA,EACA,eAAe;AAAA,EACf,UAAU;AAAA,EACV,GAAG;AACL,MAGK;AACH,qBAAmB,WAAW;AAE9B,QAAM,aAGF;AACJ,MAAI,QAAQ,IAAI,MAAgD;AAChE,MAAI,UAAU;AACd,MAAI,YAAY;AAChB,MAAI,WAAW;AACf,MAAI,YAAY;AAEhB,MAAI;AAEJ,MAAI,4BAEY;AAChB,MAAI,2BAEY;AAEhB,QAAM,OAAO,MAAM;AACjB,QAAI,CAAC;AAAW;AAEhB,UAAM,aAAa,KAAK,IAAI;AAE5B,QAAI,KAAK,MAAM,aAAa,GAAK,MAAM,WAAW;AAChD,iBAAW;AACX,kBAAY,KAAK,MAAM,aAAa,GAAK;AAAA,IAC3C;AAEA,QAAI;AAAO;AAEX,YACG,WAAW,cAAc,SACtB,WAAW,WAAW,YACtB,UACH,WAAW,gBAAgB,SACxB,UAAU,WAAW,cACrB,SACJ,MAAM,SAAS,GACf;AACA,YAAM,EAAE,MAAM,SAAS,OAAO,IAAI,MAAM,MAAM;AAE9C;AACA;AAEA,aAAO,IAAI,EACR,KAAK,OAAO,EACZ,MAAM,MAAM,EACZ,QAAQ,MAAM;AACb;AAEA,YACE,6BAA6B,UAC7B,MAAM,WAAW,KACjB,YAAY,GACZ;AACA,mCAAyB,QAAQ;AACjC,mCAAyB,YAAY;AAAA,QACvC;AAEA,kBAAU,KAAK,IAAI,QAAQ,SAAS,IAAI;AAAA,MAC1C,CAAC;AAEH,UAAI,8BAA8B,UAAa,MAAM,WAAW,GAAG;AACjE,kCAA0B,QAAQ;AAClC,kCAA0B,YAAY;AAAA,MACxC;AAAA,IACF;AAEA,QACE,WAAW,cAAc,UACzB,YAAY,WAAW,WACvB;AACA,cAAQ;AAAA,QACN,MAAM;AACJ,kBAAQ;AACR,eAAK;AAAA,QACP;AAAA,QACA,MAAS,aAAa;AAAA,MACxB;AACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,MAAM,MAAM;AAAA,IAClB,SAAS,MAAM;AACb,UAAI,SAAS;AACX,eAAO,IAAI;AAAA,UAAgB,CAAC,YAC1B,WAAW,MAAM,QAAQ,OAAO,CAAC;AAAA,QACnC;AAAA,MACF,OAAO;AACL,eAAO,IAAI;AAAA,UAAgB,CAAC,YAC1B,aAAa,MAAM,QAAQ,OAAO,CAAC;AAAA,QACrC;AAAA,MACF;AAAA,IACF;AAAA,IACA,KAAK,CAAC,SAAmB;AACvB,YAAM,EAAE,SAAS,SAAS,OAAO,IAAI,qBAAiC;AACtE,YAAM,KAAK,EAAE,MAAM,SAAS,OAAO,CAAC;AAEpC,WAAK;AAEL,aAAO;AAAA,IACT;AAAA,IACA,OAAO,MAAM;AACX,cAAQ,IAAI,MAAgD;AAC5D,mBAAa,KAAK;AAClB,cAAQ;AAAA,IACV;AAAA,IACA,WAAW,MAAM;AAAA,IACjB,OAAO,MAAM;AACX,UAAI,SAAS;AACX,eAAO,IAAI;AAAA,UAAgB,CAAC,YAC1B,WAAW,MAAM,QAAQ,OAAO,CAAC;AAAA,QACnC,EAAE,KAAK,MAAM;AACX,sBAAY;AACZ,eAAK;AAAA,QACP,CAAC;AAAA,MACH,OAAO;AACL,eAAO,IAAI;AAAA,UAAgB,CAAC,YAC1B,QAAQ,SAAS,MAAM,QAAQ,OAAO,CAAC;AAAA,QACzC,EAAE,KAAK,MAAM;AACX,sBAAY;AACZ,eAAK;AAAA,QACP,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,OAAO,MAAM;AACX,kBAAY;AAAA,IACd;AAAA,IACA,QAAQ,MAAM;AACZ,UACE,6BAA6B,UAC7B,yBAAyB,WACzB;AACA,YAAI,MAAM,WAAW,KAAK,YAAY;AAAG,iBAAO,QAAQ,QAAQ;AAEhE,mCAA2B;AAAA,UACzB,GAAG,qBAA2B;AAAA,UAC9B,WAAW;AAAA,QACb;AAAA,MACF;AACA,aAAO,yBAAyB;AAAA,IAClC;AAAA,IACA,SAAS,MAAM;AACb,UACE,8BAA8B,UAC9B,0BAA0B,WAC1B;AACA,YAAI,MAAM,WAAW;AAAG,iBAAO,QAAQ,QAAQ;AAE/C,oCAA4B;AAAA,UAC1B,GAAG,qBAA2B;AAAA,UAC9B,WAAW;AAAA,QACb;AAAA,MACF;AACA,aAAO,0BAA0B;AAAA,IACnC;AAAA,IACA,eAAe,CAACA,iBAAgB;AAC9B,yBAAmBA,YAAW;AAE9B,UAAI,eAAeA,cAAa;AAC9B,mBAAW,YAAYA,aAAY;AAAA,MACrC;AACA,UAAI,iBAAiBA,cAAa;AAChC,mBAAW,cAAcA,aAAY;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AACF;;;ACvOO,SAAS,OACd,KACA,OACQ;AACR,QAAM,OAAO,oBAAI,IAAe;AAEhC,SAAO,IAAI,OAAO,CAAC,MAAM;AACvB,QAAI,KAAK,IAAI,QAAQ,MAAM,CAAC,IAAI,CAAC;AAAG,aAAO;AAE3C,SAAK,IAAI,CAAC;AACV,WAAO;AAAA,EACT,CAAC;AACH;AAEA;AAAA,EACE;AAAA,IACE,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,IACb,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,IACb,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EACf;AAAA,EACA,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;AACtB;;;ACrCA,SAAS,WAAW;AAOb,IAAM,mBAAmB,CAAC;AAAA,EAC/B;AACF,OAEsB;AAAA,EACpB,WAAW,YAAY;AACrB,WAAO,SAAS,KAAK,EAAE,QAAQ,uBAAuB,GAAG,YAAY;AACnE,YAAM,SAAS,MAAM,SAAS,GAAG,KAC9B,WAAW,gBAAgB,EAC3B,UAAU,EACV,QAAQ;AAEX,UAAI,OAAO,WAAW,GAAG;AACvB,eAAO;AAAA,MACT;AAEA,YAAM,SAAiB,CAAC;AAExB,iBAAW,OAAO,QAAQ;AACxB,eAAO,IAAI,YAAY,IAAI;AAAA,UACzB,OACE,IAAI,gBAAgB,IAAI,kBACpB;AAAA,YACE,QAAQ,OAAO,IAAI,YAAY;AAAA,YAC/B,WAAW,OAAO,IAAI,eAAe;AAAA,UACvC,IACA;AAAA,UACN,OAAO,IAAI;AAAA,QACb;AAAA,MACF;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA,EACA,WAAW,CAAC,WAAmB;AAC7B,WAAO,SAAS,KAAK,EAAE,QAAQ,uBAAuB,GAAG,YAAY;AACnE,YAAM,SAAS,GAAG,KACf,WAAW,gBAAgB,EAC3B;AAAA,QACC,OAAO,QAAQ,MAAM,EAAE,IAAI,CAAC,CAAC,aAAa,KAAK,OAAO;AAAA,UACpD,cAAc;AAAA,UACd,cAAc,MAAM,OAAO;AAAA,UAC3B,iBAAiB,MAAM,OAAO;AAAA,UAC9B,OAAO,MAAM;AAAA,QACf,EAAE;AAAA,MACJ,EACC;AAAA,QAAW,CAAC,OACX,GAAG,OAAO,cAAc,EAAE,YAAY;AAAA,UACpC,cAAc;AAAA,UACd,iBAAiB;AAAA,UACjB,OAAO;AAAA,QACT,CAAC;AAAA,MACH,EACC,QAAQ;AAAA,IACb,CAAC;AAAA,EACH;AACF;;;ACjEO,IAAM,QAAQ,CAAC,OAAc;AAClC,QAAM;AACR;;;ACMO,SAAS,UAAU,OAAY;AACpC,SAAO,KAAK;AAAA,IAAU;AAAA,IAAO,CAAC,GAAG,MAC/B,OAAO,MAAM,WAAW,EAAE,QAAQ,UAAU,OAAO,EAAE,SAAS,EAAE,IAAI;AAAA,EACtE;AACF;AAUO,SAAS,YAAkB,OAAqB;AACrD,SAAO,KAAK;AAAA,IAAM;AAAA,IAAO,CAAC,GAAG,WAC3B,QAAQ,WAAW,WAAW,OAAO,OAAO,KAAK,IAAI;AAAA,EACvD;AACF;","names":["_parameters"]}
|