@mikeatlast/ponder 0.16.1-fork.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3415 -0
- package/README.md +186 -0
- package/dist/esm/bin/commands/codegen.js +46 -0
- package/dist/esm/bin/commands/codegen.js.map +1 -0
- package/dist/esm/bin/commands/createViews.js +196 -0
- package/dist/esm/bin/commands/createViews.js.map +1 -0
- package/dist/esm/bin/commands/dev.js +430 -0
- package/dist/esm/bin/commands/dev.js.map +1 -0
- package/dist/esm/bin/commands/list.js +148 -0
- package/dist/esm/bin/commands/list.js.map +1 -0
- package/dist/esm/bin/commands/prune.js +223 -0
- package/dist/esm/bin/commands/prune.js.map +1 -0
- package/dist/esm/bin/commands/serve.js +198 -0
- package/dist/esm/bin/commands/serve.js.map +1 -0
- package/dist/esm/bin/commands/start.js +253 -0
- package/dist/esm/bin/commands/start.js.map +1 -0
- package/dist/esm/bin/isolatedController.js +200 -0
- package/dist/esm/bin/isolatedController.js.map +1 -0
- package/dist/esm/bin/isolatedWorker.js +146 -0
- package/dist/esm/bin/isolatedWorker.js.map +1 -0
- package/dist/esm/bin/ponder.js +137 -0
- package/dist/esm/bin/ponder.js.map +1 -0
- package/dist/esm/bin/utils/codegen.js +25 -0
- package/dist/esm/bin/utils/codegen.js.map +1 -0
- package/dist/esm/bin/utils/exit.js +100 -0
- package/dist/esm/bin/utils/exit.js.map +1 -0
- package/dist/esm/build/config.js +745 -0
- package/dist/esm/build/config.js.map +1 -0
- package/dist/esm/build/factory.js +82 -0
- package/dist/esm/build/factory.js.map +1 -0
- package/dist/esm/build/index.js +567 -0
- package/dist/esm/build/index.js.map +1 -0
- package/dist/esm/build/plugin.js +53 -0
- package/dist/esm/build/plugin.js.map +1 -0
- package/dist/esm/build/pre.js +83 -0
- package/dist/esm/build/pre.js.map +1 -0
- package/dist/esm/build/schema.js +202 -0
- package/dist/esm/build/schema.js.map +1 -0
- package/dist/esm/build/stacktrace.js +137 -0
- package/dist/esm/build/stacktrace.js.map +1 -0
- package/dist/esm/client/index.js +441 -0
- package/dist/esm/client/index.js.map +1 -0
- package/dist/esm/config/address.js +2 -0
- package/dist/esm/config/address.js.map +1 -0
- package/dist/esm/config/eventFilter.js +2 -0
- package/dist/esm/config/eventFilter.js.map +1 -0
- package/dist/esm/config/index.js +2 -0
- package/dist/esm/config/index.js.map +1 -0
- package/dist/esm/config/utilityTypes.js +2 -0
- package/dist/esm/config/utilityTypes.js.map +1 -0
- package/dist/esm/database/actions.js +445 -0
- package/dist/esm/database/actions.js.map +1 -0
- package/dist/esm/database/index.js +604 -0
- package/dist/esm/database/index.js.map +1 -0
- package/dist/esm/database/queryBuilder.js +314 -0
- package/dist/esm/database/queryBuilder.js.map +1 -0
- package/dist/esm/drizzle/bigint.js +38 -0
- package/dist/esm/drizzle/bigint.js.map +1 -0
- package/dist/esm/drizzle/bytes.js +47 -0
- package/dist/esm/drizzle/bytes.js.map +1 -0
- package/dist/esm/drizzle/hex.js +40 -0
- package/dist/esm/drizzle/hex.js.map +1 -0
- package/dist/esm/drizzle/index.js +28 -0
- package/dist/esm/drizzle/index.js.map +1 -0
- package/dist/esm/drizzle/json.js +123 -0
- package/dist/esm/drizzle/json.js.map +1 -0
- package/dist/esm/drizzle/kit/index.js +927 -0
- package/dist/esm/drizzle/kit/index.js.map +1 -0
- package/dist/esm/drizzle/onchain.js +184 -0
- package/dist/esm/drizzle/onchain.js.map +1 -0
- package/dist/esm/drizzle/text.js +61 -0
- package/dist/esm/drizzle/text.js.map +1 -0
- package/dist/esm/graphql/graphiql.html.js +59 -0
- package/dist/esm/graphql/graphiql.html.js.map +1 -0
- package/dist/esm/graphql/index.js +934 -0
- package/dist/esm/graphql/index.js.map +1 -0
- package/dist/esm/graphql/json.js +42 -0
- package/dist/esm/graphql/json.js.map +1 -0
- package/dist/esm/graphql/middleware.js +83 -0
- package/dist/esm/graphql/middleware.js.map +1 -0
- package/dist/esm/index.js +9 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/indexing/addStackTrace.js +54 -0
- package/dist/esm/indexing/addStackTrace.js.map +1 -0
- package/dist/esm/indexing/client.js +675 -0
- package/dist/esm/indexing/client.js.map +1 -0
- package/dist/esm/indexing/index.js +663 -0
- package/dist/esm/indexing/index.js.map +1 -0
- package/dist/esm/indexing/profile.js +584 -0
- package/dist/esm/indexing/profile.js.map +1 -0
- package/dist/esm/indexing-store/cache.js +666 -0
- package/dist/esm/indexing-store/cache.js.map +1 -0
- package/dist/esm/indexing-store/index.js +461 -0
- package/dist/esm/indexing-store/index.js.map +1 -0
- package/dist/esm/indexing-store/profile.js +428 -0
- package/dist/esm/indexing-store/profile.js.map +1 -0
- package/dist/esm/indexing-store/utils.js +111 -0
- package/dist/esm/indexing-store/utils.js.map +1 -0
- package/dist/esm/internal/common.js +2 -0
- package/dist/esm/internal/common.js.map +1 -0
- package/dist/esm/internal/errors.js +300 -0
- package/dist/esm/internal/errors.js.map +1 -0
- package/dist/esm/internal/logger.js +178 -0
- package/dist/esm/internal/logger.js.map +1 -0
- package/dist/esm/internal/metrics.js +1049 -0
- package/dist/esm/internal/metrics.js.map +1 -0
- package/dist/esm/internal/options.js +73 -0
- package/dist/esm/internal/options.js.map +1 -0
- package/dist/esm/internal/shutdown.js +24 -0
- package/dist/esm/internal/shutdown.js.map +1 -0
- package/dist/esm/internal/telemetry.js +200 -0
- package/dist/esm/internal/telemetry.js.map +1 -0
- package/dist/esm/internal/types.js +2 -0
- package/dist/esm/internal/types.js.map +1 -0
- package/dist/esm/rpc/actions.js +988 -0
- package/dist/esm/rpc/actions.js.map +1 -0
- package/dist/esm/rpc/http.js +130 -0
- package/dist/esm/rpc/http.js.map +1 -0
- package/dist/esm/rpc/index.js +749 -0
- package/dist/esm/rpc/index.js.map +1 -0
- package/dist/esm/runtime/events.js +664 -0
- package/dist/esm/runtime/events.js.map +1 -0
- package/dist/esm/runtime/filter.js +476 -0
- package/dist/esm/runtime/filter.js.map +1 -0
- package/dist/esm/runtime/fragments.js +478 -0
- package/dist/esm/runtime/fragments.js.map +1 -0
- package/dist/esm/runtime/historical.js +954 -0
- package/dist/esm/runtime/historical.js.map +1 -0
- package/dist/esm/runtime/index.js +316 -0
- package/dist/esm/runtime/index.js.map +1 -0
- package/dist/esm/runtime/init.js +12 -0
- package/dist/esm/runtime/init.js.map +1 -0
- package/dist/esm/runtime/isolated.js +464 -0
- package/dist/esm/runtime/isolated.js.map +1 -0
- package/dist/esm/runtime/multichain.js +511 -0
- package/dist/esm/runtime/multichain.js.map +1 -0
- package/dist/esm/runtime/omnichain.js +546 -0
- package/dist/esm/runtime/omnichain.js.map +1 -0
- package/dist/esm/runtime/realtime.js +722 -0
- package/dist/esm/runtime/realtime.js.map +1 -0
- package/dist/esm/server/error.js +56 -0
- package/dist/esm/server/error.js.map +1 -0
- package/dist/esm/server/index.js +121 -0
- package/dist/esm/server/index.js.map +1 -0
- package/dist/esm/sync-historical/index.js +703 -0
- package/dist/esm/sync-historical/index.js.map +1 -0
- package/dist/esm/sync-realtime/bloom.js +76 -0
- package/dist/esm/sync-realtime/bloom.js.map +1 -0
- package/dist/esm/sync-realtime/index.js +918 -0
- package/dist/esm/sync-realtime/index.js.map +1 -0
- package/dist/esm/sync-store/encode.js +105 -0
- package/dist/esm/sync-store/encode.js.map +1 -0
- package/dist/esm/sync-store/index.js +885 -0
- package/dist/esm/sync-store/index.js.map +1 -0
- package/dist/esm/sync-store/migrations.js +1595 -0
- package/dist/esm/sync-store/migrations.js.map +1 -0
- package/dist/esm/sync-store/schema.js +181 -0
- package/dist/esm/sync-store/schema.js.map +1 -0
- package/dist/esm/types/db.js +2 -0
- package/dist/esm/types/db.js.map +1 -0
- package/dist/esm/types/eth.js +2 -0
- package/dist/esm/types/eth.js.map +1 -0
- package/dist/esm/types/utils.js +2 -0
- package/dist/esm/types/utils.js.map +1 -0
- package/dist/esm/types/virtual.js +2 -0
- package/dist/esm/types/virtual.js.map +1 -0
- package/dist/esm/ui/app.js +157 -0
- package/dist/esm/ui/app.js.map +1 -0
- package/dist/esm/ui/index.js +29 -0
- package/dist/esm/ui/index.js.map +1 -0
- package/dist/esm/ui/patch.js +140 -0
- package/dist/esm/ui/patch.js.map +1 -0
- package/dist/esm/utils/abi.js +55 -0
- package/dist/esm/utils/abi.js.map +1 -0
- package/dist/esm/utils/bigint.js +37 -0
- package/dist/esm/utils/bigint.js.map +1 -0
- package/dist/esm/utils/chains.js +21 -0
- package/dist/esm/utils/chains.js.map +1 -0
- package/dist/esm/utils/checkpoint.js +139 -0
- package/dist/esm/utils/checkpoint.js.map +1 -0
- package/dist/esm/utils/chunk.js +8 -0
- package/dist/esm/utils/chunk.js.map +1 -0
- package/dist/esm/utils/copy.js +129 -0
- package/dist/esm/utils/copy.js.map +1 -0
- package/dist/esm/utils/date.js +27 -0
- package/dist/esm/utils/date.js.map +1 -0
- package/dist/esm/utils/debug.js +2 -0
- package/dist/esm/utils/debug.js.map +1 -0
- package/dist/esm/utils/decodeAbiParameters.js +290 -0
- package/dist/esm/utils/decodeAbiParameters.js.map +1 -0
- package/dist/esm/utils/decodeEventLog.js +75 -0
- package/dist/esm/utils/decodeEventLog.js.map +1 -0
- package/dist/esm/utils/dedupe.js +29 -0
- package/dist/esm/utils/dedupe.js.map +1 -0
- package/dist/esm/utils/duplicates.js +19 -0
- package/dist/esm/utils/duplicates.js.map +1 -0
- package/dist/esm/utils/estimate.js +6 -0
- package/dist/esm/utils/estimate.js.map +1 -0
- package/dist/esm/utils/finality.js +38 -0
- package/dist/esm/utils/finality.js.map +1 -0
- package/dist/esm/utils/format.js +20 -0
- package/dist/esm/utils/format.js.map +1 -0
- package/dist/esm/utils/generators.js +121 -0
- package/dist/esm/utils/generators.js.map +1 -0
- package/dist/esm/utils/hash.js +11 -0
- package/dist/esm/utils/hash.js.map +1 -0
- package/dist/esm/utils/interval.js +171 -0
- package/dist/esm/utils/interval.js.map +1 -0
- package/dist/esm/utils/lowercase.js +7 -0
- package/dist/esm/utils/lowercase.js.map +1 -0
- package/dist/esm/utils/mutex.js +26 -0
- package/dist/esm/utils/mutex.js.map +1 -0
- package/dist/esm/utils/never.js +4 -0
- package/dist/esm/utils/never.js.map +1 -0
- package/dist/esm/utils/offset.js +101 -0
- package/dist/esm/utils/offset.js.map +1 -0
- package/dist/esm/utils/order.js +18 -0
- package/dist/esm/utils/order.js.map +1 -0
- package/dist/esm/utils/partition.js +46 -0
- package/dist/esm/utils/partition.js.map +1 -0
- package/dist/esm/utils/pg.js +175 -0
- package/dist/esm/utils/pg.js.map +1 -0
- package/dist/esm/utils/pglite.js +80 -0
- package/dist/esm/utils/pglite.js.map +1 -0
- package/dist/esm/utils/port.js +30 -0
- package/dist/esm/utils/port.js.map +1 -0
- package/dist/esm/utils/print.js +23 -0
- package/dist/esm/utils/print.js.map +1 -0
- package/dist/esm/utils/promiseAllSettledWithThrow.js +19 -0
- package/dist/esm/utils/promiseAllSettledWithThrow.js.map +1 -0
- package/dist/esm/utils/promiseWithResolvers.js +13 -0
- package/dist/esm/utils/promiseWithResolvers.js.map +1 -0
- package/dist/esm/utils/queue.js +150 -0
- package/dist/esm/utils/queue.js.map +1 -0
- package/dist/esm/utils/range.js +8 -0
- package/dist/esm/utils/range.js.map +1 -0
- package/dist/esm/utils/result.js +10 -0
- package/dist/esm/utils/result.js.map +1 -0
- package/dist/esm/utils/sql-parse.js +1326 -0
- package/dist/esm/utils/sql-parse.js.map +1 -0
- package/dist/esm/utils/timer.js +9 -0
- package/dist/esm/utils/timer.js.map +1 -0
- package/dist/esm/utils/truncate.js +15 -0
- package/dist/esm/utils/truncate.js.map +1 -0
- package/dist/esm/utils/wait.js +10 -0
- package/dist/esm/utils/wait.js.map +1 -0
- package/dist/esm/utils/zipper.js +67 -0
- package/dist/esm/utils/zipper.js.map +1 -0
- package/dist/types/bin/commands/codegen.d.ts +5 -0
- package/dist/types/bin/commands/codegen.d.ts.map +1 -0
- package/dist/types/bin/commands/createViews.d.ts +8 -0
- package/dist/types/bin/commands/createViews.d.ts.map +1 -0
- package/dist/types/bin/commands/dev.d.ts +5 -0
- package/dist/types/bin/commands/dev.d.ts.map +1 -0
- package/dist/types/bin/commands/list.d.ts +5 -0
- package/dist/types/bin/commands/list.d.ts.map +1 -0
- package/dist/types/bin/commands/prune.d.ts +5 -0
- package/dist/types/bin/commands/prune.d.ts.map +1 -0
- package/dist/types/bin/commands/serve.d.ts +5 -0
- package/dist/types/bin/commands/serve.d.ts.map +1 -0
- package/dist/types/bin/commands/start.d.ts +19 -0
- package/dist/types/bin/commands/start.d.ts.map +1 -0
- package/dist/types/bin/isolatedController.d.ts +13 -0
- package/dist/types/bin/isolatedController.d.ts.map +1 -0
- package/dist/types/bin/isolatedWorker.d.ts +9 -0
- package/dist/types/bin/isolatedWorker.d.ts.map +1 -0
- package/dist/types/bin/ponder.d.ts +37 -0
- package/dist/types/bin/ponder.d.ts.map +1 -0
- package/dist/types/bin/utils/codegen.d.ts +6 -0
- package/dist/types/bin/utils/codegen.d.ts.map +1 -0
- package/dist/types/bin/utils/exit.d.ts +10 -0
- package/dist/types/bin/utils/exit.d.ts.map +1 -0
- package/dist/types/build/config.d.ts +97 -0
- package/dist/types/build/config.d.ts.map +1 -0
- package/dist/types/build/factory.d.ts +15 -0
- package/dist/types/build/factory.d.ts.map +1 -0
- package/dist/types/build/index.d.ts +84 -0
- package/dist/types/build/index.d.ts.map +1 -0
- package/dist/types/build/plugin.d.ts +4 -0
- package/dist/types/build/plugin.d.ts.map +1 -0
- package/dist/types/build/pre.d.ts +29 -0
- package/dist/types/build/pre.d.ts.map +1 -0
- package/dist/types/build/schema.d.ts +20 -0
- package/dist/types/build/schema.d.ts.map +1 -0
- package/dist/types/build/stacktrace.d.ts +13 -0
- package/dist/types/build/stacktrace.d.ts.map +1 -0
- package/dist/types/client/index.d.ts +27 -0
- package/dist/types/client/index.d.ts.map +1 -0
- package/dist/types/config/address.d.ts +34 -0
- package/dist/types/config/address.d.ts.map +1 -0
- package/dist/types/config/eventFilter.d.ts +18 -0
- package/dist/types/config/eventFilter.d.ts.map +1 -0
- package/dist/types/config/index.d.ts +144 -0
- package/dist/types/config/index.d.ts.map +1 -0
- package/dist/types/config/utilityTypes.d.ts +43 -0
- package/dist/types/config/utilityTypes.d.ts.map +1 -0
- package/dist/types/database/actions.d.ts +99 -0
- package/dist/types/database/actions.d.ts.map +1 -0
- package/dist/types/database/index.d.ts +493 -0
- package/dist/types/database/index.d.ts.map +1 -0
- package/dist/types/database/queryBuilder.d.ts +65 -0
- package/dist/types/database/queryBuilder.d.ts.map +1 -0
- package/dist/types/drizzle/bigint.d.ts +25 -0
- package/dist/types/drizzle/bigint.d.ts.map +1 -0
- package/dist/types/drizzle/bytes.d.ts +31 -0
- package/dist/types/drizzle/bytes.d.ts.map +1 -0
- package/dist/types/drizzle/hex.d.ts +25 -0
- package/dist/types/drizzle/hex.d.ts.map +1 -0
- package/dist/types/drizzle/index.d.ts +6 -0
- package/dist/types/drizzle/index.d.ts.map +1 -0
- package/dist/types/drizzle/json.d.ts +51 -0
- package/dist/types/drizzle/json.d.ts.map +1 -0
- package/dist/types/drizzle/kit/index.d.ts +187 -0
- package/dist/types/drizzle/kit/index.d.ts.map +1 -0
- package/dist/types/drizzle/onchain.d.ts +298 -0
- package/dist/types/drizzle/onchain.d.ts.map +1 -0
- package/dist/types/drizzle/text.d.ts +29 -0
- package/dist/types/drizzle/text.d.ts.map +1 -0
- package/dist/types/graphql/graphiql.html.d.ts +2 -0
- package/dist/types/graphql/graphiql.html.d.ts.map +1 -0
- package/dist/types/graphql/index.d.ts +12 -0
- package/dist/types/graphql/index.d.ts.map +1 -0
- package/dist/types/graphql/json.d.ts +3 -0
- package/dist/types/graphql/json.d.ts.map +1 -0
- package/dist/types/graphql/middleware.d.ts +29 -0
- package/dist/types/graphql/middleware.d.ts.map +1 -0
- package/dist/types/index.d.ts +23 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/indexing/addStackTrace.d.ts +3 -0
- package/dist/types/indexing/addStackTrace.d.ts.map +1 -0
- package/dist/types/indexing/client.d.ts +154 -0
- package/dist/types/indexing/client.d.ts.map +1 -0
- package/dist/types/indexing/index.d.ts +72 -0
- package/dist/types/indexing/index.d.ts.map +1 -0
- package/dist/types/indexing/profile.d.ts +16 -0
- package/dist/types/indexing/profile.d.ts.map +1 -0
- package/dist/types/indexing-store/cache.d.ts +115 -0
- package/dist/types/indexing-store/cache.d.ts.map +1 -0
- package/dist/types/indexing-store/index.d.ts +24 -0
- package/dist/types/indexing-store/index.d.ts.map +1 -0
- package/dist/types/indexing-store/profile.d.ts +7 -0
- package/dist/types/indexing-store/profile.d.ts.map +1 -0
- package/dist/types/indexing-store/utils.d.ts +19 -0
- package/dist/types/indexing-store/utils.d.ts.map +1 -0
- package/dist/types/internal/common.d.ts +15 -0
- package/dist/types/internal/common.d.ts.map +1 -0
- package/dist/types/internal/errors.d.ts +101 -0
- package/dist/types/internal/errors.d.ts.map +1 -0
- package/dist/types/internal/logger.d.ts +37 -0
- package/dist/types/internal/logger.d.ts.map +1 -0
- package/dist/types/internal/metrics.d.ts +120 -0
- package/dist/types/internal/metrics.d.ts.map +1 -0
- package/dist/types/internal/options.d.ts +62 -0
- package/dist/types/internal/options.d.ts.map +1 -0
- package/dist/types/internal/shutdown.d.ts +8 -0
- package/dist/types/internal/shutdown.d.ts.map +1 -0
- package/dist/types/internal/telemetry.d.ts +43 -0
- package/dist/types/internal/telemetry.d.ts.map +1 -0
- package/dist/types/internal/types.d.ts +443 -0
- package/dist/types/internal/types.d.ts.map +1 -0
- package/dist/types/rpc/actions.d.ts +360 -0
- package/dist/types/rpc/actions.d.ts.map +1 -0
- package/dist/types/rpc/http.d.ts +17 -0
- package/dist/types/rpc/http.d.ts.map +1 -0
- package/dist/types/rpc/index.d.ts +43 -0
- package/dist/types/rpc/index.d.ts.map +1 -0
- package/dist/types/runtime/events.d.ts +40 -0
- package/dist/types/runtime/events.d.ts.map +1 -0
- package/dist/types/runtime/filter.d.ts +96 -0
- package/dist/types/runtime/filter.d.ts.map +1 -0
- package/dist/types/runtime/fragments.d.ts +30 -0
- package/dist/types/runtime/fragments.d.ts.map +1 -0
- package/dist/types/runtime/historical.d.ts +123 -0
- package/dist/types/runtime/historical.d.ts.map +1 -0
- package/dist/types/runtime/index.d.ts +89 -0
- package/dist/types/runtime/index.d.ts.map +1 -0
- package/dist/types/runtime/init.d.ts +28 -0
- package/dist/types/runtime/init.d.ts.map +1 -0
- package/dist/types/runtime/isolated.d.ts +14 -0
- package/dist/types/runtime/isolated.d.ts.map +1 -0
- package/dist/types/runtime/multichain.d.ts +13 -0
- package/dist/types/runtime/multichain.d.ts.map +1 -0
- package/dist/types/runtime/omnichain.d.ts +23 -0
- package/dist/types/runtime/omnichain.d.ts.map +1 -0
- package/dist/types/runtime/realtime.d.ts +93 -0
- package/dist/types/runtime/realtime.d.ts.map +1 -0
- package/dist/types/server/error.d.ts +5 -0
- package/dist/types/server/error.d.ts.map +1 -0
- package/dist/types/server/index.d.ts +13 -0
- package/dist/types/server/index.d.ts.map +1 -0
- package/dist/types/sync-historical/index.d.ts +36 -0
- package/dist/types/sync-historical/index.d.ts.map +1 -0
- package/dist/types/sync-realtime/bloom.d.ts +18 -0
- package/dist/types/sync-realtime/bloom.d.ts.map +1 -0
- package/dist/types/sync-realtime/index.d.ts +48 -0
- package/dist/types/sync-realtime/index.d.ts.map +1 -0
- package/dist/types/sync-store/encode.d.ts +25 -0
- package/dist/types/sync-store/encode.d.ts.map +1 -0
- package/dist/types/sync-store/index.d.ts +135 -0
- package/dist/types/sync-store/index.d.ts.map +1 -0
- package/dist/types/sync-store/migrations.d.ts +8 -0
- package/dist/types/sync-store/migrations.d.ts.map +1 -0
- package/dist/types/sync-store/schema.d.ts +1828 -0
- package/dist/types/sync-store/schema.d.ts.map +1 -0
- package/dist/types/types/db.d.ts +213 -0
- package/dist/types/types/db.d.ts.map +1 -0
- package/dist/types/types/eth.d.ts +196 -0
- package/dist/types/types/eth.d.ts.map +1 -0
- package/dist/types/types/utils.d.ts +38 -0
- package/dist/types/types/utils.d.ts.map +1 -0
- package/dist/types/types/virtual.d.ts +99 -0
- package/dist/types/types/virtual.d.ts.map +1 -0
- package/dist/types/ui/app.d.ts +22 -0
- package/dist/types/ui/app.d.ts.map +1 -0
- package/dist/types/ui/index.d.ts +5 -0
- package/dist/types/ui/index.d.ts.map +1 -0
- package/dist/types/ui/patch.d.ts +7 -0
- package/dist/types/ui/patch.d.ts.map +1 -0
- package/dist/types/utils/abi.d.ts +23 -0
- package/dist/types/utils/abi.d.ts.map +1 -0
- package/dist/types/utils/bigint.d.ts +15 -0
- package/dist/types/utils/bigint.d.ts.map +1 -0
- package/dist/types/utils/chains.d.ts +42 -0
- package/dist/types/utils/chains.d.ts.map +1 -0
- package/dist/types/utils/checkpoint.d.ts +52 -0
- package/dist/types/utils/checkpoint.d.ts.map +1 -0
- package/dist/types/utils/chunk.d.ts +2 -0
- package/dist/types/utils/chunk.d.ts.map +1 -0
- package/dist/types/utils/copy.d.ts +16 -0
- package/dist/types/utils/copy.d.ts.map +1 -0
- package/dist/types/utils/date.d.ts +7 -0
- package/dist/types/utils/date.d.ts.map +1 -0
- package/dist/types/utils/debug.d.ts +105 -0
- package/dist/types/utils/debug.d.ts.map +1 -0
- package/dist/types/utils/decodeAbiParameters.d.ts +28 -0
- package/dist/types/utils/decodeAbiParameters.d.ts.map +1 -0
- package/dist/types/utils/decodeEventLog.d.ts +12 -0
- package/dist/types/utils/decodeEventLog.d.ts.map +1 -0
- package/dist/types/utils/dedupe.d.ts +20 -0
- package/dist/types/utils/dedupe.d.ts.map +1 -0
- package/dist/types/utils/duplicates.d.ts +7 -0
- package/dist/types/utils/duplicates.d.ts.map +1 -0
- package/dist/types/utils/estimate.d.ts +11 -0
- package/dist/types/utils/estimate.d.ts.map +1 -0
- package/dist/types/utils/finality.d.ts +12 -0
- package/dist/types/utils/finality.d.ts.map +1 -0
- package/dist/types/utils/format.d.ts +3 -0
- package/dist/types/utils/format.d.ts.map +1 -0
- package/dist/types/utils/generators.d.ts +42 -0
- package/dist/types/utils/generators.d.ts.map +1 -0
- package/dist/types/utils/hash.d.ts +11 -0
- package/dist/types/utils/hash.d.ts.map +1 -0
- package/dist/types/utils/interval.d.ts +53 -0
- package/dist/types/utils/interval.d.ts.map +1 -0
- package/dist/types/utils/lowercase.d.ts +5 -0
- package/dist/types/utils/lowercase.d.ts.map +1 -0
- package/dist/types/utils/mutex.d.ts +5 -0
- package/dist/types/utils/mutex.d.ts.map +1 -0
- package/dist/types/utils/never.d.ts +2 -0
- package/dist/types/utils/never.d.ts.map +1 -0
- package/dist/types/utils/offset.d.ts +8 -0
- package/dist/types/utils/offset.d.ts.map +1 -0
- package/dist/types/utils/order.d.ts +2 -0
- package/dist/types/utils/order.d.ts.map +1 -0
- package/dist/types/utils/partition.d.ts +22 -0
- package/dist/types/utils/partition.d.ts.map +1 -0
- package/dist/types/utils/pg.d.ts +8 -0
- package/dist/types/utils/pg.d.ts.map +1 -0
- package/dist/types/utils/pglite.d.ts +25 -0
- package/dist/types/utils/pglite.d.ts.map +1 -0
- package/dist/types/utils/port.d.ts +5 -0
- package/dist/types/utils/port.d.ts.map +1 -0
- package/dist/types/utils/print.d.ts +2 -0
- package/dist/types/utils/print.d.ts.map +1 -0
- package/dist/types/utils/promiseAllSettledWithThrow.d.ts +8 -0
- package/dist/types/utils/promiseAllSettledWithThrow.d.ts.map +1 -0
- package/dist/types/utils/promiseWithResolvers.d.ts +10 -0
- package/dist/types/utils/promiseWithResolvers.d.ts.map +1 -0
- package/dist/types/utils/queue.d.ts +33 -0
- package/dist/types/utils/queue.d.ts.map +1 -0
- package/dist/types/utils/range.d.ts +8 -0
- package/dist/types/utils/range.d.ts.map +1 -0
- package/dist/types/utils/result.d.ts +17 -0
- package/dist/types/utils/result.d.ts.map +1 -0
- package/dist/types/utils/sql-parse.d.ts +21 -0
- package/dist/types/utils/sql-parse.d.ts.map +1 -0
- package/dist/types/utils/timer.d.ts +6 -0
- package/dist/types/utils/timer.d.ts.map +1 -0
- package/dist/types/utils/truncate.d.ts +9 -0
- package/dist/types/utils/truncate.d.ts.map +1 -0
- package/dist/types/utils/wait.d.ts +6 -0
- package/dist/types/utils/wait.d.ts.map +1 -0
- package/dist/types/utils/zipper.d.ts +36 -0
- package/dist/types/utils/zipper.d.ts.map +1 -0
- package/package.json +114 -0
- package/src/bin/commands/codegen.ts +56 -0
- package/src/bin/commands/createViews.ts +318 -0
- package/src/bin/commands/dev.ts +490 -0
- package/src/bin/commands/list.ts +208 -0
- package/src/bin/commands/prune.ts +322 -0
- package/src/bin/commands/serve.ts +236 -0
- package/src/bin/commands/start.ts +319 -0
- package/src/bin/isolatedController.ts +300 -0
- package/src/bin/isolatedWorker.ts +192 -0
- package/src/bin/ponder.ts +208 -0
- package/src/bin/utils/codegen.ts +32 -0
- package/src/bin/utils/exit.ts +112 -0
- package/src/build/config.ts +1141 -0
- package/src/build/factory.ts +147 -0
- package/src/build/index.ts +790 -0
- package/src/build/plugin.ts +58 -0
- package/src/build/pre.ts +114 -0
- package/src/build/schema.ts +358 -0
- package/src/build/stacktrace.ts +137 -0
- package/src/client/index.ts +551 -0
- package/src/config/address.ts +45 -0
- package/src/config/eventFilter.ts +33 -0
- package/src/config/index.ts +240 -0
- package/src/config/utilityTypes.ts +152 -0
- package/src/database/actions.ts +873 -0
- package/src/database/index.ts +1029 -0
- package/src/database/queryBuilder.ts +537 -0
- package/src/drizzle/bigint.ts +57 -0
- package/src/drizzle/bytes.ts +68 -0
- package/src/drizzle/hex.ts +58 -0
- package/src/drizzle/index.ts +40 -0
- package/src/drizzle/json.ts +159 -0
- package/src/drizzle/kit/index.ts +1348 -0
- package/src/drizzle/onchain.ts +476 -0
- package/src/drizzle/text.ts +77 -0
- package/src/graphql/graphiql.html.ts +59 -0
- package/src/graphql/index.ts +1351 -0
- package/src/graphql/json.ts +62 -0
- package/src/graphql/middleware.ts +115 -0
- package/src/index.ts +139 -0
- package/src/indexing/addStackTrace.ts +69 -0
- package/src/indexing/client.ts +1184 -0
- package/src/indexing/index.ts +976 -0
- package/src/indexing/profile.ts +771 -0
- package/src/indexing-store/cache.ts +1057 -0
- package/src/indexing-store/index.ts +628 -0
- package/src/indexing-store/profile.ts +557 -0
- package/src/indexing-store/utils.ts +162 -0
- package/src/internal/common.ts +15 -0
- package/src/internal/errors.ts +228 -0
- package/src/internal/logger.ts +252 -0
- package/src/internal/metrics.ts +1030 -0
- package/src/internal/options.ts +130 -0
- package/src/internal/shutdown.ts +32 -0
- package/src/internal/telemetry.ts +303 -0
- package/src/internal/types.ts +611 -0
- package/src/rpc/actions.ts +1344 -0
- package/src/rpc/http.ts +164 -0
- package/src/rpc/index.ts +959 -0
- package/src/runtime/events.ts +875 -0
- package/src/runtime/filter.ts +705 -0
- package/src/runtime/fragments.ts +674 -0
- package/src/runtime/historical.ts +1522 -0
- package/src/runtime/index.ts +569 -0
- package/src/runtime/init.ts +49 -0
- package/src/runtime/isolated.ts +775 -0
- package/src/runtime/multichain.ts +860 -0
- package/src/runtime/omnichain.ts +920 -0
- package/src/runtime/realtime.ts +1164 -0
- package/src/server/error.ts +68 -0
- package/src/server/index.ts +173 -0
- package/src/sync-historical/index.ts +1065 -0
- package/src/sync-realtime/bloom.ts +102 -0
- package/src/sync-realtime/index.ts +1304 -0
- package/src/sync-store/encode.ts +153 -0
- package/src/sync-store/index.ts +1633 -0
- package/src/sync-store/migrations.ts +1801 -0
- package/src/sync-store/schema.ts +248 -0
- package/src/types/db.ts +292 -0
- package/src/types/eth.ts +216 -0
- package/src/types/utils.ts +47 -0
- package/src/types/virtual.ts +244 -0
- package/src/types.d.ts +38 -0
- package/src/ui/app.ts +207 -0
- package/src/ui/index.ts +37 -0
- package/src/ui/patch.ts +204 -0
- package/src/utils/abi.ts +103 -0
- package/src/utils/bigint.ts +41 -0
- package/src/utils/chains.ts +22 -0
- package/src/utils/checkpoint.ts +203 -0
- package/src/utils/chunk.ts +7 -0
- package/src/utils/copy.ts +151 -0
- package/src/utils/date.ts +26 -0
- package/src/utils/debug.ts +110 -0
- package/src/utils/decodeAbiParameters.ts +428 -0
- package/src/utils/decodeEventLog.ts +100 -0
- package/src/utils/dedupe.ts +32 -0
- package/src/utils/duplicates.ts +19 -0
- package/src/utils/estimate.ts +27 -0
- package/src/utils/finality.ts +40 -0
- package/src/utils/format.ts +22 -0
- package/src/utils/generators.ts +157 -0
- package/src/utils/hash.ts +22 -0
- package/src/utils/interval.ts +212 -0
- package/src/utils/lowercase.ts +6 -0
- package/src/utils/mutex.ts +33 -0
- package/src/utils/never.ts +3 -0
- package/src/utils/offset.ts +133 -0
- package/src/utils/order.ts +16 -0
- package/src/utils/partition.ts +53 -0
- package/src/utils/pg.ts +230 -0
- package/src/utils/pglite.ts +97 -0
- package/src/utils/port.ts +34 -0
- package/src/utils/print.ts +31 -0
- package/src/utils/promiseAllSettledWithThrow.ts +27 -0
- package/src/utils/promiseWithResolvers.ts +20 -0
- package/src/utils/queue.ts +258 -0
- package/src/utils/range.ts +8 -0
- package/src/utils/result.ts +26 -0
- package/src/utils/sql-parse.ts +1477 -0
- package/src/utils/timer.ts +8 -0
- package/src/utils/truncate.ts +15 -0
- package/src/utils/wait.ts +8 -0
- package/src/utils/zipper.ts +80 -0
|
@@ -0,0 +1,476 @@
|
|
|
1
|
+
import type { PonderTypeError } from "@/types/utils.js";
|
|
2
|
+
import {
|
|
3
|
+
type BuildColumns,
|
|
4
|
+
type ColumnBuilderBase,
|
|
5
|
+
Table,
|
|
6
|
+
type Writable,
|
|
7
|
+
getTableName,
|
|
8
|
+
} from "drizzle-orm";
|
|
9
|
+
import { toSnakeCase } from "drizzle-orm/casing";
|
|
10
|
+
import {
|
|
11
|
+
type AnyPgColumn,
|
|
12
|
+
type PrimaryKeyBuilder as DrizzlePrimaryKeyBuilder,
|
|
13
|
+
type ExtraConfigColumn,
|
|
14
|
+
ManualViewBuilder,
|
|
15
|
+
type PgColumnBuilder,
|
|
16
|
+
type PgColumnBuilderBase,
|
|
17
|
+
PgEnumColumnBuilder,
|
|
18
|
+
type PgEnumColumnBuilderInitial,
|
|
19
|
+
PgTable,
|
|
20
|
+
type PgTableExtraConfig,
|
|
21
|
+
type PgTableWithColumns,
|
|
22
|
+
type PgTextConfig,
|
|
23
|
+
type TableConfig,
|
|
24
|
+
ViewBuilder,
|
|
25
|
+
primaryKey as drizzlePrimaryKey,
|
|
26
|
+
} from "drizzle-orm/pg-core";
|
|
27
|
+
import {
|
|
28
|
+
type PgColumnsBuilders as _PgColumnsBuilders,
|
|
29
|
+
getPgColumnBuilders,
|
|
30
|
+
} from "drizzle-orm/pg-core/columns/all";
|
|
31
|
+
import { PgBigintBuilder, type PgBigintBuilderInitial } from "./bigint.js";
|
|
32
|
+
import { PgBytesBuilder, type PgBytesBuilderInitial } from "./bytes.js";
|
|
33
|
+
import { PgHexBuilder, type PgHexBuilderInitial } from "./hex.js";
|
|
34
|
+
import {
|
|
35
|
+
PgJsonBuilder,
|
|
36
|
+
type PgJsonBuilderInitial,
|
|
37
|
+
PgJsonbBuilder,
|
|
38
|
+
type PgJsonbBuilderInitial,
|
|
39
|
+
} from "./json.js";
|
|
40
|
+
import { PgTextBuilder, type PgTextBuilderInitial } from "./text.js";
|
|
41
|
+
|
|
42
|
+
// 16 digits for chain ID.
|
|
43
|
+
export const MAX_DATABASE_OBJECT_NAME_LENGTH = 45;
|
|
44
|
+
|
|
45
|
+
// Note: All of these database object names should be less than 63 characters, otherwise they will
|
|
46
|
+
// be truncated by postgres.
|
|
47
|
+
|
|
48
|
+
export const getLiveQueryTriggerName = () => {
|
|
49
|
+
return "live_query";
|
|
50
|
+
};
|
|
51
|
+
export const getLiveQueryProcedureName = () => {
|
|
52
|
+
return "live_query()";
|
|
53
|
+
};
|
|
54
|
+
export const getLiveQueryChannelName = (schema: string) => {
|
|
55
|
+
return `${schema}_live_query`;
|
|
56
|
+
};
|
|
57
|
+
export const getLiveQueryNotifyTriggerName = () => {
|
|
58
|
+
return "live_query_notify";
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Returns the name of the trigger used to notify live queries for the views pattern.
|
|
62
|
+
* @dev The trigger is placed in the base schema, but used to notify in the views schema.
|
|
63
|
+
*/
|
|
64
|
+
export const getViewsLiveQueryNotifyTriggerName = (viewsSchema: string) => {
|
|
65
|
+
return `${viewsSchema}_live_query_notify`;
|
|
66
|
+
};
|
|
67
|
+
export const getLiveQueryNotifyProcedureName = () => {
|
|
68
|
+
return "live_query_notify()";
|
|
69
|
+
};
|
|
70
|
+
export const getLiveQueryTempTableName = () => {
|
|
71
|
+
return "live_query_tables";
|
|
72
|
+
};
|
|
73
|
+
export const getPartitionName = (table: string | PgTable, chainId: number) => {
|
|
74
|
+
return `${typeof table === "string" ? table : getTableName(table)}_${chainId}`;
|
|
75
|
+
};
|
|
76
|
+
export const getReorgTableName = (table: string | PgTable) => {
|
|
77
|
+
return `_reorg__${typeof table === "string" ? table : getTableName(table)}`;
|
|
78
|
+
};
|
|
79
|
+
export const getReorgTriggerName = () => {
|
|
80
|
+
return "reorg";
|
|
81
|
+
};
|
|
82
|
+
export const getReorgProcedureName = (table: string | PgTable) => {
|
|
83
|
+
return `operation_reorg__${typeof table === "string" ? table : getTableName(table)}()`;
|
|
84
|
+
};
|
|
85
|
+
export const getReorgSequenceName = () => {
|
|
86
|
+
return "operation_id";
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
/** @internal */
|
|
90
|
+
function getColumnNameAndConfig<
|
|
91
|
+
TConfig extends Record<string, any> | undefined,
|
|
92
|
+
>(a: string | TConfig | undefined, b: TConfig | undefined) {
|
|
93
|
+
return {
|
|
94
|
+
name: typeof a === "string" && a.length > 0 ? a : ("" as string),
|
|
95
|
+
config: typeof a === "object" ? a : (b as TConfig),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// @ts-ignore
|
|
100
|
+
export function hex(): PgHexBuilderInitial<"">;
|
|
101
|
+
export function hex<name extends string>(
|
|
102
|
+
columnName: name,
|
|
103
|
+
): PgHexBuilderInitial<name>;
|
|
104
|
+
export function hex(columnName?: string) {
|
|
105
|
+
return new PgHexBuilder(columnName ?? "");
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// @ts-ignore
|
|
109
|
+
export function bigint(): PgBigintBuilderInitial<"">;
|
|
110
|
+
export function bigint<name extends string>(
|
|
111
|
+
columnName: name,
|
|
112
|
+
): PgBigintBuilderInitial<name>;
|
|
113
|
+
export function bigint(columnName?: string) {
|
|
114
|
+
return new PgBigintBuilder(columnName ?? "");
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export function json(): PgJsonBuilderInitial<"">;
|
|
118
|
+
export function json<name extends string>(
|
|
119
|
+
name: name,
|
|
120
|
+
): PgJsonBuilderInitial<name>;
|
|
121
|
+
export function json(name?: string) {
|
|
122
|
+
return new PgJsonBuilder(name ?? "");
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export function jsonb(): PgJsonbBuilderInitial<"">;
|
|
126
|
+
export function jsonb<name extends string>(
|
|
127
|
+
name: name,
|
|
128
|
+
): PgJsonbBuilderInitial<name>;
|
|
129
|
+
export function jsonb(name?: string) {
|
|
130
|
+
return new PgJsonbBuilder(name ?? "");
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// @ts-ignore
|
|
134
|
+
export function bytes(): PgBytesBuilderInitial<"">;
|
|
135
|
+
export function bytes<name extends string>(
|
|
136
|
+
columnName: name,
|
|
137
|
+
): PgBytesBuilderInitial<name>;
|
|
138
|
+
export function bytes(columnName?: string) {
|
|
139
|
+
return new PgBytesBuilder(columnName ?? "");
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export function text(): PgTextBuilderInitial<"", [string, ...string[]]>;
|
|
143
|
+
export function text<U extends string, T extends Readonly<[U, ...U[]]>>(
|
|
144
|
+
config?: PgTextConfig<T | Writable<T>>,
|
|
145
|
+
): PgTextBuilderInitial<"", Writable<T>>;
|
|
146
|
+
export function text<
|
|
147
|
+
TName extends string,
|
|
148
|
+
U extends string,
|
|
149
|
+
T extends Readonly<[U, ...U[]]>,
|
|
150
|
+
>(
|
|
151
|
+
name: TName,
|
|
152
|
+
config?: PgTextConfig<T | Writable<T>>,
|
|
153
|
+
): PgTextBuilderInitial<TName, Writable<T>>;
|
|
154
|
+
export function text(a?: string | PgTextConfig, b: PgTextConfig = {}): any {
|
|
155
|
+
const { name, config } = getColumnNameAndConfig<PgTextConfig>(a, b);
|
|
156
|
+
return new PgTextBuilder(name, config as any);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export const onchain = Symbol.for("ponder:onchain");
|
|
160
|
+
|
|
161
|
+
export type PrimaryKeyBuilder<columnNames extends string = string> =
|
|
162
|
+
DrizzlePrimaryKeyBuilder & { columnNames: columnNames };
|
|
163
|
+
|
|
164
|
+
export const primaryKey = <
|
|
165
|
+
tableName extends string,
|
|
166
|
+
column extends AnyPgColumn<{ tableName: tableName }> & { " name": string },
|
|
167
|
+
columns extends (AnyPgColumn<{ tableName: tableName }> & {
|
|
168
|
+
" name": string;
|
|
169
|
+
})[],
|
|
170
|
+
>({
|
|
171
|
+
name,
|
|
172
|
+
columns,
|
|
173
|
+
}: { name?: string; columns: [column, ...columns] }) =>
|
|
174
|
+
drizzlePrimaryKey({ name, columns }) as PrimaryKeyBuilder<
|
|
175
|
+
column[" name"] | columns[number][" name"]
|
|
176
|
+
>;
|
|
177
|
+
|
|
178
|
+
export type OnchainTable<
|
|
179
|
+
T extends TableConfig & {
|
|
180
|
+
extra: PgTableExtraConfig | undefined;
|
|
181
|
+
} = TableConfig & { extra: PgTableExtraConfig | undefined },
|
|
182
|
+
> = PgTable<T> & {
|
|
183
|
+
[Key in keyof T["columns"]]: T["columns"][Key];
|
|
184
|
+
} & { [onchain]: true } & {
|
|
185
|
+
enableRLS: () => Omit<OnchainTable<T>, "enableRLS">;
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
export type BuildExtraConfigColumns<
|
|
189
|
+
columns extends Record<string, ColumnBuilderBase>,
|
|
190
|
+
> = {
|
|
191
|
+
[key in keyof columns]: ExtraConfigColumn & {
|
|
192
|
+
" name": key;
|
|
193
|
+
};
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
export type PgColumnsBuilders = Omit<
|
|
197
|
+
_PgColumnsBuilders,
|
|
198
|
+
"bigint" | "serial" | "smallserial" | "bigserial" | "json" | "jsonb"
|
|
199
|
+
> & {
|
|
200
|
+
/**
|
|
201
|
+
* Create an 8 byte number column.
|
|
202
|
+
*/
|
|
203
|
+
int8: _PgColumnsBuilders["bigint"];
|
|
204
|
+
/**
|
|
205
|
+
* Create a column for hex strings.
|
|
206
|
+
*
|
|
207
|
+
* - Docs: https://ponder.sh/docs/api-reference/ponder/schema#onchaintable
|
|
208
|
+
*
|
|
209
|
+
* @example
|
|
210
|
+
* import { hex, onchainTable } from "ponder";
|
|
211
|
+
*
|
|
212
|
+
* export const account = onchainTable("account", (p) => ({
|
|
213
|
+
* address: p.hex(),
|
|
214
|
+
* }));
|
|
215
|
+
*/
|
|
216
|
+
hex: typeof hex;
|
|
217
|
+
/**
|
|
218
|
+
* Create a column for Ethereum integers
|
|
219
|
+
*
|
|
220
|
+
* - Docs: https://ponder.sh/docs/api-reference/ponder/schema#onchaintable
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* import { bigint, onchainTable } from "ponder";
|
|
224
|
+
*
|
|
225
|
+
* export const account = onchainTable("account", (p) => ({
|
|
226
|
+
* balance: p.bigint(),
|
|
227
|
+
* }));
|
|
228
|
+
*/
|
|
229
|
+
bigint: typeof bigint;
|
|
230
|
+
/**
|
|
231
|
+
* Create a column for Ethereum bytes
|
|
232
|
+
*
|
|
233
|
+
* - Docs: https://ponder.sh/docs/api-reference/ponder/schema#onchaintable
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* import { bytes, onchainTable } from "ponder";
|
|
237
|
+
*
|
|
238
|
+
* export const account = onchainTable("account", (p) => ({
|
|
239
|
+
* calldata: p.bytes(),
|
|
240
|
+
* }));
|
|
241
|
+
*/
|
|
242
|
+
bytes: typeof bytes;
|
|
243
|
+
json: typeof json;
|
|
244
|
+
jsonb: typeof jsonb;
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Create an onchain table.
|
|
249
|
+
*
|
|
250
|
+
* - Docs: https://ponder.sh/docs/api-reference/ponder/schema#onchaintable
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* import { onchainTable } from "ponder";
|
|
254
|
+
*
|
|
255
|
+
* export const account = onchainTable("account", (p) => ({
|
|
256
|
+
* address: p.hex().primaryKey(),
|
|
257
|
+
* balance: p.bigint().notNull(),
|
|
258
|
+
* }));
|
|
259
|
+
*
|
|
260
|
+
* @param name - The table name in the database.
|
|
261
|
+
* @param columns - The table columns.
|
|
262
|
+
* @param extra - Config such as indexes or composite primary keys.
|
|
263
|
+
* @returns The onchain table.
|
|
264
|
+
*/
|
|
265
|
+
export const onchainTable = <
|
|
266
|
+
name extends string,
|
|
267
|
+
columns extends Record<string, PgColumnBuilderBase>,
|
|
268
|
+
extra extends PgTableExtraConfig | undefined = undefined,
|
|
269
|
+
>(
|
|
270
|
+
name: name extends "" ? PonderTypeError<`Table name cannot be empty`> : name,
|
|
271
|
+
columns: columns | ((columnTypes: PgColumnsBuilders) => columns),
|
|
272
|
+
extraConfig?: (self: BuildExtraConfigColumns<columns>) => extra,
|
|
273
|
+
): OnchainTable<{
|
|
274
|
+
name: name;
|
|
275
|
+
schema: undefined;
|
|
276
|
+
columns: BuildColumns<name, columns, "pg">;
|
|
277
|
+
extra: extra;
|
|
278
|
+
dialect: "pg";
|
|
279
|
+
}> => {
|
|
280
|
+
const schema = globalThis?.PONDER_NAMESPACE_BUILD?.schema;
|
|
281
|
+
const table = pgTableWithSchema(name, columns, extraConfig as any, schema);
|
|
282
|
+
|
|
283
|
+
// @ts-ignore
|
|
284
|
+
table[onchain] = true;
|
|
285
|
+
|
|
286
|
+
// @ts-ignore
|
|
287
|
+
return table;
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Create an onchain view.
|
|
292
|
+
*
|
|
293
|
+
* - Docs: https://ponder.sh/docs/api-reference/ponder/schema#onchainview
|
|
294
|
+
*
|
|
295
|
+
* @example
|
|
296
|
+
* import { onchainView } from "ponder";
|
|
297
|
+
*
|
|
298
|
+
* export const accountView = onchainView("account_view").as((qb) =>
|
|
299
|
+
* qb.select().from(account),
|
|
300
|
+
* );
|
|
301
|
+
*
|
|
302
|
+
* @param name - The view name in the database.
|
|
303
|
+
* @param columns - [Optional] The view columns.
|
|
304
|
+
* @returns The onchain view.
|
|
305
|
+
*/
|
|
306
|
+
export function onchainView<TName extends string>(
|
|
307
|
+
name: TName,
|
|
308
|
+
): ViewBuilder<TName>;
|
|
309
|
+
export function onchainView<
|
|
310
|
+
TName extends string,
|
|
311
|
+
TColumns extends Record<string, PgColumnBuilderBase>,
|
|
312
|
+
>(name: TName, columns: TColumns): ManualViewBuilder<TName, TColumns>;
|
|
313
|
+
export function onchainView(
|
|
314
|
+
name: string,
|
|
315
|
+
columns?: Record<string, PgColumnBuilderBase>,
|
|
316
|
+
): ViewBuilder | ManualViewBuilder {
|
|
317
|
+
const schema = globalThis?.PONDER_NAMESPACE_BUILD?.schema;
|
|
318
|
+
|
|
319
|
+
const view = pgViewWithSchema(name, columns, schema);
|
|
320
|
+
|
|
321
|
+
// @ts-ignore
|
|
322
|
+
view[onchain] = true;
|
|
323
|
+
|
|
324
|
+
return view;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
export const isPgEnumSym = Symbol.for("drizzle:isPgEnum");
|
|
328
|
+
|
|
329
|
+
export type OnchainEnum<TValues extends [string, ...string[]]> = {
|
|
330
|
+
(): PgEnumColumnBuilderInitial<"", TValues>;
|
|
331
|
+
<TName extends string>(
|
|
332
|
+
name: TName,
|
|
333
|
+
): PgEnumColumnBuilderInitial<TName, TValues>;
|
|
334
|
+
<TName extends string>(
|
|
335
|
+
name?: TName,
|
|
336
|
+
): PgEnumColumnBuilderInitial<TName, TValues>;
|
|
337
|
+
|
|
338
|
+
readonly enumName: string;
|
|
339
|
+
readonly enumValues: TValues;
|
|
340
|
+
readonly schema: string | undefined;
|
|
341
|
+
/** @internal */
|
|
342
|
+
[isPgEnumSym]: true;
|
|
343
|
+
} & { [onchain]: true };
|
|
344
|
+
|
|
345
|
+
export const onchainEnum = <U extends string, T extends Readonly<[U, ...U[]]>>(
|
|
346
|
+
enumName: string,
|
|
347
|
+
values: T | Writable<T>,
|
|
348
|
+
): OnchainEnum<Writable<T>> => {
|
|
349
|
+
const schema = globalThis?.PONDER_NAMESPACE_BUILD?.schema;
|
|
350
|
+
const e = pgEnumWithSchema(enumName, values, schema);
|
|
351
|
+
|
|
352
|
+
// @ts-ignore
|
|
353
|
+
e[onchain] = true;
|
|
354
|
+
|
|
355
|
+
// @ts-ignore
|
|
356
|
+
return e;
|
|
357
|
+
};
|
|
358
|
+
|
|
359
|
+
/** @see https://github.com/drizzle-team/drizzle-orm/blob/main/drizzle-orm/src/pg-core/table.ts#L51 */
|
|
360
|
+
function pgTableWithSchema<
|
|
361
|
+
name extends string,
|
|
362
|
+
schema extends string | undefined,
|
|
363
|
+
columns extends Record<string, PgColumnBuilderBase>,
|
|
364
|
+
>(
|
|
365
|
+
name: name,
|
|
366
|
+
columns: columns | ((columnTypes: PgColumnsBuilders) => columns),
|
|
367
|
+
extraConfig:
|
|
368
|
+
| ((self: BuildExtraConfigColumns<columns>) => PgTableExtraConfig)
|
|
369
|
+
| undefined,
|
|
370
|
+
schema: schema,
|
|
371
|
+
baseName = name,
|
|
372
|
+
): PgTableWithColumns<{
|
|
373
|
+
name: name;
|
|
374
|
+
schema: schema;
|
|
375
|
+
columns: BuildColumns<name, columns, "pg">;
|
|
376
|
+
dialect: "pg";
|
|
377
|
+
}> {
|
|
378
|
+
const rawTable = new PgTable<{
|
|
379
|
+
name: name;
|
|
380
|
+
schema: schema;
|
|
381
|
+
columns: BuildColumns<name, columns, "pg">;
|
|
382
|
+
dialect: "pg";
|
|
383
|
+
}>(name, schema, baseName);
|
|
384
|
+
|
|
385
|
+
const { bigint: int8, text: _text, ...restColumns } = getPgColumnBuilders();
|
|
386
|
+
|
|
387
|
+
const parsedColumns: columns =
|
|
388
|
+
typeof columns === "function"
|
|
389
|
+
? columns({ ...restColumns, int8, hex, bigint, bytes, text, json, jsonb })
|
|
390
|
+
: columns;
|
|
391
|
+
|
|
392
|
+
const builtColumns = Object.fromEntries(
|
|
393
|
+
Object.entries(parsedColumns).map(([name, colBuilderBase]) => {
|
|
394
|
+
const colBuilder = colBuilderBase;
|
|
395
|
+
// @ts-ignore
|
|
396
|
+
colBuilder.setName(toSnakeCase(name));
|
|
397
|
+
// @ts-ignore
|
|
398
|
+
const column = colBuilder.build(rawTable);
|
|
399
|
+
// @ts-ignore
|
|
400
|
+
rawTable[Symbol.for("drizzle:PgInlineForeignKeys")].push(
|
|
401
|
+
// @ts-ignore
|
|
402
|
+
...colBuilder.buildForeignKeys(column, rawTable),
|
|
403
|
+
);
|
|
404
|
+
return [name, column];
|
|
405
|
+
}),
|
|
406
|
+
) as unknown as BuildColumns<name, columns, "pg">;
|
|
407
|
+
|
|
408
|
+
const builtColumnsForExtraConfig = Object.fromEntries(
|
|
409
|
+
Object.entries(parsedColumns).map(([name, colBuilderBase]) => {
|
|
410
|
+
const colBuilder = colBuilderBase as PgColumnBuilder;
|
|
411
|
+
//@ts-ignore
|
|
412
|
+
colBuilder.setName(toSnakeCase(name));
|
|
413
|
+
//@ts-ignore
|
|
414
|
+
const column = colBuilder.buildExtraConfigColumn(rawTable);
|
|
415
|
+
return [name, column];
|
|
416
|
+
}),
|
|
417
|
+
) as unknown as BuildExtraConfigColumns<columns>;
|
|
418
|
+
|
|
419
|
+
const table = Object.assign(rawTable, builtColumns);
|
|
420
|
+
|
|
421
|
+
//@ts-ignore
|
|
422
|
+
table[Table.Symbol.Columns] = builtColumns;
|
|
423
|
+
//@ts-ignore
|
|
424
|
+
table[Table.Symbol.ExtraConfigColumns] = builtColumnsForExtraConfig;
|
|
425
|
+
|
|
426
|
+
if (extraConfig) {
|
|
427
|
+
//@ts-ignore
|
|
428
|
+
table[PgTable.Symbol.ExtraConfigBuilder] = extraConfig as any;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
return Object.assign(table, {
|
|
432
|
+
enableRLS: () => {
|
|
433
|
+
// @ts-ignore
|
|
434
|
+
table[PgTable.Symbol.EnableRLS] = true;
|
|
435
|
+
return table as PgTableWithColumns<{
|
|
436
|
+
name: name;
|
|
437
|
+
schema: schema;
|
|
438
|
+
columns: BuildColumns<name, columns, "pg">;
|
|
439
|
+
dialect: "pg";
|
|
440
|
+
}>;
|
|
441
|
+
},
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
function pgViewWithSchema(
|
|
446
|
+
name: string,
|
|
447
|
+
selection: Record<string, PgColumnBuilderBase> | undefined,
|
|
448
|
+
schema: string | undefined,
|
|
449
|
+
): ViewBuilder | ManualViewBuilder {
|
|
450
|
+
if (selection) {
|
|
451
|
+
return new ManualViewBuilder(name, selection, schema);
|
|
452
|
+
}
|
|
453
|
+
return new ViewBuilder(name, schema);
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
function pgEnumWithSchema<U extends string, T extends Readonly<[U, ...U[]]>>(
|
|
457
|
+
enumName: string,
|
|
458
|
+
values: T | Writable<T>,
|
|
459
|
+
schema?: string,
|
|
460
|
+
): OnchainEnum<Writable<T>> {
|
|
461
|
+
const enumInstance: OnchainEnum<Writable<T>> = Object.assign(
|
|
462
|
+
<TName extends string>(
|
|
463
|
+
name?: TName,
|
|
464
|
+
): PgEnumColumnBuilderInitial<TName, Writable<T>> =>
|
|
465
|
+
new PgEnumColumnBuilder(name ?? ("" as TName), enumInstance),
|
|
466
|
+
{
|
|
467
|
+
enumName,
|
|
468
|
+
enumValues: values,
|
|
469
|
+
schema,
|
|
470
|
+
[isPgEnumSym]: true,
|
|
471
|
+
[onchain]: true,
|
|
472
|
+
} as const,
|
|
473
|
+
);
|
|
474
|
+
|
|
475
|
+
return enumInstance;
|
|
476
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type ColumnBaseConfig,
|
|
3
|
+
type ColumnBuilderBaseConfig,
|
|
4
|
+
type ColumnBuilderRuntimeConfig,
|
|
5
|
+
type MakeColumnConfig,
|
|
6
|
+
entityKind,
|
|
7
|
+
getTableName,
|
|
8
|
+
} from "drizzle-orm";
|
|
9
|
+
import {
|
|
10
|
+
type AnyPgTable,
|
|
11
|
+
PgColumn,
|
|
12
|
+
PgColumnBuilder,
|
|
13
|
+
type PgTextConfig,
|
|
14
|
+
} from "drizzle-orm/pg-core";
|
|
15
|
+
|
|
16
|
+
export type PgTextBuilderInitial<
|
|
17
|
+
TName extends string,
|
|
18
|
+
TEnum extends [string, ...string[]],
|
|
19
|
+
> = PgTextBuilder<{
|
|
20
|
+
name: TName;
|
|
21
|
+
dataType: "string";
|
|
22
|
+
columnType: "PgText";
|
|
23
|
+
data: TEnum[number];
|
|
24
|
+
enumValues: TEnum;
|
|
25
|
+
driverParam: string;
|
|
26
|
+
}>;
|
|
27
|
+
|
|
28
|
+
export class PgTextBuilder<
|
|
29
|
+
T extends ColumnBuilderBaseConfig<"string", "PgText">,
|
|
30
|
+
> extends PgColumnBuilder<T, { enumValues: T["enumValues"] }> {
|
|
31
|
+
static override readonly [entityKind]: string = "PgTextBuilder";
|
|
32
|
+
|
|
33
|
+
constructor(name: T["name"], config: PgTextConfig<T["enumValues"]>) {
|
|
34
|
+
super(name, "string", "PgText");
|
|
35
|
+
this.config.enumValues = config.enum;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** @internal */
|
|
39
|
+
// @ts-ignore
|
|
40
|
+
override build<TTableName extends string>(
|
|
41
|
+
table: AnyPgTable<{ name: TTableName }>,
|
|
42
|
+
): PgText<MakeColumnConfig<T, TTableName>> {
|
|
43
|
+
return new PgText<MakeColumnConfig<T, TTableName>>(
|
|
44
|
+
table,
|
|
45
|
+
this.config as ColumnBuilderRuntimeConfig<any, any>,
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export class PgText<
|
|
51
|
+
T extends ColumnBaseConfig<"string", "PgText">,
|
|
52
|
+
> extends PgColumn<T, { enumValues: T["enumValues"] }> {
|
|
53
|
+
static override readonly [entityKind]: string = "PgText";
|
|
54
|
+
|
|
55
|
+
override readonly enumValues = this.config.enumValues;
|
|
56
|
+
|
|
57
|
+
getSQLType(): string {
|
|
58
|
+
return "text";
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
override mapToDriverValue(value: string) {
|
|
62
|
+
// Note: swallow errors because drizzle will throw a more specific error if the value is invalid
|
|
63
|
+
try {
|
|
64
|
+
if (value.match(/\0/g)) {
|
|
65
|
+
globalThis.PONDER_COMMON?.logger.warn({
|
|
66
|
+
msg: `Detected and removed null byte characters. Postgres "text" columns do not support null byte characters. Please consider handling this case in your indexing logic.`,
|
|
67
|
+
value,
|
|
68
|
+
table: getTableName(this.table),
|
|
69
|
+
column: this.name,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
return value.replace(/\0/g, "");
|
|
73
|
+
}
|
|
74
|
+
} catch {}
|
|
75
|
+
return value;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// https://github.com/graphql/graphiql/blob/main/examples/graphiql-cdn/index.html
|
|
2
|
+
|
|
3
|
+
export const graphiQLHtml = `<!--
|
|
4
|
+
* Copyright (c) 2021 GraphQL Contributors
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
-->
|
|
10
|
+
<!DOCTYPE html>
|
|
11
|
+
<html lang="en">
|
|
12
|
+
<head>
|
|
13
|
+
<title>Ponder Playground</title>
|
|
14
|
+
<style>
|
|
15
|
+
body {
|
|
16
|
+
height: 100%;
|
|
17
|
+
margin: 0;
|
|
18
|
+
width: 100%;
|
|
19
|
+
overflow: hidden;
|
|
20
|
+
}
|
|
21
|
+
#graphiql {
|
|
22
|
+
height: 100vh;
|
|
23
|
+
}
|
|
24
|
+
*::-webkit-scrollbar {
|
|
25
|
+
height: 0.3rem;
|
|
26
|
+
width: 0.5rem;
|
|
27
|
+
}
|
|
28
|
+
*::-webkit-scrollbar-track {
|
|
29
|
+
-ms-overflow-style: none;
|
|
30
|
+
overflow: -moz-scrollbars-none;
|
|
31
|
+
}
|
|
32
|
+
*::-webkit-scrollbar-thumb {
|
|
33
|
+
-ms-overflow-style: none;
|
|
34
|
+
overflow: -moz-scrollbars-none;
|
|
35
|
+
}
|
|
36
|
+
</style>
|
|
37
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/graphiql@3.7.2/graphiql.min.css" />
|
|
38
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@graphiql/plugin-explorer@3.2.3/dist/style.css" />
|
|
39
|
+
</head>
|
|
40
|
+
<body>
|
|
41
|
+
<div id="graphiql">Loading...</div>
|
|
42
|
+
<script crossorigin src="https://cdn.jsdelivr.net/npm/react@18.3.1/umd/react.development.js"></script>1
|
|
43
|
+
<script crossorigin src="https://cdn.jsdelivr.net/npm/react-dom@18.3.1/umd/react-dom.development.js"></script>
|
|
44
|
+
<script src="https://cdn.jsdelivr.net/npm/graphiql@3.7.2/graphiql.min.js" crossorigin="anonymous"></script>
|
|
45
|
+
<script src="https://cdn.jsdelivr.net/npm/@graphiql/plugin-explorer@3.2.3/dist/index.umd.js" crossorigin="anonymous"></script>
|
|
46
|
+
<script>
|
|
47
|
+
const fetcher = GraphiQL.createFetcher({ url: "" });
|
|
48
|
+
const explorerPlugin = GraphiQLPluginExplorer.explorerPlugin();
|
|
49
|
+
const root = ReactDOM.createRoot(document.getElementById("graphiql"));
|
|
50
|
+
root.render(
|
|
51
|
+
React.createElement(GraphiQL, {
|
|
52
|
+
fetcher,
|
|
53
|
+
plugins: [explorerPlugin],
|
|
54
|
+
defaultEditorToolsVisibility: false,
|
|
55
|
+
})
|
|
56
|
+
);
|
|
57
|
+
</script>
|
|
58
|
+
</body>
|
|
59
|
+
</html>`;
|