{"_id":"@arpanjain3.14/ponder-with-flashblocks","name":"@arpanjain3.14/ponder-with-flashblocks","dist-tags":{"latest":"0.16.3"},"versions":{"0.16.3":{"name":"@arpanjain3.14/ponder-with-flashblocks","version":"0.16.3","description":"Ponder fork with Base flashblocks support via readPending config","license":"MIT","type":"module","repository":{"type":"git","url":"git+https://github.com/ponder-sh/ponder.git","directory":"packages/core"},"bin":{"ponder":"dist/esm/bin/ponder.js"},"module":"./dist/esm/index.js","types":"./dist/types/index.d.ts","typings":"./dist/types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js"},"./virtual":{"types":"./src/types.d.ts"}},"scripts":{"build":"tsx build.ts","test":"vitest","test:bun":"bun test","test:typecheck":"vitest --typecheck.only","typecheck":"tsc --noEmit"},"peerDependencies":{"hono":">=4.5","typescript":">=5.0.4","viem":">=2"},"peerDependenciesMeta":{"typescript":{"optional":true}},"dependencies":{"@babel/code-frame":"^7.23.4","@commander-js/extra-typings":"^12.0.1","@electric-sql/pglite":"0.2.13","@escape.tech/graphql-armor-max-aliases":"^2.3.0","@escape.tech/graphql-armor-max-depth":"^2.2.0","@escape.tech/graphql-armor-max-tokens":"^2.3.0","@hono/node-server":"1.19.5","@ponder/utils":"0.2.17","abitype":"^0.10.2","ansi-escapes":"^7.0.0","commander":"^12.0.0","conf":"^12.0.0","dataloader":"^2.2.2","detect-package-manager":"^3.0.2","dotenv":"^16.3.1","drizzle-orm":"0.41.0","glob":"10.5.0","graphql":"16.8.2","graphql-yoga":"5.17.1","http-terminator":"^3.2.0","kysely":"^0.26.3","pg":"^8.11.3","pg-connection-string":"^2.6.2","pg-copy-streams":"^6.0.6","pg-query-emscripten":"5.1.0","picocolors":"^1.1.1","pino":"^8.16.2","prom-client":"^15.0.0","semver":"^7.7.1","stacktrace-parser":"^0.1.10","superjson":"^2.2.2","terminal-size":"^4.0.0","vite":"5.4.21","vite-node":"1.0.2","vite-tsconfig-paths":"4.3.1","ws":"^8.18.3"},"devDependencies":{"@pgsql/types":"16.0.0","@ponder/client":"workspace:*","@types/babel__code-frame":"^7.0.6","@types/glob":"^8.1.0","@types/node":"^20.10.0","@types/pg":"^8.10.9","@types/pg-copy-streams":"^1.2.5","@types/semver":"^7.5.8","@types/ws":"^8.18.1","@viem/anvil":"^0.0.6","@wagmi/cli":"^1.5.2","chokidar":"^4.0.3","execa":"^8.0.1","mitata":"^1.0.34","rimraf":"^5.0.5","tsx":"^4.19.2","vitest":"1.6.1"},"engines":{"node":">=18.14"},"_id":"@arpanjain3.14/ponder-with-flashblocks@0.16.3","gitHead":"c1e926a3509664e28e0eb84c0f19e964922f8cda","bugs":{"url":"https://github.com/ponder-sh/ponder/issues"},"homepage":"https://github.com/ponder-sh/ponder#readme","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-HIV1CmVF6uGM7tiGfiMPVuf9UsmKxSk1GFNgtIDbA54F5q1+yxXeje+FmdUwrNpLiJ+1+8neMKQIj+9D/Fth6A==","shasum":"040360b33ae4ff4b11a600e155c3362372595663","tarball":"https://registry.npmjs.org/@arpanjain3.14/ponder-with-flashblocks/-/ponder-with-flashblocks-0.16.3.tgz","fileCount":614,"unpackedSize":4200699,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDK4hLh55FmG2oMjHbupLmuALvrvJMz3/AXHkr00eocNQIhAIlLAPzjZluGH9SS/PpOBAsJhHnwfwTpPle1kNBGNzMV"}]},"_npmUser":{"name":"arpanjain3.14","email":"arpanjain3.14@gmail.com"},"directories":{},"maintainers":[{"name":"arpanjain3.14","email":"arpanjain3.14@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ponder-with-flashblocks_0.16.3_1772802127583_0.5894883471665611"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-06T13:02:07.473Z","0.16.3":"2026-03-06T13:02:07.764Z","modified":"2026-03-06T13:02:07.932Z"},"maintainers":[{"name":"arpanjain3.14","email":"arpanjain3.14@gmail.com"}],"description":"Ponder fork with Base flashblocks support via readPending config","homepage":"https://github.com/ponder-sh/ponder#readme","repository":{"type":"git","url":"git+https://github.com/ponder-sh/ponder.git","directory":"packages/core"},"bugs":{"url":"https://github.com/ponder-sh/ponder/issues"},"license":"MIT","readme":"# Ponder\n\n[![CI status][ci-badge]][ci-url]\n[![Version][version-badge]][version-url]\n[![Telegram chat][tg-badge]][tg-url]\n[![License][license-badge]][license-url]\n\nPonder is an open-source framework for blockchain application backends.\n\n## Documentation\n\nVisit [ponder.sh](https://ponder.sh) for documentation, guides, and the API reference.\n\n## Support\n\nJoin [Ponder's telegram chat](https://t.me/pondersh) for support, feedback, and general chatter.\n\n## Features\n\n✅ &nbsp;Local development server with hot reloading<br/>\n✅ &nbsp;`create-ponder` CLI tool to get started from an Etherscan link or Graph Protocol subgraph<br/>\n✅ &nbsp;End-to-end type safety using [viem](https://viem.sh) and [ABIType](https://github.com/wagmi-dev/abitype)<br/>\n✅ &nbsp;Autogenerated GraphQL API<br/>\n✅ &nbsp;Easy to deploy anywhere using Node.js/Docker<br/>\n✅ &nbsp;Supports all Ethereum-based blockchains, including test nodes like [Anvil](https://book.getfoundry.sh/anvil)<br/>\n✅ &nbsp;Index events from multiple chains in the same app<br/>\n✅ &nbsp;Reconciles chain reorganization<br/>\n✅ &nbsp;Factory contracts<br/>\n✅ &nbsp;Process transactions calls (in addition to logs)<br/>\n🏗️ &nbsp;Run effects (e.g. send an API request) in indexing code<br/>\n\n## Quickstart\n\n### 1. Run `create-ponder`\n\nYou will be asked for a project name, and if you are using a [template](https://ponder.sh/docs/api-reference/create-ponder#templates) (recommended). Then, the CLI will create a project directory, install dependencies, and initialize a git repository.\n\n```bash\nnpm init ponder@latest\n# or\npnpm create ponder\n# or\nyarn create ponder\n```\n\n### 2. Start the development server\n\nJust like Next.js and Vite, Ponder has a development server that automatically reloads when you save changes in any project file. It also prints `console.log` statements and errors encountered while running your code. First, `cd` into your project directory, then start the server.\n\n```bash\nnpm run dev\n# or\npnpm dev\n# or\nyarn dev\n```\n\n### 3. Add contracts & chains\n\nPonder fetches event logs for the contracts added to `ponder.config.ts`, and passes those events to the indexing functions you write.\n\n```ts\n// ponder.config.ts\n\nimport { createConfig } from \"ponder\";\nimport { BaseRegistrarAbi } from \"./abis/BaseRegistrar\";\n \nexport default createConfig({\n  chains: {\n    mainnet: { \n      id: 1,\n      rpc: \"https://eth-mainnet.g.alchemy.com/v2/...\",\n    },\n  },\n  contracts: {\n    BaseRegistrar: {\n      abi: BaseRegistrarAbi,\n      chain: \"mainnet\",\n      address: \"0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85\",\n      startBlock: 9380410,\n    },\n  },\n});\n```\n\n### 4. Define your schema\n\nThe `ponder.schema.ts` file contains the database schema, and defines the shape data that the GraphQL API serves.\n\n```ts\n// ponder.schema.ts\n\nimport { onchainTable } from \"ponder\";\n\nexport const ensName = onchainTable(\"ens_name\", (t) => ({\n  name: p.text().primaryKey(),\n  owner: p.text().notNull(),\n  registeredAt: p.integer().notNull(),\n}));\n```\n\n### 5. Write indexing functions\n\nFiles in the `src/` directory contain **indexing functions**, which are TypeScript functions that process a contract event. The purpose of these functions is to insert data into the entity store.\n\n```ts\n// src/BaseRegistrar.ts\n\nimport { ponder } from \"ponder:registry\";\nimport schema from \"ponder:schema\";\n\nponder.on(\"BaseRegistrar:NameRegistered\", async ({ event, context }) => {\n  const { name, owner } = event.params;\n\n  await context.db.insert(schema.ensName).values({\n    name: name,\n    owner: owner,\n    registeredAt: event.block.timestamp,\n  });\n});\n```\n\nSee the [create & update records](https://ponder.sh/docs/indexing/write) docs for a detailed guide on writing indexing functions.\n\n### 6. Query the GraphQL API\n\nPonder automatically generates a frontend-ready GraphQL API based on your `ponder.schema.ts` file. The API serves data that you inserted in your indexing functions.\n\n```ts\n{\n  ensNames(limit: 2) {\n    items {\n      name\n      owner\n      registeredAt\n    }\n  }\n}\n```\n\n```json\n{\n  \"ensNames\": {\n    \"items\": [\n      {\n        \"name\": \"vitalik.eth\",\n        \"owner\": \"0x0904Dac3347eA47d208F3Fd67402D039a3b99859\",\n        \"registeredAt\": 1580345271\n      },\n      {\n        \"name\": \"joe.eth\",\n        \"owner\": \"0x6109DD117AA5486605FC85e040ab00163a75c662\",\n        \"registeredAt\": 1580754710\n      }\n    ]\n  }\n}\n```\n\nThat's it! Visit [ponder.sh](https://ponder.sh) for documentation, guides for deploying to production, and the API reference.\n\n## Contributing\n\nIf you're interested in contributing to Ponder, please read the [contribution guide](/.github/CONTRIBUTING.md).\n\n## Packages\n\n- `ponder`\n- `@ponder/client`\n- `@ponder/react`\n- `@ponder/utils`\n- `create-ponder`\n- `eslint-config-ponder`\n\n## About\n\nPonder is MIT-licensed open-source software.\n\n[ci-badge]: https://github.com/ponder-sh/ponder/actions/workflows/main.yml/badge.svg\n[ci-url]: https://github.com/ponder-sh/ponder/actions/workflows/main.yml\n[tg-badge]: https://img.shields.io/endpoint?color=neon&logo=telegram&label=chat&url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Fpondersh\n[tg-url]: https://t.me/pondersh\n[license-badge]: https://img.shields.io/npm/l/ponder?label=License\n[license-url]: https://github.com/ponder-sh/ponder/blob/main/LICENSE\n[version-badge]: https://img.shields.io/npm/v/ponder\n[version-url]: https://github.com/ponder-sh/ponder/releases\n","readmeFilename":"README.md","_rev":"1-f1d1b938e594d51a6aa817c0e796797f"}